大堀/論文/論文1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[大堀/論文]]
//研究室限定
*[Real-Time FPGA Based Architecture for Bicubic Interpolation An Application for Digital Image Scaling] [#z9cb01ac]
のまとめ、メモなど。
-Bicubic補間をH/Wでどう実装するか。H/Wで実装した結果についての論文
--HABI(Hardware Architecture for Bicubic Interpolation)
--主に、3つのブロックがある。
+++ 補間係数を作成する部分
+++ 補間を実行する部分
+++ パイプライン処理をコントロールする部分
--使用言語 : Handel-C
--使用FPGAボード : Xilinx Virtex II Pro FPGA
--結果
---Intel Pentium 4-based PC at 2.4Ghzよりも10倍
---他のアーキテクチャとの比較は準備中。
* 1 イントロ - なぜFPGAを使うか。FPGAの利点について書いてある。 [#g8207bca]
--比較として
---ASIC : userによって書き換えられない。
---ASIC : 詳しくは、http://ja.wikipedia.org/wiki/ASIC
---mocroprocessor : 色々なことができるが、最適化できない。(速度が遅いなど。)
--FPGAの効能
---柔軟に実装できる。userによって書き換えることができる。
---Real-Timeパフォーマンスを保ったまま、パラレルアーキテクチャを作れる。
* 2 画像補間法 - Bicubic法についてかいてある。 [#be5b4c0b]
-Bicubic法
--microprocessorでは、時間がかかるが、高性能。
--境界点での画像処理において、ズレを気にしなくてよい。
--細部まで正しく表現できる。
-ニアレストネイバー法
--境界点でも画像処理が面倒。
--ズレを考えて画像を処理する必要がある。
--同じ輝度(白黒画像の場合)の画素が増える。→正確に表現できない。
-その他の方法(ニアレストネイバー法も含む)
--計算が簡単。Bicubicより計算時間が速い。
--microprocessorで処理するのに、適しているので、FPGAボードで処理を行っても効果がそれ程得られない。
-Bicubic法:詳細
--求める座標の回りの16点を使う。(伝統的に16点使うことになっている。)
--空間的、時間的に、並行処理が可能→FPGAの技術が有効利用できる。
-Bicubic法:アルゴリズム
P(x,y) = (t1*A + t2*E + t3*I + t4*N)*t5 + (t1*B + t2*F + t3*J + t4*M)*t6
+ (t1*C + t2*G + t3*K + t4*O)*t7 + (t1*D + t2*H + t3*L + t4*P)*t8
--詳しくは、論文のFig.1, equ1参照。
* 3 HABI - アーキテクチャについて書いてある。(拡大処理部分、コントロール部分) [#l4fa55f0]
**おおまかな、動作の流れ [#j789018d]
--(pre) Off-ChipRAM に 画像データが格納されている
--(1) 4列の画像データを読み込んで、処理を開始。
---1点に対して4行x4列のデータが必要なので、4列読み込む。
---結果の1列は、メモリに格納する。
--(2) 2回目から、最後の繰り返しまでは、1列読み込んで、処理を行い1列の出力を行う。
---計算には、4列必要だけど、3列は、もう読み込まれているので、残りの1列読み込めば良い。
**アーキテクチャ構成(簡単に) [#webf16b8]
-Input Buffer Bank : 処理に流す入力画像データを一時保持。
-Output Buffer Bank : 処理された出力画像データを一時保持。
-Off chip RAM : 入力、出力データを保持する。
-Parallel Zoom Processors : 画像データと、拡大係数から、計算を行い、その結果を返す。
-Control Unit : 全てのコントロール信号を生成する。
-Interpolation Coefficient Generator : 拡大係数を作って一時保持。
--Fig.2参照。
**アーキテクチャ構成(詳しく) [#t93d359d]
***Input Buffer Bank[#jf30860d]
-Dual PortのBlockRAMで構成されている。
-MEMORY1本が 2048 Byte (32bit が 512行)
-2048 Byte を2分割して、1024Byteのメモリブロックとして使用する。
--(1024 Byte * 2)*2本 なので、1回で4行のデータを読み込める。
***Output Buffer Bank [#j874f435]
-2048Byteの容量がある。この回路構成で必要なのは、640Byteのみ。
--この回路は、一つの画像を出力する構成だから。
***Off chip RAM [#w5c1557b]
-入力画像全体と出力画像全体を保持
***Parallel Zoom Processors [#w7bd7349]
--動的に拡大係数を計算する。※ equ1 参照
--一行ずつ計算を行うので、縦の拡大係数は初めに1回だけ計算する仕様になっている。
-Zoom Processors
--4サイクルで1ピクセル出力する構成。
--大まかな流れ ※Fig.3参照
---Cycle1:デコーダから計算に必要な画像データが流れる。そのデータを内部レジスタに格納。
---Cycle2:4つの被乗数器が並列に動作する。計算結果がレジスタに蓄積される。※equ.1
---Cycle3:1つの被乗数器が動作する。全体が計算される。
---Cycle4:レジスタに格納(?)
-Zoom Processorsの構成 ※Fig.3参照
++Pixel Demultiplexer : 入力画像データ用デコーダ。
++Pixel Registers : PDからのデータを保持するレジスタ。
++Coefficient Demultiplexer : 拡大係数用デコーダ。
++Coefficient Registers : CDからの拡大係数を保持するレジスタ。
++Temporal Resisters : 途中の計算結果(PRとCRのデータを計算した結果)を格納するレジスタ。
++Output Pixel Register : Zoom Processorの計算結果を格納するレジスタ。このデータは、Output Buffer Bankに流れる。
***Control Unit [#z3b763f3]
-回路全体の制御を行う部分。
-入力画像データの選択とZoom processorの制御が大変
--4x4マスク畳み込み計算だから。
-同期をとる部分は以下
++External Memory
++Input/Output Buffer Bank
++Zoom processor
++Imterporation coefficient generator
***Interpolation Coefficient Generator [#h3396987]
-動的に4つの拡大係数を作る。
-動作は、5cycle後から、1cycle毎にデータを出力する。
* 4 補間結果 - 画像、数値、ほかのアーキテクチャとの比較 [#t5521848]
-構成
|実行環境|Alpha board(Virtex II pro FPGA)|
|使用言語|VHDL, Handel-C|
|統計ソフト|Xilinx ISE tools|
|画像サイズ|640x480|
-他のアーキテクチャで実装する場合
--Control Unit, Interporation coefficient generatorを変更する必要がある。
-考察
--zoom processorについて
---現状ではzoom processorは4つ。
---zoom processorを8つ実装すれば、性能も向上する。
---8つ実装するには、FPGA資源の制限を考えなければならない。
--BlockRAMについて
---zoom processorを8つにするなら、RAMも増やす必要がある。
---レジスタで代用することも可能。しかしFPGA資源と要相談。
---実際、BlockRAMを使うより、レジスタを使った方が、有効性が高い(レジスタの方がアクセス速度が速い)
-比較
--実行時間計算方法
T(NP) = (1/F){ (Rows/(NP/4)) * (Colmuns/WS)*(NP/4) + Colmuns }
T(P) = (1/F){ (Rows/(NP/4)) * Colmuns }
|NP|実行数|
|F|使用周波数(MHz)|
|WF|メモリの長さ(Byte)|
|Rows|行(pixel)|
|Colmuns|列(pixel)|
--例:NP=4, WL=8, F=100MHz, Rows=480, Colmuns=640
T(NP) = 3.5 ms
T(P) = 3.1 ms
--Zoom processor の数で比較
---ZP8個:○実行時間が約2倍、減少。
---ZP8個:×使用メモリが約2倍、増加。
|ZPの数|実行時間|Input用のBRAMの数|Output用のBRAMの数|Multiplierとして使用されたBRAMの数|総BRAM数|
|4(NP)|3.5|2|1|20|23|
|4(P)|3.1|2|1|20|23|
|8(NP)|1.9|3|1|40|44|
|8(P)|1.5|3|1|40|44|
--他のアーキテクチャ、実装との比較
---正確に処理の比較ができるのは、softwareのみ。
---[4]:bicubic法
---[5]:スプライン補間法
---[6]:biliner法
---[7]:biliner法
|実行環境・構成|周波数|処理時間|画像サイズ|FPGAの種類|CLBs|BRAMの数|
|software|2.4GHz|50ms|640x480|Na|Na|Na|
|[4]|34MHz|11ms|600x600|Virtex-E|Na|Na|
|[5]|30MHz|35ms|522x128|XC4000|Na|Na|
|[6]|50MHz|Na|600x800|Na|1047|Na|
|[7]|25MHz|30ms|512x512|Spartan-II|329|3|
|HABI|100MHz|3.50ms|640x480|Virtex-II pro|890|28|
終了行:
[[大堀/論文]]
//研究室限定
*[Real-Time FPGA Based Architecture for Bicubic Interpolation An Application for Digital Image Scaling] [#z9cb01ac]
のまとめ、メモなど。
-Bicubic補間をH/Wでどう実装するか。H/Wで実装した結果についての論文
--HABI(Hardware Architecture for Bicubic Interpolation)
--主に、3つのブロックがある。
+++ 補間係数を作成する部分
+++ 補間を実行する部分
+++ パイプライン処理をコントロールする部分
--使用言語 : Handel-C
--使用FPGAボード : Xilinx Virtex II Pro FPGA
--結果
---Intel Pentium 4-based PC at 2.4Ghzよりも10倍
---他のアーキテクチャとの比較は準備中。
* 1 イントロ - なぜFPGAを使うか。FPGAの利点について書いてある。 [#g8207bca]
--比較として
---ASIC : userによって書き換えられない。
---ASIC : 詳しくは、http://ja.wikipedia.org/wiki/ASIC
---mocroprocessor : 色々なことができるが、最適化できない。(速度が遅いなど。)
--FPGAの効能
---柔軟に実装できる。userによって書き換えることができる。
---Real-Timeパフォーマンスを保ったまま、パラレルアーキテクチャを作れる。
* 2 画像補間法 - Bicubic法についてかいてある。 [#be5b4c0b]
-Bicubic法
--microprocessorでは、時間がかかるが、高性能。
--境界点での画像処理において、ズレを気にしなくてよい。
--細部まで正しく表現できる。
-ニアレストネイバー法
--境界点でも画像処理が面倒。
--ズレを考えて画像を処理する必要がある。
--同じ輝度(白黒画像の場合)の画素が増える。→正確に表現できない。
-その他の方法(ニアレストネイバー法も含む)
--計算が簡単。Bicubicより計算時間が速い。
--microprocessorで処理するのに、適しているので、FPGAボードで処理を行っても効果がそれ程得られない。
-Bicubic法:詳細
--求める座標の回りの16点を使う。(伝統的に16点使うことになっている。)
--空間的、時間的に、並行処理が可能→FPGAの技術が有効利用できる。
-Bicubic法:アルゴリズム
P(x,y) = (t1*A + t2*E + t3*I + t4*N)*t5 + (t1*B + t2*F + t3*J + t4*M)*t6
+ (t1*C + t2*G + t3*K + t4*O)*t7 + (t1*D + t2*H + t3*L + t4*P)*t8
--詳しくは、論文のFig.1, equ1参照。
* 3 HABI - アーキテクチャについて書いてある。(拡大処理部分、コントロール部分) [#l4fa55f0]
**おおまかな、動作の流れ [#j789018d]
--(pre) Off-ChipRAM に 画像データが格納されている
--(1) 4列の画像データを読み込んで、処理を開始。
---1点に対して4行x4列のデータが必要なので、4列読み込む。
---結果の1列は、メモリに格納する。
--(2) 2回目から、最後の繰り返しまでは、1列読み込んで、処理を行い1列の出力を行う。
---計算には、4列必要だけど、3列は、もう読み込まれているので、残りの1列読み込めば良い。
**アーキテクチャ構成(簡単に) [#webf16b8]
-Input Buffer Bank : 処理に流す入力画像データを一時保持。
-Output Buffer Bank : 処理された出力画像データを一時保持。
-Off chip RAM : 入力、出力データを保持する。
-Parallel Zoom Processors : 画像データと、拡大係数から、計算を行い、その結果を返す。
-Control Unit : 全てのコントロール信号を生成する。
-Interpolation Coefficient Generator : 拡大係数を作って一時保持。
--Fig.2参照。
**アーキテクチャ構成(詳しく) [#t93d359d]
***Input Buffer Bank[#jf30860d]
-Dual PortのBlockRAMで構成されている。
-MEMORY1本が 2048 Byte (32bit が 512行)
-2048 Byte を2分割して、1024Byteのメモリブロックとして使用する。
--(1024 Byte * 2)*2本 なので、1回で4行のデータを読み込める。
***Output Buffer Bank [#j874f435]
-2048Byteの容量がある。この回路構成で必要なのは、640Byteのみ。
--この回路は、一つの画像を出力する構成だから。
***Off chip RAM [#w5c1557b]
-入力画像全体と出力画像全体を保持
***Parallel Zoom Processors [#w7bd7349]
--動的に拡大係数を計算する。※ equ1 参照
--一行ずつ計算を行うので、縦の拡大係数は初めに1回だけ計算する仕様になっている。
-Zoom Processors
--4サイクルで1ピクセル出力する構成。
--大まかな流れ ※Fig.3参照
---Cycle1:デコーダから計算に必要な画像データが流れる。そのデータを内部レジスタに格納。
---Cycle2:4つの被乗数器が並列に動作する。計算結果がレジスタに蓄積される。※equ.1
---Cycle3:1つの被乗数器が動作する。全体が計算される。
---Cycle4:レジスタに格納(?)
-Zoom Processorsの構成 ※Fig.3参照
++Pixel Demultiplexer : 入力画像データ用デコーダ。
++Pixel Registers : PDからのデータを保持するレジスタ。
++Coefficient Demultiplexer : 拡大係数用デコーダ。
++Coefficient Registers : CDからの拡大係数を保持するレジスタ。
++Temporal Resisters : 途中の計算結果(PRとCRのデータを計算した結果)を格納するレジスタ。
++Output Pixel Register : Zoom Processorの計算結果を格納するレジスタ。このデータは、Output Buffer Bankに流れる。
***Control Unit [#z3b763f3]
-回路全体の制御を行う部分。
-入力画像データの選択とZoom processorの制御が大変
--4x4マスク畳み込み計算だから。
-同期をとる部分は以下
++External Memory
++Input/Output Buffer Bank
++Zoom processor
++Imterporation coefficient generator
***Interpolation Coefficient Generator [#h3396987]
-動的に4つの拡大係数を作る。
-動作は、5cycle後から、1cycle毎にデータを出力する。
* 4 補間結果 - 画像、数値、ほかのアーキテクチャとの比較 [#t5521848]
-構成
|実行環境|Alpha board(Virtex II pro FPGA)|
|使用言語|VHDL, Handel-C|
|統計ソフト|Xilinx ISE tools|
|画像サイズ|640x480|
-他のアーキテクチャで実装する場合
--Control Unit, Interporation coefficient generatorを変更する必要がある。
-考察
--zoom processorについて
---現状ではzoom processorは4つ。
---zoom processorを8つ実装すれば、性能も向上する。
---8つ実装するには、FPGA資源の制限を考えなければならない。
--BlockRAMについて
---zoom processorを8つにするなら、RAMも増やす必要がある。
---レジスタで代用することも可能。しかしFPGA資源と要相談。
---実際、BlockRAMを使うより、レジスタを使った方が、有効性が高い(レジスタの方がアクセス速度が速い)
-比較
--実行時間計算方法
T(NP) = (1/F){ (Rows/(NP/4)) * (Colmuns/WS)*(NP/4) + Colmuns }
T(P) = (1/F){ (Rows/(NP/4)) * Colmuns }
|NP|実行数|
|F|使用周波数(MHz)|
|WF|メモリの長さ(Byte)|
|Rows|行(pixel)|
|Colmuns|列(pixel)|
--例:NP=4, WL=8, F=100MHz, Rows=480, Colmuns=640
T(NP) = 3.5 ms
T(P) = 3.1 ms
--Zoom processor の数で比較
---ZP8個:○実行時間が約2倍、減少。
---ZP8個:×使用メモリが約2倍、増加。
|ZPの数|実行時間|Input用のBRAMの数|Output用のBRAMの数|Multiplierとして使用されたBRAMの数|総BRAM数|
|4(NP)|3.5|2|1|20|23|
|4(P)|3.1|2|1|20|23|
|8(NP)|1.9|3|1|40|44|
|8(P)|1.5|3|1|40|44|
--他のアーキテクチャ、実装との比較
---正確に処理の比較ができるのは、softwareのみ。
---[4]:bicubic法
---[5]:スプライン補間法
---[6]:biliner法
---[7]:biliner法
|実行環境・構成|周波数|処理時間|画像サイズ|FPGAの種類|CLBs|BRAMの数|
|software|2.4GHz|50ms|640x480|Na|Na|Na|
|[4]|34MHz|11ms|600x600|Virtex-E|Na|Na|
|[5]|30MHz|35ms|522x128|XC4000|Na|Na|
|[6]|50MHz|Na|600x800|Na|1047|Na|
|[7]|25MHz|30ms|512x512|Spartan-II|329|3|
|HABI|100MHz|3.50ms|640x480|Virtex-II pro|890|28|
ページ名: