以下、本発明の画像処理装置および画像処理方法の実施の形態について、図面を参照して説明する。
まず、図2を参照して、本発明が適用される画像処理装置の基本的な構成と動作について説明する。
この画像処理装置は、画像符号化部211と、画像復号部221により構成されている。圧縮画像を生成し送信する画像符号化部211は、ベクトル量子化による符号化処理を実行するVQエンコーダ201、入力データの動き判定を実行する動き判定部202、静ベクトルに対応する代表ベクトルをインデックスに対応付けて格納した静止画コードブック203、動ベクトルに対応する代表ベクトルをインデックスに対応付けて格納した動画コードブック204、動き判定部202の判定結果に基づいて静止画コードブック203、動画コードブック204のいずれかをVQエンコーダ201において選択参照可能とする選択部205とを有する。
圧縮画像を受信し復号を実行する画像復号部221は、受信した圧縮データ(インデックス)を、インデックスに対応する代表ベクトルに変換して復号処理を実行するVQデコーダ206、受信されたインデックスが動画コードブックのインデックスであるのか、静止画コードブックのインデックスであるのかを判定する動画/静止画評価判定部207、静ベクトルに対応する代表ベクトルをインデックスに対応付けて格納した静止画コードブック208、動ベクトルに対応する代表ベクトルをインデックスに対応付けて格納した動画コードブック209、動画/静止画評価判定部207の判定結果に基づいて静止画コードブック208と動画コードブック209のいずれかをVQデコーダ206において選択参照可能とする選択部210とを有する。
なお、図2には、符号化部211より出力されたデータが、復号部221で受信、復号されるように示されているが、基本的には、符号化部211により符号化されたデータが、他の画像処理装置に送信され、他の画像処理装置から送信されてきた符号化データが、復号部221で復号されるものである。
VQエンコーダ201は、符号化対象となる入力画像から得られる波形を標本化した後、連続した複数の標本値を要素とするベクトル系列を生成し、この入力ベクトルと、コードブック203,204に格納された複数の量子化代表ベクトルとを比較して、最も誤差の小さい量子化代表ベクトルを選択し、その選択された代表ベクトルに識別値として付加されているインデックスを2進符号化し、受信側に転送する。
動き判定部202は、入力データのベクトル生成処理において、入力画像が静止画であるのか、または動画であるのかを判定する。この判定処理は、前述したと同様に、各フレームの所定の数の画素からなる各ブロック毎に、下記の式によって表される差分値Eを求め、その差分値Eを予め定めた閾値と比較することによって実行される。
上記式(2)は、式(1)と同一の式であり、式(2)において、f0(x+i,y+j)は、フレーム0における画素値を示し、f1(x+i,y+j)は、フレーム0に続くフレーム1における画素値を示す。動き判定部202は、上記式(2)によって求められた差分値Eを閾値THと比較し、E≧THである場合、入力画像を動画であると判定し、E<THである場合、入力画像を静止画であると判定する。
動き判定部202は、その判定結果に基づいて、選択部205の切り替えを実行する。入力された画像が静止画である場合、静止画コードブック203が選択され、入力された画像が動画である場合、動画コードブック204が選択され、VQエンコーダ201に接続される。VQエンコーダ201は、入力された画像が静止画である場合、静止画に基づく静ベクトルを生成し、静止画コードブック203の代表ベクトルの中から、その静ベクトルに最も近い代表ベクトルを選択し、その選択した代表ベクトルに対応付けられたインデックスを選択し、出力する。また、VQエンコーダ201は、入力された画像が動画である場合、動画に基づく動ベクトルを生成し、動画コードブック204の代表ベクトルの中から、その動ベクトルに最も近い代表ベクトルを選択し、その選択した代表ベクトルに対応付けられたインデックスを選択し、出力する。
VQエンコーダ201は、入力画像が動画である場合と、静止画である場合とで、異なる処理により、それぞれ静ベクトルまたは動ベクトルを生成する。静ベクトル生成処理および動ベクトル生成処理について図3および図4を用いて説明する。
図3は、静ベクトル生成処理を説明する図である。ブロック化した画像領域の時間軸方向の連続フレームとして、フレーム#kと、フレーム#k+1が示されている。各フレームを構成する9個(=3×3)のブロックは、前述のベクトル量子化インデックスが各々対応付けられる領域として設定されるブロックである。
前述の式(2)に基づき演算した差分値Eと閾値との比較に基づいて、ブロックが静止画であることが動き判定部202で判定されると、VQエンコーダ201は、静止画に対する静ベクトルとして、フレームkとフレームk+1の対応するブロックの標本値に基づいて、静ベクトルを生成する。例えば図3に示されるように、フレーム#kの注目ブロックI0の1×2個の標本値(画素値)d0,d1と、連続フレーム#k+1の対応ブロックI0の1×2個の標本値d2,d3に基づいて、静ベクトル(d0,d1,d2,d3)が生成される。
一方、動ベクトルの生成処理について図4を用いて説明する。前述の式(2)に基づき演算した差分値Eと閾値との比較に基づいて、ブロックが動画であることが動き判定部202で判定されると、動画に対する動ベクトルとして、単一のフレームのブロック、例えばフレーム#kのみの標本値から動ベクトルが生成される。
図4に示す例では、フレーム#kの注目ブロックI0について、ブロックI0の持つ2×2個の標本値d0,d1,d2,d3に基づいて動ベクトル(d0,d1,d2,d3)が生成される。
なお、静ベクトルまたは動ベクトルは、それを構成する要素(画素値)の垂直方向の数v、水平方向の数h、およびフレームの数tにより、v×h×tと表される。
このように生成するベクトルは、画像が静止画であるのか、または動画であるのかに応じて、処理が異なり、生成されたベクトルの持つ意味が異なってくる。従って、コードブックもまた、動画コードブック204,209と、静止画コードブック203,208と、異なるものが用意される。なお、動画コードブック209は、動画コードブック204と同一の内容のものであり、静止画コードブック208は、静止画コードブック203と同一の内容のものである。
コードブックの構成例を図5に示す。図5Aは動画コードブックの例を表す。この例では、前述した1つのフレームのブロックに基づく動ベクトル(d0,d1,d2,d3)に対応する様々なパターンの代表値としての複数の異なる代表ベクトルが格納されている。さらに、各代表ベクトルに対応して、識別値としてインデックス1乃至N−1が付与されている。例えば、インデックス1に対応する代表ベクトルは、(80,40,50,70)とされ、インデックス2に対応する代表ベクトルは、(30,20,50,80)とされている。
また、図5Bは静止画コードブックの例を表す。この例では、前述した連続する2つのフレームのブロックに基づく静ベクトル(d0,d1,d2,d3)に対応する様々なパターンの代表値としての複数の異なる代表ベクトルが格納され、各代表ベクトルに対応して識別値としてのインデックス1乃至N−1が付与されている。例えば、インデックス1に対応する代表ベクトルは、(30,40,30,40)とされ、インデックス2に対応する代表ベクトルは、(30,20,20,20)とされている。
図2に戻り、符号化部211の処理の説明を続ける。VQエンコーダ201は、符号化対象となる画像データの静動判定に基づいて、上述した動ベクトルまたは静ベクトルいずれかのベクトル生成処理を実行し、生成したベクトルが静ベクトルである場合、静止画コードブック203に記憶されている代表ベクトル中から、動ベクトルである場合、動画コードブック204に記憶されている代表ベクトル中から、それぞれ、生成ベクトルに最も近い、すなわち誤差が最小となる代表ベクトルを選択し、選択した代表ベクトルに対応して設定されているインデックスを、そのブロックのベクトル量子化インデックスとする。
本発明の画像処理装置は、符号化部211で符号化された、これらのインデックスのみを受信側に送信する。すなわち、画像処理装置は、従来のように、静動を判定する動きフラグを各ブロックに付加せずに、インデックスだけを送信する。従って、送信データ量が削減され、またVQエンコーダ201における処理も軽減される。
つまり、処理対象ブロックの静動判定に基づいて、異なるコードブックを適用して符号化と復号を実行する場合、データ受信側において、いずれのコードブックを適用すべきかを判定するための動きフラグを必要とする。
動きフラグは符号化単位として設定されるブロック毎に付加することが必要となる。データ量の削減を目的として行われる圧縮伝送において、各ブロックに新たなビットとして動きフラグを付加するということは伝送データの増加をもたらし、データ量削減の目的に反することになる。また、データ送信側での動きフラグ付加処理、データ受信側でのフラグに基づく静動判定処理も、処理の効率化の点で妨げになる。
本発明の画像処理装置では、動き判定フラグの付加処理、伝送処理を不要とし、インデックスのみをデータ送信側からデータ受信側に送信する構成とし、データ受信側において、受信インデックスのみに基づいて、受信インデックスが動画コードブックのインデックスであるか、静止画コードブックのインデックスであるかを判定し、判定結果に基づいて、いずれかのコードブックを選択して復号処理を実行する。
次に、データ受信側、すなわち復号処理を実行する復号部221の処理について説明する。復号部221の動画/静止画評価判定部207は、受信したベクトル量子化インデックスが、動画コードブックに基づくインデックスであるのか、静止画コードブックに基づくインデックスであるのかを判定する。
動画/静止画評価判定部207の詳細な構成を図6に示す。動画/静止画評価判定部207は、データ送信側から画像圧縮データとしてのベクトル量子化インデックスを受信するデータ入力部601の他、比較判定部602、静動判定テーブル格納部603、および判定結果出力部604を有する。
静動判定テーブル格納部603は、図7Bに示される静動判定テーブルを有する。静動判定テーブルは、図7Aに示される、時間軸において連続する複数のフレーム(図7Bの例の場合、フレーム#kとフレーム#k+1の2フレーム)のインデックスであって、所定のインデックスが付与された注目ブロック(例えば、フレーム#kではI0、フレーム#k+1ではI1)の近傍の近傍ブロックのインデックス(図7Bの例では、フレーム#kの注目ブロックを囲繞する周囲のブロックのインデックスi00,i01,・・・,i07、またはフレーム#k+1の注目ブロックを囲繞する周囲のブロックのインデックスi10,i11,・・・,i17)の、複数の異なるパターンについて格納したテーブルであり、各インデックスのデータパターンの各々に、静または動を示す静動データが対応付けられている。
図7Bの例では、インデックスi00,i01,・・・,i07,i10,i11,・・・,i17の値として、3,4,2,・・・,4,5,7のデータパターンに対して動(1)の静動データが付加されており、3,2,5,・・・,2,5,8のデータパターンに対して静(0)の静動データが付加されている。
静動データは、復号処理対象ブロックとしての注目ブロックが動画、すなわち動ベクトル適用ブロックであるのか、静止画、すなわち静止ベクトル適用ブロックであるのかを示している。すなわち、静動データは、フレーム#k,フレーム#k+1のそれぞれの注目ブロックに設定されたインデックスI0,I1が、動画コードブック204に基づいて設定されたベクトル量子化インデックスであるのか、静止画コードブック203に基づいて設定されたベクトル量子化インデックスであるのかを示す。このテーブルは、画像に基づく実際の処理、すなわち学習により生成される。
図7Aに示されるように、テーブルに格納される近傍ブロックのインデックスは、静止画、すなわち静止ベクトル適用ブロックと、動画、すなわち動ベクトル適用ブロックとでは、異なる態様であるため、それぞれのブロックに応じてインデックスをテーブルに格納することが必要となる。図7Aでは、左側の2フレームは、すべて動ベクトル適用ブロックによって構成され、右側の2フレームは、すべて静ベクトル適用ブロックによって構成された例を示しているが、例えば図8に示されるように、フレーム内に静ベクトル適用ブロックと動ベクトル適用ブロックが混在する場合であっても、各フレームから、ベクトル量子化インデックスを取得して静動判定テーブルを構成することができる。
図6に示す比較判定部602は、入力部601を介して取り込んだ受信データの、復号処理対象ブロック(注目ブロック)の近傍ブロックのインデックスのパターンを検出し、静動判定テーブル格納部603に格納されている静動判定テーブルに格納されているインデックスパターンと比較する。そして、比較判定部602は、検出されたインデックスパターンと同一または最小誤差のインデックスパターン列を静動判定テーブルから選択し、選択したインデックスパターンに対応付けられた静動データを、判定結果出力部604を介して図2の選択部210に出力する。選択部210は、判定結果としての静動データが、動を示す場合、動画コードブック209を選択し、静動データが、静を示す場合、静止画コードブック208を選択し、VQデコーダ206に参照可能に接続する。VQデコーダ206は、復号処理対象ブロック(注目ブロック)に対応付けられたインデックスに対応する代表ベクトル(d0,d1,d2,d3)を、それが静止画ブロックである場合、静止画コードブック208(図5B)から選択し、それが動画ブロックである場合、動画コードブック209(図5A)から選択することで、復号処理を実行する。
次に、図7に示した静動判定テーブルの生成処理について、図9のフローチャートに基づいて説明する。この処理は、所定のタイミングにおいて、動画/静止画評価判定部207により実行される。この静動判定テーブルは、画像のブロック単位での静動判定処理と、VQエンコーダで付与されるインデックスの抽出処理とを実行することによって生成される。
まず、動画/静止画評価判定部207は、ステップS901で画像データを入力し、ステップS902において、時間軸において連続するフレームに基づいて、フレーム間の対応するブロックに関して、前述の式(2)を適用して差分値Eを求め、予め定めた閾値THと比較して、処理ブロックが動画、すなわち動ベクトルを生成するブロックであるのか、静止画、すなわち静ベクトルを生成するブロックであるのかを判定する。
ステップS903で、処理ブロックが動ベクトル生成ブロックであると判定された場合、ステップS904に進み、動画/静止画評価判定部207は、前述した動画コードブック209から、生成ベクトルに最も近い代表ベクトルを選択し、選択した代表ベクトルに設定されたインデックスを処理ブロックのインデックスとして設定する。
一方、ステップS903で、処理ブロックが動ベクトル生成ブロックではないと判定した場合、ステップS905に進み、動画/静止画評価判定部207は、前述した静止画コードブック208から、生成ベクトルに最も近い代表ベクトルを選択し、選択した代表ベクトルに設定されたインデックスを、処理ブロックのインデックスとして設定する。
次に、ステップS906において、動画/静止画評価判定部207は、1フレームあたり、処理ブロックの近傍の8つの近傍ブロックのインデックス(近傍インデックス)を検出する。これらの近傍インデックスについては、動画コードブック209のインデックスであるのか、静止画コードブック208のインデックスであるのかについては検討を要しない。インデックスとして設定された値のみが取得される。このとき、時間軸において連続するフレーム#k,#k+1の2フレームを1つの処理単位として、各フレームにおける近傍ブロックのインデックスが求められる。そのため、いまの場合、1処理単位あたり、16ブロックのインデックスが求められる。なお、近傍ブロックのインデックスが未算出である場合、ステップS902乃至S905と同様の処理が、近傍ブロックに対して実行され、各ブロックのインデックスが求められる。
ステップS907において、動画/静止画評価判定部207は、ステップS904またはステップS905で求めた各近傍ブロックのインデックスと、ステップS901の静動判定処理で求めた注目ブロックである処理ブロックの静動判定データを、テーブルに格納して1つのテーブルエントリデータとする。
以上の処理が、入力画像の各ブロックから得られるベクトルについて順次実行され、テーブルエントリを順次増加させてテーブルが生成され、ステップS908で、入力画像の処理が終了したと判定されるまで、ステップS901乃至S907の処理が繰り返され、入力画像の処理が終了したと判定されたとき、テーブル生成処理が終了する。
なお、同一のインデックスパターンに対しても、対象ブロックが動画である場合と、静止画である場合とが発生する可能性がある。そこで、各ブロックのインデックスパターン毎に、対象ブロックが静止画と判定された回数、および動画と判定された回数をカウントし、その度数分布を作成することで、テーブルを作成することができる。
図10に、このようにして、テーブル作成過程における対象ブロックが静止画であると判定された回数と、動画であると判定された回数とを測定したテーブルの例を示す。例えば図10Bの最下段に示すように、インデックスパターンに対して対象ブロックがすべて動画である(静止画カウントの値が0であり、動画カウントの値が30である)と判定された場合、そのインデックスパターンに対しての静動データは動として設定される。図10Bの最上段に示すように、インデックスパターンに対して対象ブロックが静止画であると判定された回数が多い(静止画カウントの値が21であり、動画カウントの値が3である)場合、そのインデックスパターンに対しての静動データは静として設定される。図10Bの第2列段に示すように、インデックスパターンに対して対象ブロックが静止画であると判定された回数と、動画であると判定された回数が均衡している(静止画カウントの値が10であり、動画カウントの値が10である)場合の処理については、静動判定テーブルの生成処理における精度向上手法として、その詳細は後述する。
なお、静動判定テーブルは、予め何らかのサンプル画像データを用いて図9に示すフローチャートの処理を実行して生成し、生成したテーブルを適用して様々な入力画像の静動判定に適用したり、あるいは、画像の種類に応じたテーブルを複数生成し、入力画像に応じてテーブルを選択し、最適なテーブルを用いた静動判定を実行するように構成してもよい。
また、図7Bに示す静動判定テーブルは、注目ブロックのインデックス、すなわち、図7Aの注目ブロックのインデックスI0,I1を、テーブル内データとして含まない構成であるが、これらのデータについても静動判定テーブル内に格納してテーブルデータを構成してもよい。
さらに、実際の処理画像の一部について図9のフローチャートの処理を実行して、処理画像専用の静動判定テーブルを生成し、生成した専用テーブルに基づいて処理画像の静動判定を実行する構成とし、処理画像毎に判定テーブルを生成するようにしてもよい。
動画/静止画評価判定部207は、インデックスデータ列を受信したとき、上述した図9のフローチャートに従って生成された図7に示す静動判定テーブルの格納データを参照し、受信インデックスデータ列に最も近い、すなわち誤差が最小となるインデックスデータ列を選択し、その選択されたインデックスデータ列に対応してテーブルに設定されている静動データに基づいて、受信インデックスデータ列が動画コードブックのインデックスであるのか、または静止画コードブックのインデックスであるのかを判定する。
動画/静止画評価判定部207は、その判定に基づいて選択部210を制御し、受信インデックスが静ベクトルに対応するインデックスであると判定した場合、静ベクトルに対応する代表ベクトルを格納した静止画コードブック208を、また、受信インデックスが動ベクトルに対応するインデックスであると判定した場合、動ベクトルに対応する代表ベクトルを格納した動画コードブック209を、それぞれVQデコーダ206において選択参照可能とする。
VQデコーダ206は、静止画コードブック208と動画コードブック209のうち、いずれか選択された方を参照して、入力インデックスに対応するインデックスの代表ベクトルを取得して、取得した代表ベクトルに基づく復号処理を実行する。
次に、データ送信側からインデックスのみを受信して、コードブックを使用した動き適応ベクトル量子化データの復号処理を実行する復号部221の処理について、図11のフローチャートを用いて説明する。
まず、ステップS1101において、動画/静止画評価判定部207が受信ベクトル量子化インデックスデータ列のパターンを検出する。検出するパターンは、時間軸に連続する各フレームにおける、復号対象となる注目ブロックの近傍の近傍ブロックのインデックスパターン(図7A参照)である。
次に、ステップS1102において、動画/静止画評価判定部207は、静動判定テーブル(図7B)を参照して、受信インデックスパターンと一致するインデックスデータ列を検索し、ステップS1103において、検索結果として、一致するインデックスデータ列が、静動判定テーブル中にあったか否かを判定する。
動画/静止画評価判定部207は、静動判定テーブルに受信インデックスパターンと一致するデータ列があった場合、ステップS1104で、一致するインデックスデータ列を選択し、一致データがなかった場合、ステップS1105で、受信インデックスパターンに最も近い、誤差が最小のインデックスデータ列を選択する。
次に、動画/静止画評価判定部207は、ステップS1106において、選択インデックスデータ列に設定された静動データを取得し、ステップS1107において、取得された静動データが動または静のいずれであるのかを判定する。取得された静動データが動である場合、VQデコーダ206は、ステップS1108において、動画コードブック209から、復号対象となる注目ブロックのインデックスに対応する代表ベクトルを選択し、復号処理を実行する。
一方、ステップS1107において、取得された静動データが静であると判定された場合、VQデコーダ206は、ステップS1109において、静止画コードブック208から、復号対象となる注目ブロックのインデックスに対応する代表ベクトルを選択し、復号処理を実行する。
ステップS1101において、全ての入力インデックスに基づく復号処理が実行されたか否かが判定され、まだ実行されていなければ、ステップS1101乃至S1109の処理が繰り返され、全ての受信データの復号が終了したと判定されたとき、処理が終了される。
上述したように、本発明の構成に係る復号部221は、各ブロックについての静動判定を行なうための動きフラグを受信することなく、ベクトル量子化インデックスのみを受信し、受信したベクトル量子化インデックスのみに基づいて、受信インデックスが動画コードブックのインデックスであるのか、静止画コードブックのインデックスであるのかを判定する。従って、各ブロック毎の動きフラグの受信が不要となり、送信データ量の削減が実現できる。
なお、図3と図4を用いて説明したように、動ベクトルと静ベクトルでは、ベクトル生成のための要素配列が異なり、ベクトル生成処理では、ブロックが静止画であるのか、または動画であるのかによって、要素配列を並び替えてベクトルを生成することが必要となる。図2に示す構成においては、符号化部211のVQエンコーダ201が、ブロックの静動に基づいて、ブロック化された画像信号に基づくベクトル生成のための要素の並び替え処理を実行し、並び替え処理による要素配列に基づいて、動ベクトルまたは静ベクトルの生成を実行するようにし、また、復号部221においては、VQデコーダ206が、動ベクトルまたは静ベクトルに対応する代表ベクトルの復号を実行し、ベクトルの静動に基づいて、要素の並び替え(符号化時と逆の処理)を行なって出力するよに構成したが、VQエンコーダ201またはVQデコーダ206において、これらの要素並び替え処理を実行するのではなく、図12に示されるように、符号化部211のVQエンコーダ201の前段に、ブロック化された画像信号に基づくベクトル生成のための要素並び替え処理を実行する要素変換部251を設け、要素変換部251において、動き判定部の判定したブロックの静動に基づいて、要素並び替えを実行する構成としてもよい。同様に、復号部221においては、VQデコーダ206の後段に要素逆変換部252を設け、要素逆変換部252により、動画/静止画評価判定部207の判定結果に基づいて、要素の並び替え(符号化時と逆の処理)を行なう構成としてもよい。
ところで、送信側から受信側に送信されたベクトル量子化インデックスを、受信側において受信することができないような場合がある。この場合、そのままでは、データを復号することができない。そこで、このようなインデックスエラーが発生した場合、静動判定テーブルに基づいて、エラーリカバリー処理を実行し、データを復号することができるようにすることができる。
図13に、この場合の画像処理装置の構成を示す。符号化部211は図2に示した場合と同様の構成であるので、その説明は省略する。データ受信側、すなわち復号処理を実行する画像復号部221は、動画/静止画評価判定およびエラーリカバリ部1101が設けられている点が図2の場合と異なっている。
動画/静止画評価判定およびエラーリカバリ部1101の詳細構成を図14に示す。動画/静止画評価判定およびエラーリカバリ部1101は、データ送信側から画像圧縮データとしてのベクトル量子化インデックスを受信するデータ入力部1201の他、比較判定部1202、静動判定およびエラーリカバリテーブル格納部1203、インデックスエラーリカバリ部1204、判定結果出力部1205を有する。
静動判定およびエラーリカバリテーブル格納部1203は静動判定およびエラーリカバリテーブルを有しており、図15にその例が示されている。図15Bに示す静動判定およびエラーリカバリテーブルは、時間軸における連続する2つのフレーム(図15Bの例の場合、#kフレームと#k+1フレーム)の注目ブロックの近傍ブロックに付与されたインデックスを、複数の異なるパターンについて格納したテーブルであり、近傍ブロックインデックスについては、先に説明した図7の静動判定テーブルの構成と同様である。
図15の静動判定およびエラーリカバリテーブルには、静動判定を行なうための静動データのみではなく、インデックスデータの受信に失敗したときの、すなわちエラーインデックスを注目ブロックとして設定したときの、注目ブロックのインデックスが記録されている。これにより、時間軸において連続する2つのフレームの注目ブロックの近傍ブロックに付与されたインデックスから、エラーとなった注目ブロックのインデックスを求めることが可能となっている。
動画ブロック、すなわち動ベクトルを適用したブロックと、静止画ブロック、すなわち静ベクトルを適用したブロックとでは、先のベクトル生成処理の説明から理解されるように、異なるベクトル生成処理が実行され、それぞれのインデックスの持つ意味が異なる。従って、静動判定およびエラーリカバリテーブルのエラーインデックスI0,I1は、注目ブロックが、動ベクトルを適用したブロックである場合と、静ベクトルを適用したブロックである場合とで、異なる意味を持つ。
注目ブロックが動ベクトルを適用したブロックである場合、静動判定およびエラーリカバリテーブルに格納されたI0は、フレーム#kの注目ブロックである中央ブロックのベクトル量子化インデックスを表すものとなり、I1は、フレーム#kと時間軸において連続するフレーム#k+1の中央ブロックのベクトル量子化インデックスを表すものとなる。
一方、注目ブロックが静ベクトルを適用したブロックである場合、静動判定およびエラーリカバリテーブルに格納されたI0は、フレーム#kおよびフレーム#kと時間軸において連続するフレーム#k+1の注目ブロックである中央ブロックの、一方の分割領域に割り当てられたベクトル量子化インデックスとなり、I1は、他方の分割領域に割り当てられたベクトル量子化インデックスとなる。
なお、静動判定およびエラーリカバリテーブルは、予め何らかのサンプル画像データを用いて、先に説明した図9に示すフローチャートと同様の処理によって生成される。このテーブルが様々な入力画像の静動判定およびエラーリカバリに適用される。あるいは、画像の種類に応じたテーブルを複数生成し、入力画像に応じて適宜テーブルを選択し、最適なテーブルを用いて静動判定を実行するように構成してもよい。また、実際の処理画像の一部について、図9のフローチャートに示す処理を実行して、処理画像専用の静動判定およびエラーリカバリテーブルを生成し、生成した専用テーブルに基づいて、処理画像の静動判定を実行する構成、すなわち、処理画像毎に静動判定およびエラーリカバリテーブルを生成するようにしてもよい。
図14に示す比較判定部1202は、入力部1201を介して入力された、復号処理対象ブロックの近傍ブロックのベクトル量子化インデックスパターンと、静動判定およびエラーリカバリテーブル格納部1203の静動判定およびエラーリカバリテーブルに格納されたインデックスパターン列とを比較し、同一または最小誤差のインデックスパターン列を静動判定およびエラーリカバリテーブルから選択し、選択したインデックスパターン列に対応付けられた静動判定結果データを、判定結果出力部1205を介して図13の選択部210に出力する。選択部210は、その判定結果に従って、代表ベクトルを格納した動画コードブック209または静止画コードブック208のいずれかを選択し、VQデコーダ206において参照可能にする。
また、インデックスエラーリカバリ部1204は、受信インデックスにエラーがある場合、上述したようにして比較判定部1202において、静動判定の基礎とされたインデックスパターン列に対応付けられたエラーインデックス(図15のI0またはI1)を、静動判定およびエラーリカバリテーブル格納部1203の静動判定およびエラーリカバリテーブルから取得し、これをVQデコーダ206に出力する。
VQデコーダ206は、復号処理対象ブロックに対応付けられたベクトル量子化インデックスを、受信データ、あるいは、インデックスエラーリカバリ部1204から取得し、取得したインデックスに対応する代表ベクトルを、その復号処理対象ブロックの静動判定結果に基づくコードブック(図5の動画コードブックまたは静止画コードブック)から選択して、復号処理を実行する。
以上の、静動判定およびエラーリカバリテーブルを用いたエラーリカバリ処理を含む復号処理の詳細について、図16のフローチャートを用いて説明する。
まず、ステップS1601において、動画/静止画評価判定およびエラーリカバリ部1101の比較判定部1202が、受信ベクトル量子化インデックスデータ列のパターンを検出する。検出するパターンは、時間軸に連続するフレームにおける、復号対象となる注目ブロックに対する近傍ブロックのインデックスパターン(図15A参照)である。
次に、ステップS1602において、比較判定部1202は、受信したインデックスパターン列に対応するインデックスパターン列を、静動判定およびエラーリカバリテーブルから検索し、ステップS1603において、検索結果として、一致するインデックスデータ列がテーブル中にあったか否かを判定する。
比較判定部1202は、静動判定およびエラーリカバリテーブルに受信インデックスパターンと一致するデータ列があった場合、ステップS1604において、一致するインデックスデータ列を選択し、一致データがなかった場合、ステップS1605において、受信インデックスパターン列に最も近い、誤差が最小のインデックスデータ列を選択する。
次にステップS1606において、インデックスエラーリカバリ部1204は、注目ブロックのインデックスエラーが発生しているか否かを判定し、エラーがない場合、ステップS1608において、選択インデックスデータ列に設定された静動データを、静動判定およびエラーリカバリテーブル(図15)から取得する。注目ブロックにエラーがある場合、インデックスエラーリカバリ部1204は、ステップS1607において、静動判定およびエラーリカバリテーブルの選択インデックスデータ列に設定された静動データに加えて、エラーとなった注目ブロックのエラーインデックス(図15BのI0またはI1)を取得する。
次にステップS1609において、インデックスエラーリカバリ部1204は、取得された静動データが動であると判定した場合、ステップS1610において、動画コードブック209(図5A)から、復号対象となる注目ブロックのインデックスに対応する代表ベクトルを決定して、復号処理を実行する。
一方、ステップS1609において、取得された静動データが静であると判定した場合、インデックスエラーリカバリ部1204は、ステップS1611において、静止画コードブック208(図5B)から、復号対象となる注目ブロックのインデックスに対応する代表ベクトルを決定して、復号処理を実行する。
ステップS1612において、インデックスエラーリカバリ部1204は、全ての受信データの復号が終了したか否かを判定する。すべての処理がまだ終了していなければ、ステップS1601乃至S1611の処理が繰り返される。全ての受信データの復号処理が終了したとき処理は終了される。
上述したように、本実施の形態の構成に係る復号部221は、受信するベクトル量子化インデックスにエラーが発生した場合においても、近傍ブロックのインデックスパターンに基づいて、静動判定およびエラーリカバリテーブルを参照して、欠落したエラーインデックスを求めることが可能となる。従って、高精度のデータ復号処理が可能となる。
次に、静動判定テーブルの生成処理における精度向上手法について説明する。先に注目ブロックの近傍ブロックのベクトル量子化インデックスに基づいて、注目ブロックのベクトル量子化インデックスの静動を判定するテーブルとして、図7に示すテーブルを示し、またそのテーブル生成処理フローチャートを図9を用いて説明した。
図9を用いて説明した静動判定テーブル生成処理では、先に述べたように、ある特定の画像を入力して、実際に各フレームに含まれる注目ブロックとしての中央ブロックの静動判定を実行し、さらに注目ブロックに対する近傍ブロックのインデックスを取得して、テーブルデータとして構成するようにした。この場合、処理データを多くして、様々なインデックスパターンをテーブル登録することにより、テーブルのヒット率、すなわち、処理対象データとしての受信インデックスパターンと、テーブル格納インデックスパターンの一致する確率を高めることが可能となる。
しかしながら、静動テーブル生成処理において、ある注目ブロックの近傍ブロックのインデックスパターンが同一であるにもかかわらず、注目ブロックが動画、すなわち動ベクトル適用ブロックである場合と、静止画、すなわち静ベクトル適用ブロックである場合が、発生し得る。
このような場合、図7に示す静動判定テーブルにおいて、同一のインデックスパターンに対して、異なる静動データを重複して登録することはできないので、何らかの手当てが必要となる。1つの手法は、同一インデックスパターンについて、注目ブロックが動ベクトル適用と判定された場合の出現度数と、静ベクトル適用と判定された場合の出現度数をカウントして、多い方を静動判定テーブルにおける当該インデックスパターンの静動データとする方法である。
しかしながら、注目ブロックが動ベクトル適用の場合と、静ベクトル適用の場合とで、ほぼ同率で、同じ近傍ブロックのインデックスパターンが発生した場合、やはり、静動データを決定することができない。以下、この場合の処理について説明する。
いま、静動判定テーブルは、図17に示されるように、時間軸において連続する2つのフレームの各フレームの3×3=9個のインデックスを含み、2フレームで、合計18個のインデックスを含むものとする。
例えば、テーブル生成処理において、連続する2フレームの、注目ブロックの近傍ブロックの、1フレーム9個で、合計18個のインデックスパターン列として、[1,4,2,…3,N−1,7]が複数回出現し、その注目ブロックが動ベクトル適用と判定された場合と、静ベクトル適用と判定された場合が、ほぼ同数であったとする。
これは、例えば、インデックスパターン列[1,4,2,…3,N−1,7]に対して、注目ブロックが動ベクトル適用ブロックであった回数が5回であり、また注目ブロックが静ベクトル適用ブロックであった回数も5回であったような場合である。このように、同一インデックスパターンについて、静動データの動と静のいずれをも対応付けることが困難な場合、動画コードブック、または静止画コードブックのいずれかのインデックス入れ替え処理が実行される。
動画コードブック、または静止画コードブックにおいては、図5を用いて説明したように、インデックス1乃至N−1に対してそれぞれ異なる代表ベクトルが対応付けられている。上述のインデックスパターン列[1,4,2,…3,N−1,7]中の数値は、図5Aの動画コードブック、または、図5Bの静止画コードブックの、インデックス1乃至N−1のいずれかを示している。
静動判定テーブルの生成処理において、同一のインデックスパターン列の出現回数が、注目ブロックが動ベクトル適用の場合と、静ベクトル適用の場合とで、ほぼ同数であったとき、図18に示されるように、コードブックのインデックスの並び替えを実行するようにする。図18は、動画コードブックにおけるインデックス並び替えの例を示しているが、動画コードブックではなく、静止画コードブックにおいて並び替えを行なってもよい。
図18に示される例では、オリジナル動画コードブック(図18A)において、インデックス1の代表ベクトル(80,40,50,70)は、インデックス2に変更されている(図18B)。すなわち、代表ベクトル(80,40,50,70)は、オリジナルコードブック(図18A)ではインデックス[1]として表されているが、インデックス並び替えにより、同じ代表ベクトル(80,40,50,70)が、インデックス[2]に対応されている(図18B)。
図18の例では、インデックス1→2、インデックス2→3、…インデックスN−1→1として、インデックスを1つづつ、ずらした並び替え処理が行なわれている。並び替えのルールはこのような規則に限らない。他の規則に従って、あるいはランダムに並び替えを行なってもよい。
このような並び替えにより設定されたコードブックに基づいて、再度、静動判定テーブルの生成実行するようにする。この場合、静止画コードブックのインデックスは変更されておらず、動画コードブックのインデックスのみが変更されているので、並び替え処理前のインデックスパターン列[1,4,2,…3,N−1,7]の発生率は変化する。
注目ブロック、および近傍ブロックのインデックスとして受信するインデックスパターン列は、動画コードブックまたは静止画コードブックのインデックスの混在したインデックスパターンである。例えば、動画コードインデックスのみを(n)として示すと、前述のインデックスパターン列[1,4,2,…3,N−1,7]は、[(1),4,(2),…3,N−1,(7)]と示すことができる。このインデックスパターンは、前述の動画コードブックの並び替え処理により、[2,4,3,…3,N−1,8]のインデクッスパターン列として出現する。
この場合、テーブルに格納するインデックスパターンでは、動画ブロック、すなわち動ベクトル適用ブロックであれば、インデックスは、前述の並び替え処理により変更される。しかし、注目ブロックのインデックスが静止画ブロック、すなわち静ベクトル適用ブロックであれば、インデックスは変更されない。従って、注目ブロックの静動に応じて、前述のインデックスパターン列[1,4,2,…3,N−1,7]は、異なるパターン列として識別されることになる。その結果、並び替え処理前に、注目ブロックの動ベクトル適用の場合と、静ベクトル適用の場合とで、ほぼ同率で発生したパターンの発生頻度の均衡が解消されることになる。
このような処理を、静動判定テーブル生成処理工程において実行することで、精度の高い静動判定テーブルを作り上げることが可能となる。上述のコードブック並び替え処理を含めた静動判定テーブル生成処理のフローチャートを図19に示す。この処理は、例えば、動画/静止画評価判定部207により実行される。
まず、ステップS1901において、静動判定テーブルの生成処理が実行される。この処理は、具体的には、図9のフローチャートを用いて説明した処理と同様の処理であり、その説明は省略する。ステップS1902において、注目ブロックが動ベクトル適用の場合と、静ベクトル適用の場合とで、発生頻度がほぼ均等な同一インデックスパターン列が存在するか否かが判定される。注目ブロックが動ベクトル適用の場合と、静ベクトル適用の場合とで、発生頻度がほぼ均等な同一インデックスパターン列が存在すると判定された場合、ステップS1905に進み、前述した動画コードブックまたは静止画コードブックのうちのいずれか一方のインデックス並び替え処理が実行された後、ステップS1901に戻り、静動判定テーブル生成処理が再度実行される。
一方、ステップS1902において、注目ブロックが動ベクトル適用の場合と、静ベクトル適用の場合とで、発生頻度がほぼ均等な同一インデックスパターン列が存在しないと判定された場合、ステップS1903に進み、静動判定テーブルに注目ブロックの静動データと、近傍ブロックのインデックスパターンとが対応づけて格納される。
すべての入力画像の処理が終了したか否かが、ステップS1904で判定され、まだ、すべての入力が層の処理が終了していない場合、ステップS1901に戻り、それ以降の処理が繰り返される。すべての入力画像の処理が完了したと、ステップS1904で判定された場合、静動判定テーブルの生成処理が終了する。
以上、説明した静動判定テーブル生成処理に従えば、注目ブロックが動ベクトル適用の場合と、静ベクトル適用の場合とで、発生頻度がほぼ均等な同一インデックスパターン列が解消され、個々のインデックスパターン列について、より高精度な静動判定データを格納した静動判定テーブルを生成することが可能となる。
次に、図20のフローチャートを参照して、静動判定処理の他の例について説明する。この処理は、例えば、図11におけるステップS1102乃至ステップS1107に替えて、図2の動画/静止画評価判定部207により実行される。
最初に、ステップS2001において、動画/静止画評価判定部207は、#kフレームと#k+1フレームの連続する2フレームの注目ブロックと、その近傍ブロックのインデックスデータを取り込む処理を実行する。すなわち、図21に示されるように、#kフレームの注目ブロックのインデックスI0と、その周囲の8個の近傍ブロックのインデックスi00乃至i07が取り込まれるとともに、次のk+1フレームの中心のブロックのインデックスI1と、その近傍ブロックのインデックスi10乃至i17が取り込まれる。
次に、ステップS2002において、動画/静止画評価判定部207は、静止画コードブック208(図5B)から、各インデックスに対応する代表ベクトルを取得する。
すなわち、図22に示されるように、#kフレームの注目ブロックのインデックスI0に対応する代表ベクトルV0が取得され、さらに、その近傍ブロックのインデックスi00乃至i07に対応する代表ベクトルv00乃至v07が取得される(図22A)。同様に、#k+1フレームの中心のブロックのインデックスI1に対応する代表ベクトルV1と、その近傍ブロックのインデックスi10乃至i17に対応する代表ベクトルv10乃至v17が取得される(図22B)。
次に、ステップS2003において、動画/静止画評価判定部207は、次の式(3)に従って、ステップS2002において取得した代表ベクトルのユークリッド空間距離Nsを演算する。
さらに、ステップS2004において、動画/静止画評価判定部207は、動画コードブック209(図5A)から、ステップS2001において取り込んだインデックスに対応する代表ベクトルを取得する。そして、ステップS2005において、動画/静止画評価判定部207は、式(4)に従って、ステップS2004で取得した代表ベクトルのユークリッド空間距離Nmを演算する。
ステップS2006において、動画/静止画評価判定部207は、ステップS2003において演算したユークリッド空間距離Nsと、ステップS2005において演算したユークリッド空間距離Nmの大きさを比較し、前者の方が後者より小さい場合には、ステップS2008において、注目ブロックは静止画ブロックであると判定し、前者が後者と等しいか、それより大きい場合には、ステップS2007において、注目ブロックは動画ブロックであると判定する。
図23に模式的に示されているように、代表ベクトルは、x0乃至x7(図23には、x0乃至x3のみが示されている)で表される座標軸で規定される空間の所定の座標上に位置する。これらの代表ベクトルに関し、上記した式(3)と式(4)に基づいて演算された距離Ns,Nmは、その代表ベクトルで表されるブロックの特徴を表している。すなわち、ベクトルを構成する各要素のベクトル空間内の存在領域を調べると、それらは、ベクトル空間内に一様に分布するのではなく、存在領域が特徴的に偏っている。その特徴は、画像の局所的相関によって規定される。従って、これらの距離Ns,Nmにより、そのブロックの特徴を検出することができる。
図20に示したユークリッド空間距離を利用した静動判定処理は、図11のステップS1102乃至ステップS1107に示される静動判定処理(以下、この静動判定処理をVQインデックスパターン判定処理と称する)と併用することも可能である。図24のフローチャートは、この場合の処理例を表している。この処理も、動画/静止画評価判定部207により実行される。
すなわち、この例においては、ステップS2401において、ユークリッド空間距離に基づく、静動判定処理が実行される。この判定処理は、図20のフローチャートに示した判定処理である。
次に、ステップS2402において、動画/静止画評価判定部207は、図20のステップS2003で演算した距離Nsと、ステップS2005において演算した距離Nmの差の絶対値Δを次の式(5)に従って演算する。
そして、ステップS2403において、動画/静止画評価判定部207は、ステップS2402において演算した値Δが、予め設定されている所定の閾値THより大きいか否かを判定する。値Δが閾値THより大きい場合には、ステップS2404に進み、動画/静止画評価判定部207は、ステップS2401において実行した結果得られたユークリッド空間距離判定処理が適切な判定処理であるとして、その判定結果を保持する処理を実行する。
一方、値Δが、閾値THと等しいか、それより小さいと判定された場合、ステップS2405に進み、動画/静止画評価判定部207は、VQインデックスパターン判定処理を実行する。このVQインデックスパターン判定処理は、上述した、図11のステップS1102乃至ステップS1107の処理である。
このように、この例においては、ユークリッド空間距離に基づく静動判定と、VQインデックスパターンに基づく静動判定のいずれか一方が、必要に応じて選択されるため、より正確な静動判定を実行することが可能となる。
次に、インデックスにエラーが生じた場合におけるリカバリ処理の他の例について説明する。
図25は、インデックスにエラーがあった場合に、これをリカバリする機能を有する画像処理装置の構成例を表している。この画像処理装置も、基本的に、符号化部211と復号部221を有している。符号化部211は、VQエンコーダ201とコードブック2501を有している。VQエンコーダ201は、コードブック2501を参照して、入力された画素データをブロック毎に最も近い代表ベクトルで表し、その代表ベクトルに対応するインデックスを、他の画像処理装置に送信する。
復号部221は、VQデコーダ206、コードブック2511、エラー検出部2512、エラー処理部2513、および選択部2514により構成されている。
VQデコーダ206は、他の画像処理装置から送信されてきたインデックスを受信すると、コードブック2511を参照して、これを対応する代表ベクトルに変換し、選択部2514を介して出力する。
エラー処理部2513は、入力されたインデックスにエラーが存在する場合、エラーリカバリ処理を実行し、リカバリされたインデックスに対応する代表ベクトルを、選択部2514を介して出力する。
エラー検出部2512は、受信されたインデックスにエラーが存在するか否かを判定し、その判定結果に基づいて、選択部2514を制御する。選択部2514は、エラーが存在する場合、エラー処理部2513の出力を選択するように切り換えられ、エラーが存在しない場合、VQデコーダ206の出力が選択されるように切り換えられる。
すなわち、図26に示されるように、この例においては、注目ブロックのインデックスI0にエラーが存在すると判定された場合、詳細は後述するが、その近傍ブロックのインデックスi00乃至i07を利用して、注目ブロックに対応する代表ベクトルx0乃至x3(インデックスI0に対応する代表ベクトル)をリカバリし、それを出力する。
なお、図26において、d00乃至d03は、インデックスi00(代表ベクトルv00)に対応する要素(画素)を表しており、d10乃至d13は、インデックスi01(代表ベクトルv01)に対応する要素(画素)を表している。以下同様に、d20乃至d73は、それぞれインデックスi02乃至i07に対応する代表ベクトルv02乃至v07を構成する要素を表している。
図27は、エラー処理部2513の構成例を表している。このエラー処理部2513は、受信されたインデックスデータの中から、エラーブロック(エラーが存在する注目ブロック)を検出するエラーブロック検出部2701を有している。近傍インデックスパターン検出部2702は、エラーブロック検出部2701が、エラーが存在する注目ブロックを検出すると、その注目ブロックに対する近傍ブロックのインデックスを近傍インデックスパターンとして検出する。図26の例の場合、注目ブロックのインデックスI0にエラーがあった場合、近傍インデックスパターンとして、インデックスi00乃至i07が検出される。
代表ベクトル検出部2703は、近傍インデックスパターン検出部2702により検出された近傍インデックスパターンに対応する代表ベクトルを検出する。図26の例の場合、要素d00乃至d73で構成される代表ベクトルv00乃至v07が検出される。
代表ベクトル検出部2703は、検出された代表ベクトルをフィルタ2704に供給するとともに、ユークリッド空間距離演算部2705に出力する。ユークリッド空間距離演算部2705は、代表ベクトル検出部2703より入力された代表ベクトルのユークリッド空間距離を演算する。ここにおけるユークリッド空間距離Nは、式(3)または式(4)と異なり、次式により演算される。
すなわち、ここでは、例えば、図26の例では、インデックスi00乃至i07に対応するする代表ベクトルv00乃至v07の平均値vAVが、式(9)に従ってvAVとして求められる。さらに、式(7)に従って、8個の近傍ブロックの代表ベクトルと、平均値vAVとの差の最大値がMax(vi)として演算される。同様に、式(8)に従って、8個の各代表ベクトルと平均値vAVとの差の最小値が、Min(vi)として演算される。そして、式(6)に従って、最大値と最小値の差がユークリッド空間距離Nとして求められる。
クラス生成部2706は、ユークリッド空間距離演算部2705により演算された距離Nに基づいて、対応するクラスを生成する。ROM(Read Only Memory)2707には、クラス毎に所定の係数が予め記憶されており、クラス生成部270からクラスが入力されると、そのクラスに対応する係数をフィルタ2704に出力する。フィルタ2704は、代表ベクトル検出部2703より供給された代表ベクトルと、ROM2707より供給された係数に基づいて、エラーシーリング処理を実行し、得られた代表ベクトルを選択部2514に出力する。
次に、図28のフローチャートを参照して、図27に示したエラー処理部2513におけるエラー処理について説明する。
ステップS2801において、エラーブロック検出部2701は、受信されたインデックスのデータ列から、注目ブロックのエラーが誤っている場合、そのエラーブロックを検出し、検出した結果を近傍インデックスパターン検出部2702に出力する。近傍インデックスパターン検出部2702は、ステップS2802において、エラーブロック検出部2701により検出されたエラーを有する注目ブロックに対する近傍ブロックのインデックスを、近傍インデックスパターンとして検出する。
次に、ステップS2803において、代表ベクトル検出部2703は、ステップS2802において検出された近傍インデックスパターンに対応する代表ベクトルを検出する。上述したように、図26の例においては、以上の処理により、インデックスI0にエラーが存在する場合、近傍インデックスi00乃至i07に対応する代表ベクトルv00乃至v07が取得される。図26に示されるように、代表ベクトルv00は、要素(d00,d01,d02,d03)で構成され、代表ベクトルv01は、要素(d10,d11,d12,d13)で構成される。以下同様に、代表ベクトルv02乃至v07は、それぞれ(d20,d21,d22,d23),(d30,d31,d32,d33),(d40,d41,d42,d43),(d50,d51,d52,d53),(d60,d61,d62,d63),(d70,d71,d72,d73)で構成される。
代表ベクトル検出部2703は、検出した代表ベクトルv00乃至v087をユークリッド空間距離演算部2705とフィルタ2704に出力する。
ユークリッド空間距離演算部2705は、ステップS2804において、上述したようにして、式(6)乃至式(9)に基づいて、ユークリッド空間距離Nを演算する。
クラス生成部2706は、ステップS2805において、ユークリッド空間距離Nに基づいて、クラス生成処理を実行する。
具体的には、図29のフローチャートに示されるように、クラス生成部2706は、ステップS2901において、ユークリッド空間距離演算部2705より供給されたユークリッド空間距離Nの値を、予め設定されている所定の閾値と比較してクラスコードを生成する。これにより、例えば、距離Nの値が0乃至9である場合、クラス0とされ、距離Nの値が10乃至19である場合、クラス1とされ、距離Nの値が20乃至29である場合、クラス2とされる。以下同様にして、ユークリッド空間距離Nの値に対応してクラスコードが生成される。
ROM2707は、ステップS2806において、クラス生成部2706からクラスコードがアドレスとして入力されると、そのアドレスに対応して記憶されているクラスタップ係数を、記憶されている係数テーブルから読み出し、フィルタ2704に出力する。
フィルタ2704は、内部に予測タップ抽出回路を内蔵しており、ステップS2806において、その予測タップ抽出回路が代表ベクトル検出部2703から供給された代表ベクトルから予測タップを抽出する。すなわち、いまの例の場合、8個の代表ベクトルから、予め設定されている所定の数の、所定の位置の代表ベクトルが、予測タップとして抽出される。フィルタ2704は、内部に積和演算回路を内蔵しており、この積和演算回路は、ROM2707より供給されたクラスタップ係数と、ステップS2807の処理で抽出された予測タップとしての代表ベクトルに基づいて、線形1次結合モデルにより積和演算を行い、注目ブロックの代表ベクトルの復号値を得る。
次に、ステップS2809に進み、予測タップ抽出回路は、全てのブロックについての処理を完了したか否かを判定し、まだ処理していないブロックが残っている場合には、ステップS2807に戻り、それ以降の処理を繰り返し実行する。全てのブロックの処理が完了したと判定された場合、エラー処理は終了される。
このように、入力をクラスに分類し、適応的に処理する方法は、クラス分類適応処理と称される。以下に、このクラス分類適応処理の原理について説明する。
クラス分類適応処理は、クラス分類処理と適応処理とからなり、クラス分類処理によって、データを、その性質に基づいてクラス分けし、各クラスごとに適応処理を施すものであり、適応処理は、以下のような手法のものである。なお、ここでは、説明を簡単にするために、適応処理について、エラーを有するインデックスに対応する代表ベクトル(以下、注目代表ベクトルと称する)を、復号する場合を例に説明する。
この場合、適応処理では、例えば、近傍インデックスに対応する代表ベクトル(以下、近傍代表ベクトルと称す)と、所定のタップ係数との線形結合により、注目代表ベクトルが復号される。
具体的には、例えば、いま、ある画像を、ブロック単位でベクトル量子化して得られる代表ベクトルのうちの、注目代表ベクトルを教師データとし、近傍代表ベクトルを生徒データとして、教師データである注目代表ベクトルの要素Xの予測値E[X]を、幾つかの近傍代表ベクトルの要素(画素)d1,d2,・・・の集合と、所定のタップ係数w1,w2,・・・の線形結合により規定される線形1次結合モデルにより求めることを考える。この場合、予測値E[X]は、次式で表すことができる。
E[X]=w1d1+w2d2+・・・
・・・(10)
より、具体的には、図26の例において、式(10)は、次のように表される。
なお、以下においては、説明を簡略化するため、mの値が1つの所定の値であるとする。
式(10)を一般化するために、タップ係数wjの集合でなる行列W、生徒データdijの集合でなる行列D、および予測値E[x]の集合でなる行列X’を、
で定義すると、次のような観測方程式が成立する。
DW=X’
・・・(12)
ここで、行列Dの成分dijは、i件目の生徒データの集合(i件目の教師データxiの予測に用いる生徒データの集合)の中のj番目の生徒データを意味し、行列Wの成分wjは、生徒データの集合の中のj番目の生徒データとの積が演算されるタップ係数を表す。また、xiは、i件目の教師データを表し、従って、E[xi]は、i件目の教師データの予測値を表す。なお、式(10)の左辺におけるxは、行列Xの成分xiのサフィックスiを省略したものであり、また、式(1)の右辺におけるd1,d2,・・・も、行列Dの成分dijのサフィックスiを省略したものである。
そして、この観測方程式に最小自乗法を適用して、元の画素値xに近い予測値E[x]を求めることを考える。この場合、教師データとなる真の画素値xの集合でなる行列X、および画素値xに対する予測値E[x]の残差eの集合でなる行列Eを、
で定義すると、式(2)から、次のような残差方程式が成立する。
DW=X+E
・・・(13)
この場合、元の画素値x近い予測値E[x]を求めるためのタップ係数wjは、自乗誤差
を最小にすることで求めることができる。
従って、上述の自乗誤差をタップ係数wjで微分したものが0になる場合、即ち、次式を満たすタップ係数wjが、元の画素値xに近い予測値E[x]を求めるため最適値ということになる。
そこで、まず、式(13)を、タップ係数wjで微分することにより、次式が成立する。
式(14)および(15)より、式(16)が得られる。
さらに、式(13)の残差方程式における生徒データdij、タップ係数wj、教師データxi、および残差eiの関係を考慮すると、式(16)から、次のような正規方程式を得ることができる。
なお、式(17)に示した正規方程式は、行列(共分散行列)Aおよびベクトルvを、
で定義するとともに、ベクトルWを、数8で示したように定義すると、式
AW=v
・・・(18)
で表すことができる。
式(17)における各正規方程式は、生徒データdijおよび教師データxiのセットを、ある程度の数だけ用意することで、求めるべきタップ係数wjの数Jと同じ数だけたてることができ、従って、式(18)を、ベクトルWについて解くことで(但し、式(18)を解くには、式(18)における行列Aが正則である必要がある)、最適なタップ係数(ここでは、自乗誤差を最小にするタップ係数)wjを求めることができる。なお、式(18)を解くにあたっては、例えば、掃き出し法(Gauss-Jordanの消去法)などを用いることが可能である。
以上のようにして、最適なタップ係数wjを求めておき、さらに、そのタップ係数wjを用い、式(10)により、元の画素値xに近い予測値E[x]を求めるのが適応処理である。
以上の処理は、m=0,1,2,3の各画素毎におこなわれる。
図30は、図27のROM2707に記憶させる係数を学習させる学習装置の構成例を表している。この学習装置3000においては、検出インデックスパターン検出部3001が、入力画像データから、対象ブロック(注目ブロック)に対する近傍ブロックのインデックス、すなわち近傍インデックスのパターンを検出する。対応代表ベクトル検出部3002は、近傍インデックスパターン検出部3001により検出された近傍インデックスに対応する代表ベクトルを検出する。ユークリッド空間距離演算部3003は、対応代表ベクトル検出部3002より供給された代表ベクトルのユークリッド空間距離演算処理を実行する。この処理は、図27のユークリッド空間距離演算部2705において行われる演算と実質的に同一の演算である。クラス生成部3004は、ユークリッド空間距離演算部3003により演算されたユークリッド空間距離に基づいて、クラス分類処理を行い、生成されたクラスコードを正規化行列生成部3008に供給する。なお、このクラス生成部3004において行われるクラス生成処理は、図27のクラス生成部2706において行われるクラス生成処理と実質的に同様の処理である。
予測タップ抽出部3005は、対応代表ベクトル検出部3002が出力する対応代表ベクトルの中から予測タップを抽出し、正規化行列生成部3008に供給する。
対象インデックス検出部3006は、入力されたデータから対象ブロックのインデックスを対象インデックスとして検出する。対応代表ベクトル検出部3007は、対象インデックス検出部3006により検出された対象インデックスに対応する代表ベクトルを検出し、正規化行列生成部3008に出力する。
正規化行列生成部3008は、対応代表ベクトル検出部3007より供給される教師データとしての代表ベクトルの値と、予測タップ抽出部3005より供給される生徒データとしての予測タップを対象とした足し込み処理を行う。すなわち、正規化行列生成部3008は、クラス生成部3004より供給されるクラスコードに対応するクラス毎に、予測タップ(生徒データ)を用い、式(17)の行列Aにおける各コンポーネントとなっている生徒データ同士の乗算(dindim)と、サメーション(Σ)に相当する演算を行う。
さらに、正規化行列生成部3008は、クラス生成部3004より供給されるクラスコードに対応するクラス毎に、予測タップ(生徒データ)および対応代表ベクトル検出部3007より供給される代表ベクトル(教師データ)を用い、式(17)のベクトルvにおける各コンポーネントとなっている生徒データと教師データの乗算(dinxi)と、サメーション(Σ)に相当する演算を行う。
正規化行列生成部3008における上述のような足し込みは、各クラスについて行われる。
正規化行列生成部3008は、以上の足し込みを、そこに供給される教師データとしての全ての注目代表ベクトルに対して行い、これにより、各クラスについて式(17)に示した正規方程式を立てる。逆行列演算部3009は、正規化行列生成部3008においてクラス毎に生成された正規方程式を解くことにより、クラス毎に、タップ係数を求める演算を行う。このようにして求められた係数が、上述した図27のROM2707に記憶される。
次に、図31のフローチャートを参照して、図30の学習装置3000の動作について説明する。
最初に、ステップS3101において、近傍インデックスパターン検出部3001は、処理の対象とする対象ブロックを選択する。そして、近傍インデックスパターン検出部3001は、ステップS3101で選択した対象ブロックに対する近傍ブロックの近傍インデックスパターンを検出する。ステップS3103において、対応代表ベクトル検出部3002は、ステップS3102において、近傍インデックスパターン検出部3001により検出された近傍インデックスパターンに対応する代表ベクトルを検出する。
ユークリッド空間距離演算部3003は、ステップS3104において、ステップS3103において、対応代表ベクトル検出部3002により検出された代表ベクトルのユークリッド空間距離を演算する。上述したように、この処理は、図28のステップS2804における場合と同様の処理である。
ステップS3105において、クラス生成部3004は、ステップS3104において、ユークリッド空間距離演算部3003により演算されたユークリッド空間距離を、所定の閾値と比較することによりクラス分類し、対応するクラスコードを正規化行列生成部3008に出力する。このクラス生成処理も、図28のステップS2805(図29のステップS2901)における場合と同様の処理である。
次に、ステップS3106において、予測タップ抽出部3005は、対応代表ベクトル検出部3002より供給される代表ベクトルの中から、所定のものを予測タップとして抽出し、正規化行列生成部3008に出力する。
正規化行列生成部3008は、ステップS3107において、足し込み処理を実行する。
すなわち、対象インデックス検出部3006が、ステップS3101で選択された対象ブロックのインデックスを検出すると、対応代表ベクトル検出部3007が、その対象インデックスに対応する代表ベクトルを検出し、正規化行列生成部3008に供給する。正規化行列生成部3008は、クラス毎に上述したようにして、教師データとしての代表ベクトルと、生徒データとしての予測タップを対象として、式(17)の行列Aとベクトルvの足し込み処理をクラス毎に行う。
ステップS3108において、正規化行列生成部3008は、ブロック内の全ての代表ベクトルに対する処理が完了したか否かを判定し、まだ処理していない代表ベクトルが残っている場合には、ステップS3106に戻り、それ以降の処理を繰り返し実行する。
ステップS3108において、ブロック内の全ての対応代表ベクトルの処理が完了したと判定された場合、ステップS3109に進み、正規化行列生成部3008は、全てのブロックの処理が完了したか否かを判定する。全てのブロックの処理がまだ完了していない場合には、ステップS3105に戻り、それ以降の処理が繰り返し実行される。ステップS3109において、全てのブロックの処理が完了したと判定された場合、ステップS3110に進み、逆行列演算部3009は、各クラス毎に生成された正規方程式を解くことにより、各クラス毎にタップ係数を求める。
なお、以上の処理においては、図28のステップS2804において、ユークリッド空間距離演算部2705により、また図31のステップS3104において、ユークリッド空間距離演算部3003により、それぞれユークリッド空間距離を演算するようにしたが、ユークリッド空間距離の最大値を演算したり、分散を演算したりするようにすることもできる。この場合、図27のユークリッド空間距離演算部2705と、図30のユークリッド空間距離演算部3003は、図28のステップS2804または図31のステップS3104において、それぞれユークリッド空間距離の最大値または分散を演算することになる。
そして、この場合、図27のクラス生成部2706または図30のクラス生成部3004は、図28のステップS2805または図31のステップS3105のクラス生成処理において、図32または図33のようなクラス生成処理を実行する。
すなわち、図32のステップS3201においては、ユークリッド空間距離の最大値を閾値と比較することでクラスコードが生成される。また、図33のステップS3301においては、ユークリッド空間距離の分散を所定の閾値と比較することでクラスコードが生成される。
図34は、エラー処理部2513の他の構成例を表している。図34において、図27における場合と対応する部分には同一の符号を付してある。図34のエラー処理部2513においては、近傍インデックスパターン検出部2702により検出された近傍インデックスパターンが、インデックス削減部3401に供給され、インデックスの数が削減されるようになされている。そして、インデックス削減部3401により削減されたインデックスが、クラス生成部2706に供給され、クラス生成部2706は、インデックス削減部3401より供給されたインデックスに基づいて、クラスコードを生成するようになされている。
その他の構成は、図27における場合と同様である。
次に、図34のエラー処理部2513の処理について、図35のフローチャートを参照して説明する。この図35のステップS3501乃至ステップS3508の処理は、図28におけるステップS2801乃至ステップS2809の処理と基本的に同様の処理である。ただし、図28のフローチャートにおいては、ステップS2803において代表ベクトルが検出され、ステップS2804においてユークリッド空間距離が演算されるようになされているが、図35のフローチャートの処理においては、ステップS3502において、近傍インデックスパターン検出部2702が検出した近傍インデックスの数を、インデックス削減部3401が、ステップS3503において、内蔵するルックアップテーブル(LUT)を参照して削減する処理を実行する。この削減されたインデックスが、クラス生成部2706に供給され、クラス生成部2706は、ステップS3504において、クラス生成処理を実行する。
その他の処理は、図28における場合と同様の処理であるので、その説明は省略する。
すなわち、この図35の処理においては、図36に示されるように、例えば、近傍インデックスパターン検出部2702により、0乃至255で示される256種類の値を有する近傍インデックスが出力されると、インデックス削減部3401は、256種類の値のインデックスを、0乃至7で示される8種類の値の削減インデックスに変換する。その結果、クラス生成部2706の処理が軽減され、ROM2707において記憶される係数の数が削減され、ROM2707の容量を小さくすることが可能となる。
図36に示されるようなインデックスを削減するためのテーブルは、例えば、図37のフローチャートに示すような処理を実行することで、生成することができる。この処理は、例えば、インデックス削減部3401により、所定のタイミングで、予め実行される。
最初に、ステップS3701において、インデックス削減部3401は、ベクトル量子化のためのコードブックを入力する。ステップS3702において、インデックス削減部3401は、全ての代表ベクトルを検出し、ステップS3703において、全ての代表ベクトルの重心を検出する。
次に、ステップS3704において、インデックス削減部3401は、全ての代表ベクトルにより構成される領域のベクトル空間を2分割する。そして、ステップS3705において、ステップS3704で2分割された領域のそれぞれの重心を検出する処理が実行される。
以上の処理が、図38Aと図38Bに模式的に示されている。図38Aは、ステップS3703において、全代表ベクトルの重心が求められた状態を示しており、図38Bは、2分割された各領域の重心が求められた状態を表している。なお、図38において、×印は重心の位置を表している。
次に、ステップS3706において、インデックス削減部3401は、全てのベクトル空間を近傍重心で分類する。これにより、図38Cに示されるように、空間を分割する数は変化しないが、分割の境界が変化する。
ステップS3707において、インデックス削減部3401は、エラーの分布が充分小さくなったか否か判定し、小さくなっていない場合には、ステップS3705に戻り、それ以降の処理を繰り返し実行する。
以上の処理が繰り返されると、エラー分布は次第に小さな値に収束する。ステップS3707において、エラー分布が充分小さくなったと判定された場合、ステップS3708に進み、インデックス削減部3401は、分割数が仕様を満足するか否かを判定する。分割数が仕様を満足しない場合には、ステップS3709に進み、分割数を表す変数Nを1だけインクリメントし、ステップS3704に戻り、それ以降の処理を繰り返し実行する。
以上のようにして、例えば、図38Dに示されるように、分割領域が4個に増やされ、さらに、図38Eに示されるように、近傍重心点分類する処理を行うことで、空間の境界が変更される。そして、エラー分布が充分小さくなるまで、同様の処理が再び繰り返される。
そして、ステップS3708において、分割数が仕様を満足すると判定された場合、処理は終了される。
以上の処理は、一般的にLBG法として知られている。LBG法については、「Y.Linde A. Buzo and R.M.Gray:'An Algorithm for Vector Quantizer Design',IEEE Trans. Commun.,COM-28,1,pp.84-95(Jan. 1980)」に記載されている。
図39は、図34のROM2707に記憶される係数を学習するための学習装置の構成例を表している。図39において、図30と対応する部分には同一の符号を付してある。図39の学習装置3900においては、図30のユークリッド空間距離演算部3003に替えて、インデックス削減部3901が設けられている。そして、インデックス削減部3901は、近傍インデックスパターン検出部3001より供給された近傍インデックスの数を削減し、クラス生成部3004に出力するようになされている。クラス生成部3004は、インデックス削減部3901より供給された、削減されたインデックスに基づいてクラスコードを生成し、正規化行列生成部3008に出力するようになされている。
その他の構成は、図30における場合と同様である。
次に、図40のフローチャートを参照して、図39の学習装置3900の学習処理について説明する。
図40のステップS4001乃至ステップS4009の処理は、基本的に図31のステップS3101乃至ステップS3110の処理と同様の処理である。ただし、図31のステップS3103の対応する代表ベクトルを検出する処理と、ステップS3104のユークリッド空間距離を演算する処理に替えて、図40の処理においては、ステップS4002において、近傍インデックスパターンが検出されると、ステップS4003において、インデックス削減部3901が、内蔵するルックアップテーブルを参照して、近傍インデックスの数を削減して、クラス生成部3004に出力する。
その他の処理は、図31における場合と同様である。
図41は、エラー処理部2513のさらに他の構成例を表している。図41において、図27と図34における場合と対応する部分には、同一の符号を付してある。すなわち、図41の構成は、図27と図34における構成を併合した構成とされている。インデックスクラス生成部4101は、図34のクラス生成部2706に対応しており、空間距離クラス生成部4102は、図27のクラス生成部2706に対応している。
すなわち、インデックスクラス生成部4101は、インデックス削減部3401より出力された、削減されたインデックスからクラスコードを生成し、ROM2707に供給する。また、空間距離クラス生成部4102は、ユークリッド空間距離演算部2705より出力されたユークリッド空間距離に基づいてクラスコードを生成し、ROM2707に出力する。ROM2707は、インデックスクラス生成部4101より供給されたクラスコードと、空間距離クラス生成部4102より供給されたクラスコードに対応して、最終的に決定されるクラスに対応する係数を読み出し、フィルタ2704に出力する。
次に、図42のフローチャートを参照して、図41のエラー処理部2513の処理について説明する。図42のステップS4201乃至ステップS4211の処理は、図28のステップS2801乃至ステップS2809の処理と、図35のステップS3501乃至ステップS3508の処理を組み合わせた処理となっている。
すなわち、ステップS4201乃至ステップS4204の処理は、図35におけるステップS3501乃至ステップS3504の処理と同様の処理であり、ここまでの処理により、図41のエラーブロック検出部2701、近傍インデックスパターン検出部2702、インデックス削減部3401、およびインデックスクラス生成部4101により、近傍インデックスパターンを削減した削減インデックスに基づくインデックスクラスコードが生成される。
ステップS4205乃至ステップS4207の処理は、図28のステップS2803乃至ステップS2805の処理と同様の処理である。
すなわち、この処理が、図41における近傍代表ベクトル検出部2703、ユークリッド空間距離演算部2705、および空間距離クラス生成部4102により実行されると、近傍代表ベクトルのユークリッド空間距離に基づく空間距離クラスコードが生成される。
ステップS4208において、ROM2707は、インデックスクラス生成部4101と空間距離クラス生成部4102の両方から、クラスコードが供給されてくるので、各インデックスクラス毎の空間距離クラスコードに対応するクラスタップ係数を、内蔵する係数テーブルから読み出す処理を実行する。
その後のステップS4209乃至ステップS4211の処理は、図28のステップS2807乃至ステップS2809、または図35のステップS3506乃至ステップS3508の処理と同様の処理である。
図43は、図41のROM2707に記憶させる係数を学習する学習装置の構成例を表している。この図43において、図30と図39における場合と対応する部分には、同一の符号を付してある。すなわち、図43の学習装置4300は、図30の学習装置と図39の学習装置を組み合わせた構成となっている。
図43における空間距離クラス生成部4302は、図30のクラス生成部3004に対応しており、インデックスクラス生成部4301は、図39のクラス生成部3004に対応している。正規化行列生成部3008には、空間距離クラス生成部4302により生成された空間距離クラスコードと、インデックスクラス生成部4301により生成されたインデックスクラスコードとが供給されるようになされている。その他の構成は、図30または図39における場合と同様である。
次に、図44のフローチャートを参照して、図43の学習装置4300の処理について説明する。図44のステップS4401乃至ステップS4412の処理は、図31のステップS3101乃至ステップS3110の処理と、図40のステップS4001乃至ステップS4009の処理を組み合わせた処理となっている。
すなわち、ステップS4401乃至ステップS4404の処理は、図40のステップS4001乃至ステップS4004の処理と同様の処理である。これらの処理が、図43の近傍インデックスパターン検出部3001、インデックス削減部3901、およびインデックスクラス生成部4301により実行されることにより、近傍インデックスの数を削減したインデックスに対応するインデックスクラスコードが生成され、正規化行列生成部3008に供給される。
図44のステップS4405乃至ステップS4407の処理は、図31のステップS3103乃至ステップS3105の処理と同様の処理である。すなわち、この処理が、図43の対応代表ベクトル検出部3002、ユークリッド空間距離演算部3003、および空間距離クラス生成部4302により実行されることで、近傍インデックスパターンの代表ベクトルのユークリッド空間距離に基づく空間距離クラスに対応する空間距離クラスコードが生成され、正規化行列生成部3008に供給される。
以下、ステップS4408乃至ステップS4412の処理は、図31におけるステップS3106乃至ステップS3110、または図40のステップS4005乃至ステップS4009の処理と同様の処理である。
以上のエラーリカバリ処理は、注目ブロックが動画ブロックである場合でも、静止画ブロックである場合でも、その種類に関わりなく適用可能である。従って、上述した図2に示されるような静止画コードブック203,208と、動画コードブック204,209の2種類のコードブックを利用する画像処理装置においても適用することが可能である。図45は、この場合の構成例を表している。
すなわち、この画像処理装置の符号化部211は、図2における場合と同様の構成であるが、その復号部221が、エラー検出部2512、エラー処理部2513、および選択部2514を有している。そして、受信されたインデックスは、VQデコーダ206に供給されるとともに、エラー検出部2512とエラー処理部2513にも供給されるようになされている。選択部2514には、VQデコーダ206の出力と、エラー処理部2513の出力が供給され、いずれか一方がエラー検出部2512の出力に基づいて選択出力されるようになされている。
その他の構成は、図2または図25における場合と同様である。
なお、上述した実施の形態においては、ベクトル量子化(VQ)による画像符号化処理の例における静動判定処理について説明したが、ベクトル量子化(VQ)に限らず、DCT、ADRCなど、他の符号化処理においても同様の静動判定処理が可能である。
以上、特定の実施の形態を参照しながら、本発明について説明してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が上述した実施の形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。また、上述の実施の形態を適宜組み合わせて構成したものも、本発明の範囲に含まれるものであり、本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。