(57)【要約】【課題】動きベクトルの検出の精度を向上させる。【解決手段】動きベクトルの検出対象となっている画像に、エッジを含む画像があるか否かが判断される。エッジがあると判断された場合、予測動きベクトル（ＰＭＶ）を優遇するための処理が行われ、エッジがないと判断された場合、予測動きベクトルを優遇する処理は行われず、通常の処理が行われる。ＰＭＶが優遇されるとは、ＰＭＶが他の動きベクトルよりも選択されやすいように、ＰＭＶのコスト関数値が他の動きベクトルのコスト関数値よりも小さい値になるような演算が行われる。本発明は、AVC（Advanced Video Coding）方式のエンコーダに適用できる。【選択図】図８
2012142702.tif 000002
【特許請求の範囲】
【請求項１】
画像内に連続するエッジが検出されたか否かを判断する判断部と、
前記判断部で連続するエッジが検出されたと判断された場合、予測動きベクトルが、他の動きベクトルよりも優遇されるように処理する優遇部と
を備える画像処理装置。
【請求項２】
前記判断部は、クロマイントラモードにおけるモードの情報を用いる
請求項１に記載の画像処理装置。
【請求項３】
前記判断部は、クロマイントラモードが水平予測モードまたは垂直予測モードのとき、連続するエッジが検出されたと判断する
請求項１に記載の画像処理装置。
【請求項４】
前記優遇部は、前記予測動きベクトルのコスト関数値から、所定の値を減算する
請求項１に記載の画像処理装置。
【請求項５】
判断部と優遇部を備える画像処理装置の画像処理方法において、
前記判断部は、画像内に連続するエッジが検出されたか否かを判断し、
前記優遇部は、前記判断部で連続するエッジが検出されたと判断された場合、予測動きベクトルが、他の動きベクトルよりも優遇されるように処理する
ステップを含む画像処理方法。
【請求項６】
判断部と優遇部を備える画像処理装置を制御するコンピュータに、
前記判断部は、画像内に連続するエッジが検出されたか否かを判断し、
前記優遇部は、前記判断部で連続するエッジが検出されたと判断された場合、予測動きベクトルが、他の動きベクトルよりも優遇されるように処理する
ステップを含む処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置および方法、並びにプログラムに関し、特に、エンコード時の画質の劣化を防ぐことができるようにした画像処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、画像情報をデジタルとして取り扱い、その際、効率の高い情報の伝送、蓄積を目的とし、画像情報特有の冗長性を利用して、離散コサイン変換等の直交変換と動き補償により圧縮する符号化方式を採用して画像を圧縮符号する装置が普及しつつある。この符号化方式には、例えば、MPEG（Moving Picture Experts Group）などがある。
【０００３】
特に、MPEG2(ISO/IEC 13818-2)は、汎用画像符号化方式として定義されており、飛び越し走査画像及び順次走査画像の双方、並びに標準解像度画像及び高精細画像を網羅する標準である。例えば、MPEG2は、プロフェッショナル用途及びコンシューマ用途の広範なアプリケーションに現在広く用いられている。MPEG2は主として放送用に適合する高画質符号化を対象としていたが、MPEG1より低い符号量（ビットレート）、つまりより高い圧縮率の符号化方式には対応していなかった。携帯端末の普及により、今後そのような符号化方式のニーズは高まると思われ、これに対応してMPEG4符号化方式の標準化が行われた。画像符号化方式に関しては、1998年12月にISO/IEC 14496-2としてその規格が国際標準に承認された。
【０００４】
さらにH．26L (ITU-T Q6/16 VCEG）という規格がある。H．26Lは、MPEG2やMPEG4といった符号化方式に比べ、その符号化、復号化により多くの演算量が要求されるものの、より高い符号化効率が実現されることが知られている。その後、MPEG4の活動の一環として、このH．26Lをベースに、H．26Lではサポートされない機能をも取り入れ、より高い符号化効率を実現する標準化がJoint Model of Enhanced-Compression Video Codingとして行われている。2003年3月にはH．264及びMPEG-4 Part10 （Advanced Video Coding、以下H．264/AVCと記す）という国際標準となっている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】H.264/AVC Software Coordination ［online］［平成２２年１２月９日］検索インターネット＜ＵＲＬ：http://iphome.hhi.de/suehring/tml/＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
符号化した結果、画質が劣化する場合がある。図１に画質劣化の一例を示す。図１は、所定の解析用のソフトウェアを用いて、符号化時に検出された動きベクトルを可視化し、画像上に重畳した図である。図１には、高層ビルが映し出されており、この高層ビルを下から上方向にチルトして撮影したときに得られる１画像上に、動きベクトルを可視化して重畳している。図１において、白い点（線）は、動きベクトル（ただし、図１においては、方向は示していない）を示している。下から上方向にチルトして撮影された画像上では、動きベクトルは、同一方向に同じ量だけ移動するベクトルとして検出される。よって、そのような動きベクトルを可視化した場合、同じ長さの線（点）になる。
【０００７】
しかしながら、図１において、楕円１１で囲った部分内には、他の動きベクトルとは異なる方向や長さで検出された動きベクトルが検出されたため、他の部分とは異なる長さの線が存在している。図１の楕円１１内の一部分をさらに拡大した図を、図２に示す。図２に示した動きベクトルのうち、例えば、動きベクトル２１と動きベクトル２２は、長さが異なる。動きベクトル２２と同じ長さのベクトルは、図１中に多数存在し、動きベクトル２２は、正しく検出されたベクトルであると判断できる。よって、動きベクトル２１は、誤検出されたベクトルであると判断できる。このような動きベクトルの誤検出は、画質の劣化を招くことになり、改善されることが望まれている。
【０００８】
また他の例として、図３を示す。図３は、車道沿いにカメラを固定し、車の行き来を撮影した映像の１画像上に、動きベクトルを可視化して重畳した図である。図１と同じく、図３においても、白い点（線）は、動きベクトルを示している。図３においては、固定カメラで撮影されている。よって、車道は固定であり、車が移動している映像が撮影されるため、車道からは動きベクトルが検出されず、車からは動きベクトルが検出される状態である。
【０００９】
しかしながら、図３を参照するに、楕円３１内の車の付近の車道上にも動きベクトルが検出されたことを示す線が存在する。図３を参照すると、楕円３１内に限らず、他の部分においても、動いている物体の近傍にある静止している物体上にも、動きベクトルが検出されていることが読み取れる。このように、動いている物体の近傍で、本来検出されない動きベクトルが検出されることがあり、このような誤検出は、上記した場合と同じく、画質の劣化を招くことになり、改善されることが望まれている。
【００１０】
本発明は、このような状況に鑑みてなされたものであり、符号化により画質が劣化してしまうことを防ぐことができるようにするものである。
【課題を解決するための手段】
【００１１】
本発明の一側面の画像処理装置は、画像内に連続するエッジが検出されたか否かを判断する判断部と、前記判断部で連続するエッジが検出されたと判断された場合、予測動きベクトルが、他の動きベクトルよりも優遇されるように処理する優遇部とを備える。
【００１２】
前記判断部は、クロマイントラモードにおけるモードの情報を用いるようにすることができる。
【００１３】
前記判断部は、クロマイントラモードが水平予測モードまたは垂直予測モードのとき、連続するエッジが検出されたと判断するようにすることができる。
【００１４】
前記優遇部は、前記予測動きベクトルのコスト関数値から、所定の値を減算するようにすることができる。
【００１５】
本発明の一側面の画像処理方法は、判断部と優遇部を備える画像処理装置の画像処理方法において、前記判断部は、画像内に連続するエッジが検出されたか否かを判断し、前記優遇部は、前記判断部で連続するエッジが検出されたと判断された場合、予測動きベクトルが、他の動きベクトルよりも優遇されるように処理するステップを含む。
【００１６】
本発明の一側面のプログラムは、判断部と優遇部を備える画像処理装置を制御するコンピュータに、前記判断部は、画像内に連続するエッジが検出されたか否かを判断し、前記優遇部は、前記判断部で連続するエッジが検出されたと判断された場合、予測動きベクトルが、他の動きベクトルよりも優遇されるように処理するステップを含む処理を実行させるためのプログラムである。
【００１７】
本発明の一側面の画像処理装置および方法、並びにプログラムにおいては、画像内に連続するエッジが検出された場合、予測動きベクトルが、他の動きベクトルよりも優遇されるように処理がされる。
【発明の効果】
【００１８】
本発明の一側面によれば、符号化により画質が劣化してしまうことを防ぐことが可能となる。
【図面の簡単な説明】
【００１９】
【図１】検出される動きベクトルについて説明するための図である。
【図２】検出される動きベクトルについて説明するための図である。
【図３】検出される動きベクトルについて説明するための図である。
【図４】エンコーダの一実施の形態の構成を示す図である。
【図５】インタレースについて説明するための図である。
【図６】誤検出について説明するための図である。
【図７】検出される動きベクトルについて説明するための図である。
【図８】動き予測装置の動作について説明するためのフローチャートである。
【図９】イントラクロマのモードについて説明するための図である。
【図１０】記録媒体について説明するための図である。
【発明を実施するための形態】
【００２０】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２１】
［エンコーダの構成例］
図４は、AVC（Advanced Video Coding）方式のエンコーダの一実施の形態の構成例を示すブロック図である。図４のエンコーダは、A/D変換装置１０１、画面並べ替えバッファ１０２、演算装置１０３、直交変換装置１０４、量子化装置１０５、可逆符号化装置１０６、蓄積バッファ１０７、逆量子化装置１０８、逆直交変換装置１０９、加算装置１１０、デブロックフィルタ１１１、フレームメモリ１１２、動き補償装置１１３、イントラ予測装置１１４、レート制御装置１１５、動き予測装置１１６、および選択装置１１７により構成される。図４のエンコーダは、入力された画像をAVC方式で圧縮符号化する。
【００２２】
具体的には、エンコーダのA/D変換装置１０１は、入力信号として入力されたフレーム単位の画像をA/D変換し、画面並べ替えバッファ１０２に出力し、記憶させる。画面並べ替えバッファ１０２は、記憶した表示の順番のフレームの画像を、GOP（Group of Picture）構造に応じて、符号化のための順番に並べ替える。
【００２３】
演算装置１０３は、必要に応じて、画面並べ替えバッファ１０２から読み出された画像から、選択装置１１７から供給される予測画像を減算する。演算装置１０３は、減算の結果得られる画像を、残差情報として直交変換装置１０４に出力する。演算装置１０３は、選択装置１１７から予測画像が供給されない場合、画面並べ替えバッファ１０２から読み出された画像をそのまま残差情報として直交変換装置１０４に出力する。
【００２４】
直交変換装置１０４は、演算装置１０３からの残差情報に対して、ブロックサイズに応じた直交変換処理を行い、直交変換処理の結果得られる係数を量子化装置１０５に供給する。量子化装置１０５は、直交変換装置１０４から供給される係数を量子化する。量子化された係数は、可逆符号化装置１０６に入力される。可逆符号化装置１０６は、最適イントラ予測モードを示す情報（以下、イントラ予測モード情報という）をイントラ予測装置１１４から取得し、最適インター予測モードを示す情報（以下、インター予測モード情報という）、動きベクトルの情報などを動き予測装置１１６から取得する。
【００２５】
可逆符号化装置１０６は、量子化装置１０５から供給される量子化された係数に対して、可変長符号化（例えば、CAVLC（Context-Adaptive Variable Length Coding）など）、算術符号化（例えば、CABAC（Context-Adaptive Binary Arithmetic Coding）など）などの可逆符号化を行い、その結果得られる情報を圧縮画像とする。また、可逆符号化装置１０６は、イントラ予測モード情報、インター予測モード情報、動きベクトルの情報などを可逆符号化し、その結果得られる情報を圧縮画像に付加されるヘッダ情報とする。可逆符号化装置１０６は、可逆符号化の結果得られるヘッダ情報が付加された圧縮画像を画像圧縮情報として蓄積バッファ１０７に供給し、蓄積させる。
【００２６】
蓄積バッファ１０７は、可逆符号化装置１０６から供給される画像圧縮情報を、一時的に記憶し、例えば、後段の図示せぬ記録装置や伝送路などに出力する。また、量子化装置１０５より出力された、量子化された係数は、逆量子化装置１０８にも入力され、逆量子化された後、逆直交変換装置１０９に供給される。
【００２７】
逆直交変換装置１０９は、逆量子化装置１０８から供給される係数に対して、ブロックサイズに応じた逆直交変換処理を行い、逆直交変換処理の結果得られる残差情報を加算装置１１０に供給する。加算装置１１０は、逆直交変換装置１０９から供給される残差情報を、必要に応じて、イントラ予測装置１１４または動き補償装置１１３から供給される予測画像と加算し、局部的に復号された画像を得る。加算装置１１０は、得られた画像をデブロックフィルタ１１１に供給するとともに、参照画像としてイントラ予測装置１１４に供給する。
【００２８】
デブロックフィルタ１１１は、加算装置１１０から供給される局部的に復号された画像をフィルタリングすることにより、ブロック歪を除去する。デブロックフィルタ１１１は、その結果得られる画像をフレームメモリ１１２に供給し、蓄積させる。フレームメモリ１１２に蓄積された画像は、参照画像として動き補償装置１１３および動き予測装置１１６に出力される。
【００２９】
動き補償装置１１３は、動き予測装置１１６から供給される動きベクトルとインター予測モード情報に基づいて、フレームメモリ１１２から供給される参照画像に対して補償処理を行い、予測画像を生成する。動き補償装置１１３は、動き予測装置１１６から供給されるコスト関数値（詳細は後述する）と、生成された予測画像とを選択装置１１７に供給する。
【００３０】
なお、コスト関数値は、RD(Rate Distortion)コスト関数値ともいい、例えば、AVC方式における参照ソフトウェアであるJM(Joint Model)で定められているような、High Complexity モードか、Low Complexity モードのいずれかの手法に基づいて算出される。
【００３１】
具体的には、コスト関数値の算出手法としてHigh Complexity モードが採用される場合、候補となる全ての予測モードに対して、仮に可逆符号化までが行われ、次の式（１）で表わされるコスト関数値が各予測モードに対して算出される。
Cost=D＋λ×R                                          ・・・（１）
Dは、原画像と復号画像の差分（歪）、Rは、直交変換の係数まで含んだ発生符号量、λは、量子化パラメータQPの関数として与えられるラグランジュ乗数である。
【００３２】
一方、コスト関数値の算出手法としてLow Complexity モードが採用される場合、候補となる全ての予測モードに対して、復号画像の生成、および、予測モードを示す情報などのヘッダビットの算出が行われ、次の式（２）で表わされるコスト関数値関数が各予測モードに対して算出される。
Cost=D＋QPtoQuant(QP)×Header_Bit                      ・・・（２）
Dは、原画像と復号画像の差分（歪）、QPtoQuantは、量子化パラメータQPの関数として与えられる関数（Ｑ値）であり、Header_Bitは、予測モードに対するヘッダビットである。
【００３３】
Low Complexity モードにおいては、全ての予測モードに対して、復号画像を生成するだけでよく、可逆符号化を行う必要がないため、演算量が少なくて済む。なお、ここでは、コスト関数値の算出手法としてLaw Complexity モードが採用されるものとする。
【００３４】
イントラ予測装置１１４は、画面並べ替えバッファ１０２から読み出された画像と、加算装置１１０から供給された参照画像とに基づいて、候補となる全てのブロックサイズのブロック単位で、候補となる全てのイントラ予測モードのイントラ予測処理を行い、予測画像を生成する。
【００３５】
また、イントラ予測装置１１４は、候補となる全てのイントラ予測モードおよびブロックサイズに対してコスト関数値を算出する。そして、イントラ予測装置１１４は、コスト関数値が最小となるイントラ予測モードおよびブロックサイズの組み合わせを最適イントラ予測モードに決定する。イントラ予測装置１１４は、最適イントラ予測モードで生成された予測画像、および、対応するコスト関数値を、選択装置１１７に供給する。イントラ予測装置１１４は、選択装置１１７から最適イントラ予測モードで生成された予測画像の選択が通知された場合、イントラ予測モード情報を可逆符号化装置１０６に供給する。
【００３６】
動き予測装置１１６は、画面並べ替えバッファ１０２から供給される画像と、フレームメモリ１１２から供給される参照画像とに基づいて、候補となる全てのインター予測モードの動き予測行い、動きベクトルを生成する。このとき、動き予測装置１１６は、候補となる全てのインター予測モードに対してコスト関数値を算出し、コスト関数値が最小となるインター予測モードを最適インター測モードに決定する。そして、動き予測装置１１６は、インター予測モード情報、並びに、対応する動きベクトルおよびコスト関数値を動き補償装置１１３に供給する。動き予測装置１１６は、選択装置１１７から最適インター予測モードで生成された予測画像の選択が通知された場合、インター予測モード情報、対応する動きベクトルの情報などを可逆符号化装置１０６に出力する。
【００３７】
選択装置１１７は、イントラ予測装置１１４および動き補償装置１１３から供給されるコスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードのうちのいずれかを、最適予測モードに決定する。そして、選択装置１１７は、最適予測モードの予測画像を、演算装置１０３および加算装置１１０に供給する。また、選択装置１１７は、最適予測モードの予測画像の選択をイントラ予測装置１１４または動き予測装置１１６に通知する。
【００３８】
レート制御装置１１５は、蓄積バッファ１０７に蓄積された画像圧縮情報に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化装置１０５の量子化動作のレートを制御する。
【００３９】
［動きベクトルの生成について］
次に、動き予測装置１１６が行う動きベクトルの生成について説明する。ここで、図１乃至３を再度参照する。図１乃至３を参照して、動きベクトルが誤検出されることがあることを説明した。誤検出される一因について図５を参照して説明する。図５において、原画２０１乃至２０４は、原画を示す。原画２０１の次の画像が、原画２０２であり、原画２０２の次の画像が、原画２０３であり、原画２０３の次の画像が、原画２０４である。原画２０１乃至２０４には、それぞれ斜めの線が映し出されており、原画２０１から原画２０４へと時間経過と共に、その斜めの線が、上方向に移動していく映像である。
【００４０】
このような原画２０１乃至２０４をインターレース（Interlace）に変換する際の走査線を擬似的に図示したのが原画２１１乃至２１４である。原画２１１からトップフィールド２２１が生成され、原画２１２からボトムフィールド２２２が生成される。同じく、原画２１３からトップフィールド２２３が生成され、原画２１４からボトムフィールド２２４が生成される。このように１原画から１枚のフィールドが生成される。よって、図５に示したような斜め線などの場合、例えば、トップフィールド２２１を参照するに、斜め線のうちの一部分が、ボトムフィールド２２２に含まれるため、トップフィールド２２１だけで見ると斜め線の一部分が欠落した状態になる。
【００４１】
このような欠欄した情報があるフィールド同士、例えば、トップフィールド２２１とトップフィールド２２３、またはボトムフィールド２２２とボトムフィールド２２４を比較して動きベクトルを検出した場合、誤検出される可能性がある。トップフィールド２２１とトップフィールド２２３を用いて動きベクトルが検出されるときについて、さらに、図６を参照して説明する。
【００４２】
図６（Ａ）は、原画２０１と原画２０３を重ね合わせて表示したときの状態を想定し、一部分を拡大した図である。斜め線Ｌ１が原画２０１における斜め線を表し、斜め線Ｌ２が原画２０３における斜め線を表している。原画２０１から原画２０３へは、斜め線Ｌ１が上方向に移動し斜め線Ｌ２の位置に来ることを意味している。このような斜め線が上方向に移動しただけなので、本来、動きベクトルは、図６（Ａ）に示したように、上方向の動きベクトルＭＶ１が検出されるはずである。換言すれば、斜め線Ｌ１上の点Ｐ１が斜め線Ｌ２上の点Ｐ２に移動したと検出され、動きベクトルＭＶ１が検出される。
【００４３】
しかしながら、図６（Ｂ）に示すように、トップフィールド２２１とトップフィールド２２３から動きベクトルが検出された場合、誤った動きベクトルＭＶ２が検出される可能性がある。図６（Ｂ）は、トップフィールド２２１とトップフィールド２２３を重ね合わせて表示したときの状態を想定し、一部分を拡大した図である。トップフィールド２２１における斜め線Ｌ１とトップフィールド２２３における斜め線Ｌ２は、それぞれ、図６（Ｂ）に示した部分だけが、それぞれのフィールドに含まれる。
【００４４】
斜め線Ｌ１の一部分である斜め線Ｌ１’は、本来、ボトムフィールド２２２に含まれる斜め線Ｌ２の一部分に移動しているが、トップフィールド２２３には、その部分が含まれていないため、動きベクトルの検出時には、トップフィールド２２３に含まれる斜め線Ｌ２の一部分である斜め線Ｌ２’が用いられる。このため、斜め線Ｌ１’と斜め線Ｌ２’が用いられて動きベクトルが検出されると、斜め線Ｌ１’上の点Ｐ１’が斜め線Ｌ２’上の点Ｐ２’に移動したと判断され、動きベクトルＭＶ２が検出される可能性がある。
【００４５】
動きベクトルが誤検出される原因の一因として、このようなことが考えられる。ここであげた原因は、一因であり、他の要因もある。また、上記した説明では、斜め線を例にあげて説明したが、斜め線に限らず、縦線や横線といった場合でも誤検出が起きる可能性はある。原因によらず、誤検出が行われると、図１乃至３を参照して説明したように、正しく検出された動きベクトルの中に、誤検出された動きベクトルが存在し、そのために、画質が劣化してしまう可能性がある。
【００４６】
そこで、このような誤検出が行われないようにする。後述するような処理を、動き予測装置１１６が行うことで、図７に示すような結果が得られる。図７は、図１の楕円１１内の一部分をさらに拡大した図であり、図２と同一箇所の図であるが、図２のときと異なる処理で動きベクトルを算出した場合の図である。図２と比較して説明する。図２において、動きベクトル２１と動きベクトル２２は、異なる大きさの動きベクトルであることが図２から読み取れる。これに対して、動きベクトル２１と動きベクトル２２に対応する図７における動きベクトル２１’と動きベクトル２２’は、同一の大きさの動きベクトルであることが図７から読み取れる。
【００４７】
このように、後述する処理が実行されることで、誤検出される動きベクトルの数を減らすことができる。よって、符号化することで画質が劣化するようなことを防ぐことが可能となる。
【００４８】
［動き予測装置１１６の処理について］
次に、動き予測装置１１６の処理について説明する。図８は、動き予測装置１１６が行う処理について説明するためのフローチャートである。動き予測装置１１６は、画面並べ替えバッファ１０２から供給される画像と、フレームメモリ１１２から供給される参照画像とに基づいて、候補となる全てのインター予測モードの動き予測を行い、動きベクトルを生成する。
【００４９】
ステップＳ１１において、ＳＡＤが算出される。ＳＡＤとは、Sum of Absolute Differenceの略であり、差分絶対値などと訳される。ＳＡＤは、例えば、ブロックマッチングの処理が行われるときに算出される。基準画像M1が、複数の基準ブロックに分割され、この基準ブロックについて、ブロックマッチングが行われる。すなわち、基準ブロックが、比較画像Mnの、どの位置にずれているかがサーチ（探索）され、その位置ずれ量が、基準ブロックについての動きベクトルとして検出される。
【００５０】
比較画像Mnにおいて、基準ブロックをサーチするサーチ範囲には、その基準ブロックの位置を基準とする範囲が設定される。そして、比較画像Mnのサーチ範囲内において、基準ブロックと同一サイズの参照ブロックが、画素単位でずらされながら、基準ブロックに最も類似する参照ブロックの位置の探索が行われる。すなわち、基準ブロックと参照ブロックとの相関値が、基準ブロックと参照ブロックとの類似の度合いを評価する評価値として用いられ、サーチ範囲内の各位置の参照ブロックについて、相関値が求められ。
【００５１】
相関値としては、例えば、基準ブロックの画素の輝度値と、参照ブロックの同一の位置の画素の輝度値との差分の絶対値の、基準ブロック及び参照ブロック内の全画素についてSADが用いられる。ステップＳ１１においては、相関値SADを最小にする座標（相対座標）が、基準ブロックの動きベクトルとして検出される。また、最小となるＳＡＤは、以下の式においても用いられる。
【００５２】
ステップＳ１２において、Cost（以下、コスト関数値と記述する）が算出される。コスト関数値の算出は、上記したようにAVC方式における参照ソフトウェアであるJM(Joint Model)で定められているような、High Complexity モードか、Low Complexity モードのいずれかの手法に基づいて行われる。ここでは、コスト関数値の算出手法としてLaw Complexity モードが採用されるものとするため、式（２）により、コスト関数値が算出される。ここで、式（２）を再度記載する。
Cost=D＋QPtoQuant(QP)×Header_Bit                      ・・・（２）
【００５３】
Dは、原画像と復号画像の差分（歪）であり、ここでは、ステップＳ１１において算出されたＳＡＤが用いられる。QPtoQuantは、量子化パラメータQPの関数として与えられる関数（Ｑ値）であり、Header_Bitは、予測モードに対するヘッダビットである。Dを、ＳＡＤで書き換えると、次式（２）’になる。また、次式（２）’で算出される値を通常コスト関数値と記載する。
Cost=SAD＋QPtoQuant(QP)×Header_Bit                      ・・・（２）’
【００５４】
ステップＳ１３において、エッジが検出されたか否かが判断される。ステップＳ１３において、エッジは検出されていないと判断された場合、ステップＳ１４に処理が進められ、エッジが検出されたと判断された場合、ステップＳ１５に処理が進められる。ステップＳ１４において、ＰＭＶ(predicted motion vector；予測ベクトル)を優遇しないと設定され、ＰＭＶのコスト関数値が算出される。ステップＳ１４において算出されるコスト関数値は、通常コスト関数値と記述する。
【００５５】
ＰＭＶは、その予測ベクトルＰＭＶを算出する対象のマクロブロック（カレントマクロブロック）である場合、そのカレントマクロブロックの左横、左上、上、右上にそれぞれ位置している符号化済のマクロブロックＡ，Ｂ，Ｃの動きベクトルＭＶa，ＭＶb，ＭＶc, ＭＶｄを用いて、そのカレントマクロブロックの予測ベクトルＰＭＶが算出される。すなわち、符号化済のマクロブロックＡ，Ｂ，Ｃ, Ｄの動きベクトルＭＶa，ＭＶb，ＭＶc,ＭＶｄのメディアン（中央値）を求めることにより、ＰＭＶが算出される。
【００５６】
一方、ステップＳ１３において、エッジが検出されたと判断された場合、ＰＭＶを優遇すると設定あれ、ＰＭＶのコスト関数値が算出される。ＰＭＶ優遇がされる場合、次式（４）に基づきコスト関数値が算出される。
Cost_PMV=SAD＋QPtoQuant(QP)×Header_Bit-PMVoffset                      ・・・（４）
【００５７】
式（４）は、式（２）’で求められる通常コスト関数値から、PMVoffsetを減算することでコスト関数値を算出する式である。式（４）で算出される値をＰＭＶ優遇コスト関数値と記載する。後述するように、通常コスト関数値やＰＭＶ優遇コスト関数値の中で最も小さい値のコスト関数値が選択される。ＰＭＶ優遇とは、式（４）で算出されるＰＭＶ優遇コスト関数値が小さくなるように、オフセット分の値（PMVoffset）を減算し、他のコスト関数値よりも選択されやすいようにすることを意味する。
【００５８】
ＰＭＶ優遇がされる場合、周りのブロックから検出される動きベクトルから算出されるＰＭＶから、所定の値（PMVoffset）が減算されることで、ＰＭＶ優遇の処理が実行される。エッジが検出されたときに、ＰＭＶ優遇することについての理由については、後述し、先に、図８のフローチャートの説明を続ける。ステップＳ１４においてＰＭＶ優遇が行われなかった場合、またはステップＳ１５においてＰＭＶ優遇が行われた場合、ステップＳ１６に処理が進められる。ステップＳ１６において、全てのモードでコスト関数値を算出したか否かが判断される。モードとしては、１６×１６、１６×８、８×１６、８×８、４×８、８×４、４×４、およびＰＭＶがある。
【００５９】
なお、ステップＳ１３乃至Ｓ１５の処理は、ＰＭＶモードのときに係わる処理のため、ＰＭＶモードのときだけ行われるようにしても良い。例えば、ステップＳ１２とステップＳ１３の間に、ＰＭＶモードであるか否かを判断する処理を設け、ＰＭＶモードであるときには、ステップＳ１３に処理が進められ、ＰＭＶモードでない場合には、ステップＳ１６に処理が進められるような処理の流れにしても良い。
【００６０】
ステップＳ１６において、全てのモードに対するコスト関数値の算出はしていないと判断された場合、ステップＳ１１に処理が戻され、まだ処理を行っていないモードに移行して、ステップＳ１１以降の処理が繰り返される。一方、ステップＳ１６において、全てのモードに対するコスト関数値の算出をしたと判断された場合、ステップＳ１７に処理が進められる。ステップＳ１７において、算出された通常コスト関数値とＰＭＶ優遇コスト関数値のうち、最も値が小さいコスト関数値が選択され、その最も値が小さいコスト関数値が算出されたときのモードが求められる。そして、ステップＳ１８において、決定されたモードにおけるＭＶ（動きベクトル）が、最終的な動きベクトルとして設定される。
【００６１】
このように、本実施の形態においては、所定の状況が満たされるか否か、上記した実施の形態においては、画像内にエッジが検出されたという状況が満たされるか否かが判断され、所定の状況が満たされると判断された場合、予測動きベクトル（ＰＭＶ）が、他の動きベクトル（ＭＶ）よりも優遇されるように処理が実行される。このような処理が実行されることで、検出される動きベクトルの精度を向上させることができる。
【００６２】
［ＰＭＶ優遇について］
ここで、ステップＳ１３において、エッジが抽出された場合に、ＰＭＶモードが選択されやすいように優遇される理由について説明する。上記したように、ＰＭＶは、対象とされているカレントマクロブロックの左横、左上、上、右上にそれぞれ位置している符号化済のマクロブロックの動きベクトルが用いられて算出される。すなわち、ＰＭＶは、隣接するブロックから求められる動きベクトルであるため、隣接するブロックの影響を受けやすいベクトルである。よって、ＰＭＶは、隣接するブロックの動きベクトルと揃えた方が好ましいときに用いられると良い。
【００６３】
例えば、図１（図２）を参照して説明たような映像の場合、ＰＭＶを用いることで、隣接する他の動きベクトルと揃えることができ、例えば、図２に示した動きベクトル２１を、動きベクトル２２と揃えることができる。動きベクトル２１と動きベクトル２２が揃うことで、結果的に、図７に示したように、誤検出されたベクトルが無い状態にすることが可能となる。
【００６４】
一方で、ＰＭＶは、周りの動きベクトルの影響を受けるため、周りの動きベクトルと揃えることが好ましくない状況で用いると、動きベクトルの誤検出がされる可能性が高くなる。例えば、図３を参照して説明したように、固定されたカメラで車道上を行き来する車を撮影したような映像において、車の移動により検出された動きベクトルに、車道の動きベクトルが揃えられると、本来、車道からは動きベクトルが検出されないことが好ましいにも係わらず、車道上にも動きベクトルが検出されるという誤検出がされてしまうことになる。このような場合には、ＰＭＶを用いない方が好ましい。
【００６５】
このように、ＰＭＶを用いた方が好ましい状況と好ましくない状況とがある。図１を参照して説明したような状況のときには、ＰＭＶを用いた方が好ましく、図３を参照して説明したような状況のときには、ＰＭＶを用いない方が好ましい。ＰＭＶを用いた方が好ましい状況のときには、ＰＭＶ優遇し、ＰＭＶが選択されやすいように制御し、ＰＭＶを用いない方が好ましい状況のときには、ＰＭＶ優遇をせずに、ＰＭＶが選択されずらいように制御する。上記したように、図８のフローチャートにおける処理では、ステップＳ１４において、ＰＭＶ優遇をしないという制御を行い、ステップＳ１５において、ＰＭＶ優遇するという制御を行う。
【００６６】
なお、ＰＭＶを優遇しないときであっても、結果としてＰＭＶが選択されることはありうるし、ＰＭＶが選択された場合には、他の動きベクトルよりも適切であると判断されたときであるので、問題が生じるようなことはない。同様に、ＰＭＶを優遇したときであっても、結果として、ＰＭＶが選択されないことはありうるし、ＰＭＶが選択されなかった場合には、他の動きベクトルが適切であると判断されたときであるので、問題が生じるようなことはない。
【００６７】
また、本実施の形態においては、所定の条件のときには、ＰＭＶが選択されやすいように優遇するだけであり、所定の条件のときには、ＰＭＶを選択するように制御するのではない。よって、所定の条件が満たされるときであっても、ＰＭＶが最適な動きベクトルではないときには、ＰＭＶが選択されないように制御することが可能となる。このような制御が行えるようになることで、適切な動きベクトルを検出し、誤検出を低減させることが可能となる。
【００６８】
また、上記したようにＰＭＶが優遇されるとき、式（４）に基づきＰＭＶ優遇コスト関数値が算出される。式（４）において、通常コスト関数値から減算されるPMVoffset（所定の値）を、適切に設定することで、ＰＭＶが選択されることが好ましい状況のときには、ＰＭＶが他の動きベクトルよりも選択されやすいように制御することが可能となる。換言すれば、PMVoffsetの値を適切に設定することで、検出される動きベクトルの精度を向上させることが可能となる。PMVoffsetは、固定値であっても良いし、可変値であっても良い。可変値にした場合、所定の状況に依存して可変される値とすることができる。
【００６９】
所定の状況が満たされるとき、ＰＭＶが優遇されるとして説明したが、所定の状況とは、上記した実施の形態においては、エッジが検出された状況であるか否かである。上記したように、ＰＭＶを優遇し、ＰＭＶが選択された方が好ましい画像（映像）とは、例えば、図１に示したような映像である。図１を再度参照するに、誤検出されやすい箇所は、直線が存在しているような箇所である。直線は、縦方向、横方向のどちらでも、誤検出される可能性があり、また、格子状であっても同様の誤検出される可能性がある。その理由については、図５、図６を参照して説明したようなことが一因としてあげられる。
【００７０】
すなわち、動きベクトルが誤検出されやすいのは、幾何学模様のエッジが発生しやすい箇所である。そのような箇所は、ベクトルが暴れやすい。例えば、パン（Ｐａｎ）時の縦方向の斜め線であると、ベクトルが上下方向に暴れやすい傾向にある。また例えば、チルト（Tilt）時の横方向の斜め線であると、ベクトルが左右方向に暴れやすい傾向にある。暴れやすい傾向とは、動きベクトルが誤検出されやすい状況であり、正しく検出された動きベクトルとは異なる方向や大きさで検出される動きベクトルが存在することを意味する。
【００７１】
よって、幾何学模様のエッジが存在する映像（画像）においては、ＰＭＶが優遇されるようにする。幾何学模様のエッジとは、例えば、線である。線には、線である部分と線でない部分との境界がエッジとして存在している。線は、エッジが連続している状態であると言える。そのような連続するエッジを検出したときには、ベクトルが暴れる傾向にあると判断し、ＰＭＶが優遇されるような制御を行うのが、図８のフローチャートを参照して説明した処理である。
【００７２】
すなわち、図８のフローチャートにおいて、ステップＳ１３において、エッジを検出したか否か（好ましくは、連続したエッジを検出したか否か）を判断し、エッジを検出したと判断されたときには、ステップＳ１５において、ＰＭＶが優遇される。このように、本実施の形態においては、エッジを検出したか否かを判断することで、動きベクトルが暴れやすい傾向にあるか否かを判断する例を挙げて説明した。動きベクトルが暴れやすい傾向にあるか否か（誤検出が行われる可能性があるか否か）の判断は、エッジが検出されたか否かに限定されることを示す記載ではなく、他の判断において行われるようにしても良い。
【００７３】
エッジが検出されたか否かの判断についてさらに説明を加える。エッジが検出されたか否かの判断には、AVC Toolの１つであるChroma Intoraのモードのモードに関する情報を利用する。AVC Chroma Intoraモードには、図９に示す４つのモードが存在する。図９は、色差信号のイントラ予測モード(Intra_chroma_pred_mode)を示す図である。Intra_chroma_pred_modeには、図９に示されるように、モード０乃至モード３の４つのモードがある。
【００７４】
色差信号のイントラ予測は、マクロブロック・サイズ単位で行われる。その予測方向は、符号化済みの左、上、左上の隣接ブロックの画素値が参照されて行われ、図９に示した４ 通りの予測モードが定義されている。モード０（Mode 0）は、DC Prediction（平均値予測モード）であり、モード１（Mode 1）は、Horizontal Prediction（水平予測モード）であり、モード２（Mode 2）は、Vertical Prediction（垂直予測モード）であり、モード３（Mode 3）は、Plane Prediction（平面予測モード）である。
【００７５】
これらのモードは、マクロブロック予測時のモードであり、エッジの有無を検出するためのモードとして定義されているわけではない。しかしながら、本実施の形態として、ステップＳ１３（図８）におけるエッジを検出する際に、これらのモードのどのモードであるかを判断することで、エッジが検出されたか否かの判断が行われるようにする。具体的には、モード１（Mode 1）の水平予測モード、またはモード２（Mode 2）の垂直予測モードであるとき、エッジを検出したと判断され、ＰＭＶが優遇されるようにする。
【００７６】
このようにした場合、ステップＳ１３における処理は、マクロブロック予測のモードが、モード１であるか、またはモード２であるかを判断する処理となる。そして、モード１またはモード２であると判断された場合、ステップＳ１４に処理が進められ、ＰＭＶを優遇するための処理が実行される。
【００７７】
このように、マクロブロック予測のモードを用いて、エッジであるか否か、換言すれば、マクロブロック予測のモードを用いて、ベクトルが暴れる状態であるか否かを判断するようにすることで、新たなハードウエアや、エッジを検出するためのソフトウェアなどを追加することなく、動きベクトルの検出性能を向上させることが可能となる。また回路規模や処理の増加を抑えて、動きベクトルの検出性能を向上させることが可能となる。
【００７８】
なお、上述した実施の形態に加えて、画面全体の動きベクトルを示すGlobalMVや、過去の平均InterSAD値を検出条件に追加することでより特定の箇所を絞ることが可能となる。また、検出されたブロックのQ値を下げることで、さらに改善することが可能となる。
【００７９】
動きベクトルが大きく外れてしまうと、ビットレートを上げたとしても画質の劣化が目立ってしまうが、本実施の形態によれば、動きベクトルが大きく外れてしまうといったようなことが起きることを防ぐことができ、動きベクトルの性能を向上させることができ、画質の改善効果を期待できる。
【００８０】
［記録媒体について］
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【００８１】
図１０は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。コンピュータにおいて、ＣＰＵ（Central Processing Unit）３０１、ＲＯＭ（Read Only Memory）３０２、ＲＡＭ（Random Access Memory）３０３は、バス３０４により相互に接続されている。バス３０４には、さらに、入出力インタフェース３０５が接続されている。入出力インタフェース３０５には、入力部３０６、出力部３０７、記憶部３０８、通信部３０９、及びドライブ３１０が接続されている。
【００８２】
入力部３０６は、キーボード、マウス、マイクロフォンなどよりなる。出力部３０７は、ディスプレイ、スピーカなどよりなる。記憶部３０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部３０９は、ネットワークインタフェースなどよりなる。ドライブ３１０は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア３１１を駆動する。
【００８３】
以上のように構成されるコンピュータでは、ＣＰＵ３０１が、例えば、記憶部３０８に記憶されているプログラムを、入出力インタフェース３０５及びバス３０４を介して、ＲＡＭ３０３にロードして実行することにより、上述した一連の処理が行われる。
【００８４】
コンピュータ（ＣＰＵ３０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア３１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【００８５】
コンピュータでは、プログラムは、リムーバブルメディア３１１をドライブ３１０に装着することにより、入出力インタフェース３０５を介して、記憶部３０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部３０９で受信し、記憶部３０８にインストールすることができる。その他、プログラムは、ＲＯＭ３０２や記憶部３０８に、あらかじめインストールしておくことができる。
【００８６】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【００８７】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００８８】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【００８９】
１０１  A/D変換装置，  １０２  画面並べ替えバッファ，  １０３  演算装置，  １０４  直交変換装置，  １０５  量子化装置，  １０６  可逆符号化装置，  １０７  蓄積バッファ，  １０８  逆量子化装置，  １０９  逆直交変換装置，  １１０  加算装置，  １１１  デブロックフィルタ，  １１２  フレームメモリ，  １１３  動き補償装置，  １１４  イントラ予測装置，  １１５  レート制御装置，  １１６  動き予測装置，  １１７  選択装置
【図１】
2012142702.tif 000003
【図２】
2012142702.tif 000004
【図３】
2012142702.tif 000005
【図４】
2012142702.tif 000006
【図５】
2012142702.tif 000007
【図６】
2012142702.tif 000008
【図７】
2012142702.tif 000009
【図８】
2012142702.tif 000010
【図９】
2012142702.tif 000011
【図１０】
2012142702.tif 000012