(57)【要約】【課題】フレーム間符号化とフレーム内符号化との両符号化方式を有する映像符号化方式において少ない演算コストで効率のよい符号化方式の選択を行うことができるようにする。【解決手段】符号化予測モード制御部１０は，参照フレームの動きベクトルを符号化対象フレームに外挿／内挿したベクトルを生成し，それによって動いたマクロブロックの各画素の座標を求め，画素が一致する回数を各画素毎にカウントする。符号化対象マクロブロック内の各画素のカウント数から符号化対象マクロブロックごとにスコアを計算し，スコアの値の大小によりそのマクロブロックのフレーム内符号化またはフレーム間符号化の要／不要を判定する。これにより，フレーム内符号化予測モード決定部２０，フレーム間符号化予測モード決定部３０において，不要な予測モードの決定処理回数を削減する。【選択図】図７
2006033451.tif 000002
【特許請求の範囲】
【請求項１】
フレーム内符号化とフレーム間符号化の両方式を有する映像符号化方式における符号化予測モード決定装置であって，
参照フレームの動きベクトルを符号化対象フレームに外挿または内挿したベクトルを生成する第１の手段と，
そのベクトルに従って動いたマクロブロックの各画素の座標を求める第２の手段と，
前記第２の手段によって求めた座標が符号化対象フレームの画面内である場合に，その各座標の画素位置を各画素に対応する記憶手段に記憶する，またはその各座標の画素位置の重なり回数を各画素に対応するカウント手段によりカウントする第３の手段と，
符号化対象マクロブロックごとに，前記第３の手段によって求めた画素位置の記憶数またはカウント数に基づいて当該マクロブロックのスコアを計算し，計算したスコアにより，そのマクロブロックのフレーム内符号化コスト計算の要／不要またはフレーム間符号化コスト計算の要／不要を判定する第４の手段とを備え，
前記第４の手段による判定結果に従って不要とされた符号化予測モードのコスト計算を行わない
ことを特徴とする符号化予測モード決定装置。
【請求項２】
フレーム内符号化とフレーム間符号化の両方式を有する映像符号化方式における符号化予測モード決定方法であって，
参照フレームの動きベクトルを符号化対象フレームに外挿または内挿したベクトルを生成する第１の過程と，
そのベクトルに従って動いたマクロブロックの各画素の座標を求める第２の過程と，
前記第２の過程によって求めた座標が符号化対象フレームの画面内である場合に，その各座標の画素位置を各画素に対応する記憶手段に記憶する，またはその各座標の画素位置の重なり回数を各画素に対応するカウント手段によりカウントする第３の過程と，
符号化対象マクロブロックごとに，前記第３の過程によって求めた画素位置の記憶数またはカウント数に基づいて当該マクロブロックのスコアを計算し，計算したスコアにより，そのマクロブロックのフレーム内符号化コスト計算の要／不要またはフレーム間符号化コスト計算の要／不要を判定する第４の過程とを有し，
前記第４の過程による判定結果に従って不要とされた符号化予測モードのコスト計算を行わない
ことを特徴とする符号化予測モード決定方法。
【請求項３】
請求項２記載の符号化予測モード決定方法において，
前記第３の過程では，各画素に対応する予測残差情報の記憶手段に，前記内挿または外挿ベクトルに従って動いた先が同一の座標になる画素の動き予測誤差の情報を記憶し，
前記第４の過程では，前記予測残差情報の記憶手段に記憶した情報に基づいて前記画素位置の記憶数またはカウント数の信頼度を判定し，信頼度が所定の値より低い画素を前記マクロブロックのスコアの計算に用いない
ことを特徴とする符号化予測モード決定方法。
【請求項４】
請求項２または請求項３記載の符号化予測モード決定方法において，
前記第１の過程では，外挿または内挿ベクトルを，参照フレームの動きベクトルをもとに，符号化対象フレームと，参照フレームと，その動きベクトルが所属するマクロブロックが参照する参照フレームの相対距離の比から算出する
ことを特徴とする符号化予測モード決定方法。
【請求項５】
請求項２，請求項３または請求項４記載の符号化予測モード決定方法において，
前記第４の過程では，符号化対象マクロブロックにおける前記第３の過程によって求めた画素位置の記憶数を当該マクロブロックのスコア，または符号化対象マクロブロック内のカウント数が１以上である画素の個数を当該マクロブロックのスコア，または符号化対象マクロブロック内のカウント数の合計値を当該マクロブロックのスコアとし，求めたマクロブロックのスコアが，所定の第１の閾値より大きい場合に，フレーム内符号化コスト計算を不要と設定し，所定の第１の閾値より小さい場合にフレーム内符号化コスト計算を必要と設定する
ことを特徴とする符号化予測モード決定方法。
【請求項６】
請求項２，請求項３，請求項４または請求項５記載の符号化予測モード決定方法において，
前記第４の過程では，符号化対象マクロブロックにおける前記第３の過程によって求めた画素位置の記憶数を当該マクロブロックのスコア，または符号化対象マクロブロック内のカウント数が１以上である画素の個数を当該マクロブロックのスコア，または符号化対象マクロブロック内のカウント数の合計値を当該マクロブロックのスコアとし，求めたマクロブロックのスコアが，所定の第２の閾値より小さい場合に，フレーム間符号化コスト計算を不要と設定し，所定の第２の閾値より大きい場合にフレーム間符号化コスト計算を必要と設定する
ことを特徴とする符号化予測モード決定方法。
【請求項７】
請求項２から請求項６までのいずれか１項に記載の符号化予測モード決定方法をコンピュータに実行させるための符号化予測モード決定プログラム。
【請求項８】
請求項２から請求項６までのいずれか１項に記載の符号化予測モード決定方法をコンピュータに実行させるためのプログラムを，コンピュータ読み取り可能な記録媒体に記録したことを特徴とする符号化予測モード決定プログラムの記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，フレーム間符号化とフレーム内符号化との両符号化方式を有する映像符号化方式において，少ない演算コストでより効率のよい符号化方式の選択を行う技術に関するものである。
【背景技術】
【０００２】
例えば，Ｈ．２６４映像符号化方式では，フレーム内の情報のみを用いて符号化を行うフレーム内符号化と，符号化済みフレームから残差電力が小さい領域を探索し，その領域との差分を符号化する動き補償付きフレーム間符号化の２つの符号化方式がある（例えば，非特許文献１参照）。主要な映像符号化方式の多くが，これら２つの符号化方式を組み合わせたものである。
【０００３】
フレームをマクロブロック単位に区切り，それぞれのマクロブロックについてフレーム内符号化とフレーム間符号化のうち効率の良い方を選択する場合には，両符号化方式の符号化コストを見積もり，よりコストの低い符号化方式を選択する。
【０００４】
図１５は，従来の符号化予測モード決定処理フローチャートである。処理が開始されると，まず，符号化対象マクロブロックについてフレーム内符号化予測モードのコスト計算を行い，コストが最小となる予測モードを求め，その最小コストを min＿Intra に代入する（ステップＳ２００）。
【０００５】
次に，符号化対象マクロブロックについてフレーム間符号化予測モードのコスト計算を行い，コストが最小となる予測モードと動きベクトルとを求め，そのときのコストを min＿Inter に代入する（ステップＳ２０１）。
【０００６】
min＿Intra と min＿Inter とを求めた後，その大小を比較する（ステップＳ２０２）。 min＿Inter の方が小さいならば，符号化予測モードをフレーム間符号化に設定し，フレーム間符号化の予測モード情報を出力する（ステップＳ２０３）。それ以外ならば，符号化予測モードをフレーム内符号化に設定し，フレーム内符号化の予測モード情報を出力する（ステップＳ２０４）。
【０００７】
このように符号化予測モードを決定することで，符号量が最も小さくなると期待される符号化予測モードを選択できる。
【０００８】
図１６は，従来の符号化予測モード決定装置の構成例を示す図である。符号化予測モード決定装置２００は，フレーム内符号化予測モード決定部２０１，フレーム間符号化予測モード決定部２０２，コスト判定部２０３から構成される。
【０００９】
フレーム内符号化予測モード決定部２０１は，マクロブロック番号が入力されると，そのマクロブロックに関してフレーム内符号化予測モードのコスト計算を行い，コストが最小となる予測モードを求め，フレーム内符号化の予測モード情報を出力し，その最小となるコストをコスト判定部２０３に送信する。
【００１０】
フレーム間符号化予測モード決定部２０２は，マクロブロック番号が入力されると，そのマクロブロックに関してフレーム間符号化予測モードのコスト計算を行い，コストが最小となる予測モードと動きベクトルとを求め，フレーム間符号化の予測モード情報を出力し，その最小となるコストをコスト判定部２０３に送信する。
【００１１】
コスト判定部２０３は，フレーム内符号化予測モード決定部２０１から送られてくるコストと，フレーム間符号化予測モード決定部２０２から送られてくるコストとを受信すると，それらのコストの大小を比較し，コストが小さい方をフレーム内／フレーム間判定信号として出力する。
【００１２】
この符号化予測モード決定装置２００の動作は，以下のようになる。符号化予測モード決定装置２００に予測すべき符号化対象マクロブロックのマクロブロック番号が入力されると，そのマクロブロック番号は，フレーム内符号化予測モード決定部２０１とフレーム間符号化予測モード決定部２０２とに入力される。
【００１３】
フレーム内符号化予測モード決定部２０１では，マクロブロック番号を受信すると，そのマクロブロックで最もコストが小さくなる予測モードを求め，フレーム内符号化の予測モード情報を出力し，そのときのコストをコスト判定部２０３に送信する。
【００１４】
フレーム間符号化予測モード決定部２０２では，マクロブロック番号を受信すると，そのマクロブロックで最もコストが小さくなる予測モードと動きベクトルとを求め，フレーム間符号化の予測モード情報を出力し，そのときのコストをコスト判定部２０３に送信する。
【００１５】
コスト判定部２０３では，これら２つのコストを受信すると，その値の大小を比較し，フレーム内符号化かフレーム間符号化かを決定する。そして，選択された符号化方式をフレーム内／フレーム間判定信号として送信する。
【００１６】
このような仕組みを用いることで，各マクロブロックごとに最も符号化効率がよいと予想される符号化方式が選択される。
【００１７】
フレーム内符号化とフレーム間符号化とから，最も符号化効率がよいと予想される符号化方式を選択する技術として，例えば，非特許文献２に記載された技術や，非特許文献３に記載された技術などがある。
【非特許文献１】恒川  賢二，「Ｈ．２６４の概要」，PIONEER R&D Vol.13 NO.1
【非特許文献２】安田  浩  ，渡辺  裕，“ディジタル画像圧縮の基礎”，日経ＢＰ出版センター，pp.118（1996）
【非特許文献３】清水  智行  他，「Ｈ．２６４符号化処理におけるIntra/Inter モード判定に関する一検討」，2004年電子情報通信学会総合大会，D-11-51
【発明の開示】
【発明が解決しようとする課題】
【００１８】
Ｈ．２６４映像符号化方式では，ＭＰＥＧ−１やＭＰＥＧ−２などを始めとする従来の映像符号化方式とは違い，フレーム内符号化でも予測画像を利用して符号化効率の向上を図っている。したがって，符号化方式を決定するためには，上記の手順で示したように，フレーム内符号化とフレーム間符号化とのそれぞれのコストを計算し，その結果から符号化方式を選択するという方法が取られる。しかし，両方の符号化方式のコストを計算しなければならないため，非常に計算コストがかかるという問題がある。
【００１９】
Ｈ．２６４のフレーム内符号化の予測モード決定の際には，１３種類の予測モードに対応する予測画像を生成し，それぞれのコストを求めることになるため，非常に重い処理が必要となる。また，フレーム間符号化では動きベクトルを求める必要があるため，この際にも多くの演算量が必要とされる。
【００２０】
これに対して，例えば非特許文献３において提案されている方法では，フレーム間符号化予測モードでのコストを計算し，ブロック内の隣接画素の差分値の分散を計算し，その２つの値を比較し，その結果によってはフレーム内予測を省略するという方法により，計算コストの削減を図っている。
【００２１】
しかし，非特許文献３の方法では，フレーム間符号化でのコスト計算終了後にフレーム内予測をするかどうかの判断を行っているため，フレーム間予測を必ず行う必要があるという問題がある。
【００２２】
本発明の目的は，少ない演算コストでフレーム間／フレーム内符号化の要・不要の判定を行うことができる技術を提供することである。
【課題を解決するための手段】
【００２３】
本発明は，上記の課題を解決するために，例えばフレーム内符号化とフレーム間符号化の両方式を有する映像符号化方式において，参照フレームの動きベクトルを符号化対象フレームに外挿／内挿したベクトルを生成する手段と，そのベクトルに従って動いたマクロブロックの各画素の座標を求める手段と，前記手段によって求めた座標が画面内かを判定する手段と，前記手段によって求めた座標と画素の座標が一致する回数を各画素毎にカウントする手段と，参照フレームの動き予測誤差の大きさの大小を判定する手段と，前記手段によって求めたカウント数の信頼度を，参照フレームの各画素の動き予測残差の大きさと，その画素が所属するマクロブロックの外挿／内挿ベクトルを用いて推定する手段と，符号化対象マクロブロック内の各画素のカウント数からそのマクロブロックのフレーム内符号化およびフレーム間符号化の要／不要を判定する手段とを有し，不要な予測モード決定は行わないことを特徴とする。
【００２４】
また，前記外挿／内挿ベクトルを，参照フレームの動きベクトルをもとに，符号化対象フレームと，参照フレームと，その動きベクトルが所属するマクロブロックが参照する参照フレームの相対距離の比から算出する手段を有することを特徴とする。
【００２５】
また，前記カウント数が１以上である画素の個数を各マクロブロック毎に求める手段を有し，その個数からフレーム内符号化およびフレーム間符号化の要／不要判定を行うことを特徴とする。
【００２６】
また，前記内挿／外挿ベクトルに従って動いた先が同一の座標になる画素の動き予測誤差を，カウント数の信頼度とすることを特徴とする。
【００２７】
また，前記フレーム内符号化およびフレーム間符号化の要／不要を，前記手段によって求めた個数と，予め定めた閾値との大小から決定することを特徴とする。
【発明の効果】
【００２８】
本発明によれば，フレーム内符号化とフレーム間符号化の２つの符号化方式を用いる映像符号化方式での符号化予測モード決定において，符号化効率の低下を最小限に留めながら，フレーム内符号化かフレーム間符号化かの判定を行う部分の計算コストを削減するという効果が得られる。
【発明を実施するための最良の形態】
【００２９】
本発明は，符号化済みフレームの動きベクトルの情報から，符号化対象フレームのマクロブロックのそれぞれについて，フレーム間符号化で効率よく符号化が行えるかを判定する。そのため，本発明では，まず，参照フレームのマクロブロックの動きベクトルを，符号化対象フレームに内挿／外挿したベクトルを求める。
【００３０】
図１は，内挿／外挿ベクトルの計算の例を説明する図である。参照フレームの動きベクトルをＶ，符号化対象フレーム番号をｉ，参照フレーム番号をｊ，マクロブロックが参照する先の参照フレーム番号をｋとする。このとき，内挿／外挿ベクトルＶｒは，フレーム間隔（ｉ−ｊ）と（j −ｋ）とから，次式，
Ｖr ＝−（ｉ−ｊ）Ｖ／（ｊ−ｋ）
により求める。
【００３１】
近接したフレーム間では，動作が連続している可能性が高い。したがって，参照フレームの動きベクトルを符号化対象フレームに内挿／外挿することで，参照フレームのマクロブロックが符号化対象フレームのどの部分に移動するのかを推定することができる。
【００３２】
次に，このベクトルによって参照フレームの各マクロブロックが移動する先の座標を算出する。また，符号化対象フレームの各画素ごとに，移動したマクロブロックの画素と重なる回数を求める。
【００３３】
図２は，重なり回数の計算の例を説明する図である。この例では，マクロブロックのサイズを４×４としている。図２（Ａ）において，実線は符号化対象フレームのマクロブロックの境界を表し，点線で示した３つのブロックは参照フレームの各マクロブロックの移動位置を表している。この例では，図２（Ａ）の太枠で示したマクロブロック内の各画素の重なり回数は，図２（Ｂ）に示すようになる。
【００３４】
マクロブロックを動かしたときに重なる部分については，フレーム間予測を行ったときに予測残差電力が小さい部分が存在すると予想されるため，そのマクロブロックは，フレーム間符号化で効率よく符号化することができる。逆に，参照フレームのマクロブロックを内挿／外挿した動きベクトルの方向に動かしたときに全く重ならない領域については，フレーム間予測の予測残差が大きくなると予想されるため，そのマクロブロックはフレーム内符号化を行う必要性が高いと考えられる。
【００３５】
このように，参照フレームの動きベクトル情報を用いることで，フレーム内符号化とフレーム間符号化との必要・不必要を判定することが可能となる。
【００３６】
また，図１の例で求めたベクトルＶｒの信頼度を示す評価値として，前フレームの動き予測の際に求めた各画素の差分値を利用する。
【００３７】
図３は，ベクトルＶｒの信頼度を評価する評価関数の計算の例を説明する図である。図３（Ａ）は，参照フレームの各画素の動き予測残差の絶対値を示している。簡単のため同一ブロック内の各画素の予測残差は同一の値にしているが，実際には各画素ごとの予測誤差の値を用いる。
【００３８】
図３（Ａ）の各ブロックが内挿／外挿ベクトルＶｒによって移動する先の座標を求め，その座標に対応する配列に予測誤差の値を格納する。このとき，一つの座標に複数の値がくる場合には，それらの値の中で最も小さなものを採用するものとする。また，一枚もマクロブロックが重ならない画素に関しては，図３（Ｂ）に示してあるように，予測誤差の取りうる最大値Ｍを格納する。
【００３９】
映像の中で動き補償の符号化効率が悪い領域では，動きベクトルの向きがばらつく現象が起こる。この場合，フレーム間での動きベクトルの連続性が期待できないため，このような動きベクトルを判定の材料に用いると判定精度が悪化する。そこで，動き予測誤差の大きさをもとに，連続性が期待できないベクトルを判別することで，判定精度を向上させることができる。
【００４０】
その後，重なり回数（図２参照）と予測誤差（図３参照）とをもとに，例えば実施例として後述する方法により，各マクロブロックのスコアを計算し，このスコアからフレーム内符号化およびフレーム間符号化の要／不要の判定を行う。
【００４１】
図４は，スコア計算処理フローチャートである。初期段階では，重なり回数Ｓ（ｘ，ｙ）のすべての要素を０，残差情報Ｔｒ（ｘ，ｙ）のすべての要素を予測誤差の最大値Ｍとする。
【００４２】
処理を開始すると，初めに，フレーム間符号化予測モード情報保存バッファから，予測に使われないフレームの情報を削除する（ステップＳ１０）。ここで削除する情報は，例えば次のステップＳ１１で使用する情報以外の情報であり，予測に不要な情報である。この削除処理は必須ではなく，省略してもよい。
【００４３】
次に，フレーム間符号化予測モード情報保存バッファから，１つの動き補償ブロックについて，以下の情報を１組取得する（ステップＳ１１）。
・ブロックが所属する参照フレーム番号ｊ
・動きベクトルＶ＝（ａ，ｂ）
・動き補償ブロックのサイズ（ｄx ，ｄy ）
・ブロックの左上の画素の座標（ｘmb，ｙmb）
・ブロックが参照する先の参照フレーム番号ｋ
・ブロックの各画素の動き予測誤差Ｒ（ｘ，ｙ）
また，取り出したベクトルについて，符号化対象フレームｉへの内挿／外挿ベクトルＶｒを，次式によって計算する（ステップＳ１２）。
【００４４】
Ｖｒ＝−（ｉ−ｊ）Ｖ／（ｊ−ｋ）
求めた内挿／外挿ベクトルＶｒによって，左上の座標が（ｘmb，ｙmb）であり，サイズが（ｄx ，ｄy ）である動き補償ブロックの各画素（ｘ0 ，ｙ0 ）〔ただし，ｘ0 ＝０〜ｄx ，ｙ0 ＝０〜ｄy 〕が動いた先の座標（ｘｔ（ｘ0 ），ｙｔ（ｙ0 ））を，ブロックのすべての画素について求める（ステップＳ１３）。このｘｔ（ｘ0 ），ｙｔ（ｙ0 ）は，具体的には以下の式で表される。
【００４５】
ｘｔ（ｘ0 ）＝−（ｉ−ｊ）ａ／（ｊ−ｋ）＋ｘmb＋ｘ0     （ｘ0 ＝０〜ｄx ）
ｙｔ（ｙ0 ）＝−（ｉ−ｊ）ｂ／（ｊ−ｋ）＋ｙmb＋ｙ0     （ｙ0 ＝０〜ｄy ）
このようにして求めた座標（ｘｔ（ｘ0 ），ｙｔ（ｙ0 ））について，その座標が画面内の座標であるかどうかを判定し，画面内の座標であるならば，重なり回数Ｓ（ｘｔ（ｘ0 ），ｙｔ（ｙ0 ））の値を１増やす（ステップＳ１４）。
【００４６】
また，（ｘｔ（ｘ0 ），ｙｔ（ｙ0 ））が画面内のものについて残差情報Ｔｒ（ｘｔ（ｘ0 ），ｙｔ（ｙ0 ））を取り出し，Ｔｒ（ｘｔ（ｘ0 ），ｙｔ（ｙ0 ））とＲ（ｘ0 ，ｙ0 ）とを比較して，Ｒ（ｘ0 ，ｙ0 ）＜Ｔｒ（ｘｔ（ｘ0 ），ｙｔ（ｙ0 ））であれば，Ｔｒ（ｘｔ（ｘ0 ），ｙｔ（ｙ0 ））の値をＲ（ｘ0 ，ｙ0 ）で置き換えて更新する（ステップＳ１５）。
【００４７】
すべての動き補償ブロックの処理が終了したかを判定し（ステップＳ１６），他にもフレーム間符号化予測モード情報保存バッファに動き補償ブロックが存在するならば，そのブロックについてステップＳ１１〜Ｓ１５の処理による操作を繰り返す。
【００４８】
以上の操作をすべての動き補償ブロックについて施した後，各画素の重なり回数Ｓ（ｘ，ｙ）と残差情報Ｔｒ（ｘ，ｙ）とを使って次フレームの全マクロブロックのスコアを計算し，Ｓｂ（ＭＢ）（ＭＢはマクロブロック番号）に代入する（ステップＳ１７）。
【００４９】
計算終了後，重なり回数Ｓ（ｘ，ｙ）をすべての（ｘ，ｙ）について０で初期化する（ステップＳ１８）。また，残差情報Ｔｒ（ｘ，ｙ）をすべての（ｘ，ｙ）について予測誤差が取りうる最大値Ｍで初期化する（ステップＳ１９）。以上の手順により，次フレームの各マクロブロックのスコア計算が行われる。
【００５０】
次に，求められたスコアＳｂ（ＭＢ）を利用してフレーム内符号化予測とフレーム間符号化予測の要／不要判定を行うマクロブロックの符号化予測モード決定方法を，図５に従って説明する。図５は，本発明の実施の形態における符号化予測モード決定処理フローチャートである。マクロブロック番号ＭＢの符号化予測モード決定処理が開始されると，まず，このマクロブロックＭＢのスコアＳｂ（ＭＢ）を判定関数Ｃｈ（Ｓｂ（ＭＢ））に代入し，フレーム内符号化コスト計算の要／不要，フレーム間符号化コスト計算の要／不要の決定を行う（ステップＳ２０）。その詳細を図６に示す。
【００５１】
図６は，判定関数Ｃｈ（Ｓｂ（ＭＢ））によるフレーム内符号化コスト計算／フレーム間符号化コスト計算の要／不要判定処理フローチャートである。図６において，Th＿Intra はあらかじめ設定されたフレーム内符号化に関する閾値，Th＿Inter はあらかじめ設定されたフレーム間符号化に関する閾値である。
【００５２】
まず，スコアＳｂ（ＭＢ）とフレーム内符号化に関する閾値Th＿Intra とを比較し（ステップＳ４０），Ｓｂ（ＭＢ）がTh＿Intra 以上であれば，フレーム内符号化コスト計算を不要に設定する（ステップＳ４１）。Ｓｂ（ＭＢ）がTh＿Intra より小さければ，フレーム内符号化コスト計算を必要に設定する（ステップＳ４２）。
【００５３】
次に，スコアＳｂ（ＭＢ）とフレーム間符号化に関する閾値Th＿Inter とを比較し（ステップＳ４３），Ｓｂ（ＭＢ）がTh＿Inter 以下であれば，フレーム間符号化コスト計算を不要に設定する（ステップＳ４４）。Ｓｂ（ＭＢ）がTh＿Inter より大きければ，フレーム間符号化コスト計算を必要に設定する（ステップＳ４５）。
【００５４】
再び図５において，まず，フレーム内符号化コスト計算の必要性から分岐し（ステップＳ２１），必要ならば，フレーム内符号化のコスト計算ルーチンによって，フレーム内符号化のコスト計算を行う（ステップＳ２２）。必要ないならば，フレーム内符号化のコストの最小値 min＿Intra を十分大きな値に設定する（ステップＳ２３）。
【００５５】
次に，フレーム間符号化コスト計算の必要性から分岐し（ステップＳ２４），必要ならば，フレーム間符号化のコスト計算ルーチンによって，フレーム間符号化のコスト計算を行う（ステップＳ２５）。必要ないならば，フレーム間符号化のコストの最小値 min＿Inter を十分大きな値に設定する（ステップＳ２６）。
【００５６】
このようにして求めたコスト min＿Intra と min＿Inter との大小を比較する（ステップＳ２７）。 min＿Inter の方が小さいならば，符号化予測モードをフレーム間符号化に設定し，フレーム間符号化予測モード情報を出力する（ステップＳ２８）。また，そのフレーム間符号化予測モード情報を，フレーム間符号化予測モード情報保存バッファに格納する（ステップＳ２９）。
【００５７】
min＿Intra が min＿Inter 以下の場合には，符号化予測モードをフレーム内符号化に設定し，予測モード情報を出力する（ステップＳ３０）。
【００５８】
その後，マクロブロック番号ＭＢがフレームの最後かどうかを判定し（ステップＳ３１），最後ならば，図４のフローチャートに示すスコア計算処理を行い，次フレームの各マクロブロックのスコアを求める（ステップＳ３２）。
【００５９】
以上の処理を行うことで，符号化効率の低下を抑えながら符号化予測モード決定時の計算コストを削減することが可能となる。
【００６０】
図７は，本発明における符号化予測モード決定装置の構成例を示す図である。符号化予測モード決定装置１は，符号化予測モード制御部１０，フレーム内符号化予測モード決定部２０，フレーム間符号化予測モード決定部３０，コスト判定部４０から構成される。
【００６１】
図７におけるフレーム内符号化予測モード決定部２０，フレーム間符号化予測モード決定部３０，コスト判定部４０は，それぞれ，図１６におけるフレーム内符号化予測モード決定部２０１，フレーム間符号化予測モード決定部２０２，コスト判定部２０３と同等の機能を有するものとする。ただし，フレーム内符号化予測モード決定部２０およびフレーム間符号化予測モード決定部３０は，マクロブロック番号として−１が入力された場合に，何も処理をしないで十分大きな値をコストとしてコスト判定部４０に送信するものとする。
【００６２】
図８は，符号化予測モード制御部の構成例を示す図である。符号化予測モード制御部１０は，フレーム番号カウンタ１００，フレーム間符号化予測モード情報保存バッファ１０１，移動先推定部１０２，重なり回数カウント部１０３，重なり回数保存メモリ１０４，スコアＳｂ計算部１０５，マクロブロックスコアデータ保存メモリ１０６，判定関数Ｃｈ計算部１０７，予測残差移動先処理部１０８，予測残差情報保存メモリ１０９から構成される。
【００６３】
フレーム番号カウンタ１００は，符号化対象フレームの番号を保持し，マクロブロック番号として０が入力される度に，保持しているフレーム番号を１増やす。また，フレーム番号をフレーム間符号化予測モード情報保存バッファ１０１と移動先推定部１０２とに送信する。
【００６４】
フレーム間符号化予測モード情報保存バッファ１０１は，フレーム内／フレーム間判定信号としてフレーム間符号化が入力されたときに，その時点で入力されているフレーム番号，マクロブロック番号，フレーム間符号化予測モード情報を，１組として保存する。マクロブロック番号として０が入力された場合には，保持しているフレーム間符号化予測モード情報のうち，フレーム間予測に使われないフレーム番号の情報をすべて削除する。マクロブロック番号として最後の番号が入力された場合には，フレーム内／フレーム間判定信号とフレーム間符号化予測モード情報とを受信した後に，バッファ内に保持しているフレーム間符号化予測モード情報を，逐次，移動先推定部１０２に送信する。
【００６５】
移動先推定部１０２は，フレーム間符号化予測モード情報として参照フレーム番号ｊ，動きベクトルＶ＝（ａ，ｂ），動き補償ブロックのサイズ（ｄx ，ｄy ），そのブロックの左上の座標の画像（ｘmb，ｙmb），そのブロックが参照する先の参照フレーム番号ｋ，ブロックの各画素の予測残差Ｒ（ｘ，ｙ）が入力されると（ここで，ｘ＝０〜ｄx ，ｙ＝０〜ｄy ），フレーム番号カウンタ１００から送信されるフレーム番号ｉを用いて内挿／外挿ベクトルＶｒ＝−（ｉ−ｊ）Ｖ／（ｊ−ｋ）を計算する。
【００６６】
求めた内挿／外挿ベクトルＶｒによって，動き補償ブロックが動いた先の座標（ｘｔ（ｘ），ｙｔ（ｙ））を，ブロックすべての画素（ｘ，ｙ）について求める。また，各画素の予測残差Ｒ（ｘ，ｙ）と，その移動先座標（ｘｔ（ｘ），ｙｔ（ｙ））との組を，予測残差移動先処理部１０８に順次送信する。また，移動先座標（ｘｔ（ｘ），ｙｔ（ｙ））については，重なり回数カウント部１０３にも同時に送信する。すべての動き補償ブロックについて上記の操作が完了すると，スコアＳｂ計算部１０５に計算開始信号を送信する。
【００６７】
重なり回数カウント部１０３は，移動先推定部１０２から座標が送られてくる度に，その座標のカウント数を重なり回数保存メモリ１０４から取り出し，それに１を加えて同じ場所に保存する。ただし，指定された座標が画面外の座標である場合には，その処理は行わない。
【００６８】
重なり回数保存メモリ１０４は，各画素に対応する値を保持し，重なり回数カウント部１０３とスコアＳｂ計算部１０５とにデータを送信する。また，スコアＳｂ計算部１０５からリセット信号を受信すると，メモリの内容をすべて０で初期化する。
【００６９】
スコアＳｂ計算部１０５は，移動先推定部１０２から計算開始信号を受信すると，重なり回数保存メモリ１０４に格納されたデータと，予測残差情報保存メモリ１０９に格納されたデータとをもとに，各マクロブロックのスコア計算を行う。計算結果は，マクロブロックスコアデータ保存メモリ１０６に格納する。計算終了後，予測残差情報保存メモリ１０９と重なり回数保存メモリ１０４とにリセット信号を送り，これらの内容を初期化する。
【００７０】
マクロブロックスコアデータ保存メモリ１０６は，各マクロブロックのスコアＳｂを保持する。また，そのスコアＳｂを判定関数Ｃｈ計算部１０７に送信する。
【００７１】
判定関数Ｃｈ計算部１０７は，マクロブロック番号を受信すると，そのマクロブロックのスコアをマクロブロックスコアデータ保存メモリ１０６から取得する。そしてそれを判定関数Ｃｈに代入して計算を行い，フレーム内符号化コスト計算の必要性の有無，フレーム間符号化コスト計算の必要性の有無を判定する。判定した結果により，以下の情報を出力する。
・フレーム内符号化コスト計算が必要な場合には，フレーム内符号化予測モード決定部２０にマクロブロック番号を出力する。必要がない場合には，−１を出力する。
・フレーム間符号化コスト計算が必要な場合には，フレーム間符号化予測モード決定部３０にマクロブロック番号を出力する。必要がない場合には，−１を出力する。
【００７２】
予測残差移動先処理部１０８は，移動先推定部１０２から送られてくる各画素の予測残差とその移動先座標とを受信すると，まず，移動先座標が画面内の座標であるかどうかを判定する。画面内の座標であるならば，その座標に対応する値を予測残差情報保存メモリ１０９から取り出し，移動先推定部１０２から受信した残差と比較する。そして，値の小さい方を予測残差情報保存メモリ１０９に格納する。
【００７３】
予測残差情報保存メモリ１０９は，全画素数と同数の配列を持ち，予測残差移動先処理部１０８から送られてくる予測残差の値を保持する。また，スコアＳｂ計算部１０５からリセット信号を受信すると，すべての値を予測残差が取りうる最大値Ｍで初期化する。
【００７４】
以上の図７，図８の例に示した符号化予測モード決定装置１を用いることにより，図４，図５，図６のフローチャートに示された処理を実行することができる。以上の実施の形態の作用は，以下のとおりである。
【００７５】
近接したフレーム間では，動作が連続している可能性が高い。したがって，参照フレームの動きベクトルを符号化対象フレームに内挿／外挿することで，参照フレームのマクロブロックが符号化対象フレームのどの部分に移動するのかを推定することができる。このようにマクロブロックを動かしたときに重なる部分については，フレーム間予測を行ったときに予測残差電力が小さい部分が存在すると予想されるため，そのマクロブロックは，フレーム間符号化で効率よく符号化することができる。逆に，参照フレームのマクロブロックを内挿／外挿した動きベクトルの方向に動かしたときに全く重ならない領域については，フレーム間予測の予測残差が大きくなると予想されるため，そのマクロブロックはフレーム内符号化を行う必要性が高いと考えられる。
【００７６】
このように，参照フレームの動きベクトル情報を用いることで，フレーム内符号化とフレーム間符号化との必要・不必要を判定することが可能となる。
【００７７】
また，映像の中で動き補償の符号化効率が悪い領域では，動きベクトルの向きがばらつく現象が起こる。この場合，フレーム間での動きベクトルの連続性が期待できないため，このような動きベクトルを判定の材料に用いると判定精度が悪化する。そこで，動き予測誤差の大きさをもとに，連続性が期待できないベクトルを判別することで，判定精度を向上させることができる。
【００７８】
なお，図８の例では，重なり回数カウント部１０３と重なり回数保存メモリ１０４とを用いて，各画素に対応する重なり回数をカウントし，そのカウント値を記憶しているが，重なり回数保存メモリ１０４の代わりに，各画素に対応するフラグを持つ重なり位置保存メモリを用い，重なり回数が１以上の場合にフラグ値を“１”，重なり回数が０の場合にフラグ値を“０”として画素位置を記憶するような実施も可能である。
【００７９】
以上の符号化予測モード決定の処理は，コンピュータとソフトウェアプログラムとによっても実現することができ，そのプログラムをコンピュータ読み取り可能な記録媒体に記録して提供することも，ネットワークを通して提供することも可能である。
【実施例１】
【００８０】
図９は，本発明の実施例１における符号化予測モード決定処理フローチャートである。本実施例１では，参照フレームは常に１フレーム前のものとし，フレーム間符号化における予測モードは，１種類のみと仮定する。また，動き予測誤差を用いた信頼度の判定は省略する。
【００８１】
処理が開始されると，まず，符号化対象マクロブロックＭＢのスコアＳｂ（ＭＢ）を判定関数Ｃｈ（Ｓｂ（ＭＢ））に代入し，その判定関数の結果によって，そのマクロブロックのフレーム内符号化コスト計算の必要性，フレーム間符号化コスト計算の必要性を求める（ステップＳ５０）。
【００８２】
フレーム内符号化コスト計算の必要性から分岐し（ステップＳ５１），必要ならば，フレーム内符号化のコスト計算ルーチンによって，フレーム内符号化のコスト計算を行う（ステップＳ５２）。必要ないならば，フレーム内符号化のコストの最小値 min＿Intra を十分大きな値に設定する（ステップＳ５３）。
【００８３】
また，フレーム間符号化コスト計算の必要性から分岐し（ステップＳ５４），必要ならば，フレーム間符号化のコスト計算ルーチンによって，フレーム間符号化のコスト計算を行う（ステップＳ５５）。必要ないならば，フレーム間符号化のコストの最小値 min＿Inter を十分大きな値に設定する（ステップＳ５６）。
【００８４】
このようにして求めたコスト min＿Intra と min＿Inter との大小を比較する（ステップＳ５７）。 min＿Inter の方が小さいならば，符号化予測モードをフレーム間符号化に設定し，フレーム間符号化予測モード情報として最適動きベクトルＭＶを出力する（ステップＳ５８）。そして，以下の図１０のフローチャートに示すスコア計算用前処理を行う（ステップＳ５９）。
【００８５】
図１０は，本実施例１におけるスコア計算用前処理フローチャートである。図１０において，ｄx はマクロブロックの幅を表し，ｄy はマクロブロックの高さを表す。
【００８６】
まず，求めた最適動きベクトルＭＶ＝（ａ，ｂ）を次の符号化対象フレーム方向に外挿したベクトルＶｒ＝（−ａ，−ｂ）を計算する（ステップＳ７０）。次に，マクロブロックＭＢの左上の座標を（ｘmb，ｙmb）とおく（ステップＳ７１）。ループに使う変数ｊを０に初期化し（ステップＳ７２），マクロブロックのすべての点について，以下のステップＳ７３〜Ｓ８０の処理を行う。
【００８７】
ループに使う変数ｉを０に初期化し（ステップＳ７３），マクロブロックＭＢ内の上からｊ番目，左からｉ番目の画素に対し，ベクトルＶｒ方向に動いた先の座標（ｘｔ，ｙｔ）を，以下の式で計算する（ステップＳ７４）。
【００８８】
ｘｔ＝ｘmb＋ｉ−ａ
ｙｔ＝ｙmb＋ｊ−ｂ
算出された座標（ｘｔ，ｙｔ）が画面内の座標であるかどうかを判定し（ステップＳ７５），画面内の座標であるならば，その座標（ｘｔ，ｙｔ）に対応するメモリＳ（ｘｔ，ｙｔ）の値を１増やす（ステップＳ７６）。
【００８９】
ｉを１増やして（ステップＳ７７），一つ右の画素に移る。右の画素がマクロブロックＭＢ内の画素であるかどうかを判定し（ステップＳ７８），マクロブロック内の画素であるならば，その座標についての移動先座標計算処理（ステップＳ７４）へ戻る。
【００９０】
右の画素がマクロブロック内の画素でないならば，ｊを１増やして（ステップＳ７９），一つ下の画素に移る。ｊ＜ｄy かどうか，すなわち下の画素がマクロブロックＭＢ内の画素であるかどうかを判定し（ステップＳ８０），マクロブロック内の画素であるならば，ｉを０にして（ステップＳ７３），その行の一番左の画素から順に，上記の処理（ステップＳ７４〜Ｓ８０）を繰り返す。
【００９１】
このようにして，マクロブロック内のすべての画素について移動先の座標を計算し，画素の重なり回数のカウントを行う。以上の処理が，図９のステップＳ５９のスコア計算用前処理である。
【００９２】
図９のステップＳ５７において， min＿Intra が min＿Inter 以下であった場合には，符号化予測モードをフレーム内符号化に設定し，予測モード情報を出力する（ステップＳ６０）。
【００９３】
その後，マクロブロック番号ＭＢがフレーム内の最後の番号かを判定し（ステップＳ６１），最後の番号でないならば，処理を終了する。
【００９４】
最後のマクロブロック番号ＭＢならば，次フレームの各画素の重なり回数を保持した配列Ｓ（ｘ，ｙ）の値から，次フレームの各マクロブロックのスコアを求め，Ｓｂに代入する（ステップＳ６２）。スコアの計算が終了したら，スコア計算用配列を初期化する（ステップＳ６３）。ここでは，重なり回数を保持する配列Ｓ（ｘ，ｙ）の全成分を０で初期化する。
【００９５】
以上のような手法を用いることで，符号化効率の低下を抑えつつ，フレーム内符号化とフレーム間符号化を選択する際の演算コストを削減することが可能となる。
【００９６】
以上の本実施例１における処理を実現するための符号化予測モード決定装置の構成例は，図７に示す符号化予測モード決定装置１の構成例と同様である。符号化予測モード決定装置１は，符号化予測モード制御部１０，フレーム内符号化予測モード決定部２０，フレーム間符号化予測モード決定部３０，コスト判定部４０から構成される。
【００９７】
また，フレーム内符号化予測モード決定部２０，フレーム間符号化予測モード決定部３０，コスト判定部４０は，それぞれ図１６におけるフレーム内符号化予測モード決定部２０１，フレーム間符号化予測モード決定部２０２，コスト判定部２０３と同等の機能を有するものとする。ただし，フレーム間符号化予測モード決定部３０が使用する参照フレームは１フレーム前のみに限定され，また，予測モードは１種類のみであるものとする。
【００９８】
図１１は，本実施例１における符号化予測モード制御部の構成例を示す図である。符号化予測モード制御部１０は，移動先推定部１０２，重なり回数カウント部１０３，重なり回数保存メモリ１０４，スコアＳｂ計算部１０５，マクロブロックスコアデータ保存メモリ１０６，判定関数Ｃｈ計算部１０７から構成される。
【００９９】
重なり回数カウント部１０３，重なり回数保存メモリ１０４，マクロブロックスコアデータ保存メモリ１０６，判定関数Ｃｈ計算部１０７の機能は，図８で説明したとおりである。
【０１００】
移動先推定部１０２は，フレーム内／フレーム間判定信号としてフレーム間符号化の判定信号が入力されると，フレーム間符号化予測モード情報として動きベクトルＭＶ＝（ａ，ｂ）を取得し，外挿ベクトルＶｒ＝（−ａ，−ｂ）を求める。また，マクロブロック番号から左上の画素の座標を計算し，それらのデータからマクロブロック内の各画素の移動先の座標を計算する。計算した移動先座標を重なり回数カウント部１０３に送信する。このとき，入力されたマクロブロック番号が最後のものであるならば，すべての座標データを送信した後，スコアＳｂ計算部１０５に計算開始信号を送信する。
【０１０１】
スコアＳｂ計算部１０５は，移動先推定部１０２から計算開始信号を受信すると，重なり回数保存メモリ１０４から，各画素の重なり回数を取り出す。そして，重なり回数からマクロブロックのスコアを計算し，マクロブロックスコアデータ保存メモリ１０６に送信する。また，計算終了後，重なり回数保存メモリ１０４にリセット信号を送信する。
【０１０２】
このような符号化予測モード制御部１０の動作は，次のようになる。まず，マクロブロック番号ＭＢが入力されると，判定関数Ｃｈ計算部１０７は，マクロブロックスコアデータ保存メモリ１０６から対応するスコアを取り出し，判定関数によりフレーム内符号化予測の要／不要，フレーム間符号化予測の要／不要を決定し，フレーム内符号化予測モード決定部２０，フレーム間符号化予測モード決定部３０に，そのマクロブロック番号もしくは−１を送信する。
【０１０３】
移動先推定部１０２にフレーム内／フレーム間判定信号としてフレーム間符号化が入力されると，フレーム間符号化予測モード情報として動きベクトルＭＶを取得する。移動先推定部１０２は，そのマクロブロックのすべての画素の移動先座標を計算し，重なり回数カウント部１０３に送信する。重なり回数カウント部１０３は，受信した移動先座標が画面内の座標であるかを判定し，重なり回数をカウントして重なり回数保存メモリ１０４に保存する。
【０１０４】
入力されたマクロブロック番号ＭＢが最後のものならば，移動先推定部１０２は，移動先座標計算終了後，計算開始信号をスコアＳｂ計算部１０５に送信する。スコアＳｂ計算部１０５は，計算開始信号を受信すると，重なり回数保存メモリ１０４から各画素の重なり回数を取り出して次のフレームの各マクロブロックのスコアを計算して，マクロブロックスコアデータ保存メモリ１０６に送信し，重なり回数保存メモリ１０４にリセット信号を送信して重なり回数保存メモリ１０４の内容を０で初期化する。
【０１０５】
本実施例における符号化予測モード決定装置１の動作は，次のようになる。まず，符号化予測モード制御部１０にマクロブロック番号ＭＢが入力されると，判定関数Ｃｈ（Ｓｂ（ＭＢ））を計算し，フレーム内符号化予測の要／不要，フレーム間符号化予測の要／不要の判定を行う。
【０１０６】
判定の結果，フレーム内符号化予測が必要な場合には，フレーム内符号化予測モード決定部２０にマクロブロック番号を出力する。不必要の場合には，−１を出力する。同様に，判定の結果，フレーム間符号化予測が必要な場合には，フレーム間符号化予測モード決定部３０にマクロブロック番号を出力する。不必要の場合には，−１を出力する。
【０１０７】
フレーム内符号化予測モード決定部２０は，入力されたマクロブロック番号が−１の場合には，十分大きな値をコストとしてコスト判定部４０に送信する。それ以外の場合には，その番号のマクロブロックのフレーム内符号化予測モードを決定し，その番号を出力すると同時に，コストをコスト判定部４０に送信する。
【０１０８】
フレーム間符号化予測モード決定部３０は，入力されたマクロブロック番号が−１の場合には，十分大きな値をコストとしてコスト判定部４０に送信する。それ以外の場合には，その番号のマクロブロックの動きベクトルを決定し，その動きベクトル情報を出力すると同時に，コストをコスト判定部４０に送信する。
【０１０９】
コスト判定部４０は，２つのコストを受信すると，その大小を判定する。そしてコストが小さい方をそのマクロブロックの符号化予測モードと決定し，その結果をフレーム内／フレーム間判定信号として出力する。
【０１１０】
入力されたマクロブロック番号が最後の番号であった場合には，これらの処理終了後に次フレームの各マクロブロックのスコアの計算を行う。
【０１１１】
以上のような符号化予測モード決定装置１を用いることで，図９，図１０のフローチャートに示す処理を実現することができる。
【０１１２】
次に，コスト関数Ｓｂと判定関数Ｃｈの具体的な例について述べる。まず，コスト関数Ｓｂであるが，例えば，マクロブロックに含まれる全画素の重なり回数を取り出し，各画素について０回ならば０，１回以上ならば１としてその値をマクロブロックで合計したものを考える。この値は，前マクロブロックが動いたものと重なる画素が１マクロブロック中に何画素あるかを示している。
【０１１３】
Ｈ．２６４映像符号化方式を用いて従来法で符号化したものについて，上記のコスト関数Ｓｂを適用した場合の傾向を，図１２に示す。図１２は，スコアの分布とフレーム内予測が選択される割合の例を示している。横軸はスコアを表しており，曲線のグラフはそのスコアを取るマクロブロックの個数，棒グラフはその区間のスコアを取るマクロブロックでフレーム内符号化が選択された割合を表している。
【０１１４】
この結果から，スコアの値が大きいマクロブロックほどフレーム間符号化が採用される可能性が高く，またその個数も多いことが分かる。逆に，スコアの値が小さいマクロブロックでは，フレーム内符号化が採用される可能性が高いことが分かる。
【０１１５】
そこで，例えば，判定関数Ｃｈとして，「スコアがマクロブロック内の全画素数の４／５以上ならばフレーム内符号化の予測は不要」，逆に「スコアが１／１５以下のマクロブロックならばフレーム間符号化の予測は不要」というものを考える。そうすると，多くのマクロブロックでフレーム内／フレーム間符号化予測の処理が省略することができる。
【０１１６】
この例では，「スコアがマクロブロック内の全画素数の４／５以上ならばフレーム内符号化の予測は不要」とするという判定関数Ｃｈにおける「４／５」という閾値は，実験によって得られた図１２のグラフから，従来方法による符号化予測モードの決定において，フレーム内予測が選択される割合が１０％以下であるスコアの値から決定している。
【０１１７】
また，「スコアが１／１５以下のマクロブロックならばフレーム間符号化の予測は不要」とするという判定関数Ｃｈにおける「１／１５」という閾値は，実験によって得られた図１２のグラフから，従来方法による符号化予測モードの決定において，フレーム内予測が選択される割合が８５％以上であるスコアの値から決定している。
【実施例２】
【０１１８】
本実施例２では，参照フレームは常に１フレーム前のものとし，フレーム間符号化における予測モードは１種類のみとする。また，予測誤差の最大値Ｍは２５５とする。
【０１１９】
なお，符号化予測モード決定処理フローチャートの流れは，前述の実施例１と同様に図９に示すものとなる。ただし，スコア計算用前処理（ステップＳ５９）は，図１３のフローチャートに示す処理となる。また，スコア計算用配列の初期化（ステップＳ６３）では，重なり回数を保持するメモリＳ（ｘ，ｙ）のすべての要素を０で初期化すると同時に，予測誤差情報を保持するメモリＴｒ（ｘ，ｙ）のすべての要素を２５５で初期化する。
【０１２０】
図１３は，本実施例２におけるスコア計算用前処理フローチャートである。図１３において，ｄx はマクロブロックの幅を示し，ｄy はマクロブロックの高さを示す。
【０１２１】
まず，求めた最適動きベクトルＭＶ＝（ａ，ｂ）を，次の符号化対象フレーム方向に外挿したベクトルＶｒ＝（−ａ，−ｂ）を計算する。また，マクロブロックＭＢの左上の座標を（ｘmb，ｙmb）とおく（ステップＳ９０）。ループに使う変数ｊを０に初期化し（ステップＳ９１），マクロブロックのすべての点について，以下のステップＳ９２〜Ｓ１０１の処理を行う。
【０１２２】
ループに使う変数ｉを０に初期化し（ステップＳ９２），マクロブロックＭＢ内の上からｊ番目，左からｉ番目の画素に対し，ベクトルＶｒ方向に動いた先の座標（ｘｔ，ｙｔ）を以下の式で計算する（ステップＳ９３）。
【０１２３】
ｘｔ＝ｘmb＋ｉ−ａ
ｙｔ＝ｙmb＋ｊ−ｂ
算出された座標（ｘｔ，ｙｔ）が画面内の座標であるかどうかを判定し（ステップＳ９４），画面内の座標であるならば，その座標（ｘｔ，ｙｔ）に対応するメモリＳ（ｘｔ，ｙｔ）の値を１増やす（ステップＳ９５）。
【０１２４】
次に，その点（ｘmb＋ｉ，ｙmb＋ｊ）の動き予測残差Ｒ（ｉ，ｊ）と，その画素が動いた先の座標（ｘｔ，ｙｔ）に対応するメモリＴｒ（ｘｔ，ｙｔ）の値とを比較し（ステップＳ９６），Ｒ（ｉ，ｊ）がＴｒ（ｘｔ，ｙｔ）より小さければ，Ｔｒ（ｘｔ，ｙｔ）の値をＲ（ｉ，ｊ）で置き換えて更新する（ステップＳ９７）。
【０１２５】
ｉを１増やして（ステップＳ９８），一つ右の画素に移る。ｉとｄx との大小比較により，右の画素がマクロブロックＭＢ内の画素であるかどうかを判定し（ステップＳ９９），マクロブロック内の画素であるならば，その座標についての移動先座標計算処理（ステップＳ９３）へ戻る。
【０１２６】
右の画素がマクロブロック内の画素でないならば，ｊを１増やし（ステップＳ１００），一つ下の画素に移る。ｊとｄy との大小比較により，下の画素がマクロブロックＭＢ内の画素であるかを判定し（ステップＳ１０１），マクロブロック内の画素であるならばｉを０にして（ステップＳ９２），その行の一番左の画素から順に，上記の処理（ステップＳ９２〜Ｓ１０１）を繰り返す。
【０１２７】
このようにして，マクロブロック内のすべての画素について移動先の座標を計算し，画素の重なり回数と予測残差に関する処理を行う。以上の処理が，本実施例２におけるスコア計算用前処理である。
【０１２８】
このような手法を用いることで，符号化効率の低下を抑えつつ，フレーム内符号化とフレーム間符号化を選択する際の演算コストを削減することが可能となる。
【０１２９】
以上の本実施例２における処理を実現するための符号化予測モード決定装置の構成例は，図７に示す符号化予測モード決定装置１の構成例と同様である。符号化予測モード決定装置１は，符号化予測モード制御部１０，フレーム内符号化予測モード決定部２０，フレーム間符号化予測モード決定部３０，コスト判定部４０から構成される。
【０１３０】
図１４は，本実施例２における符号化予測モード制御部の構成例を示す図である。符号化予測モード制御部１０は，移動先推定部１０２，予測残差移動先処理部１０８，予測残差情報保存メモリ１０９，重なり回数カウント部１０３，重なり回数保存メモリ１０４，スコアＳｂ計算部１０５，マクロブロックスコアデータ保存メモリ１０６，判定関数Ｃｈ計算部１０７から構成される。
【０１３１】
予測残差移動先処理部１０８，予測残差情報保存メモリ１０９，重なり回数カウント部１０３，重なり回数保存メモリ１０４，マクロブロックスコアデータ保存メモリ１０６，判定関数Ｃｈ計算部１０７の機能は，図８で説明したとおりである。
【０１３２】
移動先推定部１０２は，フレーム内／フレーム間判定信号としてフレーム間符号化の判定信号が入力されると，フレーム間符号化予測モード情報から動きベクトルＭＶ（ａ，ｂ）と予測残差Ｒ（ｘ，ｙ）を取り出し，外挿ベクトルＶｒ（−ａ，−ｂ）を求める。また，マクロブロック番号から左上の画素の座標を計算し，それらのデータからマクロブロックの各画素の移動先の座標を計算し，各画素の予測残差とその移動先座標とを順次出力する。このとき，入力されたマクロブロック番号が最後のものならば，すべての座標データを送信後，スコアＳｂ計算部１０５に計算開始信号を送信する。
【０１３３】
スコアＳｂ計算部１０５は，移動先推定部１０２から予測開始信号を受信すると，重なり回数保存メモリ１０４に格納されたデータと，予測残差情報保存メモリ１０９に格納されたデータとをもとに，各マクロブロックのスコア計算を行う。計算結果は，マクロブロックスコアデータ保存メモリ１０６に格納する。計算終了後，予測残差情報保存メモリ１０９と重なり回数保存メモリ１０４とにリセット信号を送り，これらの内容を初期化する。
【０１３４】
符号化予測モード制御部１０の動作は，次のようになる。まず，マクロブロック番号ＭＢが入力されると，判定関数Ｃｈ計算部１０７は，マクロブロックスコアデータ保存メモリ１０６から対応するスコアを取り出し，判定関数によりフレーム内符号化予測の要／不要，フレーム間符号化予測の要／不要を決定し，フレーム内符号化予測モード決定部２０，フレーム間符号化予測モード決定部３０に，そのマクロブロック番号もしくは−１を送信する。
【０１３５】
移動先推定部１０２にフレーム内／フレーム間判定信号としてフレーム間予測が入力されると，フレーム間符号化予測モード情報から動きベクトルＭＶと予測残差Ｒ（ｘ，ｙ）とを取得する。移動先推定部１０２は，そのマクロブロックのすべての画素の移動先を計算し，画素の予測残差とその移動先座標とを一組として，同時に送信する。
【０１３６】
予測残差移動先処理部１０８は，予測残差とその移動先座標の情報を受け取ると，移動先座標が画面内の座標であるならば，予測残差情報保存メモリ１０９から対応する座標のデータを取り出し，受け取った予測残差と比較して小さい方を格納する。重なり回数カウント部１０３は，受信した移動先座標が画面内の座標であるかを判定し，重なり回数をカウントして重なり回数保存メモリ１０４に保存する。
【０１３７】
入力されたマクロブロックが最後のものであるならば，移動先推定部１０２は，移動先座標計算終了後，計算開始信号をスコアＳｂ計算部１０５に送信する。スコアＳｂ計算部１０５は，計算開始信号を受信すると，重なり回数保存メモリ１０４と予測残差情報保存メモリ１０９とから各画素の情報を取り出し，次フレームの全マクロブロックのスコア計算を行う。そして，計算結果をマクロブロックスコアデータ保存メモリ１０６に送信し，予測残差情報保存メモリ１０９と重なり回数保存メモリ１０４とにリセット信号を送信し，予測残差情報保存メモリ１０９を２５５で，重なり回数保存メモリ１０４を０で初期化する。
【０１３８】
以上の符号化予測モード決定装置１を用いることで，図９，図１３のフローチャートに示す処理を実現することができる。
【０１３９】
次に，本実施例２に示したコスト関数Ｓｂの具体例について述べる。例えば，前述の実施例１と同様に，まず，各マクロブロックに含まれる全画素の重なり回数を取り出し，各画素について０回ならば０，１回以上ならば１として，この値をマクロブロックで合計したものが考えられる。
【０１４０】
この合計を取る際に，予測残差情報保存メモリ１０９から各マクロブロックに含まれる全画素の残差情報を取り出し，例えば，「残差がＭ／５以上の画素については信頼度が低いものとして重なり回数が１回以上であっても０とする」という処理を加えることが考えられる。ここでＭは，予測誤差の取りうる最大値である。このような判定を行うことで，より信頼度の高いデータのみをスコアの計算に使用することができる。
【実施例３】
【０１４１】
以上の実施例１，２では，コスト関数Ｓｂの具体例として，各マクロブロックに含まれる全画素の重なり回数を取り出し，各画素について０回ならば０，１回以上ならば１として，この値をマクロブロックで合計したものを用いた。スコアの計算方法としては，これに限らず，他の方法を用いることもできる。例えば，各画素の重なり回数をマクロブロック毎に合計することでスコアとすることもできる。この場合もスコアが高いほどフレーム間符号化が選択される確率が高く，スコアが低いほどフレーム内符号化が選択される確率が高くなる。そこで同様に，スコアを判別する閾値を上下に設け，フレーム間符号化の要／不要，フレーム内符号化の要／不要を決定することができる。
【図面の簡単な説明】
【０１４２】
【図１】内挿／外挿ベクトルの計算の例を説明する図である。
【図２】重なり回数の計算の例を説明する図である。
【図３】評価関数の計算の例を説明する図である。
【図４】スコア計算処理フローチャートである。
【図５】本発明の実施の形態における符号化予測モード決定処理フローチャートである。
【図６】判定関数Ｃｈ（Ｓｂ（ＭＢ））によるフレーム内符号化コスト計算／フレーム間符号化コスト計算の要／不要判定処理フローチャートである。
【図７】本発明における符号化予測モード決定装置の構成例を示す図である。
【図８】符号化予測モード制御部の構成例を示す図である。
【図９】実施例１における符号化予測モード決定処理フローチャートである。
【図１０】実施例１におけるスコア計算用前処理フローチャートである。
【図１１】実施例１における符号化予測モード制御部の構成例を示す図である。
【図１２】スコアの分布とフレーム内予測が選択される割合の例を示す図である。
【図１３】実施例２におけるスコア計算用前処理フローチャートである。
【図１４】実施例２における符号化予測モード制御部の構成例を示す図である。
【図１５】従来の符号化予測モード決定処理フローチャートである。
【図１６】従来の符号化予測モード決定装置の構成例を示す図である。
【符号の説明】
【０１４３】
１      符号化予測モード決定装置
１０    符号化予測モード制御部
２０    フレーム内符号化予測モード決定部
３０    フレーム間符号化予測モード決定部
４０    コスト判定部
１００  フレーム番号カウンタ
１０１  フレーム間符号化予測モード情報保存バッファ
１０２  移動先推定部
１０３  重なり回数カウント部
１０４  重なり回数保存メモリ
１０５  スコアＳｂ計算部
１０６  マクロブロックスコアデータ保存メモリ
１０７  判定関数Ｃｈ計算部
１０８  予測残差移動先処理部
１０９  予測残差情報保存メモリ
【図１】
2006033451.tif 000003
【図２】
2006033451.tif 000004
【図３】
2006033451.tif 000005
【図４】
2006033451.tif 000006
【図５】
2006033451.tif 000007
【図６】
2006033451.tif 000008
【図７】
2006033451.tif 000009
【図８】
2006033451.tif 000010
【図９】
2006033451.tif 000011
【図１０】
2006033451.tif 000012
【図１１】
2006033451.tif 000013
【図１２】
2006033451.tif 000014
【図１３】
2006033451.tif 000015
【図１４】
2006033451.tif 000016
【図１５】
2006033451.tif 000017
【図１６】
2006033451.tif 000018