(57)【特許請求の範囲】
【請求項１】
複数のフレームの画像情報を入力する入力手段と、
前記入力手段によって入力された複数のフレームのそれぞれをブロックに分割する分割手段と、
前記分割手段で得られた各ブロックを画面内符号化モード又は画面間符号化モードで符号化する符号化手段と、
前記複数のフレームにおいて一定数のフレーム間隔で位置するフレームＩの符号化モードを前記画面内符号化モードに設定し、それ以外のフレームＰの符号化モードを前記画面内符号化モード又は前記画面間符号化モードに選択的に設定する符号化モード設定手段と、
連続する複数のフレームＰに周期的に割当てられる複数種類のモードパターンを記憶する記憶手段と、
前記記憶手段に記憶された前記モードパターンを示す情報を前記符号化した複数のフレームに多重化して出力する出力手段とを有し、
前記符号化モード設定手段は、前記モードパターンに基づいて各フレームＰの符号化モードを設定し、前記複数種類のモードパターンのそれぞれは、１つのフレームＰを構成する複数のブロックの夫々が前記画面内符号化モードを行うべきか前記画面間符号化モードを行うべきかを示す情報を含むことを特徴とする画像処理装置。
【請求項２】
前記符号化手段は、ＭＰＥＧ規格に準拠した符号化処理を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
複数のフレームの画像情報において、一定数のフレーム間隔で位置するフレームＩが画面内符号化モードで符号化され、それ以外のフレームＰの各ブロックが画面内符号化モード又は画面間符号化モードを選択的に用いて符号化されており、符号化されたフレームＰのそれぞれのブロックが連続する複数のフレームＰに周期的に割当てられる複数種類のモードパターンに基づいて画面内符号化モード又は画面間符号化モードで符号化された複数のフレームと、当該フレームＰに対応するモードパターンとを入力する入力手段と、
前記符号化された複数のフレームのヘッダに記録されている各ブロックの符号化モードと前記対応するモードパターンとを比較することにより符号化モードの誤りを判定する判定手段と、
前記判定手段から通知された判定結果に基づいて前記符号化モードの誤りを補正し、前記符号化された複数のフレームを復号化する復号化手段と、
を有することを特徴とする画像処理装置。
【請求項４】
前記モードパターンは、前記符号化された複数のフレームに含まれる情報を復号することで得られることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
複数のフレームの画像情報を入力する入力工程と、
前記入力された複数のフレームのそれぞれをブロックに分割する分割工程と、
前記分割工程で得られた各ブロックを画面内符号化モード又は画面間符号化モードで符号化する符号化工程と、
前記複数のフレームにおいて一定数のフレーム間隔で位置するフレームＩの符号化モードを前記画面内符号化モードに設定し、それ以外のフレームＰの符号化モードを前記画面内符号化モード又は画面間符号化モードに選択的に設定する符号化モード設定工程と、
連続する複数のフレームＰに周期的に割当てられる複数種類のモードパターンを記憶する記憶工程と、
前記記憶工程で記憶された前記モードパターンを示す情報を前記符号化した複数のフレームに多重化して出力する出力工程とを有し、
前記符号化モード設定工程は、前記モードパターンに基づいて各フレームＰの符号化モードを設定し、前記複数種類のモードパターンのそれぞれは、１つのフレームＰを構成する複数のブロックの夫々が前記画面内符号化モードを行うべきか前記画面間符号化モードを行うべきかを示す情報を含むことを特徴とする画像処理方法。
【請求項６】
請求項５に記載の画像処理方法を、コンピュータに実行させる制御プログラムを記憶したことを特徴とするコンピュータにより読取り可能な記憶媒体。
【請求項７】
複数のフレームの画像情報において、一定数のフレーム間隔で位置するフレームＩが画面内符号化モードで符号化され、それ以外のフレームＰの各ブロックが画面内符号化モード又は画面間符号化モードを選択的に用いて符号化されており、符号化されたフレームＰのそれぞれのブロックが連続する複数のフレームＰに周期的に割当てられる複数種類のモードパターンに基づいて画面内符号化モード又は画面間符号化モードで符号化された複数のフレームと、当該フレームＰに対応するモードパターンとを入力する入力工程と、
前記符号化された複数のフレームのヘッダに記録されている各ブロックの符号化モードと前記モードパターンとを比較することにより符号化モードの誤りを判定する判定工程と、
前記判定工程から通知された判定結果に基づいて符号化モードの誤りを補正し、前記符号化された複数のフレームを復号化する復号化工程と、
を有することを特徴とする画像処理方法。
【請求項８】
請求項７に記載の画像処理方法を、コンピュータに実行させる制御プログラムを記憶したことを特徴とするコンピュータにより読取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データを符号化或は／及び復号化するための画像処理装置及びその方法と記憶媒体に関するものである。
【０００２】
【従来の技術】
従来より、動画像の符号化方式としてフレーム（画面）内符号化方式であるMotion JPEGやDigital Video等の符号化方式や、フレーム（画面）間予測符号化を用いたＨ．２６１、Ｈ．２６３、ＭＰＥＧ−１、ＭＰＥＧ−２等の符号化方式が知られている。前者のフレーム内符号化方式は、フレーム単位で独立に符号化するもので、フレームの管理がし易いため、動画像の編集や特殊再生が必要な装置に最適である。また後者のフレーム間符号化方式は、フレーム間予測を用いるため符号化効率が高いという特徴を持っている。
【０００３】
【発明が解決しようとする課題】
一般の電話回線や無線による動画像の伝送では、ノイズや電波障害による誤りが発生する。フレーム内符号化のみを用いる方式では、誤りが発生してもその影響は各フレーム単位で閉じており、他のフレームに伝播することはない。しかしながら、フレーム内符号化のみでは符号化効率が低いため、電話線等では高解像度の動画像の伝送は難しい。また一方、フレーム間予測を用いる符号化では、ノイズなどによる誤った画像データを用いて予測フレームを復号するため、誤りが他のフレームにも伝播し、画質の劣化を長時間に亙って発生させてしまうという欠点がある。
【０００４】
本発明は上記従来例に鑑みてなされたもので、誤りが発生しても発生する画質の劣化を抑制するとともに、高い符号化効率を維持できる画像処理装置及びその方法と記憶媒体を提供することを目的とする。
【０００５】
また本発明の目的は、画像データの複数のフレームの各ブロックが、一定の間隔で必ず画面内符号化されるようにして、画面内符号化を行うフレーム間隔よりも短い周期で画面内符号化するブロックが存在するようにして、画面間符号化の伝送誤りによる画質の劣化の伝播を抑えることができる画像処理装置及びその方法と記憶媒体を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために本発明の画像処理装置は以下のような構成を備える。即ち、  複数のフレームの画像情報を入力する入力手段と、
前記入力手段によって入力された複数のフレームのそれぞれをブロックに分割する分割手段と、
前記分割手段で得られた各ブロックを画面内符号化モード又は画面間符号化モードで符号化する符号化手段と、
前記複数のフレームにおいて一定数のフレーム間隔で位置するフレームＩの符号化モードを前記画面内符号化モードに設定し、それ以外のフレームＰの符号化モードを前記画面内符号化モード又は前記画面間符号化モードに選択的に設定する符号化モード設定手段と、
連続する複数のフレームＰに周期的に割当てられる複数種類のモードパターンを記憶する記憶手段と、
前記記憶手段に記憶された前記モードパターンを示す情報を前記符号化した複数のフレームに多重化して出力する出力手段とを有し、
前記符号化モード設定手段は、前記モードパターンに基づいて各フレームＰの符号化モードを設定し、前記複数種類のモードパターンのそれぞれは、１つのフレームＰを構成する複数のブロックの夫々が前記画面内符号化モードを行うべきか前記画面間符号化モードを行うべきかを示す情報を含むことを特徴とする。
【０００７】
上記目的を達成するために本発明の画像処理装置は以下のような構成を備える。即ち、
複数のフレームの画像情報において、一定数のフレーム間隔で位置するフレームＩが画面内符号化モードで符号化され、それ以外のフレームＰの各ブロックが画面内符号化モード又は画面間符号化モードを選択的に用いて符号化されており、符号化されたフレームＰのそれぞれのブロックが連続する複数のフレームＰに周期的に割当てられる複数種類のモードパターンに基づいて画面内符号化モード又は画面間符号化モードで符号化された複数のフレームと、当該フレームＰに対応するモードパターンとを入力する入力手段と、
前記符号化された複数のフレームのヘッダに記録されている各ブロックの符号化モードと前記対応するモードパターンとを比較することにより符号化モードの誤りを判定する判定手段と、
前記判定手段から通知された判定結果に基づいて前記符号化モードの誤りを補正し、前記符号化された複数のフレームを復号化する復号化手段と、を有することを特徴とする。
【０００８】
又上記目的を達成するために本発明の画像処理方法は以下のような工程を備える。即ち、
複数のフレームの画像情報を入力する入力工程と、
前記入力された複数のフレームのそれぞれをブロックに分割する分割工程と、
前記分割工程で得られた各ブロックを画面内符号化モード又は画面間符号化モードで符号化する符号化工程と、
前記複数のフレームにおいて一定数のフレーム間隔で位置するフレームＩの符号化モードを前記画面内符号化モードに設定し、それ以外のフレームＰの符号化モードを前記画面内符号化モード又は画面間符号化モードに選択的に設定する符号化モード設定工程と、
連続する複数のフレームＰに周期的に割当てられる複数種類のモードパターンを記憶する記憶工程と、
前記記憶工程で記憶された前記モードパターンを示す情報を前記符号化した複数のフレームに多重化して出力する出力工程とを有し、
前記符号化モード設定工程は、前記モードパターンに基づいて各フレームＰの符号化モードを設定し、前記複数種類のモードパターンのそれぞれは、１つのフレームＰを構成する複数のブロックの夫々が前記画面内符号化モードを行うべきか前記画面間符号化モードを行うべきかを示す情報を含むことを特徴とする。
【０００９】
又上記目的を達成するために本発明の画像処理方法は以下のような工程を備える。即ち、
複数のフレームの画像情報において、一定数のフレーム間隔で位置するフレームＩが画面内符号化モードで符号化され、それ以外のフレームＰの各ブロックが画面内符号化モード又は画面間符号化モードを選択的に用いて符号化されており、符号化されたフレームＰのそれぞれのブロックが連続する複数のフレームＰに周期的に割当てられる複数種類のモードパターンに基づいて画面内符号化モード又は画面間符号化モードで符号化された複数のフレームと、当該フレームＰに対応するモードパターンとを入力する入力工程と、
前記符号化された複数のフレームのヘッダに記録されている各ブロックの符号化モードと前記モードパターンとを比較することにより符号化モードの誤りを判定する判定工程と、
前記判定工程から通知された判定結果に基づいて符号化モードの誤りを補正し、前記符号化された複数のフレームを復号化する復号化工程と、を有することを特徴とする。
【００１０】
【発明の実施の形態】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【００１１】
［実施の形態１］
図１は、本発明の実施の形態１に係る画像符号化装置の構成を示すブロック図である。本実施の形態では、動画像の符号化方式としてＨ．２６３符号化方式を用いた場合について説明する。また、説明を容易にするために画像サイズをＱＣＩＦ（１７６×１４４）として説明するが、本発明はこれらに限定されるものではない。
【００１２】
図１において、１００は入力端子で、符号化する動画像データを入力するための端子である。１０１はフレームメモリで、入力した動画像データをフレーム単位で格納し、フレーム単位のデータが格納されると、それを通知する信号２０１を出力している。１０２はブロック切り出し器で、フレームメモリ１０１から符号化単位であるブロック単位に動画像データを読み出して、後続の差分器１０５及び動き補償器１０４に出力する。またブロックを切り出したことを示す信号２０２を符号化モード設定部１１４に出力している。本実施の形態１では、Ｈ．２６３符号化方式を例に説明しているので、符号化単位であるブロックはマクロブロックに対応している。１０３はフレームメモリで、復号された画像データをフレーム単位で格納する。１０４は動き補償器で、フレームメモリ１０３の内容とブロック切り出し器１０２から出力されるブロック単位の動画像データとに基づいて動き補償を行って符号化するモードを決定し、その予測画像データを出力する。また、この動き補償を行った場合には、その動きベクトルも出力する。
【００１３】
１０５は差分器で、ブロック切り出し器１０２から出力されるブロック単位の動画像データと、動き補償器１０４からの予測画像データとを基に画素単位で差分を算出して予測誤差を求める。１０６はＤＣＴ器で、差分器１０５で求められた予測誤差又は画素値をＤＣＴ変換する。１０７は量子化器で、ＤＣＴ器１０６で得られたＤＣＴ係数を量子化する。１０８はハフマン符号化器で、量子化器１０７で得られた量子化結果にハフマン符号を割り当てる。１０９は逆量子化器で、量子化器１０７の出力を逆量子化してＤＣＴ係数を求める。１１０は逆ＤＣＴ器で、逆量子化器１０９で逆量子化されたＤＣＴ係数を逆変換して予測誤差に相当するデータを出力する。１１１は加算器で、動き補償器１０４からの予測画像データと、逆ＤＣＴ器１１０からの予測誤差とを画素単位で加算する。
【００１４】
１１２は動きベクトル符号化器で、動き補償器１０４からの動きベクトル２０３を入力して符号化する。１１３はヘッダ符号化器で、フレーム単位のヘッダやマクロブロック単位のヘッダを生成して符号化する。このヘッダにはＨ．２６３符号化方式に従って、フレームのスタートコード、フレームの符号化モード、マクロブロックの符号化モード等の符号化データが含まれる。１１４は符号化モード設定部で、フレームの符号化モード、マクロブロックの符号化モード等を決定する。この符号化モード設定部１１４は図３を参照して詳しく説明する。１１５はモードパターンメモリで、フレーム内のマクロブロックの符号化モードに関する情報を格納する。この詳細は後述する。１１６は多重化器で、ハフマン符号化器１０８、動きベクトル符号化器１１２、ヘッダ符号化器１１３の出力をＨ．２６３符号化方式の符号書式に従って多重化する。１１７は多重化された符号化データを出力する端子である。
【００１５】
このような構成において、動作に先立って各部の初期化が行われる。符号化モード設定部１１４は、入力される動画像データにおいて、先頭のフレームに対してフレーム内符号化を行うフレームとして設定し、１３２フレーム毎にフレーム内符号化を行うフレームとして設定する。そして、それ以外のフレームについては、直前のフレームを参照フレームとするフレーム間符号化を行うように符号化モードを設定する。
【００１６】
図３は、この符号化モード設定部１１４の詳細な構成を示すブロック図である。
【００１７】
図３において、入力端子１５０は、フレームメモリ１０１からのフレーム単位でデータが格納された事を通知する信号２０１を入力する。１５１はフレームカウンタで、信号２０１に従って、処理するフレームの枚数をカウントし、このカウンタ１５１には初期化時に“０”がセットされる。１５２はフレームモード設定器で、前述の通り、最初のフレームと１３２フレーム毎のフレームをフレーム内符号化するフレームとするフレームモードを設定する。出力端子１５３は、そのフレームモードを示す信号２０４をヘッダ符号化器１１３に出力する端子である。入力端子１５４は、ブロック切り出し器１０２からブロックを切り出したことを通知する信号２０２を入力する端子である。１５５はブロックカウンタで、フレームの先頭からのブロック数をカウントしており、このブロックカウンタ１５５はフレームの先頭で“０”にリセットされる。１５６はアドレス発生器で、モードパターンメモリ１１５のメモリ上のアドレスを算出し、出力端子１５７を介してモードパターンメモリ１１５に出力している。入力端子１５８は、モードパターンメモリ１１５からモード信号２０５を入力する端子である。ラッチ１５９は、入力端子１５８からのモード信号２０５をラッチし、フレームモード設定器１５２と入力端子１５４からの信号２０４，２０２によって出力する。
【００１８】
このような構成において、端子１５０から入力された信号２０１はフレームカウンタ１５１に入力されてカウントされる。このフレームカウンタ１５１によりカウントされた値はフレームモード設定器１５２に供給される。フレームモード設定器１５２は、そのカウント値を“１３２”で割った値の余りが“１”である場合はフレーム内符号化を行うモードとして、出力端子１５３からフレームの符号化モードを示す符号化モード信号２０４を出力する。またそうでない場合は、フレーム間符号化を行うモードを示すフレームの符号化モード信号２０４を出力端子１５３から出力する。
【００１９】
ここでフレーム内符号化を行うフレームの場合は以下のように動作する。
【００２０】
フレームモード設定器１５２からフレーム内符号化を行うことが指示されると、ラッチ１５９は常にマクロブロックがフレーム内符号化を行うように値を書き込む。そして、ブロック切り出し器１０２からのブロック切り出し信号２０２に従って、フレーム内符号化を行う信号２０６を端子１６０から動き補償器１０４に出力する。この時、ブロックカウンタ１５５はブロック数のカウントは行わない。またアドレス発生器１５６も動作しない。
【００２１】
フレーム間符号化を行うフレームの場合は以下のように動作する。
【００２２】
フレームの処理を行う前にブロックカウンタ１５５を“０”にリセットする。ブロック切り出し器１０２からのブロックの切り出し信号２０２が入力される度、ブロックカウンタ１５５はカウントを行う。このブロックカウンタ１５５によるカウント値はアドレス発生器１５６に入力される。また、アドレス発生器１５６は、フレームカウンタ１５１からもフレームのカウント値を入力する。このようにしてアドレス発生器１５６は、モードパターンメモリ１１５からモード値を読み出すアドレスを発生している。
【００２３】
図２（ｂ）〜（ｉ）は、モードパターンメモリ１１５に格納されているパターンの一例を示す図である。
【００２４】
図２において、ＱＣＩＦの画像を例にとっており、各マス目はマクロブロックを表している。図中の黒のマス目は、該当するマクロブロックを動き補償器１０４における判定に関わらず、常にフレーム内符号化を行うように指示するマクロブロックの位置を表している。ここで、あるフレームにおけるフレームカウンタ１５１の計数値が“８”で割り切れれば図２（ｂ）のパターンを、余りが“１”であれば（ｃ）のパターンを、余りが“２”であれば（ｄ）のパターンを、余りが“３”であれば（ｅ）のパターンを、余りが“４”であれば（ｆ）のパターンを、余りが“５”であれば（ｇ）のパターンを、余りが“６”であれば（ｈ）のパターンを、そして、余りが“７”であれば（ｉ）のパターンをそれぞれ選択する。
【００２５】
これは図２（ａ）に示した太枠の中で、８フレーム単位で、必ず各ブロックがフレーム内符号化されることを表している。即ち、ブロックカウンタ１５５の計数値に従って、該当するマクロブロックに対応する位置のマス目が白であれば動き補償器１０４で判定されたモードで、黒であれば必ずフレーム内符号化で符号化するモードとなるようにモード信号２０６を出力する。
【００２６】
アドレス発生器１５６で指定されたマクロブロックのモード信号がモードパターンメモリ１１５から読み出され、端子１５８を介して入力され、ラッチ１５９を介して端子１６０から動き補償器１０４に出力される。
【００２７】
再び図１に戻って、図１の動作を説明する。
【００２８】
端子１００から動画像データが逐次入力されると、その入力された動画像データはフレームメモリ１０１に格納される。フレームメモリ１０１に１フレーム分の画像データが蓄積されると、その１フレームの画像データが格納されたことを信号２０１により符号化モード設定部１１４に通知する。符号化モード設定部１１４は、これにより、フレームメモリ１０１に蓄積された１フレームの画像データに対して、フレーム内符号化をするか、或はフレーム間符号化するかを決定する。
【００２９】
まず、フレーム内符号化を行う場合について述べる。
【００３０】
ブロック切り出し器１０２は、フレームメモリ１０１からマクロブロック単位の画像データを切り出し、動き補償器１０４と差分器１０５に入力する。この際、動き補償器１０４は、マクロブロックに対して動き補償を行わず、マクロブロックの符号化モードとしてフレーム内符号化モードを出力し、差分器１０５、加算器１１１には全ての画素値に対して“０”を出力する。
【００３１】
ブロック切り出し器１０２で切り出されたマクロブロックのデータは、差分器１０５で“０”が引かれ、そのままＤＣＴ器１０６に入力されてＤＣＴ変換され、そのＤＣＴ係数は量子化器１０７で量子化され、ハフマン符号化器１０８と逆量子化器１０９に入力される。ハフマン符号化器１０８は、Ｈ．２６３符号化方式で決められているハフマン符号を量子化結果に対して割り当て、多重化器１１６に出力する。
【００３２】
また、逆量子化器１０９に入力された量子化結果は逆量子化され、ＤＣＴ変換係数となり、逆ＤＣＴ器１１０で予測誤差に変換される。この予測誤差（画素値）に加算器１１１で“０”が加えられ、フレームメモリ１０３の所定の位置に格納される。
【００３３】
このとき動き補償器１０４はフレーム内符号化モードで動作しているので、動きベクトル符号化器１１２は動作しない。またヘッダ符号化器１１３は、フレームのスタートコード、フレーム内符号化を行ったことを示すフレームの符号化モード、および各マクロブロックの符号化モード等を符号化して多重化器１１６に出力する。多重化器１１６は、Ｈ．２６３符号化方式で決められている順に各符号化データを多重化して出力端子１１７から出力する。
【００３４】
次に、フレーム間符号化を行う場合について述べる。
【００３５】
ブロック切り出し器１０２は、フレームメモリ１０１からマクロブロック単位のデータを切り出し、動き補償器１０４と差分器１０５に入力する。動き補償器１０４は、符号化モード設定部１１４からの信号２０６により、該当するマクロブロックが必ずフレーム内符号化を行うマクロブロックか否かを判定し、フレーム内符号化を行うマクロブロックであれば動き補償を行わず、マクロブロックの符号化モードとしてフレーム内符号化モードをヘッダ符号化器１１３に出力し、差分器１０５、加算器１１１には全ての画素値に対して“０”を出力する。
【００３６】
これに対し、必ずフレーム内符号化を行わない場合では、動き補償器１０４はマクロブロックに対して動き補償を行って予測誤差を求め、ブロックのデータを比較してマクロブロック単位にフレーム内符号化を行うか、フレーム間符号化を行うかを判定する。フレーム内符号化を行う場合は、マクロブロックの符号化モードとしてフレーム内符号化モードをヘッダ符号化器１１３に出力し、差分器１０５、加算器１１１には全ての画素値に対して“０”を出力する。
【００３７】
一方、フレーム間符号化する場合は、マクロブロックの符号化モードとしてフレーム間符号化モードをヘッダ符号化器１１３に出力し、差分器１０５、加算器１１１には各予測画像データを出力する。更に、その際の動きベクトルは、動きベクトル符号化器１１２に出力される。動きベクトル符号化器１１２は、この動きベクトルを符号化して多重化器１１６に出力する。
【００３８】
ブロック切り出し器１０２で切り出されたマクロブロックのデータは、差分器１０５で“０”又は予測値が引かれ、ＤＣＴ器１０６に入力されてＤＣＴ変換され、そのＤＣＴ係数は量子化器１０７で量子化されてハフマン符号化器１０８と逆量子化器１０９に入力される。ハフマン符号化器１０８は、Ｈ．２６３符号化方式で決められているハフマン符号を量子化結果に対して割り当てて多重化器１１６に出力する。
【００３９】
また逆量子化器１０９に入力された量子化結果は逆量子化されてＤＣＴ変換係数となり、逆ＤＣＴ器１１０で画素値に変換される。この画素値に加算器１１１で“０”又は予測値が加えられ、フレームメモリ１０３の所定の位置に格納される。
【００４０】
ヘッダ符号化器１１３は、フレームのスタートコード、フレーム間符号化を行ったことを示すフレームの符号化モード、及び各マクロブロックの符号化モード等を符号化して多重化器１１６に出力する。多重化器１１６は、Ｈ．２６３符号化方式で決められている順に各符号化データを多重化し、端子１１７から出力する。
【００４１】
このような一連の選択動作により、各マクロブロックが、一定の間隔（図２の例では８フレーム毎）で必ずフレーム内符号化を行うように、各ブロックの符号化モードを容易に決定することができる。そして、実際のフレーム内符号化を行うフレーム間隔よりも短い周期で、かつ符号量を極端に増やさずに、フレーム間符号化の伝送誤りによる劣化の伝播を抑えることが可能になる。また、得られた符号化データは標準方式に完全に準拠できており、復号側に特別な構成を必要としない。
【００４２】
図４は、本発明の実施の形態１に係る画像符号化装置の符号化モード設定部１１４による符号化モードの設定方法を説明するフローチャートである。
【００４３】
まずステップＳ１で、動画像データを端子１００からフレーム単位で入力し、その入力したフレーム数をカウントする。ステップＳ２では、その入力したフレームを複数のブロック（マクロブロック）に分割して、各マクロブロック毎に切り出して入力する。次にステップＳ３に進み、その入力したフレームが先頭フレームか、或は１３２番目毎に出現するフレームかを判断する。そうであればステップＳ４に進み、そのフレームの画像データの符号化モードをフレーム内符号化モードに設定する。
【００４４】
一方、ステップＳ３で、先頭或は１３２番目毎のフレームでない時、即ち、無条件にフレーム内符号化モードで符号化するフレームでない時はステップＳ５に進み、ステップＳ５で、そのフレームが何番目のフレームであるかをみる。具体的には、そのフレーム数のカウント値を“８”で割り、その余りに基づいてモードパターンメモリ１１５にアクセスして、そのメモリ１１５に記憶されているモードパターンデータ（図２参照）を読み出す（ステップＳ６）。
【００４５】
次にステップＳ７で、その読み出したパターンデータに基づいて処理を行うマクロブロックが黒（１）又は白（０）であるかを調べ、黒であればステップＳ９に進み、そのブロックの符号化モードをフレーム内符号化モードに設定する。一方、白であればステップＳ１０に進み、そのブロックの符号化モードをフレーム間符号化モードに設定する。
【００４６】
ここでフレーム内符号化モードの場合には、動き補償器１０４は差分器１０５、加算器１１１に“０”を出力し、動きベクトル符号化器１１２による動作を停止させ、ヘッダ符号化器１１３にはフレーム内符号化であることを通知する。
【００４７】
また、フレーム間符号化モードの場合には、動き補償器１０４は差分器１０５、加算器１１１に予測誤差を出力し、動きベクトルを動きベクトル符号化器１１２に出力し、ヘッダ符号化器１１３にはフレーム間符号化であることを通知する。そして、加算器１１１から出力される復号画像データをフレームメモリ１０３に記憶しておき、そのフレームメモリ１０３の内容を基に、次のフレームの対応するマクロブロックを予測するとともに、差分がより小さくなる位置（動きベクトル）を求めて、動き補償フレーム間予測を行っているのは前述した通りである。
【００４８】
なお、本実施の形態１において、動画像の符号化方式をＨ．２６３としたが他の符号化方式でももちろん構わない。
【００４９】
また、フレームメモリの構成等は処理速度等に応じて適宜変更可能である。
【００５０】
ブロック群としてＧＯＢを単位としても構わないし、ＧＯＢに跨るような構成でも、もちろん構わない。
【００５１】
又上述の実施の形態では、直交変換にＤＣＴ変換を用いて説明したがこれに限定されず、例えばウェーブレット（Wavelet）変換等を用いても、もちろん構わない。
【００５２】
［実施の形態２］
図５は、本発明の実施の形態２に係る画像符号化装置の構成を示すブロック図である。なお、前述の実施の形態１と同様の構成要素については同一番号を付して、それらの詳細な説明は省略する。
【００５３】
２０１はモードパターンメモリで、前述の実施の形態１のモードパターンメモリ１１５とは、その記憶内容と出力先が異なる。２０２はヘッダ符号化器で、前述の実施の形態１のヘッダ符号化器１１３に、パターンメモリ２０１の内容を符号化して出力する機能が付加されている。２０３は多重化器で、パターンメモリ２０１の内容を表す符号化データを多重化する機能が付加されている。
【００５４】
本実施の形態２においては、前述の実施の形態１と同様に、Ｈ．２６３符号化方式を例にとって説明する。
【００５５】
この符号化に先駆けて、モードパターンメモリ２０１の内容をヘッダ符号化器２０２で符号化する。
【００５６】
この実施の形態２に係るモードパターンメモリ２０１の内容を図６に示す。
【００５７】
図６（ａ）において、フレームを分割した各マス目には、(1)から(13)までの数字が記されており、それぞれが周期的にフレーム内符号化するマクロブロックのグループとなっている。例えば、(1)が記されたマクロブロックは、フレーム間符号化を行うフレームにおいて、８フレームで必ずフレーム内符号化モードで符号化される。以下、(2)〜(12)までのブロックについても同様である。尚、(13)が記されたブロックは３つしかないので、これらは３フレーム周期でフレーム内符号化されることになる。その様子が実施の形態１の図２と同様に図６（ｂ）〜（ｉ）で示されている。
【００５８】
ヘッダ符号化器２０２はまず、フレーム内符号化を必ず行うマクロブロック（黒）を“１”とし、そうでないマクロブロック（白）を“０”として、マクロブロックの配置順にそれぞれのフレーム毎にランレングス符号化を行う。これらの符号化データは、先頭フレームのＨ．２６３符号化方式の予備挿入情報（ＰＥＩ）およびスペア情報（ＰＳＰＡＲＥ）として挿入され、多重化器２０３で所定の書式に従って多重化される。
【００５９】
この実施の形態２に係る動画像データの符号化は、前述の実施の形態１と同様にして行われる。即ち、フレーム内符号化を行うフレームについては通常のフレーム内符号化を行い、フレーム間符号化を行うフレームでは、符号化モード設定器１１４が、フレームのカウント値とブロックのカウント値からモードパターンメモリ２０１を参照し、符号化対象であるマクロブロックがフレーム内符号化をすべきかどうかを判定し、必ずフレーム内符号化を行わない場合は、動き補償器１０４の判定に基づいて、その符号化対象のマクロブロックの符号化モードを決定する。こうして各符号化モードで符号化されたデータは、多重化器２０３で多重化され、端子１１７から出力される。
【００６０】
以上説明したように本実施の形態２によれば、復号側に、フレーム内符号化を行ったマクロブロックの位置を知らせることができる。これによって、伝送路の誤りによる劣化が生じる場合でも、誤りの伝播を断ち切ることができるフレーム内符号化モードにより符号化されたマクロブロックの位置を知ることができ、誤りの検出や誤りによる劣化の補正を容易にできる効果がある。
【００６１】
又、図６のようなパターンデータの構成にすることにより、フレーム内符号化を必ず行うマクロブロックのブロック群をランダムに配置させることができ、フレーム内符号化が行われるブロックの周期を目立たせなくできるという効果がある。
【００６２】
また、１フレーム内で、フレーム内符号化モードで符号化するマクロブロックが適宜存在することにより、ＭＰＥＧ−１，２，４等の符号化方式においても、フレーム内符号化フレームの間隔を広げることができるため符号化効率を悪化させることはない。
【００６３】
［実施の形態３］
図７は、本発明の実施の形態３に係る画像復号装置の構成を示すブロック図である。
【００６４】
図７において、３００は符号化データを入力する端子であり、３０１は分離器で、各符号化データを後段の各復号器に渡すために分離している。ここで端子３００から入力される符号化データは、前述の実施の形態２の符号化装置で生成され、伝送路上で誤りが生じる可能性のある伝送路を経て入力されたものを例にとって説明する。分離器３０１の動作は、前述の実施の形態２における多重化器２０３の逆の動作である。
【００６５】
３０２はヘッダ復号器で、フレーム単位のヘッダやマクロブロック単位のヘッダを復号する。このヘッダ復号器３０２の動作は、前述の実施の形態２におけるヘッダ符号化器２０２の逆の動作である。３０３はモードパターンメモリ、３０４は符号化モード判定器である。これらは実施の形態２におけるモードパターンメモリ２０１、符号化モード設定部１１４と同様に動作する。
【００６６】
３０５は誤り判定器で、符号化データの誤りを検出する。３０６は動きベクトルの復号を行う動きベクトル復号器、３０９はハフマン符号を復号し、量子化されたＤＣＴ係数を獲得するハフマン復号器である。これらは前述の実施の形態２における動きベクトル符号化器１１２、ハフマン符号化器１０８と逆の動作をする。
【００６７】
３０７，３１４はフレームメモリで、復号した画像を格納する。３０８は動き補償器で、復号された動きベクトルを用いてフレームメモリ３０７からマクロブロック単位の予測画像を生成する。３１０は逆量子化器で、ハフマン復号されたコードに対して逆量子化を行ってＤＣＴ係数を獲得する、３１１は逆ＤＣＴ器で、ＤＣＴ係数から画素値または予測誤差値を獲得する。３１２は加算器で、予測画像と復号された予測誤差とを加算する。３１３は誤り補正器で、誤り判定器３０５で検出された誤りに従って画像データを補正する。３１５は再生された復号画像を出力する出力端子である。
【００６８】
このような構成において、まず動作に先立って各部の初期化が行われる。端子３００を介して入力された符号化データは分離器３０１に入力される。この分離器３０１は、フレーム及びマクロブロックのヘッダに関する符号化データや、図５のモードパターンメモリ２０１の内容を符号化した符号化データをヘッダ復号器３０２に出力し、動きベクトルに関する符号化データを動きベクトル復号器３０６に出力し、ハフマン符号化データをハフマン復号器３０９にそれぞれ分離して出力する。
【００６９】
ヘッダ復号器３０２は、分離器３０１から入力された符号化データを復号し、各フレーム、マクロブロックの各ヘッダ、フレーム内符号化したマクロブロックのフレーム周期とその位置を復号する。この復号結果に基づき、モードパターンメモリ３０３にそれらのパターンを格納する。このパターンは、例えば前述の図６に示すようなパターンである。
【００７０】
各フレームの復号の際には、ヘッダ復号器３０２はフレームのヘッダを復号し、そのフレームがフレーム内符号化モード／フレーム間符号化モードのいずれで符号化されたかを復号によって知る。
【００７１】
ここで、そのフレームがフレーム内符号化されている場合は、そのフレームの各マクロブロックはフレーム内符号化されているため、動きベクトル復号器３０６は動作せず、動き補償器３０８も各画素値に対して常に“０”を加算器３１２に出力する。またハフマン復号器３０９は、入力された符号化データを復号し、量子化されたＤＣＴ係数を獲得する。このハフマン復号時に誤りが検出された場合は、その情報を誤り補正器３１３に出力する。例えば、復号した結果、ＤＣＴ変換係数が６４個以上出現したとか、存在しない符号を復号しようとした場合などが、この誤りの検出に該当する。この場合、次のＧＯＢの先頭まで復号を中断し、符号化データをスキップしたことを誤り補正器３１３に通知する。
【００７２】
一方、誤りがない場合は、量子化されたＤＣＴ係数は逆量子化器３１０で逆量子化された後、逆ＤＣＴ器３１１で画素値に変換される。こうして得られた画素値は加算器３１２で“０”が加えられ、誤り補正器３１３に入力される。誤り補正器３１３は、誤りが有ればスキップしたマクロブロックのデータを前フレームのマクロブロックの値で代用すべくフレームメモリ３０７から読み出して補正する。一方、誤りがない場合はそのまま入力を出力する。こうして誤り補正器３１３から出力された画素データは、フレームメモリ３１４とフレームメモリ３０７の所定の位置に格納され、フレームメモリ３１４の内容は端子３１５を介して出力される。
【００７３】
ここで、そのフレームがフレーム間符号化モードで符号化されていた場合は、最初に符号化モード判定器３０４は、復号するフレームが先頭から何番目のフレームのフレーム間符号化フレームであるかを、フレーム数のカウント値に基づいて検知する。更に、最初にフレームのヘッダ情報に含まれていたフレーム内符号化マクロブロックの出現する周期と比較し、モードパターンメモリ３０３から、復号するフレームのフレーム内符号化されたマクロブロックの位置を読み込む。符号化モード判定器３０４は、復号するマクロブロックの位置をマクロブロックのカウント値によって検知し、そのマクロブロックがフレーム内符号化されたマクロブロックか否かを誤り判定器３０５に入力する。
【００７４】
ヘッダ復号器３０２は、各マクロブロックのヘッダを復号しており、復号されたマクロブロックの符号化モードは、誤り判定器３０５に入力される。誤り判定器３０５は、そのマクロブロックがフレーム内符号化されるべきマクロブロックであった場合には、マクロブロックがフレーム内符号化されているかどうかを比較し、フレーム内符号化されていなかった場合には誤りである旨を、誤り補正器３１３とハフマン復号器３０９、ヘッダ復号器３０２のそれぞれに通知する。
【００７５】
ヘッダ復号器３０２、ハフマン復号器３０９はそのまま復号を続けるが、次のＧＯＢの先頭が復号されるまで誤り補正器３１３は、その復号した画像データを蓄積する。フレーム内符号化されるべきマクロブロックとＧＯＢまでのマクロブロックの数を計数し、その計数した数だけ戻った前のマクロブロックがフレーム内符号化されているかを判定する。これらマクロブロックがフレーム内符号化モードであれば、フレーム内符号化されるべきマクロブロックであったとして、再生した画像データをフレームメモリ３０７，３１４の該当位置に格納する。これはマクロブロックのカウント値に誤りが生じたと判断できるためである。
【００７６】
また誤り判定器３０５が誤りを検出しない場合、フレーム内符号化モードで符号化されたマクロブロックであれば、動きベクトル復号器３０６を動作させず、動き補償器３０８も各画素値に対して常に“０”を加算器３１２に出力する。一方、動き補償を行って符号化されたマクロブロックであれば、動きベクトル復号器３０６を動作させ、その復号した動きベクトルを動き補償器３０８に入力し、フレームメモリ３０７から動き補償による予測画素値を生成して加算器３１２に出力する。
【００７７】
またハフマン復号器３０９は、入力された符号化データを復号し、量子化されたＤＣＴ係数を獲得する。このハフマン復号時に誤りが検出された場合は、その情報を誤り補正器３１３に出力し、フレーム内符号化の時の誤り補正と同様に補正する。一方、誤りがない場合は、その量子化されたＤＣＴ係数は逆量子化器３１０で逆量子化され、逆ＤＣＴ器３１１で画素値に変換される。こうして得られた画素値は、フレーム内符号化モードあれば加算器３１２で“０”を、そうでなければ加算器３１２で予測画素値が加えられる。こうして誤り補正器３１３から出力された画素のデータは、フレームメモリ３１４とフレームメモリ３０７の所定の位置に格納され、フレームメモリ３１４の内容は端子３１５を介して、復号された画像データとして出力される。
【００７８】
図８は、本発明の実施の形態３に係る画像復号化装置における復号化処理を説明するフローチャートである。
【００７９】
まずステップＳ２１で、端子３００より符号データを入力し、その入力した符号を分離器３０１で、ヘッダ、動きベクトル及びハフマンコード部分に分離する。ステップＳ２２では、その復号したフレーム及びブロックのヘッダを解析して符号化モード判定器３０４に通知するとともに、フレーム間符号化の場合には動きベクトル復号器３０６、動き補償器３０８の動作をイネーブルにする。次にステップＳ２３に進み、符号化されて送られてくるモードパターンデータを復号してモードパターンメモリ３０３に格納する。
【００８０】
ステップＳ２４では、そのフレームがフレーム内符号化されたフレームかどうかを調べ、そうであればステップＳ２５に進み、その入力したフレームをフレーム内復号化処理により復号する。この場合には、動きベクトル復号器３０６、動き補償器３０８の動作をディスイネーブルにする。
【００８１】
ステップＳ２４でフレーム内符号化でない時はステップＳ２６に進み、そのフレームが何番目のフレームかどうかを調べる。ステップＳ２７で、先頭或は１３２番目毎のフレームであるかどうかを調べ、そうであればステップＳ３３に進み、本来フレーム内符号化されるべきフレームがフレーム間符号化されていたことになるため、誤り判定器３０５に誤りである旨を通知し、ステップＳ３４で、誤り補正器３１３による誤り補正を行う。
【００８２】
またステップＳ２７でフレーム内符号化されるべきフレームでなかった場合はステップＳ２８に進み、復号対象のブロックがフレーム内符号化されたブロックかどうかを、カウントしたブロック数（そのフレーム内における受信ブロック数）とステップＳ２３でモードパターンメモリ３０３に記憶されたパターンデータとに基づいて判断する。ここでフレーム内符号化されるべきブロックであればステップＳ３１に進み、そのブロックがフレーム内符号化されているかどうかを調べ、そうでない時はステップＳ３３のエラー処理に進むが、フレーム内符号化されている時はステップＳ３２に進み、ステップＳ２５と同様にして、フレーム内符号化コードの復号処理を実行する。
【００８３】
またステップＳ２８で、フレーム内符号化されるべきブロックでないと判定されるとステップＳ２９に進み、その動きベクトルの復号、動き補償（ステップＳ３０）等を行って、そのブロックを復号する。
【００８４】
以上説明したように本実施の形態３によれば、復号側で、フレーム内符号化されるべきマクロブロックの位置を知ることによって、フレーム内符号化されたデータかどうかにより伝送路の誤りを検知することが出来る。これに基づき、誤りによる画像劣化の補正を容易にでき、かつ画質の劣化を抑制することも可能になる。
【００８５】
また本実施の形態３では、前述の実施の形態２で生成された符号を用いて説明を行ったが、前述の実施の形態１のモードパターンメモリ１１５と同じ内容をモードパターンメモリ３０３に予め格納しておけば同様の動作を行わせることができることはいうまでもない。
【００８６】
＜その他の実施の形態＞
以上の説明では、マクロブロック群の構成、実施の形態２の符号化モード設定器１１４におけるモード設定方法（モードパターンメモリ２０１の構成）を符号化データとともに伝送する方式について説明したが、本発明はこれに限定されず、事前に誤りのない伝送路又は誤り耐性が強い方式を用いて伝送することも可能であり、限られた端末では、これらを予め個々の機器に格納しておくことももちろん可能である。
【００８７】
また、ブロック群の構成はこれらに限定されるものでなく、フレーム内符号化されるべきマクロブロックを数が一定のブロック群とせず、例えば図９に示すような分布を持っていても良い。図９の例では、ＴＶ電話等で中心に人がくることが多いことを考慮して、その略中心部分において、フレーム内符号化されるべきマクロブロックの周期を短くするために、少ない数のマクロブロックでブロック群を形成している。又逆に、画面の周辺ほど多い数のマクロブロックでブロック群を構成することにより、全体として符号化データ量を減少させつつ、画像の重要な部分での誤り伝播を積極的に抑制することも可能である。
【００８８】
本実施の形態では、Ｈ．２６３符号化方式を例にとって説明を行ったが、その他の動き補償を行う符号化方式、例えば、ＭＰＥＧ−１，２，４であっても構わないし、任意形状のオブジェクトを対象としてももちろん構わない。
【００８９】
更に本実施の形態では、動きベクトルを用いたフレーム間予測符号化について説明したが、本発明はこれに限定されない。例えばフラクタルをフレーム間で用いる方法等に応用しても良い。
【００９０】
又、図１０に示す他の実施の形態の画像符号化装置で示すように、フレームメモリ４０１を追加することによって、ＭＰＥＧ符号化方式や、Ｈ．２６３のオプションにある両方向予測フレーム間符号化フレームにも同様に対応できる。
【００９１】
図１０において、動き補償器４０２は、フレーム内符号化／フレーム間符号化に加えて、両方向予測の符号化モードを判定に加えたものである。動きベクトル符号化器４０３は両方向の動きベクトルを符号化し、ヘッダ符号化器４０４は、マクロブロックの符号化モードに両方向予測符号化のモードを符号化する。
【００９２】
またモードパターンメモリ４０６のように、端子４０５を介して外部から適宜その内容を更新しても良く、例えば、前述の図２に示すパターンから図５に示すパターンに変更しても良い。その場合は、前述の実施の形態２において、先頭フレームでのモードパターンメモリを内容を符号化するのと同様に、更新時のフレームの先頭でモードパターンメモリの内容を符号化することも可能である。
【００９３】
また本実施の形態では、フレームという言葉を用いているが、これは１画面を示すものであり、数フィールドで構成されたものをフレームとする場合は、フィールドに相当する。
【００９４】
また、本実施の形態の各部または全部の機能をソフトウェアで記述し、ＣＰＵ等の演算装置によって処理しても、もちろん構わない。
【００９５】
また本実施の形態では、フレームを単位として説明したが、ＭＰＥＧ−２方式のようにそれぞれをフィールドに対応させてももちろん構わない。
【００９６】
なお本発明は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００９７】
また本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システム或は装置に供給し、そのシステム或は装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００９８】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００９９】
以上説明したように本実施の形態によれば、フレーム内符号化フレームの周期よりも短い間隔で、フレーム内符号化するマクロブロックを挿入することによって、符号化効率を低下させることなく、伝送路での誤りによる画質の劣化を抑制することができる。
【０１００】
又本実施の形態によれば、符号化効率をあまり低下させることなく、フレーム間予測符号化を行うフレームにおいてもフレーム内符号化するブロックを挿入することにより、エラーの伝播を最小限に抑えることができる。
【０１０１】
また本実施の形態によれば、マクロブロック群の構成、符号化モード設定器におけるモード設定方法をも符号化データとともに復号側に伝送することにより、復号側においてフレーム内符号化のブロックの位置を予め知ることができ、これにより伝送エラーの検知にも役立たせることができる。
【０１０２】
又本実施の形態によれば、復号側において、フレーム内符号化ブロックの位置情報と復号データとの照合に基づいて伝送誤りを検出し、その検出結果に基づいて、伝送画像の劣化を抑えることができる。
【０１０３】
【発明の効果】
以上説明したように本発明によれば、画像データの複数のフレームの各ブロックが、一定の間隔で必ず画面内符号化されるようにできる。そして、画面内符号化を行うフレーム間隔よりも短い周期で画面内符号化するブロックが存在するため、符号量を極端に増やさずに、画面間符号化の伝送誤りによる画質の劣化の伝播を抑えることが可能になる。
【０１０４】
又本発明によれば、フレームＰの各ブロックの符号化モードを、複数のフレームの符号化データとともに復号側に伝送することにより、復号側において画面内符号化されたブロックの位置を予め知ることができる。これにより伝送エラーの検知にも役立たせることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係る画像符号化装置の主要構成を示すブロック図である。
【図２】本発明の実施の形態１に係るフレーム内符号化されるべきマクロブロックの配置の一例を示す図である。
【図３】本発明の実施の形態１に係る符号化モード設定部の構成を示すブロック図である。
【図４】本発明の実施の形態１に係る符号化モード設定部によるモード設定処理を示すフローチャートである。
【図５】本発明の第２実施の形態に係る画像符号化装置の主要構成を示すブロック図である。
【図６】本実施の形態２に係るフレーム内符号化すべきマクロブロックの配置の一例を示す図である。
【図７】本発明の実施の形態３に係る画像復号装置の主要構成を示すブロック図である。
【図８】本発明の実施の形態３に係る画像復号装置における復号処理を示すフローチャートである。
【図９】本発明の他の実施の形態に係るフレーム内符号化すべきマクロブロックの配置例を示す図である。
【図１０】本発明のその他の実施の形態に係る画像符号化装置の主要構成を示すブロック図である。
【図１】
0003976975.tif 000002
【図２】
0003976975.tif 000003
【図３】
0003976975.tif 000004
【図４】
0003976975.tif 000005
【図５】
0003976975.tif 000006
【図６】
0003976975.tif 000007
【図７】
0003976975.tif 000008
【図８】
0003976975.tif 000009
【図９】
0003976975.tif 000010
【図１０】
0003976975.tif 000011