次に、本発明の実施の形態について図面と共に説明する。図1は本発明になる符号化装置の一実施の形態のブロック図を示す。同図中、図14と同一構成部分には同一符号を付してある。本実施の形態は、動き補償時間方向フィルタ処理(MCTF)を行う符号化装置において、MCTF部200の構成に特徴がある。
本実施の形態の符号化装置は、図1に示すように、入力管理部102、MCTF部200、量子化部104、エントロピー符号化部105及びMUX部106から構成されている。また、MCTF部200は、ME部201、MC部202、フレーム間符号化部203、制御部204、重なり特定部205、誤差補正部206、フレーム間符号化管理部207、逆MC部208及び画素補間部209によって構成される。
図2は本発明になる符号化装置の他の実施の形態のブロック図を示す。同図中、図1と同一構成部分には同一符号を付し、その説明を省略する。図2に示す他の実施の形態の符号化装置は、必ずしも復号時に可逆復号である必要がない場合の符号化装置である。この図2の符号化装置のMCTF部300は、図1のMCTF部200において設けられている重なり特定部205及び誤差補正部206を有しておらず、ME部201の出力信号は直接フレーム間符号化管理部302に供給され、制御部301には誤差補正部206の出力信号は供給されない。
必ずしも可逆復号である必要がない場合の図2の符号化装置においては、図1に示される重なり特定部205、誤差補正部206に関する処理を省略することで本発明を実現することができるため、図2の構成についての説明は省略し、以後の説明は、復号化側において可逆復号が必要となる場合の、図1の符号化装置の構成について行う。
図1において、入力管理部102は、入力される動画像フレーム101の管理を行う機能を有する。一般に、この入力管理部102は、入力される動画像フレーム101からGOPを構成するために必要なフレーム数を取得し、後述するME部201、MC部202、フレーム間符号化部203、画素補間部209に対して、処理対象となるフレームを供給する機能を有する。
ME部201は、入力管理部102から取得した少なくとも2フレーム(N−1フレームとNフレーム)を利用して、動き推定(ME)を行う。ここで、N−1フレーム側は動き推定を行う際に動きベクトル探索される側のフレームであるものとし、Nフレーム側は動き推定を行う際の基準となるフレームであるものとする。一般に、ME部201は、動き推定(ME)を行う際に、N−1フレームに対して領域外参照を許容するために、フレームの外側の領域を拡張するための所定のパディング処理を行う。しかし、動き推定(ME)を行う際に領域外参照を禁止するようにしてもよい。領域外参照を禁止した場合には、必ずしも所定のパディング処理を行わなくてもよい。
また、ME部201は、Nフレーム側では、フレームを所定の領域分割方法に基づいて各領域間が重複しないように複数の基準領域に分割する。所定の領域分割方法によって分割される基準領域の形状は、一般には所定の矩形ブロックであり、基準フレームは、この複数に分割された矩形ブロック基準領域の集合で表現できる。そして、ME部201は、このNフレーム側で分割した各基準領域に対して、対応する領域の位置をN−1フレーム内からそれぞれの基準領域に対して最も適合した領域を探索することで動きベクトル情報を求める。
ME部201は、求めた動きベクトル情報をMC部202、重なり特定部205、逆MC部208、エントロピー符号化部105にそれぞれ供給する。また、ME部201は、パディング処理後のN−1フレームをMC部202、逆MC部208に供給する機能を有してもよい。更に、ME部201は、Nフレームにおける基準領域の形状に関する情報をMC部202、重なり特定部205、逆MC部208にそれぞれ供給する機能を有してもよい。
ただし、ここでは以後の説明を簡単にするため、基準領域の形状は予め符号化装置及び復号化装置で決められた所定の4画素×4画素のブロック形状であるものとし、基準領域の形状情報の授受に関しては言及する必要がないものとする。
MC部202は、入力管理部102からNフレームとN−1フレームを取得する機能と、ME部201から動きベクトル情報を取得する機能を有する。また、MC部202は、必要であれば、ME部201からパディング処理後のN−1フレームを取得する機能を有してもよい。また、MC部202は、通常は、領域外参照を許容するために、フレームの外側の領域を拡張するための所定のパディング処理を、取得したN−1フレームに対して行う。しかし、領域外参照を禁止してもよく、その場合には、必ずしも所定のパディング処理を行わなくてもよく、入力管理部102から取得したN−1フレームをパディング後のN−1フレームとして利用する。
MC部202は、パディング処理後のN−1フレーム、対応する領域の形状情報、動きベクトル情報に基づいて動き補償フレーム(以降、MCフレーム)を生成する機能を有する。MC部202は、フレーム間符号化部203に対してN−1フレームを基に生成したMCフレームを供給する機能を有する。
フレーム間符号化部203は、入力管理部102からNフレーム、MC部202からMCフレームを取得し、その取得したMCフレームとNフレームに対して、所定のサブバンド分割によって帯域分割(ここでは、2分割)を行うと共に、得られるL成分をMCフレーム側に格納し、得られるH成分をNフレーム側に格納する。更に、フレーム間符号化部203は、Nフレーム側に格納したH成分フレームを誤差補正部206に通知すると共に、MCフレーム側に格納したL成分フレームを逆MC部208に通知する。
制御部204は、少なくともフレーム間符号化部203、誤差補正部206、フレーム間符号化管理部207、逆MC部208、画素補間部209の動作をそれぞれ制御する機能を有する。制御部204は、誤差補正部206と逆MC部208に対しては、逆MCする際の各基準領域の重なり順序情報を通知する機能を有してもよい。ただし、ここでは以後の説明を簡単にするため、各基準領域の重なり順序情報は、予め符号化装置及び復号化装置で決められた所定の順序であるものとし、各基準領域の重なり順序情報の授受に関しては言及する必要がないものとする。ここでの所定の順序は、画面の左上に配置される基準領域から右下に向かってラスタ順に処理を行うものとする。
制御部204は、現在処理しているフレームのGOP内の位置とフレーム間の帯域分割の状態から、処理後のフレームの格納位置を管理する。また、制御部204は、フレーム間符号化管理部207に対して、帯域分割の状態を示す帯域分割状態情報とフレーム格納位置情報を通知する。制御部204は、画素補間部209に対して、画素を補間する方法を切り替えるための画素補間モード情報を通知してもよい。
ただし、ここでは以後の説明を簡単にするため、画素補間モード情報は、予め符号化装置及び復号化装置で決められた所定の画素補間方法であるものとし、画素補間モード情報の授受に関しては言及する必要がないものとする。ここでの画素補間方法は、N−1フレーム側の補間対象となる位置の画素を用いるものとする。
重なり特定部205は、入力管理部102からNフレーム、ME部201から動きベクトル情報を取得し、その取得した動きベクトル情報と基準領域の形状情報から、ME部201でN−1フレームの動き補償を行った際に、多重参照される領域(以降、多重参照領域とする)を特定し、多重参照領域情報を生成する。
また、重なり特定部205は、サブバンド分割された2つの分割周波数帯域のうちの低域分割周波数帯域のL成分フレームに対して、取得した動きベクトル情報を逆方向に適用した動き補償、つまり逆動き補償(以降、逆MC)を行った際に、どの基準領域が、どの多重参照領域に逆MCされるかを特定し、対応する多重参照領域と複数の基準領域との関連を表すための情報である多重参照領域−基準領域関係情報を生成する。
更に、重なり特定部205は、多重参照領域に逆MCされる各基準領域において、各基準領域内におけるどの部分が多重参照領域に関与しているかを特定し、後述する誤差補正部206が誤差を補正する対象となる部分を示すための情報として誤差補正対象領域情報を生成する。重なり特定部205は、このようにして生成した多重参照領域情報、多重参照領域−基準領域関係情報及び誤差補正対象領域情報を、それぞれ誤差補正部206に供給する。
誤差補正部206は、重なり特定部205から供給された多重参照領域情報、多重参照領域−基準領域関係情報及び誤差補正対象領域情報を入力として受け、これらの入力情報からサブバンド分割された2つの分割周波数帯域のうちの高域分割周波数帯域のH成分フレームの多重参照領域と関係している基準領域中の誤差補正対象領域に対して、誤差を補正するための誤差情報を算出する。誤差情報の算出過程の詳細は後述するためここでは省略する。
また、誤差補正部206は、算出した誤差情報を、フレーム間符号化部203から取得したH成分フレームの誤差補正が必要な領域に対して付加し、その誤差補正を行ったH成分フレームをフレーム間符号化管理部207に通知する。
フレーム間符号化管理部207は、誤差補正部206から誤差補正を行ったH成分フレームを取得し、画素補間部209から画素補間を行ったL成分フレームを取得し、制御部204から帯域分割状態情報とフレーム格納位置情報とを取得する。その後、フレーム間符号化管理部207は、帯域分割状態情報とフレーム格納位置情報とに基づいて、L成分フレーム、H成分フレームの正しい位置への格納及び通知を行う。
フレーム間符号化管理部207は、上記の各フレームの通知先を帯域分割状態情報に基づいて決定し、GOP内のフレーム間に対して帯域分割を行う必要がある場合には、再度入力フレームとして入力管理部102に通知し、帯域分割を行う必要がない場合には出力フレームとして量子化部104に通知する。
逆MC部208は、入力管理部102からNフレーム、ME部201から動きベクトル情報、フレーム間符号化部203からL成分フレームを取得し、取得した動きベクトル情報と基準領域の形状情報から、帯域分割後のL成分フレームに対して、所定の各基準領域の重なり順序に基づき、取得した動きベクトル情報を逆方向に適用して動き補償を行う機能、つまり逆MCを行い、逆MC後のL成分フレームを生成する。ここで、逆MCを行う際に用いる各基準領域の重なり順序情報を、制御部204から取得するようにしてもよい。
そして、逆MC部208は、生成した逆MC後のL成分フレームを画素補間部209に供給する。逆MCによって画素が埋められていない(配置されていない)領域に対しては、画素補間部209に対して画素補間領域情報を供給するようにしてもよい。ここでは、処理を簡単にするために、画素補間領域情報は、逆MC後のL成分フレームに−1の値を格納し、画素補間部209では、この情報を基にして画素補間領域情報を取得することとする。後述において、この画素補間領域情報の授受に関しては言及する必要がないものとする。
画素補間部209は、入力管理部102からN−1フレーム、逆MC部208から逆MC後のL成分フレームを取得し、その取得した逆MC後のL成分フレームにおいて、逆MCによって画素が埋められていない領域に関する情報である画素補間領域情報に基づいて画素の補間を行う。画素が埋められていない領域の判定は、制御部204から取得する、もしくは逆MC部208から前記画素補間領域情報を取得してもよい。画素補間部209による画素補間後のL成分フレームは、フレーム間符号化管理部207に供給される。
量子化部104は、フレーム間符号化管理部207から出力フレームとして得られる係数情報を取得し、その取得した係数情報に対して、所定の量子化を行う。量子化後の係数情報は、エントロピー符号化部105に出力される。
エントロピー符号化部105は、量子化部104からの量子化後の係数情報と、ME部201からの動きベクトル情報とを入力として受け、その入力された各情報に対して各所定のエントロピー符号化を行い、係数情報ビット列、動きベクトル情報ビット列を生成した後、MUX部106に対して生成した係数情報ビット列及び動きベクトル情報ビット列を出力する。
MUX部106は、エントロピー符号化部105から出力された係数情報ビット列と動きベクトル情報ビット列を取得し、その取得した係数情報ビット列と動きベクトル情報ビット列とに、復号時に必要となる各種の制御情報を多重化(MUX)してビットストリーム107を生成し、符号化装置の出力信号として出力する。
図3は図1に示した本発明の符号化装置の一実施の形態の動作説明用フローチャートを示す。次に、この図3を用いて図1に示した本発明の符号化装置の一実施の形態の動作を説明する。まず、図1の入力管理部102は、入力される動画像フレーム101から動画像フレームを取得し(ステップS201)、1GOPを満たす分の動画像フレームを蓄積する(ステップS202)。
続いて、入力管理部102は、MCTFの対象となるフレーム群であるN−1フレームとNフレームをセットし(ステップS203)、それらをME部201、MC部202、フレーム間符号化部203、重なり特定部205、逆MC部208及び画素補間部209にそれぞれ供給する。
ME部201は、入力管理部102から取得したN−1フレームとNフレームを用いてMEを行い、動きベクトルを求める(ステップS204)。ここで、N−1フレーム側は動き推定を行う際に動きベクトル探索される側のフレームであるものとし、Nフレーム側は動き推定を行う際の基準となるフレームであるものとする。ME部201によって求めた動きベクトル情報は、MC部202、重なり特定部205、逆MC部208及びエントロピー符号化部212にそれぞれ出力される。
ME部201によって動きベクトル情報が求まると、MC部202は、ME部201から取得した動きベクトル情報に基づいて、入力管理部102から取得したN−1フレームに対して必要に応じてパディング処理を行った後に、MCを行ってMCフレームを作成する(ステップS205)。MC部202は、作成したMCフレームをフレーム間符号化部203に出力する。
フレーム間符号化部203は、MC部202から供給されたMCフレームと、入力管理部102から取得したNフレームとを用いてフレーム間符号化を行い、L成分フレームとH成分フレームを生成する(ステップS206)。生成したH成分フレームは、誤差補正部206に供給され、生成したL成分フレームは、逆MC部208に供給される。
重なり特定部205は、入力管理部102からNフレーム、ME部201から動きベクトル情報を取得する。必要であれば、Nフレームを用いて基準領域の形状情報を求める。これらの情報から重なり特定部205は、多重参照領域を特定し(ステップS207)、多重参照領域情報、多重参照領域−基準領域関係情報及び誤差補正対象領域情報をそれぞれ生成する。その後、重なり特定部205は、生成した多重参照領域情報、多重参照領域−基準領域関係情報及び誤差補正対象領域情報を誤差補正部206に出力する。
次に、誤差補正部206は、重なり特定部205から取得した各情報に基づき、フレーム間符号化部203からのH成分フレームの多重参照領域内の画素に対して誤差成分の補正を行う(ステップS208)。誤差成分の補正を行う際に、必要であれば、制御部204から逆MCする際の各基準領域の重なり順序情報を取得し、各基準領域の重なり順序情報を用いて誤差成分の補正を行う。誤差補正部206は、誤差成分の補正を行ったH成分フレームをフレーム間符号化管理部207に出力する。
その後、フレーム間符号化部203によって生成された帯域分割後のL成分フレームに対して、逆MC部208は、ME部201から取得した動きベクトル情報を逆方向に適用して動き補償を行い(つまり、逆MCを行い)、逆MC後のL成分フレームを生成する(ステップS209)。ここで、逆MC部208は、逆MCによって画素が埋められていない領域に対しては、逆MC後のL成分フレームに−1の値を格納したものを画素補間領域情報として出力する。逆MCを行う際に、必要であれば、制御部204から逆MCする際の各基準領域の重なり順序情報を取得し、各基準領域の重なり順序情報に従って逆MCを行う。逆MC部208は、逆MC後のL成分フレーム及び画素補間領域情報を画素補間部209に出力する。
これにより、画素補間部209は、逆MC部208から取得した逆MC後のL成分フレームに対して、逆MCで埋めきれなかった画素の補間を行う(ステップS210)。すなわち、画素補間部209は、逆MC後のL成分フレームにおいて、−1の値が格納された位置に対して画素の補間を行う。画素補間部209は、画素補間後のL成分フレームをフレーム間符号化管理部207に供給する。
フレーム間符号化管理部207は、誤差補正部206からの誤差補正後のH成分フレームと、画素補間部209からの画素補間後のL成分フレームとを取得すると、制御部204から取得した帯域分割状態情報とフレーム格納位置情報のうち、帯域分割状態情報に基づいてL成分フレーム、H成分フレームの正しい位置への通知先を決定して格納し、フレーム格納位置情報に基づいて、GOP内のフレーム間に対して帯域分割を行うかどうか、すなわち、所定のオクターブ分割数であるかを判定する(ステップS211)。
フレーム間符号化管理部207は、所定のオクターブ分割数に達していない場合には、再度入力フレームとして入力管理部102に通知する。また、所定のオクターブ分割数に達しており帯域分割を行う必要がない場合には、係数情報を出力フレームとして量子化部104に通知する。
量子化部104は、フレーム間符号化管理部207から取得した出力フレームとして得られる係数情報に対して、所定の量子化を行う(ステップS212)。エントロピー符号化部105は、ME部201から入力された動きベクトル情報と、量子化部104から入力された量子化後の係数情報に対してそれぞれ所定のエントロピー符号化を行い(ステップS213)、動きベクトル情報ビット列と係数情報ビット列とを生成して、それら生成した動きベクトル情報ビット列と係数情報ビット列をMUX部106に供給する。
MUX部106は、動きベクトル情報ビット列と係数情報ビット列とを、復号時に必要となる各種の制御情報と共に、符号化出力を行うために多重化し、ビットストリーム107を構成する(ステップS214)。MUX部106は、生成したビットストリーム107を出力することで、一連の符号化処理が完了する。
以上のようなステップS201〜S214からなる符号化方法に基づいて動作する、図1のような構成を備えた符号化装置を提供することで、MCTFを行う際に画素間の多重参照によって生じる誤差成分を考慮して、時間方向に対するサブバンド分割による帯域分割を行う際に、この誤差成分を帯域分割法の係数に反映し、復号時に発生する誤差を相殺することで、復号化側で逆MCTFを行った場合でも可逆復号を可能とする構成を維持しつつ、復号時に係数間の依存関係を極力排除できるような符号化出力を得ることができる符号化装置を提供することが可能となる。
次に、フレーム間に対して行われるサブバンド分割において、直交ウェーブレット(wavelet)変換のHaar基底を用いた場合の一般的なオクターブ分割の過程について、図4と共に説明する。まず、図4(A)から同図(C)までがオクターブ分割の1階分解を行う際の処理過程を示している。ここで、図4に示されているフレームは、0から7番目までの8フレームを1GOPとし、フレーム間のオクターブ分割はこの1GOPを単位として行うものとする。また、最初のオクターブ分割1階分解を行う際の対象となるフレーム区間は、1GOP全体であるものとする。
まず、ここではwaveletの直交基底にHaar基底を用いているため、図4(A)において、2フレームを単位として対応する空間位置同士の画素間で直交変換を行う。この直交変換により、L成分フレームとH成分フレームが、図4(B)に示すように生成される。ここで、「L1」はオクターブ分割1階分解のL成分フレームであり、「H1」はオクターブ分割1階分解のH成分フレームであることを表し、その後の「−番号」は、GOP内のフレーム位置を表す。
従って、例えば、「L1−0」は、L成分フレーム、オクターブ分割1階分解、GOP内の0番目のフレームであり、また、例えば、「H1−3」は、H成分フレーム、オクターブ分割1階分解、GOP内の3番目のフレームであることを表す。通常、Haar基底による直交変換では、2フレームを単位として変換を行い、図4(B)に示すように、偶数番目(フレーム位置が0を含む偶数番号)のフレームにL成分、奇数番目(フレーム位置が奇数番号)のフレームにH成分を格納する。
その後、必要であれば、フレームインターリーブを行う。フレームインターリーブは、図4(C)に示すように、偶数番目に格納されているL成分フレームを現在オクターブ分割の対象となっているフレーム区間の半分から前半に配置し、奇数番目に格納されているH成分フレームを現在オクターブ分割の対象となっているフレーム区間の後半に配置する。その後、次のオクターブ分割の対象となるフレーム区間を、図4(D)に示すようにL成分フレームが格納されている0から3フレーム目までとする。
次の、図4(D)から同図(F)までは、オクターブ2階分解の処理過程を示している。このオクターブ2階分解では、オクターブ1階分解の場合と同様に、図4(D)に示す4フレーム分のL成分フレームに対して、2フレームを単位として対応する空間位置同士の画素間で直交変換を行い、図4(E)に示すようにL2−0、H2−1、L2−2、H2−3を生成する。
その後、必要であれば、フレームインターリーブを行う。このフレームインターリーブは、図4(F)に示すように偶数番目に格納されているL成分フレームを現在オクターブ分割の対象となっているフレーム区間の半分から前半に配置し、奇数番目に格納されているH成分フレームを現在オクターブ分割の対象区間となっているフレーム区間の後半に配置する。
以下同様に、図4(G)、(H)に示すようにL成分フレームL2−0及びL2−1に対してオクターブ3階分解を行い、最終的に図4(I)に示すような1つのL成分フレームL3−0と7つのH成分フレームH3−1、H2−1、H2−3、H1−1、H1−3、H1−5及びH1−7からなる1GOP分の係数フレーム列を得ることで、1GOPのフレーム間符号化が完了する。
次に、本発明のMCTFの処理過程について図5と共に説明する。図5では、図4に示したような一般的なオクターブ分割の処理過程とは異なり、図5(A)に示すように2フレームを単位として、まず偶数フレームに対して奇数フレームを利用してME及びMCを行う。なお、ここでは、図4と同様に、0から7番目までの8フレームを1GOPとする。
図5(A)に示す1GOPを構成する8フレームに対してME及びMCを行い、そのうちMC後のフレームは、図5(B)に示すように、偶数番号0,2,4,6のフレーム位置に格納する。その後は、ME及びMCを行った後の8フレームに対して、図4で示した通常のオクターブ分割と同様に2フレームを単位として直交変換を行って図5(C)に示すように、4つのL成分フレームと4つのH成分フレームを得る。ここで、偶数番号0,2,4,6のフレーム位置のL成分フレームは、図5(B)に示したように偶数番号のフレーム位置に格納されたMC後のフレームである。
その後、図5(D)に示すようにフレームインターリーブを行う。このフレームインターリーブにより、偶数番号のフレーム位置に格納されているL成分フレームが、現在MCTFの対象となっているフレーム区間の半分から前半に配置され、奇数番号のフレーム位置に格納されているH成分フレームが、現在MCTFの対象となっているフレーム区間の半分から後半に配置される。
次に、図5(E)に示すように、フレームインターリーブ後のL成分フレーム列に対して2フレームを単位として逆MCを行う。続いて、この逆MC後のL成分フレーム列に対して、上記と同様にしてME及びMC、直交変換、フレームインターリーブ、逆MCの処理を繰り返すことで、最終的に図5(F)に示すような、1つのL成分フレームL3−0と7つのH成分フレームH3−1、H2−1、H2−3、H1−1、H1−3、H1−5及びH1−7からなる1GOP分の係数フレーム列を得ることで、1GOPのフレーム間符号化が完了する。
ここで、従来法との主な相違は、フレーム間の直交変換を行う前後にME/MC及び逆MCを行うところにある。オクターブ分割後のL成分フレーム列を利用して、時間方向のスケーラビリティを実現しようとした場合、従来法が生成するL成分フレームは、フレーム間の動きを考慮して直交変換が行われないため、フレーム間で動きが大きかった部分では輪郭がはっきりとしない、ぶれた画像となるため、フレームレートを落として表示する際のフレームとしては必ずしも有効なフレームとはいえなかった。
これに対し、本発明では、ME/MCが行われたフレーム間の直交変換を行うことでフレーム間の動きによる影響を最小限に止めると共に、直交変換後のL成分フレームに対してそれぞれのフレームが属していたフレーム位置、ここでは偶数番目のフレームの状態に戻すために逆MCを行う。このME/MC及び逆MCにより直交変換後のフレーム内の劣化を抑え、逆MC後のL成分フレームは、ぶれのない良好な画像を得ることができる。このようにして生成した逆MC後のL成分フレーム列は、従来法と比べてフレームレートを落として表示する際のフレームとして、より適したフレームとなる。
次に、MCTFの処理過程について、図6及び図7を用いて更に詳細に説明する。図6は、MCTFの処理過程において、N−1フレームに対してMCを行い、MC後のフレームとNフレーム間において空間方向のフレーム間で対応するブロック内の対応する画素同士を直交変換するまでの過程を表す。
図6(A)において、元のN−1フレーム601の周囲に、フレームの領域外参照を可能にするために拡張したパディング領域602がある。このN−1フレーム601、パディング領域602は、MCフレームを作成する際に参照される側のフレームである。一方、図6(B)はNフレーム607を示しており、ブロック608、610などを含む。
図6(A)に示すN−1フレーム601には、MEにより特定したNフレーム607内のブロック608の参照領域603や、MEにより特定したNフレーム607内のブロック610の参照領域604がある。また、参照領域603と604には共に参照する多重参照領域605がある。また、N−1フレーム601には、Nフレーム607の各基準領域によって参照されることのない非参照領域606がある。この非参照領域606は、逆MC後に画素の補間が行われる領域である。
一方、図6(B)に示すNフレーム607は、MCを行う際の基準となるフレームである。Nフレーム607内のブロック608は参照領域603に対する基準領域、ブロック610は参照領域604に対する基準領域である。ここで説明を簡単にするために、基準領域の形状は4画素×4画素の矩形形状であるものとする。
N−1フレーム601に対してMCを行った後のフレームは、図6(C)に612で示される。このMC後のフレーム612内の領域613は、参照領域603がMCによって再配置された領域であり、領域615は、参照領域604がMCによって再配置された領域である。また、MC後のフレーム612内の領域614、616は、それぞれMCによって多重参照領域605が複製された領域である。
また、図6(B)に示すNフレーム607内の領域609は、上記の多重参照領域複製領域614に対応する領域であり、複製された多重参照領域と直交変換を行う基準領域である。同様に、Nフレーム607内の領域611は、上記の多重参照領域複製領域616に対応する領域であり、複製された多重参照領域と直交変換を行う基準領域である。
以上のような各領域に対し、まず、図6(A)に示すN−1フレーム601に対してMCを行うと、図6(C)に612で示すようなMCフレームを得る。MCでは、Nフレーム607の基準領域608に対応する参照領域603を、MEによって求めた動きベクトルにより特定し、基準領域608に対応する空間位置の領域613に再配置する。同様に、基準領域610に対応する参照領域604を、基準領域610に対応する空間位置の領域615に再配置する。Nフレーム607に含まれる各基準領域に対して同様にMCを行うことにより、MCフレーム612を得ることができる。
このようにして得られたMCフレーム612と、Nフレーム607に対して、対応するブロックの画素同士を直交変換する。直交変換後のL成分及びH成分の格納や、逆MCの処理過程については、図7を用いて説明する。
図7において、直交変換後のH成分の係数情報を格納したフレーム(H成分フレーム)は(B)に701で示され、図6のNフレーム607の位置に格納する。図7(B)の各領域702〜705の空間位置は、図6(B)の各領域608〜611に対応し、図7の領域702は領域608に、領域703は領域609に、領域704は領域610に、領域705は領域611にそれぞれ対応する。格納されている情報は、直交変換後のH成分の係数情報となっている。
また、直交変換後のL成分の係数情報を格納したフレーム(L成分フレーム)は、図7(C)に706で示され、図6(C)に示したMC後のフレーム612に格納しているものとする。L成分フレーム706の各領域707〜710の空間位置は、図6(C)に示したMC後のフレーム612の各領域613〜615に対応し、領域707は領域613に、領域708は領域614に、領域709は領域615に、領域710は領域616にそれぞれ対応する。L成分フレーム706の各領域707〜710に格納されている情報は、直交変換後のL成分の係数情報となっている。
また、L成分フレーム706を逆MCして生成したL成分フレームは、図7(A)に711で示され、そのL成分フレーム711内の領域712、713、714及び715のうち、領域712は、L成分フレーム706内の領域707が逆MCによって再配置された領域であり、領域713は、領域709が逆MCによって再配置された領域である。また、領域714は、MCを行う前のN−1フレームの多重参照領域605に対応する領域であり、逆MCを行う際に、この領域に対して領域708及び710の領域が重複する領域である。また、領域715は、逆MCによって領域が再配置されず、何らかの画素補間が必要な領域である。
図6(C)、(B)に示したMCフレーム612とNフレーム607との間で、対応するブロックの画素同士で直交変換を行い、直交変換によって生成したL成分は、図7(C)に示すL成分フレーム706に格納する。また、直交変換によって生成したH成分は、図7(B)に示すH成分フレーム701に格納する。その後、L成分フレーム706に対して逆MCを行うと、図7(A)に711で示すような逆MC後のL成分フレームが得られる。逆MCでは、MEによって求めた動きベクトルをMCの時とは逆方向に利用することでL成分フレーム706内の領域707を再配置先である領域712に格納する。同様に、L成分フレーム706内の領域709を再配置先である領域713に格納する。
ここで、逆MCによって領域707と領域709が重複する領域714は、重複している領域708と領域710に基づいて所定の方法により重複領域714に格納する係数情報を決定し、重複領域714に格納する。通常は、逆MCによって再配置する領域の所定の重ね合わせ順序に従って、重複領域714に対応する領域の画素は上書きすることで格納する係数情報を決定する。
本発明において、逆MCによって再配置する領域の所定の重ね合わせ順序は、画面では左上に配置される基準領域から右下に配置される基準領域へ向かってラスタ順に処理を行うものとする。よって、重複領域714は、所定の重ね合わせ順序がラスタ順であるため、領域708が格納された後、領域710によって上書きされることで格納する係数情報が確定する。その後、領域715のような領域に対して、所定の画素補間方法に基づいて画素補間を行う。ここでは、元のN−1フレーム601内に存在する、領域715と同じ空間方向の位置に対応する非参照領域606の画素を補間画素として利用する。以上のような処理を行うことで、フレーム間のMCTF符号化が完了する。
次に、本発明におけるMCTFの多重参照領域に対する処理過程について、従来法との違いを明確にするため、図8から図12を用いて説明する。まず、従来法による多重参照領域の処理過程について、図8、図9、図10を用いて以下に説明する。図8は、従来法におけるMCTF符号化の処理過程を表している。図8(A)は2つの基準領域801と802からなるN−1フレームを示しており、このN−1フレームに対してMCを行うと、図8(B)に示すようになる。
ここで、図8(A)に示すN−1フレームは、2つの基準領域801及び802から参照されているため、多重参照領域が存在する。この多重参照領域内のある1画素をここではdとする。この画素dは、多重参照領域内の画素であるため、MCにより図8(B)に示すように、daとdbに複製される。これらの画素d、da及びdbの間では次式の関係が成り立つ。
d=da=db (1)
一方、図8(C)に示すNフレームの画素のうち、図8(B)に示したMC後のN−1フレーム中の画素da及びdbに対応する画素を、それぞれa及びbとすると、それらの画素a及びbの間には、通常、次式(2)が成り立っているものとして話を進める。
a≠b (2)
ここで、図8(B)に示したMC後のN−1フレームと、図8(C)に示したNフレームとの間で直交変換を行うと、daとa、dbとbとの間で直交変換が行われる。それぞれのL成分及びH成分は、式(3)〜式(6)を適用してdaとaからはLaとHa、dbとbからはLbとHbがそれぞれ求まる。
ここで、直交変換の変換基底はHaar基底であるものとする。求めたL成分は図8(D)に示すように、La、Lbの位置に格納する。また、求めたH成分は図8(E)に示すように、Ha、Hbの位置に格納する。ここで、式(1)及び式(2)であることから、LaとLbの間には式(7)が成り立つ。また、HaとHbの間には、式(8)が成り立つ。
La≠Lb (7)
Ha≠Hb (8)
その後、図8(D)に示した直交変換後のL成分フレームに対して逆MCを行う。この逆MCを行う際に、LaとLbは格納先が重複するため、所定の方法により重複領域に格納する係数情報を決定する。図8(F)は、重複領域に格納する係数情報としてLaを採用した場合のL成分フレームである。また、図8(G)は、重複領域に格納する係数情報としてLbを採用した場合のL成分フレームである。以上のような符号化処理を行うことで、従来法におけるMCTF符号化が完了する。
図9は従来法のMCTF復号化において、重複領域の係数情報としてLaを採用した場合の処理過程を示す図である。図9(A)は、(N−1)フレーム側のL成分フレームを示しており、このL成分フレームに対してMCを行うと、図9(B)に示すようになる。ここで、図9(A)のL成分フレーム中の画素Laは、符号化時に複数の領域から格納される多重領域に格納された画素であるため、図9(B)に902で示すようにMCによってLaが複製される。本来であれば、画素901の右側の画素902はLbであるが、符号化の逆MCによりLaとなっている。
一方、図9(C)は、Nフレーム側のH成分フレームを示しており、領域903内の画素Haと領域904内の画素Hbは、それぞれ図9(C)の画素901、902のLaに対応する。ここで、図9(B)及び(C)に示したフレーム間で逆直交変換を行うと、画素901のLaと領域903内の画素Haとの間で、画素902のLaと領域904内の画素Hbとの間でそれぞれ逆直交変換が行われる。
この場合、それぞれの逆直交変換後の各画素は、通常、次式(9)〜(12)を適用することで求まる。
しかし、本来の対応関係ではないLaとHbからは、正しい復号結果を得ることができない。そこで、まず、正しい対応関係である画素901のLaと領域903の対応する画素Haとから、式(10)を適用して図9(D)に示すように、d
aを復号化する。同様に、正しい対応関係である画素901のLaと領域903の対応する画素Haとから、式(9)を適用して図9(E)に示すように、aを復号化する。このようにして得られたd
aを次式(13)を適用することでbを復号化することができる。
ここで、式(10)及び式(9)は本来の逆直交変換の式であるが、式(13)はd
aからbを復号化するために、本来の逆直交変換の式(11)を変形したものになっているため、従来の逆直交変換をそのまま利用することが難しい。また、復号化する際に、復号する係数の順序に依存関係が存在するという問題がある。
上記の逆直交変換が完了すると、図9(D)に示したフレームに対して逆MCを行うことにより、図9(F)に示したようなフレームを得る。逆MCを行う際に、重複領域に対しては、復号化したdaを採用するような所定の方法により重複領域に格納する係数情報を決定する必要がある。以上のような処理を行うことで、従来法のMCTF復号化において、重複領域の係数情報としてLaを採用した場合の復号化が完了する。
次に、従来法のMCTF復号化において、重複領域の係数情報としてLbを採用した場合の処理過程について、図10と共に説明する。図10(A)は、(N−1)フレーム側のL成分フレームを示しており、このL成分フレームに対してMCを行うと、図10(B)に示すようになる。ここで、図10(A)のL成分フレーム中の画素Lbは、符号化時に複数の領域から格納される多重領域に格納された画素である。Lbは多重領域の画素であるため、図10(B)に示す画素1002としてMCによってLbが複製される。本来であれば、画素1002の左側の画素1001はLaであるが、符号化の逆MCによりLbとなっている。
一方、図10(C)は、Nフレーム側のH成分フレームを示しており、領域1003内の画素Haと領域1004内の画素Hbは、それぞれ図10(C)の画素1001、1002のLbに対応する。ここで、図10(B)及び(C)に示したフレーム間で逆直交変換を行うと、画素1001のLbと領域1003内の画素Haとの間で、画素1002のLbと領域1004内の画素Hbとの間でそれぞれ逆直交変換が行われる。
この場合、それぞれの逆直交変換後の各画素は、通常、前記式(9)〜(12)を適用することで求まる。しかし、本来の対応関係ではないLbとHaからは、正しい復号結果を得ることができない。そこで、まず、正しい対応関係である画素1002のLbと領域1004の対応する画素Hbとから、式(12)を適用して図10(D)に示すように、dbを復号化する。同様に、正しい対応関係である画素1002のLbと領域1004の対応する画素Hbとから、式(11)を適用して図10(E)に示すように、bを復号化する。
このようにして得られたdbを次式(14)を適用することでaを復号化することができる。
ここで、式(12)及び式(11)は本来の逆直交変換の式であるが、式(14)はd
bからaを復号化するために、本来の逆直交変換の式(9)を変形したものになっているため、従来の逆直交変換をそのまま利用することが難しい。また、復号化する際に、復号する係数の順序に依存関係が存在するという問題がある。
ここでは、逆直交変換を行う際に、復号順序がラスタ順で行われているとすると、aの復号を何らかの手段で一時的に処理をスキップしなければならないことを検知し、処理をスキップした上でdbとbを復号化し、aの復号を行うための情報が得られたことを確認する何らかの手段によって復号できるかどうかを判定した後に、復号化を行わなければならない。
逆直交変換が完了すると、図10(D)に示した逆直交変換されたフレームに対して逆MCを行って同図(F)に示す復号化されたフレームを得る。ここで、逆MCを行う際に、重複領域に対しては、復号化したdbを採用するような所定の方法により重複領域に格納する係数情報を決定する必要がある。以上のような処理を行うことで、従来法のMCTF復号化において、重複領域の係数情報としてLbを採用した場合の復号化が完了する。
上述した従来法のMCTF符号化及びMCTF復号化における各種の問題を改善するため、本発明では、図1のようなMCTF符号化装置の構成をとると共に、多重参照領域部分に対して図11及び図12のようなMCTF処理を行う。
図11(A)は2つの基準領域1101と1102からなるN−1フレームを示しており、このN−1フレームに対してMCを行うと、図11(B)に示すようになる。ここで、図11(A)に示すN−1フレームは、2つの基準領域1101及び1102から参照されているため、多重参照領域が存在する。この多重参照領域内のある1画素を、ここでは図11(A)に示すようにdとする。この画素dは、多重参照領域内の画素であるため、MCにより図11(B)に示すように、daとdbに複製される。これらの画素d、da及びdbの間では、前記式(1)の関係が成り立つ。
一方、図11(C)に示すNフレームの画素のうち、図11(B)に示したMC後のN−1フレーム中の画素da及びdbに対応する画素を、それぞれa及びbとすると、それらの画素a及びbの間には、通常、前記式(2)が成り立っているものとして話を進める。
ここで、図11(B)に示したMC後のN−1フレームと、図11(C)に示したNフレームとの間で直交変換を行うと、daとa、dbとbとの間で直交変換が行われる。それぞれのL成分及びH成分は、前記式(3)〜式(6)を適用してdaとaからはLaとHa、dbとbからはLbとHbがそれぞれ求まる。ここで、直交変換の変換基底はHaar基底であるものとする。求めたL成分は図11(D)に示すように、La、Lbの位置に格納し、求めたH成分は図11(E)に示すように、Ha、Hbの位置に格納する。ここで、図8の場合と同様に、式(1)及び式(2)であることから、LaとLbの間には前記式(7)が成り立ち、HaとHbの間には、前記式(8)が成り立つ。
その後、図11(D)に示した直交変換後のL成分フレームに対して逆MCを行う。この逆MCを行う際に、LaとLbは格納先が重複するため、所定の方法により重複領域に格納する係数情報を決定する。図11(F)は、重複領域に格納する係数情報としてLaを採用した場合のL成分フレームである。
本来であれば、復号化時にLbとHbに対して逆直交変換を行うことでdbとbを得ることができるが、Laを採用したことにより、次式(15)で表わされる誤差ebが生じる。
そこで、式(15)を用いて誤差e
bを求め、この誤差e
bをHbに対して次式(16)を用いて補正することでHb’を得る。
Hb’=Hb+eb (16)
その後、補正後のHb’を図11(G)に示すように、元のHbの位置に格納する。このような誤差補正処理を行うことで、復号化時に発生する誤差を相殺することができる。
図12は図11の逆MCを行う際の重複領域にLbを採用した場合の処理過程を示した図である。同図中、図11と同一部分には同一符号を付し、その説明を省略する。図12(F)は、重複領域に格納する係数情報としてLbを採用した場合のL成分フレームを示す。
本来であれば、復号化時にLaとHaに対して逆直交変換を行うことでdaとaを得ることができるが、Lbを採用したことにより、次式(17)で表わされる誤差eaが生じる。
そこで、式(17)を用いて誤差e
aを求め、この誤差e
aをHaに対して次式(18)を用いて補正することでHa’を得る。
Ha’=Ha+ea (18)
その後、補正後のHa’を図12(G)に示すように、元のHaの位置に格納する。このような誤差補正処理を行うことで、復号化時に発生する誤差を相殺することができる。以上のような符号化処理を行うことで、本発明におけるMCTF符号化が完了する。
図13は本発明になる符号化装置の他の実施の形態を備えた情報処理装置の一例のブロック図を示す。同図において、情報処理装置1300は、入力装置1301、出力装置1302、中央処理制御装置1303、外部記憶装置1304、一時記憶装置1305、通信装置1306から構成されており、コンピュータである中央処理制御装置1303によりMCTF処理を行う符号化装置の機能をプログラムにより実現させるものである。
ここで、上記のプログラムは、記録媒体から読み取られて中央処理制御装置1303に取り込まれてもよいし、ネットワークを介して通信装置1306により受信されて中央処理制御装置1303に取り込まれてもよい。
中央処理制御装置1303は、上記のプログラムにより、入力管理部102に相当する入力管理手段1401、ME部201に相当するME手段1402、MC部202に相当するMC手段1403、フレーム間符号化部203に相当するフレーム間符号化手段1404、制御部204に相当する制御手段1405、重なり特定部205に相当する重なり判定手段1406、誤差補正部206に相当する誤差補正手段1407、フレーム間符号化管理部207に相当するフレーム間符号化管理手段1408、逆MC部208に相当する逆MC手段1409、画素補間部209に相当する画素補間手段1410、量子化部104に相当する量子化手段1411、エントロピー符号化部105に相当するエントロピー符号化手段1412及びMUX部106に相当するMUX手段1413をソフトウェア処理にて実現する。