(57)【要約】【課題】動きベクトルを比較的単純な処理で算出することができる技術を提供する。【解決手段】動きベクトル算出装置は、第１のフレーム内で選択された複数の基準画素に、それぞれ複数の異なる仮動きベクトルの中の１つの仮動きベクトルを選択して割り当てることによって、複数の基準画素に複数の異なる仮動きベクトルを割り当てる仮動きベクトル割り当て部と、各基準画素ごとに、その基準画素を含む第１のフレームのブロックと、その画素に割り当てられた仮動きベクトル分だけその基準画素からずれた画素位置の画素を含む第２のフレームのブロックと、についてブロックマッチングを実行してマッチング度を算出するマッチング度算出部と、各基準画素に割り当てられた仮動きベクトルと、各基準画素ごとに算出されたマッチング度と、に基づいて動きベクトルを算出する動きベクトル算出部と、を備える。【選択図】図１
2008103834.tif 000002
【特許請求の範囲】
【請求項１】
第１のフレームと第２のフレームとの間の動きベクトルを算出するための動きベクトル算出装置であって、
前記第１のフレーム内で選択された複数の基準画素に、それぞれ複数の異なる仮動きベクトルの中の１つの仮動きベクトルを選択して割り当てることによって、前記複数の基準画素に、複数の異なる仮動きベクトルを割り当てる仮動きベクトル割り当て部と、
各基準画素ごとに、当該基準画素を含む前記第１のフレーム内のブロックと、当該基準画素に割り当てられた仮動きベクトル分だけ当該基準画素からずれた画素位置の画素を含む前記第２のフレーム内のブロックと、についてブロックマッチングを実行してマッチング度を算出するマッチング度算出部と、
各基準画素に割り当てられた前記仮動きベクトルと、各基準画素ごとに算出された前記マッチング度と、に基づいて前記動きベクトルを算出する動きベクトル算出部と、
を備えることを特徴とする動きベクトル算出装置。
【請求項２】
請求項１に記載の動きベクトル算出装置において、
前記仮動きベクトル割り当て部は、前記第１のフレーム内において前記基準画素が存在する処理対象領域内で、前記複数の異なる仮動きベクトルが均等に分散するように前記仮動きベクトルを割り当てる、
動きベクトル算出装置。
【請求項３】
請求項２に記載の動きベクトル算出装置において、
前記仮動きベクトル割り当て部は、前記処理対象領域において、所定数の基準画素に割り当てた仮動きベクトルセットが繰り返し現れるように、前記仮動きベクトルを割り当てる、
動きベクトル算出装置。
【請求項４】
請求項３に記載の動きベクトル算出装置において、
前記仮動きベクトル割り当て部は、前記仮動きベクトルセットに含まれる前記仮動きベクトルが全て異なるベクトルとなるように、前記仮動きベクトルを割り当てる、
動きベクトル算出装置。
【請求項５】
請求項３に記載の仮動きベクトル算出装置において、
前記仮動きベクトル割り当て部は、前記仮動きベクトルセットにおいて、隣接する基準画素には互いに異なる仮動きベクトルを割り当てる、
仮動きベクトル算出装置。
【請求項６】
第１のフレームと第２のフレームとの間の動きベクトルを算出するための動きベクトル算出方法であって、
（ａ）前記第１のフレーム内で選択された複数の基準画素に、それぞれ複数の異なる仮動きベクトルの中の１つの仮動きベクトルを選択して割り当てることによって、前記複数の基準画素に、複数の異なる仮動きベクトルを割り当てる工程と、
（ｂ）各基準画素ごとに、当該基準画素を含む前記第１のフレーム内のブロックと、当該基準画素に割り当てられた仮動きベクトル分だけ当該基準画素からずれた画素位置の画素を含む前記第２のフレーム内のブロックと、についてブロックマッチングを実行してマッチング度を算出する工程と、
（ｃ）各基準画素に割り当てられた前記仮動きベクトルと、各基準画素ごとに算出された前記マッチング度と、に基づいて前記動きベクトルを算出する工程と、
を備える動きベクトル算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つのフレーム間の動きベクトルを算出する技術に関する。
【背景技術】
【０００２】
従来、ＭＰＥＧ（Moving Picture Experts Group）方式等の圧縮符号化技術を用いて、映像データを圧縮することが行われている。この圧縮符号化技術には、ＭＰＥＧ−１やＭＰＥＧ−２などのように、２枚のフレームを比較してこれらフレーム間の動きベクトルを算出するものがある。動きベクトルの算出の方法としては、一方のフレーム内における画素ブロックと、他方のフレーム内の画素ブロックと、をブロックマッチングして、そのマッチング度に基づき、動きベクトルを算出する方法がある。なお、このようなブロックマッチング型の動きベクトル算出方法を採用する装置として、下記特許文献１に記載の動きベクトル検出装置が挙げられる。
【０００３】
【特許文献１】特開２００６−１３８７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ブロックマッチング型の動きベクトル算出方法では、一方のフレーム内における各画素ブロックを基準として、この基準ブロックと他方のフレーム内の各画素ブロックとを順次マッチングしながら、マッチング度のより高い（より近似する）ブロックを検索することが行われる。このように、従来のブロックマッチング型の動きベクトル算出方法では、各ブロックごとにブロックマッチングを繰り返しながらマッチング度のより高いブロックの検索を行うので、処理が複雑になるという問題があった。したがって、動きベクトルの算出に長時間を要したり、ＣＰＵやメモリなどのハードウェア資源を多量に消費することとなっていた。
【０００５】
本発明は、動きベクトルを比較的単純な処理で算出することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の画像保存システムは、第１のフレームと第２のフレームとの間の動きベクトルを算出するための動きベクトル算出装置であって、前記第１のフレーム内で選択された複数の基準画素に、それぞれ複数の異なる仮動きベクトルの中の１つの仮動きベクトルを選択して割り当てることによって、前記複数の基準画素に、複数の異なる仮動きベクトルを割り当てる仮動きベクトル割り当て部と、各基準画素ごとに、当該基準画素を含む前記第１のフレーム内のブロックと、当該基準画素に割り当てられた仮動きベクトル分だけ当該基準画素からずれた画素位置の画素を含む前記第２のフレーム内のブロックと、についてブロックマッチングを実行してマッチング度を算出するマッチング度算出部と、各基準画素に割り当てられた前記仮動きベクトルと、各基準画素ごとに算出された前記マッチング度と、に基づいて前記動きベクトルを算出する動きベクトル算出部と、を備えることを要旨とする。
【０００７】
本発明の動きベクトル算出装置では、第１のフレームの各基準画素を含むブロックについてブロックマッチングの対象となるブロックは、当該基準画素に割り当てられた仮動きベクトル分だけ当該基準画素からずれた画素位置の画素を含む第２のフレームのブロックであるので、ブロックマッチングの対象ブロックを次々と替えながらブロックマッチングを行って、マッチング度のより高いブロックを検索するといった処理を行う構成に比べて、比較的単純な処理によって動きベクトルを求めることができる。
【０００８】
上記動きベクトル算出装置において、前記仮動きベクトル割り当て部は、前記第１のフレーム内において前記基準画素が存在する処理対象領域内で、前記複数の異なる仮動きベクトルが均等に分散するように前記仮動きベクトルを割り当てるようにしてもよい。
【０００９】
このようにすることで、処理対象領域内の様々な位置にある基準画素について、同一の仮動きベクトルだけずれた画素位置の画素を含むブロックとのブロックマッチングが行われてマッチング度が求められる。従って、仮動きベクトルを不均一となるように割り当てる構成に比べて、より精度の高い動きベクトルを算出することができる。これは以下の理由による。すなわち、仮動きベクトルを不均一に割り当てる構成では、フレーム内の一部分に大きな動きのある映像について、その動き部分のフレーム内での位置によって、算出される動きベクトルがバラバラな値となるが、仮動きベクトルを均一に割り当てる場合には、動き部分の位置に関わらずほぼ同じような値となるからである。具体的には、仮動きベクトルを不均一に割り当てる構成では、大きな仮動きベクトルを割り当てた部分に動き部分が位置する場合、その部分においてマッチング度が高くなり、動きベクトルとして比較的大きなベクトルが算出されることとなる。一方、小さな仮動きベクトルを割り当てた部分に動き部分が位置する場合、その部分においてマッチング度は低くなり、動きベクトルとして比較的小さなベクトルが算出されることとなる。これに対して、仮動きベクトルを均一に割り当てる構成では、動き部分がフレーム内のどこに位置しようとも、この動き部分には、様々な仮動きベクトルが割り当てられる。従って、動き部分の位置に関わらずほぼ同じような動きベクトルが算出されることとなる。
【００１０】
上記動きベクトル算出装置において、前記仮動きベクトル割り当て部は、前記処理対象領域において、所定数の基準画素に割り当てた仮動きベクトルセットが繰り返し現れるように、前記仮動きベクトルを割り当てるようにしてもよい。
【００１１】
このようにすることで、処理対象領域内において、同一の仮動きベクトルを様々な画素位置の基準画素に割り当てることができる。
【００１２】
上記動きベクトル算出装置において、前記仮動きベクトル割り当て部は、前記仮動きベクトルセットに含まれる前記仮動きベクトルが全て異なるベクトルとなるように、前記仮動きベクトルを割り当てるようにしてもよい。
【００１３】
このようにすることで、仮動きベクトルセットに様々なベクトルが含まれるので、仮動きベクトルセット内において同一のベクトルが重複する構成に比べて、より精度の高い動きベクトルを算出することができる。
【００１４】
上記動きベクトル算出装置において、前記仮動きベクトル割り当て部は、前記仮動きベクトルセットにおいて、隣接する基準画素には互いに異なる仮動きベクトルを割り当てるようにしてもよい。
【００１５】
このようにすることで、同一の仮動きベクトルを様々な画素位置の基準画素に割り当てることができるので、同一の仮動きベクトルを隣接する基準画素に割り当てる構成に比べて、より精度の高い動きベクトルを算出することができる。
【００１６】
なお、本発明は、種々の形態で実現することが可能であり、例えば、動きベクトル算出方法や、動きベクトル算出方法または動きベクトル算出装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明を実施するための最良の形態を実施例に基づいて以下の順序で説明する。
Ａ．第１の実施例：
Ｂ．第２の実施例：
Ｃ．第３の実施例：
Ｄ．第４の実施例：
Ｅ．第５の実施例：
Ｆ．第６の実施例：
Ｇ．変形例：
【００１８】
Ａ．第１の実施例：
図１は、本発明の動きベクトル算出装置を適用した映像圧縮システムの概略構成を示す説明図である。この映像圧縮システム１００は、コンピュータ１１０と、ディスプレイ１７０と、キーボード１７２と、マウス１７４と、デジタルビデオカメラ１７６とを備えている。コンピュータ１１０は、ＣＰＵ１２０と、メモリ１３０と、ハードディスク１５０と、入出力インタフェース部１６０とが、内部バス１６５を介して互いに接続された構成を有している。
【００１９】
入出力インタフェース部１６０は、コンピュータ１１０に対してディスプレイ１７０を接続するためのインタフェースを備えていると共に、コンピュータ１１０に対してキーボード１７２，マウス１７４，デジタルビデオカメラ１７６を、それぞれ接続するためのインタフェースを備えている。メモリ１３０は、２つのフレーム格納部１３０ａ，１３０ｂを備えている。これらのフレーム格納部１３０ａ，１３０ｂは、それぞれ１フレーム分の画像データを格納することができる。
【００２０】
コンピュータ１１０では、所定のオペレーティングシステムの下、映像圧縮用アプリケーションプログラムが実行される。なお、このオペレーティングシステムには、各種ドライバソフトウェアが組み込まれ、このドライバソフトウェアによってディスプレイ１７０やキーボード１７２やマウス１７４が制御される。映像圧縮用アプリケーションプログラムが起動され、メモリ１３０にロードされると、ＣＰＵ１２０は、このアプリケーションプログラムを実行することにより、仮動きベクトル割り当て部１２０ａとして機能すると共に、マッチング度算出部１２０ｂ，動きベクトル算出部１２０ｃ，圧縮制御部１２０ｄとして、それぞれ機能することになる。
【００２１】
圧縮制御部１２０ｄは、ユーザによって指定されたインタフェースから入力される映像データを所定の圧縮方式で圧縮する。例えば、ＭＰＥＧ−１方式の圧縮処理には、動きベクトル算出処理の他に、ＤＣＴ（Discrete Cosine Transform）変換処理や量子化処理等が含まれる。圧縮制御部１２０ｄは、これらの処理のうち、動きベクトル算出処理を除く他の処理について実行する。一方、仮動きベクトル割り当て部１２０ａと、マッチング度算出部１２０ｂと、ベクトル算出部１２０ｃとは、動きベクトル算出処理を実行する。
【００２２】
図２は、映像圧縮システム１００において実行される動きベクトル算出処理の手順を示すフローチャートである。ユーザが、ディスプレイ１７０（図１）に表示された映像圧縮用アプリケーションメニュー（図示省略）から、デジタルビデオカメラ１７６を映像入力ソースとして指定して、動画圧縮メニューを選択する。そうすると、圧縮制御部１２０ｄは、入出力インタフェース部１６０を介してデジタルビデオカメラ１７６から映像データを入力して、所定フォーマットの映像データ（１フレームあたり３６０×２４０画素、３０フレーム／秒）に変換する。そして、映像圧縮システム１００では、このフォーマット変換後のフレームを用いて、動きベクトル算出処理が実行される。
【００２３】
ステップＳ２０５（図２）では、圧縮制御部１２０ｄは、フォーマット変換後の先頭のフレームを第１のフレーム格納部１３０ａに格納すると共に、フォーマット変換後の２番目のフレームを第２のフレーム格納部１３０ｂに格納する。以下において、第１のフレーム格納部１３０ａに格納されているフレームを現フレームと呼び、第２のフレーム格納部１３０ｂに格納されているフレームを次フレームと呼ぶ。
【００２４】
ステップＳ２１０では、仮動きベクトル割り当て部１２０ａ（図１）は、現フレームの各基準画素に仮動きベクトルを割り当てる。ここで、「基準画素」とは、後述するブロックマッチングを行う際に基準となり得る画素である。本実施例では、現フレーム内の全ての画素を基準画素とする。したがって、ステップＳ２１０では、現フレームの全ての画素（３６０×２４０画素）に対して仮動きベクトルを割り当てることとなる。
【００２５】
図３は、ステップＳ２１０において基準画素に割り当てられた仮動きベクトルを模式的に示す説明図である。図３では、各基準画素を矩形枠で示し、各基準画素に割り当てられた仮動きベクトル（ｖｖｘ，ｖｖｙ）を矩形枠内に示す。以下では、座標［ｘ，ｙ］に存在する基準画素を、単に基準画素［ｘ，ｙ］と呼ぶ。
【００２６】
基準画素［０，０］には、仮動きベクトル（−３０，−３０）が割り当てられている。そして、基準画素のｘ座標が＋１だけずれる度に仮動きベクトルのｘ成分が１ずつ増えていき、基準画素［６０，０］には、仮動きベクトル（＋３０，−３０）が割り当てられている。そして、基準画素［６１，０］には、再び基準画素［０，０］と同じ仮動きベクトル（−３０，−３０）が割り当てられ、再び基準画素のｘ座標が＋１だけずれる度に仮動きベクトルのｘ成分が１ずつ増えていく。このように、各基準画素に割り当てられる仮動きベクトルのｘ成分は、−３０〜＋３０の範囲内で、基準画素のｘ座標が＋１だけずれる度に１ずつ増えている。同様にして、基準画素のｙ座標が＋１だけずれる度に仮動きベクトルのｙ成分が１ずつ増えていき、基準画素［０，６０］には、仮動きベクトル（−３０，＋３０）が割り当てられている。そして、基準画素［０，６１］には、再び基準画素［０，０］と同じ仮動きベクトル（−３０，−３０）が割り当てられている。このように、各基準画素に割り当てられる仮動きベクトルのｙ成分も、ｘ成分と同様に、−３０〜＋３０の範囲内で、基準画素のｙ座標が＋１だけずれる度に１ずつ増えている。
【００２７】
大局的にみると、全ての基準画素から成る領域（以下、「処理対象領域」と呼ぶ）には、６０×６０画素の画素群に割り当てられた一群の仮動きベクトル（仮動きベクトル（−３０，−３０）〜（＋３０，＋３０））が繰り返し現れる。なお、このように繰り返し現れる一群の仮動きベクトルを「仮動きベクトルセット」と呼ぶ。そして、この仮動きベクトルセットに含まれる合計３７２１（＝６１×６１）個の仮動きベクトルは、互いに異なるベクトルであり、画素位置に応じて規則的に変化するベクトルである。従って、処理対象領域内において、同一の仮動きベクトルが均等に分散するように割り当てられることとなる。なお、割り当てる仮動きベクトルの範囲（−３０，−３０）〜（＋３０，＋３０）は、予めユーザによって設定されている。すなわち、ユーザは、隣接するフレーム間における動きベクトルの範囲を想定して、仮動きベクトルの範囲（−ＭＶＸ，−ＭＶＹ）〜（＋ＭＶＸ，＋ＭＶＹ）を決定し、変数ＭＶＸ，ＭＶＹを映像圧縮システム１００に予め設定しておく。図３の例では、ユーザは、変数ＭＶＸ，ＭＶＹにいずれも「３０」を設定している。
【００２８】
ここで、各基準画素の仮動きベクトル（ｖｖｘ，ｖｖｙ）は、例えば、下記式（１），（２）に従って算出される。
【００２９】
【数１】
2008103834.tif 000003
【数２】
2008103834.tif 000004
上記式（１），（２）において、「％」は、余剰を求める算術演算子である。
【００３０】
なお、上記式（１），（２）に限らず、ベクトル成分ｖｖｘ、ｖｖｙとして、−３０〜＋３０の範囲で規則的に変化する値（整数）を算出することが可能な任意の式を採用することができる。
【００３１】
ステップＳ２１５（図２）では、マッチング度算出部１２０ｂ（図１）は、現フレームの各基準画素ごとに、基準ブロックと対象ブロックとのブロックマッチングを実行して、マッチング値を算出する。
【００３２】
図４は、ステップＳ２１５において実行されるブロックマッチングの方法を模式的に示す説明図である。図４（Ａ）は、現フレームにおける基準ブロックＢａを示し、図４（Ｂ）は、図４（Ａ）に示す基準ブロックＢａの詳細を示し、図４（Ｃ）は、次フレームにおける対象ブロックＢｂを示し、図４（Ｄ）は、図４（Ｃ）に示す対象ブロックＢｂの詳細を示す。
【００３３】
ステップＳ２１５におけるブロックマッチングでは、現フレームの各基準画素を左上隅の画素とする１６画素×１６画素のブロック（基準ブロック）についてブロックマッチングを行う。図４の例では、基準画素Ｐａ［５０，５５］が左上隅となる基準ブロックＢａについてブロックマッチングを行う場合について示している。基準ブロックとブロックマッチングを行う対象となるブロック（対象ブロック）は、以下のようにして決定される。すなわち、基準画素に割り当てられた仮動きベクトル分だけ、基準画素からずれた画素位置にある次フレーム上の画素（対象画素）を左上隅とするブロックを対象ブロックとして決定する。図４の例では、図４（Ｃ）に示すように、基準画素Ｐａ［５０，５５］に割り当てられた仮動きベクトル（＋２０，＋２５）分だけずれた位置にある画素Ｐｂ［７０，８０］が対象画素となり、かかる対象画素［７０，８０］を左上隅とする１６×１６のブロックが対象ブロックＢｂとして決定されている。
【００３４】
そして、基準ブロックＢａと対象ブロックＢｂとで、予めサンプリングポイントとして定められている所定位置の画素の輝度値を比較して、マッチング値が算出される。図４の例では、図４（Ｂ）に示すように、基準ブロックＢａにおいて、基準画素ＰａをサンプリングポイントＳａ１として、ｘ方向及びｙ方向に、１つおきとなる位置にサンプリングポイントＳａ１〜Ｓａ１６が配置されている。同様にして、図４（Ｃ）に示すように、対象ブロックＢｂにおいて、対象画素ＰｂをサンプリングポイントＳｂ１として、ｘ方向及びｙ方向に、１つおきとなる位置にサンプリングポイントＳｂ１〜Ｓｂ１６が配置されている。そして、サンプリングポイントＳａＮとサンプリングポイントＳｂＮ（Ｎは１〜１６の整数）とで輝度値の差分（絶対値）を求め、求めた輝度値の差分（絶対値）を足し合わせた値を、基準画素Ｐａについてのマッチング値とする。
【００３５】
具体的には、各基準画素［ｘ，ｙ］ごとに、下記式（３）に従ってマッチング値Ｂ（ｘ，ｙ）を算出する。
【００３６】
【数３】
2008103834.tif 000005
【００３７】
上記式（３）において、変数ｎｓｘは、ｘ方向のサンプリングポイント数を示し、変数ｎｓｙは、ｙ方向のサンプリングポイント数を示し、ｉｓｘは、ｘ方向のサンプリングポイント間隔を示し、ｉｓｙは、ｙ方向のサンプリングポイント間隔を示す。また、ＦＣ（ｘ，ｙ）は、基準ブロック内のサンプリングポイントの輝度値を示し、ＦＢ（ｘ，ｙ）は、対象ブロック内のサンプリングポイントの輝度値を示す。図４の例では、変数ｎｓｘ，ｎｓｙは、いずれも「４」であり、変数ｉｓｘ，ｉｓｙは、いずれも「２」である。これらの変数ｎｓｘ，ｎｓｙ，ｉｓｘ，ｉｓｙはデフォルト値として映像圧縮システム１００に予め設定されている。なお、これらの変数ｎｓｘ，ｎｓｙ，ｉｓｘ，ｉｓｙは、ユーザによって設定／変更するようにしてもよい。
【００３８】
このようにして算出したマッチング値は、値が小さいほど、基準ブロックと対象ブロックとが近似していること（マッチング度が高いこと）を意味することとなる。これは、基準ブロックと対象ブロックとがより近似しているほど、各サンプリングポイント間の輝度値の差分はより小さくなるので、この輝度値の差分の絶対値の積算値であるマッチング値もより小さくなるからである。
【００３９】
なお、基準ブロックの中には、対象ブロックが存在しないブロックもある。例えば、図３の例では、基準画素［０，０］を左上隅とする基準ブロックについては、基準画素［０，０］に割り当てられた仮動きベクトルが（−３０，−３０）であるので、対象ブロックが存在しないこととなる。このような場合には、想定される最大マッチング値を、当該基準画素のマッチング値として付与してもよい。例えば、各サンプリングポイントにおける輝度値の差分（絶対値）の最大値が２５６であり、各ブロック内のサンプリングポイント数が１６である場合には、想定されるマッチング値Ｂ（ｘ，ｙ）の最大値は、４０９６（２５６×１６）となる。そこで、この「４０９６」を、対象ブロックが存在しない場合にマッチング値として付与するものとする。なお、この代わりに、対象ブロックが存在しない場合には、その基準画素を処理対象から除外するようにしてもよい。
【００４０】
ステップＳ２２０（図２）では、動きベクトル算出部１２０ｃは、各基準画素について算出されたマッチング値に基づき、マッチング値の小さい順番に（すなわち、よりマッチング度が高い順番に）基準画素をソートする。ステップＳ２２５では、動きベクトル算出部１２０ｃは、マッチング値の小さい上位１００の基準画素に割り当てられた動きベクトルの平均ベクトルを、現フレームについての動きベクトルとして算出する。
【００４１】
ステップＳ２３０では、圧縮制御部１２０ｄは、全てのフレーム間の動きベクトルを算出したか否かを判定する。前述のように、先頭フレームと２枚目のフレームとの間の動きベクトルを算出した後には、圧縮制御部１２０ｄは、未だ全てのフレーム間の動きベクトルを算出していないと判定することとなる。そして、この場合、圧縮制御部１２０ｄは、第２のフレーム格納部１３０ｂに格納されていたフレームを現フレームとして再定義すると共に、新たなフレームを第１のフレーム格納部１３０ａに次フレームとして格納する。そして、これら新たな現フレームと次フレームとの組み合わせについて、上述したステップＳ２１０〜Ｓ２３０を実行する。なお、全てのフレーム間の動きベクトルが算出された場合には（ステップＳ２３０：ＹＥＳ）、動きベクトル算出処理が終了する。そして、動きベクトル算出処理が終了すると、圧縮制御部１２０ｄは、算出した動きベクトルを用いて可変長符号化処理等を実行して圧縮映像データを生成する。
【００４２】
以上説明したように、映像圧縮システム１００では、各基準ブロックについてブロックマッチングを行う際の対象となるブロックは、基準画素に割り当てられた仮動きベクトル分だけ基準画素からずれた位置にある画素（対象画素）を左上隅とするブロックのみである。また、各基準ブロックについてマッチング値を求める際には、基準画素の座標（ｘ，ｙ）と各変数ｎｓｘ，ｎｓｙ，ｉｓｘ，ｉｓｙとを上記式（３）に当てはめてブロックマッチング値を算出している。従って、各基準ブロックについて、対象ブロックを次々と替えながらブロックマッチングを行ってマッチング値を算出し、よりマッチング度の高いブロックを検索するといった処理を行う構成に比べて、比較的単純な処理によって動きベクトルを求めることができる。
【００４３】
Ｂ．第２の実施例：
図５は、第２の実施例における処理対象領域を示す説明図である。図２において最も外側の矩形がフレーム（現フレーム及び次フレーム）を示し、太い実線の矩形が現フレームにおける処理対象領域ＡＲ２を示す。上述した第１の実施例では、処理対象領域は、現フレーム内の全ての画素（３６０×２４０画素）から成る領域であったが、第２の実施例では、処理対象領域ＡＲ２は、現フレーム内の一部の画素から成る領域である。なお、映像圧縮システムの構成は図１に示す映像圧縮システム１００と同じであり、また、動きベクトル算出処理の手順は、図２に示す手順と同じである。
【００４４】
具体的には、図５に示すように、現フレームの中央に位置する矩形領域（２７０×１８０画素）を処理対象領域ＡＲ２とする。かかる構成において、処理対象領域ＡＲ２の左上隅の基準画素Ｐａ１に仮動きベクトル（−３０，−３０）が割り当てられた場合であっても、この基準画素Ｐａ１に対応する対象画素Ｐｂ１は次フレーム内に存在し、また、対象ブロックＢｂ１も次フレーム内に存在することとなる。同様にして、処理対象領域ＡＲ２の右上隅の基準画素に仮動きベクトル（＋３０，−３０）が、左下隅の基準画素に仮動きベクトル（−３０，＋３０）が、右下隅の基準画素に仮動きベクトル（＋３０，＋３０）が、それぞれ割り当てられた場合であっても、それぞれの基準画素に対応する対象画素が次フレーム内に存在すると共に、それぞれの基準画素に対応する対象ブロックが次フレーム内に存在することとなる。従って、処理対象領域ＡＲ２内の全ての基準画素について対象ブロックが存在するので、第１の実施例と異なり、全ての基準画素について、固定値（最大マッチング値）を割り当てることなくマッチング値を算出することができる。
【００４５】
Ｃ．第３の実施例：
図６は、第３の実施例における仮動きベクトルの割り当て方法を模式的に示す説明図である。上述した各実施例では、各仮動きベクトルセットは、（−３０，−３０）〜（＋３０，＋３０）の範囲における全てのベクトル（合計３７２１（＝６１×６１）種類のベクトル）を含むものとした。これに対して、第３の実施例では、（−３０，−３０）〜（＋３０，＋３０）の範囲における一部のベクトルを割り当てるものとする。なお、第３の実施例の映像圧縮システムは、仮動きベクトルセットの領域が３１×３１画素の基準画素から成る点において、図１に示す映像圧縮システム１００と異なり、他の点は映像圧縮システム１００と同じである。また、動きベクトル算出処理の手順は、図２に示す手順と同じである。
【００４６】
本実施例における具体的な仮動きベクトルの割り当て方法は以下の通りである。すなわち、基準画素のｘ座標が＋１だけずれる度に、仮動きベクトルのｘ成分が２ずつ増えていき、また、基準画素のｙ座標が＋１だけずれる度に、仮動きベクトルのｙ成分が２ずつ増えていくように割り当てるものである。従って、各仮動きベクトルセットは、合計９６１（＝３１×３１）種類のベクトルを含むこととなり、上述した各実施例では存在した仮動きベクトル（−３０，−２９）や、仮動きベクトル（−２７，−２９）等は、本実施例では割り当てられない。このような割り当て方法であっても、上述した動きベクトル算出処理を実行することで、動きベクトルを算出することができる。
【００４７】
Ｄ．第４の実施例：
図７は、第４の実施例における仮動きベクトルの割り当て方法を模式的に示す説明図である。上述した各実施例では、隣接する基準画素には、それぞれ異なる動きベクトルを割り当てていた。これに対して、第４の実施例では、一部の隣接する基準画素には同一の動きベクトルを割り当てる。なお、第４の実施例の映像圧縮システムは、仮動きベクトルセットの領域が１２１×１２１画素の基準画素から成る点において、図１に示す映像圧縮システム１００と異なり、他の点は映像圧縮システム１００と同じである。また、動きベクトル算出処理の手順は、図２に示す手順と同じである。
【００４８】
具体的には、２×２画素の合計４つの基準画素を１ユニットとして、同じユニット内の基準画素には同じ仮動きベクトルを割り当て、異なるユニット間では異なる仮動きベクトルを割り当てるように構成されている。例えば、仮動きベクトルセットの左上隅のユニットＵ１には、仮動きベクトル（−３０，−３０）が割り当てられ、その右隣りのユニットＵ２には、仮動きベクトル（−２９，−３０）が割り当てられている。このような割り当て方法であっても、上述した動きベクトル算出処理を実行することで、動きベクトルを算出することができる。
【００４９】
Ｅ．第５の実施例：
図８は、第５の実施例における仮動きベクトルの割り当て方法を模式的に示す説明図である。上述した各実施例では、各基準画素に割り当てられる仮動きベクトルは、各仮動きベクトルセットにおいて、画素位置に応じて、（−３０，−３０）〜（＋３０，＋３０）の範囲で規則的に変化するように割り当てられていた。これに対して、第５の実施例では、各仮動きベクトルセットにおいて、（−３０，−３０）〜（＋３０，＋３０）の範囲で仮動きベクトルがランダムに各基準画素に割り当てられている。仮動きベクトルのランダムな割り当ては、例えば、乱数発生器を用いて行うことができる。なお、映像圧縮システムの構成は図１に示す映像圧縮システム１００と同じであり、また、動きベクトル算出処理の手順は、図２に示すフローチャートと同じである。
【００５０】
具体的には、図８に示すように、基準画素［０，０］には第１の実施例と同様に、仮動きベクトル（−３０，−３０）が割り当てられている。しかしながら、その右隣の基準画素［１，０］には、第１の実施例とは異なり、仮動きベクトル（−１０，−６）が割り当てられている。また、基準画素［０，０］の下の基準画素［０，１］には、第１の実施例とは異なり、仮動きベクトル（＋８，＋２０）が割り当てられている。このように、各仮動きベクトルセット内において、所定範囲のベクトルがランダムに割り当てられている構成においても、大局的にみると、処理対象領域内で複数の仮動きベクトルが均等に分散するように割り当てられることとなる。そして、かかる構成においても、対象ブロックとのブロックマッチングを行って、そのマッチング度の高い上位１００個の基準画素に割り当てられた仮動きベクトルに基づいて動きベクトルを算出するので、上述した第１の実施例と同等の精度で動きベクトルを算出することができる。
【００５１】
なお、各仮動きベクトルセット内で所定範囲の仮動きベクトルをランダムに割り当てるのに代えて、処理対象領域全体で所定範囲の仮動きベクトルをランダムに割り当てるようにしてもよい。具体的には、第１の実施例と同じ処理対象領域（合計８６４００（＝３６０×２４０）画素）において、（−３０，−３０）〜（＋３０，＋３０）の範囲の仮動きベクトル（合計３７２１（＝６１×６１）種類のベクトル）をランダムに各基準画素に割り当てるようにしてもよい。この場合、処理対象領域内において、異なる基準画素に対して同一の仮動きベクトルが割り当てられることとなる。ここで、隣接する基準画素には、同一の仮動きベクトルを割り当てないようにすることが好ましい。これは以下の理由による。すなわち、隣接する基準画素の基準ブロック同士は、互いに近い位置に存在するので同じような内容を示している。そして、隣接する基準画素に同一の仮動きベクトルを割り当てた場合には、隣接する基準画素の基準ブロックに対応する対象ブロック同士も、互いに近い位置に存在して同じような内容を示すこととなる。従って、これら隣接する基準画素について算出されるマッチング値はほぼ等しくなる。それゆえ、隣接する基準画素のいずれか一方についてマッチング値を算出するのと同じような結果となり、算出される動きベクトルの精度が、基準画素の数を減らした場合と同様に低くなる可能性があるからである。
【００５２】
Ｆ．第６の実施例：
図９は、第６の実施例における仮動きベクトルセットを模式的に示す説明図である。上述した各実施例では、各仮動きベクトルセットの形状は矩形であったが、本実施例における仮動きベクトルセットの形状はＬ形である。このように仮動きベクトルセットがＬ形であっても、このＬ形に含まれる基準画素に割り当てられた仮動きベクトルに基づき、上述した動きベクトル算出処理を実行して、動きベクトルを算出することができる。なお、仮動きベクトルセットの形状は、上述した矩形及びＬ形の他にも、十字形や卍形など、任意の形状とすることができる。また、各仮動きベクトルセットは、隣接しなくてもよい。例えば、縦又は横のストライプ状に配置されていてもよいし、格子状に配置されていてもよい。
【００５３】
Ｇ．変形例：
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【００５４】
Ｇ１．変形例１：
上述した各実施例では、仮動きベクトルは、（−３０，−３０）〜（＋３０，＋３０）の範囲内のベクトルであるものとしたが、仮動きベクトルの各成分は、任意の値の範囲とすることができる。上述したように、ユーザは、変数ＭＶＸ，ＭＶＹを設定することで、この仮動きベクトルの範囲を指定することができる。したがって、例えば、仮動きベクトルの範囲として（−１８０，−１２０）〜（＋１８０，＋１２０）とすることで、第１の実施例における処理対象領域（３６０×２４０画素）の各基準画素に、それぞれ異なる仮動きベクトルを割り当てることもできる。
【００５５】
Ｇ２．変形例２：
上述した各実施例では、或る領域内の全ての画素を基準画素とするものとしたが、或る領域内の一部の画素を基準画素とするようにしてもよい。具体的には、現フレーム内の全ての画素のうち、１つおきの画素を基準画素としてもよい。例えば、ｙ座標が０である画素については、画素［０，０］，画素［２，０］，画素［４，０］，・・・と１つおきの画素を基準画素としてもよい。このようにしても、これら定めた基準画素についてマッチング値を算出することで、このマッチング値に基づき動きベクトルを算出することができる。なお、一部の画素のみを基準画素として選択する場合には、基準画素を規則的に選択することが好ましい。
【００５６】
Ｇ３．変形例３：
上述した各実施例では、基準ブロックは、基準画素を左上隅とするブロックであったが、基準画素を右下隅とするブロックや、基準画素を中心とするブロックなど、基準画素を含む任意のブロックとしてもよい。また、対象ブロックも対象画素を左上隅とするブロックであったが、対象画素を含む任意のブロックとしてもよい。
【００５７】
Ｇ４．変形例４：
上述した第１の実施例では、ステップＳ２１０（図２）において仮動きベクトルを割り当てるのに、各基準画素ごとに、上記式（１），（２）を用いて仮動きベクトルを算出して割り当てていたが、動きベクトル算出処理の開始前に、予め、設定された変数ＭＶＸ，ＭＶＹに基づき仮動きベクトルを算出して仮動きベクトルテーブルを生成してメモリ１３０に格納しておくようにしてもよい。このようにすることで、動きベクトル算出処理では、ステップＳ２１０を省略することができ、ステップＳ２１５においてブロックマッチングを行う際に仮動きベクトルテーブルを参照すればよいので、動きベクトル算出処理の処理時間を短縮することができる。
【００５８】
Ｇ５．変形例５：
上述した第１の実施例では、ステップＳ２２５において、マッチング値の小さい（マッチング度の高い）上位１００位の基準画素に割り当てられた仮動きベクトルの平均値を動きベクトルとして算出していたが、上位１００位に限らず、上位１０位や上位２００位など、上位Ｎ位（Ｎは１以上の整数）の基準画素に割り当てられた仮動きベクトルの平均値を動きベクトルとして算出してもよい。また、上位Ｎ位の基準画素に割り当てられた仮動きベクトルの平均値を動きベクトルとするのに代えて、マッチング値が所定値以下の全基準画素に割り当てられた仮動きベクトルの平均値を動きベクトルとしてもよい。具体的には、例えば、マッチング値が「２０」以下である全ての基準画素に割り当てられた仮動きベクトルの平均値を算出して、動きベクトルとしてもよい。また、平均値を算出する際には、マッチング値に予め対応付けられた重みを用いて、重み付け平均を求めるようにしてもよい。このようにしても、より高いマッチング度の基準画素に割り当てられた仮動きベクトルに基づいて動きベクトルを算出することができるので、精度の高い動きベクトルを算出することができる。これらの説明から理解できるように、フレーム間の動きベクトルは、各基準画素に割り当てられた仮動きベクトルと、各基準画素ごとに算出されたマッチング度とに基づいて算出することが可能である。
【００５９】
Ｇ６．変形例６：
上述した各実施例では、処理対象領域内において大局的にみると、同一の仮動きベクトルが均等に分散するように割り当てられていたが、処理対象領域内で不均等に分散するように割り当ててもよい。具体的には、例えば、処理対象領域の左上隅の部分にのみ仮動きベクトル（−３０，−３０）を割り当て、その他の部分には、この仮動きベクトル（−３０，−３０）を割り当てないようにする。そして、その右隣りの部分にのみ仮動きベクトル（−２９，−３０）を割り当て、その他の部分には、この仮動きベクトル（−２９，−３０）を割り当てないようにするといったように、或る仮動きベクトルが処理対象領域内において塊として割り当てられるようにしてよい。
【００６０】
Ｇ７．変形例７：
上述した各実施例では、動きベクトル算出処理によって算出された動きベクトルは、ＭＰＥＧ−１方式の圧縮符号化に用いられるものとしたが、ＭＰＥＧ−２やＨ．２６３など、任意の圧縮符号化に用いることもできる。さらには、動きベクトル算出処理によって算出された動きベクトルを圧縮符号化以外の種々の処理のために用いることもできる。
【００６１】
Ｇ８．変形例８：
上述した実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【図面の簡単な説明】
【００６２】
【図１】本発明の動きベクトル算出装置を適用した映像圧縮システムの概略構成を示す説明図である。
【図２】映像圧縮システム１００において実行される動きベクトル算出処理の手順を示すフローチャートである。
【図３】ステップＳ２１０において基準画素に割り当てられた仮動きベクトルを模式的に示す説明図である。
【図４】ステップＳ２１５において実行されるブロックマッチングの方法を模式的に示す説明図である。
【図５】第２の実施例における処理対象領域を示す説明図である。
【図６】第３の実施例における仮動きベクトルの割り当て方法を模式的に示す説明図である。
【図７】第４の実施例における仮動きベクトルの割り当て方法を模式的に示す説明図である。
【図８】第５の実施例における仮動きベクトルの割り当て方法を模式的に示す説明図である。
【図９】第６の実施例における仮動きベクトルセットを模式的に示す説明図である。
【符号の説明】
【００６３】
１００…映像圧縮システム
１１０…コンピュータ
１２０…ＣＰＵ
１２０ａ…仮動きベクトル割り当て部
１２０ｂ…マッチング度算出部
１２０ｃ…動きベクトル算出部
１２０ｄ…圧縮制御部
１３０…メモリ
１３０ａ…現フレーム格納部
１３０ｂ…次フレーム格納部
１５０…ハードディスク
１６０…入出力インタフェース部
１６５…内部バス
１７０…ディスプレイ
１７２…キーボード
１７４…マウス
１７６…デジタルビデオカメラ
ＡＲ２…処理対象領域
Ｂａ，Ｂａ１…基準ブロック
Ｐａ，Ｐａ１…基準画素
Ｂｂ，Ｂｂ１…対象ブロック
Ｐｂ…対象画素
Ｓａ１〜ＳａＮ…サンプリングポイント
Ｓｂ１〜ＳｂＮ…サンプリングポイント
【図１】
2008103834.tif 000006
【図２】
2008103834.tif 000007
【図３】
2008103834.tif 000008
【図４】
2008103834.tif 000009
【図５】
2008103834.tif 000010
【図６】
2008103834.tif 000011
【図７】
2008103834.tif 000012
【図８】
2008103834.tif 000013
【図９】
2008103834.tif 000014