計測自動制御学会東北支部 第 295 回研究集会 (2015.6.26)
資料番号 295-2

OpenCL を用いた FPGA ベース画像処理プロセッサの設計
Design of an FPGA-Based Image Processor Using OpenCL
立見駿介, ○張山昌論, 伊藤康一, 青木孝文

Shunsuke TATSUMI, Masanori HARIYAMA, Koichi ITO, Takafumi AOKI東北大学大学院情報科学研究科,

Graduate School of Information Sciences, Tohoku University,
キーワード : 画像処理 (image processing), 位相限定相関 (Phase-only correlation),
対応付け (correspondence matching), FPGA (FPGA)

連絡先 : 〒 980-8579 仙台市青葉区荒巻字青葉 6-6-05 東北大学大学院情報科学研究科 張山昌論，
Tel.: (022)795-7153，Fax.: (022)263-9167，E-mail: hariyama@ecei.tohoku.ac.jp

1.

はじめに大きくなることが問題であった．そのため，対応付け処理を CPU にマルチスレッドで実装したコンピュータビジョンにおいて，画像対応付けは重要な基礎技術の 1 つである 1) ．特にス
テレオビジョンに基づく 3 次元計測において，ステレオ画像の対応付けは重要な役割を持つ．3
次元計測では，計測精度が対応付け精度に依存するため，高精度な対応付け手法が必要となる．
また，対応付けた点数だけ計測物体の 3 次元点が得られるため，物体の詳細な構造を求めるためには密な対応付けが必要となる．さらに，計測にかかる処理時間の大部分は対応付け処理で場合でも実時間処理が達成できなかった．さらに，CPU 実装では消費電力が大きいという問題もあった．この問題の解決策として，OpenCLというフレームワークを用いて，処理を GPU(Graphics Processing Unit) に実装する手法が提案されている 3) ．GPU 実装により，CPU 実装と比べて最大で 5 倍程度の高速化が行え，実時間処理が可能であることが示されている．一方で消費電力が大きいという問題は依然として残されている．

占められるため，高速な対応付けが実際の応用で求められている．

本稿では，対応付けを高速かつ低消費電力で行うために，POC による画像対応付け処理の本稿では，高精度かつ密な計測を行うために，Phase-Only Correlation (POC) 2) を用いた画像対応付け手法を扱う．POC は，画像の離散フーリエ変換から得られる位相成分を利用した対応付け手法である．しかし，POC は，離散フーリエ変換の計算コストが大きいため，密な計測を行う際に対応付けの計算コストが非常にFPGA (Field Programmable Gate Array) 実装を提案するとともに，FPGA を用いてステレオビジョンに基づく 3 次元計測システムを試作する．FPGA アクセラレータを効率よく設計するために，OpenCL ベースの設計ツールを用いてGPU 向けのコードを再利用する．OpenCL とは，CPU と GPU のような，ヘテロジニアスな–1–演算器環境において並列プログラミングを行うためのフレームワークである 4) ．これによりタし，ピーク位置は画像間の平行移動量を表してスク並列とデータ並列に基づく効率の良い並列精度向上のために，以下の高精度化手法を用い演算が実現できる．近年，Altera 社は FPGA 向

る: (i) 関数フィッティング，(ii) 入力信号へ窓関

けの OpenCL ベース設計ツールの提供を開始した 5) ．しかし，FPGA 向け OpenCL では，GPU数の適用，(iii) スペクトル重み付け，(iv) 1 次元信号の足し合わせ 2) ．

向け OpenCL のコードを再利用することはできるが，GPU と FPGA のアーキテクチャは大き

ステレオ画像を平行化すると，基準点と対応点の座標の違いは水平方向のみに制限される 1) ．

く異なるため，FPGA 向けにコードを最適化しそのため，1 次元 POC を用いて低計算コストでなければならないことが問題となる．そこで本高精度な対応付けができる．ステレオ画像から稿では，FPGA 向け OpenCL の設計手法につ正確な対応を得るため，サブピクセルレベルのいて，データの再利用やパイプライン等の最適対応付けを行う．さらに，ロバストな対応付け化について述べる．また，FPGA 実装によって，GPU と比べて同程度の処理速度かつ非常に低のために画像ピラミッドを用いて粗密探索を行う (図 1) 2) ．p を画像 I(n , n ) における基準点消費電力で POC による画像対応付けが行えるの位置ベクトルとする．サブピクセルレベルのことを示す．これにより，FPGA を用いること

