(57)【特許請求の範囲】
【請求項１】
木構造で表現することができる符号化処理単位の符号化処理の順序を示すインデックスに対して所定の演算処理を行なうインデックス演算装置において、
入力されたインデックスのビットパターンの一部をマスクするマスク処理手段と、
上記マスク処理手段によりマスクされたインデックスのビットパターンに対して所定の演算処理を行う演算処理手段と
を備え、
上記インデックスのビットパターンが、マトリックス上における当該インデックスのＸ方向の位置を示すビットパターンと、Ｙ方向の位置を示すビットパターンとの各ビットが交互に配置されているものであり、
上記マスク処理手段が、上記入力されたインデックスのビットパターンの一部をマスクして、当該インデックスのＸ方向インデックス及び又はＹ方向インデックスを抽出するものである
ことを特徴とするインデックス演算装置。
【請求項２】
上記演算処理手段は、上記マスク処理手段からのＸ方向インデックス及び又はＹ方向インデックスがゼロであるか否かを判定するものであることを特徴とする請求項１に記載のインデックス演算装置。
【請求項３】
上記演算処理手段は、上記マスク処理手段からのＸ方向インデックスの値及び又はＹ方向インデックスの値と、同じマスク処理が施されたインデックスの値とを比較して同値か否かを判定することを特徴とする請求項２に記載のインデックス演算装置。
【請求項４】
上記演算処理手段は、上記マスク処理手段からのＸ方向インデックスの値及び又はＹ方向インデックスの値と、同じマスク処理が施されたインデックスの値とを比較して、値の大小関係を判定することを特徴とする請求項１〜３のいずれかに記載のインデックス演算装置。
【請求項５】
上記演算処理手段により、マスクされたＸ方向インデックスに対する演算結果と、マスクされたＹ方向インデックスに対する演算結果とを結合する結合手段を更に備えることを特徴とする請求項１に記載のインデックス演算装置。
【請求項６】
上記演算処理手段が、マスクされたＸ方向インデックス及び又はＹ方向のインデックスから、同じマスク処理が施されたインデックスを減算した後に再度マスクした減算結果を求め、
上記結合手段が、上記減算結果を含むマスクしたＸ方向インデックスとＹ方向インデックスとを結合して、Ｘ方向及び又はＹ方向に別のインデックスで減算したインデックスを求める
ことを特徴とする請求項５に記載のインデックス演算装置。
【請求項７】
上記演算処理手段が、マスクされたＸ方向インデックス及び又はＹ方向インデックスに対して、マスクするビットに対して１を論理和することによってマスクした別のマスクされたインデックスを加算した後に再度マスクした加算結果を求め、
上記結合手段が、上記加算結果を含むマスクしたＸ方向インデックス及び又はＹ方向のインデックスを結合して、Ｘ方向及び又はＹ方向に別のインデックスを加算したインデックスを求める
ことを特徴とする請求項５又は６に記載のインデックス演算装置。
【請求項８】
木構造で表現することができる符号化処理単位の符号化処理の順序を示すインデックスに対して所定の演算処理を行なうインデックス演算プログラムにおいて、
コンピュータを、
入力されたインデックスのビットパターンの一部をマスクするマスク処理手段と、
上記マスク処理手段によりマスクされたインデックスのビットパターンに対して所定の演算処理を行う演算処理手段と
して機能させ、
上記インデックスのビットパターンが、マトリックス上における当該インデックスのＸ方向の位置を示すビットパターンと、Ｙ方向の位置を示すビットパターンとの各ビットが交互に配置されているものであり、
上記マスク処理手段が、上記入力されたインデックスのビットパターンの一部をマスクして、当該インデックスのＸ方向インデックス及び又はＹ方向インデックスを抽出する
ことを特徴とするインデックス演算プログラム。
【請求項９】
木構造で表現することができる符号化処理単位の符号化処理の順序を示すインデックスに対して所定の演算処理を行なうインデックス演算方法において、
マスク処理手段が、入力されたインデックスのビットパターンの一部をマスクし、
演算処理手段が、上記マスク処理手段によりマスクされたインデックスのビットパターンに対して所定の演算処理を行い、
上記インデックスのビットパターンが、マトリックス上における当該インデックスのＸ方向の位置を示すビットパターンと、Ｙ方向の位置を示すビットパターンとの各ビットが交互に配置されているものであり、
上記マスク処理手段が、上記入力されたインデックスのビットパターンの一部をマスクして、当該インデックスのＸ方向インデックス及び又はＹ方向インデックスを抽出する
ことを特徴とするインデックス演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インデックス演算装置、プログラム及び方法に関し、例えば、Ｈ．２６５／ＭＰＥＧ−Ｈ  ＨＥＶＣ等のように４分木構造に分割可能な符号化処理単位を指し示す再帰的なＺスキャンインデックスに対する演算処理に適用し得るものである。
【背景技術】
【０００２】
Ｈ．２６５／ＭＰＥＧ−Ｈ  ＨＥＶＣ（以下、ＨＥＶＣと呼ぶ。）等に代表される映像符号化方式による映像情報の圧縮符号化処理は、入力された対象画像を分割した処理単位ごとに、イントラ予測や動き補償予測等のインター予測を行った予測画像と、入力された対象画像との差分である予測残差信号に、離散コサイン変換等の空間変換を施した変換係数を量子化して、これをエントロピー符号化することによって高効率の映像圧縮を実現している。
【０００３】
図２に従来の映像符号化装置の機能的な構成を示す。ＨＥＶＣ等の符号化技術を用いる場合、入力された符号化対象画像は、画面分割部１０１により符号化ユニット等の処理単位領域毎に画面分割され、動き補償を伴うインター予測部１０９によるインター予測若しくはイントラ予測部１１０による画面内の符号化済み画素等からイントラ予測された予測画像との差分が求められる。変換部１０２は、この差分である予測残差信号をＤＣＴ（離散コサイン変換）やＤＳＴ（離散サイン変換）によって変換し、得られた変換係数は量子化部１０３により量子化される。エントロピー符号化部１０４は、量子化された変換係数を可変長符号や算術符号のようなエントロピー符号化を行って符号化ストリームを出力する。量子化された変換係数は、逆量子化部１０５、逆変換部１０６により変換されて、予測画像と加算されることによって復号側で生成される復号画像が得られる。さらに、復号画像は、ブロック歪を軽減するデブロッキングフィルタなどのループ内フィルタ部１０７が適用され、後続の画像の符号化時のインター予側の動き補償のための参照画像として参照画像バッファ部１０８に保持される。
【０００４】
ＨＥＶＣでは、８ｘ８画素から６４ｘ６４画素までの符号化単位であるコーディングユニット（以下、ＣＵと呼ぶ。）を４分木構造の符号化ツリーで表現することが可能となっており、多様なブロックサイズでの符号化が可能となっている。さらに、ＣＵは、４ｘ４から３２ｘ３２サイズの変換単位である変換ユニット（以下、ＴＵとも呼ぶ。）に４分木構造で残差ツリーとして分割可能であり、ＣＵの予測残差信号を様々なサイズの変換単位を組み合わせて変換・量子化して符号化することが可能となっている（図３参照）。
【０００５】
多様なブロックサイズの処理単位はＺスキャンと呼ばれる順序で符号化処理が行われる。すなわち、図４に示すように再帰的に左上、右上、左下、右下の順に処理が行われる。図４の各領域に記載の番号は、符号化処理に係るＺスキャンの順序を示しており、例えば「０」、「１」、「２」、…、「１４」、「１５」の順に符号化処理が行われる。
【０００６】
このようなＺスキャン順の符号化データを効率的に保持する方法として非特許文献１に記載のＨＥＶＣの参照ソフトウェアに関する技術がある。このＨＥＶＣの参照ソフトウェアは、図５に示すようなＺスキャンインデックスと呼ばれるインデックスの順に、各ブロック毎のデータを保持している。
【０００７】
さらに、ＨＥＶＣでは注目するブロックに空間的に隣接するブロック（左、上、右上、左上、左下など）のデータを参照して動きベクトルの予測等を行う。
【０００８】
この場合、ＨＥＶＣの参照ソフトウェアは、Ｚスキャンインデックス（図５参照）を、ラスターインデックス（図６参照）に変換して、動きベクトルの予測等の演算処理を行なう。図７は、ＨＥＶＣの参照ソフトウェアによるインデックス演算処理を機能的に示したブロック図である。図７に示すように、従来は、ラスターインデックス変換部３１は、変換テーブルを用いて、Ｚスキャンインデックスを、ラスタースキャン順のラスターインデックスに変換する。そして、ラスターインデックス演算処理部３２が、変換されたラスターインデックスを用いて、注目ブロックに隣接する隣接ブロックのラスターインデックスを求めるなどの演算を行う。その後、Ｚスキャンインデックス変換部３３が、逆方向の変換テーブルを用いて、得られたラスターインデックスをＺスキャンインデックスに変換するという方法が用いられている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Ｆ．Ｂｏｓｓｅｎ，ｅｔ  ａｌ．“ＨＥＶＣ  Ｒｅｆｅｒｅｎｃｅ  Ｓｏｆｔｗａｒｅ  ｆｏｒ  Ｖｅｒｓｉｏｎ  １  Ｐｒｏｆｉｌｅｓ”，ＪＣＴＶＣ−Ｒ１０１１（ｈｔｔｐ：／／ｐｈｅｎｉｘ，ｉｔ−ｓｕｄｐａｒｉｓ．ｅｕ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１８＿Ｓａｐｐｏｒｏ／ｗｇ１１／ＪＣＴＶＣ−Ｒ１０１１−ｖｌ．ｚｉｐ）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、隣接ブロックのインデックスを求める演算は、動きベクトルの予測やイントラ予測モードのモード予測など、ブロックレベルで頻繁に用いられる演算であり、変換テーブル参照のようなメモリアクセスを伴う方法では処理の負担になるという課題がある。
【００１１】
そのため、Ｚスキャンインデックスとラスターインデックスの間の双方向の変換テーブル用いずにＺスキャンインデックスに対する演算を行うことが可能となり、処理負荷を低減することができるインデックス演算装置、プログラム及び方法が求められている。
【課題を解決するための手段】
【００１２】
本発明は、前記課題を解決するためになされたものであり、次のような構成を備える。
【００１３】
第１の本発明に係るインデックス演算装置は、木構造で表現することができる符号化処理単位の符号化処理の順序を示すインデックスに対して所定の演算処理を行なうインデックス演算装置において、（１）入力されたインデックスのビットパターンの一部をマスクするマスク処理手段と、（２）マスク処理手段によりマスクされたインデックスのビットパターンに対して所定の演算処理を行う演算処理手段とを備え、インデックスのビットパターンが、マトリックス上における当該インデックスのＸ方向の位置を示すビットパターンと、Ｙ方向の位置を示すビットパターンとの各ビットが交互に配置されているものであり、マスク処理手段が、入力されたインデックスのビットパターンの一部をマスクして、当該インデックスのＸ方向インデックス及び又はＹ方向インデックスを抽出するものであることを特徴とする。
【００１４】
第２の本発明に係るインデックス演算プログラムは、木構造で表現することができる符号化処理単位の符号化処理の順序を示すインデックスに対して所定の演算処理を行なうインデックス演算プログラムにおいて、コンピュータを、（１）入力されたインデックスのビットパターンの一部をマスクするマスク処理手段と、（２）マスク処理手段によりマスクされたインデックスのビットパターンに対して所定の演算処理を行う演算処理手段として機能させ、インデックスのビットパターンが、マトリックス上における当該インデックスのＸ方向の位置を示すビットパターンと、Ｙ方向の位置を示すビットパターンとの各ビットが交互に配置されているものであり、マスク処理手段が、入力されたインデックスのビットパターンの一部をマスクして、当該インデックスのＸ方向インデックス及び又はＹ方向インデックスを抽出することを特徴とする。
【００１５】
第３の本発明に係るインデックス演算方法は、木構造で表現することができる符号化処理単位の符号化処理の順序を示すインデックスに対して所定の演算処理を行なうインデックス演算方法において、（１）マスク処理手段が、入力されたインデックスのビットパターンの一部をマスクし、（２）演算処理手段が、マスク処理手段によりマスクされたインデックスのビットパターンに対して所定の演算処理を行い、インデックスのビットパターンが、マトリックス上における当該インデックスのＸ方向の位置を示すビットパターンと、Ｙ方向の位置を示すビットパターンとの各ビットが交互に配置されているものであり、マスク処理手段が、入力されたインデックスのビットパターンの一部をマスクして、当該インデックスのＸ方向インデックス及び又はＹ方向インデックスを抽出することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、Ｚスキャンインデックスとラスターインデックスの間の双方向の変換テーブル用いずにＺスキャンインデックスに対する演算を行うことが可能となり、処理負荷を低減することができる。
【図面の簡単な説明】
【００１７】
【図１】第１の実施形態に係るインデックス演算装置の構成を示すブロック図である。
【図２】第１の実施形態に係る映像符号化装置の内部構成を示すブロック図である。
【図３】４分木構造による符号化単位への分割と、変換単位への分割を説明する説明図である。
【図４】再帰的なＺスキャン順の処理順序を説明する説明図である。
【図５】Ｚスキャンインデックスを説明する説明図である。
【図６】ラスターインデックスを説明する説明図である。
【図７】従来のＨＥＶＣの参照ソフトウェアによるインデックス演算処理を機能的に示したブロック図である。
【図８】第１の実施形態に係るＺスキャンインデックスのビットパターンと、抽出するＸ方向成分、Ｙ方向成分との関係を説明する説明図である。
【図９】第１の実施形態に係るインデックス演算装置１の構成を示すブロック図である。
【図１０】第２の実施形態に係る演算処理部による減算処理を説明する説明図である。
【図１１】第２の実施形態に係る演算処理部による加算処理を説明する説明図である。
【発明を実施するための形態】
【００１８】
（Ａ）第１の実施形態
以下では、本発明に係るインデックス演算装置、プログラム及び方法の第１の実施形態を、図面を参照しながら詳細に説明する。
【００１９】
（Ａ−１）第１の実施形態の構成
（Ａ−１−１）映像符号化装置の内部構成
図２は、第１の実施形態に係る映像符号化装置１００の内部構成を示すブロック図である。
【００２０】
第１の実施形態に係る映像符号化装置１００は、図２に示す各構成部を搭載した専用のＩＣチップ等のハードウェアとして構成しても良いし、又は、ＣＰＵと、ＣＰＵが実行するプログラムを中心としてソフトウェア的に構成して良いが、機能的には、図２で表すことができる。
【００２１】
図２において、第１の実施形態に係る映像符号化装置１００は、画面分割部１０１、変換部１０２、量子化部１０３、エントロピー符号化部１０４、逆量子化部１０５、逆変換部１０６、ループ内フィルタ部１０７、参照画像バッファ１０８、インター予測部１０９、イントラ予測部１１０、差分処理部１１１、加算部１１２、切り替え部１１３を有する。
【００２２】
映像符号化装置１００は、入力された映像シーケンスを所定の符号化方式で符号化して、符号化映像ストリームを出力するものである。
【００２３】
第１の実施形態では、符号化方式がＨ．２５６／ＭＰＥＧ−Ｈ  ＨＥＶＣで規格化されている符号化方式である場合を例示する。しかし、符号化方式は、Ｈ．２６５／ＭＰＥＧ−Ｈ  ＨＥＶＣに限定されるものではなく、符号化単位であるコーディングユニット（ＣＵ）の予測残差信号を様々なサイズの変換単位に分割することができ、その変換単位の組み合わせにより量子化して符号化を行うことができるものであれば、様々な符号化方式を適用できる。例えば、符号化方式は、Ｈ．２６５／ＭＰＥＧ−Ｈ  ＨＥＶＣに限定されず、例えば、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣの規格化技術やＨ．２６５／ＭＰＥＧ−Ｈ  ＨＥＶＣの規格化技術等を基調として拡張した符号化方式にも適用可能である。
【００２４】
画面分割部１０１は、符号化対象画像である入力映像を所定の処理単位に分割するために、入力された映像シーケンスの符号化対象画像を、コーディングユニット等の所定の処理単位領域ごとに分割して、差分処理部１１１に与えるものである。
【００２５】
差分処理部１１１は、予測残差信号を求めるために、画面分割部１０１からの所定の処理単位領域に分割された入力画像と、インター予測部１０９若しくはイントラ予測部１１０からの、上記処理単位領域に対応する予測画像との差分を求め、その差分を予測残差信号として変換部１０２に与えるものである。
【００２６】
変換部１０２は、差分処理部１１１から入力された予測残差信号を、離散コサイン変換等の空間変換を施して、利用可能な処理単位の変数係数に変換するものである。変換部１０２は、変換した変数係数を量子化部１０３に与える。
【００２７】
利用することが可能な変換単位は、映像符号化装置１００における符号化単位（処理領域単位）であるコーディングユニット（ＣＵ）によるが、例えば、処理領域単位が６４×６４サイズの場合、変換単位は４×４サイズ、８×８サイズ、１６×１６サイズ、３２×３２サイズとすることができ、変換部１０２は、上記それぞれの処理単位の変換係数を求める。なお、変換部１０２による予測残差信号の変換手法は、既存の変換手法を広く適用することができ、例えば、ＤＣＴ（離散コサイン変換）やＤＳＴ（離散コサイン変換）等を適用できる。
【００２８】
量子化部１０３は、変換部１０２により変換された変数係数を量子化して、変換された変換係数のツリー構造である量子化残差信号に変換し、その量子化残差信号を逆量子化部１０５及びエントロピー符号化部１０４に与える。
【００２９】
エントロピー符号化部１０４は、符号の出現確率の偏りを圧縮するために、量子化部１０３からの量子化残差信号をエントロピー符号化して、符号化モード情報や動きベクトル情報と共に符号化映像ストリームを出力するものである。
【００３０】
逆量子化部１０５は、符号化信号から残差信号（残差画像）を復元するために、量子化部１０３からの量子化残差信号を逆量子化するものである。
【００３１】
逆変換部１０６は、逆量子化部１０５により逆量子化された信号を逆変換して残差信号（残差画像）を復元して、加算部１１２に与えるものである。
【００３２】
加算部１１２は、逆変換部１０６からの復元された残差信号に、切り替え部１１３を介してインター予測部１０９又はイントラ予測部１１０からの予測画像を加算して、復号側で復号される復号画像を求めるものである。加算部１１２は、復号画像を、ループ内フィルタ部１０７及びイントラ予測部１１０に与える。
【００３３】
ループ内フィルタ部１０７は、符号化ループ内の量子化処理によって生じる符号化歪み（例えばブロック歪、リンギング歪等）を低減するために、加算部１１２からの復号画像をフィルタリングするものである。第１の実施形態はＨＥＶＣ等を適用する場合を例示しており、デブロッキングフィルタ等のループ内フィルタ部１０７を用いて符号化歪みを低減する。
【００３４】
参照画像バッファ１０８は、ループ内フィルタ部１０７から出力される画像を、参照画像として保持するものである。ループ内フィルタ部１０７からの出力画像が、後続の入力画像の符号化時のインター予測の動き補償のための参照画像となる。
【００３５】
インター予測部１０９は、参照画像バッファ１０８に保持されている画像を参照画像として取得して動き補償予測を行うものである。
【００３６】
イントラ予測部１１０は、加算部１１２から出力される画像を用いてイントラ予測を行うものである。
【００３７】
切り替え部１１３は、画像のフレーム間又はフレーム内の画像符号化を行うために、インター予測部１０９又はイントラ予測部１１０の出力を切り替えるものである。
【００３８】
（Ａ−１−２）インデックス演算装置の内部構成
図１は、第１の実施形態に係るインデックス演算装置１の構成を示すブロック図である。
【００３９】
第１の実施形態に係るインデックス演算装置１は、映像符号化装置１００における一機能として実現可能なものである。映像符号化装置１００内の各構成部は、符号化処理単位をＺスキャン順に符号化処理を行い、単位ブロック毎の符号化データは、Ｚスキャンインデックス（図５参照）順に保持される。インター予測部１０９が動きベクトルの予測ベクトルを導出する際、若しくは、イントラ予測部１１０がイントラ予測モードの導出を行う際等のように、隣接ブロックのインデックスを求めるような演算処理がなされる場合、インデックス演算装置１は、変換テーブルを用いることなく、Ｚスキャンインデックスの構造の特徴を利用することで、従来のラスターインデックスを用いた演算処理と同等の演算処理を行なう。
【００４０】
なお、インデックス演算装置１は、インター予測やイントラ予測等を行う場合に実行するものであるため、映像符号化装置１００と同様に、図１に示す各構成部を搭載した専用のＩＣチップ等のハードウェアとして構成しても良いし、又は、ＣＰＵと、ＣＰＵが実行するプログラムを中心としてソフトウェア的に構成しても良いが、機能的には図１で表すことができる。
【００４１】
図１において、第１の実施形態に係るインデックス演算装置１は、マスク処理部１１、演算処理部１２を有する。
【００４２】
マスク処理部１１は、入力される再帰的なＺスキャンインデックスに対して、マスク処理を施して、Ｘ方向の成分若しくはＹ方向の成分を抽出するものである。Ｚスキャンインデックスのインデックスのビットパターンは、ＺスキャンインデックスにおけるＸ方向成分（Ｘ方向のインデックス）とＹ方向成分（Ｙ方向のインデックス）とが交互に配置されているという特徴的な構造を有している。そこで、マスク処理部１１は、入力されたＺスキャンインデックスのインデックスのビットパターンに対してマスク処理を施して、当該インデックスのＸ方向成分、Ｙ方向成分を抽出する。
【００４３】
演算処理部１２は、マスク処理部１１によりマスクされたインデックス（Ｘ方向成分、Ｙ方向成分）に対して、所定の演算パラメータを用いて、演算処理を行なうものある。
【００４４】
（Ａ−２）第１の実施形態の動作
次に、第１の実施形態に係るインデックス演算装置１におけるインデックス演算処理を、図面を参照しながら詳細に説明する。
【００４５】
まず、Ｚスキャンインデックスがインデックス演算装置１に入力すると、マスク処理部１１が、Ｚスキャンインデックスのビットパターンから、当該インデックスのＸ方向成分、Ｙ方向成分を抽出する。
【００４６】
ここで、Ｚスキャンインデックスの特徴的な構造を説明する。符号化処理はＺスキャン順に行われ、各ブロックの符号化データは、図５のＺスキャンインデックス順に保持される。図５に示す領域に付されている番号は、Ｚスキャン順を示すインデックス番号であり、符号化データはインデックス番号に対応付けられて保持される。
【００４７】
図５に示すように、Ｚスキャンインデックスは非常に複雑な順にインデックス番号が付けられている。しかし、インデックス番号のビットパターンは、Ｘ方向のインデックスのビットの値と、Ｙ方向のインデックスのビットの値とが交互に配置された構造となっている。
【００４８】
図８は、第１の実施形態に係るＺスキャンインデックスのビットパターンと、抽出するＸ方向成分、Ｙ方向成分との関係を説明する説明図である。なお、図８では、Ｘ方向成分をＸ方向マスクと表記し、Ｙ方向成分をＹ方向マスクと表記している。
【００４９】
ただし、対象となるブロックのサイズがｍ×ｍのサイズであるとする。このとき、単位ブロック数がＸ方向にｍ（例えば１６個）、Ｙ方向にｍ（例えば１６個）であるとする。ブロック全体のＺスキャンインデックスは、Ｎ＝ｍ×ｍ（例えば、１６×１６＝２５６個）であり、インデックス番号のビットパターンは８ビットで表されている。ｍは、４分木構造の性質から２の冪乗数である。
【００５０】
図８に示すように、８ビットのインデックス番号のビットパターンを「ｙ3ｘ3ｙ2ｘ2ｙ1ｘ1ｙ0ｘ0」とすると、ビットパターンは、当該インデックスのＺスキャンインデックスのＸ方向のインデックス「ｘ3ｘ2ｘ1ｘ0」と、Ｙ方向のインデックス「ｙ3ｙ2ｙ1ｙ0」とがビット毎に交互に配置されている。
【００５１】
例えば、図５が、上記のような対象となるブロックのＺスキャンインデックスの一部とする。図５において、Ｚスキャンインデックス番号「７」のビットパターン「ｙ3ｘ3ｙ2ｘ2ｙ1ｘ1ｙ0ｘ0」は「０００００１１１」となる（これは「７」を２進数で示している。）。このビットパターン「ｙ3ｘ3ｙ2ｘ2ｙ1ｘ1ｙ0ｘ0」から、Ｘ方向のインデックス「ｘ3ｘ2ｘ1ｘ0」と、Ｙ方向のインデックス「ｙ3ｙ2ｙ1ｙ0」とを抽出する。すなわち、Ｘ方向のインデックス「ｘ3ｘ2ｘ1ｘ0」は「００１１」となり、Ｙ方向のインデックス「ｙ3ｙ2ｙ1ｙ0」は「０００１」となる。例えば、Ｘ方向のインデックス「ｘ3ｘ2ｘ1ｘ0＝００１１」は１０進法の「３」であり、Ｙ方向のインデックス「ｙ3ｙ2ｙ1ｙ0＝０００１」は１０進法の「１」である。そのため、図５のＺスキャンインデックスの左上であるインデックス番号「０」の位置から、Ｘ方向に「３」だけ移動させ、Ｙ方向に「１」だけ移動させた位置に、Ｚスキャンインデックス番号「７」が位置していることを示す。
【００５２】
上記のように、インデックス番号のビットパターンは、Ｚスキャンインデックスにおける、当該インデックスのＸ方向のインデックスとＹ方向のインデックスとのビットが交互に配置された構造となっている。
【００５３】
このようなインデックスの構造であるため、マスク処理部１１は、Ｚスキャンインデックスから、Ｘ方向成分とＹ方向成分との両方又はいずれかを抽出することができる。
【００５４】
マスク処理部１１によるマスク処理は、種々の方法を広く適用することができるが、次のような方法を適用することができる。例えば、Ｘ方向成分のみを抽出する場合、マスク処理部１１は、図８（ａ）のビットパターン「ｙ3ｘ3ｙ2ｘ2ｙ1ｘ1ｙ0ｘ0」に１６進数の「０ｘ５５（２進数では「０１０１０１０１」）」で論理積を行うことで、Ｙ方向成分をマスクしたＸ方向成分「ｘ3ｘ2ｘ1ｘ0」を得ることができる。また、Ｙ方向成分のみを抽出する場合、図８（ａ）のビットパターン「ｙ3ｘ3ｙ2ｘ2ｙ1ｘ1ｙ0ｘ0」に１６進数の「０ｘＡＡ（２進数では「１０１０１０１０」）」で論理積を行うことで、Ｘ方向成分をマスクしたＸ方向成分「ｙ3ｙ2ｙ1ｙ0」を得ることができる。
【００５５】
なお、マスク処理部１１によるビット演算をハードウェアの回路を用いて行う場合は、配線の工夫のみでＸ方向成分、Ｙ方向成分の抽出を容易に行なうことができるが、汎用の演算器を用いるＣＰＵによる演算処理の場合は、メモリアクセスを伴うテーブル参照を用いないで、ビットが飛び飛びに配置されたままの値として抽出するほうが処理は軽量となる。
【００５６】
上記のようにして、マスク処理部１１は、入力される再帰的なＺスキャンインデックスに対してマスク処理を施すことで、Ｘ方向成分、Ｙ方向成分を抽出することができる。
【００５７】
マスク処理部１１により抽出されたＸ方向成分、Ｙ方向成分は、演算処理部１２に与えられる。そして、演算処理部１２は、マスクされたインデックス（すなわち、Ｘ方向成分、Ｙ方向成分）に対して、所定の演算パラメータを用いて以下のような演算処理を行うことが可能である。
【００５８】
（ａ）ゼロ判定
ゼロ判定は、ＺスキャンインデックスのＸ方向成分若しくはＹ方向成分がゼロであるか否かを判定することである。ゼロ判定は、マスクされたインデックスがゼロであるかどうかを判定することで可能である。
【００５９】
なお、汎用のＣＰＵの論理積演算は演算結果がゼロとなった場合にフラグレジスタのゼロフラグが立つものが一般的であり、演算処理部１２での処理を特に行わずに（演算パラメータも特に用いずに）にマスク処理時のゼロフラグを演算結果としてもよい。
【００６０】
（ｂ）同値判定
同値判定は、ＺスキャンインデックスのＸ方向成分の値若しくはＹ方向成分の値が、所定の値と同値であるかを判定することである。同値判定は、演算パラメータとして、所定の値を図８（ｂ）若しくは図８（ｃ）に示すようなビットパターンで与えることにより、演算処理部１２におけるマスクされたインデックスの値と演算パラメータの値との同値判定演算で判定することで可能である。
【００６１】
例えば、入力されるＺスキャンインデックスが対象ブロックの右端のブロックであるか否かの判定は、ｍ−１の値を図８（ａ）に示すような飛び飛びに配置されたビットパターンで演算パラメータとして与える。あるいは、Ｎ−１の値と０ｘ５５との論理積で演算パラメータを求めてもよい。
【００６２】
（ｃ）大小比較
大小比較は、ＺスキャンインデックスのＸ方向成分の値若しくはＹ方向成分と、所定の値との大小比較をいう。大小比較も、同値判定と同様に、比較対象の所定の値を、図８（ｂ）若しくは図８（ｃ）に示すようなビットパターンで与えることにより、演算処理部１２における通常の比較演算で比較することが可能である。これは、図８（ｂ）、図８（ｃ）のようなマスクされたインデックスの順序関係と、もともとのＸ方向のインデックス「ｘ3ｘ2ｘ1ｘ0」やＹ方向のインデックス「ｙ3ｙ2ｙ1ｙ0」の順序関係とが同じであることによる。
【００６３】
以上のように、Ｚスキャンインデックスに対してマスク処理を施し、マスクされたインデックスのまま、同値判定や大小比較等の演算処理を行って、得られた演算結果を出力する。
【００６４】
（Ａ−３）第１の実施形態の効果
以上のように、第１の実施形態によれば、以下のような効果が得られる。
Ｚスキャンインデックスからラスターインデックスへの変換テーブル用いずにＺスキャンインデックスのＸ方向成分若しくはＹ方向成分に対する、ゼロ判定、同値判定、大小比較等の演算を行うことが可能となり、処理負荷を低減することができる。
【００６５】
（Ｂ）第２の実施形態
次に、本発明に係るインデックス演算装置、プログラム及び方法の第２の実施形態を、図面を参照しながら詳細に説明する。
【００６６】
（Ｂ−１）第２の実施形態の構成
図９は、第２の実施形態に係るインデックス演算装置２の構成を示すブロック図である。
【００６７】
図９において、第２の実施形態のインデックス演算装置２は、Ｘ方向マスク処理部２１１、Ｙ方向マスク処理部２１２、演算処理部２２、結合部２３を有する。
【００６８】
第２の実施形態では、インデックス演算装置２が、再帰的なＺスキャンインデックスを入力し、所定の演算パラメータを用いて演算処理を行った演算結果としてＺスキャンインデックスを出力する。
【００６９】
Ｘ方向マスク処理部２１１は、入力されたＺスキャンインデックスから、Ｙ方向成分をマスクしてＸ方向成分（Ｘ方向インデックス）を抽出し、そのＸ方向成分を演算処理部２２に与える。
【００７０】
Ｙ方向マスク処理部２１２は、入力されたＺスキャンインデックスから、Ｘ方向成分をマスクしてＹ方向成分（Ｙ方向インデックス）を抽出し、そのＹ方向成分を演算処理部２２に与える。
【００７１】
なお、Ｘ方向マスク処理部２１１及びＹ方向マスク処理部２１２によるマスク処理に係る演算方法は、第１の実施形態で説明した演算方法を適用することができる。
【００７２】
演算処理部２２は、Ｘ方向マスク処理部２１１からのマスクされたＸ方向インデックスと、Ｙ方向マスク処理部２１２からのマスクされたＹ方向イシデックスと、入力された所定の演算パラメータとを用いて所定の演算処理を行ない、その演算結果を結合部２３に与える。演算処理部２２は、演算パラメータを用いたＸ方向インデックスに対する演算処理と、演算パラメータを用いたＹ方向インデックスに対する演算処理とを別個に行ない、Ｘ方向インデックスに対する演算結果とＹ方向インデックスに対する演算結果とを結合部２３に与える。
【００７３】
結合部２３は、演算処理部２２からのＸ方向インデックスに対する演算結果と、Ｙ方向インデックスに対する演算結果とを結合して、その演算結果のＺスキャンインデックスを求めて後段の構成部に出力する。
【００７４】
（Ｂ−２）第２の実施形態の動作
次に、第２の実施形態に係るインデックス演算装置２におけるインデックス演算処理を、図面を参照しながら詳細に説明する。
【００７５】
例えばＨＥＶＣでは、注目するブロックに空間的に隣接するブロック（左、上、右上、左上、左下など）のデータを参照して動きベクトルの予測等を行う。
【００７６】
この場合、注目しているブロックのＺスキャンインデックスからＸ方向あるいはＹ方向に所定のブロック数だけ移動した位置のブロックのＺスキャンインデックスを求める処理が必要となる。
【００７７】
第２の実施形態では、インデックス演算装置２に、注目するブロックのＺスキャンインデックスが入力される。そして、Ｘ方向マスク処理部２１１が、第１の実施形態と同様に、入力されるＺスキャンインデックスのＸ方向成分に相当するマスクされたＸ方向インデックスを抽出する。また同時に、Ｙ方向マスク処理部２１２が、Ｙ方向成分に相当するマスクされたＹ方向インデックスを抽出する。これにより、第１の実施形態に係る図８（ｂ）及び図８（ｃ）に示すように、Ｘ方向及びＹ方向の成分を表すビットが飛び飛びに配置されたままの値として抽出する。
【００７８】
次に、演算処理部２２では、マスクされたＸ方向インデックスとマスクされたＹ方向インデックスと所定の演算パラメータとを用いて演算処理を行う。演算処理部２２では、マスクされたＸ方向インデックスおよびＹ方向インデックスに対して、所定の演算パラメータを用いて、以下のように減算や加算を行うことが可能である。
【００７９】
例えば、注目するブロックに空間的に隣接するブロックのデータを参照して動きベクトルの予測等を行う場合、注目ブロックの左に隣接するブロックは、Ｙ方向インデックスは同じであり、かつ、注目ブロックからＸ方向に「１」だけ左方向に移動させた位置のブロックである。この場合、演算処理部２２は、注目ブロックのＸ方向インデックスに対して演算パラメータを「１」とし、Ｘ方向インデックスに「１」だけ減算させる処理を行ない、Ｙ方向インデックスに対しては演算処理を行わない。
【００８０】
同様に、例えば、注目ブロックの右上に隣接するブロックを求める場合、演算処理部２２は、注目ブロックのＸ方向インデックスに演算パラメータ「１」を加算する処理と、注目ブロックのＹ方向インデックスに演算パラメータ「１」を減算する処理とを行う。
【００８１】
（ｄ）減算
図１０は、第２の実施形態に係る演算処理部２２による減算処理を説明する説明図である。図１０では、Ｘ方向インデックスに対する減算処理を例示しているが、Ｙ方向インデックスに対する減算処理も同様である。
【００８２】
マスクされたＸ方向若しくはＹ方向のインデックスに対する減算処理は、減算したい所定の値を図８（ｂ）若しくは図８（ｃ）に示すようなビットパターンで演算パラメータとして与え、演算処理部２２が、マスクされたインデックスと演算パラメータとの通常の減算結果を再度マスクすることにより実現する。
【００８３】
つまり、図１０の例に示すように、Ｘ方向インデックス「０ａ3０ａ2０ａ1０ａ0」のマスク状態と同様にマスクした演算パラメータ「０ｂ3０ｂ2０ｂ1０ｂ0」が演算処理部２２に入力され、演算処理部２２は、Ｘ方向インデックス「０ａ3０ａ2０ａ1０ａ0」から、演算パラメータ「０ｂ3０ｂ2０ｂ1０ｂ0」を減算する。
【００８４】
ここで、減算処理を行なう場合、桁下がりが生じる場合があるが、マスク処理によって「０」に置き換えられたビットはそのまま桁下がりが伝播するため、Ｘ方向若しくはＹ方向の成分を表すビットについては正しい値が求まっている。従って、演算処理部２２は、この結果に再度マスクすることによってマスクされた減算結果を求めることができる。
【００８５】
図１０に示すように、演算処理部２２は、Ｘ方向インデックス「０ａ3０ａ2０ａ1０ａ0」から、演算パラメータ「０ｂ3０ｂ2０ｂ1０ｂ0」を減算した結果「？ｃ3？ｃ2？ｃ1？ｃ0」（「？」の位置は桁下がりが生じ得るビットの値を示している）に対して、１６進数の０ｘ５５（２進数の「０１０１０１０１」）と論理積をとることで、演算結果「０ｃ3０ｃ2０ｃ1０ｃ0」が得られる。
【００８６】
例えば、注目するブロックのＺスキャンインデックスに対して、左に隣接するブロックのＺスキャンインデックスを求める場合は、当該注目ブロックの左であるから、マスクされたＸ方向インデックスから「１」を減算して、その減算結果を１６進数の０ｘ５５（２進数の「０１０１０１０１」）でマスクすることによって、左に隣接するブロックのマスクされたＸ方向インデックスを求めることができる。
【００８７】
（ｅ）加算
図１１は、第２の実施形態に係る演算処理部２２による加算処理を説明する説明図である。図１１でも、Ｘ方向インデックスに対する減算処理を例示しているが、Ｙ方向インデックスに対する減算処理も同様である。
【００８８】
マスクされたＸ方向若しくはＹ方向のインデックスに対する加算処理は、減算処理の場合と同様に、加算したい所定の値を図８（ｂ）若しくは図８（ｃ）に示すようなビットパターンで演算パラメータとして与え、演算処理部２２が、マスクされたインデックスと演算パラメータとの通常の加算結果を再度マスクすることにより実現する。
【００８９】
ここで、加算処理を行なう場合は桁上がりが生じ得る場合があるが、この桁上がりをマスクされたビットを超えて伝播させるために、演算パラメータはマスクされたビットにすべて「１」が挿入された値として与える。あるいは、演算パラメータとしては「０」が挿入された値を用い、Ｘ方向マスク処理部２１１もしくはＹ方向マスク処理部２１２におけるマスク処理を、０ｘ５５、０ｘＡＡとの論理積演算の変わりに０ｘＡＡ、０ｘ５５との論理和演算とすることにとってマスクするべきビットを「１」とするよう構成してもよい。すなわち、加算対象のマスクするべきビットの一方のみに「１」を挿入された値として与える。
【００９０】
演算処理部２２は、得られた通常の加算結果を再度マスクすることによってマスクされた加算結果を求めることができる。
【００９１】
図１１の例に示すように、Ｘ方向インデックス「０ａ3０ａ2０ａ1０ａ0」と、マスクとするべきビットに「１」を挿入した演算パラメータ「１ｂ3１ｂ2１ｂ1１ｂ0」を加算する。そして、演算処理部２２は、加算結果「？ｃ3？ｃ2？ｃ1？ｃ0」（「？」の位置は桁上がりが生じ得るビットの値を示している。）に対して、１６進数の０ｘ５５（２進数の「０１０１０１０１」）との論理積をとることで、演算結果「０ｃ3０ｃ2０ｃ1０ｃ0」が得られる。
【００９２】
これにより、例えば、注目するブロックのＺスキャンインデックスから右にｉブロックの移動した位置のＺスキャンインデックスを求める場合は、演算パラメータとして「ｉ」を図８（ｂ）のビットパターンで「１」を交互に挿入して与え、マスクされたＸ方向インデックスとこの演算パラメータを加算した結果を１６進数の０ｘ５５（２進数の「０１０１０１０１」）でマスクすることによって、移動後のブロックのマスクされたＸ方向インデックスを求めることができる。
【００９３】
以上のような減算や加算処理を組み合わせて、マスクされたインデックスのまま演算処理を行い、また実施形態１の判定処理も組み合わせることでＸ方向およびＹ方向のマスクされたインデックスに対する演算処理を演算処理部２２で行う。
【００９４】
結合部２３は、演算処理部２２により得られたＸ方向およびＹ方向の演算結果を、論理和を用いて図８（ａ）のようなビットパターンに結合することにより演算結果のＺスキャンインデックスを求めて出力する。
【００９５】
（Ｂ−３）第２の実施形態の効果
以上のように、第２の実施形態によれば以下のような効果が得られる。
Ｚスキャンインデックスとラスターインデックスの間の双方向の変換テーブル用いずにＺスキャンインデックスのＸ方向もしくはＹ方向の成分、あるいはその双方に対する加算、減算等の処理を行うことが可能となり、処理負荷を低減することができる。
【００９６】
（Ｃ）他の実施形態
上述した実施形態においても種々の変形実施形態を言及したが、本発明は、以下の変形実施形態にも広く適用することができる。
【００９７】
（Ｃ−１）本発明は、上述した第１及び第２の実施形態に限定されるものではなく、ＨＥＶＣと同様な再帰的なＺスキャンインデックスを用いるような処理の演算処理に広く適用することができる。
【００９８】
（Ｃ−２）本発明は、上述した第１及び第２の実施形態で説明した構成を有するような演算方法として構成する場合や、上記処理を実現するようなプログラムとしても実施可能である。
【符号の説明】
【００９９】
１及び２…インデックス演算装置、１１…マスク処理部、１２及び２２…演算処理部、２１１…Ｘ方向マスク処理部、２１２…Ｙ方向マスク処理部、２３…結合部。
【図１】
0006485045.tif 000002
【図２】
0006485045.tif 000003
【図３】
0006485045.tif 000004
【図４】
0006485045.tif 000005
【図５】
0006485045.tif 000006
【図６】
0006485045.tif 000007
【図７】
0006485045.tif 000008
【図８】
0006485045.tif 000009
【図９】
0006485045.tif 000010
【図１０】
0006485045.tif 000011
【図１１】
0006485045.tif 000012