JP4409526B2 - オプティカルフロープロセッサ - Google Patents

オプティカルフロープロセッサ Download PDF

Info

Publication number
JP4409526B2
JP4409526B2 JP2006112395A JP2006112395A JP4409526B2 JP 4409526 B2 JP4409526 B2 JP 4409526B2 JP 2006112395 A JP2006112395 A JP 2006112395A JP 2006112395 A JP2006112395 A JP 2006112395A JP 4409526 B2 JP4409526 B2 JP 4409526B2
Authority
JP
Japan
Prior art keywords
product
optical flow
block
sum
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006112395A
Other languages
English (en)
Other versions
JP2007286827A (ja
Inventor
雅彦 吉本
正幸 深山
亮 山本
祐貴 福山
孝行 峯岸
忠義 片桐
Original Assignee
株式会社半導体理工学研究センター
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社半導体理工学研究センター filed Critical 株式会社半導体理工学研究センター
Priority to JP2006112395A priority Critical patent/JP4409526B2/ja
Publication of JP2007286827A publication Critical patent/JP2007286827A/ja
Application granted granted Critical
Publication of JP4409526B2 publication Critical patent/JP4409526B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)
  • Image Analysis (AREA)

Description

この発明は、動画の画像認識処理において画素毎の動きベクトルを求めるオプティカルフロー処理に関する。
車両安全システム、知能ロボットシステム、知的監視システム等の、社会貢献度の高いアプリケーションへの応用が期待できる画像認識処理技術は非常に重要な研究課題であり、これらのビジョンシステムの実用化に向けて高精度かつ高解像度な実時間画像認識処理が要求されている。画素毎の高精細な動きベクトルを求めるオプティカルフロー処理は、様々な動画像認識処理分野に幅広く応用できる要素技術である。
オプティカルフローとは、画像中の1つ1つの画素がどれだけ動いたかを表す動きベクトルのことである。オプティカルフローを用いることによって細やかな認識が可能となり、高精細な動画像認識システムが実現できると考えられる。しかし、それぞれの画素の動きベクトルを計算するオプティカルフロー導出処理には、リアルタイムでかつ全画素でオプティカルフローを求めようとすると数十GOPSもの演算量を必要とするため、高解像度画像に対する実時間処理システムは実用化されていない。ソフトウェアにおける処理では特徴点のみのフロー導出処理や、精度を犠牲にした高速なフロー導出処理が現状では行われている。また、実時間処理ハードウェアは、FPGA、ASICなどを用いた低解像度または低精度のものに限られていた(非特許文献1,2参照)。
M.V. Correia and A.C. Campilho、 ICPR, vol. 4, pp. 247-250, 2002 J. Diaz, E. Ros, S. Mota, F. Pelay and E.M. Ortigosa, Early Cognitive Vision Workshop, Talk 21, 2004 B.K.P. Horn and B.G. Schunck, "Determining optical Flow", AI vol.17, pp.185-204, 1981
本発明の目的は、高い演算負荷を実時間で処理するオプティカルフロープロセッサを提供することである。
本発明に係るオプティカルフロープロセッサは、入力される動画像について、次の式
Figure 0004409526
(ここに、u,vは、x方向とy方向のオプティカルフローであり、n+1は繰返し回数であり、ave_uとave_vはx方向とy方向の平均オプティカルフローであり、E_x、E_y、E_tはx、y、t方向での輝度勾配であり、αは重み係数である)で表される演算を反復して画素ごとに動きベクトルを求める。このオプティカルフロープロセッサは、演算に必要なデータを入力し、解像度の異なる複数階層レベルでの階層画像作成、輝度勾配算出、オプティカルフロー導出と内挿、補間画像作成のための反復演算を行う共通演算器を備え、この共通演算器は、入力データについて加算を行う加算器と、入力データおよび/または加算器からのデータを演算する第1,第2,第3および第4の処理演算器と、第1から第4の処理演算器の演算結果を加算する累算器からなる。第1から第4の処理演算器の各々は、入力データを平均する平均化ブロックと、入力データの積和演算をする第1積和ブロックと、入力データの積和演算をする第2積和ブロックと、第1積和ブロックおよび/または第2積和ブロックからの入力データの除算、加算および減算を行う除算・加減算ブロックと、除算・加減算ブロックからの入力データおよび内部メモリからの入力データに対して積和演算をする第3積和ブロックと、第3積和ブロックからの入力データおよび内部メモリからの入力データに対して積和演算をする第4積和ブロックとからなる。このオプティカルフロープロセッサは、逐次的に実行される演算の種類に応じて、入力データを変更し、平均化ブロックと、第1積和ブロックと、第2積和ブロックと、除算・加減算ブロックと、第3積和ブロックと、第4積和ブロックを選択的に用い、データパスを変更して、複数階層レベルで階層画像を作成して、輝度勾配を算出して輝度勾配メモリに記憶し、最上位階層レベルについてオプティカルフローを導出してオプティカルフローメモリに記憶し、より解像度の大きい階層化画像について、上位階層レベルのオプティカルフローから下位階層レベルのオプティカルフローに変換して前記オプティカルフローメモリに記憶する内挿処理と、得られたオプティカルフローを用いて動き補償をする補間画像作成とを順次実行して、最終的なオプティカルフローを出力する
前記オプティカルフロープロセッサは、好ましくは、さらに、外部および出力用バッファからデータを受け取る入力用バッファ、演算結果の少なくとも一部を記憶する内部メモリ、および、共通演算器の演算結果を記憶し出力する出力用バッファを備え、前記共通演算器は、入力バッファおよび内部メモリから演算に必要なデータを入力する。前記内部メモリは、たとえば、輝度勾配を記憶する輝度勾配メモリと、オプティカルフローを記憶するオプティカルフローメモリを含む。
前記オプティカルフロープロセッサにおいて、好ましくは、前記第1,第2,第3および第4の処理演算器の各々は、オプティカルフロー導出時に、並列の4画素の各々について、輝度勾配E_x,E_y,E_tと前フレームのオプティカルフローbefor_u,befor_vを入力し、前記平均化ブロックは、平均オプティカルフローave_u、ave_vを演算し、前記第1積和ブロックは、out_bel=E_x2+E_y22を演算し、前記第2積和ブロックは、out_ber=E_x*ave_u+E_y*ave_v+E_tを演算し、前記除算・加減算ブロックは、div_add=out_ber/out_belを演算し、前記第3積和ブロックは、u=ave_u-E_x*div_addとv=ave_u-E_y*div_addを演算し、前記第4積和ブロックは、tmp=(befor_u-u)2+(befor_v-v)2を演算する。
前記オプティカルフロープロセッサにおいて、好ましくは、前記第1,第2,第3および第4の処理演算器は、輝度勾配算出時に、前フレーム、現フレームおよび次フレームの輝度値E_mx、LPFフィルタ係数lpf_xおよびdiffフィルタ係数diff_x(ここにx=l, m, n)を入力する。ここで、前記第1の処理演算器において、前記第1積和ブロックは、out_bel=E_ml*lpf0+E_mm*lpf1+E_mn*lpf0を演算し、前記第2積和ブロックは、out_ber=E_ml*diff0+E_mm*diff1+E_mn*diff0を演算し、前記第3積和ブロックは、y方向にTmp_lpf=(E_l+E_n)*lpf0+E_m*lpf1を演算する。また、前記第2の処理演算器において、前記第1積和ブロックは、out_bel=E_ml*lpf0+E_mm*lpf1+E_mn*lpf0を演算し、前記第2積和ブロックは、out_ber=E_ml*diff0+E_mm*diff1+E_mn*diff0を演算し、前記除算・加減算ブロックは、out_belとout_berを出力し、前記第3積和ブロックは、第1,第2および第3の処理演算器からout_belとout_berをを入力し、x方向にTmp_lpf=(E_l+E_n)*lpf0+E_m*lpf1を演算し、前記第4積和ブロックは、diff_0=diff0*(E_i-E_k)とdiff_1=diff0*(E_j-E_g)を演算する。また、前記第3の処理演算器において、前記第1積和ブロックは、out_bel=E_ml*lpf0+E_mm*lpf1+E_mn*lpf0を演算し、前記第2積和ブロックは、out_ber=E_ml*diff0+E_mm*diff1+E_mn*diff0を演算し、前記除算・加減算ブロックは、out_belとout_berを出力し、前記第3積和ブロックは、第1,第2および第3の処理演算器からout_belとout_berをを入力し、x方向にTmp_lpf=(E_l+E_n)*lpf0+E_m*lpf1を演算し、前記第4積和ブロックは、LPF係数を入力してtmp=(E_i+E_k)*lpf0+(E_j+E_g)*Lpf1を演算する。また、前記第4の処理演算器において、前記第3積和ブロックは、y方向にTmp_lpf=(E_l+E_n)*lpf0+E_m*lpf1を演算する。
また、前記オプティカルフロープロセッサにおいて、たとえば、複数の前記共通演算器を並列に配置する。そして、隣接する共通演算器の間の隣接する2つの前記処理演算器において入力データを共有するように配線し、前記複数の共通演算器の中の1端側の共通演算器に、その他の共通演算器から、前のオプティカルフローデータを転送する。
オプティカルフロー演算の最適化と、輝度勾配算出とオプティカルフロー導出を含む逐次的な演算における演算器の共通化によって小規模回路での高速・高精度な演算を実現する。
以下、添付の図面を参照して発明の実施の形態を説明する。
図1は、オプティカルフロープロセッサの性能を、単位時間当たりの処理画素数と平均角度誤差(MAE)で表すグラフである。MAEは精度の逆数に対応する。非特許文献1,2に記載されている従来のオプティカルフロープロセッサは、それぞれ、Diaz、Miguelと表示されている性能をもっている。本発明では、より高精度でより高速処理の実時間オプティカルフロープロセッサを実現する。図において、単位時間あたりの処理画素数3M、9M[pels/sec]は、それぞれ、30fr/sのCIF画像と30fr/sのVGA画像に対応する。本発明のオプティカルフロープロセッサは、後で説明するアーキテクチャを用いることにより、図示された高精度、高速処理が実現でき、高い演算負荷を実時間で処理できる。このVLSIアーキテクチャは、精度・解像度スケーラブルである。このスケーラビリティを利用して4つの共通演算器を並べることにより、30fr/sのVGA画像の実時間処理が可能である。また、従来のプロセッサの平均角度誤差(MAE)が10度以上であるのに対し、本発明のプロセッサではMAE10度未満を達成できる。
オプティカルフローを演算するアルゴリズムについて、これまで様々なアルゴリズムが提案されている。オプティカルフローとは、画像中の各画素がどれだけ動いたかを表す動きベクトルである。ここで、高精度なHorn & Schunckアルゴリズム(非特許文献3)を用いる。このアルゴリズムは、近接するオプティカルフローが滑らかに変化するという大局的な仮定に基づく勾配法であり、下記の更新式を繰返し解くことによってオプティカルフローを得る。
Figure 0004409526
(ここに、u,vは、x方向とy方向のオプティカルフローであり、n+1は繰返し回数であり、 ave_uとave_vはx方向とy方向の平均オプティカルフローであり、E_x、E_y、E_tはx、y、t方向での輝度勾配であり、αは重み係数である。)
VLSI実装向けに、高精度なHorn & Schunckアルゴリズムを用いたHOE(Hierarchical Optical-Flow Estimation)アルゴリズムを採用する。このアルゴリズムの特徴は、輝度勾配算出に、多次元勾配フィルタを採用している点や、階層化処理を行う点である。Horn & Schunckアルゴリズムでは、LPF処理に前後7画素を必要とするが、ここでは3フレームを利用する多次元勾配フィルタを用いることによって、フレーム遅延をあまり大きくすることなく精度の高いフローを検出できる。また、階層化処理によって大きな動きの検出に対応できる。階層化処理とは、大きなフローの高精度な導出に有効な手法であり、ガウシアンフィルタと2:1サブサンプリングによって階層化画像を作成し、解像度の小さな画像から順番にフローを導出する手法である。ここでは、3階層の階層化処理を用いる。階層化処理は、ほとんどの画像において、更新式が収束するまでに必要なitr回数が小さくなるため、演算量の削減効果も得ることができる。
図2は、HOEアルゴリズムのフローチャートを示す。オプティカルフロー処理の流れでは、まず、フィルタリングとサブサンプリングによって階層画像を作成し、階層化データバッファに記憶する(S1)。次に、画像データ(原画像または階層化画像)を入力して輝度勾配を算出し、輝度勾配メモリに記憶する(S2)。ここで、輝度は、多次元勾配フィルタを用いて、次の式
E0*lpf0+E1*lpf1+E2*lpf0
で求められる。ここに、E0, E1, E2は輝度値であり、lpf0, lpf1は多次元勾配フィルタに用いるLPFフィルタ係数である。x,y,z方向の輝度勾配は、3フレームの輝度値を入力として、多次元勾配の式から導出される。次に、最上位の3フレーム(前フレーム、現フレームおよび次フレーム)からおおまかなオプティカルフローν2の導出を行い(S3)、それを用いてオプティカルフローの内挿を行い、下位階層レベルのオプティカルフローν1に変換する(S5)。この内挿処理は、重みが均一な双一次内挿処理であり、ここでは、周囲の4画素のオプティカルフローを入力し、4画素の平均を算出し、出力する。次に、得られたオプティカルフローν1を用いて前フレームおよび次フレームからフレーム補間つまり動き補償を行う(S6)。補間画像は、次の式で求められる。
Emage[x+y*Xsize] = (1.0-s)*(1.0-t)*SrcImage[X+Y*Xsize]
+ (1.0-s)*t*SrcImage[X+(Y+inc_y)*Xsize]
+ s*(1.0-t)*SrcImage[X+inc_X+Y*Xsize]
+ s*t*SrcImage[X+inc_x+(Y+inc_y)*Xsize]
ここに、s, tはオプティカルフローの小数部、SrcImageは次フレームまたは前フレームの輝度値、incはオプティカルフローの整数部である。オプティカルフローとフレーム輝度値を入力して、次フレームまたは前フレームの補間画像輝度値を算出し、出力する。次に、さらに下の階層の処理に移り(S7)、上述の処理を繰り返して、オプティカルフローを導出する。最低階層でのオプティカルフローが得られると、次に、得られた結果を加算することにより最終的なオプティカルフローを得る(S8)。そして、最初のステップS1に戻り、次のフレームを処理する。
ハードウェア実装において高精度、高処理速度での処理を実現するため、シミュレーションによりHOEアルゴリズムのパラメータ最適化を行った。演算量に大きく影響する繰り返し回数itrについては、計算毎の画像全体のフローの平均更新量がたとえば10-4以下となるまで更新式の演算が繰り返されるが、ハードウェア制御を容易にするために一定回数itrで繰返し処理を打切る。繰り返し回数itrは150が最適であった。また、重みパラメータαは、α=10が最適であった。
また、HOEアルゴリズムは、小数点精度を必要とする計算を多数行っているためにハードウェアコストが非常に高くなってしまう。そこで、フロー検出精度を損なわない最大のビット長まで演算語長を削減することによって、低負荷な処理を実現する。ここで、種々の削減パターンを定義し、ビット長最適化のシミュレーションを行った。ここで採用した削減パターンは、16bitと24bitの固定小数点を用い、整数部と小数部のビット割当ては適応的とする方式であり、浮動小数点の場合と同程度の平均角度誤差(MAE)およびitr回数を維持できる。こうして、HOEアルゴリズムのitr回数および演算語長をVLSI向けに最適化した。
図2に示されるHOEアルゴリズムでは、階層画像作成、輝度勾配作成、オプティカルフロー導出、補間画像作成および双一次内挿の5つの処理をリアルタイムで順次行う(図3参照)。これら5つの処理の処理量が均一であればパイプライン並列処理により動作周波数を下げて低消費電力化できるが、繰り返し処理を含むオプティカルフロー導出部が全体の演算の大部分を占めているため、効率的なパイプラインを組むことができない。オプティカルフロー導出、輝度勾配算出、階層画像作成などの処理は基本的に積和演算を行う。そこで、HOEアルゴリズムのハードウェア実装において、回路規模削減のため、全ての演算を行う共通演算器CEを開発した。ここで、積和演算を行う複数のブロックを設け、各処理ごとにデータパスを変えることにより演算器の共通化を図っている。この共通演算器CEは、実時間演算処理を実現するために4画素同時処理可能な専用4-way SIMDデータパス回路を用いている。
図4は、共通演算器CEを用いたオプティカルフロープロセッサの全体アーキテクチャを示す。オプティカルフロープロセッサは、外部メモリ(SDRAM)とCPUに接続される。外部メモリには、原画像データ用メモリ、最終オプティカルフローデータ用メモリおよび階層化データ用メモリがある。CPUからの制御信号により各処理に必要なデータを外部メモリから、入力バッファである定数格納用バッファと輝度値格納用バッファへ転送する。共通演算器は、セレクタを介して入力されるいずれかの入力バッファのデータまたは内部メモリのデータを使って演算処理を行う。そして、得られた処理結果を、出力用バッファまたは内部メモリ(オプティカルフロー格納用メモリまたは輝度勾配格納メモリ)へ転送する。なお、共通演算器CEは、図示しないシーケンスコントローラを含む。なお、メモリバス帯域と内蔵メモリ容量のトレードオフにより輝度勾配データとオプティカルフローデータのみを内蔵メモリに格納することにした。なお、内部メモリを用いるか否か、また、内部メモリを用いる場合、どのようなデータを記憶するかは、適当に選択すればよい。
図5は、共通演算器CEの内部ブロックを含む全体アーキテクチャを示す。共通演算器CEは、積和処理を行う複数の演算ブロック(処理演算器PE)、演算ブロックへの入力データの加算処理を行う複数の加算ブロック(ADD)、複数の演算ブロック(PE)の演算結果の加算処理を行う累算ブロック(ACC)からなる。ここで、最も演算量が多いオプティカルフロー導出時に並列処理をするため4つの処理演算器PEを並列に配置して、1つの処理演算器PEで1画素を処理する4画素並列処理のSIMD構成とする。また、その他の処理時でも、1画素ごとの処理をスループット1で実現できる構成とする。
図6は、共通演算器CEの中の処理演算器PEの内部ブロック図である。オプティカルフロー導出、輝度勾配算出、階層画像作成などほぼ全ての処理は基本的に積和処理を行う。そこで、積和演算を行う複数のブロックを設け、各処理ごとにデータパスを変えることにより演算器の共通化を行った。共通演算器CEでは、CPUからの制御信号により各演算に必要なデータが外部メモリからバッファに転送され、CPUの制御信号でデータパスを変えられる。これにより1つの共通演算器CEでオプティカルフロー導出に必要な全ての処理を行う。
処理演算器PEは、6つの演算エレメント、すなわち、平均化、加算およびシフト処理のための平均化ブロック(AVE)、第1と第2の積和フィルタである積和ブロック(BELとBER)、除算や加減算を行う除算・加減算ブロック(Div/ADD)、第3の積和フィルタであるCalc/LPFブロック、および、第4の積和フィルタである差分ブロック(Diff)で構成されている。たとえばオプティカルフロー導出では、外部からのデータは、一方では、第1の積和フィルタ(BELブロック)に入力され、他方では、平均化ブロック(AVE)を経て第2の積和フィルタ(BERブロック)に入力される。除算・加減算ブロック(Div/ADD)は、両積和フィルタBEL、BERの処理結果を入力して除算をする。その結果は直接出力されるか、または、第3の積和フィルタであるCalc/LPFブロックで処理されたのち、第4の積和フィルタである差分ブロックDiffで入力データとの差分がとられ、その結果が出力される。
図7はオプティカルフロー導出時のデータパスを示す。オプティカルフロー導出時には全ての処理演算器PE内の演算ブロックを用いて演算を行う。ここで、4つの処理演算器PEを用いて4画素並列処理とする。まず、オプティカルフロー格納メモリから平均化ブロックAVEにオプティカルフローデータが転送され、局所平均ave_u, ave_vが求められる。次に、BEL、BERブロックでは、オプティカルフロー更新式の分母Ex+Ey+αと、分子ave_u*Ex+ave_v*Ey+Etの計算を行い、除算・加減算ブロック(Div/ADD)は、これらを除算してdiv=分子/分母を求める。次に、Calc/LPFブロックは、un+1=ave_u−Ex*div、vn+1=ave_v−Ey*divを計算して、オプティカルフローをun+1、vn+1に更新する。更新されたオプティカルフローは、内部メモリであるオプティカルフロー格納メモリに書き込まれる。差分ブロック(Diff)では、オプティカルフロー更新量(ave_u−un+1)2+(ave_v−vn+1)2を計算する。累算ブロック(ACC)は、4画素のオプティカルフロー更新量を加算する。この値がしきい値と比較される。下記の表1は、オプティカルフロー導出時の処理演算器PEの各ブロックが行う処理を示す。
Figure 0004409526
また図8は輝度勾配算出時のデータパスを示す。ここで輝度勾配算出に必要な演算ブロックが選択され、それらを用いて、演算処理を行う。図に示されるように、4つの処理演算器PE0、PE1、PE2、PE3は、異なる処理を行う。処理演算器PE0、PE1、PE2は、それぞれ、x、y、t方向の輝度勾配を計算する。処理演算器PE0では、Diffブロックは動作しない。また、処理演算器PE3では、Calc_LPFブロックのみ動作する。まず、外部メモリから前フレーム、現フレームおよび次フレームの輝度値が入力用バッファに転送される。BEL,BERブロックでは、t方向にそれぞれLPFフィルタリング(out_bel=E_ml*lpf0+E_mm*lpf1+E_mn*lpf0)とDiffフィルタリング(out_ber=E_ml*diff0+E_mm*diff1+E_mn*diff0)を行う。次に、Calc_LPFブロックで、x方向またはy方向にLPFフィルタリング(Tmp_lpf=(E_l+E_n)*(lpf0+E_m*lpf1))を行う。ここで、E_mxは輝度値を表し、lpfxは多次元勾配フィルタに用いるLPFフィルタ係数を表し、diffxは多次元勾配フィルタに用いるdiffフィルタ係数を表し、diff_0、diff_1はx方向とy方向の輝度勾配を表す。最後に、Diffブロックで、x、y方向にDiffフィルタリングとy方向にLPFフィルタリングを行う。これにより、4つの処理演算器PEを用いて、1画素のx、y、t方向の輝度勾配が求められる。このように、x方向輝度勾配は、処理演算器PE0において、t方向にLPFフィルタ→y方向にLPFフィルタ→x方向にDiffフィルタの処理をして求められ、y方向輝度勾配は、処理演算器PE1において、t方向にLPFフィルタ→x方向にLPFフィルタ→y方向にDiffフィルタの処理をして求められる。また、t方向輝度勾配は、処理演算器PE2において、t方向にDiffフィルタ→x方向にLPFフィルタ→y方向にLPFフィルタの処理をして求められる。
下記の表2は輝度勾配計算時の処理演算器PE内の各ブロックの処理を示す。ここで、ブロック名の後の0,1,2,3は、処理演算器PE0,PE1,PE2,PE3の中のブロックであることを表す。
Figure 0004409526
図9は、階層画像作成時のデータパスを示す。階層画像は、25画素の輝度値データを3つの処理演算器で積和処理し、1画素の階層画像が作成できる。まず、輝度値データが外部メモリから入力用バッファに転送される。そして、加算ブロックADD1、ADD2で原画像の輝度値の加算値img_xを求め、第0、第1、第2の処理演算器内の5つの積和ブロックBER, BELで、それぞれ1行分のガウシアンフィルタ処理の乗算処理out_bel=img_a1*A+img_a2*B+img_a3*C、out_bel=img_a1*C+img_a2*D+img_a3*F、・・・、out_bel=img_e1*B+img_e2*D+img_e3*Fなどを演算する。ここに、A,B,C,D,E,Fはガウシアンフィルタの係数である。さらに、その乗算結果を除算・加減算ブロックDiv_Addと累算ブロックACCとで5行分加算して、上位階層画像の1画素の輝度値img(=img_a1*A+img_a2*B+img_a3*C+ img_b1*B+img_b2*C+img_b3*D+img_c1*C+img_c2*D+img_c3*E+img_d1*B+img_d2*D+img_d3*E+img_e1*B+img_e2*D+img_e3*F)を出力する。
図10は、双一次内挿時のデータパスを示す。オプティカルフローデータが平均化ブロックAVEに転送され、加算、シフト処理が行われる。そして、処理結果が再びオプティカルフロー格納メモリに転送される。
図11は、ベクトル加算時のデータパスを示す。まず、外部メモリから上位階層で内挿されたオプティカルフローデータが入力用バッファに転送される。そして、内部メモリのオプティカルフローデータと入力用バッファのオプティカルフローデータを平均化ブロックAVEで加算する。処理結果は、オプティカルフローメモリに格納される。
図12は、補間画像作成時のデータパスを示す。補間画像作成時には、輝度勾配メモリに画像の輝度値データが格納されている。まず、オプティカルフロー格納メモリからオプティカルフロー整数部データが輝度勾配メモリへ転送され、原画像の輝度値データがCalc_LPFブロックとDiffブロックに転送される。それと同時にオプティカルフローの小数部データが積和ブロックBERに転送されて乗算が行われ、係数stが決定され、最終的に除算・加減算ブロックDiv_Addで4つの係数st、s(1-t)、t(1-t)、(1-s)(1-t)が決定される。Calc_LPFブロックとDiffブロックで、除算・加減算ブロックDiv_Addで求めた係数と輝度勾配メモリから転送された輝度値が乗算され、Tmplpf=E_c*t(1-s)+E_d*(1-s)(1-t)とtmp=E_a*st+E_b*s(1-t)が求められ、最後に累算ブロックACCで両者の累算処理をして、出力用バッファに転送する。
図13、図14、図15、図16、図17、図18、図19、図20、図21は、それぞれ、共通演算器CE内のAVE演算ブロック、BER演算ブロック、BEL演算ブロック、Calc_LPF演算ブロック、Div_add演算ブロック、Diff演算ブロック、ADD1演算ブロック、ADD2演算ブロックおよびACC演算ブロックの演算回路を示す。また、表3〜表11は、これらの演算ブロックで扱う信号を示す。
表3は、AVE演算ブロックで扱う信号を示す。
Figure 0004409526
表4は、BER演算ブロックで扱う信号を示す。
Figure 0004409526
表5は、BEL演算ブロックで扱う信号を示す。
Figure 0004409526
表6は、Calc_LPF演算ブロックで扱う信号を示す。
Figure 0004409526
表7は、Div_add演算ブロックで扱う信号を示す。
Figure 0004409526
表8は、diff演算ブロックで扱う信号を示す。
Figure 0004409526
表9は、ADD1演算ブロックで扱う信号を示す。
Figure 0004409526
表10は、ADD2演算ブロックで扱う信号を示す。
Figure 0004409526
表11は、ACC演算ブロックで扱う信号を示す。
Figure 0004409526
また、図22と図23は、それぞれ、処理演算器PEの内部エレメントの1つであるBER演算ブロックのオプティカルフロー導出時のデータパスと輝度勾配算出時のデータパスを示す。矢印はマルチプレクサにおけるデータパスの方向を示す。他の演算エレメントでも、図示しないが、同様に処理内容に応じて入力データとデータパスを切り換える。このようにCPUの制御信号によりマルチプレクサでデータパスを変えることで、内部エレメントを選択的に用いることにより、共通演算器はあらゆる演算に対応できる。
上述のオプティカルフロープロセッサは、専用データバス回路(並列化とパイプライン化)による効率的な実時間処理を可能にしたので、図1に示したように、1階層あたり150回のitr回数でCIF30fpsを高精度(全テスト画像の平均MAE=5.2度)で処理できる。すなわち、CIF30以上のシーケンスに対して、MAE(精度の指標)<10以下の高精度のオプティカルフローを実時間で抽出できる。
上述のオプティカルフロープロセッサは、高精度、高解像度に対応したスケーラブルアーキテクチャを実現した。ここで、高精度、高解像度を要求するアプリケーションでは、上述の共通演算器を単純に複数並べることで、高精度、高解像度に対応できる。ここで、並列に配置される共通演算器CEがデータの共有を行うため結線を変更している。たとえば、隣接する共通演算器の間の隣接する2つの処理演算器PEにおいて入力データを共有するように配線し、また、複数の共通演算器の中の1端側の共通演算器に、その他の共通演算器から、前のオプティカルフローデータを転送する。これにより多くのアプリケーションに対応できる。精度スケーラブル、解像度スケーラブルであるので、動き特徴量抽出手段として多くの動画像認識処理システムに応用できる。
例えば2つのオプティカルフロープロセッサを2つ並べた場合、オプティカルフロー導出部において繰り返し回数を2倍にして高精度の対応が可能である。図24にオプティカルフロープロセッサを2つ並べた場合の各プロセッサが処理するフレームの画素を示す。この場合8画素並列処理となり、繰り返し回数を2倍にして高精度のオプティカルフローが求められる。図25にオプティカルフロープロセッサを2つ並べた場合のアーキテクチャを示す。1つの共通演算器CEで4画素のオプティカルフローを求めるには、4画素とその左右の1画素の計6画素が必要となるため、隣接する共通演算器、すなわち、第1の共通演算器CE1と第0の共通演算器CE0とでデータの共有が必要である。データの共用のため、データ配線が変更できる。具体的には2つの共通演算器CEOとCE1の間の、隣接する画素を扱う各々の1列を互いに転送し、それと同時に次列処理のため、第1の共通演算器CE1から第0の共通演算器CEOのための内部メモリに2列分のオプティカルフローデータを転送する必要がある。
また、オプティカルフロープロセッサを並列に配置することでより大きな画素サイズ-の対応も可能である。図26にNTSCサイズを4並列処理する場合の処理フレーム画素イメージを示す。処理すべきフレームを水平方向に分割することで、垂直方向の画素サイズが変わっても共通演算器CEのもつオプティカルフローメモリと輝度勾配メモリのサイズは変わらない。このため、オプティカルフロープロセッサを単純に接続することでより大きな画像サイズへの対応が可能である。共通演算器の接続は、図24と同様で4つを並べ、第3の共通演算器CE3に当たる右端2列のオプティカルフローデータを第0の共通演算器CEOの前フローデータを格納するメモリに転送するよう接続する。たとえば、共通演算器CEを4つ並べた場合は1階層あたり150回のitr回数でVGA30の画像を処理することが可能となる。
オプティカルフロープロセッサの性能を単位時間当たりの処理画素数と平均角度誤差(MAE)で表すグラフ HOEアルゴリズムのフローチャート HOEアルゴリズムにおける5つの処理を示す図 オプティカルフロープロセッサの全体アーキテクチャを示す図 共通演算器の内部ブロックを含む全体アーキテクチャを示す図 共通演算器の中の処理演算器の内部ブロック図 オプティカルフロー導出時のデータパスを示す図 輝度勾配算出時のデータパスを示す図 階層画像作成時のデータパスを示す図 双一次内挿時のデータパスを示す図 ベクトル加算時のデータパスを示す図 補間画像作成時のデータパスを示す図 AVE演算ブロックの演算回路図 BER演算ブロックの演算回路図 BEL演算ブロックの演算回路図 Calc_LPF演算ブロックの演算回路図 Div_add演算ブロックの演算回路図 Diff演算ブロックの演算回路図 ADD1演算ブロックの演算回路図 ADD2演算ブロックの演算回路図 ACC演算ブロックの演算回路図 BER演算ブロックのオプティカルフロー導出時のデータパスを示す図 BER演算ブロックの輝度勾配算出時のデータパスを示す図 各共通演算器が処理するフレームの画素の図 スケーラブルアーキテクチャを説明するための図 NTSCサイズを4並列で処理する場合の処理フレーム画素イメージの図
符号の説明
PE 処理演算器、 ADD1、ADD2 加算ブロック、 ACC 累算ブロック、 AVE 平均化ブロック、 BEL 第1積和ブロック、 BER 第2積和ブロック、 Div/ADD 除算・加減算ブロック、 Calc/LPF 第3積和ブロック、 Diff 第4の積和ブロック。