対応付け問題とは，画像 I(n1 , n2 ) 内の基準点 pで高精度な対応付けが組込みシステムでも利用に対応する，画像 J(n1 , n2 ) 内の対応点 q の実できるようになる．

数の位置ベクトルを求めることである．以下にいる．さらに，サブピクセルレベルの対応付け

12

簡単な説明を示す．

2.

位相情報に基づく画像対応付け手法

Step 1: 各レイヤ l = 1, 2, · · · , lmax − 1 において，レイヤ l の画像である Il (n1 , n2 ) と Jl (n1 , n2 )を，以下に示すように再帰的に求める．

Phase-Only Correlation (POC) 関数について簡単に説明する 6, 7) ．f (n) と g(n) は画像

Il (n1 , n2 ) =1 ∑11 ∑Il−1 (2n1 + i1 , 2n2 + i2 )4 i =0 i =01の 1 次元信号であり，信号長は N = 2M + 1(−M <=n<= M ) であるとする．このとき，正Jl (n1 , n2 ) =2

Step 2: 各レイヤ l = 1, 2, · · · , lmax において，に定義される．

F (k)G(k)= ej(θF (k)−θG (k))R(k) =|F (k)G(k)|1
Jl−1 (2n1 + i1 , 2n2 + i2 )4 i =0 i =01

規化クロスパワースペクトル R(k) は次のよう

21 ∑1∑

原画像の基準点 p0 に対応する基準点 pl = (pl1 , pl2 )(1)を，以下に示すように再帰的に求める．

ここで，F (k) と G(k) はそれぞれ f (n) と g(n)pl = ⌊ 12 pl−1 ⌋ = (⌊ 12 pl−1 1 ⌋, ⌊ 21 pl−1 2 ⌋)を離散フーリエ変換したものであり，G(k) はG(k) の複素共役である．また −M <=Mで=k<ある．1 次元の POC 関数 r(n) は，R(k) を逆離散フーリエ変換することで得られる．2 枚の画像が似ている場合，POC 関数は極めて鋭いピークを示す．一方で 2 枚の画像が似ていない場合，ピークの高さは小さくなる．つまり，ピークの高さは画像対応付けにおいて類似度の尺度を表(2)ここで，⌊z⌋ は z を超えない最大の整数を意味する．

Step 3: 最上位レイヤにおいて qlmax = plmaxであるとする．また l = lmax − 1 とおく．

Step 4: レイヤ l の画像 Il (n1 , n2 ) と Jl (n1 , n2 )から，pl と 2ql+1 を中心とした小さな画像領域（探索ウィンドウ）fl (n1 , n2 ) と gl (n1 , n2 ) をそ–2–

plmaxp2

Layer lmax = 3(coarsest image)
POC matching
Layer 2

qlmax
Search window
q2
q1

p1
POC matching
Layer 1

POC matching
Reference point pLayer 0(original image)

Image JImage I

Fig. 1

Corresponding point q

POC による高精度な画像対応付け手法の概要

れぞれ抜き出す．探索ウィンドウは，信号長 N

モリは，全ワークアイテムからアクセス可能なの 1 次元信号 L 行から構成される．

メモリである．2 つの違いは，グローバルメモリ

Step 5: ピクセルレベルの対応付けを用いてが読み書き可能であるのに対し，コンスタント

fl (n1 , n2 ) と gl (n1 , n2 ) 間の平行移動量を求める．

メモリは読み込みしか出来ない点である．ロー

求めた平行移動量を δl とおくと，レイヤ l の対カルメモリはワークグループで共有されるメモ

応点 ql は以下のように定められる．

リであり，プライベートメモリは各ワークアイテ

ql = 2ql+1 + δl(3)ムで占有されるメモリである．図 3 に OpenCLのスレッド空間を示す．スレッド空間は階層構

Step 6: l = l − 1 とおく．l ≥ 0 である間は造を持ち，処理全体はワークグループによってStep 4 から Step 6 の処理を繰り返す．

構成され，ワークグループはワークアイテムにStep 7: 原画像 I0 (n1 , n2 ) と J0 (n1 , n2 ) から，よって構成されている．ここで，ワークアイテム

