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