Claims (6)

  1. 入力される動画像について、次の式
    Figure 0004409526
    (ここに、u,vは、x方向とy方向のオプティカルフローであり、n+1は繰返し回数であり、ave_uとave_vはx方向とy方向の平均オプティカルフローであり、E_x、E_y、E_tはx、y、t方向での輝度勾配であり、αは重み係数である)で表される演算を反復して画素ごとに動きベクトルを求めるオプティカルフロープロセッサであって、
    演算に必要なデータを入力し、解像度の異なる複数階層レベルでの階層画像作成、輝度勾配算出、オプティカルフロー導出と内挿、補間画像作成のための反復演算を行う共通演算器を備え、
    前記共通演算器は、入力データについて加算を行う加算器と、入力データおよび/または加算器からのデータを演算する第1,第2,第3および第4の処理演算器と、第1から第4の処理演算器の演算結果を加算する累算器からなり、
    第1から第4の処理演算器の各々は、
    入力データを平均する平均化ブロックと、
    入力データの積和演算をする第1積和ブロックと、
    入力データの積和演算をする第2積和ブロックと、
    第1積和ブロックおよび/または第2積和ブロックからの入力データの除算、加算および減算を行う除算・加減算ブロックと、
    除算・加減算ブロックからの入力データおよび内部メモリからの入力データに対して積和演算をする第3積和ブロックと、
    第3積和ブロックからの入力データおよび内部メモリからの入力データに対して積和演算をする第4積和ブロックとからなり、
    逐次的に実行される演算の種類に応じて、入力データを変更し、平均化ブロックと、第1積和ブロックと、第2積和ブロックと、除算・加減算ブロックと、第3積和ブロックと、第4積和ブロックを選択的に用い、データパスを変更して、複数階層レベルで階層画像を作成し、輝度勾配を算出して輝度勾配メモリに記憶し、最上位階層レベルについてオプティカルフローを導出してオプティカルフローメモリに記憶し、より解像度の大きい階層化画像について、上位階層レベルのオプティカルフローから下位階層レベルのオプティカルフローに変換して前記オプティカルフローメモリに記憶する内挿処理と、得られたオプティカルフローを用いて動き補償をする補間画像作成とを順次実行して、最終的なオプティカルフローを出力する
    オプティカルフロープロセッサ。
  2. さらに、外部および出力用バッファからデータを受け取る入力用バッファ、演算結果の少なくとも一部を記憶する内部メモリ、および、共通演算器の演算結果を記憶し出力する出力用バッファを備え、
    前記共通演算器は、入力バッファおよび内部メモリから演算に必要なデータを入力することを特徴とする、請求項1に記載されたオプティカルフロープロセッサ。
  3. 前記内部メモリは、輝度勾配を記憶する前記輝度勾配メモリと、前記オプティカルフローを記憶するオプティカルフローメモリを含むことを特徴とする、請求項2に記載されたオプティカルフロープロセッサ。
  4. 請求項1に記載されたオプティカルフロープロセッサにおいて、前記第1,第2,第3および第4の処理演算器の各々は、オプティカルフロー導出時に、並列の4画素の各々について、輝度勾配E_x,E_y,E_tと前フレームのオプティカルフローbefor_u,befor_vを入力し、
    前記平均化ブロックは、平均オプティカルフローave_u、ave_vを演算し、
    前記第1積和ブロックは、out_bel=E_x2+E_y22を演算し、
    前記第2積和ブロックは、out_ber=E_x*ave_u+E_y*ave_v+E_tを演算し、
    前記除算・加減算ブロックは、div_add=out_ber/out_belを演算し、
    前記第3積和ブロックは、u=ave_u-E_x*div_addとv=ave_u-E_y*div_addを演算し、
    前記第4積和ブロックは、tmp=(befor_u-u)2+(befor_v-v)2を演算する
    ことを特徴とするオプティカルフロープロセッサ。
  5. 請求項1に記載されたオプティカルフロープロセッサにおいて、前記第1,第2,第3および第4の処理演算器は、輝度勾配算出時に、前フレーム、現フレームおよび次フレームの輝度値E_mx、LPFフィルタ係数lpf_xおよびdiffフィルタ係数diff_x(ここにx=l, m, n)を入力し、
    前記第1の処理演算器において、
    前記第1積和ブロックは、out_bel=E_ml*lpf0+E_mm*lpf1+E_mn*lpf0を演算し、
    前記第2積和ブロックは、out_ber=E_ml*diff0+E_mm*diff1+E_mn*diff0を演算し、
    前記第3積和ブロックは、y方向にTmp_lpf=(E_l+E_n)*lpf0+E_m*lpf1を演算し、
    前記第2の処理演算器において、
    前記第1積和ブロックは、out_bel=E_ml*lpf0+E_mm*lpf1+E_mn*lpf0を演算し、
    前記第2積和ブロックは、out_ber=E_ml*diff0+E_mm*diff1+E_mn*diff0を演算し、
    前記除算・加減算ブロックは、out_belとout_berを出力し、
    前記第3積和ブロックは、第1,第2および第3の処理演算器からout_belとout_berをを入力し、x方向にTmp_lpf=(E_l+E_n)*lpf0+E_m*lpf1を演算し、
    前記第4積和ブロックは、diff_0=diff0*(E_i-E_k)とdiff_1=diff0*(E_j-E_g)を演算し、
    前記第3の処理演算器において、
    前記第1積和ブロックは、out_bel=E_ml*lpf0+E_mm*lpf1+E_mn*lpf0を演算し、
    前記第2積和ブロックは、out_ber=E_ml*diff0+E_mm*diff1+E_mn*diff0を演算し、
    前記除算・加減算ブロックは、out_belとout_berを出力し、
    前記第3積和ブロックは、第1,第2および第3の処理演算器からout_belとout_berをを入力し、x方向にTmp_lpf=(E_l+E_n)*lpf0+E_m*lpf1を演算し、
    前記第4積和ブロックは、LPF係数を入力してtmp=(E_i+E_k)*lpf0+(E_j+E_g)*Lpf1を演算し、
    前記第4の処理演算器において、
    前記第3積和ブロックは、y方向にTmp_lpf=(E_l+E_n)*lpf0+E_m*lpf1を演算する
    ことを特徴とするオプティカルフロープロセッサ。
  6. 請求項1〜5のいずれかに記載されたオプティカルフロープロセッサであって、
    複数の前記共通演算器を並列に配置し、
    隣接する共通演算器の間の隣接する2つの前記処理演算器において入力データを共有するように配線し、
    前記複数の共通演算器の中の1端側の共通演算器に、その他の共通演算器から、前のオプティカルフローデータを転送する
    ことを特徴とするオプティカルフロープロセッサ。