p0 と q0 を中心とした探索ウィンドウをそれぞはスレッドに対応する．OpenCL におけるカーれ抜き出す．サブピクセルレベルの対応付けをネルの設計は，ワークアイテムが行う処理を記用いて 2 つのウィンドウ間の平行移動量を求め述することで行う．

FPGA と GPU のアーキテクチャの大きな違る．求めた平行移動量を δ = (δ1 , δ2 ) とおくと，いとして，FPGA は大きなサイズのローカルメ対応点は以下のように定められる．

モリを持つことが挙げられる．例えば，近年のq = q0 + δ(4)ハイエンド FPGA である Stratix V は，50Mbits という大きなメモリブロックを持つ．また，

3.

FPGA 実装

3.1

FPGA 向け OpenCL の設計手法

FPGA 向け OpenCL では，GPU 向け OpenCLと比べ，より柔軟にローカル，プライベートメモリを扱うことが出来る．これにより，一度グOpenCL のプログラミングモデルについてローバルメモリから読み込んだデータを出来る簡単に説明する．図 2 に OpenCL のメモリモデ

限り書き戻す事無く使うことで，グローバルメ

ルを示す．グローバルメモリとコンスタントメ–3–

Private
memoryPrivatememoryWork-item

Work-item

PrivatememoryWork-item

Local memory
Work-group

PrivatememoryWork-item

Local memory
Work-group

Global/Constant memory
Compute device

Fig. 4

Fig. 2OpenCL におけるメモリモデル

Fig. 3OpenCL におけるスレッド空間

FPGA 向け OpenCL で作成されるパイプライン–4–

Fig. 5

実装したカーネルの構造

モリの帯域を効率良く使用することが出来る．

るカーネル間において FIFO バッファを用いたメモリ構造の柔軟性に基づきデータを最大限にデータのやり取りが実現できる．図 5 に POC

再利用するために，以下の工夫を行う:を用いた画像対応付けを行う演算器の構成を示• 窓関数，重み付け関数の係数と FFT で用す．各カーネルの機能を以下に示す:

make high layer: 上位レイヤ画像の作成

いる回転因子は全てコンスタントメモリ

clip image: 探索ウィンドウの抜き出しに持つ

ﬀt1d: 1 次元フーリエ変換の計算• 除算のように計算コストが大きい演算は出来る限り定数の演算に変換し，係数はeval cps: 正規化クロスパワースペクトルの計算

コンスタントメモリに持つ

reorder: 逆フーリエ変換用のデータ並び替え
iﬀt1d: 1 次元逆フーリエ変換の計算• グローバルメモリからの読み込み処理では，アクセス毎にキャッシュが作られるため，キャッシュを考慮した設計を行う

find peak: 平行移動量の推定
Channel を用いるとデータをグローバルメモリに書き戻す事無く別のカーネルへ送ることが出

また，FGPA 向け OpneCL と GPU 向け OpenCL 来るため，データの再利用が容易に行える．例の違いとして，FPGA ではパイプラインが作成

えば，本実装において，図 5 (b) に示す POCされることが挙げられる．図 4 に示すように，による対応付け処理では，find peak カーネル

カーネルの各演算は，各パイプラインステージにおいて基準点数分の対応付け結果が得られるで実行される．各スレッドはサイクル毎にパイが，結果をグローバルメモリに書き出すこと無プラインへ投入される．パイプラインで処理を

く Channel を通じて clip image カーネルに渡行うことにより，性能（スループット）を保ちつしている．これにより次レイヤにおいて，対応つメモリ帯域を効率よく扱うことが出来る．こ結果に基づいて探索ウィンドウの抜き出しがでれに対し，GPU 向け OpenCL では，ワークグきる．

ループ内のスレッドをデータ並列で実行するため，大きなメモリ帯域が必要となる．また，パ3.2

評価

イプライン設計の利点を最大限に生かすため，

POC による画像対応付け処理を CPU，GPU，FPGA 向け OpenCL では “Channel” という機能が提供されている．Channel を用いると異なおよび FPGA へ実装した結果を表 1 に示す．対–5–Table 1

CPU，GPU，FPGA 各実装における処理時間と消費電力*1 消費電力は処理実行時と何も処理を行わない時の差分を表す*2 Nallatech PCIE-395 D8 (Altera 社 Stratix-V FPGA 搭載)
Table 2FPGA 実装におけるリソース使用量

