(57)【要約】【課題】  ベイヤ配列のＲＡＷ画像データの符号化効率を高める。【解決手段】  ベイヤ配列の画像データを、ＹＣＣ４２２と同じ配列の関係となるＧプレーン、Ｂプレーン、Ｒプレーンの３つのプレーンに変換する変換部と、変換部で得られたＧプレーン、Ｂプレーン、ＲプレーンをＹＣＣ４２２の画像データとして、画素ブロックを単位とする予測符号化する符号化部とを有する。ここで、Ｇプレーンは、Ｂプレーン又はＲプレーンの水平方向の画素数の２倍の画素数を有する。そして、符号化部は、符号化対象の画素ブロックの動きベクトルをＧプレーンの動きベクトルとして求める動き探索部と、この動き探索部で得られた動きベクトルの基づき、Ｂ、Ｒプレーンの動きベクトルを補正する補正部とを含む。【選択図】  図１
2018032909.tif 000002
【特許請求の範囲】
【請求項１】
各フレームがベイヤ配列の画像データで構成される、動画像データを符号化する画像符号化装置であって、
ベイヤ配列の画像データを、Ｇプレーン、Ｂプレーン、Ｒプレーンの３つのプレーンに変換する変換手段と、
ここで、前記Ｇプレーンは、前記Ｂプレーン又はＲプレーンの水平方向の画素数の２倍の画素数を有する；
前記変換手段で得られたＧプレーン、Ｂプレーン、ＲプレーンをＹＣＣ４２２の画像データとして、画素ブロックを単位とする予測符号化する符号化手段とを有し、
前記符号化手段は、
符号化対象の前記画素ブロックの動きベクトルをＧプレーンの動きベクトルとして求める動き探索手段と、
該動き探索手段で得られた動きベクトルの基づき、前記Ｂ、Ｒプレーンの動きベクトルを補正する補正手段と
を含むことを特徴とする画像符号化装置。
【請求項２】
前記補正手段は、
（１）前記Ｒプレーン及び前記Ｂプレーンの動きベクトルの水平成分を、前記Ｇプレーンの画像データの動きベクトルの水平成分の１／２として決定し、
（２）前記Ｒプレーン及び前記Ｂプレーンの動きベクトルの垂直成分については、
（２−１）前記Ｇプレーンの動きベクトルの水平成分が整数精度で偶数の場合には、前記Ｇプレーンの動きベクトルの垂直成分と同じとし、
（２−２）前記Ｇプレーンの動きベクトルの水平成分が整数精度で奇数の場合には、前記Ｇプレーンの動きベクトルの垂直成分からの補正値として“＋０．５”、“０”、又は、“−０．５”のいずれかを決定する
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記補正手段は、
（１）前記Ｒプレーン及び前記Ｂプレーンの動きベクトルの水平成分を、前記Ｇプレーンの画像データの動きベクトルの水平成分の１／２として決定し、
（２）前記Ｒプレーン及び前記Ｂプレーンの動きベクトルの垂直成分については、
（２−１）前記Ｇプレーンの動きベクトルの水平成分が整数精度で偶数の場合には、前記Ｇプレーンの動きベクトルの垂直成分と同じとし、
（２−２）前記Ｇプレーンの動きベクトルの水平成分が整数精度で奇数の場合であって、符号化対象の画素ブロック内のベイヤ配列における画素Ｇ０で構成される画像と前記動きベクトルで示される参照ブロックの画像との差の大小を表す指標値としての第１の値、及び、前記符号化対象の画素ブロック内のベイヤ配列における画素Ｇ１で構成される画像と前記動きベクトルで示される参照ブロックの画像との差の大小を表す指標値としての第２の値とを比較し、当該比較に応じて、前記Ｇプレーンの動きベクトルの垂直成分からの補正値として“＋０．５”、“０”、又は、“−０．５”のいずれかを決定する
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項４】
前記補正手段は、
前記第１の値が前記第２の値よりも所定の閾値Ｔｈより大きい場合には、前記Ｒプレーン及び前記Ｂプレーンの動きベクトルの垂直成分については、“＋０．５”を前記補正値として決定し、
前記第１の値と前記第２の値との差の絶対値が前記閾値Ｔｈ以下の場合には“０”を前記補正値として決定し、
前記第２の値が前記第１の値よりも予め設定された閾値Ｔｈより大きい場合には、前記Ｒプレーン及び前記Ｂプレーンの動きベクトルの垂直成分については、“−０．５”を前記補正値として決定する
ことを特徴とする請求項３に記載の画像符号化装置。
【請求項５】
前記補正手段は、
前記画素ブロックを複数含む領域における画素ブロックそれぞれについて、
（１）前記Ｒプレーン及び前記Ｂプレーンの動きベクトルの水平成分を、前記Ｇプレーンの動きベクトルの水平成分の１／２として決定し、
（２）前記Ｒプレーン及び前記Ｂプレーンの各画素ブロックの動きベクトルの垂直成分については、
（２−１）  前記Ｇプレーンの動きベクトルの水平成分が整数精度で偶数となる場合の画素ブロックの数、
前記Ｇプレーンの動きベクトルの水平成分が整数精度で奇数の場合であった場合であって、符号化対象の画素ブロック内のベイヤ配列における画素Ｇ０で構成される画像と前記動きベクトルで示される参照ブロックの画像との差の大小を表す指標値としての第１の値、及び、前記符号化対象の画素ブロック内のベイヤ配列における画素Ｇ１で構成される画像と前記動きベクトルで示される参照ブロックの画像との差の大小を表す指標値としての第２の値とを、所定の閾値Ｔｈを用いて比較したとき、
（２−２）  第１の値＞第２の値＋Ｔｈ  となる画素ブロックの数、
（２−３）  第１の値＋Ｔｈ＜第２の値  となる画素ブロックの数、
（２−４）  第１の値と第２の値の差の絶対値≦Ｔｈ  となる画素ブロックの数
を集計し、
当該集計の結果に基づき、前記Ｇプレーンの動きベクトルの垂直成分に対して補正値“＋０．５”、“０”、又は、“−０．５”のいずれかで補正した値として決定する
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項６】
前記補正手段は、
前記（２−１）が示すブロック数と前記（２−４）が示すブロック数の合計数が、他のブロック数よりも多い場合、“０”を前記補正値として決定し、
前記（２−２）が示すブロック数が、他のブロック数より多い場合、“＋０．５”を前記補正値として決定し、
前記（２−３）が示すブロック数が他のブロック数よりも多い場合、“−０．５”を前記補正値として決定する
ことを特徴とする請求項５に記載の画像符号化装置。
【請求項７】
前記領域は、フレームまたはスライスを含むことを特徴とする請求項５又は６に記載の画像符号化装置。
【請求項８】
前記補正手段は、前記指標値として、ＭＳＥ(Mean Square Error)、ＭＡＥ(Mean Absolute Error)、あるいはＭＡＤ(Mean Absolute Difference)のいずれかを求めることを特徴とする請求項３又は５に記載の画像符号化装置。
【請求項９】
ベイヤ配列の画像を撮像し、動画像データとして生成する撮像手段と、
請求項１乃至８のいずれか１項に記載の画像符号化装置とを有することを特徴とする撮像装置。
【請求項１０】
各フレームがベイヤ配列の画像データで構成される、動画像データを符号化する画像符号化装置の制御方法であって、
変換手段が、ベイヤ配列の画像データを、Ｇプレーン、Ｂプレーン、Ｒプレーンの３つのプレーンに変換する変換工程と、
ここで、前記Ｇプレーンは、前記Ｂプレーン又はＲプレーンの水平方向の画素数の２倍の画素数を有する；
符号化手段が、前記変換工程で得られたＧプレーン、Ｂプレーン、ＲプレーンをＹＣＣ４２２の画像データとして、画素ブロックを単位とする予測符号化する符号化工程とを有し、
前記符号化工程は、
符号化対象の前記画素ブロックの動きベクトルをＧプレーンの動きベクトルとして求める動き探索工程と、
該動き探索工程で得られた動きベクトルの基づき、前記Ｂ、Ｒプレーンの動きベクトルを補正する補正工程と
を含むことを特徴とする画像符号化装置の制御方法。
【請求項１１】
コンピュータが読み込み実行することで、前記コンピュータを、請求項１乃至９のいずれか１項に記載の画像符号化装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像の符号化技術に関するものである。
【背景技術】
【０００２】
デジタルカメラやデジタルカムコーダー等の撮像装置では、撮像素子にＣＣＤセンサまたはＣＭＯＳセンサを採用している。そしてセンサの表面にはカラーフィルタアレイ（以下、ＣＦＡと呼称する）が施され、１つの画素で１つの色成分を検出する。ＣＦＡを用いることで、図２に示すようなＲ（赤）、Ｇ０（緑）、Ｂ（青）、Ｇ１（緑）の周期的なパターンで配置されたベイヤ配列の画像データ（以下、ＲＡＷ画像データと呼称する）が得られる。人間の視覚特性は輝度成分に対し、高い感度を持っていることから、一般的なベイヤ配列においては、輝度成分を多く含む緑成分の画素数を、図２に示すように、赤成分や青成分に対し２倍の画素数を割り当てる構成を用いている。ＲＡＷ画像データは、１画素に１つの色成分の情報しか持たない。それ故、デモザイクと呼ばれる処理を用いて、１画素に対して赤、青、緑の情報を生成する処理が行われる。そして、一般には、デモザイクによって得られたＲＧＢ信号、あるいはＲＧＢ信号から変換して得られるＹＵＶ信号の画像データを符号化して、メモリカード等の記録媒体に記録される。しかしながら、デモザイクによって得られる画像データは、１画素につき３つの色成分を持つことになり、ＲＡＷ画像データに対し３倍のデータ量を必要とする。このため、デモザイク前のＲＡＷ画像データを直接、符号化して記録する方法が提案されている。
【０００３】
例えば、特許文献１には、ＲＡＷ画像データから、Ｒ、Ｇ０、Ｂ、Ｇ１の４つのプレーンに分離した後に符号化をする方法が示されている。動画像を記録する際にはデータ量が非常に多くなるため、データを更に効率よく圧縮符号化することが求められる。そこで動き補償予測符号化を用いて効率的に符号化する方法が特許文献２に示されている。
【０００４】
特許文献２に示した方法は、Ｇ成分をＧ０、Ｇ１の２フレームに分けた上で動き補償予測を行っている。そのため、Ｇのフレーム数がＲ、Ｂに比べ２倍となりＲ，Ｂフレームに対してＧフレームの処理量が２倍になってしまう。また、Ｇ０フレームとＧ１フレームは同一時刻の画像データである場合とそうでない場合があり、ＭＰＥＧやＨ．２６４、ＨＥＶＣなど従来の復号装置で復号する際にＧフレームとＲ、Ｂフレームで異なるタイミングで復号する方法を新たに策定する必要がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−４１１４４号公報
【特許文献２】特開２０１４−１７６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＭＰＥＧやＨ．２６４、ＨＥＶＣなどの従来の符号化装置で符号化する際に、輝度・色差を４：２：２（ＹＣＣ４２２配列という）として符号化することが行われている。
【０００７】
本発明者は、図３のように、ベイヤ配列のＲＡＷ画像データにおけるＧ０及びＧ１を並べた場合の水平方向の画素数が、Ｒ，Ｂの２倍になることに着目し、Ｇ０及びＧ１をＹ，ＲをＣｒ、ＢをＣｂと見立てて、ＹＣＣ４２２配列に並び替えて入力する方法を考えた。ＹＣＣ４２２配列と同等となるので、Ｒ、Ｂ、Ｇフレームのフレーム数が同一となり、これまでの符号化、復号装置と同様な制御が可能となる。
【０００８】
ここで、Ｙ（Ｇ）成分の動きベクトルの水平成分が整数精度で奇数であり、図４のように、Ｇ０がＧ１、Ｇ１がＧ０を相互に参照する場合を考える（図４では動きベクトル（−１，０）となる）。この動きベクトルをベイヤ配列に戻して考えるとＧ０、Ｇ１が斜め方向に並んでいるため、Ｇ０は左下方向を、Ｇ１は左上方向を参照していることになる。そのため、これをＲ，Ｂ成分に当てはめて考慮した場合、左上方向を参照すべきなのか、左下方向を参照すべきなのか、あるいは真横を参照すべきなのか明確に定まらない。
【０００９】
従って、Ｒ、Ｂの動きベクトルとして水平成分が、Ｇの１／２、垂直成分はＧと同じとした場合、左下方向を参照すべきだった場合、あるいは左上方向を参照すべきだった場合に参照すべきであった画像を参照できず、符号化効率が低下する。
【００１０】
本発明は上記の問題に鑑みなされたものであり、ベイヤ配列のＲＡＷ画像データの符号化効率を更に高める技術を提供しようとするものである。
【課題を解決するための手段】
【００１１】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
各フレームがベイヤ配列の画像データで構成される、動画像データを符号化する画像符号化装置であって、
ベイヤ配列の画像データを、Ｇプレーン、Ｂプレーン、Ｒプレーンの３つのプレーンに変換する変換手段と、
ここで、前記Ｇプレーンは、前記Ｂプレーン又はＲプレーンの水平方向の画素数の２倍の画素数を有する；
前記変換手段で得られたＧプレーン、Ｂプレーン、ＲプレーンをＹＣＣ４２２の画像データとして、画素ブロックを単位とする予測符号化する符号化手段とを有し、
前記符号化手段は、
符号化対象の前記画素ブロックの動きベクトルをＧプレーンの動きベクトルとして求める動き探索手段と、
該動き探索手段で得られた動きベクトルの基づき、前記Ｂ、Ｒプレーンの動きベクトルを補正する補正手段とを含むことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ベイヤ配列のＲＡＷ画像データの符号化効率を高めることができる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態に係る画像符号化装置のブロック構成図。
【図２】ベイヤ配列の示す図。
【図３】ベイヤ配列からＹＣＣ４２２への並び替えを説明するための図。
【図４】ＹＣＣ４２２配列で求めた動きベクトルをベイヤ配列に戻した場合にベクトルが指し示す位置を説明するための図。
【図５】第１の実施形態におけるＲ，Ｂプレーンの動きベクトルの垂直成分を決定する手順を示すフローチャート。
【図６】第１実施形態に係る画像復号装置のブロック構成図である。
【図７】復号時のＲ、Ｂプレーンの動きベクトルの垂直成分の再構成を示すフローチャート。
【図８】復号時のＲ、Ｂプレーンの動きベクトルの垂直方向の再構成する他のフローチャート。
【図９】第２実施形態に係る画像符号化装置のブロック構成図である。
【発明を実施するための形態】
【００１４】
以下添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１５】
［第１の実施形態］
図１は、本実施形態に係る動画像データの符号化装置のブロック構成図である。本装置は、撮像センサを有するビデオカメラ等の撮像装置に搭載されるものとする。ただし、動画像を撮像する機能を持つ携帯端末（例えばスマートホン等）の装置でも良い。あくまで具現化することで技術内容の把握を容易にするためであると理解されたい。
【００１６】
動画像符号化装置は、制御部１５１、撮像部１５０、配列変換部１００、フレームメモリ１０１、動き探索部１０２、イントラ予測部１０３、イントラ・インター判定部１０４、予測画像生成部１０５、減算器１０６、直交変換部１０７、量子化部１０８、エントロピー符号化部１０９、逆量子化部１１０、逆直交変換部１１１、加算器１１２、ループ内フィルタ１１３を備えている。制御部１５１は、ＣＰＵ、ＲＯＭ、ＲＡＭ等で構成され、装置全体の制御を司るものである。なお、本実施形態ではＨ．２６４を基本とする構成を示すが、動き補償予測符号化を用いた方式であればよく、これに限定されるものではない。
【００１７】
以下、図１を参照して、本装置における符号化処理を説明する。
【００１８】
配列変換部１００は、撮像センサやＡ／Ｄ変換器等を収容する撮像部１５０からベイヤ配列のＲＡＷ画像データ（図２参照）を入力する。そして、配列変換部１００は、入力したＲＡＷ画像データから、Ｒプレーン、Ｂプレーン、Ｇ（Ｇ０、Ｇ１）プレーンの３プレーンを生成し、フレームメモリ１０１に格納する。ここで、ＲＡＷ画像データの水平方向画素数をＷ、垂直方向画素数をＨとしたとき、Ｒプレーン、Ｂプレーンは共に、Ｗ／２×Ｈ／２画素で構成される。一方、Ｇプレーンは、その垂直方向の画素数はＲ、Ｂプレーンと同数であるが、水平方向が２倍となり、Ｗ×Ｈ／２画素で構成されることになる。つまり、Ｇプレーン、Ｒプレーン、Ｂプレーンの配列関係は、ちょうどＹＣＣ４２２配列と同じであるので、配列変換部１００はベイヤ配列からＹＣＣ４２２配列への並び替え処理を行っていると言える。
【００１９】
動き探索部１０２はフレームメモリ１０１に保存された各プレーンを符号化する際に、入力画像の領域から符号化対象マクロブロックの画像データを読み出す。また、所定のサーチウィンドウの画像データを参照画像データの領域から読み出し、動き探索を行う。なお、サーチウィンドウの位置設定については符号化対象マクロブロックを中心に設定する、直前のマクロブロックで求めた動きベクトルの指し示す位置を中心に設定するなど複数の方法が考えられるがその方式は問わない。
【００２０】
動き探索の具体的な手順としては、まずサーチウィンドウ内のＧ画像データと、符号化対象マクロブロックのＧ画像データとの間でブロックマッチングを行い、相関が高い場所を動きベクトルとして決定し、イントラ・インター判定部１０４へ通知する。
【００２１】
なお、ブロックマッチングを用いて動きベクトルを決定するためには次式のようなＭＳＥ(Mean Square Error)、ＭＡＥ(Mean Absolute Error)等の評価関数である。場合によっては、ＭＡＤ(Mean Absolute Difference)でも構わない。
【００２２】
【数１】
2018032909.tif 000003
【００２３】
ここで、Ｓrefは参照画像、Ｓcur,kは符号化対象画像でｋ番目のマクロブロックを示す。また、（ｘ、ｙ）は１６×１６サイズのマクロブロックにおける画素の座標である。（ｉ，ｊ）は現在フレームのｋ番目のマクロブロックに対する参照フレーム／フィールドの空間的な位置をそれぞれ示している。また、Ｘ，Ｙをサーチウィンドウの水平および、垂直の画素数とすると、（ｉ，ｊ）は−Ｘ≦ｉ≦Ｘ，−Ｙ≦ｊ≦Ｙの範囲を取る。この評価関数は画素の差に基づいたものであり、最も小さいＭＡＥ値やＭＳＥ値を有する（ｉ、ｊ）を相関が高い場所とし、符号化対象マクロブロックにおける最終的な動きベクトルとして決定する。なお、本実施形態ではＭＡＥ値を用いて動きベクトルを決定するものとする。なお、実施形態では、水平右方向がｘ座用の正の方向を示し、垂直下方向がｙ座標の正の方向を示すものとしている。つまり、画像の左上隅の座標が原点（０，０）とする。
【００２４】
動き探索部１０２は、Ｇプレーンの符号化対象のマクロブロックに対する予測ブロックを参照Ｇプレーンから探索し、その符号化対象ブロックの画像データと予測ブロックの画像データとのＭＡＥ値をイントラ・インター判定部１０４へ通知する。つづいて動き探索部１０２はＲ，Ｂプレーンの動きベクトルについても決定するが、その詳細な手順については後述する。
【００２５】
イントラ予測部１０３はフレームメモリ１０１の入力画像の領域から、符号化対象ブロックの画像データを読み出す。そして、イントラ予測部１０３は、既に符号化済みの符号化対象ブロック周辺の画素データから生成される複数のイントラ予測画像データとの相関を基にイントラ予測方式を選択してイントラ・インター判定部１０４へ通知する。また、選択されたイントラ予測方式での予測画像の画素と符号化対象マクロブロックのＭＡＥ値をイントラ・インター判定部１０４へ通知する。
【００２６】
イントラ・インター判定部１０４は、動き探索部１０３のＭＡＥ値とイントラ予測部１０３のＭＡＥ値を入力し、小さい方の予測方法を選択して、予測画像生成部１０５へ通知する。
【００２７】
予測画像生成部１０５は、イントラ・インター判定部１０４で選択された予測方法がイントラ予測である場合は選択されたイントラ予測モードに従って予測画像を生成する。また、インター予測であった場合は、予測画像生成部１０５は、動きベクトル及び後述のc_v_vec_alignに従って予測画像を生成し、減算器１０６へ出力する。また、選択された動きベクトルあるいはイントラ予測モードをエントロピー符号化部１０９に送信する。
【００２８】
減算器１０６は、符号化対象のマクロブロックと予測画像のブロックとの差分を計算し、差分ブロックデータを生成する。差分ブロックデータは直交変換部１０７に出力され、入力された差分ブロックデータに直交変換を施す。量子化部１０８は、直交変換部１０７により直交変換された信号に対して量子化処理を行う。エントロピー符号化部１０９は、量子化部１０８により量子化された変換係数にCAVLC、CABACなどのエントロピー符号化を施して、符号化データとして出力する。また、このとき、エントロピー符号化部１０９は、予測画像生成部１０５から通知される選択された動きベクトルあるいはイントラ予測モードを符号化データとして出力する。
【００２９】
量子化部１０８は、量子化後の変換係数を逆量子化部１１０にも供給する。逆量子化部１１０は、入力された変換係数を逆量子化し、逆量子化後の変換係数を逆直交変換部１１１に供給する。逆直交変換部１１１は、逆量子化された変換係数の信号に対して逆直交変換処理を施し、加算器１１２に供給する。
【００３０】
加算器１１２は、逆直交変換されたデータと、予測画像生成部１０５が生成した予測画像データとを入力し、加算する。加算後のデータは復号された再構成画像データとなり、前述したイントラ予測部１０３、および、予測画像生成部１０５に入力されてイントラ予測画像データの生成に用いられる。また、再構成画像データは、ループ内フィルタ１１３によって符号化歪の軽減処理が施され、インター符号化の際に用いる参照画像データとしてフレームメモリ１０１の参照画像の領域に格納される。
【００３１】
続いて本実施形態の特徴である、動き探索部１０２によるＲ，Ｂプレーンの垂直成分の動きベクトル決定方法について図５のフローチャートを用いながら詳細に説明する。なお、Ｒ，Ｂプレーンの動きベクトルの水平成分は、Ｇプレーンの動きベクトルの１／２で固定とするものとする。また、説明の中で用いるc_v_vec_alignは、Ｇプレーンの動きベクトルに対する、Ｒ，Ｂプレーンの垂直成分の動きベクトルの補正値を示すパラメータであり、以下の意味を持つ。
・  c_v_vec_align=0の場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンの動きベクトルの垂直成分と同じであることを示す。
・  c_v_vec_align=1の場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンデータの動きベクトルの垂直成分に対して-0.5することを示す。
・  c_v_vec_align=2の場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンデータの動きベクトルの垂直成分に対して+0.5することを示す。
【００３２】
また、Ｇプレーンにおける着目マクロブロック内の画素Ｇ０で表される画像と、動きベクトルで示される参照ブロック内の画素Ｇ１で表される画像とのＭＡＥをＧ０_MAEと表す。また、Ｇプレーンにおける着目マクロブロック内の画素Ｇ１で表される画像と、動きベクトルで示される参照ブロック内の画素Ｇ０で表される画像とのＭＡＥをＧ１_MAEと表す。これらＧ０_MAE、Ｇ１_MAEは、動き探索部１０２が、図５の処理に先立って、算出しているものとする。
【００３３】
動き探索部１０２は、Ｇプレーン内の着目マクロブロックの動きベクトルの決定後、その動きベクトルの水平成分が整数精度で奇数であるか否か、すなわち画素Ｇ０がＧ１、画素Ｇ１がＧ０を相互に参照している動きベクトルか否かを判定する（Ｓ５００）。
【００３４】
ここでＧプレーン内の着目マクロブロックの動きベクトルの水平成分が、整数精度で奇数では無かったとする（偶数であった場合）。この場合、動き探索部１０２は、着目マクロブロックのＲ，Ｂプレーンの垂直成分の動きベクトルはＧプレーンのそれと同じとするため、c_v_vec_align=0としてイントラ・インター判定部１０４に送信する（Ｓ５０１）。
【００３５】
一方、Ｇプレーンの動きベクトルの水平成分が整数精度で奇数であった場合、動き探索部１０２は、Ｇプレーンの動きベクトルの水平成分が負か否かを判定する（Ｓ５０２）。
【００３６】
Ｇプレーンの動きベクトルの水平成分が負であった場合、動き探索部１０２は、Ｇ０_MAE）と、Ｇ１_MAEとを比較する（Ｓ５０３）。Ｇ０_MAEの方がＧ１_MAEより大きかった場合、動き探索部１０２は、更にＧ０_MAE−Ｇ１_MAEが閾値Ｔｈより大きいか否か判定する（Ｓ５０４）。Ｇ０_MAE−Ｇ１_MAEが閾値Ｔｈより大きかった場合、動き探索部１０２は、処理をＳ５０５に進める。このＳ５０５にて、動き探索部１０２は、Ｒ，Ｂプレーンの動きベクトルの垂直成分をＧプレーンの動きベクトルの垂直線成分から-0.5したものとするため、c_v_vec_align=1としてイントラ・インター判定部１０４に送信する（Ｓ５０５）。
【００３７】
一方、G０_MAE−G１_MAEが閾値Ｔｈ以下であった場合、動き探索部１０２は、Ｒ，Ｂプレーンの垂直成分の動きベクトルは、Ｇプレーンのそれと同じとし、c_v_vec_align=0としてイントラ・インター判定部１０４に送信する（Ｓ５０６）。
【００３８】
また、Ｇ０_MAEがＧ１_MAE以下であった場合、動き探索部１０２は、Ｇ１_MAE−Ｇ０_MAEが閾値Ｔｈより大きいか否か判定する（Ｓ５０７）。Ｇ１_MAE−Ｇ０_MAEが閾値Ｔｈより大きかった場合、動き探索部１０２は、処理をＳ５０８に進める。このＳ５０８にて、動き探索部１０２は、Ｒ，Ｂプレーンの垂直成分の動きベクトルがＧプレーンのそれに+0.5したものとするため、c_v_vec_align=2としてイントラ・インター判定部１０４に送信する（Ｓ５０８）。
【００３９】
一方、Ｇ１_MAE−Ｇ０_MAEが閾値Ｔｈ以下であった場合、動き探索部１０２は、Ｒ，Ｂプレーンの垂直成分の動きベクトルは、Ｇプレーンのそれと同じとし、c_v_vec_align=0としてイントラ・インター判定部１０４に送信する（Ｓ５０９）。
【００４０】
Ｓ５０２にて、Ｇプレーンの動きベクトルの水平成分が非負（正）であったと判定された場合、動き探索部１０２は、Ｓ５１０に処理を進める。このＳ５１０にて、動き探索部１０２は、Ｇ０_MAEとＧ１_MAEとを比較する。
【００４１】
Ｇ０_MAEの方がＧ１_MAEより大きかった場合、動き探索部１０２は、更にＧ０_MAE−Ｇ１_MAEが閾値Ｔｈより大きいか否か判定する（Ｓ５１１）。Ｇ０_MAE−Ｇ１_MAEが閾値Ｔｊより大きかった場合には、動き探索部１０２は、処理をＳ５１２に進める。このＳ５１２にて、動き探索部１０２は、Ｒ，Ｂプレーンの垂直成分の動きベクトルを、Ｇプレーンの動きベクトルの垂直成分に+0.5したものとするため、c_v_vec_align=2としてイントラ・インター判定部１０４に送信する（Ｓ５１２）。
【００４２】
一方、Ｇ０_MAE−Ｇ１_MAEが閾値Ｔｈ以下であった場合、動き探索部１０２は、Ｒ，Ｂプレーンの垂直成分の動きベクトルは、Ｇプレーンのそれと同じとするため、c_v_vec_align=0としてイントラ・インター判定部１０４に送信する（Ｓ５１３）。
【００４３】
また、Ｇ０_MAEがＧ１_MAE以下であった場合、動き探索部１０２は、Ｇ１_MAE−Ｇ０_MAEが閾値Ｔｈより大きいか否か判定する（Ｓ５１４）。Ｇ１_MAE−Ｇ０_MAEが閾値Ｔｈより大きかった場合には、動き探索部１０２は、処理をＳ５１５に進める。このＳ５１５にて、動き探索部１０２は、Ｒ，Ｂプレーンの垂直成分の動きベクトルとして、Ｇプレーンのそれに-0.5したものとするため、c_v_vec_align=1としてイントラ・インター判定部１０４に送信する（Ｓ５１５）。
【００４４】
一方、Ｇ１_MAE−Ｇ０_MAEが閾値Ｔｈ以下であった場合、動き探索部１０２は、Ｒ，Ｂプレーンの垂直成分の動きベクトルは、Ｇプレーンと同じとするため、c_v_vec_align=0としてイントラ・インター判定部１０４に送信する（Ｓ５１６）。
【００４５】
ここでＲ，Ｂプレーンの垂直成分の動きベクトル(c_v_vec_align)を上記手順で決定する理由について説明する。
【００４６】
Ｇプレーンの動きベクトルの水平成分が整数精度で奇数で負の場合は、図４から、符号化対象のマクロブロック内の画素Ｇ０は、参照ブロック（予測ブロック）内の左下の画素Ｇ１を参照する。また、符号化対象のマクロブロック内の画素Ｇ１は、参照ブロック内の左上の画素Ｇ０を参照する。
【００４７】
符号化対象マクロブロックについてＧ０_MAEがＧ１_MAEより小さい場合というのは、符号化対象マクロブロックの動きベクトルとして画素Ｇ０が支配的であったことを意味する。つまり、動きベクトルの水平成分はＧ０を基準としており、左下を指し示す動きベクトルを選択した方が適切である可能性が高いことを表す。そのため、Ｒ，Ｂプレーンの動きベクトルの垂直成分として、Ｇプレーンの垂直成分に+0.5（下方向）だけ補正する。一方、Ｇ０_MAEがＧ１_MAEより大きい場合、すなわち動きベクトルとしてＧ１を基準として選択した場合、左上を指し示す動きベクトルを選択した方が適切である可能性が高いと言える。そのため、Ｒ，Ｂプレーンの動きベクトルの垂直成分を、Ｇプレーンのそれを-0.5（上方向）だけ補正する。そして、Ｇ０_MAEとＧ１_MAEが同程度である場合には、左上、左下のいずれにも偏りがないため、Ｒ，Ｂプレーンタの動きベクトルの垂直成分をＧプレーンのそれと同じであると推定する。
【００４８】
Ｇプレーンの動きベクトルの水平成分が正の場合は、符号化対象のマクロブロック内の画素Ｇ０は、参照ブロック内の右上に位置する画素Ｇ１を参照する。また、符号化対象のマクロブロック内の画素Ｇ１は、参照ブロックの右下に位置する画素Ｇ０を参照することになる。Ｇ０_MAEがＧ１_MAEより小さいというのは、動きベクトルとして画素Ｇ０を基準として選択していることを意味する。すなわち右上を指し示す動きベクトルを選択した方が適切である可能性が高いと言える。そのため、Ｒ，Ｂプレーンの動きベクトルの垂直成分を、Ｇプレーンのそれに-0.5（上方向）に補正する。一方、Ｇ０_MAEがＧ１_MAEより大きい場合は、動きベクトルとしてＧ１を基準として選択したことを意味する。つまり、右下を指し示す動きベクトルを選択した方が適切である可能性が高い。そこで、Ｒ，Ｂプレーンの動きベクトルの垂直成分をＧのそれに対して+0.5（下方向）に補正する。Ｇ０_MAEとＧ１_MAEが同程度である場合には、左上、左下のいずれにも偏りがないため、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンのそれと同じとする。
【００４９】
以上のように従来のＨ．２６４あるいはＨＥＶＣを用いた符号化処理で得られる符号化データに、動きベクトルに、新たにc_v_vec_alignというパラメータを一つ追加することで、Ｒ，Ｂプレーンの予測画素ブロックとして、より適切なブロックを生成することが可能となり符号化効率を高めることができる。
【００５０】
続いて実施形態の装置で生成した符号化データを復号する方法について図６を用いて説明する。図６は本実施形態に係る動画像復号装置のブロック構成図である。
【００５１】
図６において、動画像復号装置は、フレームメモリ６００と、エントロピー復号部６０１、逆量子化部６０２、逆直交変換部６０３、イントラ予測部６０４、動き補償部６０５イントラ・インター選択部６０６、加算器６０７、デブロッキングフィルタ６０７、配列変換部６０９を備えている。
【００５２】
フレームメモリ６００には符号化データが格納される。なお、符号化データの発生源は、上記実施形態の画像符号化装置エントロピー符号化部１０９とするが、符号化データを格納した記憶媒体、ネットワークからダウンロードしても構わず、その種類は問わない。
【００５３】
エントロピー復号部６０１はフレームメモリ６００から符号化データを読み出し、CAVLC、CABACなどでエントロピー符号化されたデータを復号する。復号したデータが直交変換係数であれば逆量子化部６０２、イントラ予測モードであればイントラ予測部６０４、動きベクトル情報（c_v_vec_align含む）であれば動き補償部６０５に送信する。また、選択された予測モードが動きベクトルによるものか、イントラ予測であるのかをイントラ・インター選択部６０６に送信する。
【００５４】
逆量子化部６０２は、入力された変換係数を逆量子化し、逆直交変換部６０３に送信する。逆直交変換部６０３は、逆量子化された信号に対して逆直交変換処理を施し、加算部６０７に送信する。イントラ予測部６０４は、入力されたイントラ予測モードに従い、必要な画像データをフレームメモリ６００から読み出しイントラ予測画像のブロックを生成する。
【００５５】
動き補償部６０５は入力された動きベクトル情報を用いて、フレームメモリ６００に保持されている復号済み画像データを読み出し、インター予測画像のＧプレーンのブロックを生成する。なお、実施形態の特徴であるＲ，Ｂプレーンの垂直成分の動きベクトルを再構成する方法については詳細な手順を後述する。
【００５６】
イントラ・インター予測選択部６０６は、復号したデータが動きベクトル情報によるものであれば動き補償部６０５から出力されるブロックデータを、加算部６０７に予測画像ブロックとして送信する。また、イントラ予測によるものであれば、イントラ・インター予測選択部６０６は、イントラ予測部６０４から出力されるブロックデータを加算部６０７に予測画像ブロックとして送信する。
【００５７】
加算部６０７は、イントラ・インター予測選択部６０６の予測画像ブロックと逆直交変換部６０３から送信される画素ブロックの差分情報とを加算し、復号対象画像ブロック（マクロブロック）を再構成し、デブロッキングフィルタ６０８に送信する。デブロッキングフィルタ６０８は、再構成された画像データに対して符号化歪を軽減するフィルタ処理を施し、フレームメモリ６００に保存する。また、配列変換部６０９に送信する。配列変換部６０９はYCC422の配列に並び替えられていたＧ０，Ｇ１．Ｒ，Ｂの画像データを、ベイヤ配列に整列し直し、フレームメモリ６００にＲＡＷ画像データとして保存する。
【００５８】
次に、c_v_vec_alignと動きベクトル情報からＲ，Ｂプレーンの垂直成分の動きベクトルを再構成する方法について図７のフローチャートを参照しながら説明する。なお、Ｒ，Ｂプレーンの動きベクトルの水平成分に関してはＨ.264、MPEGの場合と変わらないため、その説明を省略し、以下では、Ｒ、Ｂプレーンの動きベクトルの垂直成分について説明する。
【００５９】
動き補償部６０５は、動きベクトル情報、H.264の場合だと、mvd_l0あるいはmvd_l1垂直成分および周辺ブロックの動きベクトルからＧプレーンの水平成分の動きベクトルを再構成する（Ｓ７０１）。
【００６０】
続いて、動き補償部６０５は、復号して得られたc_v_vec_alignの値により、以下のように場合分けし、Ｒ，Ｂプレーンの動きベクトルの垂直成分を再構成する。
・  c_v_vec_align=0の場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンの動きベクトルの垂直成分と同じとする（Ｓ７０２）。
・  c_v_vec_align=1の場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンの垂直成分に対して-0.5（上方向）に補正した値とする（Ｓ７０３）。
・  c_v_vec_align=2の場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンの垂直成分に対して+0.5（下方向）に補正した値とする(Ｓ７０４）。
【００６１】
このように符号化時にc_v_vec_alignを符号化パラメータに追加しておくことでデコード時に、Ｒ，Ｂプレーンの垂直成分の動きベクトルを再構成することが可能となる。
【００６２】
なお、本実施形態はＧプレーンの動きベクトルの水平成分が整数精度で偶数であった場合に、c_v_vec_align=0として符号化していたが、c_v_vec_alignを符号化しない、あるいはc_v_vec_alignに、0.5,-0.5と区別できる任意の値を入れるようにしても良い。
【００６３】
この場合のＲ，Ｂプレーンの動きベクトルの垂直成分を再構成する方法について図８のフローチャートを参照しながら説明する。
【００６４】
動き補償部６０５は、動きベクトル情報、H.264の場合だと、mvd_l0あるいはmvd_l1垂直成分および周辺ブロックの動きベクトルからＧプレーンの動きベクトルの水平成分を再構成する（Ｓ８０１）。そして、動き補償部６０５は、Ｇプレーンの動きベクトルの水平成分が、整数精度で奇数かどうか判定する(Ｓ８０２）。奇数であった場合、以下のように場合分けし、Ｒ，Ｂプレーンの動きベクトルの垂直成分を再構成処理（補正処理）を実行する。
・  c_v_vec_align=0の場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンの動きベクトルの垂直成分と同じとする（Ｓ８０３）。
・  c_v_vec_align=1の場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンの動きベクトルの垂直成分を-0.5（上方向）に補正した値とする（Ｓ８０４）。
・  c_v_vec_align=2の時、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンの動きベクトルの垂直成分を+0.5（下方向）に補正した値とする（Ｓ８０５）。
・  Gの水平成分の動きベクトルが整数精度で偶数であった場合、Ｒ，Ｂプレーンの動きベクトルの垂直成分は、Ｇプレーンの動きベクトルの垂直成分と同じとする(Ｓ８０６）。
【００６５】
上記をまとめると、次の通りである。
（１）Ｇプレーンの符号化対象のマクロブロック（画素ブロック）に対する動きベクトルが求まった場合、Ｒプレーン、Ｂプレーンの動きベクトルの水平成分は、Ｇプレーンのそれの１／２として決定する。
（２）Ｒプレーン、Ｂプレーンの動きベクトルの垂直成分については以下のようにして決定する。
（２−１）Ｇプレーンの動きベクトルの水平成分が偶数である場合には、Ｇプレーンの動きベクトルの垂直成分と同じと推定する。
（２−２）Ｇプレーンの動きベクトルの水平成分が奇数である場合：
符号化対象の画素ブロック内のベイヤ配列における画素Ｇ０で構成される画像と動きベクトルで示される参照ブロックの画像との差の大小の指標値を表すＧ０_MAEと、符号化対象の画素ブロック内のベイヤ配列における画素Ｇ１で構成される画像と動きベクトルで示される参照ブロックの画像との差の大小の指標値を表すＧ１_MAEとを、正の閾値Ｔｈを用いて比較する。
・「Ｇ０_MAE＞Ｇ１_MAE＋Ｔｈ」の場合には、Ｇプレーンの動きベクトルの垂直成分に補正値“＋０．５”を加算する。
・「Ｇ０_MAE−Ｇ１_MAEの差の絶対値≦Ｔｈ」の場合には、Ｇプレーンの動きベクトルの垂直成分とする（補正値“０”を加算する）。
・「Ｇ０_MAE＋Ｔｈ＜Ｇ１_MAE」の場合には、Ｇプレーンの動きベクトルの垂直成分に補正値“−０．５”を加算（０．５を減算）する。
【００６６】
上記の結果、Ｂプレーン、Ｒプレーンの動きベクトルが、Ｇプレーンの動きベクトルに基づき補正され、ベイヤ配列のＲＡＷ画像データの符号化効率を高めることができる。
【００６７】
［第２の実施形態］
第２の実施形態である画像符号化装置における符号化方法について用いて説明する。図９は、第２の実施形態における画像符号化装置のブロック構成図である。同図は、第１の実施形態の図１と同様であるが、ベクトル情報収集部９００が追加される。このベクトル情報収集部９００は、動き探索部１０２からG０_MAEとG１_MAEを収集し、c_v_vec_alignをブロック単位ではなく、ピクチャ単位で設定する点が第１の実施形態と異なる。
【００６８】
なお、図９において動き探索部１０２、予測画像生成部１０５、ベクトル情報収集部９００以外の処理は第１の実施形態と同様のため、その説明は省略する。
【００６９】
動き探索部１０２はフレームメモリ１０１から符号化対象マクロブロックの画像データを読み出す。また、動き探索部１０２は、所定のサーチウィンドウの画像データを参照画像データの領域から読み出し、第１の実施形態と同様に動き探索を行いＧプレーンの動きベクトルを決定する。また、動き探索部１０２は、動きベクトルの位置での現在のマクロブロックの画像データと、参照画像データの画素のＭＡＥ値をイントラ・インター判定部１０４へ通知する。Ｇプレーンの動きベクトル決定後、動き探索部１０２は、Ｇプレーンの動きベクトルの水平成分が整数精度で奇数であるか否か、すなわちＧ０がＧ１、Ｇ１がＧ０を相互に参照している動きベクトルか否かを判定する。ここで、Ｇプレーンの動きベクトルの水平成分が整数精度で奇数であった場合、第１の実施形態と同様の方法で、動き探索部１０２は、Ｒ，Ｂプレーンの動きベクトルをＧプレーンのそれと同じとするのか、-0.5するのか、それとを+0.5するのかを決定する。そして、動き探索部１０２は、決定内容をベクトル補正情報としてベクトル情報収集部９００に送信する。
【００７０】
ベクトル情報収集部９００は、動き探索部１０２からのＲ，Ｂプレーンにおける各マクロブロックのベクトル補正情報を１フレーム（ピクチャ）分収集する。そして、Ｒ，Ｂプレーンの動きベクトルをＧプレーンと同じとするブロック数、Ｇプレーンの動きベクトルに対して-0.5だけ補正するブロック数、Ｇプレーンの動きベクトルに対して+0.5するブロック数を集計し、その中で一番数の多かったものをc_v_vec_alignとして採用し、予測画像生成部１０５に送信する。ここで、Ｒ，Ｂプレーンの動きベクトルをＧプレーンと同じとするブロックの数は、図５のＳ５０６、Ｓ５０９、Ｓ５１３、Ｓ５１６に処理が進んだ場合のブック数と、Ｓ５０１に処理が進んだ場合のブロック数の合計数であるものとする。
【００７１】
イントラ予測部１０３は、フレームメモリ１０１の入力画像の領域から、符号化対象ブロックの画像データを読み出し、既に符号化済みの符号化対象ブロック周辺の画素データから生成される複数のイントラ予測画像データとの相関を基にイントラ予測方式を選択してイントラ・インター判定部１０４へ通知する。また、選択されたイントラ予測方式での予測画像の画素と符号化対象マクロブロックのＭＡＥ値をイントラ・インター判定部１０４へ通知する。
【００７２】
イントラ・インター判定部１０４は、動き探索部１０３のＭＡＥ値とイントラ予測部１０３のＭＡＥ値を入力し、小さい方の予測方法を選択して、予測画像生成部１０５へ通知する。
【００７３】
予測画像生成部１０５は、１ピクチャ分のイントラ・インター判定結果、動きベクトル、イントラ予測モードを保持し、ブロック毎に選択されたイントラ予測モードに従って予測画像を生成する。そして、１ピクチャ分のこれらの情報がたまったところで、予測画像生成部１０５は、各ブロックについてインター予測であった場合は動きベクトルとベクトル情報収集部９００で決定したc_v_vec_alignに従って予測画像を生成し、減算器１０６へ出力する。また、選択された動きベクトルあるいはイントラ予測モードをエントロピー符号化部１０９に送信する。以降の処理は第１の実施形態と同様のため説明を省く。
【００７４】
上記の結果、第２の実施形態では、着目ピクチャの全ブロックについてベクトル補正情報を収集してから、実際の符号化が行われることになり、動きベクトルの探索と、符号化との間に１フレーム分の時間遅延を必要とするので、フレームメモリ１０１は第１の実施形態より、少なくとも１フレーム分だけ多い容量が必要になる。ただし、ベクトル情報の収集処理と符号化処理とをパイプライン処理することができる。
【００７５】
以上のように、第１の実施形態と異なり、ピクチャで一つのc_v_vec_alignを設定することでブロックごとの動きベクトルの精度は落ちるものの符号化しなくてはならないc_v_vec_alignの数を１ピクチャ当たるブロックの数から１つに減らすことができる。なお、本第２の実施形態ではc_v_vec_alignを算出する単位を、ピクチャとしたが、マクロブロックを複数含めばよいのでスライスとしても良い。その場合、ベクトル情報収集部で補正ベクトル情報を収集する単位をピクチャからスライスとすれば良い。
【００７６】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７７】
１００…配列変換部、１０１…フレームメモリ、１０２…動き探索部、１０３…イントラ予測部、１０４…イントラ・インター判定部、１０５…予測画像生成部、１０６…減算器、１０７…直交変換部、１０８…量子化部、１０９…エントロピー符号化部、１１０…逆量子化部、１１１…逆直交変換部、１１２…加算器、１１３…ループ内フィルタ、９００…ベクトル情報収集部
【図１】
2018032909.tif 000004
【図２】
2018032909.tif 000005
【図３】
2018032909.tif 000006
【図４】
2018032909.tif 000007
【図５】
2018032909.tif 000008
【図６】
2018032909.tif 000009
【図７】
2018032909.tif 000010
【図８】
2018032909.tif 000011
【図９】
2018032909.tif 000012