(57)【特許請求の範囲】
【請求項１】
画像の画素値に基づいて評価値を演算するための複数の演算素子が行列状に配設されたアレイを備え、
前記アレイは、それぞれが所定数の前記演算素子を含む複数のサブブロックに分割されており、
前記複数のサブブロックの各々は、自サブブロックと、自サブブロックに隣接する隣接サブブロックとを接続するか否かを選択可能な選択手段を有しており、
処理すべき画像のサイズに応じて前記選択手段の設定を切り換えることによって、前記アレイ内に、一又は複数のサブブロックを含む一又は複数のブロックを設定可能であり、
前記サブブロックは、
複数の前記演算素子を有する第１ユニットと、
前記第１ユニット内の前記演算素子によって演算される又は演算された画素値を保持可能な複数のレジスタを有する第２ユニットと
を有しており、
前記選択手段は、
自サブブロックの第１ユニットへの入力として、自サブブロックの第２ユニット及び隣接サブブロックの第１ユニットの一方を選択する選択手段と、
自サブブロックの第２ユニットへの入力として、自サブブロックの第１ユニット及び隣接サブブロックの第２ユニットの一方を選択する選択手段と
を含む、画像処理装置。
【請求項２】
前記アレイ内に複数のブロックが設定されている場合、前記複数のブロックの各々は他のブロックとは独立に動作可能である、請求項１に記載の画像処理装置。
【請求項３】
複数の前記サブブロックが接続されることにより、一の前記ブロック内に複数の第１ユニットと複数の第２ユニットとが含まれる場合、前記複数の第１ユニットのうちの一部の第１ユニットを、他の第１ユニット内の演算素子によって演算される又は演算された画素値を保持するためのレジスタとして使用可能である、請求項１又は２に記載の画像処理装置。
【請求項４】
前記アレイにロードされている画像部分に対して所定方向に隣接する箇所の画像部分の画素値を保持可能な記憶部をさらに備え、
画像の評価位置を前記所定方向にシフトする際、前記記憶部に保持されている画素値が前記記憶部から前記アレイに入力される、請求項１〜３のいずれか一つに記載の画像処理装置。
【請求項５】
前記選択手段は、
自サブブロックへの入力として、隣接サブブロック及び前記記憶部の一方を選択する選択手段
を含む、請求項４に記載の画像処理装置。
【請求項６】
前記サブブロックは、自サブブロック内の複数の前記演算素子によって演算された評価値を加算する加算器群を有しており、
前記加算器群は、
連続する行の評価値を加算するための、フレーム画像対応の加算器群と、
隔行の評価値を加算するための、フィールド画像対応の加算器群と
を含む、請求項１〜５のいずれか一つに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の動き探索を実行するための画像処理装置に関する。
【背景技術】
【０００２】
背景技術として、画素間の評価値演算器のみを持つＳＩＭＤ（Single Instruction Multiple Data）構成と、画素バッファを持ち画素再利用性を高めたシストリックアレイ構成であるＲＣＳＡ（Ring Connected Systolic Array）構成とについて説明する。評価値にはＳＡＤ（Sum of Absolute Difference）を使用するものと想定して評価値演算部を構成しているが、その他の評価値を用いることも可能である。また、参照用画像データ（ＳＷ：Search Window）を格納したバッファＳＲＡＭ（以下「ＳＷＲＡＭ」と称す）と、符号化対象の画像データ（ＴＢ：Template Block）を格納したレジスタファイル（以下「ＴＢバッファ」と称す）とを外部に有するものと想定する。これらのＳＷＲＡＭ及びＴＢバッファは、１サイクルに最大６４（＝８×８）個の画素値の同時出力が可能であると想定する。
【０００３】
ＳＩＭＤ構成の例を図３２に示す。ＳＩＭＤ構成は、ＳＷＲＡＭ及びＴＢバッファから受け取った画素値から評価値を求めるユニットを複数持つのみの構成である。ＳＩＭＤ構成には画素値を保持しておくためのバッファが存在しないため、画素値の再利用が不可能である。後述の本発明に係るＲＲＳＡ（Reconfigurable Ring Connected Systlic Array）構成の例では、１画素の評価値の演算モジュールが５１２並列であるため、ＳＩＭＤ構成も５１２並列と想定して見積もりを行う。即ち、図３２中のＸ，Ｙはそれぞれ１６，３２となる。ＳＷＲＡＭ及びＴＢバッファからの画素出力は最大８×８画素であるため、例えば１６×１６の１点の探索を行うためには、ＲＡＭ読み出し待ちで４サイクルが必要となる。
【０００４】
ＲＣＳＡ構成の例を図３３に示す。ＲＣＳＡ構成は、下記非特許文献１に開示されている。ＲＣＳＡ構成は、画素間の評価値演算ユニットに加え、画素値のバッファを持ち、それらをリング状に接続した構成である。演算素子ＰＥ（Processor Element）及びシフトレジスタＳＲ（Shift Register）の内部構成をそれぞれ図３４及び図３５に示す。ＳＩＭＤ構成と同様に、ＲＣＳＡ構成も５１２並列（ＰＥ５１２並列、ＳＲ５１２並列）として見積もりを行う。即ち、図３３中のＸ，Ｙはそれぞれ１６，３２となる。例えば、１６×１６の８点の連続点探索を行う場合、ＰＥ−ａｒｒａｙ側にＲＡＭ読み出し４サイクル、ＳＲ−ａｒｒａｙ側にＲＡＭ読み出し４サイクル、評価値演算に８サイクルとなり、その結果、４＋４＋８−１＝１５サイクルが必要となる。なお、ここで最後に１サイクルを減じているのは、評価値演算は実際には「初期ロード＋シフト回数」サイクルで行われるため、ＲＡＭの読み出しサイクルと評価値演算１点分とが重複するためである。
【０００５】
【非特許文献１】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.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＳＩＭＤ構成においては、膨大な画素値転送量が最大の問題となる。ＳＩＭＤ構成では画素値の再利用が不可能であるため、連続点探索を行う際には、演算に必要な全ての画素値をＳＷＲＡＭ及びＴＢバッファからその都度読み出す必要がある。その結果、膨大な画素値転送帯域が必要となる。また、ＲＡＭの読み出し画素数に制限がある場合、実際に演算を行うサイクルに加え、画素値の読み出しにかかるサイクルが膨大なものとなる。この画素値転送に関する問題が、ＳＩＭＤ構成の問題点となる。
【０００７】
ＲＣＳＡ構成は、連続点探索を行う際に再利用可能な画素を保持しておくことで、ＳＩＭＤ構成に比べて、ＳＷＲＡＭ及びＴＢバッファからの画素値転送量を大幅に削減している。但し、Ｈ．２６４特有のブロック分割に対応していないことが、ＲＣＳＡ構成の問題点として挙げられる。即ち、並列度が５１２であるにも拘わらず、全ての演算器が同期して動作することしかできないため、ｍｏｄｅ１（１６×１６）、ｍｏｄｅ２（１６×８）、ｍｏｄｅ３（８×１６）、及びｍｏｄｅ４（８×８）での探索を行う際に、５１２個全ての演算器が、１６×１６、１６×８、８×１６、又は８×８サイズのブロック１個に占有されてしまう。そのため、処理対象であるマクロブロックペア（ＭＢ−ｐａｉｒ）が細分化されてブロックの個数が増えるにつれ、１マクロブロックペアの探索にかかるサイクル数が大きくなってしまう。この、Ｈ．２６４のブロック分割に伴うサイクル数の増加が、ＲＣＳＡ構成の問題点となる。
【０００８】
本発明は、ＳＩＭＤ構成及びＲＣＳＡ構成における上述の問題点を解決するために成されたものであり、ＳＩＭＤ構成と比べて画素値転送量を削減でき、しかも、ＲＣＳＡ構成の問題（Ｈ．２６４のブロック分割に起因するサイクル数の増加）も回避可能な、画像処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
第１の発明に係る画像処理装置は、画像の画素値に基づいて評価値を演算するための複数の演算素子が行列状に配設されたアレイを備え、前記アレイは、それぞれが所定数の前記演算素子を含む複数のサブブロックに分割されており、前記複数のサブブロックの各々は、自サブブロックと、自サブブロックに隣接する隣接サブブロックとを接続するか否かを選択可能な選択手段を有しており、処理すべき画像のサイズに応じて前記選択手段の設定を切り換えることによって、前記アレイ内に、一又は複数のサブブロックを含む一又は複数のブロックを設定可能であり、前記サブブロックは、複数の前記演算素子を有する第１ユニットと、前記第１ユニット内の前記演算素子によって演算される又は演算された画素値を保持可能な複数のレジスタを有する第２ユニットとを有しており、前記選択手段は、自サブブロックの第１ユニットへの入力として、自サブブロックの第２ユニット及び隣接サブブロックの第１ユニットの一方を選択する選択手段と、自サブブロックの第２ユニットへの入力として、自サブブロックの第１ユニット及び隣接サブブロックの第２ユニットの一方を選択する選択手段とを含むことを特徴とする。
【００１０】
第２の発明に係る画像処理装置は、第１の発明に係る画像処理装置において特に、前記アレイ内に複数のブロックが設定されている場合、前記複数のブロックの各々は他のブロックとは独立に動作可能であることを特徴とする。
【００１２】
第３の発明に係る画像処理装置は、第１又は第２の発明に係る画像処理装置において特に、複数の前記サブブロックが接続されることにより、一の前記ブロック内に複数の第１ユニットと複数の第２ユニットとが含まれる場合、前記複数の第１ユニットのうちの一部の第１ユニットを、他の第１ユニット内の演算素子によって演算される又は演算された画素値を保持するためのレジスタとして使用可能であることを特徴とする。
【００１３】
第４の発明に係る画像処理装置は、第１〜第３のいずれか一つの発明に係る画像処理装置において特に、前記アレイにロードされている画像部分に対して所定方向に隣接する箇所の画像部分の画素値を保持可能な記憶部をさらに備え、画像の評価位置を前記所定方向にシフトする際、前記記憶部に保持されている画素値が前記記憶部から前記アレイに入力されることを特徴とする。
【００１４】
第５の発明に係る画像処理装置は、第４の発明に係る画像処理装置において特に、前記選択手段は、自サブブロックへの入力として、隣接サブブロック及び前記記憶部の一方を選択する選択手段を含むことを特徴とする。
【００１５】
第６の発明に係る画像処理装置は、第１〜第５のいずれか一つの発明に係る画像処理装置において特に、前記サブブロックは、自サブブロック内の複数の前記演算素子によって演算された評価値を加算する加算器群を有しており、前記加算器群は、連続する行の評価値を加算するための、フレーム画像対応の加算器群と、隔行の評価値を加算するための、フィールド画像対応の加算器群とを含むことを特徴とする。
【発明の効果】
【００１６】
第１〜第６の発明に係る画像処理装置によれば、アレイは複数のサブブロックに分割されている。そして、処理すべき画像のサイズに応じて選択手段の設定を切り換えることによって、アレイ内に一又は複数のサブブロックを含む一又は複数のブロックが設定される。そのため、処理対象であるマクロブロックペアが細分化されてブロックの個数が増えたとしても、アレイ内に設定された複数のブロックを同時に処理できるため、１マクロブロックペアの探索にかかるサイクル数が増大することを回避できる。
また、サブブロックは、第１ユニット内の演算素子によって演算される又は演算された画素値を保持可能な複数のレジスタを有する第２ユニットを有している。従って、第２ユニットに保持されている画素値は再利用可能であるため、連続点探索を行う際に、バッファからサブブロックへの画素値の転送量を削減することができる。また、選択手段の設定によって、自サブブロックと隣接サブブロックとを接続しない場合には、自サブブロック内でリング状パスを形成することができる。一方、自サブブロックと隣接サブブロックとを接続する場合には、自サブブロックと隣接サブブロックとの間で、第１ユニット同士及び第２ユニット同士を連結することができる。
【００１７】
特に第２の発明に係る画像処理装置によれば、複数のブロックの各々は他のブロックとは独立に動作可能であるため、１マクロブロックペア内の複数のブロックを並列に処理することができる。その結果、１マクロブロックペアの探索にかかるサイクル数が増大することを回避できる。
【００１９】
特に第３の発明に係る画像処理装置によれば、複数の第１ユニットのうちの一部を第２ユニットと同等に扱うことにより、中間ロードが不要な最大探索範囲を拡大することができる。
【００２０】
特に第４の発明に係る画像処理装置によれば、アレイにロードされている画像部分に隣接する箇所の画像部分の画素値を記憶部に保持しておくことにより、ＦＳ（Full Search）としてスネークサーチを実行することが可能となる。
【００２１】
特に第５の発明に係る画像処理装置によれば、選択手段の設定によって、自サブブロックと隣接サブブロックとを接続しない場合には、自サブブロックと記憶部とを接続するパスを形成することができる。一方、自サブブロックと隣接サブブロックとを接続する場合には、自サブブロックと隣接サブブロックとの間で、第１ユニット同士及び第２ユニット同士を連結することができる。
【００２２】
特に第６の発明に係る画像処理装置によれば、フレーム画像及びフィールド画像の双方に対応することが可能となり、プログレッシブ方式及びインタレース方式の双方を扱うことが可能となる。また、フレーム画像に関する評価値演算と、フィールド画像に関する評価値演算とを同時に実行することが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００２４】
本発明に係る画像処理装置の全体構成を図１に示す。本発明に係る画像処理装置は、Ｈ．２６４対応のＩＭＥコア１（ＩＭＥ：Integer Motion Estimation）として構成されている。ＩＭＥコア１は、参照画像用のバッファであるＳＷＲＡＭ２（SWRAM：Search Window RAM）と、符号化対象画像用のバッファであるＴＢバッファ３（ＴＢ：Template Block）と、画像回転処理部（ｃｒｏｓｓ  ｐａｔｈ）４と、ＲＲＳＡ構成のアレイ５と、コントローラ６とを備えて構成されている。これらのモジュール群をＭＥコア内に搭載すれば、本発明に係るＲＲＳＡは支障なく動作する。
【００２５】
ＩＭＥコア１では、横８画素×縦８画素（以下「８×８」と表記する）、８×１、１×８サイズの画素ブロックを１サイクルで読み出すことが可能な２ｐｏｒｔのＳＲＡＭが、ＳＷＲＡＭ２として搭載されている。また、ＳＷＲＡＭ２は、縦方向及び横方向への１／２画素間引き出力が可能である。ＳＷＲＡＭ２から読み出し可能な画像ブロックを図２に示す。間引きなしの８×８画素ブロック、横方向に１／２画素間引きの１６×８画素ブロック、縦方向に１／２画素間引きの８×１６ブロック、縦横両方向に１／２画素間引きの１６×１６ブロックを、いずれも１サイクルで読み出すことが可能である。
【００２６】
ＴＢバッファ３は、符号化対象であるマクロブロックペアの画像データを格納可能な、５１２画素分のレジスタファイル（若しくはＳＲＡＭ）である。ＴＢバッファ３は、保持している画像データから、８×８、８×１、１×８サイズの画素ブロックを１サイクルで出力することができる。
【００２７】
画像回転処理部４は、後述する縦方向ＤＳ（Directional Search）を実現するために、ＳＷＲＡＭ２から出力された画像を回転してデータパスへ受け渡すためのモジュールである。画像を回転した場合にアレイ５に入力される画素の配置を図３に示す。元の画像が反時計方向に９０°回転されていることが分かる。
【００２８】
コントローラ６は、アレイ５を含むＩＭＥコア１内の各モジュールを制御するためのモジュールである。コントローラ６からの制御信号に基づいて、アレイ５は様々な探索動作を実行する。
【００２９】
以下、ＲＲＳＡ構成のアレイ５について詳細に説明する。アレイ５の全体構成を図４に示す。アレイ５は複数個（図４に示した例では８個）のサブブロックシストリックアレイ（以下単に「サブブロック」と称す）ＳＢＳＡ０〜ＳＢＳＡ７に分割されている。サブブロックＳＢＳＡ０〜ＳＢＳＡ７は、それぞれプロセッシングユニットＰＵ０〜ＰＵ７とシフトレジスタユニットＳＲＵ０〜ＳＲＵ７とを備えて構成されている。以下、サブブロックＳＢＳＡ０〜ＳＢＳＡ７を総称する場合は「サブブロックＳＢＳＡ」と、プロセッシングユニットＰＵ０〜ＰＵ７を総称する場合は「プロセッシングユニットＰＵ」と、シフトレジスタユニットＳＲＵ０〜ＳＲＵ７を総称する場合は「シフトレジスタユニットＳＲＵ」と、それぞれ称する。プロセッシングユニットＰＵは、複数の演算素子を有するユニットである。シフトレジスタユニットＳＲＵは、プロセッシングユニットＰＵ内の演算素子によって演算される又は演算された画素値を保持するための複数のシフトレジスタ素子を有するユニットである。
【００３０】
サブブロックＳＢＳＡは、８×８単位の評価値を効率的に演算するためのシストリックアレイモジュールである。評価値にはＳＡＤ（Sum of Absolute Difference）を使用するものと想定して評価値演算部を構成しているが、その他の評価値を用いることも可能である。サブブロックＳＢＳＡは、８×８並列の１個のプロセッシングユニットＰＵと、８×８並列の１個のシフトレジスタユニットＳＲＵとを備えて構成されている。
【００３１】
サブブロックＳＢＳＡには、自サブブロックの外部からの入力として、（Ｉ１）ＳＷＲＡＭ２からのプロセッシングユニットＰＵへの入力、（Ｉ２）ＳＷＲＡＭ２からのシフトレジスタユニットＳＲＵへの入力、（Ｉ３）横隣接サブブロックＳＢＳＡのプロセッシングユニットＰＵからのプロセッシングユニットＰＵへの入力、（Ｉ４）横隣接サブブロックＳＢＳＡのシフトレジスタユニットＳＲＵからのシフトレジスタユニットＳＲＵへの入力、（Ｉ５）下隣接サブブロックＳＢＳＡのプロセッシングユニットＰＵからのプロセッシングユニットＰＵへの入力、（Ｉ６）下隣接サブブロックＳＢＳＡのシフトレジスタユニットＳＲＵからのシフトレジスタユニットＳＲＵへの入力、（Ｉ７）記憶部７からのプロセッシングユニットＰＵへの入力、及び（Ｉ８）記憶部７からのシフトレジスタユニットＳＲＵへの入力の、合計８個の入力が存在する。
【００３２】
それぞれの入力画素サイズは、（Ｉ１）については８×８画素、（Ｉ２）については８×８画素、（Ｉ３）については１×８画素、（Ｉ４）については１×８画素、（Ｉ５）については８×１画素、（Ｉ６）については８×１画素、（Ｉ７）については８×１画素、（Ｉ８）については８×１画素である。
【００３３】
また、サブブロックＳＢＳＡには、内部接続として、プロセッシングユニットＰＵとシフトレジスタユニットＳＲＵとの間に１×８画素の双方向入出力パスが存在する。このパスはリング状になっており、図４に示した例では、シフトレジスタユニットＳＲＵの右出力はプロセッシングユニットＰＵの左入力に、シフトレジスタユニットＳＲＵの左出力はプロセッシングユニットＰＵの右入力に、プロセッシングユニットＰＵの右出力はシフトレジスタユニットＳＲＵの左入力に、プロセッシングユニットＰＵの左出力はシフトレジスタユニットＳＲＵの右入力に、それぞれ接続されている。
【００３４】
また、サブブロックＳＢＳＡは、サブブロック外部への画素出力として、（Ｏ１）プロセッシングユニットＰＵから横隣接サブブロックＳＢＳＡのプロセッシングユニットＰＵへの出力、（Ｏ２）シフトレジスタユニットＳＲＵから横隣接サブブロックＳＢＳＡのシフトレジスタユニットＳＲＵへの出力、（Ｏ３）プロセッシングユニットＰＵから上隣接サブブロックＳＢＳＡのプロセッシングユニットＰＵへの出力、及び（Ｏ４）シフトレジスタユニットＳＲＵから上隣接サブブロックＳＢＳＡのシフトレジスタユニットＳＲＵへの出力の、合計４個の出力が存在する。
【００３５】
それぞれの出力画素サイズは、（Ｏ１）については１×８画素、（Ｏ２）については１×８画素、（Ｏ３）については８×１画素、（Ｏ４）については８×１画素である。
【００３６】
また、サブブロックＳＢＳＡは、評価値（この例ではＳＡＤ）の演算結果をアレイ５の外部へ出力する。一つのサブブロックＳＢＳＡから出力されるＳＡＤは、後述の図６に示すように、フレーム画像対応のFrame_4×4_SADが４本、フィールド画像対応のField_4×4_SADが４本である。８個のサブブロックＳＢＳＡ０〜ＳＢＳＡ７からのこれらの演算結果の足しこみ方によって、例えば、１６×３２のマクロブロックペアでの探索中に同じ探索点でのｍｏｄｅ１〜ｍｏｄｅ４（１６×１６、１６×８、８×１６、８×８）のＳＡＤを演算するといった副探索手法が実現可能となる。
【００３７】
横隣接サブブロックＳＢＳＡからの外部入力と、プロセッシングユニットＰＵ−シフトレジスタユニットＳＲＵ間の内部接続とは、動作状態によって選択的に切り換えられる。同様に、下隣接サブブロックＳＢＳＡからの外部入力と、記憶部７からの外部入力とは、動作状態によって選択的に切り換えられる。
【００３８】
サブブロックＳＢＳＡの内部構成を図５に示す。また、プロセッシングユニットＰＵにおける評価値演算部分（演算素子ＰＥ及び加算器部分）の内部構成を図６に示す。また、演算素子ＰＥ単体の内部構成を図７に示す。
【００３９】
＜プロセッシングユニットＰＵ＞
図５〜７を参照して、プロセッシングユニットＰＵは、８×８画素サイズのデータバッファと、画素１点分の評価値演算を行う演算素子ＰＥが６４（＝８×８）個と、評価値を探索状態に応じて足しこむ加算器１２，１３とを備えて構成されている。
【００４０】
また、図５を参照して、プロセッシングユニットＰＵは、ＰＥマトリクスの各行毎にマルチプレクサ１０Ａを備えている。マルチプレクサ１０Ａは、自サブブロックＳＢＳＡと、自サブブロックＳＢＳＡに隣接する隣接サブブロックＳＢＳＡとを接続するか否かを選択するための選択手段である。さらに具体的には、マルチプレクサ１０Ａは、自サブブロックＳＢＳＡのプロセッシングユニットＰＵへの入力として、自サブブロックＳＢＳＡのシフトレジスタユニットＳＲＵ、及び隣接サブブロックＳＢＳＡのプロセッシングユニットＰＵの一方を選択するための選択手段である。
【００４１】
同様に、図５を参照して、シフトレジスタユニットＳＲＵは、ＳＲＥマトリクスの各行毎にマルチプレクサ１０Ｂを備えている。マルチプレクサ１０Ｂは、自サブブロックＳＢＳＡと、自サブブロックＳＢＳＡに隣接する隣接サブブロックＳＢＳＡとを接続するか否かを選択するための選択手段である。さらに具体的には、マルチプレクサ１０Ｂは、自サブブロックＳＢＳＡのシフトレジスタユニットＳＲＵへの入力として、自サブブロックＳＢＳＡのプロセッシングユニットＰＵ、及び隣接サブブロックＳＢＳＡのシフトレジスタユニットＳＲＵの一方を選択するための選択手段である。
【００４２】
処理すべき画像のサイズに応じて、つまりマクロブロックペア（１６×３２）、ｍｏｄｅ１（１６×１６）、ｍｏｄｅ２（１６×８）、ｍｏｄｅ３（８×１６）、ｍｏｄｅ４（８×８）の別に応じて、マルチプレクサ１０Ａ，１０Ｂの設定が切り換えられる。また、実行する探索モードに応じて、つまりＦＳモード、ＤＳモード、ＲＢＭモードの別に応じて、マルチプレクサ１０Ａ，１０Ｂの設定が切り換えられる。詳細については後述する。
【００４３】
図６に示すように、プロセッシングユニットＰＵによって演算される評価値は、４×４画素単位のＳＡＤである。フレーム画像及びフィールド画像の双方に対応するために、フレーム画像対応の４個の加算器１２と、フィールド画像対応の４個の加算器１３とが設けられている。加算器１２は、連続する４行（合計１６個）の演算素子ＰＥのＳＡＤを演算して出力する。加算器１３は、隔行（１行とばし）の４行（合計１６個）の演算素子ＰＥのＳＡＤを演算して出力する。
【００４４】
ここで、ｙ方向（縦方向）に１／２に間引かれた画素値がＳＷＲＡＭ２からアレイ５に入力されている場合には、Frame_4×4_SADは、ｙ方向間引きなしのフィールド画像のＳＡＤ（又はｙ方向に１／２に間引かれたフレーム画像のＳＡＤ）に相当し、また、Field_4×4_SADは、ｙ方向に１／２に間引かれたフィールド画像のＳＡＤに相当する。
【００４５】
垂直方向ＤＳ（直線探索）を行う場合には、入力画像の回転に応じてField_4×4_SADが演算される。そのため、垂直方向ＤＳにおいてもField_4×4_SADを利用した副探索が可能である。
【００４６】
プロセッシングユニットＰＵは、８×８画素サイズのデータバッファを有している（図７の“register”）。このバッファは、参照画像ＳＷの画素値及び符号化対象画像ＴＢの画素値を、８×８サイズで保持可能である。初期ロードとして、参照画像ＳＷ用のバッファは、ＳＷＲＡＭ２から８×８画素の画素値の供給を受け、これを１サイクルで保持することができる。また、プロセッシングユニットＰＵは、内部に保持している参照画像ＳＷの画素値を、左右に１画素分シフトすることが可能である。このシフトによって溢れた画素値は、同一サブブロックＳＢＳＡ内のシフトレジスタユニットＳＲＵ、又は横隣接サブブロックＳＢＳＡ内のプロセッシングユニットＰＵへと供給することが可能である。評価値演算部を使用しない（つまり演算素子ＰＥからの出力を破棄する）という設定も可能であり、この場合、プロセッシングユニットＰＵは、８×８サイズのシフトレジスタとして動作する。さらに、プロセッシングユニットＰＵは、下方向からの画素値の供給を受けて、内部に保持している画素値を縦方向に１画素分シフトすることができる。このシフトによって溢れた画素値は、上隣接サブブロックＳＢＳＡ内のプロセッシングユニットＰＵへと供給することが可能である。
【００４７】
＜シフトレジスタユニットＳＲＵ＞
シフトレジスタユニットＳＲＵは、８×８画素の合計６４画素分の画素値バッファであり、８×８個のシフトレジスタ素子ＳＲＥを備えて構成されている。シフトレジスタ素子ＳＲＥ単体の内部構成を図８に示す。初期ロードとして、シフトレジスタユニットＳＲＵはＳＷＲＡＭ２から８×８画素の画素値の供給を受け、これを１サイクルで保持することができる。シフトレジスタユニットＳＲＵは、内部に保持している画素値を左右に１画素分シフトすることができ、このシフトによって溢れた画素値は、同一サブブロックＳＢＳＡ内のプロセッシングユニットＰＵ、又は横隣接サブブロックＳＢＳＡ内のシフトレジスタユニットＳＲＵへと供給することが可能である。また、シフトレジスタユニットＳＲＵは、下方向からの画素値の供給を受けて、保持している画素値を縦方向に１画素分シフトすることができる。このシフトによって溢れた画素値は、上隣接サブブロックＳＢＳＡ内のシフトレジスタユニットＳＲＵへと供給することが可能である。
【００４８】
図４を参照して、記憶部（ＲＥＧ＿ＶＳ）７は、ＦＳ（Full Search)動作時の縦方向探索を実現するためのデータバッファ用レジスタである。記憶部７の内部構成を図９に示す。記憶部７への外部からの入力としては、ＳＷＲＡＭ２からの８×１画素の画素値入力が存在する。また、記憶部７からの外部への入力としては、各サブブロックＳＢＳＡのプロセッシングユニットＰＵへの８×１画素の画素値出力、及び各サブブロックＳＢＳＡのシフトレジスタユニットＳＲＵへの８×１画素の画素値出力が存在する。記憶部７は、８×１画素単位の画素値バッファ１５を１６個（プロセッシングユニットＰＵ用に８個、シフトレジスタユニットＳＲＵ用に８個）備えて構成されている。ＳＷＲＡＭ２から入力された画素値データは、いずれかの画素値バッファ１５に入力され、保持される。記憶部７は、画素値バッファ１５に保持している全ての画素値データを、対応するサブブロックＳＢＳＡ（プロセッシングユニットＰＵ及びシフトレジスタユニットＳＲＵ）に同時に出力することができる。
【００４９】
次に、本実施の形態に係る画像処理装置の動作について説明する。
【００５０】
以下では、実現可能な各探索手法における全体動作について説明する。本実施の形態に係る画像処理装置で実行可能な探索手法には、（１）ＦＳ（Full Search）、（２）ＤＳ（Directional Search）、及び（３）ＲＢＭ（Random Block Matching）が含まれる。また、ＲＲＳＡ構成では、探索手法だけでなく、探索を実行するブロックサイズによっても構成を変える。対応可能なブロックサイズには、１６×３２、１６×１６、１６×８、８×１６、及び８×８が含まれる。
【００５１】
サブブロックＳＢＳＡの基本動作として、初期ロード、水平シフト動作、及び垂直シフト動作が定義されている。ＲＲＳＡ構成では、探索手法に応じてこれらの基本動作を適宜に組み合わせることによって、様々な探索手法を同一のアーキテクチャによって実現している。
【００５２】
＜初期ロード＞
プロセッシングユニットＰＵ、シフトレジスタユニットＳＲＵ、及び記憶部７が初期的なロードで保持する画素値についての詳細を図１０，１１に示す。図１０は画像を回転させない場合について示しており、図１１は画像を回転させる場合について示している。
【００５３】
図１０を参照して、プロセッシングユニットＰＵには、８×８の画像部分の画素値（図１０のａ〜ｈ）が、１サイクルでロードされる。シフトレジスタユニットＳＲＵには、プロセッシングユニットＰＵにロードされる画像部分に右隣接する８×８の画像部分の画素値（図１０の“０”〜“７”）が、１サイクルでロードされる。記憶部７には、プロセッシングユニットＰＵにロードされる画像部分に下隣接する８×１の画像部分の画素値（図１０の“ｕ”）が、１サイクルでロードされる。また、記憶部７には、シフトレジスタユニットＳＲＵにロードされる画像部分に下隣接する８×１の画像部分の画素値（図１０の“ｖ”）が、１サイクルロードされる。
【００５４】
図９を参照して、初期ロードで記憶部７内の１６個全ての画素値バッファ１５に画素値を同時にロードすることは不可能であるため、各画素値バッファ１５毎に順に画素値をロードさせていく必要がある。
【００５５】
図１１を参照して、プロセッシングユニットＰＵには、８×８の画像部分の画素値（図１１のａ〜ｈ）が、画像回転処理部４（図１参照）によって反時計回りに９０°回転されつつ、１サイクルでロードされる。また、シフトレジスタユニットＳＲＵには、プロセッシングユニットＰＵにロードされる画像部分に下隣接する８×８の画像部分の画素値（図１０の“０”〜“７”）が、画像回転処理部４によって反時計回りに９０°回転されつつ、１サイクルでロードされる。
【００５６】
＜左シフト動作＞
左シフト動作は、現在の保持状態から左方向に画素値をシフトする動作であり、直線連続点探索の基本となる動作である。探索としては、左から右に向かって連続点探索を行う動作となる。左シフト動作を図１２に示す。シフトレジスタユニットＳＲＵの左端列８画素分の画素値（図１２の“０”）が、プロセッシングユニットＰＵに供給されて、プロセッシングユニットＰＵの右端列８画素に保持される。プロセッシングユニットＰＵから溢れた画素値（図１２の“ａ”）は、シフトレジスタユニットＳＲＵの右端列８画素に保持させることができる。
【００５７】
＜右シフト動作＞
右シフト動作は、現在の保持状態から右方向に画素値をシフトする動作であり、ＦＳ動作としてスネークサーチ（図１５参照）を実現するために必要となる動作である。探索としては、右から左に向かって連続点探索を行う動作となる。右シフト動作を図１３に示す。プロセッシングユニットＰＵの右端列８画素分の画素値（図１３の“ｈ”）が、シフトレジスタユニットＳＲＵに供給されて、シフトレジスタユニットＳＲＵの左端列８画素に保持される。シフトレジスタユニットＳＲＵから溢れた画素値（図１３の“７”）は、プロセッシングユニットＰＵの左端列８画素に保持させることができる。
【００５８】
＜上シフト動作＞
上シフト動作は、現在の保持状態から上方向に画素値をシフトする動作であり、ＦＳ動作としてスネークサーチ（図１５参照）を実現するために必要となる動作である。探索としては、上から下に向かって１画素分だけシフトする動作となる。上シフト動作を図１４に示す。記憶部７（又は下隣接サブブロックＳＢＳＡ内のプロセッシングユニットＰＵ）に保持されている８×１画素の画素値（図１４の“ｕ”）が、プロセッシングユニットＰＵに供給されて、プロセッシングユニットＰＵの下端行８画素に保持される。プロセッシングユニットＰＵから溢れた上端行８画素分の画素値は、上隣接サブブロックＳＢＳＡ内のプロセッシングユニットＰＵの下端行８画素に保持されるか、破棄される。
【００５９】
また、記憶部７（又は下隣接サブブロックＳＢＳＡ内のシフトレジスタユニットＳＲＵ）に保持されている８×１画素の画素値（図１４の“ｖ”）が、シフトレジスタユニットＳＲＵに供給されて、シフトレジスタユニットＳＲＵの下端行８画素に保持される。シフトレジスタユニットＳＲＵから溢れた上端行８画素分の画素値は、上隣接サブブロックＳＢＳＡ内のシフトレジスタユニットＳＲＵの下端行８画素に保持されるか、破棄される。
【００６０】
＜ＦＳ（Full Search）＞
ＦＳは一般的な探索手法であり、探索範囲として指定した矩形領域を網羅的に探索する手法である。ＲＲＳＡ構成では、ＦＳをスネークサーチと呼ばれる方法で実現する。スネークサーチにおける矩形領域内の探索順を図１５に示す。また、ＦＳ時におけるサブブロックＳＢＳＡ内の内部結線状態を図１６〜２０に示す。図１６はマクロブロックペア（１６×３２）に対応し、図１７はｍｏｄｅ１（１６×１６）に対応し、図１８はｍｏｄｅ２（１６×８）に対応し、図１９はｍｏｄｅ３（８×１６）に対応し、図２０はｍｏｄｅ４（８×８）に対応する。
【００６１】
ブロックサイズがマクロブロックペア、ｍｏｄｅ１、ｍｏｄｅ２である場合は、図１６〜１８に示すように、横隣接サブブロックＳＢＳＡ間で接続パスが形成され、一方、ｍｏｄｅ３、ｍｏｄｅ４である場合は、図１９，２０に示すように、横隣接サブブロックＳＢＳＡ間で接続パスは形成されない。
【００６２】
下方向からの入力もブロックサイズに応じて決定され、ブロックサイズがマクロブロックペア、ｍｏｄｅ１、ｍｏｄｅ３である場合は、図１６，１７，１９に示すように、縦隣接サブブロックＳＢＳＡ間で接続パスが形成され、一方、ｍｏｄｅ２、ｍｏｄｅ４である場合は、図１８，２０に示すように、記憶部７との間で接続パスが形成される。但し、図１６，１７，１９においても、一番下に位置するサブブロックＳＢＳＡは、記憶部７との間で接続パスを形成している。
【００６３】
図１５に示すように、スネークサーチでは、左シフト→上シフト→右シフト→上シフト→左シフト→・・・の順で動作が繰り返される。プロセッシングユニットＰＵ及びシフトレジスタユニットＳＲＵが保持している画素値を最大限利用し、水平方向の最大探索範囲を、ｍｏｄｅ３、ｍｏｄｅ４の場合は±４以下とし、マクロブロックペア、ｍｏｄｅ１、ｍｏｄｅ２の場合は±８以下とすれば、ＦＳにおいてプロセッシングユニットＰＵ及びシフトレジスタユニットＳＲＵの双方ともに中間ロードは必要ない。但し、ストールを生じさせずにＦＳを完了させるためには、上シフトを実行してから次の上シフトを実行するまでの間に、記憶部７に次の行の画素値をロードしておく必要がある。
【００６４】
また、本実施の形態に係る画像処理装置では、横隣接サブブロックＳＢＳＡ間での接続を利用して、２個のプロセッシングユニットＰＵと２個のシフトレジスタユニットＳＲＵとを水平方向で直列に接続することが可能である。従って、ｍｏｄｅ３又はｍｏｄｅ４で要求並列度が２５６以下（つまり使用するサブブロックＳＢＳＡが４個以下）である場合には、一方のプロセッシングユニットＰＵをシフトレジスタとして使用することで、１個のプロセッシングユニットＰＵと３個のシフトレジスタユニットＳＲＵとの直列接続として使用することができる。この場合は、中間ロードなしでの最大探索範囲を±１２まで拡大することが可能となる。
【００６５】
＜ＤＳ（Directional Search）＞
ＤＳは、水平又は垂直に直線探索を行う探索手法である。ＤＳ時におけるサブブロックＳＢＳＡ内の内部結線状態を図２１〜２５に示す。図２１はマクロブロックペア（１６×３２）に対応し、図２２はｍｏｄｅ１（１６×１６）に対応し、図２３はｍｏｄｅ２（１６×８）に対応し、図２４はｍｏｄｅ３（８×１６）に対応し、図２５はｍｏｄｅ４（８×８）に対応する。
【００６６】
垂直方向探索である場合には、ＳＷＲＡＭ２からデータパスに入力される画素値は、画像回転処理部４（図１参照）によって反時計回りに９０°回転される。アレイ５のサイズが１６×３２画素であり、回転後のマクロブロックペアをアレイ５に保持することができないため、マクロブロックペアに関しては垂直方向探索は不可能である。但し、アレイ５の水平サイズを３２画素以上に拡大することで、マクロブロックペアに関する垂直方向探索も可能となる。
【００６７】
ＤＳの探索は、左シフト（図１２）のみを用いて行う。ブロックサイズがマクロブロックペア、ｍｏｄｅ１、ｍｏｄｅ２である場合は、図２１〜２３に示すように、横隣接サブブロックＳＢＳＡ間で接続パスが形成され、一方、ｍｏｄｅ３、ｍｏｄｅ４である場合は、図２４，２５に示すように、横隣接サブブロックＳＢＳＡ間で接続パスは形成されない。
【００６８】
シフトレジスタユニットＳＲＵに関しては、８点分の探索を行うごとに１回の中間ロードを行う必要がある。中間ロードの際には、ＳＷＲＡＭ２から８×８画素分の画素値が１サイクルでシフトレジスタユニットＳＲＵに供給される。
【００６９】
＜ＲＢＭ（Random Block Matching＞
ＲＢＭは、単一点のみを探索する探索手法である。単一点の探索に関しては特にシフト動作を行う必要はなく、プロセッシングユニットＰＵに初期ロードを行うだけで、その点の評価値が自動的に求まる。
【００７０】
ＦＳ、ＤＳ、ＲＢＭにおいて、ブロックサイズがマクロブロックペアである場合は、８個のサブブロックＳＢＳＡが接続されて、１６×３２の１個のブロックが構成されている。この場合、図２６の（Ａ）に示すように、アレイ５内には１個のブロックのみを構成可能である。
【００７１】
同様に、ｍｏｄｅ１の場合は、４個（横２個×縦２個）のサブブロックＳＢＳＡが接続されて、１６×１６のブロックが構成されている。この場合、図２６の（Ｂ）に示すように、アレイ５内には最大２個のブロックを構成可能である。２個のブロックの各々は、他のブロックとは独立して動作可能である。
【００７２】
同様に、ｍｏｄｅ２の場合は、横２個のサブブロックＳＢＳＡが接続されて、１６×８のブロックが構成されている。この場合、図２６の（Ｃ）に示すように、アレイ５内には最大４個のブロックを構成可能である。４個のブロックの各々は、他のブロックとは独立して動作可能である。
【００７３】
同様に、ｍｏｄｅ３の場合は、縦２個のサブブロックＳＢＳＡが接続されて、８×１６のブロックが構成されている。この場合、図２６の（Ｄ）に示すように、アレイ５内には最大４個のブロックを構成可能である。４個のブロックの各々は、他のブロックとは独立して動作可能である。
【００７４】
同様に、ｍｏｄｅ４の場合は、１個のサブブロックＳＢＳＡによって、８×８のブロックが構成されている。この場合、図２７の（Ｅ）に示すように、アレイ５内には最大８個のブロック（サブブロックに等しい）を構成可能である。８個のブロックの各々は、他のブロックとは独立して動作可能である。
【００７５】
また、図２７の（Ｆ），（Ｇ）に示すように、２種類のｍｏｄｅを同時に実行することも可能である。さらに、図２７の（Ｈ）に示すように、３種類のｍｏｄｅを同時に実行することも可能である。このような場合であっても、複数のブロックの各々は、他のブロックとは独立して動作可能である。また、複数種類のブロックサイズの同時使用と同様に、複数種類の探索手法を同時に実行することも可能である。例えば、図２６の（Ｂ）において、上側の１６×１６のブロックではＦＳ動作を行い、これと同時に、下側の１６×１６のブロックではＤＳ動作を行うことが可能である。
【００７６】
＜まとめ＞
このように本実施の形態に係る画像処理装置によれば、アレイ５は複数のサブブロックＳＢＳＡ０〜ＳＢＳＡ７に分割されている。そして、処理すべき画像のサイズに応じてマルチプレクサ１０Ａ，１０Ｂ，１１Ａ，１１Ｂの設定を切り換えることによって、アレイ５内に一又は複数のサブブロックＳＢＳＡを含む一又は複数のブロックが設定される。そのため、処理対象であるマクロブロックペアが細分化されてブロックの個数が増えたとしても、アレイ５内に設定された複数のブロックを同時に処理できるため、１マクロブロックペアの探索にかかるサイクル数が増大することを回避できる。また、複数のブロックの各々は他のブロックとは独立に動作可能であるため、１マクロブロックペア内の複数のブロックを並列に処理することができる。その結果、１マクロブロックペアの探索にかかるサイクル数が増大することを回避できる。
【００７７】
数値計算によって本発明の効果を検証した結果を図２８〜３１に示す。サイクル数及びＳＲＡＭからのデータ転送量に関して、本発明に係るＲＲＳＡ構成を、従来のＳＩＭＤ構成及びＲＣＳＡ構成と比較している。
【００７８】
各ｍｏｄｅ毎に、サイクル数及びデータ転送量ともにＳＩＭＤ構成での値を１００％として正規化を行っている。図２８は、ＦＳ動作を探索範囲±４×±４（計９１点）として行った場合の見積もりである。図２９は、ＦＳ動作を探索範囲±８×±８（計２８９点）として行った場合の見積もりである。図３０は、ＤＳ動作を探索範囲連続３３点として行った場合の見積もりである。図３１は、ＲＢＭ動作を探索範囲ランダム１６点として行った場合の見積もりである。図２８〜３１を参照すると、全ての場合において、本発明に係るＲＲＳＡ構成は、従来のＳＩＭＤ構成及びＲＣＳＡ構成と比べて、サイクル数及びデータ転送量を削減できていることが分かる。
【図面の簡単な説明】
【００７９】
【図１】本発明に係る画像処理装置の全体構成を示す図である。
【図２】ＳＷＲＡＭから読み出し可能な画像ブロックを示す図である。
【図３】画像を回転した場合にアレイに入力される画素の配置を示す図である。
【図４】アレイの全体構成を示す図である。
【図５】サブブロックの内部構成を示す図である。
【図６】プロセッシングユニットにおける評価値演算部分の内部構成を示す図である。
【図７】演算素子単体の内部構成を示す図である。
【図８】シフトレジスタ素子単体の内部構成を示す図である。
【図９】記憶部の内部構成を示す図である。
【図１０】プロセッシングユニット、シフトレジスタユニット、及び記憶部が初期ロードで保持する画素値についての詳細を示す図である。
【図１１】プロセッシングユニット、シフトレジスタユニット、及び記憶部が初期ロードで保持する画素値についての詳細を示す図である。
【図１２】左シフト動作を示す図である。
【図１３】右シフト動作を示す図である。
【図１４】上シフト動作を示す図である。
【図１５】スネークサーチにおける矩形領域内の探索順を示す図である。
【図１６】ＦＳ時におけるサブブロック内の内部結線状態を示す図である。
【図１７】ＦＳ時におけるサブブロック内の内部結線状態を示す図である。
【図１８】ＦＳ時におけるサブブロック内の内部結線状態を示す図である。
【図１９】ＦＳ時におけるサブブロック内の内部結線状態を示す図である。
【図２０】ＦＳ時におけるサブブロック内の内部結線状態を示す図である。
【図２１】ＤＳ時におけるサブブロック内の内部結線状態を示す図である。
【図２２】ＤＳ時におけるサブブロック内の内部結線状態を示す図である。
【図２３】ＤＳ時におけるサブブロック内の内部結線状態を示す図である。
【図２４】ＤＳ時におけるサブブロック内の内部結線状態を示す図である。
【図２５】ＤＳ時におけるサブブロック内の内部結線状態を示す図である。
【図２６】アレイ内におけるブロックの設定を示す図である。
【図２７】アレイ内におけるブロックの設定を示す図である。
【図２８】本発明の効果を検証した結果を示す図である。
【図２９】本発明の効果を検証した結果を示す図である。
【図３０】本発明の効果を検証した結果を示す図である。
【図３１】本発明の効果を検証した結果を示す図である。
【図３２】ＳＩＭＤ構成の例を示す図である。
【図３３】ＲＣＳＡ構成の例を示す図である。
【図３４】演算素子の内部構成を示す図である。
【図３５】シフトレジスタの内部構成を示す図である。
【符号の説明】
【００８０】
１  ＩＭＥコア
２  ＳＷＲＡＭ
３  ＴＢバッファ
４  画像回転処理部
５  アレイ
７  記憶部
１０Ａ，１０Ｂ，１１Ａ，１１Ｂ  マルチプレクサ
【図１】
0005020029.tif 000002
【図２】
0005020029.tif 000003
【図３】
0005020029.tif 000004
【図４】
0005020029.tif 000005
【図５】
0005020029.tif 000006
【図６】
0005020029.tif 000007
【図７】
0005020029.tif 000008
【図８】
0005020029.tif 000009
【図９】
0005020029.tif 000010
【図１０】
0005020029.tif 000011
【図１１】
0005020029.tif 000012
【図１２】
0005020029.tif 000013
【図１３】
0005020029.tif 000014
【図１４】
0005020029.tif 000015
【図１５】
0005020029.tif 000016
【図１６】
0005020029.tif 000017
【図１７】
0005020029.tif 000018
【図１８】
0005020029.tif 000019
【図１９】
0005020029.tif 000020
【図２０】
0005020029.tif 000021
【図２１】
0005020029.tif 000022
【図２２】
0005020029.tif 000023
【図２３】
0005020029.tif 000024
【図２４】
0005020029.tif 000025
【図２５】
0005020029.tif 000026
【図２６】
0005020029.tif 000027
【図２７】
0005020029.tif 000028
【図２８】
0005020029.tif 000029
【図２９】
0005020029.tif 000030
【図３０】
0005020029.tif 000031
【図３１】
0005020029.tif 000032
【図３２】
0005020029.tif 000033
【図３３】
0005020029.tif 000034
【図３４】
0005020029.tif 000035
【図３５】
0005020029.tif 000036