説明

画像処理装置

【課題】SIMD構成と比べて画素値転送量を削減でき、しかも、RCSA構成の問題(H.264のブロック分割に起因するサイクル数の増加)も回避可能な、画像処理装置を得る。
【解決手段】複数の演算素子PEが行列状に配設されたアレイを備え、アレイは、それぞれが所定数の演算素子PEを含む複数のサブブロックSBSAに分割されており、複数のサブブロックSBSAの各々は、自サブブロックと、自サブブロックに隣接する隣接サブブロックとを接続するか否かを選択可能なマルチプレクサ10A,11Aを有しており、処理すべき画像のサイズに応じてマルチプレクサ10A,11Aの設定を切り換えることによって、アレイ内に、一又は複数のサブブロックSBSAを含む一又は複数のブロックを設定可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像の動き探索を実行するための画像処理装置に関する。
【背景技術】
【0002】
背景技術として、画素間の評価値演算器のみを持つSIMD(Single Instruction Multiple Data)構成と、画素バッファを持ち画素再利用性を高めたシストリックアレイ構成であるRCSA(Ring Connected Systolic Array)構成とについて説明する。評価値にはSAD(Sum of Absolute Difference)を使用するものと想定して評価値演算部を構成しているが、その他の評価値を用いることも可能である。また、参照用画像データ(SW:Search Window)を格納したバッファSRAM(以下「SWRAM」と称す)と、符号化対象の画像データ(TB:Template Block)を格納したレジスタファイル(以下「TBバッファ」と称す)とを外部に有するものと想定する。これらのSWRAM及びTBバッファは、1サイクルに最大64(=8×8)個の画素値の同時出力が可能であると想定する。
【0003】
SIMD構成の例を図32に示す。SIMD構成は、SWRAM及びTBバッファから受け取った画素値から評価値を求めるユニットを複数持つのみの構成である。SIMD構成には画素値を保持しておくためのバッファが存在しないため、画素値の再利用が不可能である。後述の本発明に係るRRSA(Reconfigurable Ring Connected Systlic Array)構成の例では、1画素の評価値の演算モジュールが512並列であるため、SIMD構成も512並列と想定して見積もりを行う。即ち、図32中のX,Yはそれぞれ16,32となる。SWRAM及びTBバッファからの画素出力は最大8×8画素であるため、例えば16×16の1点の探索を行うためには、RAM読み出し待ちで4サイクルが必要となる。
【0004】
RCSA構成の例を図33に示す。RCSA構成は、下記非特許文献1に開示されている。RCSA構成は、画素間の評価値演算ユニットに加え、画素値のバッファを持ち、それらをリング状に接続した構成である。演算素子PE(Processor Element)及びシフトレジスタSR(Shift Register)の内部構成をそれぞれ図34及び図35に示す。SIMD構成と同様に、RCSA構成も512並列(PE512並列、SR512並列)として見積もりを行う。即ち、図33中のX,Yはそれぞれ16,32となる。例えば、16×16の8点の連続点探索を行う場合、PE−array側にRAM読み出し4サイクル、SR−array側にRAM読み出し4サイクル、評価値演算に8サイクルとなり、その結果、4+4+8−1=15サイクルが必要となる。なお、ここで最後に1サイクルを減じているのは、評価値演算は実際には「初期ロード+シフト回数」サイクルで行われるため、RAMの読み出しサイクルと評価値演算1点分とが重複するためである。
【0005】
【非特許文献1】J.Miyakoshi, Y.Murachi, K.Hamano, T.Matsuno, M.Miyama and MYoshimoto,"A Low-Power Systolic Array Architecture for Block-Matching Motion Estimation," IEICE Trans. Electoronics, Vol.E88-C, No.4, pp.559-569,April 2005.
【発明の開示】
【発明が解決しようとする課題】
【0006】
SIMD構成においては、膨大な画素値転送量が最大の問題となる。SIMD構成では画素値の再利用が不可能であるため、連続点探索を行う際には、演算に必要な全ての画素値をSWRAM及びTBバッファからその都度読み出す必要がある。その結果、膨大な画素値転送帯域が必要となる。また、RAMの読み出し画素数に制限がある場合、実際に演算を行うサイクルに加え、画素値の読み出しにかかるサイクルが膨大なものとなる。この画素値転送に関する問題が、SIMD構成の問題点となる。
【0007】
RCSA構成は、連続点探索を行う際に再利用可能な画素を保持しておくことで、SIMD構成に比べて、SWRAM及びTBバッファからの画素値転送量を大幅に削減している。但し、H.264特有のブロック分割に対応していないことが、RCSA構成の問題点として挙げられる。即ち、並列度が512であるにも拘わらず、全ての演算器が同期して動作することしかできないため、mode1(16×16)、mode2(16×8)、mode3(8×16)、及びmode4(8×8)での探索を行う際に、512個全ての演算器が、16×16、16×8、8×16、又は8×8サイズのブロック1個に占有されてしまう。そのため、処理対象であるマクロブロックペア(MB−pair)が細分化されてブロックの個数が増えるにつれ、1マクロブロックペアの探索にかかるサイクル数が大きくなってしまう。この、H.264のブロック分割に伴うサイクル数の増加が、RCSA構成の問題点となる。
【0008】
本発明は、SIMD構成及びRCSA構成における上述の問題点を解決するために成されたものであり、SIMD構成と比べて画素値転送量を削減でき、しかも、RCSA構成の問題(H.264のブロック分割に起因するサイクル数の増加)も回避可能な、画像処理装置を得ることを目的とする。
【課題を解決するための手段】
【0009】
第1の発明に係る画像処理装置は、画像の画素値に基づいて評価値を演算するための複数の演算素子が行列状に配設されたアレイを備え、前記アレイは、それぞれが所定数の前記演算素子を含む複数のサブブロックに分割されており、前記複数のサブブロックの各々は、自サブブロックと、自サブブロックに隣接する隣接サブブロックとを接続するか否かを選択可能な選択手段を有しており、処理すべき画像のサイズに応じて前記選択手段の設定を切り換えることによって、前記アレイ内に、一又は複数のサブブロックを含む一又は複数のブロックを設定可能であることを特徴とする。
【0010】
第2の発明に係る画像処理装置は、第1の発明に係る画像処理装置において特に、前記アレイ内に複数のブロックが設定されている場合、前記複数のブロックの各々は他のブロックとは独立に動作可能であることを特徴とする。
【0011】
第3の発明に係る画像処理装置は、第1又は第2の発明に係る画像処理装置において特に、前記サブブロックは、複数の前記演算素子を有する第1ユニットと、前記第1ユニット内の前記演算素子によって演算される又は演算された画素値を保持可能な複数のレジスタを有する第2ユニットとを有しており、前記選択手段は、自サブブロックの第1ユニットへの入力として、自サブブロックの第2ユニット及び隣接サブブロックの第1ユニットの一方を選択する選択手段と、自サブブロックの第2ユニットへの入力として、自サブブロックの第1ユニット及び隣接サブブロックの第2ユニットの一方を選択する選択手段とを含むことを特徴とする。
【0012】
第4の発明に係る画像処理装置は、第3の発明に係る画像処理装置において特に、複数の前記サブブロックが接続されることにより、一の前記ブロック内に複数の第1ユニットと複数の第2ユニットとが含まれる場合、前記複数の第1ユニットのうちの一部の第1ユニットを、他の第1ユニット内の演算素子によって演算される又は演算された画素値を保持するためのレジスタとして使用可能であることを特徴とする。
【0013】
第5の発明に係る画像処理装置は、第1〜第4のいずれか一つの発明に係る画像処理装置において特に、前記アレイにロードされている画像部分に対して所定方向に隣接する箇所の画像部分の画素値を保持可能な記憶部をさらに備え、画像の評価位置を前記所定方向にシフトする際、前記記憶部に保持されている画素値が前記記憶部から前記アレイに入力されることを特徴とする。
【0014】
第6の発明に係る画像処理装置は、第5の発明に係る画像処理装置において特に、前記選択手段は、自サブブロックへの入力として、隣接サブブロック及び前記記憶部の一方を選択する選択手段を含むことを特徴とする。
【0015】
第7の発明に係る画像処理装置は、第1〜第6のいずれか一つの発明に係る画像処理装置において特に、前記サブブロックは、自サブブロック内の複数の前記演算素子によって演算された評価値を加算する加算器群を有しており、前記加算器群は、連続する行の評価値を加算するための、フレーム画像対応の加算器群と、隔行の評価値を加算するための、フィールド画像対応の加算器群とを含むことを特徴とする。
【発明の効果】
【0016】
第1〜第9の発明に係る画像処理装置によれば、アレイは複数のサブブロックに分割されている。そして、処理すべき画像のサイズに応じて選択手段の設定を切り換えることによって、アレイ内に一又は複数のサブブロックを含む一又は複数のブロックが設定される。そのため、処理対象であるマクロブロックペアが細分化されてブロックの個数が増えたとしても、アレイ内に設定された複数のブロックを同時に処理できるため、1マクロブロックペアの探索にかかるサイクル数が増大することを回避できる。
【0017】
特に第2の発明に係る画像処理装置によれば、複数のブロックの各々は他のブロックとは独立に動作可能であるため、1マクロブロックペア内の複数のブロックを並列に処理することができる。その結果、1マクロブロックペアの探索にかかるサイクル数が増大することを回避できる。
【0018】
特に第3の発明に係る画像処理装置によれば、サブブロックは、第1ユニット内の演算素子によって演算される又は演算された画素値を保持可能な複数のレジスタを有する第2ユニットを有している。従って、第2ユニットに保持されている画素値は再利用可能であるため、連続点探索を行う際に、バッファからサブブロックへの画素値の転送量を削減することができる。また、選択手段の設定によって、自サブブロックと隣接サブブロックとを接続しない場合には、自サブブロック内でリング状パスを形成することができる。一方、自サブブロックと隣接サブブロックとを接続する場合には、自サブブロックと隣接サブブロックとの間で、第1ユニット同士及び第2ユニット同士を連結することができる。
【0019】
特に第4の発明に係る画像処理装置によれば、複数の第1ユニットのうちの一部を第2ユニットと同等に扱うことにより、中間ロードが不要な最大探索範囲を拡大することができる。
【0020】
特に第5の発明に係る画像処理装置によれば、アレイにロードされている画像部分に隣接する箇所の画像部分の画素値を記憶部に保持しておくことにより、FS(Full Search)としてスネークサーチを実行することが可能となる。
【0021】
特に第6の発明に係る画像処理装置によれば、選択手段の設定によって、自サブブロックと隣接サブブロックとを接続しない場合には、自サブブロックと記憶部とを接続するパスを形成することができる。一方、自サブブロックと隣接サブブロックとを接続する場合には、自サブブロックと隣接サブブロックとの間で、第1ユニット同士及び第2ユニット同士を連結することができる。
【0022】
特に第7の発明に係る画像処理装置によれば、フレーム画像及びフィールド画像の双方に対応することが可能となり、プログレッシブ方式及びインタレース方式の双方を扱うことが可能となる。また、フレーム画像に関する評価値演算と、フィールド画像に関する評価値演算とを同時に実行することが可能となる。
【発明を実施するための最良の形態】
【0023】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【0024】
本発明に係る画像処理装置の全体構成を図1に示す。本発明に係る画像処理装置は、H.264対応のIMEコア1(IME:Integer Motion Estimation)として構成されている。IMEコア1は、参照画像用のバッファであるSWRAM2(SWRAM:Search Window RAM)と、符号化対象画像用のバッファであるTBバッファ3(TB:Template Block)と、画像回転処理部(cross path)4と、RRSA構成のアレイ5と、コントローラ6とを備えて構成されている。これらのモジュール群をMEコア内に搭載すれば、本発明に係るRRSAは支障なく動作する。
【0025】
IMEコア1では、横8画素×縦8画素(以下「8×8」と表記する)、8×1、1×8サイズの画素ブロックを1サイクルで読み出すことが可能な2portのSRAMが、SWRAM2として搭載されている。また、SWRAM2は、縦方向及び横方向への1/2画素間引き出力が可能である。SWRAM2から読み出し可能な画像ブロックを図2に示す。間引きなしの8×8画素ブロック、横方向に1/2画素間引きの16×8画素ブロック、縦方向に1/2画素間引きの8×16ブロック、縦横両方向に1/2画素間引きの16×16ブロックを、いずれも1サイクルで読み出すことが可能である。
【0026】
TBバッファ3は、符号化対象であるマクロブロックペアの画像データを格納可能な、512画素分のレジスタファイル(若しくはSRAM)である。TBバッファ3は、保持している画像データから、8×8、8×1、1×8サイズの画素ブロックを1サイクルで出力することができる。
【0027】
画像回転処理部4は、後述する縦方向DS(Directional Search)を実現するために、SWRAM2から出力された画像を回転してデータパスへ受け渡すためのモジュールである。画像を回転した場合にアレイ5に入力される画素の配置を図3に示す。元の画像が反時計方向に90°回転されていることが分かる。
【0028】
コントローラ6は、アレイ5を含むIMEコア1内の各モジュールを制御するためのモジュールである。コントローラ6からの制御信号に基づいて、アレイ5は様々な探索動作を実行する。
【0029】
以下、RRSA構成のアレイ5について詳細に説明する。アレイ5の全体構成を図4に示す。アレイ5は複数個(図4に示した例では8個)のサブブロックシストリックアレイ(以下単に「サブブロック」と称す)SBSA0〜SBSA7に分割されている。サブブロックSBSA0〜SBSA7は、それぞれプロセッシングユニットPU0〜PU7とシフトレジスタユニットSRU0〜SRU7とを備えて構成されている。以下、サブブロックSBSA0〜SBSA7を総称する場合は「サブブロックSBSA」と、プロセッシングユニットPU0〜PU7を総称する場合は「プロセッシングユニットPU」と、シフトレジスタユニットSRU0〜SRU7を総称する場合は「シフトレジスタユニットSRU」と、それぞれ称する。プロセッシングユニットPUは、複数の演算素子を有するユニットである。シフトレジスタユニットSRUは、プロセッシングユニットPU内の演算素子によって演算される又は演算された画素値を保持するための複数のシフトレジスタ素子を有するユニットである。
【0030】
サブブロックSBSAは、8×8単位の評価値を効率的に演算するためのシストリックアレイモジュールである。評価値にはSAD(Sum of Absolute Difference)を使用するものと想定して評価値演算部を構成しているが、その他の評価値を用いることも可能である。サブブロックSBSAは、8×8並列の1個のプロセッシングユニットPUと、8×8並列の1個のシフトレジスタユニットSRUとを備えて構成されている。
【0031】
サブブロックSBSAには、自サブブロックの外部からの入力として、(I1)SWRAM2からのプロセッシングユニットPUへの入力、(I2)SWRAM2からのシフトレジスタユニットSRUへの入力、(I3)横隣接サブブロックSBSAのプロセッシングユニットPUからのプロセッシングユニットPUへの入力、(I4)横隣接サブブロックSBSAのシフトレジスタユニットSRUからのシフトレジスタユニットSRUへの入力、(I5)下隣接サブブロックSBSAのプロセッシングユニットPUからのプロセッシングユニットPUへの入力、(I6)下隣接サブブロックSBSAのシフトレジスタユニットSRUからのシフトレジスタユニットSRUへの入力、(I7)記憶部7からのプロセッシングユニットPUへの入力、及び(I8)記憶部7からのシフトレジスタユニットSRUへの入力の、合計8個の入力が存在する。
【0032】
それぞれの入力画素サイズは、(I1)については8×8画素、(I2)については8×8画素、(I3)については1×8画素、(I4)については1×8画素、(I5)については8×1画素、(I6)については8×1画素、(I7)については8×1画素、(I8)については8×1画素である。
【0033】
また、サブブロックSBSAには、内部接続として、プロセッシングユニットPUとシフトレジスタユニットSRUとの間に1×8画素の双方向入出力パスが存在する。このパスはリング状になっており、図4に示した例では、シフトレジスタユニットSRUの右出力はプロセッシングユニットPUの左入力に、シフトレジスタユニットSRUの左出力はプロセッシングユニットPUの右入力に、プロセッシングユニットPUの右出力はシフトレジスタユニットSRUの左入力に、プロセッシングユニットPUの左出力はシフトレジスタユニットSRUの右入力に、それぞれ接続されている。
【0034】
また、サブブロックSBSAは、サブブロック外部への画素出力として、(O1)プロセッシングユニットPUから横隣接サブブロックSBSAのプロセッシングユニットPUへの出力、(O2)シフトレジスタユニットSRUから横隣接サブブロックSBSAのシフトレジスタユニットSRUへの出力、(O3)プロセッシングユニットPUから上隣接サブブロックSBSAのプロセッシングユニットPUへの出力、及び(O4)シフトレジスタユニットSRUから上隣接サブブロックSBSAのシフトレジスタユニットSRUへの出力の、合計4個の出力が存在する。
【0035】
それぞれの出力画素サイズは、(O1)については1×8画素、(O2)については1×8画素、(O3)については8×1画素、(O4)については8×1画素である。
【0036】
また、サブブロックSBSAは、評価値(この例ではSAD)の演算結果をアレイ5の外部へ出力する。一つのサブブロックSBSAから出力されるSADは、後述の図6に示すように、フレーム画像対応のFrame_4×4_SADが4本、フィールド画像対応のField_4×4_SADが4本である。8個のサブブロックSBSA0〜SBSA7からのこれらの演算結果の足しこみ方によって、例えば、16×32のマクロブロックペアでの探索中に同じ探索点でのmode1〜mode4(16×16、16×8、8×16、8×8)のSADを演算するといった副探索手法が実現可能となる。
【0037】
横隣接サブブロックSBSAからの外部入力と、プロセッシングユニットPU−シフトレジスタユニットSRU間の内部接続とは、動作状態によって選択的に切り換えられる。同様に、下隣接サブブロックSBSAからの外部入力と、記憶部7からの外部入力とは、動作状態によって選択的に切り換えられる。
【0038】
サブブロックSBSAの内部構成を図5に示す。また、プロセッシングユニットPUにおける評価値演算部分(演算素子PE及び加算器部分)の内部構成を図6に示す。また、演算素子PE単体の内部構成を図7に示す。
【0039】
<プロセッシングユニットPU>
図5〜7を参照して、プロセッシングユニットPUは、8×8画素サイズのデータバッファと、画素1点分の評価値演算を行う演算素子PEが64(=8×8)個と、評価値を探索状態に応じて足しこむ加算器12,13とを備えて構成されている。
【0040】
また、図5を参照して、プロセッシングユニットPUは、PEマトリクスの各行毎にマルチプレクサ10Aを備えている。マルチプレクサ10Aは、自サブブロックSBSAと、自サブブロックSBSAに隣接する隣接サブブロックSBSAとを接続するか否かを選択するための選択手段である。さらに具体的には、マルチプレクサ10Aは、自サブブロックSBSAのプロセッシングユニットPUへの入力として、自サブブロックSBSAのシフトレジスタユニットSRU、及び隣接サブブロックSBSAのプロセッシングユニットPUの一方を選択するための選択手段である。
【0041】
同様に、図5を参照して、シフトレジスタユニットSRUは、SREマトリクスの各行毎にマルチプレクサ10Bを備えている。マルチプレクサ10Bは、自サブブロックSBSAと、自サブブロックSBSAに隣接する隣接サブブロックSBSAとを接続するか否かを選択するための選択手段である。さらに具体的には、マルチプレクサ10Bは、自サブブロックSBSAのシフトレジスタユニットSRUへの入力として、自サブブロックSBSAのプロセッシングユニットPU、及び隣接サブブロックSBSAのシフトレジスタユニットSRUの一方を選択するための選択手段である。
【0042】
処理すべき画像のサイズに応じて、つまりマクロブロックペア(16×32)、mode1(16×16)、mode2(16×8)、mode3(8×16)、mode4(8×8)の別に応じて、マルチプレクサ10A,10Bの設定が切り換えられる。また、実行する探索モードに応じて、つまりFSモード、DSモード、RBMモードの別に応じて、マルチプレクサ10A,10Bの設定が切り換えられる。詳細については後述する。
【0043】
図6に示すように、プロセッシングユニットPUによって演算される評価値は、4×4画素単位のSADである。フレーム画像及びフィールド画像の双方に対応するために、フレーム画像対応の4個の加算器12と、フィールド画像対応の4個の加算器13とが設けられている。加算器12は、連続する4行(合計16個)の演算素子PEのSADを演算して出力する。加算器13は、隔行(1行とばし)の4行(合計16個)の演算素子PEのSADを演算して出力する。
【0044】
ここで、y方向(縦方向)に1/2に間引かれた画素値がSWRAM2からアレイ5に入力されている場合には、Frame_4×4_SADは、y方向間引きなしのフィールド画像のSAD(又はy方向に1/2に間引かれたフレーム画像のSAD)に相当し、また、Field_4×4_SADは、y方向に1/2に間引かれたフィールド画像のSADに相当する。
【0045】
垂直方向DS(直線探索)を行う場合には、入力画像の回転に応じてField_4×4_SADが演算される。そのため、垂直方向DSにおいてもField_4×4_SADを利用した副探索が可能である。
【0046】
プロセッシングユニットPUは、8×8画素サイズのデータバッファを有している(図7の“register”)。このバッファは、参照画像SWの画素値及び符号化対象画像TBの画素値を、8×8サイズで保持可能である。初期ロードとして、参照画像SW用のバッファは、SWRAM2から8×8画素の画素値の供給を受け、これを1サイクルで保持することができる。また、プロセッシングユニットPUは、内部に保持している参照画像SWの画素値を、左右に1画素分シフトすることが可能である。このシフトによって溢れた画素値は、同一サブブロックSBSA内のシフトレジスタユニットSRU、又は横隣接サブブロックSBSA内のプロセッシングユニットPUへと供給することが可能である。評価値演算部を使用しない(つまり演算素子PEからの出力を破棄する)という設定も可能であり、この場合、プロセッシングユニットPUは、8×8サイズのシフトレジスタとして動作する。さらに、プロセッシングユニットPUは、下方向からの画素値の供給を受けて、内部に保持している画素値を縦方向に1画素分シフトすることができる。このシフトによって溢れた画素値は、上隣接サブブロックSBSA内のプロセッシングユニットPUへと供給することが可能である。
【0047】
<シフトレジスタユニットSRU>
シフトレジスタユニットSRUは、8×8画素の合計64画素分の画素値バッファであり、8×8個のシフトレジスタ素子SREを備えて構成されている。シフトレジスタ素子SRE単体の内部構成を図8に示す。初期ロードとして、シフトレジスタユニットSRUはSWRAM2から8×8画素の画素値の供給を受け、これを1サイクルで保持することができる。シフトレジスタユニットSRUは、内部に保持している画素値を左右に1画素分シフトすることができ、このシフトによって溢れた画素値は、同一サブブロックSBSA内のプロセッシングユニットPU、又は横隣接サブブロックSBSA内のシフトレジスタユニットSRUへと供給することが可能である。また、シフトレジスタユニットSRUは、下方向からの画素値の供給を受けて、保持している画素値を縦方向に1画素分シフトすることができる。このシフトによって溢れた画素値は、上隣接サブブロックSBSA内のシフトレジスタユニットSRUへと供給することが可能である。
【0048】
図4を参照して、記憶部(REG_VS)7は、FS(Full Search)動作時の縦方向探索を実現するためのデータバッファ用レジスタである。記憶部7の内部構成を図9に示す。記憶部7への外部からの入力としては、SWRAM2からの8×1画素の画素値入力が存在する。また、記憶部7からの外部への入力としては、各サブブロックSBSAのプロセッシングユニットPUへの8×1画素の画素値出力、及び各サブブロックSBSAのシフトレジスタユニットSRUへの8×1画素の画素値出力が存在する。記憶部7は、8×1画素単位の画素値バッファ15を16個(プロセッシングユニットPU用に8個、シフトレジスタユニットSRU用に8個)備えて構成されている。SWRAM2から入力された画素値データは、いずれかの画素値バッファ15に入力され、保持される。記憶部7は、画素値バッファ15に保持している全ての画素値データを、対応するサブブロックSBSA(プロセッシングユニットPU及びシフトレジスタユニットSRU)に同時に出力することができる。
【0049】
次に、本実施の形態に係る画像処理装置の動作について説明する。
【0050】
以下では、実現可能な各探索手法における全体動作について説明する。本実施の形態に係る画像処理装置で実行可能な探索手法には、(1)FS(Full Search)、(2)DS(Directional Search)、及び(3)RBM(Random Block Matching)が含まれる。また、RRSA構成では、探索手法だけでなく、探索を実行するブロックサイズによっても構成を変える。対応可能なブロックサイズには、16×32、16×16、16×8、8×16、及び8×8が含まれる。
【0051】
サブブロックSBSAの基本動作として、初期ロード、水平シフト動作、及び垂直シフト動作が定義されている。RRSA構成では、探索手法に応じてこれらの基本動作を適宜に組み合わせることによって、様々な探索手法を同一のアーキテクチャによって実現している。
【0052】
<初期ロード>
プロセッシングユニットPU、シフトレジスタユニットSRU、及び記憶部7が初期的なロードで保持する画素値についての詳細を図10,11に示す。図10は画像を回転させない場合について示しており、図11は画像を回転させる場合について示している。
【0053】
図10を参照して、プロセッシングユニットPUには、8×8の画像部分の画素値(図10のa〜h)が、1サイクルでロードされる。シフトレジスタユニットSRUには、プロセッシングユニットPUにロードされる画像部分に右隣接する8×8の画像部分の画素値(図10の“0”〜“7”)が、1サイクルでロードされる。記憶部7には、プロセッシングユニットPUにロードされる画像部分に下隣接する8×1の画像部分の画素値(図10の“u”)が、1サイクルでロードされる。また、記憶部7には、シフトレジスタユニットSRUにロードされる画像部分に下隣接する8×1の画像部分の画素値(図10の“v”)が、1サイクルロードされる。
【0054】
図9を参照して、初期ロードで記憶部7内の16個全ての画素値バッファ15に画素値を同時にロードすることは不可能であるため、各画素値バッファ15毎に順に画素値をロードさせていく必要がある。
【0055】
図11を参照して、プロセッシングユニットPUには、8×8の画像部分の画素値(図11のa〜h)が、画像回転処理部4(図1参照)によって反時計回りに90°回転されつつ、1サイクルでロードされる。また、シフトレジスタユニットSRUには、プロセッシングユニットPUにロードされる画像部分に下隣接する8×8の画像部分の画素値(図10の“0”〜“7”)が、画像回転処理部4によって反時計回りに90°回転されつつ、1サイクルでロードされる。
【0056】
<左シフト動作>
左シフト動作は、現在の保持状態から左方向に画素値をシフトする動作であり、直線連続点探索の基本となる動作である。探索としては、左から右に向かって連続点探索を行う動作となる。左シフト動作を図12に示す。シフトレジスタユニットSRUの左端列8画素分の画素値(図12の“0”)が、プロセッシングユニットPUに供給されて、プロセッシングユニットPUの右端列8画素に保持される。プロセッシングユニットPUから溢れた画素値(図12の“a”)は、シフトレジスタユニットSRUの右端列8画素に保持させることができる。
【0057】
<右シフト動作>
右シフト動作は、現在の保持状態から右方向に画素値をシフトする動作であり、FS動作としてスネークサーチ(図15参照)を実現するために必要となる動作である。探索としては、右から左に向かって連続点探索を行う動作となる。右シフト動作を図13に示す。プロセッシングユニットPUの右端列8画素分の画素値(図13の“h”)が、シフトレジスタユニットSRUに供給されて、シフトレジスタユニットSRUの左端列8画素に保持される。シフトレジスタユニットSRUから溢れた画素値(図13の“7”)は、プロセッシングユニットPUの左端列8画素に保持させることができる。
【0058】
<上シフト動作>
上シフト動作は、現在の保持状態から上方向に画素値をシフトする動作であり、FS動作としてスネークサーチ(図15参照)を実現するために必要となる動作である。探索としては、上から下に向かって1画素分だけシフトする動作となる。上シフト動作を図14に示す。記憶部7(又は下隣接サブブロックSBSA内のプロセッシングユニットPU)に保持されている8×1画素の画素値(図14の“u”)が、プロセッシングユニットPUに供給されて、プロセッシングユニットPUの下端行8画素に保持される。プロセッシングユニットPUから溢れた上端行8画素分の画素値は、上隣接サブブロックSBSA内のプロセッシングユニットPUの下端行8画素に保持されるか、破棄される。
【0059】
また、記憶部7(又は下隣接サブブロックSBSA内のシフトレジスタユニットSRU)に保持されている8×1画素の画素値(図14の“v”)が、シフトレジスタユニットSRUに供給されて、シフトレジスタユニットSRUの下端行8画素に保持される。シフトレジスタユニットSRUから溢れた上端行8画素分の画素値は、上隣接サブブロックSBSA内のシフトレジスタユニットSRUの下端行8画素に保持されるか、破棄される。
【0060】
<FS(Full Search)>
FSは一般的な探索手法であり、探索範囲として指定した矩形領域を網羅的に探索する手法である。RRSA構成では、FSをスネークサーチと呼ばれる方法で実現する。スネークサーチにおける矩形領域内の探索順を図15に示す。また、FS時におけるサブブロックSBSA内の内部結線状態を図16〜20に示す。図16はマクロブロックペア(16×32)に対応し、図17はmode1(16×16)に対応し、図18はmode2(16×8)に対応し、図19はmode3(8×16)に対応し、図20はmode4(8×8)に対応する。
【0061】
ブロックサイズがマクロブロックペア、mode1、mode2である場合は、図16〜18に示すように、横隣接サブブロックSBSA間で接続パスが形成され、一方、mode3、mode4である場合は、図19,20に示すように、横隣接サブブロックSBSA間で接続パスは形成されない。
【0062】
下方向からの入力もブロックサイズに応じて決定され、ブロックサイズがマクロブロックペア、mode1、mode3である場合は、図16,17,19に示すように、縦隣接サブブロックSBSA間で接続パスが形成され、一方、mode2、mode4である場合は、図18,20に示すように、記憶部7との間で接続パスが形成される。但し、図16,17,19においても、一番下に位置するサブブロックSBSAは、記憶部7との間で接続パスを形成している。
【0063】
図15に示すように、スネークサーチでは、左シフト→上シフト→右シフト→上シフト→左シフト→・・・の順で動作が繰り返される。プロセッシングユニットPU及びシフトレジスタユニットSRUが保持している画素値を最大限利用し、水平方向の最大探索範囲を、mode3、mode4の場合は±4以下とし、マクロブロックペア、mode1、mode2の場合は±8以下とすれば、FSにおいてプロセッシングユニットPU及びシフトレジスタユニットSRUの双方ともに中間ロードは必要ない。但し、ストールを生じさせずにFSを完了させるためには、上シフトを実行してから次の上シフトを実行するまでの間に、記憶部7に次の行の画素値をロードしておく必要がある。
【0064】
また、本実施の形態に係る画像処理装置では、横隣接サブブロックSBSA間での接続を利用して、2個のプロセッシングユニットPUと2個のシフトレジスタユニットSRUとを水平方向で直列に接続することが可能である。従って、mode3又はmode4で要求並列度が256以下(つまり使用するサブブロックSBSAが4個以下)である場合には、一方のプロセッシングユニットPUをシフトレジスタとして使用することで、1個のプロセッシングユニットPUと3個のシフトレジスタユニットSRUとの直列接続として使用することができる。この場合は、中間ロードなしでの最大探索範囲を±12まで拡大することが可能となる。
【0065】
<DS(Directional Search)>
DSは、水平又は垂直に直線探索を行う探索手法である。DS時におけるサブブロックSBSA内の内部結線状態を図21〜25に示す。図21はマクロブロックペア(16×32)に対応し、図22はmode1(16×16)に対応し、図23はmode2(16×8)に対応し、図24はmode3(8×16)に対応し、図25はmode4(8×8)に対応する。
【0066】
垂直方向探索である場合には、SWRAM2からデータパスに入力される画素値は、画像回転処理部4(図1参照)によって反時計回りに90°回転される。アレイ5のサイズが16×32画素であり、回転後のマクロブロックペアをアレイ5に保持することができないため、マクロブロックペアに関しては垂直方向探索は不可能である。但し、アレイ5の水平サイズを32画素以上に拡大することで、マクロブロックペアに関する垂直方向探索も可能となる。
【0067】
DSの探索は、左シフト(図12)のみを用いて行う。ブロックサイズがマクロブロックペア、mode1、mode2である場合は、図21〜23に示すように、横隣接サブブロックSBSA間で接続パスが形成され、一方、mode3、mode4である場合は、図24,25に示すように、横隣接サブブロックSBSA間で接続パスは形成されない。
【0068】
シフトレジスタユニットSRUに関しては、8点分の探索を行うごとに1回の中間ロードを行う必要がある。中間ロードの際には、SWRAM2から8×8画素分の画素値が1サイクルでシフトレジスタユニットSRUに供給される。
【0069】
<RBM(Random Block Matching>
RBMは、単一点のみを探索する探索手法である。単一点の探索に関しては特にシフト動作を行う必要はなく、プロセッシングユニットPUに初期ロードを行うだけで、その点の評価値が自動的に求まる。
【0070】
FS、DS、RBMにおいて、ブロックサイズがマクロブロックペアである場合は、8個のサブブロックSBSAが接続されて、16×32の1個のブロックが構成されている。この場合、図26の(A)に示すように、アレイ5内には1個のブロックのみを構成可能である。
【0071】
同様に、mode1の場合は、4個(横2個×縦2個)のサブブロックSBSAが接続されて、16×16のブロックが構成されている。この場合、図26の(B)に示すように、アレイ5内には最大2個のブロックを構成可能である。2個のブロックの各々は、他のブロックとは独立して動作可能である。
【0072】
同様に、mode2の場合は、横2個のサブブロックSBSAが接続されて、16×8のブロックが構成されている。この場合、図26の(C)に示すように、アレイ5内には最大4個のブロックを構成可能である。4個のブロックの各々は、他のブロックとは独立して動作可能である。
【0073】
同様に、mode3の場合は、縦2個のサブブロックSBSAが接続されて、8×16のブロックが構成されている。この場合、図26の(D)に示すように、アレイ5内には最大4個のブロックを構成可能である。4個のブロックの各々は、他のブロックとは独立して動作可能である。
【0074】
同様に、mode4の場合は、1個のサブブロックSBSAによって、8×8のブロックが構成されている。この場合、図27の(E)に示すように、アレイ5内には最大8個のブロック(サブブロックに等しい)を構成可能である。8個のブロックの各々は、他のブロックとは独立して動作可能である。
【0075】
また、図27の(F),(G)に示すように、2種類のmodeを同時に実行することも可能である。さらに、図27の(H)に示すように、3種類のmodeを同時に実行することも可能である。このような場合であっても、複数のブロックの各々は、他のブロックとは独立して動作可能である。また、複数種類のブロックサイズの同時使用と同様に、複数種類の探索手法を同時に実行することも可能である。例えば、図26の(B)において、上側の16×16のブロックではFS動作を行い、これと同時に、下側の16×16のブロックではDS動作を行うことが可能である。
【0076】
<まとめ>
このように本実施の形態に係る画像処理装置によれば、アレイ5は複数のサブブロックSBSA0〜SBSA7に分割されている。そして、処理すべき画像のサイズに応じてマルチプレクサ10A,10B,11A,11Bの設定を切り換えることによって、アレイ5内に一又は複数のサブブロックSBSAを含む一又は複数のブロックが設定される。そのため、処理対象であるマクロブロックペアが細分化されてブロックの個数が増えたとしても、アレイ5内に設定された複数のブロックを同時に処理できるため、1マクロブロックペアの探索にかかるサイクル数が増大することを回避できる。また、複数のブロックの各々は他のブロックとは独立に動作可能であるため、1マクロブロックペア内の複数のブロックを並列に処理することができる。その結果、1マクロブロックペアの探索にかかるサイクル数が増大することを回避できる。
【0077】
数値計算によって本発明の効果を検証した結果を図28〜31に示す。サイクル数及びSRAMからのデータ転送量に関して、本発明に係るRRSA構成を、従来のSIMD構成及びRCSA構成と比較している。
【0078】
各mode毎に、サイクル数及びデータ転送量ともにSIMD構成での値を100%として正規化を行っている。図28は、FS動作を探索範囲±4×±4(計91点)として行った場合の見積もりである。図29は、FS動作を探索範囲±8×±8(計289点)として行った場合の見積もりである。図30は、DS動作を探索範囲連続33点として行った場合の見積もりである。図31は、RBM動作を探索範囲ランダム16点として行った場合の見積もりである。図28〜31を参照すると、全ての場合において、本発明に係るRRSA構成は、従来のSIMD構成及びRCSA構成と比べて、サイクル数及びデータ転送量を削減できていることが分かる。
【図面の簡単な説明】
【0079】
【図1】本発明に係る画像処理装置の全体構成を示す図である。
【図2】SWRAMから読み出し可能な画像ブロックを示す図である。
【図3】画像を回転した場合にアレイに入力される画素の配置を示す図である。
【図4】アレイの全体構成を示す図である。
【図5】サブブロックの内部構成を示す図である。
【図6】プロセッシングユニットにおける評価値演算部分の内部構成を示す図である。
【図7】演算素子単体の内部構成を示す図である。
【図8】シフトレジスタ素子単体の内部構成を示す図である。
【図9】記憶部の内部構成を示す図である。
【図10】プロセッシングユニット、シフトレジスタユニット、及び記憶部が初期ロードで保持する画素値についての詳細を示す図である。
【図11】プロセッシングユニット、シフトレジスタユニット、及び記憶部が初期ロードで保持する画素値についての詳細を示す図である。
【図12】左シフト動作を示す図である。
【図13】右シフト動作を示す図である。
【図14】上シフト動作を示す図である。
【図15】スネークサーチにおける矩形領域内の探索順を示す図である。
【図16】FS時におけるサブブロック内の内部結線状態を示す図である。
【図17】FS時におけるサブブロック内の内部結線状態を示す図である。
【図18】FS時におけるサブブロック内の内部結線状態を示す図である。
【図19】FS時におけるサブブロック内の内部結線状態を示す図である。
【図20】FS時におけるサブブロック内の内部結線状態を示す図である。
【図21】DS時におけるサブブロック内の内部結線状態を示す図である。
【図22】DS時におけるサブブロック内の内部結線状態を示す図である。
【図23】DS時におけるサブブロック内の内部結線状態を示す図である。
【図24】DS時におけるサブブロック内の内部結線状態を示す図である。
【図25】DS時におけるサブブロック内の内部結線状態を示す図である。
【図26】アレイ内におけるブロックの設定を示す図である。
【図27】アレイ内におけるブロックの設定を示す図である。
【図28】本発明の効果を検証した結果を示す図である。
【図29】本発明の効果を検証した結果を示す図である。
【図30】本発明の効果を検証した結果を示す図である。
【図31】本発明の効果を検証した結果を示す図である。
【図32】SIMD構成の例を示す図である。
【図33】RCSA構成の例を示す図である。
【図34】演算素子の内部構成を示す図である。
【図35】シフトレジスタの内部構成を示す図である。
【符号の説明】
【0080】
1 IMEコア
2 SWRAM
3 TBバッファ
4 画像回転処理部
5 アレイ
7 記憶部
10A,10B,11A,11B マルチプレクサ

【特許請求の範囲】
【請求項1】
画像の画素値に基づいて評価値を演算するための複数の演算素子が行列状に配設されたアレイを備え、
前記アレイは、それぞれが所定数の前記演算素子を含む複数のサブブロックに分割されており、
前記複数のサブブロックの各々は、自サブブロックと、自サブブロックに隣接する隣接サブブロックとを接続するか否かを選択可能な選択手段を有しており、
処理すべき画像のサイズに応じて前記選択手段の設定を切り換えることによって、前記アレイ内に、一又は複数のサブブロックを含む一又は複数のブロックを設定可能である、画像処理装置。
【請求項2】
前記アレイ内に複数のブロックが設定されている場合、前記複数のブロックの各々は他のブロックとは独立に動作可能である、請求項1に記載の画像処理装置。
【請求項3】
前記サブブロックは、
複数の前記演算素子を有する第1ユニットと、
前記第1ユニット内の前記演算素子によって演算される又は演算された画素値を保持可能な複数のレジスタを有する第2ユニットと
を有しており、
前記選択手段は、
自サブブロックの第1ユニットへの入力として、自サブブロックの第2ユニット及び隣接サブブロックの第1ユニットの一方を選択する選択手段と、
自サブブロックの第2ユニットへの入力として、自サブブロックの第1ユニット及び隣接サブブロックの第2ユニットの一方を選択する選択手段と
を含む、請求項1又は2に記載の画像処理装置。
【請求項4】
複数の前記サブブロックが接続されることにより、一の前記ブロック内に複数の第1ユニットと複数の第2ユニットとが含まれる場合、前記複数の第1ユニットのうちの一部の第1ユニットを、他の第1ユニット内の演算素子によって演算される又は演算された画素値を保持するためのレジスタとして使用可能である、請求項3に記載の画像処理装置。
【請求項5】
前記アレイにロードされている画像部分に対して所定方向に隣接する箇所の画像部分の画素値を保持可能な記憶部をさらに備え、
画像の評価位置を前記所定方向にシフトする際、前記記憶部に保持されている画素値が前記記憶部から前記アレイに入力される、請求項1〜4のいずれか一つに記載の画像処理装置。
【請求項6】
前記選択手段は、
自サブブロックへの入力として、隣接サブブロック及び前記記憶部の一方を選択する選択手段
を含む、請求項5に記載の画像処理装置。
【請求項7】
前記サブブロックは、自サブブロック内の複数の前記演算素子によって演算された評価値を加算する加算器群を有しており、
前記加算器群は、
連続する行の評価値を加算するための、フレーム画像対応の加算器群と、
隔行の評価値を加算するための、フィールド画像対応の加算器群と
を含む、請求項1〜6のいずれか一つに記載の画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate


【公開番号】特開2009−123074(P2009−123074A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2007−298142(P2007−298142)
【出願日】平成19年11月16日(2007.11.16)
【出願人】(591128453)株式会社メガチップス (322)
【出願人】(504150450)国立大学法人神戸大学 (421)
【Fターム(参考)】