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