JP2006112395A 2006-04-14 2006-04-14 オプティカルフロープロセッサ Expired - Fee Related JP4409526B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006112395A JP4409526B2 (ja) 2006-04-14 2006-04-14 オプティカルフロープロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006112395A JP4409526B2 (ja) 2006-04-14 2006-04-14 オプティカルフロープロセッサ

Publications (2)

Publication Number Publication Date
JP2007286827A JP2007286827A (ja) 2007-11-01
JP4409526B2 true JP4409526B2 (ja) 2010-02-03

Family

ID=38758546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006112395A Expired - Fee Related JP4409526B2 (ja) 2006-04-14 2006-04-14 オプティカルフロープロセッサ

Country Status (1)

Country Link
JP (1) JP4409526B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4662968B2 (ja) * 2007-11-08 2011-03-30 株式会社半導体理工学研究センター 画像処理装置及び方法
JP5241268B2 (ja) * 2008-02-26 2013-07-17 三菱電機株式会社 動的再構成可能演算装置および半導体装置

Also Published As

Publication number Publication date
JP2007286827A (ja) 2007-11-01

Similar Documents

Publication Publication Date Title
Chang et al. An energy-efficient FPGA-based deconvolutional neural networks accelerator for single image super-resolution
JP3546437B2 (ja) 適応形ビデオ信号演算処理装置
Zhang et al. An efficient VLSI architecture for lifting-based discrete wavelet transform
JP4231620B2 (ja) 画像処理方法および装置
KR100273629B1 (ko) 이동 벡터 평가 방법 및 장치
JP3228927B2 (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
Chen VLSI implementation of an adaptive edge-enhanced image scalar for real-time multimedia applications
CN108765282B (zh) 基于fpga的实时超分辨方法及***
US10402196B2 (en) Multi-dimensional sliding window operation for a vector processor, including dividing a filter into a plurality of patterns for selecting data elements from a plurality of input registers and performing calculations in parallel using groups of the data elements and coefficients
KR20120135752A (ko) 블록 기반 영상의 해상도 변환 방법 및 장치
Zhang et al. The hardware realization of the bicubic interpolation enlargement algorithm based on FPGA
JP4409526B2 (ja) オプティカルフロープロセッサ
JP4662969B2 (ja) 画像処理装置及び方法
Shi et al. Efficient super-resolution system with block-wise hybridization and quantized winograd on fpga
Dilip et al. Bilinear interpolation image scaling processor for VLSI architecure
Chang et al. Design and implementation of a low-cost guided image filter for underwater image enhancement
CN103618904A (zh) 基于像素的运动估计方法及装置
JP4662968B2 (ja) 画像処理装置及び方法
Guo et al. An energy-efficient image filtering interpolation algorithm using domain-specific dynamic reconfigurable array processor
KR100246033B1 (ko) 고속 실시간 처리 움직임 추정을 위한 연산방법 및 이를 위한 연산장치
Imamura et al. Scalable Architecture for High-Resolution Real-time Optical Flow Processor
Park et al. Real-time stereo matching architecture based on 2D MRF model: a memory-efficient systolic array
Mamatha et al. Reduced complexity architecture for convolution based discrete cosine transform
Karthic Implementation of High-Performance Image Scaling Processor using VLSI
Ma et al. Booth-NeRF: An FPGA Accelerator for Instant-NGP Inference with Novel Booth-Multiplier

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090630

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090820

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090820

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131120

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees