(57)【要約】【課題】ヘッダ省略モードにおいても画質劣化を低減するための技術を提供する。【解決手段】画像符号化装置であって、符号化対象のブロックを第１の符号化モードで符号化した場合の符号長が所定値を超える場合に第２の符号化モードを選択し、符号化手段が符号化対象のブロックの画像データを符号化することにより得られた符号化データに対し、第２の符号化モードを選択したことを示すフラグ情報を含むヘッダを多重し、フラグ情報のビットは符号化対象のブロックに含まれる画素のうちいずれかの第１の画素のビット数を削除することにより確保し、第１の画素の位置を同一のフレーム画像における符号化対象の第１のブロックと符号化対象の第２のブロックとで異ならせる。【選択図】  図１
2019114868.tif 000002
【特許請求の範囲】
【請求項１】
画像符号化装置であって、
それぞれが所定数の画素からなる複数のグループを含む符号化対象のブロックの符号長が、前記符号化対象のブロックの目標符号量に応じた所定値を超えないように、前記グループごとに、前記グループの画像データの符号化処理における量子化のための量子化ステップと符号化方式とを決定する決定手段であって、
前記符号化対象のブロックにおける前記グループごとに、量子化された画像データを出力する第１の符号化方式と、量子化された画像データと予測データとの差分に基づくデータを出力する第２の符号化方式とのうち、符号長がより小さくなる符号化方式を選択する第１の符号化モードと、前記符号化対象のブロックにおける前記複数のグループの全てについて前記第１の符号化方式を選択する第２の符号化モードとのうち、いずれかの符号化モードを、前記符号化対象のブロックを単位として選択し、
前記選択した符号化モードに従い前記グループごとに前記符号化方式と前記量子化ステップとを決定する決定手段と、
前記決定手段により選択された符号化モードに従って符号化対象のブロックの画像データを符号化する符号化手段であって、前記符号化対象のブロックに含まれる前記グループごとに前記決定手段が決定した前記量子化ステップと前記符号化方式とに基づき前記符号化処理を行う符号化手段と
を備え、
前記決定手段は、前記符号化対象のブロックを前記第１の符号化モードで符号化した場合の符号長が前記所定値を超える場合に、前記第２の符号化モードを選択し、
前記決定手段が前記第２の符号化モードを選択した場合に、
前記符号化手段は、前記符号化対象のブロックの画像データを符号化することにより得られた符号化データに対し、前記決定手段が前記第２の符号化モードを選択したことを示すフラグ情報を含むヘッダを多重し、
前記フラグ情報のビットは、前記符号化対象のブロックに含まれる画素のうちいずれかの第１の画素のビット数を削除することにより確保され、前記第１の画素の位置は、同一のフレーム画像における符号化対象の第１のブロックと符号化対象の第２のブロックとで異なることを特徴とする画像符号化装置。
【請求項２】
前記第１の画素の位置は、前記同一のフレーム画像の縦方向に隣接するブロックにおいて、該ブロック内での位置が同一にならないよう決定されることを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記第１の画素の位置は、フレーム画像における前記符号化対象のブロックの位置に応じて決定されることを特徴とする請求項１または２に記載の画像符号化装置。
【請求項４】
前記符号化対象のブロックの前記位置は、前記フレーム画像における前記符号化対象のブロックのライン位置であることを特徴とする請求項３に記載の画像符号化装置。
【請求項５】
前記第１の画素は、前記符号化対象のブロック内の所定の位置の画素の画素値に基づいて決定されることを特徴とする請求項１に記載の画像符号化装置。
【請求項６】
前記所定の位置の画素値は、前記符号化対象のブロックの先頭に位置する画素であることを特徴とする請求項５に記載の画像符号化装置。
【請求項７】
前記所定の位置は、フレーム画像ごとに異なることを特徴とする請求項５に記載の画像符号化装置。
【請求項８】
前記所定の位置を示す情報が、符号化された前記フレーム画像のヘッダに含まれることを特徴とする請求項７に記載の画像符号化装置。
【請求項９】
画像を取得する取得手段と、
前記取得手段が取得した前記画像を符号化処理する請求項１から８のいずれか１項に記載の画像符号化装置と
を備えることを特徴とする画像処理装置。
【請求項１０】
画像符号化装置の制御方法であって、
それぞれが所定数の画素からなる複数のグループを含む符号化対象のブロックの符号長が、前記符号化対象のブロックの目標符号量に応じた所定値を超えないように、前記グループごとに、前記グループの画像データの符号化処理における量子化のための量子化ステップと符号化方式とを決定する決定工程であって、
前記符号化対象のブロックにおける前記グループごとに、量子化された画像データを出力する第１の符号化方式と、量子化された画像データと予測データとの差分に基づくデータを出力する第２の符号化方式とのうち、符号長がより小さくなる符号化方式を選択する第１の符号化モードと、前記符号化対象のブロックにおける前記複数のグループの全てについて前記第１の符号化方式を選択する第２の符号化モードとのうち、いずれかの符号化モードを前記符号化対象のブロックを単位として選択し、
前記選択した符号化モードに従い前記グループごとに前記符号化方式と前記量子化ステップとを決定する決定工程と、
前記決定工程において選択された符号化モードに従って符号化対象のブロックの画像データを符号化する符号化工程であって、前記符号化対象のブロックに含まれる前記グループごとに前記決定工程において決定された前記量子化ステップと前記符号化方式とに基づき前記符号化処理を行う符号化工程とを含み、
前記決定工程では、前記第１の符号化モードで符号化した場合の符号長が前記所定値を超える場合に前記第２の符号化モードを選択し、
前記決定工程において前記第２の符号化モードが選択された場合に、
前記符号化工程では、前記符号化対象のブロックの画像データを符号化することにより得られた符号化データに対し、前記決定工程において前記第２の符号化モードが選択されたことを示すフラグ情報を含むヘッダを多重し、
前記フラグ情報のビットは、前記符号化対象のブロックに含まれる画素のうちいずれかの第１の画素のビット数を削除することにより確保され、前記第１の画素の位置は、同一のフレーム画像における符号化対象の第１のブロックと符号化対象の第２のブロックとで異なることを特徴とする画像符号化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像符号化装置、画像処理装置、画像符号化方法に関する。
【背景技術】
【０００２】
近年、デジタルビデオなどの撮像装置は高解像度化、高フレームレート化に伴って、システムで扱う画像データ量が著しく増加しており、画像メモリやバスインターフェース回路の高速化が要求されている。これに対し、画像メモリやバスインターフェースの前後で画像の圧縮符号化を行って、画像データ量を削減することで回路の高速化の要求に対応することができる。
【０００３】
この場合、画像圧縮のための符号化方式は回路規模が小型で、符号化遅延の小さいことが望まれる。そのため、従来のＪＰＥＧやＭＰＥＧ２に代表されるＤＣＴベースの符号化方式は不向きである。そこでＤＰＣＭ（Differential Pulse Code Modulation：差分パルス符号変調）ベースの予測符号化方式での提案がされている（特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−００４５１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ＤＰＣＭベースの予測符号化方式では、画素レベルの変動が大きいエッジ部分の画質劣化が生じやすい。特許文献１の提案方式では、隣接画素データの差分値が所定の閾値以下であれば画質劣化の少ない符号化が可能である。しかし、急峻なエッジ部分のように隣接画素データの差分値が所定の閾値を超える場合、量子化により元の画素データビットを半分にする（例えば、１０ビットから５ビットにする）必要があり、大きな画質劣化の原因になる。同様に、予測画像と符号化対象画像との差分が大きい場合にも、大きな画質劣化の原因となる。
【０００６】
これに対し、効率的に符号化を行い、急峻なエッジ部分などの画素間での差分が大きい部分での画質劣化を低減すべく、発生符号量の大きさに応じてＤＰＣＭとＰＣＭ（Pulse Code Modulation：パルス符号変調）とを切替え、かつ、発生符号量が目標符号量以内となるように量子化パラメータを調整する方法が考えられる。また、当該方法によっても発生符号量が目標符号量以内に収まらない場合、目標符号量に合わせて固定的な量子化パラメータを用いてＰＣＭ方式により符号化することができる。その際、当該方式が採用されたことを示すフラグを符号化データのヘッダに挿入する必要があるが、結果的にヘッダには当該フラグ情報が含まれれば足り、ヘッダサイズを最小限とすることができる。このような動作モードは「ヘッダ省略モード」と呼ばれ、当該フラグ値を示すビットは符号化データの単位となるブロック内のいずれか１つの画素から持ってくることになる。しかし、その操作により当該画素は量子化後のデータサイズがブロック内の他の画素よりも小さくなるため、画質劣化を引き起こす更なる要因となる。
【０００７】
そこで、本発明は、ヘッダ省略モードにおいても画質劣化を低減するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するための本発明は、画像符号化装置であって、
それぞれが所定数の画素からなる複数のグループを含む符号化対象のブロックの符号長が、前記符号化対象のブロックの目標符号量に応じた所定値を超えないように、前記グループごとに、前記グループの画像データの符号化処理における量子化のための量子化ステップと符号化方式とを決定する決定手段であって、
前記符号化対象のブロックにおける前記グループごとに、量子化された画像データを出力する第１の符号化方式と、量子化された画像データと予測データとの差分に基づくデータを出力する第２の符号化方式とのうち、符号長がより小さくなる符号化方式を選択する第１の符号化モードと、前記符号化対象のブロックにおける前記複数のグループの全てについて前記第１の符号化方式を選択する第２の符号化モードとのうち、いずれかの符号化モードを、前記符号化対象のブロックを単位として選択し、
前記選択した符号化モードに従い前記グループごとに前記符号化方式と前記量子化ステップとを決定する決定手段と、
前記決定手段により選択された符号化モードに従って符号化対象のブロックの画像データを符号化する符号化手段であって、前記符号化対象のブロックに含まれる前記グループごとに前記決定手段が決定した前記量子化ステップと前記符号化方式とに基づき前記符号化処理を行う符号化手段とを備え、
前記決定手段は、前記符号化対象のブロックを前記第１の符号化モードで符号化した場合の符号長が前記所定値を超える場合に、前記第２の符号化モードを選択し、
前記決定手段が前記第２の符号化モードを選択した場合に、
前記符号化手段は、前記符号化対象のブロックの画像データを符号化することにより得られた符号化データに対し、前記決定手段が前記第２の符号化モードを選択したことを示すフラグ情報を含むヘッダを多重し、
前記フラグ情報のビットは、前記符号化対象のブロックに含まれる画素のうちいずれかの第１の画素のビット数を削除することにより確保され、前記第１の画素の位置は、同一のフレーム画像における符号化対象の第１のブロックと符号化対象の第２のブロックとで異なることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ヘッダ省略モードにおいても画質劣化を低減するための技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】発明の実施形態に対応する画像処理装置及び画像符号化部の構成例を示すブロック図。
【図２】発明の実施形態に対応する画像復号化部の構成例を示すブロック図。
【図３】発明の実施形態に対応する画像符号化部の構成例を示すブロック図。
【図４】符号化ブロックを構成する画素データと画素グループとの関係を説明するための図。
【図５】発明の実施形態に対応するＱＰ決定部における処理の一例を示すフローチャート。
【図６】図５のＳ５０３の処理の一例を示すフローチャート。
【図７】発明の実施形態に対応する符号長比較部における処理の一例を示すフローチャート。
【図８】図５のＳ５０４の処理の一例を示すフローチャート。
【図９】発明の実施形態に対応する画素グループ単位の符号長及び選択されたＱＰの一例を示す図。
【図１０】発明の実施形態に対応する符号化データのフォーマットの例を示す図。
【図１１】発明の実施形態に対応するヘッダ省略判定部における処理の一例を示すフローチャート。
【図１２】発明の実施形態に対応する符号化データのフォーマットの例、及び、１ビット多く削除して量子化された画素位置の例を示す図。
【図１３】発明の実施形態に対応する画像符号化部の構成例を示すブロック図、及び、発明の実施形態に対応する画像復号部の構成例を示すブロック図。
【図１４】発明の実施形態に対応する１ビット多く量子化された画素位置と位置を定めるテーブルの例を示す図。
【図１５】発明の第２の実施形態に対応する符号化データのデータフォーマットの例を示す図、及び、１ビット多く削除して量子化された画素位置を示す図。
【発明を実施するための形態】
【００１１】
以下、発明の実施形態に対応する画像処理装置を説明する。図１（ａ）は発明の実施形態における画像処理装置の構成の一例を示す図である。画像処理装置１００は、例えば取得部１０、画像符号化部２０、メモリ３０を有する。図１の画像処理装置１００において、各ブロックは、撮像素子や表示素子のような物理的デバイスを除き専用のデバイス、ロジック回路やメモリを用いてハードウェア的に構成されてもよい。或いは、メモリに記憶されている処理プログラムをＣＰＵ等のコンピュータが実行することにより、ソフトウェア的に構成されてもよい。画像処理装置１００は例えばデジタルカメラとして実施することができるが、それ以外にも、例えばパーソナルコンピュータ、携帯電話、スマートフォン、ＰＤＡ、タブレット端末、デジタルビデオカメラなどの任意の情報処理端末或いは撮像装置とすることができる。
【００１２】
図１（ａ）において、取得部１０は画像を入力する機能を有する。取得部１０は、例えば、撮像センサを備える撮像部や、外部から伝送路を介して画像を入力する構成を含む。或いは、取得部１０は、記録媒体などから画像を読み出す構成を含む。また、取得される画像は、静止画であってもよく、動画データであってもよい。取得部１０が取得する画像が動画の場合、複数のフレームからなる動画が連続的に取得されてもよい。
【００１３】
取得部１０は、取得した画像を画像符号化部２０に供給する。また、画像と共に、画像符号化部２０に対して、符号化単位となる所定のブロックの当該画像における位置を示す座標情報を提供することができる。当該座標情報については図１３等を参照して後述する。画像符号化部２０は、取得部１０から供給される画像をパルス符号変調（ＰＣＭ）または差分パルス符号変調（ＤＰＣＭ）のいずれかの符号化方式に従って符号化し、情報量が圧縮された符号化データを出力する。出力された符号化データは、メモリ３０に記憶される。メモリ３０は、画像符号化部２０から出力された符号化データを記憶するために必要な記憶容量を有する。メモリ３０に記憶された符号化データには後段の処理部において現像処理や更なる圧縮処理が実施される。
【００１４】
なお、図１（ａ）では、取得部、画像符号化部２０及びメモリ３０を独立した構成として示しているが、画像処理装置１００に実装するに当り、これらを一体に例えば１チップに統合してもよいし、あるいは別体として独立に構成しても良い。
【００１５】
＜画像符号化部の説明＞
以下、図１（ｂ）を参照して、発明の実施形態に対応する画像符号化部２０の構成及び動作を説明する。図１（ｂ）は、発明の実施形態に係る画像符号化部２０の構成例を示すブロック図である。画像符号化部２０は、仮符号化系１１０と本符号化系１２０の２つの大ブロックより構成される。さらに仮符号化系１１０は符号化部１１１Ａ〜１１１Ｄ、ＱＰ決定部１１５および１１６、ヘッダ省略判定部１１７から構成される。
【００１６】
仮符号化系１１０は、本符号化系１２０で本符号化を行う際に使用する量子化パラメータのセット及びヘッダ省略モードフラグを決定するように動作する。ヘッダ省略モードフラグは、本符号化系１２０が実施する符号化処理において、後述するＰＣＭ／ＤＰＣＭが混在し得る第１の符号化モードとＰＣＭに固定される第２の符号化モードとを切替えるために使用される。本符号化系１２０は、遅延部１２１、符号化部１１１Ｅ、多重化部１２３で構成され、仮符号化系１１０で決定された量子化パラメータのセットを用いた量子化処理を含む本符号化を実行する。また、符号化結果を多重化し、ヘッダ省略モードフラグの値に従って符号化データを生成して外部に出力する。
【００１７】
画像符号化部２０は、画像符号化装置として専用のデバイス、ロジック回路やメモリを用いてハードウェア的に一体的に構成されても良いし、或いは、複数のデバイス等で分散して構成されてもよい。或いは、メモリに記憶されている処理プログラムをＣＰＵ等のコンピュータが実行することにより、ソフトウェア的に構成されてもよい。
【００１８】
＜符号ブロックと画素グループ＞
本実施形態では、取得部１０から画像符号化部２０に対して１フレーム分のフレーム画像が所定サイズ（画素数）を有するブロック（以下、「符号化ブロック」という）に分割されて入力される。そして、画像符号化部２０が実行する画像符号化処理では符号化ブロック単位に符号化を行うものとする。また、符号化ブロックは１つ以上の所定数の画素からなる「画素グループ」にさらに分割される。画素グループは後述する符号化方法（ＰＣＭ／ＤＰＣＭ）の切り替えや、量子化パラメータ（以下、「ＱＰ」という）の切り替えを行う単位となる。画素グループは同一座標の画素や隣接画素など相関性の高い画素で構成されることが望ましく、単一のカラー要素のみで構成してもよいし、複数のカラー要素で構成してもよい。本実施形態ではＲＧＢ画像の各カラー要素それぞれ水平１６画素×垂直１画素×３色＝４８画素を符号化ブロックとする。また、各カラー要素の１画素ずつの計３画素を画素グループとする。
【００１９】
図４（ａ）は本実施形態における符号化ブロックを構成する画素データと、画素グループとの関係を説明するための図である。図４（ａ）に示すように、符号化ブロックは、Ｒ、Ｇ、Ｂの各カラー要素について１６画素ずつから構成される。また、画素位置に応じてＲ、Ｇ、Ｂからなるカラー要素の組のそれぞれにグループ番号が割り当てられ、各画素には画素番号０から４７までのいずれかがそれぞれ割り当てられている。例えば、各カラー要素の１画素目のデータであるＲ０、Ｇ０、Ｂ０はグループ番号が「０」の画素グループを構成し、２画素目のデータであるＲ１、Ｇ１、Ｂ１はグループ番号が「１」の画素グループを構成している。本実施形態では、各画素のデータのことを「画像データ」と呼ぶことにする。
【００２０】
＜符号化部１１１の説明＞
次に、仮符号化系１１０、本符号化系１２０で共通に使用される符号化部１１１の構成及び動作について図３を参照して説明する。図３は符号化部１１１の構成例を示すブロック図である。図３に示すように符号化部１１１は、例えば量子化部３０１、予測部３０２、減算器３０３、可変長符号化部３０４、ＰＣＭ符号長算出部３０５、符号長比較部３０６、セレクタ３０７、３０８、３０９を含んで構成される。
【００２１】
符号化部１１１には、画像データとＱＰとが入力される。仮符号化系１１０の場合、ＱＰは符号化部１１１Ａから１１１Ｄのそれぞれに対して固定値として予め割り当てられていてもよい。図１（ｂ）では一例として、符号化部１１１Ａから１１１Ｄまで順にＱＰとして０、１、２、３がそれぞれ割り当てられている場合を示している。仮符号化系１１０の場合、各符号化部が予めＱＰの値を保持していても良い。本符号化系１２０には、仮符号化系１１０で決定されたＱＰがヘッダ省略判定部１１７から入力される。以下、符号化部１１１の具体的構成及びその動作について詳述する。
【００２２】
まず、符号化部１１１に入力された画像データは量子化部３０１に入力される。量子化部３０１は与えられたＱＰにより入力画像データを量子化し、量子化されたデータを予測部３０２、減算器３０３、セレクタ３０７にそれぞれ出力する。本発明では量子化部３０１で量子化された量子化データをＰＣＭデータと呼ぶ。本実施形態では、ＱＰの値を０を最小値とする整数値とし、０から３までの範囲で変更できるものとして説明するが、より大きなＱＰの値を設定して更に大きな量子化ステップを使用しても良い。
【００２３】
本実施形態において量子化部３０１は、ＱＰが小さいほど量子化ステップを小さく（細かく）し、ＱＰが大きいほど量子化ステップを大きく（粗く）する。そして、ＱＰが１増えるとＰＣＭデータの有意ビットが１ビット減少するように量子化を行う。例えば、式１で表される量子化を行う。
Ｑｕａｎｔ  ＝  Ｄａｔａ  ／  （１  ＜＜  ＱＰ）    ・・・（式１）
（Ｑｕａｎｔ：量子化データ、Ｄａｔａ：入力画像データ、ＱＰ：量子化パラメータである。）
また、１＜＜ＱＰとは、入力された画像データが、ＱＰで示されるビット数だけ、ビットシフトすることを示す。
【００２４】
式１のように量子化することよってＱＰに対する出力値、有意ビットは以下のようになる。
ＱＰ＝０：量子化ステップ＝１、入力データは量子化されずそのまま出力。有意ビット不変。
ＱＰ＝１：量子化ステップ＝２、入力データは１／２に量子化。有意ビットは１ビット減少。
ＱＰ＝２：量子化ステップ＝４、入力データは１／４に量子化。有意ビットは２ビット減少。
ＱＰ＝ｎ：量子化ステップ＝（１＜＜ｎ）、入力データは１／（１＜＜ｎ）に量子化。有意ビットはｎビット減少。
【００２５】
上記式１は本実施形態における量子化処理の一例を示すものであって、これに限定されるものではない。ＱＰが１変化するたびに符号長が１ビット減少するような量子化であればよい。例えば非線形量子化を行ってもよい。本実施形態において、ＱＰ＝０からＱＰ＝ｎまでＱＰの値を１ずつ増加させることを量子化ステップを１段上げる、１段大きくする、１段粗くする等という。また、逆にＱＰ＝ｎからＱＰ＝０までＱＰの値を１ずつ減少させることを量子化ステップを１段下げる、１段小さくする、１段細かくする等というものとする。
【００２６】
ＰＣＭ符号長算出部３０５は、量子化部３０１から出力されたＰＣＭデータの符号長を、画像データのビット数（本実施形態では１０ビット）とＱＰとから、下記の式２を用いて決定する。
ＰＣＭ符号長  ＝  画像データビット数  −  ＱＰ  ・・・（式２）
本実施形態では、ＱＰの値が１増える毎に、ＰＣＭデータの符号長が１ビットずつ減少する。よって、ＱＰ＝０を初期値として、ＱＰが１増える毎に、ＰＣＭデータの符号長は１０ビットから１ビットずつ短くなる。ここで、仮符号化系１１０では、ＱＰの値は符号化部１１１Ａから１１１Ｄのそれぞれについて固定的に割り当てられているのでＰＣＭ符号長も固定値となる。よって、ＰＣＭ符号長算出部３０５は式２の演算によりＰＣＭ符号長を算出するのではなく、割り当てられたＱＰの値に基づくＰＣＭ符号長の固定値を保持し、出力する構成であってもよい。ＰＣＭ符号長算出部３０５は、決定したＰＣＭ符号長を符号長比較部３０６とセレクタ３０８とにそれぞれ出力すると共に、符号化部１１１の外部へも出力する。
【００２７】
次に、予測部３０２の動作を説明する。予測部３０２は図３に示すように逆量子化部３１０、画素遅延部３１１、量子化部３１２を含むように構成される。予測部３０２に入力されたＰＣＭデータは逆量子化部３１０にて一旦逆量子化された後、画素遅延部３１１に入力される。逆量子化部３１０での逆量子化処理では、量子化部３０１が画像データの量子化に使用したＱＰがそのまま用いられる。画素遅延部３１１は、同じカラー要素の前値が予測データとなるようカラー要素分遅延する。
【００２８】
例えば、本実施形態では図４（ａ）に示すようにＲＧＢの各カラー要素の画像データが順に入力され、画像データＧ０の符号化後、次にＧ１を符号化するまでにＢ０、Ｒ１の画像データを先に符号化する。よって、画素遅延部３１１は３画素分遅延させて、Ｇ１を符号化するタイミングで量子化部３１２に対して保持していた逆量子化された画像データを出力する。量子化部３１２は、画素遅延部３１１から入力された画像データを量子化する。このとき量子化部３１２には、量子化部３０１が画像データＧ１を量子化する際に用いるＱＰが入力されるので、量子化部３０１と量子化部３１２との間で量子化ステップが一致する。予測部３０２で逆量子化を行った後で再度量子化する構成は、ＱＰの値が画素間で異なる場合に量子化ステップを一致させるために必要な構成であって、本符号化系１２０では必須である。一方、仮符号化系１１０ではＱＰは固定のため逆量子化部３１０、量子化部３１２を省略して、画素遅延部３１１だけでもよい。量子化部３１２での量子化結果は予測データとして減算器３０３に出力される。なお、各カラー要素の符号化ブロックの最初の画素（Ｒ０、Ｇ０、Ｂ０）は前画素が存在しないため、予測データとしては０の値を出力する。
【００２９】
減算器３０３は、量子化部３０１からのＰＣＭデータと、予測部３０２からの予測データとの差分を予測差分データとして、可変長符号化部３０４へ出力する。予測差分データは正負の値を持つデータであり、画像データの変動の小さい平坦な部分では０付近の値となり、変動の大きいエッジ部分などでは大きな値になる。予測差分データは一般に０を中心としたラプラス分布の特性を持つ。
【００３０】
可変長符号化部３０４は、入力された予測差分データに対して所定の可変長符号化方式による符号化を行って、１画素毎に符号データと符号長とを出力する。符号データはセレクタ３０７へ出力され、符号長は符号長比較部３０６、セレクタ３０８及び符号化部１１１の外部にそれぞれ出力される。所定の可変長符号化方式には、例えばハフマン符号、ゴロム符号などが含まれる。可変長符号化部３０４が実行する可変長符号化方式では、入力値が０の場合に最も短い符号長の符号データが割り当てられており、入力値の絶対値が大きくなるほど、符号データの符号長は長くなる。なお、本実施形態において、可変長符号化部３０４から出力される符号データをＤＰＣＭデータと呼び、同符号長をＤＰＣＭ符号長と呼ぶ。
【００３１】
符号長比較部３０６は、ＰＣＭ符号長とＤＰＣＭ符号長とを前述の画素グループ単位で比較し、符号長がより小さくなる符号データを選択するためのＰＣＭ／ＤＰＣＭ選択フラグを生成する。符号長比較部３０６は、画素グループを構成するＲ、Ｇ、Ｂの各色のＰＣＭ符号長とＤＰＣＭ符号長とを保持するように構成される。ＰＣＭ／ＤＰＣＭ選択フラグはセレクタ３０９に出力され、ヘッダ省略モードフラグに応じて各セレクタでの出力データの切替えに用いられる。また、符号化部１１１の外部にも出力される。
【００３２】
＜符号長比較フロー＞
ここで、符号長比較部３０６における符号長の比較の詳細を図７のフローチャートを参照して説明する。符号長の比較は前述した画素グループ単位で行われる。
【００３３】
符号長比較部３０６は、Ｓ７０１においてＰＣＭ符号長算出部３０５から、以下の色成分毎のＰＣＭを取得し、続くＳ７０２において可変長符号化部３０４から以下の色成分毎のＤＰＣＭ符号長を取得する。
【００３４】
Ｓ_ＰＣＭ＿Ｒｎ：ＲｎのＰＣＭ符号長
Ｓ_ＰＣＭ＿Ｇｎ：ＧｎのＰＣＭ符号長
Ｓ_ＰＣＭ＿Ｂｎ：ＢｎのＰＣＭ符号長
Ｓ_ＤＰＣＭ＿Ｒｎ：ＲｎのＤＰＣＭ符号長
Ｓ_ＤＰＣＭ＿Ｇｎ：ＧｎのＤＰＣＭ符号長
Ｓ_ＤＰＣＭ＿Ｂｎ：ＢｎのＤＰＣＭ符号長
【００３５】
ここでは、図４（ａ）のＲＧＢコンポネント形式のデータ入力について、グループ番号ｎの画素を対象に実行した例を示している。本実施形態では、上述のステップで各符号長を取得しているが、画素グループ内のすべての画素についてＤＰＣＭとＰＣＭ符号長が取得できていればよく特に順番を限定するものではない。
【００３６】
続いて、符号長比較部３０６は、ステップＳ７０３において、ＰＣＭ符号長の合計値（Ｓ＿ＰＣＭ）を、ステップＳ７０１で取得した符号長を加算して取得する。同様に、符号長比較部３０６は、ステップＳ７０４においてＤＰＣＭ符号長の合計値（Ｓ＿ＤＰＣＭ）を、ステップＳ７０２で取得した符号長を加算して取得する。続くＳ７０５において符号長比較部３０６はＳ＿ＰＣＭとＳ＿ＤＰＣＭとを比較し、大小を判定する。もし、画素グループのＤＰＣＭの符号長が小さい場合（Ｓ７０５でＹＥＳ）は、Ｓ７０６に移行してＤＰＣＭ符号データを選択するＰＣＭ／ＤＰＣＭ選択フラグ情報（ＰＣＭ＿ＤＰＣＭ＿ＳＥＬ＿ＦＬＡＧ＝１）を出力する。一方、ＰＣＭの符号長の方が小さい場合（Ｓ７０５のＮＯ）は、Ｓ７０７に移行してＰＣＭ符号データを選択するＰＣＭ/ＤＰＣＭ選択フラグ情報（ＰＣＭ＿ＤＰＣＭ＿ＳＥＬ＿ＦＬＡＧ＝０）を出力する。
【００３７】
図３の説明に戻り、セレクタ３０９は、符号長比較部３０６から入力されるＰＣＭ／ＤＰＣＭ選択フラグと、予め与えられた固定値とを符号化部１１１の外部より入力されるヘッダ省略モードフラグに従って切替えてセレクタ３０７及び３０８へ出力する。ヘッダ省略モードフラグの値が１の場合、セレクタ３０９は固定値が選択される。一方、ヘッダ省略モードフラグの値が０の場合、ＰＣＭ／ＤＰＣＭ選択フラグを選択し、当該フラグ情報がそのままセレクタ３０７および３０８へ通知される。本実施形態では固定値は０であり、ＰＣＭ／ＤＰＣＭ選択フラグの値が０に固定（ＰＣＭモード固定（ＰＣＭ＿ＤＰＣＭ＿ＳＥＬ＿ＦＬＡＧ＝０））されることになる。よって、セレクタ３０７及び３０８はＰＣＭデータ及びＰＣＭデータの符号長を選択する。
【００３８】
セレクタ３０７にはＰＣＭデータとＤＰＣＭデータが入力されており、セレクタ３０９からのＰＣＭ／ＤＰＣＭ選択フラグに従って符号データが選択され、符号化部１１１の外部へと出力される。具体的に、ＰＣＭ／ＤＰＣＭ選択フラグのフラグ値が１の場合はＤＰＣＭデータが選択され、フラグ値が０の場合はＰＣＭデータが選択される。セレクタ３０８にはＰＣＭ符号長とＤＰＣＭ符号長が入力されており、ＰＣＭ／ＤＰＣＭ選択フラグに従って符号長が選択されて、符号化部１１１の外部へと出力される。セレクタ３０８から出力される符号長を本実施形態では特に「選択符号長」と呼ぶ。具体的に、ＰＣＭ／ＤＰＣＭ選択フラグのフラグ値が１の場合はＤＰＣＭ符号長が選択され、フラグ値が０の場合はＰＣＭ符号長が選択される。
【００３９】
＜仮符号化系の説明＞
ここで図１の画像符号化部２０の説明に戻り、仮符号化系１１０における仮符号化処理について説明する。図１の仮符号化系１１０に入力された画像データは複数の符号化部１１１Ａから１１１Ｄによって、ＱＰが０から３でそれぞれ符号化が行われ選択符号長がＱＰ決定部１１５に、ＰＣＭ符号長がＱＰ決定部１１６にそれぞれ出力される。ここで選択符号長は、各符号化部が各ＱＰに対応する量子化ステップで量子化処理を行った量子化結果をＰＣＭまたはＤＰＣＭで符号化した符号データの符号長を表し、セレクタ３０８から出力される。ＰＣＭ符号長は、各符号化部が各ＱＰに対応する量子化ステップで量子化処理を行った量子化結果の符号長を表し、ＰＣＭ符号長算出部３０５から出力される。符号化部１１１Ａ〜１１１Ｄは図３に示した構成を有し、出力信号として、符号データ、選択符号長、ＰＣＭ符号長、ＰＣＭ／ＤＰＣＭ選択フラグが存在する。しかし、仮符号化系１１０では選択符号長及びＰＣＭ符号長を使用し、符号データ、ＰＣＭ／ＤＰＣＭ選択フラグは使用しなくてもよい。
【００４０】
本実施形態では符号化に用いるＱＰの範囲として０〜３としたため、仮符号化系１１０は符号化部１１１を４つ備えている。しかし、発明の実施形態は当該構成に限定されるものではなく、符号化に用いるＱＰの範囲に応じて、符号化部１１１の数を変更することができる。また仮符号化系１１０では、符号化部１１１Ａから１１１Ｄへの入力信号であるヘッダ省略モードフラグを０に固定し、常に上述の符号長比較部３０６の判断結果に基づくＰＣＭ／ＤＰＣＭ選択フラグが用いられるものとする。
【００４１】
＜ＱＰ決定部の動作＞
仮符号化系１１０において、ＱＰ決定部１１５と１１６とは前段の符号化部１１１Ａ〜１１１Ｄから入力されたＱＰ毎の複数の符号長の情報に基づき、本符号化系１２０で画素グループ単位に適用する適用ＱＰの候補となるＱＰａｌｔ、ＱＰｐｃｍをそれぞれ決定する。ここで、ＱＰ決定部１１５への入力信号となる選択符号長は、各符号化部１１１において得られたＰＣＭ符号長またはＤＰＣＭ符号長のうち、より小さい値となった符号長である。一方のＱＰ決定部１１６への入力信号となる符号長は、各符号化部１１１におけるＰＣＭ符号長となる。ＱＰ決定部１１６は、入力信号が異なるだけで、基本的な構成及び処理内容はＱＰ決定部１１５と同じである。以下では各ＱＰ決定部の動作を説明する。
【００４２】
＜ＱＰ決定部１１５の動作＞
本施形態におけるＱＰ決定部１１５が実行する処理手順の概要を、図５を用いて説明する。図５において、符号化ブロック毎に本処理が開始されると、Ｓ５０１にてＱＰ決定部１１５は符号化部１１１Ａ〜１１１Ｄから、各符号化部に割り当てられたＱＰ毎に算出された符号長の情報を画素グループ単位に取得する。以下、取得される符号データの符号長を、ＱＰの値：ｑｐ、画素グループ番号：ｐｇを要素とする、ｐｇ＿ｓｉｚｅ［ｑｐ］［ｐｇ］と表す。ｑｐは０から３までの値をとり、ｐｇは０から１５までの値をとる。
【００４３】
次に、Ｓ５０２においてＱＰ決定部１１５は、ＱＰ毎に符号化ブロック全体の符号長を算出する。符号化ブロック全体の符号長の算出に際しては符号化データに多重するヘッダ情報の符号長を加味する必要がある。ヘッダ情報とは復号時に必要な画素グループ毎のＱＰやＰＣＭ／ＤＰＣＭ選択フラグの情報であり、ここでのヘッダ情報の符号長は２３ビットとする。このヘッダ情報のデータ構造については、図１０（ｂ）を参照して後述する。
【００４４】
ヘッダ情報の符号長ｈｄ＿ｓｉｚｅ（＝２３ビット）と、全画素グループの符号長との合計を加算したブロック符号長ｂｌ＿ｓｉｚｅ［ｑｐ］の算出が行われる。図９（ａ）は、ｐｇ＿ｓｉｚｅ［ｑｐ］［ｐｇ］とｂｌ＿ｓｉｚｅ［ｑｐ］の値の具体的な例を示す。図９（ａ）において、例えば参照番号９０１が示す値（３５）はｐｇ＿ｓｉｚｅ［０］［０］であり、符号化ブロックにおける先頭の画素グループをＱＰ＝０で符号化した場合の符号長を示す。同様に、参照番号９０２が示す値（２４）はｐｇ＿ｓｉｚｅ［０］［１５］であり、符号化ブロックにおける最後の画素グループをＱＰ＝０で符号化した場合の符号長を示す。また、参照番号９０３が示す値（４３３）はｂｌ＿ｓｉｚｅ［０］であり、ＱＰ＝０で符号化した場合のブロック符号長を示し、参照番号９０４が示す値（３４９）はｂｌ＿ｓｉｚｅ［３］であり、ＱＰ＝３で符号化した場合のブロック符号長を示す。それぞれの値はビット単位で表されている。同図の値は以降の説明でも、具体的な値の例として用いて説明する。
【００４５】
次に、Ｓ５０３においてＱＰ決定部１１５は、ｂｌ＿ｓｉｚｅ［ｑｐ］の中から所定の目標符号量ｔａｒｇｅｔ＿ｓｉｚｅ以下で、かつ最大の値を有するブロック符号長をｓｅｌ＿ｓｉｚｅに選定し、この時のｑｐをｓｅｌ＿ｑｐに選定する。Ｓ５０３における具体的な処理は、図６のフローチャートに示すとおりである。
【００４６】
まずＳ６０１にて、最大のＱＰ（ＭＡＸ＿ＱＰ）でもブロック符号長が目標符号量であるｔａｒｇｅｔ＿ｓｉｚｅを超えていることを識別するためのフラグｏｖｅｒ＿ｆｌａｇを１に初期化する。ここでは、フラグｏｖｅｒ＿ｆｌａｇが１である場合に、最大のＱＰ（ＭＡＸ＿ＱＰ）でもブロック符号長が目標符号量であるｔａｒｇｅｔ＿ｓｉｚｅを超えていることを示すものとする。つづいてＳ６０２にて、ＱＰ決定部１１５はＱＰの値：ｑｐを０に初期化する。次にＳ６０３にてＱＰ決定部１１５は、現在選択されているＱＰにおける符号化ブロックの符号長：ｂｌ＿ｓｉｚｅ［ｑｐ］と目標符号量：ｔａｒｇｅｔ＿ｓｉｚｅとを比較する。比較の結果、ｂｌ＿ｓｉｚｅ［ｑｐ］がｔａｒｇｅｔ＿ｓｉｚｅ以下である場合（Ｓ６０３で「ＹＥＳ」）にはＳ６０４に移行し、ｂｌ＿ｓｉｚｅ［ｑｐ］がｔａｒｇｅｔ＿ｓｉｚｅより大きい場合（Ｓ６０３で「ＮＯ」）にはＳ６０７に移行する。
【００４７】
Ｓ６０４では、Ｓ６０３において判定対象となったｂｌ＿ｓｉｚｅ［ｑｐ］を選択すべきブロック符号長ｓｅｌ＿ｓｉｚｅに決定する。次いでＳ６０５では、ｂｌ＿ｓｉｚｅ［ｑｐ］のＱＰの値を符号化ブロックの暫定的なＱＰを表すｓｅｌ＿ｑｐに決定する。その後、Ｓ６０６にてｏｖｅｒ＿ｆｌａｇを０に更新し、Ｓ６０９にてｏｖｅｒ＿ｆｌａｇの値をヘッダ省略判定部１１７に出力した後、処理を終了する。
【００４８】
Ｓ６０７では、現在選択されているＱＰの値が最大値（ＭＡＸ＿ＱＰ）よりも小さいかどうかを判定し、最大値より小さい場合（Ｓ６０７で「ＹＥＳ」）はＳ６０８においてＱＰの値を１つ更新し、Ｓ６０３に戻って処理を継続する。現在のＱＰの値が最大値以上の場合（Ｓ６０７で「ＮＯ」）は、Ｓ６０９にてｏｖｅｒ＿ｆｌａｇの値をヘッダ省略判定部１１７に出力した後、処理を終了する。本実施形態におけるＭＡＸ＿ＱＰの値は３となる。Ｓ６０７でＮＯと判定された場合、目標符号量に対応する所定値以下のブロック符号長が存在せず、ＱＰを選択できないこととなる。しかし、この場合はｏｖｅｒ＿ｆｌａｇが１のままとなるので、ヘッダ省略モードが選択されることとなる。
【００４９】
このようにＱＰ＝０の初期値から１ずつ更新して、量子化ステップを１から２へ、２から４へと１段ずつ上げながら符号化ブロックの符号長を順に目標符号量と比較していく。そして、最初に目標符号量以下となったブロック符号長に対応するＱＰの値を暫定的なＱＰ値とすることができる。また、最大のＱＰ（ＭＡＸ＿ＱＰ）でもブロック符号長が目標符号量に対応する所定値以下とならない場合には、そのことをフラグｏｖｅｒ＿ｆｌａｇの値１により示すことができる。
【００５０】
目標符号量ｔａｒｇｅｔ＿ｓｉｚｅの具体的値については、本実施形態では例示的に３６０ビットとして説明する。この値は、符号化前の画像データの情報量が１０ビット×３×１６＝４８０ビットであるので、その３／４に相当する。目標符号量の大きさは期待する圧縮率に応じて任意に設定することができる。図９（ａ）に示す例では、ＱＰ：３のブロック符号長ｂｌ＿ｓｉｚｅ［３］である３４９（ビット）が目標符号量３６０ビットよりも小さく、ｓｅｌ＿ｓｉｚｅとして選定される。またこのときのＱＰの値３がｓｅｌ＿ｑｐに決定される。ここで、符号化ブロックの符号長にヘッダ情報の符号長を含めていない場合、目標符号量の値は３６０ビットからヘッダ情報の符号長を差し引いた値となる。上述の例ではヘッダの符号長は２３ビットであったので、この場合の目標符号量は３３７ビットとなる。
【００５１】
図５の説明に戻り、Ｓ５０４では、図６の処理において暫定的なＱＰ値であるＱＰ（ｓｅｌ＿ｑｐ）が決定されたかどうかを判定する。前述のように、目標符号量以下となるブロック符号長が存在しない場合（Ｓ５０４で「ＮＯ」）には、ＱＰ（ｓｅｌ＿ｑｐ）が決定されず、ｏｖｅｒ＿ｆｌａｇの値が１に設定されるので、そのまま処理が終了する。また、ＱＰ（ｓｅｌ＿ｑｐ）が決定された場合（Ｓ５０４で「ＹＥＳ」）、Ｓ５０５ではＱＰ決定部１１５がＳ５０３で決定した符号化ブロックの暫定的なＱＰの値ｓｅｌ＿ｑｐに対し画素グループ単位の調整を行う。これにより、画素グループ単位のＱＰａｌｔ：ｐｇ＿ｑｐ［ｐｇ］を決定することができる。Ｓ５０５におけるｐｇ＿ｑｐ［ｐｇ］を決定するための処理の詳細を、図８のフローチャートを参照して詳述する。
【００５２】
図８において、Ｓ８０１では、ＱＰ決定部１１５は画素グループ単位のＱＰａｌｔであるｐｇ＿ｑｐ［ｐｇ］を、Ｓ５０３で決定されたＱＰ：ｓｅｌ＿ｑｐで初期化する。このとき、ｐｇ＿ｑｐ［０］〜ｐｇ＿ｑｐ［１５］までの全てがｓｅｌ＿ｑｐの値に初期化される。図９（ａ）の例では、ＱＰ＝３が選択されたのでｐｇ＿ｑｐ［０］〜ｐｇ＿ｑｐ［１５］は全て３に初期化される。次にＳ８０２では、ＱＰ決定部１１５は現時点の符号化ブロックの符号長を表すパラメータｎｅｗ＿ｓｉｚｅを、Ｓ６０３で決定されたｓｅｌ＿ｓｉｚｅの値に初期化する。例えば図９（ａ）の例では、ｓｅｌ＿ｓｉｚｅはＱＰが３のときのブロック符号長３４９に決定されたので、Ｓ８０２ではｎｅｗ＿ｓｉｚｅの値は３４９に初期化される。ヘッダ符号長を考慮していない場合は、ブロック符号長は３２６となる。次にＳ８０３では、ＱＰ決定部１１５は現在選択されているＱＰを示すパラメータｑｐの値をＳ６０４で決定されたｓｅｌ＿ｑｐの値で初期化する。例えば図９（ａ）の例では、ｓｅｌ＿ｑｐは３に決定されたので、Ｓ８０３ではｑｐの値は３に初期化される。
【００５３】
次にＳ８０４では、ＱＰ決定部１１５は新たなＱＰを示すパラメータｎｅｗ＿ｑｐの値を、ｑｐより１を減じた値で初期化する。ｎｅｗ＿ｑｐは、現在選択されているｑｐの値を１つ繰り下げた値を示す。さらにＳ８０５では、ＱＰ決定部１１５は処理対象の画素グループの番号を示すパラメータｐｇを初期化する。画素グループは０から１５までの１６グループがあるので、ｐｇ＝０に初期化される。さらにＳ８０６、Ｓ８０７ではＱＰ決定部１１５はｍｉｎｕｓ＿ｓｉｚｅをｐｇ＿ｓｉｚｅ［ｑｐ］［ｐｇ］に設定し、ｐｌｕｓ＿ｓｉｚｅをｐｇ＿ｓｉｚｅ［ｎｅｗ＿ｑｐ］［ｐｇ］に設定する。ここで、ｍｉｎｕｓ＿ｓｉｚｅとは、現在のｑｐの値に基づく選択画素グループの符号長を示し、ｐｌｕｓ＿ｓｉｚｅは現在のｑｐから１減じたｎｅｗ＿ｑｐの値に基づく選択画素グループの符号長を示す。例えば、ｐｇ＝０でｑｐ＝３の場合を考えると、図９（ａ）に示す例では、ｍｉｎｕｓ＿ｓｉｚｅは３０となり、ｐｌｕｓ＿ｓｉｚｅは３２となる。このｍｉｎｕｓ＿ｓｉｚｅと、ｐｌｕｓ＿ｓｉｚｅとは、画素グループ単位にｑｐを１だけ変更した場合に想定される符号化ブロックのブロック符号長の変化量を計算するために用いられる。
【００５４】
Ｓ８０８では、ＱＰ決定部１１５は画素グループ単位にｑｐを１だけ変更した場合のブロック符号長を示すパラメータｔｍｐ＿ｓｉｚｅを、上記のｎｅｗ＿ｓｉｚｅ、ｍｉｎｕｓ＿ｓｉｚｅ、ｐｌｕｓ＿ｓｉｚｅから式３により求める。
【００５５】
ｔｍｐ＿ｓｉｚｅ＝ｎｅｗ＿ｓｉｚｅ−ｍｉｎｕｓ＿ｓｉｚｅ＋ｐｌｕｓ＿ｓｉｚｅ・・・式３
例えば、ｐｇ＝０でｑｐ＝３の場合を考えると、図９（ａ）の例ではｎｅｗ＿ｓｉｚｅ＝３４９、ｍｉｎｕｓ＿ｓｉｚｅ＝３０、ｐｌｕｓ＿ｓｉｚｅ＝３２であるから、ｔｍｐ＿ｓｉｚｅ＝３５１となる。
【００５６】
次にＳ８０９にてＱＰ決定部１１５は、Ｓ８０８で求めたｑｐ変更後の符号長ｔｍｐ＿ｓｉｚｅが、目標符号量（ｔａｒｇｅｔ＿ｓｉｚｅ）以下かどうかを判定する。ｔｍｐ＿ｓｉｚｅの値が目標符号量を上回る場合（Ｓ８０９で「ＮＯ」）、Ｓ８１４に移行する。一方、ｔｍｐ＿ｓｉｚｅの値が目標符号量以下の場合（Ｓ８０９で「ＹＥＳ」）、Ｓ８１０に移行する。Ｓ８１０では、ＱＰ決定部１１５はｎｅｗ＿ｓｉｚｅの値をｔｍｐ＿ｓｉｚｅの値で更新する。次いでＳ８１１においてＱＰ決定部１１５は処理対象の画素グループのＱＰａｌｔ：ｐｇ＿ｑｐ［ｐｇ］をｎｅｗ＿ｑｐの値で更新する。その後のＳ８１２、Ｓ８１３の処理では処理対象となる画素グループを更新していく。具体的にＳ８１２では、ＱＰ決定部１１５は現在の処理対象の画素グループの番号ｐｇが画素グループの番号の最大値（ＭＡＸ＿ＰＧ）より小さいか否かを判定する。ＭＡＸ＿ＰＧの値は、本実施形態の場合１５となる。ここで、ｐｇが最大値より小さい場合（Ｓ８１２で「ＹＥＳ」）、Ｓ８１３に移行してＱＰ決定部１１５はｐｇを１だけ更新して、Ｓ８０６に戻って新たな画素グループについて画素グループ単位のＱＰａｌｔ：ｐｇ＿ｑｐ［ｐｇ］を決定する処理を行う。一方、ｐｇが最大値に一致する場合（Ｓ８１３で「ＮＯ」）、Ｓ８１４に移行する。
【００５７】
次にＳ８１４では、ＱＰ決定部１１５は現在のｑｐの値が０より大きいか否かを判定すると共に、ｓｅｌ＿ｑｐから現在のｑｐを引いた値がＭＡＸ＿ＤＩＦＦより小さいか否かを判定する。ＭＡＸ＿ＤＩＦＦは、ｓｅｌ＿ｑｐからｑｐを下げることが可能な回数を規定している。ＭＡＸ＿ＤＩＦＦはＱＰが取り得る範囲に応じて任意に決定でき、例えば１とすることができ、その場合にはｓｅｌ＿ｑｐの値から１回まではｑｐの値を下げることができる。上記の例ではｓｅｌ＿ｑｐ＝３であるから、ｑｐ＝２となるまで処理を行うことができる。このように回数を制限するのは、再帰的処理の実行時間を制限するためであるが、ＭＡＸ＿ＤＩＦＦを２または３としてもよい。ＭＡＸ＿ＤＩＦＦを設定することによりｓｅｌ＿ｑｐに追加してＱＰａｌｔに含めることが可能なＱＰの種類数を規定することができる。
【００５８】
Ｓ８１４では、ＱＰ決定部１１５はｑｐが０であった場合、または、ｑｐを下げた回数がＭＡＸ＿ＤＩＦＦに一致する場合（Ｓ８１４で「ＮＯ」）は本処理を終了する。ｑｐが０より大きく、かつ、ｑｐを下げた回数がＭＡＸ＿ＤＩＦＦに満たない場合（Ｓ８１４で「ＹＥＳ」）は、Ｓ８１５に移行する。Ｓ８１５ではＱＰ決定部１１５はｑｐの値を１だけ減じて、Ｓ８０４に戻って処理を繰り返す。このようにして決定された適用ＱＰの候補となるＱＰａｌｔはＱＰ決定部１１５からヘッダ省略判定部１１７へ出力される。
【００５９】
ここで、図８における処理の具体例を、図９（ａ）を参照して説明する。選定されたｓｅｌ＿ｓｉｚｅ（図９（ａ）の例では３４９）を基にして、まず、画素グループ番号０の画素グループのＱＰの値を１だけ小さくした場合のブロック符号長（３４９−３０＋３２＝３５１）を算出し、目標符号量（３６０）と比較する。算出したブロック符号長が目標符号量以下であった場合、次の画素グループ番号１のＱＰを１だけ小さくした場合のブロック符号長を算出して、同じように目標符号量と比較する。このとき算出される画素グループ番号１のブロック符号長は（３５１−３０＋３２＝３５３）であり、目標符号量よりも小さい。このようにして画素グループを順に選択してブロック符号長を算出していくと以下のようになる。
【００６０】
画素グループ番号２：３５３−２４＋２４＝３５３
画素グループ番号３：３５３−２０＋２２＝３５５
画素グループ番号４：３５５−２０＋２２＝３５７
画素グループ番号５：３５７−２０＋２２＝３５９
画素グループ番号６：３５９−１６＋１８＝３６１
【００６１】
上記算出されたブロック符号長において、画素グループ番号６のブロック符号長は目標符号量を超えてしまう。よって、この時点で本処理を終了する。このようにして決定されたＱＰａｌｔの具体的な値を図９（ｂ）に示す。図９（ｂ）では、太線で囲った符号長に対応するＱＰが、画素グループ毎に決定されたＱＰａｌｔを表している。画素グループ単位のＱＰａｌｔの各値は、ｐｇ＿ｑｐ［０〜５］は２、ｐｇ＿ｑｐ［６〜１５］は３となる。このようにしてＱＰ値を組み合わせたブロック符号長は３５９ビットとなるが、目標符号量３６０ビットに対して足りないビットについては、後段の多重化部１２３でパディングビットを付加する処理を行う。生成されたＱＰａｌｔはＱＰ決定部１１５から出力され、ヘッダ省略判定部１１７へ入力される。
【００６２】
このように、本実施形態では、先頭の画素グループから順により小さいＱＰが割り当てられる。図９（ｂ）では先頭の画素グループを含む連続する複数の画素グループに対して最小のＱＰが割り当てられたが、他の条件では先頭の画素グループのみに最小のＱＰが割り当てられる場合もある。
【００６３】
また、Ｓ８１４の判定においてＭＡＸ＿ＤＩＦＦ＝２であった場合には再び画素グループ番号０に戻ってＱＰの値を更に１だけ減少させて、同じようにブロック符号長を算出していく。上記の例では、
画素グループ番号０：３５９−３２＋３２＝３５９
画素グループ番号１：３５９−３２＋３２＝３５９
画素グループ番号２：３５９−２４＋２６＝３６１
となり、ここでは画素グループ番号２において目標符号量を超えてしまう。この時点でｑｐの値は１となっているので処理を終了する。このようにして決定された画素グループ単位のＱＰａｌｔの各値は、ｐｇ＿ｑｐ［０〜１］は１、ｐｇ＿ｑｐ［２〜５］は２、ｐｇ＿ｑｐ［６〜１５］は３となる。このようにしてＱＰ値を組み合わせたブロック符号長は３５９ビットとなる。以上の例では、ヘッダ情報の符号長を考慮した場合について説明したが、ヘッダ情報の符号長を考慮しない場合には上述の数値からヘッダ情報の符号長２３ビットを適宜差し引くだけでよい。
【００６４】
＜ＱＰ決定部１１６の動作＞
次に、ＱＰ決定部１１６の動作を説明する。ＱＰ決定部１１６は、ＱＰ決定部１１５と同一構成を有するが、ヘッダ省略モードに対応するＱＰ決定処理を行う。ヘッダ省略モードでは、ヘッダ情報をｈｅａｄｅｒ＿ｓｋｉｐ＿ｆｌｇの１ビットのみとし、画素ブロック内の全ての画素をＰＣＭ符号化するとともに、符号化ブロック内の画素に対するＱＰ値の割当パターンを一意に定める。その結果、どのような入力画像であっても、全画素をＰＣＭ符号化することによって必ず目標符号量に収めることができる。また、ヘッダ符号長を１ビットとすることで、画像データに多くの符号量を割り当てることができる。
【００６５】
ＱＰ決定部１１６への入力信号である符号長はすべてＰＣＭ符号化処理を行った結果の符号長である。各符号化部では全画素ブロックで同じ結果が得られるため、最初の画素ブロックだけＱＰ値を算出することとしてもよい。また、ＱＰ決定部１１５の動作ではＳ５０２において加算するヘッダ符号長ｈｄ＿ｓｉｚｅが２３ビットであったが、ＱＰ決定部１１６の動作では同ヘッダ符号長ｈｄ＿ｓｉｚｅが１ビットとなる。このヘッダ情報のデータ構造については、図１０（ｃ）を参照して後述する。またＱＰ決定部１１６では、ＱＰ値を変化させる画素グループの番号を特定する必要がないので画素グループ単位でＱＰ値を設定する必要はなく、画素単位でＱＰ値を設定する点がＱＰ決定部１１５の動作と異なる。
【００６６】
以下、図５、図６及び図８のフローチャートにおけるＱＰ決定部１１６の動作につき、ヘッダ符号長ｈｄ＿ｓｉｚｅの相違に基づきＱＰ決定部１１５の動作と異なる点を主に説明する。ＱＰ決定部１１６の動作においては、画素グループ単位ではなく画素単位にＱＰを決定するため、各ステップにおけるｐｇは、ｐｎに読み替える。ｐｎは０から４７までの値を取る。
【００６７】
図５のＳ５０２において、ヘッダ情報の符号長ｈｄ＿ｓｉｚｅ（＝１ビット）と、全画素グループの符号長との合計を加算したブロック符号長ｂｌ＿ｓｉｚｅ［ｑｐ］の算出が行われる。図９（ｃ）は、ｐｎ＿ｓｉｚｅ［ｑｐ］［ｐｎ］とｂｌ＿ｓｉｚｅ［ｑｐ］の値の具体的な例を示す。
【００６８】
次に、Ｓ５０３においてＱＰ決定部１１６は、ｂｌ＿ｓｉｚｅ［ｑｐ］の中から所定の目標符号量ｔａｒｇｅｔ＿ｓｉｚｅ以下で、かつ最大の値を有するブロック符号長をｓｅｌ＿ｓｉｚｅに選定し、この時のｑｐをｓｅｌ＿ｑｐに選定する。図９（ｃ）に示す例では、ＱＰ：３のブロック符号長ｂｌ＿ｓｉｚｅ［３］である３３７（ビット）が目標符号量ｔａｒｇｅｔ＿ｓｉｚｅの３６０ビットよりも小さく、ｓｅｌ＿ｓｉｚｅとして選定される。またこのときのＱＰの値３がｓｅｌ＿ｑｐに決定される。ここで、符号化ブロックの符号長にヘッダ情報の符号長を含めていない場合、目標符号量の値は３６０ビットからヘッダ情報の符号長を差し引いた値となる。上述の例ではヘッダの符号長は１ビットであったので、この場合の目標符号量は３５９ビットとなる。
【００６９】
図８において、Ｓ８０１では、ＱＰ決定部１１６は画素グループ単位のＱＰｐｃｍであるｐｎ＿ｑｐ［ｐｎ］を、Ｓ５０３で決定されたＱＰ：ｓｅｌ＿ｑｐで初期化する。このとき、ｐｎ＿ｑｐ［０］〜ｐｎ＿ｑｐ［４７］までの全てがｓｅｌ＿ｑｐの値に初期化される。図９（ｃ）の例では、ＱＰ＝３が選択されたのでｐｎ＿ｑｐ［０］〜ｐｎ＿ｑｐ［４７］は全て３に初期化される。次にＳ８０２では、ＱＰ決定部１１６は現時点の符号化ブロックの符号長を表すパラメータｎｅｗ＿ｓｉｚｅを、Ｓ６０３で決定されたｓｅｌ＿ｓｉｚｅの値に初期化する。例えば図９（ｃ）の例では、ｓｅｌ＿ｓｉｚｅはＱＰが３のときのブロック符号長３３７に決定されたので、Ｓ８０２ではｎｅｗ＿ｓｉｚｅの値は３３７に初期化される。ヘッダ符号長を考慮していない場合は、ブロック符号長は３３６となる。次にＳ８０３では、ＱＰ決定部１１６は現在選択されているＱＰを示すパラメータｑｐの値をＳ６０４で決定されたｓｅｌ＿ｑｐの値で初期化する。例えば図９（ｃ）の例では、ｓｅｌ＿ｑｐは３に決定されたので、Ｓ８０３ではｑｐの値は３に初期化される。
【００７０】
Ｓ８０６、Ｓ８０７ではＱＰ決定部１１６はｍｉｎｕｓ＿ｓｉｚｅをｐｎ＿ｓｉｚｅ［ｑｐ］［ｐｎ］に設定し、ｐｌｕｓ＿ｓｉｚｅをｐｎ＿ｓｉｚｅ［ｎｅｗ＿ｑｐ］［ｐｎ］に設定する。例えば、ｐｎ＝０でｑｐ＝３の場合を考えると、図９（ｃ）に示す例では、ｍｉｎｕｓ＿ｓｉｚｅは７となり、ｐｌｕｓ＿ｓｉｚｅは８となる。このｍｉｎｕｓ＿ｓｉｚｅと、ｐｌｕｓ＿ｓｉｚｅとは、画素単位にｑｐを１だけ変更した場合に想定される符号化ブロックのブロック符号長の変化量を計算するために用いられる。
【００７１】
Ｓ８０８ではｔｍｐ＿ｓｉｚｅは、例えばｐｎ＝０でｑｐ＝３の場合、図９（ｃ）の例ではｎｅｗ＿ｓｉｚｅ＝３３７、ｍｉｎｕｓ＿ｓｉｚｅ＝７、ｐｌｕｓ＿ｓｉｚｅ＝８であるから、ｔｍｐ＿ｓｉｚｅ＝３３８となる。
【００７２】
以下、図８における処理の具体例を図９（ｃ）を参照して説明する。選定されたｓｅｌ＿ｓｉｚｅ（図９（ｃ）の例では３３７）を基にして、まず、画素番号０の画素のＱＰの値を１だけ小さくした場合のブロック符号長（３３７−７＋８＝３３８）を算出し、目標符号量（３６０）と比較する。算出したブロック符号長が目標符号量以下であった場合、次の画素番号１のＱＰを１だけ小さくした場合のブロック符号長を算出して、同じように目標符号量と比較する。このとき算出されるブロック符号長は（３３８−７＋８＝３３９）であり、目標符号量よりも小さい。このようにして画素を順に選択してＱＰを変更し、ブロック符号長を算出していくと、ブロック符号長は画素番号が１増えるに応じて１だけ大きくなる。そして画素番号２２においてブロック符号長は３６０と一致する。
【００７３】
上記算出されたブロック符号長において、画素番号２２のブロック符号長が目標符号量と一致するので、この時点で本処理を終了する。このようにして決定されたＱＰｐｃｍの具体的な値を図９（ｃ）の太枠に示す。図９（ｃ）では、太線で囲った符号長に対応するＱＰが、ＱＰ決定部１１６が画素毎に決定したＱＰｐｃｍを表している。画素単位のＱＰｐｃｍの各値は、ｐｎ＿ｑｐ［０〜２２］は２、ｐｎ＿ｑｐ［２３〜４７］は３となる。このようにしてＱＰ値を組み合わせたブロック符号長は３６０ビットとなり、目標符号量３６０ビットと一致する。生成された適用ＱＰの候補となるＱＰｐｃｍはＱＰ決定部１１６から出力され、ヘッダ省略判定部１１７へ入力される。
【００７４】
上記では、説明のためにＱＰｐｃｍを決定する処理の流れを示したがＰＣＭ符号化の場合には各画素に割り当てられるＱＰ値は圧縮率（画素ブロックの目標符号量）に応じて一意に決定される。そのため、圧縮率に応じたＱＰパターンを予めＱＰ決定部１１６が記憶しておいても良い。例えば、画素ブロックの目標符号量が３６０ビットである場合、図９（ｃ）に示すように、画素番号０〜２２のデータがＱＰ２で符号化され、画素番号２３〜４７のデータがＱＰ３で符号化される。また、上記では画素単位にＱＰｐｃｍを決定することとしているが、ＱＰ決定部１１５と同様に画素グループ単位に決定しても良い。
【００７５】
＜ヘッダ省略判定部＞
次に、ヘッダ省略判定部１１７の動作を説明する。ヘッダ省略判定部１１７は、ＰＣＭ／ＤＰＣＭが混在し得る第１の符号化モードと、ＰＣＭに固定する第２の符号化モードとのいずれを選択するかを符号化ブロック単位に判定する。また、当該判定結果に基づいて、本符号化系１２０の符号化部１１１Ｅが使用する適用ＱＰを、ＱＰ決定部１１５及び１１６のそれぞれから入力されたＱＰａｌｔとＱＰｐｃｍとのいずれかに決定する。
【００７６】
図１１はヘッダ省略判定部１１７が実行する処理の一例を示すフローチャートである。ヘッダ省略判定部１１７は、ＱＰ決定部１１５が出力したｏｖｅｒ＿ｆｌａｇの値や、第１の符号化モードと第２の符号化モードのそれぞれにおけるＱＰ値の合計に基づき、いずれの符号化モードを採用するか否かを判定する。
【００７７】
具体的に、ヘッダ省略判定部１１７は、まずＳ１１０１ではｏｖｅｒ＿ｆｌａｇをＱＰ決定部１１５から取得する。次に、Ｓ１１０２ではｏｖｅｒ＿ｆｌａｇの値が１であるか否かを判定する。もし値が１の場合（Ｓ１１０２でＹＥＳ）、Ｓ１１０６に移行する。この場合、ＰＣＭ／ＤＰＣＭが混在し得る第１の符号化モードでは目標符号量以下で符号化ができないため、ＰＣＭ固定で符号化を行う第２の符号化モードを選択する。その一方、値が０の場合（Ｓ１１０２でＮＯ）Ｓ１１０３に移行する。Ｓ１１０３では、ＱＰ決定部１１５が出力したＱＰａｌｔの符号化ブロック内での合計値ＳｕｍＱＰａｌｔを算出する。また、Ｓ１１０４では、ＱＰ決定部１１６が出力したＱＰｐｃｍの符号化ブロック内での合計値ＳｕｍＱＰｐｃｍを算出する。
【００７８】
Ｓ１１０５では、Ｓ１１０３とＳ１１０４で算出されたＱＰの各合計値を比較する。ここでＳｕｍＱＰｐｃｍの値がＳｕｍＱＰａｌｔの値以上の場合（Ｓ１１０５でＮＯ）、Ｓ１１０７に移行し、ＳｕｍＱＰｐｃｍの値がＳｕｍＱＰａｌｔの値より小さい場合（Ｓ１１０５でＹＥＳ）、Ｓ１１０６に移行する。Ｓ１１０６では、ヘッダ省略モードフラグを有効（header_skip_flg＝１）に設定して、Ｓ１１０８に移行する。一方Ｓ１１０７ではヘッダ省略モードフラグを無効（header_skip_flg＝０）に設定して、Ｓ１１０８に移行する。
【００７９】
次いでＳ１１０８では、上記で設定されたヘッダ省略モードフラグと、該フラグの設定値に従い、ＱＰ決定部１１５及び１１６のうちのいずれか一方が出力したＱＰを適用ＱＰとして本符号化系１２０の符号化部１１１Ｅ及び多重化部１２３へ出力する。このようにして、符号化ブロックの符号量を確実に目標符号量以下とする一方で、ＱＰの合計値がより小さくなる符号化モードを第１の符号化モードと第２の符号化モードとのいずれかから選択することができる。
【００８０】
上述の図９（ｂ）及び図９（ｃ）の例では、ＰＣＭ／ＤＰＣＭが混在しえる符号化モードのＱＰａｌｔの合計値は１２６、ＰＣＭに固定した符号化モードのＱＰｐｃｍの合計値は１２１となる。よって、後段の本符号化系１２０ではＰＣＭモード固定で圧縮符号化を行うこととなる。
【００８１】
図１１の処理では、符号化ブロックにおけるＱＰ値合計を原画像に対する量子化誤差に起因する画質劣化の度合いを示す指標として用い、当該合計値が小さい方の符号化方式を決定する。また、ＰＣＭ／ＤＰＣＭが混在し得る第１の符号化モードでは目標符号量以下にできない場合でも、ＰＣＭ固定の第２の符号化モードでは、画素データに最大限に符号を割り当てて画質の劣化を抑えながらも、目標符号量に必ず収めることができる。
【００８２】
＜本符号化系の動作説明＞
次に、図１の本符号化系１２０の動作について説明する。本符号化系１２０にも仮符号化系１１０に入力された画像データと同一の画像データが入力されるが、仮符号化系１１０のヘッダ省略判定部１１７が適用ＱＰとヘッダ省略モードフラグを決定し出力するまで待機する必要がある。そこで、入力画像データは遅延部１２１に入力され、仮符号化系１１０が適用ＱＰ及びヘッダ省略モードフラグを決定するために必要な所定の処理サイクル分だけ遅延される。遅延後の画像データは遅延部１２１から符号化部１１１Ｅへ出力される。これにより符号化部１１１Ｅは、仮符号化系１１０が適用ＱＰを決定した符号化ブロックを、当該決定された適用ＱＰを用いて符号化することができる。
【００８３】
符号化部１１１Ｅは、図３に示した符号化部１１１と同一の構成を有し、適用ＱＰを用いて、遅延された画像データを本符号化する。これによりＱＰ決定部１１５または１１６が決定したブロック符号長と同じ符号長の符号データが生成され、ＰＣＭ／ＤＰＣＭ選択フラグ、選択符号長と共に多重化部１２３に出力される。多重化部１２３には符号化部１１１Ｅからの符号データ、選択符号長、ＰＣＭ／ＤＰＣＭ選択フラグと、ヘッダ省略判定部１１７からのＱＰ及びヘッダ省略モードフラグが入力されており、符号ブロック毎に所定のフォーマットで多重化が行われる。多重化部１２３は、ヘッダ省略モードフラグの値に応じて以下に示す図１０（ｂ）及び図１０（ｃ）のいずれかのフォーマットに従い多重化を行って符号化データを生成し、出力する。
【００８４】
以下、発明の実施形態に対応する符号化データのフォーマットの一例について、図１０（ａ）から（ｃ）を参照して説明する。図１０（ａ）は、符号化フォーマットのデータ構造の一例を表す図である。括弧で示す数値は各領域に格納されるデータのビット数を表している。図１０（ａ）は、符号化ブロックの各画素グループに割り当てられたＱＰの値と、ＰＣＭ／ＤＰＣＭフラグ情報とを全画素グループについて記憶しておくフォーマットを示す。ブロックの全体の符号化データ１００１（３６０ビット）は、ヘッダ部１００２（４８ビット）と、画素データ部１００３（３１２ビット）から構成される。ヘッダ部１００２はＱＰの値を格納するＱＰ値部１００４（３２ビット）とＰＣＭ／ＤＰＣＭ選択フラグを格納するフラグ部１００５（１６ビット）とで構成される。ＱＰ値部１００４には画素グループ毎に２ビットのＱＰ（１００４＿０〜１００４＿ｆまで）が１６個分格納される。フラグ部１００５には画素グループ毎に１ビットのＰＣＭ／ＤＰＣＭ選択フラグのフラグ値（１００５＿０〜１５０５＿ｆまで）が１６個分格納される。画素データ部１００３には符号データが画素数分（３×１６＝４８画素分）格納される。
【００８５】
このようなフォーマットに対し、ヘッダ部のサイズを小さくし、その分だけ画素データ部のサイズを大きく確保することを可能とする本実施形態に対応する符号化フォーマットを以下に示す。まず、図９（ｂ）に示した適用ＱＰのセットは、画素グループの先頭を含む連続する一部の画素グループについて同一のＱＰが割り当てられ、残りの画素グループには異なるＱＰが割り当てられている。そしてＱＰの変化の割合は１段階である。このような性質に基づき、本実施形態に対応する符号化フォーマットでは、符号化ブロックに含まれる全てのＱＰの値を保持する必要がない。その代わりに、先頭（画素グループ番号：０）のＱＰと、ＱＰが切り替る位置を示す画素グループ番号の情報をヘッダ部に含む。一例として、先頭のＱＰをｑｐ０、ＱＰが変化する画素グループ番号をｑｐ＿ｐｏｓで示すこととする。また、上記では格納すべきＱＰ値として先頭のＱＰ、即ち最小のＱＰとしたが、同様の効果は割り当てられた最大のＱＰとした場合でも得られる。この場合でも切り替わり位置が特定できれば正しいＱＰの割当てを再現することができるからである。また、本実施形態では、ヘッダ省略モードフラグの値に応じて更にヘッダ部のサイズを小さくすることが可能となる。以下、本実施形態に対応する符号化フォーマットの例を図１０（ｂ）及び図１０（ｃ）を参照して説明する。
【００８６】
まず図１０（ｂ）は、ヘッダ省略モードフラグが無効（０）を示す場合の符号化フォーマットのデータ構造の一例を示す図である。ブロックの全体の符号化データ１０１１（３６０ビット）は、ヘッダ部１０１２（２３ビット）と、画素データ部１０１３（３３７ビット）から構成される。ヘッダ部１０１２はＱＰを格納するＱＰ値部１０１４（７ビット）とＰＣＭ／ＤＰＣＭ選択フラグを格納するフラグ部１０１５（１６ビット）とで構成される。ＱＰ値部１０１４にはヘッダ省略モードフラグの１ビット（１０１６）、ｑｐ０の２ビット（１０１７）、ｑｐ＿ｐｏｓの４ビット（１０１８）が格納される。図９（ｂ）の例では、（０、２、６）の値が格納される。フラグ部１０１５には画素グループ毎に１ビットのＰＣＭ／ＤＰＣＭ選択フラグのフラグ値（１０１５＿０〜１０１５＿ｆ）が１６個分格納される。画素データ部１０１３には可変長符号である符号データが画素数分（３×１６＝４８画素分）格納される。多重化された符号化データ１０１１はストリームデータとして出力端子１０２に出力され、非図示の画像メモリ、バスインターフェースに出力される。このような図１０（ｂ）のフォーマットでは、図１０（ａ）のフォーマットに比べヘッダ部の大きさが２５ビット分小さくなり、その分を画素データ部に振り分けることが可能となる。
【００８７】
次に、図１０（ｃ）は、ヘッダ省略モードフラグが有効（１）を示す場合の符号化フォーマットのデータ構造の一例を示す図である。ブロックの全体の符号化データ１０２１（３６０ビット）は、ヘッダ部１０２２（１ビット）と、画素データ部１０２３（３５９ビット）から構成される。前述のように、ヘッダ省略モードでは、画素ブロックにおける各画素データのＱＰが一意に決定される。そのため、ヘッダ部１０２２にはヘッダ省略モードフラグのみが格納され、図１０（ｂ）におけるｑｐ０、ｑｐ＿ｐｏｓの４ビットは省略される。このフォーマットが使用される場合には、ヘッダ省略モードフラグの値１が格納される。画素データ部１０２３には可変長符号である符号データが画素数分（３×１６＝４８画素分）格納される。多重化された符号化データ１０２１はストリームデータとして出力端子１０２に出力され、非図示の画像メモリ、バスインターフェースに出力される。このような図１０（ｃ）のフォーマットでは、図１０（ｂ）のフォーマットに比べてヘッダ省略モードフラグの１ビット以外の情報が不要となるのでヘッダ部が２２ビットさらに小さくなる。図１０（ａ）との比較では、ヘッダ部が４７ビット小さくなり、その分を画素データ部に振り分けることが可能となる。
【００８８】
次に、ヘッダ省略モードフラグの１ビットを確保するための方法について説明する。上述のヘッダ省略モード時の符号化データは、図１０（ｃ）に示すように参照番号１０２２のヘッダ省略モードフラグの１ビットと参照番号１０２３の画素データ部で構成される。この場合に、ヘッダ省略モードフラグの１ビット分の符号量を、固定的に画素データ部１０２３の先頭画素から１ビット確保する場合、符号対象ブロックのデータ構造は図１２（ａ）に示すようになる。図１２（ａ）は、図１０（ｃ）の画素データ部１０２３を詳細に示した図であり、括弧内の数値は符号量を示している。参照番号１２０１は、画素データ部の先頭画素を示す。このように先頭画素１２０１の符号量は４ビットであるのに対し、他の画素の符号量は５ビットであり、先頭画素１２０１は量子化によりヘッダ省略モードフラグのビット分、即ち１ビット分だけ多くデータが削られることになる。この場合、ヘッダ省略モード時は、常に符号化ブロック内の先頭画素のみが他の画素に比べて量子化精度が低くなってしまうことになる。
【００８９】
次に図１２（ｂ）は１フレーム分の画像を示しており、当該フレーム画像は符号化ブロック（ここでは水平１６画素×垂直１画素×３成分）により、横１２８個×縦２０４８個に分割されている。図１２（ｂ）の符号化ブロック内の番号は、１フレームにおける符号化ブロックの位置を表す座標を示している。参照番号１２１１の座標情報は、（０，２）で０が横（Ｘ方向）の座標、２が縦（Ｙ方向）の座標を示している。参照番号１２１２は符号化ブロックの先頭画素が、量子化において１ビット分多く削られており、かつ、そのような符号化ブロックが縦に並んだ場合を示している。ここで、例えば符号化対象のフレーム画像において、所定の絵柄が縦方向（Ｙ方向）に連続的に存在する場合を考える。このような場合、所定の絵柄の位置が参照番号１２１２で示すようにヘッダ省略モードの符号化ブロックと重なって縦に並ぶと、当該符号化ブロックの先頭画素のみ符号量が１ビット分だけ少ないため縦縞などが視認しやすくなり、画質劣化を招くおそれがある。そこで、フラグ１ビット分の符号量を確保する対象となる画素は、先頭画素といった固定的な位置の画素とするのではなく、任意の位置の画素を対象とすべきである。具体的に、本実施形態では１ビット分の符号量を確保する対象となる画素位置を変更可能とする。
【００９０】
図１３（ａ）はフラグ１ビット分のデータを確保するための方法を説明するための図であり、図１（a）及び（ｂ）に基づく図である。図１と比較すると、図１３（ａ）では取得部１０から画像符号化部２０に対して符号化ブロックの座標情報が提供されることを明示した点で異なっている。他の構成については図１に準ずるものとする。図１３（ａ）では、取得部１０、仮符号化系１１０、本符号化系１２０からなる構成を示すが、仮符号化系１１０の構成は図１（ｂ）と同様であるので記載を省略している。
【００９１】
取得部１０は本符号化系１２０に対して符号化対象の符号化ブロックを出力する際に、当該符号化ブロックの座標情報も合わせて出力する。ここで、座標情報は例えばフレーム画像において符号化ブロックが何ライン目に存在するのかを示すライン位置の情報（ライン番号）とすることができる。図１２（ｂ）に示した例では、当該符号化ブロックが属するライン位置を示すＹ座標値を座標情報として出力することができる。このとき、座標情報が取り得る値は０から２０４７までのいずれかの値となる。本符号化系１２０の符号化部１１１Ｅの量子化部３０１は、入力された座標情報を符号化ブロックの画素数で割った余りを符号化ブロック内の座標情報に置き換える。そして該ブロック内の座標情報に位置する画素データを１ビット多く削除して量子化する。例えば符号化対象の符号化ブロックがフレームの２０ライン目だった場合、該フレームにおける座標情報におけるＹ座標値は１９である。一方、本実施形態における符号化ブロックが有する輝度成分（Ｙ成分）の画素数を１６とすると、符号化ブロック内で画素を指定する座標情報として０から１５を取り得る。そして剰余演算の結果、３という値を符号化ブロック内の座標情報とし、量子化部３０１は該ブロック内座標情報３に位置するＹ成分の画素データについて、他の画素データよりも１ビット多く削除して量子化することによりビット数を削減する。
【００９２】
前記説明では水平１６画素として１６で割ったが、色差分の画素数も入れて計算をしても良い。その場合は、１ビット多く削除して量子化する画素はＹ、Ｃｂ、Ｃｒのいずれかの成分となる。その際、画像の特性に応じて輝度信号（Ｙ）から削除するか、或いは、色差信号（Ｃｒ，ｂ）のいずれかから削除するかを決定しても良い。また剰余演算から得られた値をインデックスとして、予め定められたテーブルから符号化ブロック内の座標情報を算出しても良い。テーブルを用いる場合について図１４を用いて説明する。図１４（ｂ）に示しているのがテーブルである。インデックスが剰余で、値には符号化ブロック内の座標情報が記録されている。ここでは符号化ブロックサイズが水平１６画素なのでインデックス０から１５までとなっているが、符号化ブロックサイズに応じて変更しても良い。
【００９３】
図１４（ａ）は、フレームにおいて、Ｘ座標が１の列の符号化ブロックにおいてヘッダ省略モードが続いた場合を示している。またＸ座標が１の列の符号化ブロックは、他のＸ座標の符号化ブロックよりも詳細に示しており、かつ上部に記載している数値はＹ成分のブロック内の画素座標情報である。その他の成分については記載を省略している。
【００９４】
Ｘ座標が１の列の符号化ブロックにおいて最初にヘッダ省略モードになる符号化ブロックは座標が（１，０）の１ライン目の符号化ブロックである。Ｙ座標の０という値が剰余の値となるので図１４（ｂ）のテーブルから符号化ブロック内の座標０を得る。よって参照番号１４０１に示した符号化ブロックの０番目（先頭）の画素が１ビット多く量子化される画素となる。次に座標が（１、１）の２ライン目の符号化ブロックでは、テーブルから座標１５という値が得られる。よって座標（１，１）の符号化ブロックにおいては、参照番号１４０２が示す位置の画素が１ビット多く量子化される画素となる。図１４（ａ）に示すように上述したテーブルによって１ビット多く削除して量子化する画素位置が離れるように設定することで縦に圧縮された画素が縦に並ぶことがなくなるため、縦縞が視認できるような画質劣化を低減することができる。
【００９５】
このように本実施形態では、符号化ブロックの全画素をＰＣＭで固定的に符号化したことを示す１ビットのフラグ情報を導入することで、当該フラグ情報以外の他の情報をヘッダ部から省略してヘッダ部のサイズを１ビットにまで縮小することが可能となる。この結果、目標符号量のうち、画素データ部に割り当てる符号量を増やすことが可能となり、入力画像によっては、ＱＰ決定部１１５が決定したＱＰａｌｔよりも小さなＱＰで符号化可能になるため、画質劣化を低減する効果が得られる。また、１ビット多く削除して量子化する画素について、符号化対象のフレーム画像のカラム方向に隣接するブロックにおいて同一位置で連続しないように決定することで、当該画素を１フレーム内で分散させることができる。これによりヘッダ省略モードの符号化ブロックが縦に並んだ場合においても縦縞のような画質劣化を低減することができる。
【００９６】
なお、上記の例では、ヘッダ省略モードフラグが１ビットの場合について説明したが、フラグに２ビット以上のサイズが割り当てられる場合、ビットの確保先となる画素をフラグビット数に応じた数とすることができる。その際に、符号化ブロックが属するライン毎に複数の画素位置の組み合わせを予め用意しておくことができる。また、画像データが、ＹＣｂＣｒ、ベイヤー配列データなどの画像データ形式の場合に、同一画素グループ内の各成分の画素からフラグに相当するビット数を確保してもよい。
【００９７】
＜画像復号化部の説明＞
次に、画像符号化部２０で生成された符号化データを復号する、発明の実施形態に対応する画像復号化部の構成例及び動作について説明する。図２は、発明の実施形態に対応する画像復号化部４０の構成例を示すブロック図である。画像処理装置１００は画像復号化部４０を有し、メモリ３０に記憶された符号化データを復号することができる。以下、本実施形態の画像復号化部の構成例において各ブロックの動作について説明する。
【００９８】
図２に示す画像復号化部４０は、分離部２０３、可変長復号化部２０４、加算器２０５、セレクタ２０６、逆量子化部２０７、予測部２０８で構成されている。画像復号化部４０は、専用のデバイス、ロジック回路やメモリを用いてハードウェア的に一体的に構成されても良いし、或いは、複数のデバイス等で分散して構成されてもよい。或いは、メモリに記憶されている処理プログラムをＣＰＵ等のコンピュータが実行することにより、ソフトウェア的に構成されてもよい。
【００９９】
画像復号化部４０には、非図示の画像メモリ、バスインターフェースなどを介して、画像符号化部２０で生成されたストリームデータが入力端子２０１を介して分離部２０３に入力される。分離部２０３は入力されたストリームデータを所定のフォーマットに従ってデコードして、ＱＰ、ＰＣＭ／ＤＰＣＭ選択フラグ、符号データの情報を分離し、処理サイクル毎に順次出力する。また、分離部２０３は、ヘッダにおけるヘッダ省略モードフラグが無効（値０）を示している場合は、その後に多重されているＰＣＭ／ＤＰＣＭ選択フラグが示す値を順次出力する。また、ヘッダ情報に含まれる先頭のＱＰと、ＱＰが切り替る位置の情報に基づき、逆量子化部２０７、量子化部２１０にＱＰを所定のタイミングで出力する。
【０１００】
ヘッダにおけるヘッダ省略モードフラグが有効（値１）を示している場合、分離部２０３は、このブロックの全ての画素について、ＰＣＭモードを示す値をＰＣＭ／ＤＰＣＭ選択フラグとして出力する。また、予め定められた画素ごとのＱＰパターンに基づきＱＰを逆量子化部２０７と量子化部２１０に出力し、ＰＣＭ／ＤＰＣＭ選択フラグはセレクタ２０６に出力する。当該ＱＰパターンは、ＱＰ決定部１１６と同様の処理によって算出してもよいし、予め算出した値を分離部２０３が保持しておいてもよい。符号データのうち、ＰＣＭデータはセレクタ２０６に出力し、ＤＰＣＭデータは可変長復号化部２０４に出力する。可変長復号化部２０４は入力されたＤＰＣＭデータの可変長復号化を行い、復号化されたＤＰＣＭデータを加算器２０５に出力する。加算器２０５は、後述の予測部２０８からの予測値と復号されたＤＰＣＭデータを加算して復号値を得て、セレクタ２０６に出力する。
【０１０１】
セレクタ２０６は分離部２０３からのＰＣＭデータと、加算器２０５からの復号値を、ＰＣＭ／ＤＰＣＭ選択フラグに応じて切り替えて量子化データとして出力し、逆量子化部２０７へ出力する。逆量子化部２０７はＱＰ値を用いて、セレクタ２０６からの量子化データを逆量子化して、復号画像データを生成し、予測部２０８と出力端子２０２に出力する。予測部２０８は画素遅延部２０９、量子化部２１０から構成される。逆量子化部２０７から入力された復号画像データは、画素遅延部２０９にて同じカラー要素の前値が予測値となるようカラー要素分遅延され、量子化部２１０にて量子化されて予測値として出力される。なお、各カラー要素の符号化ブロックの最初の画素は前画素が存在しないため、予測値としては０の値を出力する。逆量子化部２０７から出力された復号画像データは出力端子２０２を介し、外部へと出力される。
【０１０２】
ここで、図１３（ｂ）を参照して、ヘッダ省略モードにおける復号時の動作について説明する。メモリ３０は、画像符号化部２０が生成した符号化データを記憶している。メモリＩ／Ｆ１３０１は、メモリ・アクセス要求を調停し、メモリ３０に対する読み出し制御を行う。復号部４０は、入力した符号化データの復号を行い、復号した画素データを出力する。画像処理部１３０２は、画素データを用いて画像処理を行うブロックで、現像処理や、別の符号化処理などを行うブロックである。
【０１０３】
画像処理部１３０２からは、これから画像処理する画素の位置情報を出力し、復号部４０に入力する。復号部４０では、入力した画素位置情報をメモリ３０のアドレスに変換し、メモリＩ／Ｆ１３０１に対し対応する符号化データの読み出し要求を発行する。読み出し要求に応じて得られた符号化データの画素位置を復号部４０は保持しているので、読み出された符号化データがヘッダ省略モードで符号化されていたとしても１ビット多く削除されて量子化されている画素位置を把握して逆量子化部２０７が逆量子化を行うので、正しく復号することができる。
【０１０４】
上述の発明の実施形態において、画像データのビット数は、１０ビットに限定されるものではなく、８ビット、１２ビットなど異なるビット数であってもよい。また、ブロックサイズは水平１６画素×垂直１画に限定されるものではなく、任意のサイズでよい。例えば水平４画素×垂直４画素のように２次元構造としてもよい。
【０１０５】
さらに、符号化対象の画像データの形式はＲＧＢ画像データに限定されるものではなく、グレースケール画像データ、カラー画像データのうちＹＣｂＣｒ、ベイヤー配列データなどの画像データ形式であってもよい。図４（ｂ）は画像データ形式が輝度信号（Ｙ）と、二つの色差信号（Ｃｒ，ｂ）であり、ＹＣｂＣｒ４：２：２の場合の符号化ブロックを構成する画素データと、画素グループとの関係について示す。図４（ｂ）では、Ｙを２画素、Ｃｂ、Ｃｒを１画素ずつの計４画素を単位画素グループとし、符号化ブロックを４×８＝３２画素から構成する例を示している。ここで、符号化ブロックに含める画素グループの数はより８グループよりも多くても良い。図４（ｃ）は、画像データ形式がベイヤー配列の場合の符号化ブロックを構成する画素データと、画素グループとの関係について示す。図４（ｃ）では、Ｇを２画素、Ｒ、Ｂを１画素ずつの計４画素を単位画素グループとし、符号化ブロックを４×８＝３２画素から構成する例を示している。ここで、符号化ブロックに含める画素グループの数はより８グループよりも多くても良い。グレースケール画像については不図示であるが、グレースケール画像を構成する画素のうち隣接画素の組から画素グループを構成することができる。その際、単位画素グループには例えば３画素または４画素の隣接画素を含めることができる。
【０１０６】
（第２の実施形態）
第１の実施形態では、ヘッダ省略モードフラグの１ビット分の符号量を捻出するための１ビット多く削除して量子化する画素位置を決めるために、フレームにおける符号化ブロックの座標情報を利用した。これに対して本実施形態では、符号化ブロック内の所定の画素の量子化後の画素値を用いて１ビット多く削除して量子化する画素の位置を決定する実施形態について説明する。
【０１０７】
図１５（ａ）は１つの符号化ブロックがヘッダ省略モードになった際の各情報が持つサイズを示しており、括弧内の数値がそのビット数である。図１５（ａ）は、Ｙ成分の先頭画素の画素値に応じて１ビット多く削除して量子化する画素の位置を決定していることを示している。ここではＹ成分のブロック内の画素座標情報のみを示し、その他の成分については記載を省略している。参照番号１５０１は、符号化ブロックの先頭の画素である。該画素データの値は、固定のＱＰで量子化された値である。
【０１０８】
例えば先頭画素１５０１の画素値が「９」であった場合、符号化ブロックの先頭画素から９番目の画素位置である参照番号１５０２の画素データを１ビット多く削除して量子化する画素として決定する。本実施形態において、１つの符号化データにおいてＹ成分は１６画素存在する。そして、画素データ５ビットのうち下位４ビットの値を１ビット多く削除して量子化する画素の座標として捉える。図１５の例では、参照番号１５０１の画素値は、「９（０１００１）」もしくは「２５（１１００１）」という値の時に参照番号２００２が１ビット多く削除して量子化する画素として決定される。この例の場合、参照番号１５０１の画素値が０だった時は、例えば、先頭画素以外の他の予め定めた座標位置のＹ成分の画素データを１ビット多く削除して量子化する画素とすることができる。もしくは符号化時に１フレーム画像の符号化データのヘッダに座標位置を埋め込んで、復号部に伝達しても良い。いずれの場合においても復号時に当該座標位置が特定できればよい。
【０１０９】
図１５（ｂ）は、フレームにおいて、符号化ブロックのＸ座標２の列においてヘッダ省略モードが続いた場合を示しており、上述した方法で、１ビット多く削除して量子化する画素位置を変えた場合の例を示している。２列目の符号化ブロックの上部に記載されている数値は、２列目の符号化ブロックのＹ成分の画素座標情報である。また２列目の符号化ブロックの左側に記載している数値（下線部有りの数値）は２列目の符号化ブロックそれぞれの先頭画素の量子化後の画素値である。符号化ブロック座標（１、０）の符号化ブロックの先頭画素値は５である。よって、先頭画素を０番目として先頭から５番目の画素位置のＹ成分の画素１５１１が１ビット多く削除して量子化される画素として決定される。次に符号化ブロック座標（１、１）の符号化ブロックの先頭画素値は２１である。よって画素１５１１の真下の画素が１ビット多く削除して量子化される画素として決定される。ここで、２つの画素がX成分方向に連続しているが、続く符号化ブロック座標（１、２）の符号化ブロックの先頭画素値は２６であるので、先頭画素から１０番目の画素位置の画素が１ビット多く削除して量子化される画素として決定され、X成分方向への連続性を断ち切ることができる。
【０１１０】
このように、本実施形態によれば符号化ブロック内の先頭画素の画素値を用いて１ビット多く削除して量子化する画素位置を決定することができるので、符号化ブロック内の座標情報のような符号化部や復号部ブロック以外からの情報を必要とせずに１ビット多く削除して量子化する画素位置を決定することができる。
【０１１１】
また、復号の際は、この例では符号化ブロックの先頭画素を可変長復号すれば量子化後の画素値が得られるので、１ビット多く削除して量子化されている画素位置を特定でき、正しく復号することが可能である。
【０１１２】
上記の本実施形態では、符号化ブロックの先頭画素の画素値に応じて１ビット多く削除して量子化する画素の位置を特定したが、他の位置の画素の値に応じて決定しても良い。フレーム画像の符号化データのヘッダ（１フレームに１回送れば良い）に、どの画素位置に応じて１ビット多く削除して量子化する画素の位置を決定するのかを記載すればフレーム毎に異なる画素位置に変更しても復号部に画素位置を伝えることが可能なので正しく復号することができる。
【０１１３】
以上によれば、本実施形態においても、ヘッダ省略モードの符号化ブロックが縦に並んだ場合においても縦縞のような画質劣化を低減することができる。
【符号の説明】
【０１１４】
１０：取得部、２０：画像符号化部、３０：メモリ、１０１：入力端子、１０２：出力端子、１１０：仮符号化系、１２０：本符号化系
【図１】
2019114868.tif 000003
【図２】
2019114868.tif 000004
【図３】
2019114868.tif 000005
【図４】
2019114868.tif 000006
【図５】
2019114868.tif 000007
【図６】
2019114868.tif 000008
【図７】
2019114868.tif 000009
【図８】
2019114868.tif 000010
【図９】
2019114868.tif 000011
【図１０】
2019114868.tif 000012
【図１１】
2019114868.tif 000013
【図１２】
2019114868.tif 000014
【図１３】
2019114868.tif 000015
【図１４】
2019114868.tif 000016
【図１５】
2019114868.tif 000017