(57)【特許請求の範囲】
【請求項１】
ブロック毎に第１の符号化方式でフレーム内符号化された第１のフレーム内符号化データを入力する入力工程と、
前記第１のフレーム内符号化データを、復号することなくルックアップテーブルによって前記第１の符号化方式とは異なる第２の符号化方式で第２のフレーム内符号化データに、前記ブロックを複数集めたマクロブロック単位で変換する第１のデータ変換工程と、
前記第１のフレーム内符号化データを復号化し、その復号された画像データを前記第２の符号化方式のフレーム間相関によるフレーム間符号化データに、前記マクロブロック単位で変換する第２のデータ変換工程と、
前記第１のフレーム内符号化データを復号することによって得られた第１の直交変換係数データと、前フレーム又は後フレームの第２の直交変換係数データとを、前記マクロブロック単位で比較する比較工程と、
前記比較工程での比較結果に応じて、前記第２のフレーム内符号化データ及び該第２のフレーム内符号化データの前にスキップするマクロブロック数を示すマクロブロックアドレスインクリメント符号を出力する第１の処理と、前記フレーム間符号化データ及び該フレーム間符号化データの前にスキップするマクロブロック数を示すマクロブロックアドレスインクリメント符号を出力する第２の処理と、前記符号化データを出力しない第３の処理とを選択する選択工程とを有し、
前記選択工程では、前記比較工程での比較結果に応じて、データ差が第１所定値より大きい場合に前記第１の処理を選択し、前記データ差が前記第１所定値以下で第２所定値より大きい場合に前記第２の処理を選択し、前記データ差が前記第２所定値以下の場合に前記第３の処理を選択することを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、動画像の処理を行う画像処理方法に関するものである。
【０００２】
【従来の技術】
近年、画像データの符号化技術の国際標準化が盛んに行われている。カラー多値画像の符号化方式として、ＪＰＥＧ（カラー静止画符号化）方式が国際標準となった。この方式は入力されたカラー多値画像をブロックに分割し、ＤＣＴ変換を施した後、係数を量子化し、量子化結果にハフマン符号を割り当て、符号化する方式である。なお、詳細は「カラー静止画像符号化国際標準方式（ＪＰＥＧ）の概説（その１）（技術解説）」［画像電子学会誌第２０巻第１号］に掲載されている。
【０００３】
また、動画像に関しても国際標準化が進められている。ＴＶ会議を用途としたＨ．２６１（通信用動画符号化）方式や、蓄積メディアを用途としたＭＰＥＧ（蓄積用動画像符号化）方式が標準となった。これらの符号化方式は基本となるフレームをフレーム内符号化し、その他のフレームを動き補償によって符号化する方式である。フレーム内符号化の基本はＪＰＥＧ方式と同様にブロック分割とＤＣＴ変換である。また、動き補償においてもブロック単位に動きベクトルを算出し、その対象ブロックとの差分を求め、差分ブロックをＤＣＴ変換し、係数を量子化し、量子化結果にハフマン符号を割り当て、符号化する方式である。なお、詳細は「マルチメディア符号化の国際標準」［丸善（株）］に掲載されている。
【０００４】
これらの標準化が進む一方で、これらの技術のＬＳＩ化が急速に実現しつつある。標準化の進められた順に、最初にＪＰＥＧ方式のＬＳＩが発表された。その後、ＪＰＥＧ方式の符号化を行うＬＳＩが安価かつ大量に供給された。これにより、動画像の符号化方式であるＭＰＥＧ方式が標準化される前に、動画像の各フレームをＪＰＥＧ方式で符号化して磁気ディスク等に格納するアプリケーションが普及した。以下、動画像をＪＰＥＧ方式により符号化したデータをMotionＪＰＥＧデータと称する。
【０００５】
これらのアプリケーションでは、ＭＰＥＧ方式と比較してフレーム単位での編集が容易であり、取扱いが容易であるという特徴がある。一方、ＭＰＥＧ方式は、フレーム間符号化を採用しているために符号化効率が高いという特徴がある。
【０００６】
また、これらのデータを処理するに際して、MotionＪＰＥＧデータをＭＰＥＧデータに変換する技術も必要となる。
【０００７】
【発明が解決しようとする課題】
しかしながら、上述した例では、MotionＪＰＥＧデータをＭＰＥＧデータに変換する際に、MotionＪＰＥＧデータを復号化して画像データに一旦戻し、その復号化された画像データをＭＰＥＧデータに再符号化するため、次のような欠点があった。
【０００８】
すなわち、ＪＰＥＧ方式の復号化とＭＰＥＧ方式の符号化とを同時に実施するために装置の制御が複雑であり、処理量も大きくなる。例えば、ＪＰＥＧ復号器やＭＰＥＧ符号化部をソフトウェアで実現すると、処理を行うのに非常に多くの時間がかかってしまう。また、ＭＰＥＧ方式で符号化する際に参照フレームを格納しておく作業用のフレームメモリが必要であり、装置全体のコストを下げる際の障害となる等の問題があった。
【０００９】
そこで、本発明の目的は、ＪＰＥＧデータのようなフレーム内符号化データをＭＰＥＧデータのようなフレーム間相関による符号化データに変換する際に、画像データに復号化するフレーム内符号化データを減らして効率よくデータの変換を行うことのできる画像処理方法を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、本発明の画像処理方法は、ブロック毎に第１の符号化方式でフレーム内符号化された第１のフレーム内符号化データを入力する入力工程と、前記第１のフレーム内符号化データを、復号することなくルックアップテーブルによって前記第１の符号化方式とは異なる第２の符号化方式で第２のフレーム内符号化データに、前記ブロックを複数集めたマクロブロック単位で変換する第１のデータ変換工程と、前記第１のフレーム内符号化データを復号化し、その復号された画像データを前記第２の符号化方式のフレーム間相関によるフレーム間符号化データに、前記マクロブロック単位で変換する第２のデータ変換工程と、前記第１のフレーム内符号化データを復号することによって得られた第１の直交変換係数データと、前フレーム又は後フレームの第２の直交変換係数データとを、前記マクロブロック単位で比較する比較工程と、前記比較工程での比較結果に応じて、前記第２のフレーム内符号化データ及び該第２のフレーム内符号化データの前にスキップするマクロブロック数を示すマクロブロックアドレスインクリメント符号を出力する第１の処理と、前記フレーム間符号化データ及び該フレーム間符号化データの前にスキップするマクロブロック数を示すマクロブロックアドレスインクリメント符号を出力する第２の処理と、前記符号化データを出力しない第３の処理とを選択する選択工程とを有し、前記選択工程では、前記比較工程での比較結果に応じて、データ差が第１所定値より大きい場合に前記第１の処理を選択し、前記データ差が前記第１所定値以下で第２所定値より大きい場合に前記第２の処理を選択し、前記データ差が前記第２所定値以下の場合に前記第３の処理を選択することを特徴とする。
【００２２】
【実施例】
以下、本発明の第１の実施例による画像符号化データ変換装置を図面を参照しながら説明する。図１は、本発明の一実施例による画像符号化データ変換装置の構成を示すブロック図である。
【００２３】
以下の説明では、フレーム内符号化データを、ＪＰＥＧ方式で符号化されたMotionＪＰＥＧデータとし、フレーム間相関を用いた符号化データを、ＭＰＥＧ方式で符号化したデータとする。
【００２４】
図１において、１は、MotionＪＰＥＧデータを格納する記憶装置であり、２は、ＪＰＥＧ方式の復号化を行うＪＰＥＧ復号器である。３は、動画像のフレーム画像を格納するフレームメモリである。４は、フレームメモリ３に格納された画像データを表示するディスプレイである。５は、MotionＪＰＥＧデータをＭＰＥＧ方式で符号化したデータに変換するデータ変換部である。６は、装置外部との通信を制御する通信インターフェースである。７は、コンピュータネットワークや公衆回線（例えばＩＳＤＮ回線）で構成される通信回線である。８は、ＭＰＥＧ方式で符号化されたＭＰＥＧデータを格納する記憶装置である。９は、装置全体を制御統括するＣＰＵである。１０は、ユーザが動画像表示の要求や指定をする入力装置である。
【００２５】
ＪＰＥＧデータのＭＰＥＧデータへの変換は以下の手順で行われる。すなわち、MotionＪＰＥＧデータは、記憶装置１からデータ変換部５に入力される。データ変換部５は、入力されたMotionＪＰＥＧデータをＭＰＥＧデータに変換する。
【００２６】
図２にデータ変換部５のブロック図を示す。同図において、１０１は、ＭＰＥＧ方式の符号化単位分のMotionＪＰＥＧデータを格納するコードバッファである。ここで、ＭＰＥＧ方式の符号化単位をＭＰＥＧ方式のマクロブロックとする。なお、マクロブロックは、左右及び上下に隣合った４つの輝度ブロックＹ0 、Ｙ1 、Ｙ2 、Ｙ3 と画像上では同じ位置にあたる２つの色差ブロックＣｂ、Ｃｒとの全部で６つのブロックで構成される。１０２は、１フレーム分のMotionＪＰＥＧデータを格納するコードメモリである。１０３は、MotionＪＰＥＧデータを入力してＤＣＴ係数を復号する復号器である。１０４、１０５、１０６は、量子化係数を格納するラッチである。１０７、１０８は、ＭＰＥＧ方式の１マクロブロック分の復号化されたＤＣＴ係数を格納するラッチである。
【００２７】
１０９は、ブロック単位でＤＣＴ係数の絶対値差分を求め、各差分値をあらかじめ設定した閾値と比較して判定結果を出力する差分比較器である。１１０は、復号データからＭＰＥＧデータを生成する符号化器である。１１１は、MotionＪＰＥＧデータの符号化データをＭＰＥＧデータに変換するデータ変換器である。１１２は、差分比較器１０９の出力を元にＭＰＥＧデータを生成する符号化器である。１１３は、ＭＰＥＧヘッダデータを生成する符号化器である。１１４は、差分比較器１０９の出力結果に基づき入力を選択して出力するセレクタである。１１５は、セレクタ１１４の出力を格納しておくコードバッファである。１１６は、MotionＪＰＥＧデータの各ヘッダデータを解析するヘッダ解析器である。１１７は、差分出力器１０９の出力を１マクロブロック分格納するラッチである。
【００２８】
ここで、説明を容易にするために入力されるMotionＪＰＥＧデータは４：１：１のサブサンプリング比であるとする。また、ＭＰＥＧ方式のＧＯＰ（Group of Picture）の構成をフレーム内符号化（Intra ）フレーム（以下Ｉフレームと略す）と時間的に前のフレームを参照する動き補償符号化（Predictive）フレーム（以下Ｐフレームと略す）とで構成されるものとする。
【００２９】
ＭＰＥＧ方式のＧＯＰの構成は、ＩフレームとＰフレームとで構成されるものとし、１ＧＯＰの構成を１５フレームとし、各フレームの符号化モードを、
Ｉ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ、Ｐ
とする。
【００３０】
以下、図２における各構成部の動作について詳細に述べる。
まず、MotionＪＰＥＧデータからＭＰＥＧデータへの変換に先立ち、図１のＣＰＵ９によって図２に示す各構成部の初期化が実施される。
【００３１】
次に、MotionＪＰＥＧデータの最初のフレームのヘッダデータが、コードバッファ１０１を経由してヘッダ解析器１１６に入力される。ヘッダ解析器１１６は、MotionＪＰＥＧデータのヘッダデータを解析し、画像サイズ等の画像の属性を得る。この結果は、符号化器１１３に入力される。符号化器１１３は、これらの属性と併せてＣＰＵ９から動画像としての属性、フレームレートや符号化レート等が入力され、これらに基づいてＭＰＥＧヘッダデータを生成する。生成されたＭＰＥＧヘッダデータは、セレクタ１１４を介してコードバッファ１１５に出力する。ここで生成されるＭＰＥＧヘッダデータは、シーケンススタートコード（ＳＳＣ）で始まるシーケンスヘッダデータやＧＯＰスタートコード（ＧＳＣ）で始まるＧＯＰヘッダデータなどから成る。また、ヘッダ解析器１１６はＪＰＥＧ方式で用いた量子化テーブルから予め決められたデフォルト量子化テーブルを用いて量子化係数Ｑ１を求める。求められた量子化係数Ｑ１はラッチ１０５に入力される。デフォルト量子化テーブルは符号化して上記シーケンスヘッダデータに入れる。
【００３２】
以下に、MotionＪＰＥＧデータからＩフレームのＭＰＥＧデータへの変換について述べる。フレーム内符号化に先立ち、ＣＰＵ９は、ＭＰＥＧ方式における符号化制御のために量子化係数Ｑ２をラッチ１０６に格納する。また、符号化器１１３でフレームのヘッダデータ（ピクチャヘッダ）を生成する。ここで、符号化したフレームがＩフレームであることが示されている。
【００３３】
ＭＰＥＧ方式の符号化単位分のMotionＪＰＥＧデータが順に図１の記憶装置１から読み出され、コードバッファ１０１に入力される。フレーム内の位置関係は、ＪＰＥＧ符号化方式のマクロブロックとＭＰＥＧ符号化方式のマクロブロックとは一致する。従って、１マクロブロックには輝度ブロックが４ブロックと色差ブロックが２ブロック含まれる。コードバッファ１０１に格納されたMotionＪＰＥＧデータは、コードメモリ１０２とデータ変換器１１１に入力される。コードメモリ１０２は、ＦＩＦＯメモリ等で構成される。
【００３４】
続いて、マクロブロックデータの処理を行う。もし、入力されたマクロブロックのデータがフレームの左端であれば、符号化器１１３は、スライスヘッダを生成し、セレクタ１１４を介してコードバッファ１１５に出力し格納する。スライスヘッダを生成する時に量子化係数Ｑ２をラッチ１０６から読み出し、符号化してスライスヘッダに入れる。
【００３５】
データ変換器１１１のブロック図を図３に示す。１５０は、量子化係数Ｑ１、Ｑ２を入力し、量子化倍数Ｐ１を求める演算器である。１５１は、入力された符号化データを選択信号に従って出力先を変えるセレクタである。１５２は、ＲＯＭ等で構成されるマクロブロックヘッダ生成器である。１５３は、符号化データ等をアドレスとするＲＯＭ等で構成される、ＤＣＴ係数の直流成分の符号化データを変換するＤＣ変換器である。１５４は、符号化データ等をアドレスとするＲＯＭ等で構成される、ＤＣＴ係数の交流成分の符号化データを変換するＡＣ変換器である。１５５は、選択信号に従って、入力先を変えるセレクタである。
【００３６】
最初に、データ変換器１１１は、マクロブロックのヘッダデータを出力する。このヘッダデータは、符号化するマクロブロックがフレーム内符号化すなわち Intraモードで符号化されることを表すヘッダデータである。ＣＰＵ９は、セレクタ１５５の入力にマクロブロックヘッダ生成器１５２の出力を選択させ、マクロブロックヘッダデータをマクロブロックヘッダ生成器１５２から読み出し、出力する。
【００３７】
続いて、データ変換器１１１は、ブロック単位でＪＰＥＧデータを入力する他にラッチ１０５とラッチ１０６から量子化係数Ｑ１、Ｑ２を入力する。最初に、ラッチ１０５から入力された量子化係数Ｑ１とラッチ１０６から入力された量子化係数Ｑ２とから量子化倍数Ｐ１を演算器１５０で、次式に従って求める。
Ｐ１＝Ｑ２／Ｑ１    ……  （１）
【００３８】
続いて、各ブロックの処理を行う。
ＪＰＥＧデータにおけるブロック単位の符号化データはＤＣＴ直流成分のＤＰＣＭ結果と交流成分の量子化された結果と０ラン長のハフマン符号とで構成される。
【００３９】
まず、直流成分の符号の変換について述べる。サブサンプリング比が４：１：１のＪＰＥＧ方式とＭＰＥＧ方式では同じ順でＺ字でＤＰＣＭがかかる。従って、量子化倍数Ｐ１を用いて直流成分の変換を行う。例えば、入力された輝度成分の差分値Ｄ１が３３であった場合、そのハフマン符号は“１１１０１００００１”である。ここで量子化倍数Ｐ１が３であれば、出力する差分値Ｄ２は、
Ｄ２＝Ｄ１／Ｐ１  ……  （２）
で求められる。
【００４０】
この場合の差分値Ｄ２は１１であり、従って、このハフマン符号は“１０１１０１１”と変換される。実際には、予めＤＣ変換器１５３に量子化倍数Ｐ１の値とハフマン符号をアドレスとして変換結果を格納しておき、ＤＣ変換器１５３のＲＯＭから読み出して変換を行う。
【００４１】
次に、交流成分の符号の変換について述べる。例えば、輝度成分のハフマン符号“１１１１１１１１１０００１００１１０００”は、０ラン長が２で量子化結果Ｒ１が１６であることを示す。量子化倍数Ｐ１が３であれば出力する量子化結果Ｒ２は、
Ｒ２＝Ｒ１／Ｐ１    ……  （３）
から５となり、０ラン長が２で量子化結果が５を表すハフマン符号“１１１１１１０１１１１０１”に変換される。
【００４２】
実際には、予めＡＣ変換器１５４に量子化倍数Ｐ１の値とハフマン符号をアドレスとして変換結果を格納しておき、ＡＣ変換器１５４のＬＵＴとしてのＲＯＭから読み出して変換を行う。
このように変換して得られたＭＰＥＧデータは、コードバッファ１１５に格納される。
【００４３】
以下、マクロブロック単位の処理を行い、１フレームの処理が終了したら、コードバッファ１１５の内容を送出し、図１の記憶装置８に格納したり、通信インターフェース６を介して通信回線７に出力したりする。また、送出した符号長をＣＰＵ９に通報する。その後、コードバッファ１１５をクリアする。
【００４４】
以上述べたように、本実施例によれば、MotionＪＰＥＧデータをＩフレームのＭＰＥＧデータへ変換する場合に、従来のようにMotionＪＰＥＧデータを復号化して画像データに戻すことなく、MotionＪＰＥＧデータと量子化係数とから一次変換によって直接ＭＰＥＧデータへ変換を行っているので、変換時間の短縮化が可能になる。
【００４５】
次に、MotionＪＰＥＧデータからＰフレームのＭＰＥＧデータへの変換について述べる。
動き補償符号化に先立ち、ＣＰＵ９は、前フレームにかかった符号長から符号化制御のための量子化係数Ｑ２を求め、ラッチ１０６に格納する。また、ラッチ１０５の量子化係数Ｑ１′をラッチ１０４に移動させる。そして、ＪＰＥＧ方式で用いた量子化テーブルから予め決められたデフォルト量子化テーブルを用いて量子化係数Ｑ１を求める。求められた量子化係数Ｑ１はラッチ１０５に入力される。符号化器１１３でフレームのピクチャヘッダを生成する。ここで、符号化したフレームがＰフレームであることが示されている。
【００４６】
１マクロブロック分のMotionＪＰＥＧデータが順に記憶装置１から読み出され、コードバッファ１０１に入力される。コードバッファ１０１に格納されたＪＰＥＧデータは、コードメモリ１０２、復号器１０３、データ変換器１１１に入力される。そして、復号器１０３に入力されたＪＰＥＧデータを復号し、ラッチ１０５の量子化係数Ｑ１を用いて各ブロック毎にＤＣＴ係数の直流成分と交流成分を生成し、ラッチ１０７に格納する。続いて、コードメモリ１０２から前フレームの同一位置のマクロブロックのＪＰＥＧデータを読み出し、復号器１０３でＪＰＥＧデータを復号してラッチ１０４の量子化係数Ｑ１′を用いて各ブロック毎にＤＣＴ係数の直流成分と交流成分を生成し、ラッチ１０８に格納する。
【００４７】
その後、差分比較器１０９は、ラッチ１０７とラッチ１０８とから各ブロック毎にＤＣＴ係数を読み出し、各ＤＣＴ係数毎に差分を求めて絶対値を加算する。各ブロックの加算値Ａ１からＡ６を求めた後、もし、全ての加算値が０であり、ラッチ１１７の内容が“１０”または“００”であれば、比較差分器１０９はコード“１０”を生成する。
【００４８】
それ以外の場合、加算値Ａ１からＡ６と予め決定された閾値Ｔ１とを比較し、全ての加算値で、
Ｔ１＞Ａｉ≧０  （ｉ＝１〜６）…  （４）
であれば、差分比較器１０９はコード“００”を生成する。
また、１つでも（４）式の条件を満たさない場合はコード“０１”を生成する。生成したコードは、セレクタ１１４に出力される。
【００４９】
同時に、符号化器１１０は、マクロブロックのヘッダデータを生成する。すなわち、動きベクトルを（０、０）として動きベクトルの符号を生成する。また、符号化器１１０は、符号化するマクロブロックが動き補償符号化、すなわちPredictiveモードで符号化されることを表すヘッダデータを生成し、動きベクトル符号を挿入しておく。
【００５０】
符号化器１１０は、ラッチ１０７から符号化するマクロブロックのＤＣＴ係数を読み込むとともに、ラッチ１０８から符号化するマクロブロックと前フレームの同一位置のマクロブロックのＤＣＴ係数を読み込み、ラッチ１０６から量子化係数Ｑ２を読み込む。そして、符号化器１１０は、ラッチ１０７のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。続いて、ラッチ１０８のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。その後、各画素値の差分を求める。求めた差分値にＤＣＴ変換を施し、量子化係数Ｑ２で量子化し、量子化結果を得る。直流成分に関しては、直前のマクロブロックの差分比較器１０９の出力コードが“００”であれば続いてＤＰＣＭし、そうでなければ新たにＤＰＣＭを初期化して始める。交流成分の量子化結果はＭＰＥＧ方式に従って符号を割り当てておく。
【００５２】
差分比較器１０９の出力コードが“００”であった場合、ラッチ１１７の内容が“１０”であれば、セレクタ１１４は符号化器１１２の内容を出力した後、符号化器１１０の出力を入力してコードバッファ１１５に出力し、格納する。
【００５３】
差分比較器１０９の出力コードが“０１”であった場合、ラッチ１１７の内容が“１０”であれば、セレクタ１１４は符号化器１１２の内容を出力した後、セレクタ１１４はデータ変換器１１１の出力を入力してコードバッファ１１５に出力し、格納する。
【００５４】
差分比較器１０９の出力コードが“１０”であった場合、その結果は符号化器１１２に入力される。このコードが発生したときは、ＭＰＥＧ符号化データは生成されず、符号化器１１２では連続して発生したコード“１０”の回数をカウントし、その数を表現する符号（マクロブロックアドレスインクリメント符号）を生成する。
【００５５】
マクロブロックの処理が終了したら、ラッチ１０７の内容を差分比較器１０９の出力に置き換える。
【００５６】
以下、マクロブロック単位の処理を行い、１フレームの処理が終了したら、コードバッファ１１５の内容を送出し、図１の記憶装置８に格納したり、通信インターフェース６を介して通信回線７に出力したりする。また、送出した符号長をＣＰＵ９に通報する。その後、コードバッファ１１５をクリアする。
【００５７】
以下、各フレームを予め決められた順にＩフレームまたはＰフレームとして符号化し、所望のフレーム数のＭＰＥＧデータを得る。その後、ＭＰＥＧ方式で決められたシーケンスエンドコード等の終了符号を符号化器１１３で生成し、セレクタ１１４を介してコードバッファ１１５を経て送出し、全ての動作を終了する。
【００５８】
以上説明したように、本実施例によれば、フレーム内符号化のみで符号化された動画から動き補償符号化を用いる符号化データへの変換に際して、回路規模が大きく、処理に時間がかかる動きベクトル探索をすることなく、符号化データの変換が瞬時に行える効果がある。
【００５９】
また、ＭＰＥＧ方式で符号化する際に参照フレームを格納しておく作業用のフレームメモリが不要であり、装置全体のコストを下げる効果がある。
【００６０】
さらに、処理に時間がかかる直交変換を省略できるので処理時間を短縮できる効果がある。また、符号化データの変換をＬＵＴで行うことにより、高速な変換が可能となる。
【００６１】
なお、本実施例ではＭＰＥＧ符号化方式を例にとって説明したが、Ｈ．２６１符号化方式であっても本実施例の構成をＨ．２６１の符号に適したものに置き換えることによって本発明を適用できる。
【００６２】
次に、本発明の第２の実施例による画像符号化データ変換装置を図面を参照しながら説明する。
図４は、MotionＪＰＥＧデータを両方向動き補償符号化（Bidirectionaj Predictive）フレーム（以下、Ｂフレームと略す）を導入したＭＰＥＧデータに変換する場合の図１に示すデータ変換部５のブロック図である。
【００６３】
データ変換部５は、入力されたMotionＪＰＥＧデータをＭＰＥＧデータに変換する。すなわち、図４において、２０１は、ＭＰＥＧ方式の１マクロブロック分のMotionＪＰＥＧデータを格納するコードバッファである。２０２、２０３は、１フレーム分のMotionＪＰＥＧデータを格納するコードメモリである。２０４、２０５、２０６は、MotionＪＰＥＧデータを入力してＤＣＴ係数に復号する復号器である。２０７は、MotionＪＰＥＧデータの各ヘッダデータを解析するヘッダ解析器である。２０８、２０９、２１０、２１１は、量子化係数を格納するラッチである。２１２、２１３、２１４は、マクロブロック分の復号化されたＤＣＴ係数を格納するラッチである。
【００６４】
２１５は、ブロック単位でＤＣＴ係数の絶対値差分を求め、各差分値をあらかじめ設定した閾値と比較して判定結果を出力する差分比較器である。２１６は、差分比較器２１５の出力を１マクロブロック分格納するラッチである。２１７、２１８、２１９は、復号データからＭＰＥＧデータを生成する符号化器である。２２０は、ＪＰＥＧデータの符号化データをＭＰＥＧデータに変換するデータ変換器である。２２１は、ＭＰＥＧヘッダデータを生成する符号化器である。２２２は、差分比較器２１５の出力を元にＭＰＥＧデータを生成する符号化器である。２２３は、差分比較器２１５の出力結果に基づき入力を選択して出力するセレクタである。２２４は、セレクタ２２３の出力を格納しておくコードバッファである。
【００６５】
ここで、説明を容易にするために入力されるMotionＪＰＥＧデータは４：１：１のサブサンプリング比であるとする。また、ＭＰＥＧ方式のＧＯＰの構成は、１フレームとＰフレームとＢフレームで構成されるものとし、１ＧＯＰの構成を１５フレームとし、各フレームの符号化モードを、
Ｉ、Ｂ、Ｂ、Ｐ、Ｂ、Ｂ、Ｐ、Ｂ、Ｂ、Ｐ、Ｂ、Ｂ、Ｐ、Ｂ、Ｂ
とする。
【００６６】
以下、図４の各構成部の動作について詳細に述べる。
まず、MotionＪＰＥＧデータからＭＰＥＧデータへの変換に先立ち、ＣＰＵ９によって図４の各構成部の初期化が実施される。
【００６７】
次に、MotionＪＰＥＧデータの最初のフレームのヘッダデータが、コードバッファ２０１を経由してヘッダ解析器２０７に入力される。ヘッダ解析器２０７は、MotionＪＰＥＧデータのヘッダデータを解析し、画像サイズ等の画像の属性を得る。この結果は符号化器２２１に入力される。符号化器２２１は、これらの属性と併せてＣＰＵ９から動画像としての属性、フレームレートや符号化レート等が入力され、ＭＰＥＧヘッダデータを生成し、セレクタ２２３を介してコードバッファ２２４に出力する。ここで生成されるヘッダデータは、シーケンススタートコードで始まるシーケンスヘッダとＧＯＰスタートコードで始まるＧＯＰヘッダデータである。また、ＪＰＥＧ方式で用いた量子化テーブルから予め決められたデフォルト量子化テーブルを用いて量子化係数Ｑ３を求める。求められた量子化係数Ｑ３はラッチ２０８に入力される。デフォルト量子化テーブルは、符号化してシーケンスヘッダデータに入れる。
【００６８】
以下に、MotionＪＰＥＧデータからＩフレームのＭＰＥＧデータへの変換について述べる。フレーム内符号化に先立ち、ＣＰＵ９は、符号制御のために量子化係数Ｑ４をラッチ２１１に格納する。また、符号化器２２１でピクチャヘッダを生成する。ここで、符号化したフレームがＩフレームであることが示されている。
【００６９】
まず、１マクロブロック分のMotionＪＰＥＧデータが順に記憶装置１から読み出され、コードバッファ２０１に入力される。コードバッファ２０１に格納されたＪＰＥＧデータは、コードメモリ２０２とデータ変換器２２０に入力される。入力されたＪＰＥＧデータは、コードメモリ２０２に格納される。同様に、コードメモリ２０２から入力されたのと同一位置のマクロブロックのMotionＪＰＥＧデータがコードメモリ２０３に格納される。コードメモリ２０２、２０３は、ＦＩＦＯメモリで構成される。データ変換器２２０の構成は、第１の実施例のデータ変換器１１１と同様にＬＵＴで構成されている。
【００７０】
続いて、マクロブロックデータの処理を行う。もし、入力されたマクロブロックのデータがフレームの左端であれば、符号化器２２１はスライスヘッダを生成し、セレクタ２２３を介してコードバッファ２２４に出力し、格納する。また、スライスヘッダを生成する時に量子化係数Ｑ４をラッチ２１１から読み出し、符号化してスライスヘッダに入れる。
【００７１】
データ変換器２２０は、マクロブロックのヘッダデータを生成する。すなわち、データ変換器２２０は、Intra モードで符号化されたマクロブロックであることを表すヘッダデータを生成する。
【００７２】
また、データ変換器２２０は、ブロック単位でＪＰＥＧデータを入力する他にラッチ２０８とラッチ２１１とから量子化係数Ｑ３、Ｑ４を入力する。最初にラッチ２０８から入力された量子化係数Ｑ３とラッチ２１１から入力された量子化係数Ｑ４とから量子化倍数Ｐ２を次式に従って求める。
Ｐ２＝Ｑ４／Ｑ３  ……（５）
【００７３】
続いて、各ブロックの処理を行う。
まず、直流成分の符号の変換について述べる。この場合、量子化倍数Ｐ２を用いて直流成分の変換を行う。例えば、入力された輝度成分の差分値Ｄ３が３３であった場合、量子化倍数Ｐが１．５であれば、出力する差分値Ｄ４は、
【００７４】
Ｄ４＝Ｄ３／Ｐ２  ……（６）
で求められ、この場合の差分値Ｄ４は２２である。従って、このハフマン符号は“１１０１０１１０”と変換される。
【００７５】
次に、交流成分の符号の変換について述べる。例えば、輝度成分のハフマン符号“１１１１１１１１１０００１００１１０００”は０ラン長が２で量子化結果Ｒ３が１６であることを示す。量子化倍数Ｐ２が１．５であれば出力する量子化結果Ｒ４は、
Ｒ４＝Ｒ３／Ｐ２  ……（７）
から１０．６となり、四捨五入して０ラン長が２で量子化結果が１１を表すハフマン符号“１１１１１１１１０１００１０１１”に変換される。
【００７６】
これらの変換は、ＲＯＭ等で構成されるＬＵＴ（Look Up Table ）を参照することによって行う。
このように変換して得られたＭＰＥＧデータは、コードバッファ２２４に格納される。
【００７７】
以下、マクロブロック単位の処理を行い、１フレームの処理が終了したら、コードバッファ２２４の内容を送出し、図１の記憶装置８に格納したり、通信インターフェース６を介して通信回線７に出力したりする。また、送出した符号長をＣＰＵ９に通報する。その後、コードバッファ２２４をクリアする。
【００７８】
次に、MotionＪＰＥＧデータからＰフレームのＭＰＥＧデータへの変換について述べる。
Ｐフレームの符号化に先立ち、ＣＰＵ９は、前フレームにかかった符号長から符号化制御のための量子化係数Ｑ４を求め、ラッチ２１１に格納する。また、ラッチ２０９の量子化係数Ｑ３′′をラッチ２１０に移動させるとともにラッチ２０８の量子化係数Ｑ３′をラッチ２０９に移動させる。そして、ＪＰＥＧ方式で用いた量子化テーブルから予め決められたデフォルト量子化テーブルを用いて量子化係数Ｑ３を求める。求められた量子化係数Ｑ３はラッチ２０８に入力される。符号化器２２１でフレームのピクチャヘッダを生成する。ここで、符号化したフレームがＰフレームであることが示されている。
【００７９】
１マクロブロック分の Motion ＪＰＥＧデータが順に記憶装置１から読み出され、コードバッファ２０１に入力される。コードバッファ２０１に格納されたＪＰＥＧデータはコードメモリ２０２、復号器２０４、データ変換器２２０に入力される。復号器２０４は、入力されたＪＰＥＧデータを復号し、ラッチ２０８の量子化係数Ｑ３を用いて各ブロック毎にＤＣＴ係数の直流成分と交流成分を生成し、ラッチ２１２に格納する。同時に、コードメモリ２０２から前のＩフレームまたはＰフレームの同一位置のマクロブロックのＪＰＥＧデータを読み出し、復号器２０５で復号してラッチ２０９の量子化係数Ｑ３′を用いて各ブロック毎にＤＣＴ係数の直流成分と交流成分を生成し、ラッチ２１３に格納する。また、読み出したＪＰＥＧデータはコードメモリ２０３にも入力される。
【００８０】
その後、差分比較器２１５は、ラッチ２１２とラッチ２１３から各ブロック毎にＤＣＴ係数を読み出し、各ＤＣＴ係数毎に差分を求めて絶対値を加算する。各ブロックの加算値Ａ１からＡ６を求めた後、もし、全ての加算値が０であり、ラッチ２１６の内容が“１１０”または“０００”であれば、比較差分器２１５はコード“１１０”を生成する。
【００８１】
それ以外の場合、加算値Ａ１からＡ６と予め決定された閾値Ｔ２と比較し、全ての加算値で、
Ｔ２＞Ａｉ≧０    （ｉ＝１〜６）……（８）
であれば、差分比較器２１５は、コード“０００”を生成する。
【００８２】
また、１つでも（８）式の条件を満たさない場合は、コード“１００”を生成する。生成したコードは、セレクタ２２３に出力される。
【００８３】
これと並行して、符号化器２１７とデータ変換器２２０が以下の動作を実行する。符号化器２２１は、マクロブロックのヘッダデータを生成する。すなわち、動きベクトルを（０、０）として動きベクトルの符号を生成する。また、符号化器２２１は、符号化するマクロブロックが Predictive モードで符号化されることを表すヘッダデータを生成し、動きベクトル符号を挿入しておく。
【００８４】
符号化器２１７はまず、ラッチ２１２から符号化するマクロブロックのＤＣＴ係数を読み込むとともに、ラッチ２１４から符号化するマクロブロックと前のＩフレームまたはＰフレームの同一位置のマクロブロックのＤＣＴ係数を読み込み、ラッチ２１１から量子化係数Ｑ４を読み込む。そして、ラッチ２１２のマクロブロックの各ブロックＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。続いて、ラッチ２１４のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。その後、各画素値の差分を求め、求めた差分値にＤＣＴ変換を施し、量子化係数Ｑ４で量子化し、量子化結果を得る。直流成分に関しては、直前のマクロブロックの差分比較器２１５の出力コードが“０００”であれば続いてＤＰＣＭし、そうでなければ新たにＤＰＣＭを初期化して始める。交流成分の量子化結果は、ＭＰＥＧ方式に従って符号を割り当てておく。
【００８５】
データ変化器２２０に入力されたＪＰＥＧデータはIntra フレームのマクロブロックと同様にＪＰＥＧデータからＭＰＥＧデータへと変換される。
【００８６】
差分比較器２１５の出力コードが“０００”であった場合、ラッチ２１６の内容が“１１０”であれば、セレクタ２２３は符号化器２２２の内容を出力した後、符号化器２１８の出力を入力してコードバッファ２２４に出力し、格納する。
【００８７】
差分比較器２１５の出力コードが“１００”であった場合、ラッチ２１６の内容が“１１０”であれば、セレクタ２２３は符号化器２２２の内容を出力した後、セレクタ２２３はデータ変換器２２０の出力を入力してコードバッファ２２４に出力し、格納する。
【００８８】
差分比較器２１５の出力コードが“１１０”であった場合、その結果は符号化器２２２に入力される。このコードが発生したときは、ＭＰＥＧ符号化データは生成されず、符号化器２２２では連続して発生したコード“１１０”の回数をカウントし、マクロブロックアドレスインクリメント符号を生成する。
【００８９】
マクロブロックの処理が終了したら、ラッチ２１６の内容を差分比較器２１５の出力に置き換える。
【００９０】
以下、マクロブロック単位の処理を行い、１フレームの処理が終了したら、コードバッファ２２４の内容を送出し、図１の記憶装置８に格納したり、通信インターフェース６を介して通信回線７に出力したりする。また、送出した符号長をＣＰＵ９に通報する。その後、コードバッファ２２４をクリアする。
【００９１】
最後に、MotionＪＰＥＧデータからＢフレームのＭＰＥＧデータへの変換について述べる。
Ｂフレームの符号化に先立ち、ＣＰＵ９は、前フレームにかかった符号長から符号化制御のための量子化係数Ｑ４を求め、ラッチ２１１に格納する。また、ラッチ２０９の量子化係数Ｑ３′′をラッチ２１０に移動させるとともにラッチ２０８の量子化係数Ｑ３′をラッチ２０９に移動させる。そして、ＪＰＥＧ方式で用いた量子化テーブルから予め決められたデフォルト量子化テーブルを用いて量子化係数Ｑ３を求める。求められた量子化係数Ｑ３はラッチ２０８に入力される。また、符号化器２２１でフレームのピクチャヘッダを生成する。ここで、符号化したフレームがＢフレームであることが示されている。
【００９２】
１マクロブロック分のMotionＪＰＥＧデータが順に記憶装置１から読み出され、コードバッファ２０１に入力される。コードバッファ２０１に格納されたＪＰＥＧデータは、復号器２０４、データ変換器２２０に入力される。復号器２０４は、入力されたＪＰＥＧデータを復号し、ラッチ２０８の量子化係数Ｑ３を用いて各ブロック毎にＤＣＴ係数の直流成分と交流成分を生成し、ラッチ２１２に格納する。同時に、コードメモリ２０２から後のＩフレームまたはＰフレームの同一位置のマクロブロックのＪＰＥＧデータを読み出し、コードメモリ２０３から前のＩフレームまたはＰフレームの同一位置のマクロブロックのＪＰＥＧデータを読み出す。コードメモリ２０２から読み出されたＪＰＥＧデータは、復号器２０５で復号してラッチ２０９の量子化係数Ｑ３′を用いて各ブロック毎にＤＣＴの直流成分と交流成分を生成し、ラッチ２１３に格納する。コードメモリ２０３から読み出されたＪＰＥＧデータは、復号器２０６で復号してラッチ２１０の量子化係数Ｑ３′′を用いて各ブロック毎にＤＣＴの直流成分と交流成分を生成し、ラッチ２１４に格納する。
【００９３】
その後、差分比較器２１５は、ラッチ２１２、２１３、２１４から各ブロック毎にＤＣＴ係数を読み出し、各ＤＣＴ係数毎に差分を求めて絶対値を加算する。すなわち、差分比較器２１５は、ラッチ２１２とラッチ２１３の各ブロックのＤＣＴ係数毎の差分の絶対値の加算値ＢＡ１からＢＡ６を求める。また、ラッチ２１２とラッチ２１４の各ブロックのＤＣＴ係数毎の差分の絶対値の加算値ＦＡ１からＦＡ６を求める。さらに、ラッチ２１３と２１４の各ブロックのＤＣＴ係数毎の平均値を求め、ラッチ２１２の各係数との差分の絶対値の加算値ＭＡ１からＭＡ６を求める。
【００９４】
もし、加算値ＦＡ１〜６の全ての加算値が０であった場合、ラッチ２１６の内容が“１０１”または“０００”であれば、比較差分器２１５はコード“１０１”を生成する。
また、加算値ＢＡ１〜６の全ての加算値が０であった場合、ラッチ２１６の内容が“１１０”または“００１”であれば、比較差分器２１５はコード“１１０”を生成する。
また、加算値ＭＡ１〜６の全ての加算値が０であった場合、ラッチ２１６の内容が“１１１”または“０１０”であれば、比較差分器２１５はコード“１１１”を生成する。
【００９５】
それ以外の場合、加算値ＦＡ１〜６を全て加えた加算値ＦＡ、加算値ＢＡ１〜６を全て加えた加算値ＢＡ、加算値ＭＡ１〜６を全て加えた加算値ＭＡの内、最小値ＳＡを選択する。すなわち、最小値ＳＡは、
ＳＡ＝ｍｉｎ（ＦＡ、ＢＡ、ＭＡ）  ……  （９）
と表される。
【００９６】
その後、最小値ＳＡと予め決定された閾値Ｔ５と比較し、最小値ＳＡが、
Ｔ５＞ＳＡ                        ……  （１０）
であって、加算値ＦＡが最小であれば、差分比較器２１５はコード“０００”を生成する。加算値ＢＡが最小であれば、差分比較器２１５はコード“００１”を生成する。加算値ＭＡが最小であれば、差分比較器２１５はコード“０１０”を生成する。
【００９７】
また、１つも（１０）式の条件を満たさない場合は、差分比較器２１５はコード“０１１”を生成する。生成したコードは、セレクタ２２３に出力される。
【００９８】
同時に、符号化器２１７、符号化器２１８、符号化器２１９、データ変換器２２０、符号化器２２１が、以下の動作を実行する。
【００９９】
まず、符号化器２２１は、マクロブロックのヘッダデータを生成する。すなわち、時間的に前のフレームからの動きベクトルを（０、０）として動きベクトルの符号を生成する。この時、符号化器２２１は、符号化するマクロブロックがForward Predictiveモードで符号化されることを表すヘッダデータを生成し、動きベクトル符号を挿入しておく。
【０１００】
そして、符号化器２１７はまず、ラッチ２１２から符号化するマクロブロックのＤＣＴ係数を、ラッチ２１４から符号化するマクロブロックと時間的に前のＩフレームまたはＰフレームの同一位置のマクロブロックのＤＣＴ係数を、ラッチ２１１から量子化係数Ｑ４を読み込む。符号化器２１７はさらに、ラッチ２１２のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。続いて、ラッチ２１４のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。その後、各画素値の差分を求め、求めた差分値にＤＣＴ変換を施し、量子化係数Ｑ４で量子化し、量子化結果を得る。直流成分に関しては、直前のマクロブロックの差分比較器２１５の出力コードが“０００”であれば、続いてＤＰＣＭし、そうでなければ新たにＤＰＣＭを初期化して始める。交流成分の量子化結果は、ＭＰＥＧ方式に従って符号を割り当てておく。
【０１０１】
また、符号化器２２１は、マクロブロックのヘッダデータを生成する。すなわち、時間的に後のフレームからの動きベクトルを（０、０）として動きブクトルの符号を生成する。この時、符号化器２２１は、符号化するマクロブロックがBackword Predictive モードで符号化されることを表すヘッダデータを生成し、動きベクトル符号を挿入しておく。
【０１０２】
そして、符号化器２１８はまず、ラッチ２１２から符号化するマクロブロックのＤＣＴ係数を読み込むとともに、ラッチ２１３から符号化するマクロブロックと時間的に後のＩフレームまたはＰフレームの同一位置のマクロブロックのＤＣＴ係数を読み込み、ラッチ２１１から量子化係数Ｑ４を読み込む。符号化器２１８はさらに、ラッチ２１２のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。続いて、ラッチ２１３のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。その後、各画素値の差分を求め、求めた差分値にＤＣＴ変換を施し、量子化係数Ｑ４で量子化し、量子化結果を得る。直流成分に関しては、直前のマクロブロックの差分比較器２１５の出力コードが“００１”であれば、続いてＤＰＣＭし、そうでなければ新たにＤＰＣＭを初期化して始める。交流成分の量子化結果は、ＭＰＥＧ方式に従って符号を割り当てておく。
【０１０３】
さらに、符号化器２２１は、マクロブロックのヘッダデータを生成する。すなわち、時間的に前後のフレームからの各動きベクトルを（０、０）として動きベクトルの符号を生成する。この時、符号化器２２１は、符号化するマクロブロックがBidirectional Predictiveモードで符号化されることを表すヘッダデータを生成し、両動きベクトル符号を挿入しておく。
【０１０４】
そして、符号化器２１９はまず、ラッチ２１２から符号化するマクロブロックのＤＣＴ係数を読み込むとともに、ラッチ２１３から符号化するマクロブロックと時間的に後のＩフレームまたはＰフレームの同一位置のマクロブロックのＤＣＴ係数を読み込み、ラッチ２１４から符号化するマクロブロックと時間的に前のＩフレームまたはＰフレームの同一位置のマクロブロックのＤＣＴ係数を読み込み、ラッチ２１１から量子化係数Ｑ４を読み込む。符号化器２１９はさらに、ラッチ２１３のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生し、ラッチ２１４のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。各画素値で平均を求めておく。続いて、ラッチ２１２のマクロブロックの各ブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。その後、画素毎に画素値と平均値の差分を求め、求めた差分値にＤＣＴ変換を施し、量子化係数Ｑ４で量子化し、量子化結果を得る。直流成分に関しては、直前のマクロブロックの差分比較器２１５の出力コードが“０１０”であれば続いてＤＰＣＭし、そうでなければ新たにＤＰＣＭを初期化して始める。交流成分の量子化結果は、ＭＰＥＧ方式に従って符号を割り当てておく。
【０１０５】
データ変換器２２０に入力されたＪＰＥＧデータは、Intra フレームのマクロブロックと同様にＪＰＥＧデータからＭＰＥＧデータへと変換される。
【０１０６】
差分比較器２１５の出力コードが“０００”であった場合、ラッチ２１６の内容が“１０１”または“１１０”または“１１１”であれば、セレクタ２２３は符号化器２２２の内容を出力した後、符号化器２１７の出力を入力してコードバッファ２２４に出力し、格納する。
【０１０７】
差分比較器２１５の出力コードが“００１”であった場合、ラッチ２１６の内容が“１０１”または“１１０”または“１１１”であれば、セレクタ２２３は符号化器２２２の内容を出力した後、符号化器２１８の出力を入力してコードバッファ２２４に出力し、格納する。
【０１０８】
差分比較器２１５の出力コードが“０１０”であった場合、ラッチ２１６の内容が“１０１”または“１１０”または“１１１”であれば、セレクタ２２３は符号化器２２２の内容を出力した後、符号化器２１９の出力を入力してコードバッファ２２４に出力し、格納する。
【０１０９】
差分比較器２１５の出力コードが“０１１”であった場合、ラッチ２１６の内容が“１０１”または“１１０”または“１１１”であれば、セレクタ２２３は符号化器２２２の内容を出力した後、セレクタ２２３はデータ変換器２２０の出力を入力してコードバッファ２２４に出力し、格納する。
【０１１０】
差分比較器２１５の出力コードが“１０１”であった場合、その結果は符号化器２２２に入力される。このコードが発生したときは、ＭＰＥＧ符号化データは生成されず、符号化器２２２では連続して発生したコード“１０１”の回数をカウントし、マクロブロックアドレスインクリメント符号を生成する。
【０１１１】
差分比較器２１５の出力コードが“１１０”であった場合、その結果は符号化器２２２に入力される。このコードが発生したときは、ＭＰＥＧ符号化データは生成されず、符号化器２２２では連続して発生したコード“１１０”の回数をカウントし、マクロブロックアドレスインクリメント符号を生成する。
【０１１２】
差分比較器２１５の出力コードが“１１１”であった場合、その結果は符号化器２２２に入力される。このコードが発生したときは、ＭＰＥＧ符号化データは生成されず、符号化器２２２では連続して発生したコード“１１１”の回数をカウントし、マクロブロックアドレスインクリメント符号を生成する。
【０１１３】
マクロブロックの処理が終了したら、ラッチ２１６の内容を差分比較器２１５の出力に置き換える。
【０１１４】
以下、マクロブロック単位の処理を行い、１フレームの処理が終了したら、コードバッファ２２４の内容を送出し、図１の記憶装置８に格納したり、通信インターフェス６を介して通信回線７に出力したりする。また、送出した符号長をＣＰＵ９に通報する。その後、コードバッファ２２４をクリアする。
【０１１５】
以下、各フレームを予め決められた順にＩフレームまたはＰフレームとして符号化し、所望のフレーム数のＭＰＥＧデータを得る。その後、ＭＰＥＧ方式で決められたシーケンスエンドコード等の終了符号を符号化器２２１で生成し、セレクタ２２３を介してコードバッファ２２４を経て送出し、全ての動作を終了する。
【０１１６】
次に、本発明の第３の実施例による画像符号化データ変換装置について図５を参照しながら説明する。
本発明の第３の実施例は、演算装置でソフトウェアを用いてデータ処理する場合を示したもので、図５は、本発明の第３の実施例による画像符号化データ変換装置の構成を示すブロック図であり、図６〜図１４は、本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。なお、図５において、図１と同一の構成のものには同一の符号を付して説明を省略した。
【０１１７】
図５で、３０１は、装置全体を制御統括し、MotionＪＰＥＧデータをＭＰＥＧデータに変換するＣＰＵである。３０２は、データ処理をするためのソフトウェアを格納しておくプログラムメモリであり、３０３は、処理をするための作業領域を確保するための作業メモリである。
【０１１８】
説明を容易にするため、入力されるMotionＪＰＥＧデータは４：１：１のサブサンプリング比であるとする。また、ＭＰＥＧ方式のＧＯＰは、ＩフレームとＰフレームとで構成されるものとする。
【０１１９】
まず、図６のステップＳ０１に示すように、ＣＰＵ３０１は、プログラムメモリ３０２からMotionＪＰＥＧデータ／ＭＰＥＧデータ変換のためのプログラムを読み込み、実行を開始する。
【０１２０】
次に、ステップＳ０２に示すように、量子化倍数Ｐ３の値と直流成分のハフマン符号とをアドレスとする変換結果のＬＵＴ（直流成分変換ＬＵＴ）を作業メモリ３０３に格納する。
【０１２１】
次に、ステップＳ０３に示すように、量子化倍数Ｐ３の値と交流成分のハフマン符号とをアドレスとする変換結果のＬＵＴ（交流成分変換ＬＵＴ）を作業メモリ３０３に格納する。
【０１２２】
次に、ステップＳ０４に示すように、MotionＪＰＥＧデータのフレームのヘッダデータを読み込み、ＪＰＥＧデータのヘッダデータを解析し、画像サイズ等の画像の属性を得る。
【０１２３】
次に、ステップＳ０５に示すように、各属性、デフォルト量子化テーブルと併せて動画像としての属性を加え、ＭＰＥＧデータのシーケンスヘッダとＧＯＰヘッダデータを生成し、出力する。
【０１２４】
以下に、Ｉフレームの変換について述べる。
まず、ステップＳ０９に示すように、生成するフレームがＩフレームかＰフレームかを判定し、Ｉフレームを生成する場合はステップＳ１０に移る。
【０１２５】
次に、ステップＳ１０に示すように、ＪＰＥＧ符号化データの量子化テーブルから、ＪＰＥＧ方式デフォルト量子化テーブルを用いて量子化係数Ｑ８を求める。
【０１２６】
次に、ステップＳ１１に示すように、ＭＰＥＧ方式における符号化制御のために量子化係数Ｑ９を決定する。
【０１２７】
次に、図７のステップＳ１２に示すように、Ｉフレームであることを示すピクチャヘッダを生成する。
【０１２８】
次に、ステップＳ１４に示すように、１マクロブロック分のMotionＪＰＥＧデータが順に記憶装置１から読み出される。読み出されたMotionＪＰＥＧデータは、マクロブロック単位で作業メモリ３０３に格納される。
【０１２９】
もし、ステップＳ１５に示すように、入力されたマクロブロックのデータがフレームの左端であれば、ステップＳ１６に示すように、量子化係数Ｑ９を読み出し、スライスヘッダを生成し、出力する。
【０１３０】
次に、ステップＳ１７に示すように、マクロブロックの処理に先立ち、Intra モードで符号化することを表すマクロブロックのヘッダデータを生成し、出力する。
【０１３１】
次に、ステップＳ１８に示すように、ブロック単位でＪＰＥＧデータを処理する。量子化係数Ｑ８と量子化係数Ｑ９とから量子化倍数Ｐ３を次式に従って求める。
Ｐ３＝Ｑ８／Ｑ９…（１１）
【０１３２】
次に、図８のステップＳ２０に示すように、量子化倍数Ｐ３とハフマン符号から作業メモリ３０３の直流成分変換ＬＵＴを参照して、直流成分におけるＪＰＥＧデータからＭＰＥＧデータへの変換を行う。変換して得られた符号化データは出力される。
【０１３３】
例えば、輝度成分の直流成分のＪＰＥＧデータの差分値Ｄ５が２０であった場合、そのハフマン符号は“１１０１０１００”である。ここで量子化倍数Ｐ３が２．５であれば、出力するＭＰＥＧデータの差分値Ｄ６は、
Ｄ６＝Ｄ５／Ｐ３…（１２）
で求められる。
【０１３４】
この場合は、差分値Ｄ６は４であり、従って、このハフマン符号は“１００１００”と変換される。変換して得られた符号化データは、作業メモリ３０３に一時格納する。
【０１３５】
次に、ステップＳ２２に示すように、交流成分におけるＪＰＥＧデータからＭＰＥＧデータへの変換を、同様に量子化倍数Ｐ３とハフマン符号から作業メモリ３０３の交流成分変換ＬＵＴを参照して行う。変換して得られた符号化データは出力される。
【０１３６】
入力されたＪＰＥＧデータの量子化結果Ｒ５と量子化倍数Ｐ３とから変換後のＭＰＥＧデータの量子化結果Ｒ６は、
Ｒ６＝Ｒ５／Ｐ３…（１３）
で求められる。
【０１３７】
例えば、量子化倍数Ｐ３が７であって、０ラン長が５で量子化結果Ｒ５が３であることを示すハフマン符号“１１１１１１１０１１１１１”が入力されたとする。このときの量子化結果Ｒ６は、１以下になってしまうが、切り上げて１とする。従って、０ラン長が５で量子化結果が１を表すハフマン符号“１１１１０１０１”に変換される。
【０１３８】
以上のような交流成分の変換を、ステップＳ２１に示すように、全ての交流成分が終了するまで続け、終了したらステップＳ１９に戻る。
【０１３９】
以下、ステップＳ１９に示すように、マクロブロック単位の処理を行い、１フレームの処理が終了したら、図７のステップＳ１３に示すように、次のフレームの処理に移る。
【０１４０】
図５において、もし、ステップＳ０６に示すように、次のフレームがない場合には、動画像が終了したので、ステップＳ０７に示すように、シーケンスの終了コードを生成して出力し、ステップＳ０８に示すように、処理を終了する。
【０１４１】
次に、Ｐフレームのデータへの変換について述べる。
まず、ステップＳ０９に示すように、生成するフレームがＩフレームかＰフレームかを判定し、Ｐフレームを生成する場合はステップＳ２３に移る。
【０１４２】
次に、ステップＳ２３に示すように、ＪＰＥＧ符号化データの量子化テーブルから、ＪＰＥＧ方式デフォルト量子化デーブルを用いて量子化係数Ｑ１０を求める。
【０１４３】
次に、ステップＳ２４に示すように、前フレームのＪＰＥＧデータの量子化係数（前フレームがＩフレームであれば前述の量子化係数Ｑ８、Ｐフレームであれば前フレームの量子化係数Ｑ１０）を量子化係数Ｑ１１として保持しておく。
【０１４４】
次に、図９のステップＳ２５に示すように、符号化制御のために量子化係数Ｑ１２を決定する。
【０１４５】
次に、ステップＳ２６に示すように、Ｐフレームであることを示すピクチャヘッダを生成する。
【０１４６】
次に、ステップＳ２８に示すように、１マクロブロック分のMotionＪＰＥＧデータが、順に記憶装置１から読み出される。読み出されたMotionＪＰＥＧデータは、マクロブロック単位で作業メモリ３０３に格納される。
【０１４７】
もし、ステップＳ２９に示すように、入力されたマクロブロックのデータがフレームの左端であれば、ステップＳ３０に示すように、量子化係数Ｑ１２を読み出し、スライスヘッダを生成し、出力する。
【０１４８】
続いて、マクロブロック単位でＪＰＥＧデータを処理する。
すなわち、図１０のステップＳ３２に示すように、ＪＰＥＧデータを復号し、量子化係数Ｑ１０とＪＰＥＧ方式デフォルト量子化テーブルを用いて各ブロックのＤＣＴの直流成分と交流成分を生成する。
【０１４９】
次に、ステップＳ３３に示すように、前フレームの同一位置のマクロブロックのＪＰＥＧデータを作業メモリ３０３から読み出して復号し、量子化係数Ｑ１１とＪＰＥＧ方式デフォルト量子化テーブルを用いて各ブロックのＤＣＴ係数の直流成分と交流成分を生成する。
【０１５０】
次に、ステップＳ３４に示すように、各ブロック毎にＤＣＴ係数毎の差分を求めて絶対値を加算する。これらの処理を６つのブロック全てについて行い、終了したらステップＳ３５に移る。なお、加算の結果をブロックの順にＡＡ１からＡＡ６とする。
【０１５１】
もし、ステップＳ３５に示すように、全ての加算値ＡＡ１〜６が０、すなわち、
ＡＡｉ＝０（ｉ＝１〜６）  …（１４）
であれば、動きベクトル（０，０）で符号が発生しないマクロブロックであることを示している。
【０１５２】
この場合は、もし、ステップＳ３６に示すように、直前のマクロブロックの符号化モードがPredictiveモードであれば、スキップの処理を実施する。
【０１５３】
すなわち、ステップＳ３７に示すように、スキップのマクロブロックを計数しておく。
【０１５４】
もし、ステップＳ３６に示すように、直前のマクロブロックの符号化モードがPredictiveモードでなければ、図１３のステップＳ５３に示すように、動きベクトル（０，０）のPredictiveモードで符号化されることを表すマクロブロックヘッダを出力する。
【０１５５】
さらに、ステップＳ５４に示すように、スキップするマクロブロックの計数値を０とする。
【０１５６】
もし、図１０のステップＳ３５に示すように、ブロックの加算値ＡＡ１〜６が全て０でなければ、図１１のステップＳ３８に示すように、加算値ＡＡ１からＡＡ６と予め決定された閾値Ｔ３と比較し、全ての加算値で、
Ｔ３＞ＡＡｉ＞０  （ｉ＝１〜６）…  （１５）
であれば、Predictiveモードの符号を生成する。
【０１５７】
次に、ステップＳ３９に示すように、Predictiveモードで符号化されることを表すマクロブロックのヘッダデータを生成する。このヘッダデータには、動きベクトル（０，０）の符号と、加算値ＡＡ１〜６が０でないブロックの位置を表す符号を生成し、マクロブロックヘッダに入れて出力する。
【０１５８】
次に、ステップＳ４１に示すように、符号化するフレームの加算値ＡＡｉ（ｉ＝１〜６）が０でないブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。
【０１５９】
次に、ステップＳ４２に示すように、符号化する直前のフレームの同一位置のブロックの、加算値ＡＡｉ（ｉ＝１〜６）が０でないブロックのＤＣＴ係数を逆ＤＣＴ変換して画素値を再生する。
【０１６０】
その後、ステップＳ４３に示すように、各画素値の差分を求める。
【０１６１】
次に、ステップＳ４４に示すように、求めた差分値にＤＣＴ変換を施し、量子化係数Ｑ１２で量子化し、量子化結果を得る。以上の処理をステップＳ４０に示すように、全てのブロックについて行い、終了したらステップＳ４５に移る。
【０１６２】
もし、図１２のステップＳ４５に示すように、直流成分に関しては、直前のマクロブロックがPredictiveモードで符号化されていれば、ステップＳ４６に示すように、ＤＰＣＭを行い、ＭＰＥＧ方式の符号で符号化し、出力する。また、直前のマクロブロックのモードIntra モードであったり、左端のマクロブロックであれば、ステップＳ４７に示すように、新たにＤＰＣＭを初期化して、ステップＳ４８に示すように、直流成分の符号化を行う。
【０１６３】
次に、ステップＳ４９に示すように、交流成分の量子化結果は、ＭＰＥＧ方式に従って符号を割り当て、出力する。
【０１６４】
次に、ステップＳ５０に示すように、全てのブロックについてステップＳ５１の直流成分の符号化及びステップＳ５２の交流成分の符号化を行い、終了したらステップＳ２７に戻る。
【０１６５】
また、図１１のステップＳ３８に示すように、１つでも（１５）式の条件を満たさない場合は、Intra モードの符号に変換して出力する。
【０１６６】
変換に先立ち、直前のマクロブロックがスキップ処理がされていれば、ステップＳ５５に示すように、計数値に見合ったマクロブロックアドレスインクリメント符号として出力する。
【０１６７】
変換の詳細は、図１４のステップＳ５６〜６１のＩフレームのマクロブロックの変換処理と同様の処理を実施する。
【０１６８】
以下、マクロブロック単位の処理を行い、図６のステップＳ０６に示すように、１フレームの処理が終了したら、次のフレームの処理に移る。
【０１６９】
もし、次のフレームがない場合には動画像が終了したので、ステップＳ０７に示すように、シーケンスの終了コードを生成して出力し、ステップＳ０８に示すように、処理を終了する。
【０１７０】
なお、本実施例ではＭＰＥＧ符号化方式を例にとって説明したが、Ｈ．２６１符号化方式であっても本実施例の構成をＨ．２６１の符号に適したものに置き換えることによって本発明を適用できる。また、ＭＰＥＧ方式のＧＯＰがＩフレームとＰフレームとで構成される場合について説明したが、Ｂフレームを導入したＭＰＥＧ方式への変換に本発明を適用してもよい。また、本実施例においては、Ｉフレームのマクロブロックの変換処理を行うに際しては、図１４のステップＳ５６〜６１を用いたが、これに限らず他の処理としてもよい。
【０１７１】
また、動画像の符号化の例としてＭＰＥＧ方式やＨ．２６１方式を例にとったが、動画像の符号化方式はこれに限定されず、動き補償をする符号化であれば良い。さらに、画像のサンプリングで４：１：１を例にとって説明したが、４：４：４や４：２：２を入力とした場合でも色度成分のみを再生してサブサンプリングした後符号化すれば良い。
【０１７２】
【発明の効果】
以上説明したように、本発明によれば、第１の符号化方式でフレーム内符号化された第１のフレーム内符号化データを、第２の符号化方式の第２のフレーム内及びフレーム間符号化データに効率よく変換することができ、データ量も大幅に削減することができる。
【図面の簡単な説明】
【図１】本発明の一実施例による画像符号化データ変換装置の構成を示すブロック図である。
【図２】本発明の第１実施例によるデータ変換部の構成を示すブロック図である。
【図３】本発明の一実施例によるデータ変換器の構成を示すブロック図である。
【図４】本発明の第２実施例によるデータ変換部の構成を示すブロック図である。
【図５】本発明の第３実施例による画像符号化データ変換装置の構成を示すブロック図である。
【図６】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【図７】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【図８】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【図９】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【図１０】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【図１１】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【図１２】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【図１３】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【図１４】本発明の第３実施例による画像符号化データ変換の手順を表すフローチャートである。
【符号の説明】
１、８  記憶装置
２  ＪＰＥＧ復号器
３  フレームメモリ
４  ディスプレイ
５  データ変換部
６  通信インターフェイス
７  通信回線
９、３０１  ＣＰＵ
１０  入力装置
１０１、１１５、２０１、２２４  コードバッファ
１０２、２０２、２０３  コードメモリ
１０３、２０４、２０５、２０６  復号器
１０４、１０５、１０６、１０７、１０８、１１７、２０８、２０９、２１０、２１１、２１２、２１３、２１４、２１６  ラッチ
１０９、２１５  差分比較器
１１０、１１２、１１３、２１７、２１８、２１９、２２１、２２２  符号化器
１１１、２２０  データ変換器
１１４、１５１、１５５、２２３  セレクタ
１１６、２０７  ヘッダ解析器
１５０  演算器
１５２  マクロブロックヘッダ生成器
１５３  ＤＣ変換器
１５４  ＡＣ変換器
３０２  プログラムメモリ
３０３  作業メモリ
【図１】
0003715664.tif 000002
【図２】
0003715664.tif 000003
【図３】
0003715664.tif 000004
【図４】
0003715664.tif 000005
【図５】
0003715664.tif 000006
【図６】
0003715664.tif 000007
【図７】
0003715664.tif 000008
【図８】
0003715664.tif 000009
【図９】
0003715664.tif 000010
【図１０】
0003715664.tif 000011
【図１１】
0003715664.tif 000012
【図１２】
0003715664.tif 000013
【図１３】
0003715664.tif 000014
【図１４】
0003715664.tif 000015