応付けパラメタは，基準点数を 10,000 点，レイ出ていることが確認できた．電力遅延時間積にヤ数を 4，探索ウィンドウサイズを 32 ピクセル

おいて，GPU 実装によって消費電力を 1 スレッ×15 行とした．CPU は Intel 社の Corei7-3960X

ド CPU 実装の約 8%，12 スレッド CPU 実装の(3.3GHz−3.9GHz) を用いた．GPU は NVIDIA約 19%まで削減できた．また FPGA 実装によっ社の Geforce GTX580 と Geforce GTX680 を用て消費電力を 1 スレッド CPU 実装の約 1.5%，いた．FPGA ボードは Altera 社の Stratix V と

12 スレッド CPU 実装の約 3.7%，GPU (GTX

4 バンクの DDR3 メモリが搭載された，Nallat-580) 実装の約 20%，GPU (GTX 680) 実装の約

ech 社の PCIE-395-D8 を用いた．本設計におけ19%まで削減できた．以上の結果から，FPGAる FPGA の最大動作周波数は 167MHz である．

実装は，CPU 実装と比べて非常に低消費電力で表 2 に本設計のリソース使用量を示す．上段があり，GPU 実装と比べて同程度の処理速度かつFPGA (Stratix V D8) のリソース量，下段がリ非常に低消費電力であることが確認できた．

ソース使用量を表す．
評価尺度として，処理時間，消費電力，電力遅延時間積を用いる．消費電力は，PC 全体の4.

結論

消費電力を測定器 (HIOKI AC/DC POWER

本稿では，OpenCL を用いた POC によるHiTESTER 3334) を用いて計測した．表 1 の画像対応付け処理の FPGA 実装を提案した．自消費電力は，処理中の消費電力と何も処理を行由度の高いメモリ構造によるデータの再利用とわない時の消費電力の差を表している．電力遅パイプラインの活用により，FPGA による高速延時間積は，処理時間と消費電力の積であり，処かつ低消費電力な画像対応付けを実現した．今理にかかる消費電力量を表している．GPU 実装

後の課題として，GPU 向け OpenCL のコードによって 1 スレッド CPU 実装の 25∼27 倍程度，を FPGA 向けに最適化する手法を設計論として12 スレッド CPU 実装の 4.0∼4.3 倍程度の高速まとめたいと考えている．

化が実現できた．また，FPGA 実装によって 1スレッド CPU 実装の 17 倍程度，12 スレッド

参考文献

CPU 実装の 2.7 倍程度の高速化が実現できた．
以上により処理時間において，FPGA のメモリ帯域は GPU よりはるかに小さいにもかかわらず，FPGA 実装は GPU 実装と同程度の性能が–6–1) R. Szeliski, [Computer Vision: Algorithms andApplications], Springer-Verlag New York Inc.,
20102) T. Shibahara, T. Aoki, H. Nakajima, andK. Kobayashi, “A sub-pixel stereo correspondence technique based on 1D phase-only correlation,” Proc. Int l Conf. Image Processing,
V–221–V–224, 20073) M. Miura, K. Fudano, K. Ito, T. Aoki, H. Takizawa, and H. Kobayashi, “Performance evaluation of phase-based correspondence matching
on GPUs,” Proc. SPIE Vol.8856, Applicationsof Digital Image Processing XXXVI, 885614,
pp.1–9, 2013
4) “The OpenCL Specification, Version 1.2.”
http://www.khronos.org/registry/cl/specs/opencl-1.2.pdf
5) “Altera SDK for OpenCL.” https://www.
altera.com/products/design-software/
embedded-software-developers/opencl/overview.html
6) C. D. Kuglin, and D. C. Hines, “The phasecorrelation image alignment method,” Proc.
Int’l Conf. Cybernetics and Society, 163–165,
1975
7) K. Takita, T. Aoki, Y. Sasaki, T. Higuchi,and K. Kobayashi, “High-accuracy subpixel
image registration based on phase-only correlation,” IEICE Trans. Fundamentals E86-A,1925–1934, 2003
8) D. G. Lowe, “Distinctive image features fromscale-invariant keypoints,” Int’l J. Computer
Vision 60(2), 91–110, 2004
9) M. Miura, S. Sakai, J. Ishii, K. Ito, andT. Aoki, “An easy-to-use and accurate 3D
shape measurement system using two snapshots,” Proc. Int’l Workshop on Advanced Image Technology, 1103–1106, 2013

–7–