(57)【要約】      （修正有）【課題】１ブロック当たりの符号化データ量を目標符号量以下になることを保証しつつ、一定画質の画像の生成を保証した符号化データを生成する。【解決手段】画像データを複数画素で構成されるブロックに分割して可逆符号化データを生成し、可逆符号化データの符号量が目標符号量を超える場合には、超過したデータを除いて得た非可逆符号化データを着目ブロックの符号化データとして生成し、可逆符号化データの符号量が目標符号量以下の場合には、可逆符号化データを着目ブロックの符号化データとして生成する第１の符号化部と、第１の符号化部によるブロックの符号化にて、目標符号量に満たない符号化データが発生するたびに、目標符号量に対する余剰データ容量をカウントし、画像データに対する第１の符号化部による符号化を終えた場合、余剰データ容量に対応する符号化データを、第１の符号化部で得た符号化データに付加して出力する符号量制御部とを有する。【選択図】図１
2019047154.tif 000002
【特許請求の範囲】
【請求項１】
画像を符号化する画像符号化装置であって、
画像データを複数画素で構成されるブロックに分割する分割手段と、
該分割手段で得た着目ブロックから可逆符号化データを生成し、当該可逆符号化データの符号量が目標符号量を超える場合には、超過したデータをメモリに記憶すると共に前記超過したデータを除いて得た非可逆符号化データを前記着目ブロックの符号化データとして生成し、前記可逆符号化データの符号量が前記目標符号量以下の場合には、当該可逆符号化データを前記着目ブロックの符号化データとして生成する第１の符号化手段と、
前記メモリに格納された前記超過したデータを符号化する第２の符号化手段と、
前記第１の符号化手段によるブロックの符号化にて、前記目標符号量に満たない符号化データが発生するたびに、前記目標符号量に対する余剰データ容量をカウントするカウント手段と、
前記画像データに対する前記第１の符号化手段による符号化を終えた場合、前記第２の符号化手段で生成された符号化データのうち前記カウント手段でカウントした余剰データ容量に対応する符号化データを、前記第１の符号化手段で得た符号化データに付加して出力する符号量制御手段と
を有することを特徴とする画像符号化装置。
【請求項２】
前記第１の符号化手段は、
前記着目ブロック内の最小の値を持つ最小画素Ｐｍｉｎ、最大の値を持つ最大画素Ｐｍａｘ、及び、前記最小画素Ｐｍｉｎ及び最大画素Ｐｍａｘそれぞれの位置を抽出する抽出手段と、
前記最小画素Ｐｍｉｎと前記最大画素Ｐｍａｘとから前記着目ブロック内の画素値の取り得る範囲を表すための最小ビット数を表すＢＲを求め、前記最小画素Ｐｍｉｎ、最大画素Ｐｍａｘを除く他の画素については、前記最小画素Ｐｍｉｎ又は最大画素Ｐｍａｘの値との差を、前記ＢＲが示すビット数の精度で算出する算出手段と、
前記ＢＲと前記目標符号量となるための固定長さを表すＦＬとを比較する比較手段と、
該比較手段の比較の結果がＢＲ≦ＦＬを示す場合、前記抽出手段で得た情報、及び、前記算出手段で得た情報を、前記着目ブロックの符号化データとして生成し、
該比較手段の比較の結果がＢＲ＞ＦＬを示す場合、前記抽出手段で得た情報、及び、前記算出手段で得た差分を示すビット数ＢＲのうち、上位のＦＬが示すビット数の情報を前記着目ブロックの符号化データとして生成すると共に、前記差分を示すビット数ＢＲのうち、下位の「ＢＲ−ＦＬ」のビット数のデータを前記メモリに格納する生成手段と、
を含むことを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記第１の符号化手段は、
前記着目ブロック内の最小又は最大の値を持つ代表画素、当該代表画素の位置、及び、前記着目ブロック内の画素の値の取り得る範囲を表す最小ビット数を表すＢＲを抽出する抽出手段と、
前記代表画素を除く他の画素については、前記代表画素の値との差を、前記ＢＲが示すビット数の精度で算出する算出手段と、
前記ＢＲと前記目標符号量となるための固定長さを表すＦＬとを比較する比較手段と、
該比較手段の比較の結果がＢＲ≦ＦＬを示す場合、前記抽出手段で得た情報、及び、前記算出手段で得た情報を、前記着目ブロックの符号化データとして生成し、
該比較手段の比較の結果がＢＲ＞ＦＬを示す場合、前記抽出手段で得た情報、及び、前記算出手段で得た差分を示すビット数ＢＲのうち、上位のＦＬが示すビット数の情報を前記着目ブロックの符号化データとして生成すると共に、前記差分を示すビット数ＢＲのうち、下位の「ＢＲ−ＦＬ」のビット数のデータを前記メモリに格納する生成手段と、
を含むことを特徴とする請求項１に記載の画像符号化装置。
【請求項４】
前記カウンタ手段は、ＢＲ＜ＦＬの関係を有する場合のＦＬ−ＢＲの値を前記余剰データ容量としてカウントすることを特徴とする請求項２又は３に記載の画像符号化装置。
【請求項５】
前記第２の符号化手段は、前記第１の符号化手段が前記メモリに格納する、前記差分を示すビット数ＢＲのうち下位の「ＢＲ−ＦＬ」のビット数のデータのうち、上位から下位の各ビット位置のビット列に分けて記憶する手段を含む
ことを特徴とする請求項２乃至４のいずれか１項に記載の画像符号化装置。
【請求項６】
前記符号量制御手段は、前記第２の符号化手段が記憶する上位のビット列を優先して、前記第１の符号化手段で得た符号化データに付加する
ことを特徴とする請求項５に記載の画像符号化装置。
【請求項７】
符号化対象の画像データから予め設定されたサイズの領域の画像を入力する入力手段を有し、
前記分割手段は、前記入力手段で入力した前記領域の画像を分割することを特徴とする請求項１乃至６のいずれか１項に記載の画像符号化装置。
【請求項８】
前記符号量制御手段は、
前記第１の符号化手段によって、前記入力した領域内の着目ブロックを符号化したときに得られた符号化データのデータ量が前記目標符号量に至らず余剰データ容量が発生した場合、
前記領域よりも前に入力した領域までを含む、前記着目ブロックより前に符号化を行ったブロックについて前記第２の符号化手段が生成した符号化データにおける、前記余剰データ容量に対応する符号化データを、前記着目ブロックの第１の符号化データが生成した符号化データに付加する
ことを特徴とする請求項７に記載の画像符号化装置。
【請求項９】
画像データのブロックごとの複雑度を表す情報を取得する取得手段と、
該取得手段で取得した情報に基づき、ブロック単位に、前記目標符号量を設定する設定手段を更に有する
ことを特徴とする請求項１乃至８のいずれか１項に記載の画像符号化装置。
【請求項１０】
画像データが表す画像に対するＲＯＩを示す情報を取得手段と、
該取得手段で取得した前記ＲＯＩを含むブロックには第１の目標符号量、前記ＲＯＩを含まないブロックに対しては前記第１の目標符号量より低い第２の目標符号量を設定する設定手段を更に有する
ことを特徴とする請求項１乃至８のいずれか１項に記載の画像符号化装置。
【請求項１１】
画像を符号化する画像符号化装置の制御方法であって、
分割手段が、画像データを複数画素で構成されるブロックに分割する分割工程と、
第１の符号化手段が、前記分割工程で得た着目ブロックから可逆符号化データを生成し、当該可逆符号化データの符号量が目標符号量を超える場合には、超過したデータをメモリに記憶すると共に前記超過したデータを除いて得た非可逆符号化データを前記着目ブロックの符号化データとして生成し、前記可逆符号化データの符号量が前記目標符号量以下の場合には、当該可逆符号化データを前記着目ブロックの符号化データとして生成する第１の符号化工程と、
第２の符号化手段が、前記メモリに格納された前記超過したデータを符号化する第２の符号化工程と、
カウント手段が、前記第１の符号化工程によるブロックの符号化にて、前記目標符号量に満たない符号化データが発生するたびに、前記目標符号量に対する余剰データ容量をカウントするカウント工程と、
符号量制御手段が、前記画像データに対する前記第１の符号化工程による符号化を終えた場合、前記第２の符号化工程で生成された符号化データのうち前記カウント工程でカウントした余剰データ容量に対応する符号化データを、前記第１の符号化工程で得た符号化データに付加して出力する符号量制御工程と
を有することを特徴とする画像符号化装置の制御方法。
【請求項１２】
コンピュータが読み込み実行することで、前記コンピュータに、請求項１１に記載の方法が有する各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データの符号化技術に関するものである。
【背景技術】
【０００２】
従来、画像データを画像全面、又は、所定単位毎に決まった符号量（またはそれ以下）になるよう符号化する、固定長符号化技術が知られている。固定長符号化の方法として、ブロック毎に画像特徴ＩＤと、画像特徴に応じた量子化値を持つことで、各ブロックに対して固定長符号化を実現する方法がある（特許文献１）。この方法によれば、高解像度で低階調なブロックや低解像度で高階調なブロックが混在している画像に対しても、各ブロックに対して適切な量子化が行われ、画質良く固定長符号化できる。
【０００３】
また、所定単位毎に可逆符号化で目標符号量に収まる場合には可逆符号化データを出力し、目標符号量を超える場合には、量子化や符号化データの打ち切りを行うことで符号量制御を行うような方法もある（特許文献２）。この方法によれば、所定単位毎に、適切な符号長を割り当てつつ、符号量制御が可能である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−６３２８２号公報
【特許文献２】特開２００１−８６５０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、画像内の全ブロックについて、同じ符号長で符号化する。そのため、ブロック内が１色で構成されているようなエントロピーの低いブロックの場合には、余分に符号を割り当ててしまうことになる。逆に、複雑なテクスチャーなど、エントロピーの高いブロックに対しては、過剰に画質を劣化させている可能性がある。特許文献２では、符号量の少ない所定単位に対して、必要以上に符号が削減されないような機構や、画質に大きな影響を与える係数については削減しないなど言及しているが、一定以上の画質を保証できるような機構は保持していない。
【０００６】
本発明は上記問題に鑑みなされたものであり、ブロック単位の符号化を行う符号化であって、１ブロック当たりの符号化データ量が目標符号量以下になることを保証しつつ、且つ、一定画質の画像の生成を保証した符号化データを生成する技術を提供しようとするものである。
【課題を解決するための手段】
【０００７】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像を符号化する画像符号化装置であって、
画像データを複数画素で構成されるブロックに分割する分割手段と、
該分割手段で得た着目ブロックから可逆符号化データを生成し、当該可逆符号化データの符号量が目標符号量を超える場合には、超過したデータをメモリに記憶すると共に前記超過したデータを除いて得た非可逆符号化データを前記着目ブロックの符号化データとして生成し、前記可逆符号化データの符号量が前記目標符号量以下の場合には、当該可逆符号化データを前記着目ブロックの符号化データとして生成する第１の符号化手段と、
前記メモリに格納された前記超過したデータを符号化する第２の符号化手段と、
前記第１の符号化手段によるブロックの符号化にて、前記目標符号量に満たない符号化データが発生するたびに、前記目標符号量に対する余剰データ容量をカウントするカウント手段と、
前記画像データに対する前記第１の符号化手段による符号化を終えた場合、前記第２の符号化手段で生成された符号化データのうち前記カウント手段でカウントした余剰データ容量に対応する符号化データを、前記第１の符号化手段で得た符号化データに付加して出力する符号量制御手段とを有する。
【発明の効果】
【０００８】
本発明によれば、ブロック単位の符号化を行う符号化であって、１ブロック当たりの符号化データ量を目標符号量以下になることを保証しつつ、且つ、一定画質の画像の生成を保証した符号化データを生成することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係る画像符号化装置の構成を示すブロック図。
【図２】第１の実施形態に係る固定長符号化部の処理を示すフローチャート。
【図３】第１の実施形態に係るオーバービット符号化部の処理を示すフローチャート。
【図４】符号化対象ブロックの例を示す図。
【図５】符号化対象ブロックの符号化データの例を示す図。
【図６】符号化対象ブロックと符号化データのデータ長の関係を示す図。
【図７】オーバーブロックとオーバービット符号化データの関係を示す図。
【図８】符号化対象の画像データとブロックの関係を示す図。
【図９】第１の実施形態に係る符号化データの構造を示す図。
【図１０】第２の実施形態に係る符号化データの構造を示す図。
【図１１】第２の実施形態に係る画像符号化装置の処理を示すフローチャート。
【図１２】第３の実施形態に係る符号化データの構造を示す図。
【図１３】第４の実施形態に係る画像符号化装置の構成を示すブロック図。
【図１４】第４の実施形態に係る符号化処理の流れを示すフローチャート。
【図１５】サブサンプリングの一例を示す図。
【図１６】複雑度の変動が平坦な例を示す図。
【図１７】複雑度に対するブロック毎の固定長の設定値の例を示す図。
【図１８】ＲＯＩとブロックの関係を示す図。
【図１９】第５の実施形態の固定長の設定値の例を示す図。
【発明を実施するための形態】
【００１０】
以下添付図面に従って本発明に係る実施形態を詳細に説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成については、同じ符号を付して説明する。
【００１１】
［第１の実施形態］
本第１の実施形態では、画像符号化の際に、ブロック単位の固定長以下の符号化と、固定長を超えるビットの符号化を分けて行う。固定長以下の符号化の際には、ビット単位での処理を必要とせず、簡易な方法で符号化が可能となる。また、固定長を超えるビットの符号化については、非圧縮でデータを保持しておき、符号量制御時にビット単位での制御を行う。これにより、所定単位毎に符号長が固定長以下になるよう符号量制御することを可能としつつ、一定以上の画質を保証する。以下、その具体的な例を説明する。
【００１２】
実施形態における画像符号化装置はデジタルカメラ等の撮像装置に内蔵されるものとして説明する。つまり、符号化対像は、撮像装置が有する撮像部で得た画像とする。なお、撮像装置以外の装置に適用しても構わない。また、符号化対象の画像は記憶媒体に記憶されていても良いし、ネットワーク上のファイルサーバに格納されていても構わない。撮像装置に適用するのは、具現化することで実施形態の技術の理解を容易にするためであり、あくまで例示であると理解されたい。
【００１３】
図１は本第１の実施形態にかかる符号化処理の構成を示すブロック図である。図１に示すように、本実施形態の符号化装置は、入力部１０１、符号化部１００、符号量制御部１０６、符号列形成部１０７、出力部１０８を有する。また、符号化部１００は、ブロック分割部１０２、ブロック符号化部１０３、オーバービット符号化部１０４、バッファ（メモリ）１０５を有する。
【００１４】
入力部１０１は、デジタルカメラが有する不図示の撮像素子で撮影された画像データを入力する。入力される画像は、Ｒ、Ｇ０、Ｇ１、Ｂのベイヤ配列の画素で構成されるＲＡＷ画像データであり、１画素（１成分）は１４ビットで表されるものとする。また、入力部１０１は、入力したＲＡＷ画像データから、Ｒ成分の画素のみで構成されるＲプレーン、Ｇ０成分の画素のみで構成されるＧ０プレーン、Ｇ１成分の画素のみで構成されるＧ１プレーン、そして、Ｂ成分の画素のみで構成されるＢプレーンを生成する。そして、入力部１０１は、生成した各プレーンを符号化部１００に供給する。つまり、入力部１０１は、撮像素子で得られた１枚のＲＡＷ画像データから、４回に分けて生成した各プレーンを符号化部１００に供給する。なお、生成するプレーンの順番は特に問わないが、Ｒ，Ｇ０，Ｇ１，Ｂのプレーンの順とする。
【００１５】
上記の通りなので、実施形態における符号化部１００は、入力部１０１から供給される画像データが１画素１成分のモノクロ画像データであるものとして符号化することになる。
【００１６】
なお、本実施形態では、符号化対象の画像データがベイヤ配列の画素で構成されるＲＡＷ画像データとしているが、１画素がＲＧＢ成分で各成分がＮビットの画像データや、他の色表現を用いた画像データに対しても適用できる。例えば、ＲＧＢ各成分が８ビットで表現される画像データに対しては、Ｒ，Ｇ，Ｂの各色成分毎に、１画素８ビットのモノクロ画像として符号化すれば良い。また、１画素がＹ、Ｃｂ、Ｃｒで各成分が８ビットで表現される輝度色差成分に対しては、Ｙ，Ｃｂ，Ｃｒの各成分の８ビットのモノクロ画像として符号化すれば良い。上記はあくまで例である。
【００１７】
符号化部１００におけるブロック分割部１０２は、入力部１０１から入力された画像データ（Ｒ、Ｇ０、Ｇ１，Ｂプレーンのいずれか）を、水平方向Ｂｗ画素、垂直方向Ｂｈ画素の矩形ブロックに分割する。説明の便宜上、符号化対象の画像の水平方向に並ぶ画素数ＷはＢｗの整数倍であるものとする。同様に、垂直方向に並ぶ画素値ＨについてもＢｈの整数倍であるとし、矩形ブロックに分割した場合に不完全なブロックが発生しないものとする。この水平方向Ｂｗ画素、垂直方向Ｂｈ画素で構成される矩形ブロック（着目ブロック）をこれ以降、ブロックデータもしくは単にブロックと呼ぶ。
【００１８】
本実施形態では、１つのブロックのサイズを４×４画素として説明する。図８に符号化対象の画像データとブロックの関係を図示する。図示のように符号化対象の画像の左上隅を原点とする。そして、水平右方向ｉ番目、垂直下方向ｊ番目のブロックをＢ（ｉ，ｊ）と記す。また、ブロックＢ（ｉ，ｊ）内の座標（ｍ，ｎ）の画素値をＢi,j（ｍ，ｎ）と記す。例えば、ブロックＢ（２，３）の左上隅の画素はＢ2,3（０，０）と記す。
【００１９】
ブロック符号化部１０３は、ブロック分割部１０２から供給された１ブロック分の画素データから、予め設定された固定符号長以下の符号化データを生成する符号化処理を行う。このブロック符号化部１０３の説明をするにあたり、まずは予め設定された固定長ＦＬについて説明する。
【００２０】
ここに示す固定長ＦＬは、ブロック単位の最大符号長を制御するためのパラメータであると言える。本実施形態におけるブロックの符号化データは、非圧縮でそのまま保持される画素データと、固定長以下で可変長符号で表される画素データの混在を許容する。そして、ブロック内の可変長符号化される画素データの符号長の上限を示すのが「固定長ＦＬ」と定める。
【００２１】
本実施形態においては、固定長ＦＬは全てのブロックに対して同じ値を持つものとするが、これに限らず、ブロック単位に変更しても構わない。ただし、画像全面に対する目標符号量を超えないように各ブロックに対する固定長ＦＬを設定する必要がある。固定長ＦＬは、不図示の装置外部からユーザが入力しても構わないし、装置に予め値を設定しておいてもよい。
【００２２】
図２は、実施形態における、符号化部１００から符号量制御部１０６までの処理内容を示すフローチャートである。以下、同図に従って符号化部１００、符号量制御部１０６の処理手順を説明する。なお、同図はブロックを単位とするラスタースキャン順の符号化処理である。故に、最初のブロックは画像データの左上隅のブロックＢ（０，０）となる。以下は、その符号化過程における着目ブロックＢ（ｉ，ｊ）についての説明である。また、最初のブロックＢ（０、０）の処理に先立って、変数ＳＤ（詳細後述）はゼロクリアされるものとする。
【００２３】
ステップＳ２０１において、符号化部１００のブロック符号化部１０３は、符号化対象の画像データから着目ブロックＢ（ｉ，ｊ）を入力し、その中の最小画素Ｐｍｉｎと最大画素Ｐｍａｘを探索する。図４（ａ）に示すように、ブロック内の画素を所定のスキャン順序（例えばラスタースキャン）で０番からｎ番まで順位付けし先頭画素から順にその画素値をＰ０，Ｐ１，…，Ｐｎと表現する。なお、実施形態では１ブロックが４×４画素としているので、ｎ＝１５である。
【００２４】
図４（ｂ）は、画素Ｐ１乃至Ｐ１５の画素値の具体例を示している。同図の場合、最小画素Ｐｍｉｎの画素位置（順位）は０であり、その画素値はＰ０（＝１２）となる。また、同図において、最大Ｐｍａｘの画素位置は７であり、画素値はＰ７（＝２９８）となる。ちなみに、最小画素値を持つ画素が複数存在した場合には、スキャンの最初に出現した画素をＰｍｉｎとする。最大画素値Ｐｍａｘも同様である。また、最小最大画素以外の各画素を、図４（ｂ）に示すように、ＯＰｍと表現する。実施形態の場合、１ブロック内には１６画素が含まれ、そのうち２つが最小画素Ｐｍｉｎと最大画素Ｐｍａｘとなるので、画素ＯＰｍの個数は１４個である（ｍの取り得る値は１なしい１４である）。
【００２５】
次に、ステップＳ２０２にて、ブロック符号化部１０３は、着目ブロックＢ（ｉ，ｊ）の最小画素Ｐｍｉｎと最大画素Ｐｍａｘを符号化する。本実施形態においては、最小画素Ｐｍｉｎの画素位置と画素値、最大画素Ｐｍａｘの画素位置と画素値をそれぞれ固定長の符号データとして保持するものとする。実施形態では、１ブロックが４×４画素（＝１６画素）としているので、「画素位置」は４ビットで表現できる。なお、ここでは自然二進数表現を用いるものとするが、一意に復号できるものであれば、交番二進など、別の二値表現を用いても構わない。
【００２６】
図４（ｂ）の例では、Ｐｍｉｎの位置情報は０なので、その位置は“００００”、Ｐｍａｘの位置情報は７なのでその位置は“０１１１”（いずれも二進表現）と表現される。画素値については、非圧縮のままで１４ビットである。但し、最大画素Ｐｍｉｎ、最大画素Ｐｍａｘの画素値を非圧縮とするが、多少の劣化を許容しても良いのであれば、入力画素のビット数よりも少ないビットで最小画素値、最大画素値を表現しても構わない。ブロック符号化部１０３は、着目ブロックＢ（ｉ，ｊ）から得た最小画素Ｐｍｉｎと最大画素Ｐｍａｘの符号化データを図１に示したバッファ１０５へ格納される。
【００２７】
ステップＳ２０３にて、ブロック符号化部１０３は、符号化対象の着目ブロックＢ（ｉ，ｊ）のブロックレンジＢＲを算出する。ブロックレンジＢＲとは、ブロック内の最小画素Ｐｍｉｎと最大画素Ｐｍａｘの差分値のビットレンジのことを示すものと定義する。つまり、ブロック符号化部１０３は、最大画素Ｐｍａｘから最小画素Ｐｍｉｎの値を引いて得た差分値ＤＩＦＦを表現する最小ビット数を求める。
【００２８】
例えば、図４（ｂ）の場合、Ｐｍｉｎ＝１２，Ｐｍａｘ＝２９８であるので、その差分値ＤＩＦＦは“２８６”となる。値“２８６”を表す最小ビット数は“９”である。この意味は、着目ブロックＢ（ｉ，ｊ）の最小画素Ｐｍｉｎ、最大画素Ｐｍａｘを除く画素ＯＰｍは、最小画素Ｐｍｉｎ（或いは最大画素Ｐｍａｘ）に対して９ビットの差分値で表現できることを意味する。なお、実施形態では、１画素が１４ビットとし、固定長ＦＬは７としているので、ブロックレンジＢＲの最大値は“１４”である。
【００２９】
図６を用いてブロックレンジＢＲと固定長ＦＬの関係を以下に説明する。図６の符号６１乃至６３は、特徴の異なる３つのブロックの例を示している。ブロック６１、６２、６３の順番に、ブロック内の画素間の最大差分ＤＩＦＦが大きくなっていくものとする。ここで、ブロック６１のブロックレンジＢＲが“２”、ブロック６２のブロックレンジＢＲが“７”、ブロック６３のブロックのブロックレンジが“１４”であるものとする。そして、今、固定長ＦＬ＝７とすると、ブロック６１、６２、６３それぞれのブロックレンジＢＲと固定長ＦＬの関係は、同図の下部に示す参照符号６１’，６２’、６３’となる。
【００３０】
ブロック６１について着目すると、ブロック６１の最小画素Ｐｍｉｎと最大画素Ｐｍａｘを除く画素ＯＰｍは、最小画素Ｐｍｉｎに対する２ビットの差分で表現できることになる。従って、固定長ＦＬ＝７のうち５ビットは余剰ビットであり、その分だけ符号量を発生せずに済む。画素ＯＰｍは全部で１４画素存在するわけであるから。ブロック６１の場合には、ブロック６１の画素ＯＰｍの目標符号量よりも５×１４ビット少ない符号化データで表現できることを意味する。
【００３１】
ブロック６２について着目すると、ブロックレンジＢＲと固定長ＦＬは同じであるので、ブロック６２内の画素ＯＰｍは、最小画素Ｐｍｉｎに対する固定長ＦＬビットによる差分で表されることになる。つまり、ブロック６２の場合は、画素ＯＰｍは目標符号量の符号化データで表現できることになる。
【００３２】
一方、ブロック６３の場合、ブロックレンジＢＲ＝１４となる。つまり、ブロックレンジＢＲは固定長ＦＬより大きい。それ故、ブロック符号化部１０３は、画素ＯＰｍの画素値として支配的な上位ＦＬビットの符号化データを生成する。そして、ブロック符号化部１０３は、ＦＬビットを超過した下位ＢＰ（＝ＢＲ−ＦＬ）ビット（正確にはＢＰ×１４ビット）を、オーバービット符号化部１０４に供給し、そこで符号化させる（後述）。
【００３３】
後述する説明から明らかになるが，ＢＲとＦＬとを比較することは、ブロック符号化部１０３が、着目ブロックに対して目標符号量以下の可逆符号化データを生成できるか否かを判定することと等価である。
【００３４】
図２のフローチャートの説明に戻る。ステップＳ２０４にて、ブロック符号化部１０３はステップＳ２０３で算出された着目ブロックＢ（ｉ，ｊ）のブロックレンジＢＲと“０”と比較する。ブロックレンジＢＲの値が０よりも大きい場合（Ｙｅｓ）は、ブロック符号化部１０３は、処理をステップＳ２０５へ遷移し、最小・最大画素以外の画素ＯＰｍの符号化を行う。一方、ブロックレンジＢＲの値が０の場合（Ｎｏ）には、着目ブロック内の全ての画素が同じ画素値を持つことを意味する。そのため、ブロック符号化部１０３は、最小画素Ｐｍｉｎ、最大画素Ｐｍａｘ以外の画素ＯＰｍを符号化する必要がない。それ故、ブロック符号化部１０３は画素ＯＰｍの符号化処理（ステップＳ２０５〜Ｓ２０６）をスキップして、処理をステップＳ２０７へ遷移する。
【００３５】
ステップＳ２０５にて、ブロック符号化部１０３は、最小画素Ｐｍｉｎ、最大画素Ｐｍｉｘ以外の画素ＯＰｍ（＝ＯＰ１，ＯＰ２、…，ＯＰ１４）を固定長ＦＬ以下で符号化する。以下はその符号化の説明である。
【００３６】
符号化対象の着目ブロックＢ（ｉ，ｊ）のブロックレンジＢＲが固定長ＦＬ以下の場合、ブロック符号化部１０３は、画素ＯＰｍ（ＯＰ１〜ＯＰ１４）の値から最小画素Ｐｍｉｎの画素値を引いた値Ｑｍ（Ｑ１〜Ｑ１４）を符号化データとして出力する。勿論、各値Ｑｍは、ブロックレンジＢＲが表すビット数である。
【００３７】
一方、着目ブロックのブロックレンジＢＲが固定長ＦＬよりも大きい場合、ブロック符号化部１０３は、画素ＯＰｍ（ＯＰ１〜ＯＰ１４）の値から、最小画素の画素値Ｐｍｉｎで引いた値Ｑｍ（Ｑ１〜Ｑ１４）を、ビット数ＢＲの精度で生成する。このＱｍを固定長ＦＬで表現できるように、下位ビットを切り捨て、各画素ＯＰｍの固定長ＦＬの符号化データを生成する。換言すれば、ブロック符号化部１０３は、ビット数ＢＲの精度で演算した値Ｑｍの上位ＦＬビットを、着目画素ＯＰｍの符号化データとして出力する。ここで、理解を容易にするため、着目ブロックが図４（ｂ）に示すブロックの場合の具体例を以下に示す。
【００３８】
本実施形態において固定長ＦＬ＝７である。図４（ｂ）に示すブロックのブロックレンジＢＲは“９”である。つまり、オーバービット数が“２”となる。そのため、ブロック符号化部１０３は、画素ＯＰｍから最小画素の画素値Ｐｍｉｎを減算して得たＱｍ（９ビット）の上位７ビットを、着目ブロック内の画素ＯＰｍを固定長符号化データとして生成する。つまり、ブロック符号化部１０３が、Ｑｍ（９ビット）の下位２ビットを切り捨てて残った７ビットを固定長符号化データとして生成する。
【００３９】
例えば、図４（ｂ）における画素ＯＰ１の値は“６４”である。最小画素の画素値Ｐｍｉｎは“１２”であるから、画素ＯＰ１の最小画素の画素値に対する差分を表す値Ｑ１は“５２”となる。したがって、ブロック符号化部１０３は、値Ｑ１を２ビット右シフトして“１３”（自然二進表記で“０００１１０１”）が生成される。他のＱ２〜Ｑ１４についても、最小画素の画素値との差分を２ビット右シフトして、符号化データが生成できる。
【００４０】
ここで、図４（ｂ）に示すブロックの最小画素Ｐｍｉｎ、最大画素Ｐｍａｘを除く画素ＯＰｍの符号化データの各値は図５に示す通りである。
【００４１】
ステップＳ２０６において、ブロック符号化部１０３は、着目ブロックＢ（ｉ，ｊ）のブロックレンジＢＲと、予め設定された固定長ＦＬの比較を行う。比較した結果、ＢＲがＦＬ以下の場合（Ｙｅｓ）は、処理をステップＳ２０７へ進める。一方、ＢＲがＦＬよりも大きな値の場合（Ｎｏ）、ブロック符号化部１０３は処理をステップＳ２０８へ遷移する。
【００４２】
ステップＳ２０７にて、ブロック符号化部１０３は、最初のブロックＢ（０、０）から着目ブロックＢ（ｉ，ｊ）までの余剰データ容量ＳＤを更新する。余剰データ容量ＳＤとは、ブロックレンジＢＲが固定長ＦＬよりも小さい場合に発生する未利用の容量を表す指標値である。着目ブロックＢ（ｉ，ｊ）の余剰データ容量はＦＬ−ＢＲとして算出できる。図６のブロック６１の場合には余剰データ容量はＦＬ−ＢＲ＝７−２＝５の値を持つ。
【００４３】
ステップＳ２０７で処理される着目ブロックＢ（ｉ，ｊ）は、ブロックレンジＢＲ≦固定長ＦＬであるため、固定長ＦＬ以下で可逆符号化できるブロックであると言える。更に、ＢＲ＜ＦＬの場合にはＦＬ分すべてを利用しないで、可逆符号化が可能なブロックを意味する。そのため、余剰データ容量ＳＤが０以上となるブロックが存在する場合には、固定長ＦＬを超えてしまうような他のブロックの符号化データを割り当てることができる。
【００４４】
符号化対象の着目画像における最初のブロックＢ（０、０）から着目ブロックＢ（ｉ，ｊ）までの余剰データ容量ＳＤの合計を、これ以降、プール容量ＳＤと呼ぶ。このプール容量ＳＤは、先頭のブロックＢ（０，０）から着目ブロックＢ（ｉ，ｊ）までの全ブロックのうち、ブロックレンジＢＲが固定長ＦＬ以下の場合のビット長ＦＬ−ＢＲで算出される値の合計である。
【００４５】
本実施形態においては、１つのブロックにおけるオーバービット数が何ビットあったかがわかればよいので、前述のようなプール容量ＳＤを定義したが、これに限るものではない。例えば、実際のブロックに対する余剰データ容量は、最小画素と最大画素以外の画素１４画素について各（ＦＬ−ＢＲ）ビットの余剰があることになる。それ故、１つのブロックの余剰データ量は、正確には（ＦＬ−ＢＲ）×１４ビットである。それ故、最初のブロックＢ（０、０）から着目ブロックＢ（ｉ，ｊ）までの、かかる余剰データ容量の合計をプール容量ＳＤとしても構わない。
【００４６】
ステップＳ２０８は、ＢＲ＞ＦＬである着目ブロックについて、オーバービット符号化部１０４が、固定長ＦＬを超えたビットデータ（オーバービットと呼ぶ）の符号化を行う。このオーバービット符号化部１０４の符号化処理を図３のフローチャートを用いて説明する。同図は、実施形態のオーバービット符号化部１０３の符号化処理の流れを示すフローチャートである。
【００４７】
まず、ステップＳ３０１は、オーバービット符号化部１０３は、符号化対象ブロックを入力する。この符号化対象ブロックは、ブロックレンジＢＲが固定長ＦＬよりも大きなブロックであることに注意されたい。本実施形態においては、ステップＳ３０１にて入力されるブロックをオーバーブロックＯＢとし、着目画像の符号化を開始してからのオーバーブロックの総数をｂｎと表す。
【００４８】
続いて、オーバービット符号化部１０３は、ステップＳ３０２にて、処理対象ブロックＯＢの、オーバーフローするビット数ＢＰ（以下、オーバービット数ＢＰという）を次式（１）により算出する。
ＢＰ＝ＢＲ−ＦＬ・・・（１）
そして、オーバービット符号化部１０３は、ステップＳ３０３にて、カウンタＣをゼロで初期化する。このカウンタＣの取り得る範囲は、０〜「ＢＰ−１」である。そして、オーバービット符号化部１０３は、カウンタＣを参照して、処理対象のオーバーブロックＯＢに対し、このオーバービット数ＢＰ分、以下に説明するステップＳ３０４乃至３０６の処理を繰り返す。
【００４９】
ステップＳ３０４乃至Ｓ３０６の処理は、簡単に説明すると、オーバーブロックにおける画素ＯＰｍの値Ｑｍ（Ｑ１〜Ｑ１４）の下位のＢＰビット（ＢＰ＝ＢＲ−ＦＬ）を、１以上のビットレイヤに分けて記憶保持する処理である。
【００５０】
値Ｑｍにおける下位のＢＰビットのうち、１番上位のビットのビット列（実施形態では１４ビット）が追加データＥＬ（０）に記憶管理される。また、下位のＢＰビットのうち、上位から２番目のビットのビット列が追加データＥＬ（１）として記憶管理される。以下、同様である。
【００５１】
上記を別な表現で言うと、値Ｑｍの最上位のビット位置からＦＬ＋１ビット目（最上位ビットから８ビット目）のビット列が、追加データＥＬ（０）に記憶管理される。そして、値Ｑｍの最上位のビット位置からＦＬ＋２ビット目（最上位ビットから９ビット目）のビット列が、追加データＥＬ（１）に記憶管理される、ということもできる。
【００５２】
このように、各オーバーブロックのオーバーフローしたビットを、追加データＥＬ（Ｃ）としてビット列のレイヤとして記憶管理することで、それぞれのオーバーブロックの復号した際の画素値の再現精度が向上する。そして、符号化しようとする着目画像の全オーバーブロックが、全追加データＥＬ（Ｃ）として保持できれば、着目画像が完全に復号可能となる。つまり、ロスレス符号化が実現できる。なお、着目画像の符号化に先立って、追加データＥＬ（）は何も記憶されていない状態で初期化されるものとする。
【００５３】
ステップＳ３０４にて、オーバービット符号化部１０４は、追加データＥＬ（Ｃ）を更新する。
【００５４】
図５の場合で、且つ、Ｃ＝０であるとする。この場合、オーバービット符号化部１０４は、Ｑｍの下位２ビット中の上位に位置するビット列（１４ビット）“０１０１１１１００１１１１１”を追加データＥＬ（０）に追加記憶する。
ＥＬ（０）←ＥＬ（０）＋“０１０１１１１００１１１１１”
これにより、先に説明した固定長符号化の処理にて切り捨てた２ビットのうちの１ビットのビット列が、追加データＥＬ（０）に保持されることになる。
【００５５】
このステップＳ３０４の処理を終えると、オーバービット符号化部１０４は、処理をステップＳ３０５に進め、カウンタＣを“１”だけ増加させる。そして、オーバービット符号化部１０４は、ステップＳ３０６にて、カウンタＣと、着目オーバーブロックのオーバービット数ＢＰとの比較をする。比較の結果、ＣがＢＰよりも小さい場合（ＹＥＳ）には、処理をステップＳ３０４へ戻す。
【００５６】
ここで、図５の場合で、且つ、カウンタＣが“１”であるとする。ＢＰ＝２であるので、Ｃ＜ＢＰであると判断され、オーバービット符号化部１０４は処理をステップＳ３０４に戻すことになる。
【００５７】
そして、オーバービット符号化部１０４は、２回目のステップＳ３０４にて、Ｑｍの下位２ビット中の上位から２つ目のビット列（１４ビット）“０１０１００１０００１１１１”を追加データＥＬ（１）に追加記憶する。
ＥＬ（１）←ＥＬ（１）＋“０１０１００１０００１１１１”
そして、ステップＳ３０５でカウンタＣが“１”だけ増加して“２”になり、ステップＳ３０６の不等式が成立しないので、本処理を終える。
【００５８】
上記のように、着目ブロックが図４（ｂ）の場合、ＢＰ＝２となるので、更新される追加データはＥＬ（０）、（１）であり、それ以外のＥＬ（２）乃至（６）は更新されない。そして、上記処理をオーバーブロックが発生するたびに行うことで、追加データＥＬ（０）乃至（６）が更新されていく。
【００５９】
図７は、オーバーブロックＯＢｎと、オーバービット符号化データの関係を示す図である。オーバーブロックＯＢ０からＯＢ７の各オーバーブロックについて、ＢＰが順に１，２，３，４，５，５，４である場合を例示している。図示のマス目内の数字は、各オーバーブロックの値Ｑの最上位ビットから何番目のビットのビット列を格納するかを示している。例えば、追加データＥＬ（０）には、オーバーブロックにおける値Ｑの最上位ビットから８ビット目のビット列が格納されることを示している。また、追加データＥＬ（１）には、オーバーブロックにおける値Ｑの最上位ビットから９ビット目のビット列が格納されることを示している。ただし、この格納方法についてはこれに限るものではない。例えば、各ブロックの固定長符号化データに続いて、オーバービット符号化データを格納してもよい。本実施形態においては、オーバービット符号化データをレイヤ単位で管理する方法を説明したが、各ブロックに対するレイヤ毎に管理しても構わない。その場合には、上記方法に限定されず、画素値の再現精度の高い付加データから順に追加すればよい。
【００６０】
図７における右端のＬＤ（）は、追加データＥＬ（）に格納されたデータ量を示している。例えばＬＤ（０）＝７は、追加データＥＬ（０）には７個のオーバーブロックのビット列（＝１４×７ビット）が格納されていることを表している。
【００６１】
上記の方法により、オーバービット符号化部１０４は、オーバーブロックのオーバービット符号化データを生成する。
【００６２】
図２のフローチャートの説明に戻る。ステップＳ２０７、或いは、ステップＳ２０８の処理が終了すると、符号化部１００は処理をステップＳ２０９へ進める。ステップＳ２０９にて、符号化部１００は、符号化対象の着目ブロックが最終ブロックであるかどうかの判断を行う。着目ブロックが最終ブロックである場合（Ｙｅｓ）、処理をＳ２１０へ進める。また、最終ブロックでない場合（Ｎｏ）には、符号化部１００は処理をステップＳ２０１へ戻し、次のブロックの符号化処理を行う。
【００６３】
ステップＳ２１０以降は、符号量制御部１０６の処理である。この時点で、バッファ１０５には、符号化対象の着目画像に対するブロック符号化部１０３が生成した符号化データ、並びに、オーバービット符号化部１０４が生成した符号化データが格納されている点に注意されたい。
【００６４】
また、説明が前後するが、ブロック符号化部１０３が生成する１ブロックの符号化データは、最小画素とその位置、最大画素とその位置、及び、画素ＯＰｍの符号化データである。このうち、最小画素とその位置、及び、最大画素とのその位置は固定長で、１４＋４＋１４＋４＝３６ビットである。また、画素ＯＰｍは固定長ＦＬ（＝７）を超えることはなく、画素ＯＰｍの個数は１４個である。
【００６５】
故に、１ブロックのブロック目標符号量Ｂmaxは、次式の如く１３４ビットである。
Ｂmax=１４＋４＋１４＋４＋７×１４＝１３４
着目画像に含まれるブロックの総数をＢNとしたとき、実施形態における着目画像の目標符号量Ｔは、
Ｔ＝１３４×ＢN
とする。なお、このＢmaxは、ブロック符号化部１０３が生成する１ブロックの最大符号化サイズであるので、以降、ブロック最大符号量という。
【００６６】
ステップＳ２１０にて、符号量制御部１０６は、カウンタＣを０に初期化する。カウンタＣは、追加データＥＬ（）を特定するための変数である。
【００６７】
続いて、ステップＳ２１１にて、符号量制御部１０６は、追加データＥＬ（Ｃ）のデータ量ＬＤ（Ｃ）がプール容量ＳＤ以下であるか否かの判断を行う。追加データＥＬ（Ｃ）のデータ量ＬＤ（Ｃ）とは、先に図７を用いて説明したように、追加データＥＬ（Ｃ）に、幾つのブロックから抽出したビット列を格納したのかを表す値を示している。再度、図７を用いて説明すると、「ＬＤ（０）＝７」は、「追加データＥＬ（０）には７個のオーバーブロックのビット列が格納されている」ことを表している。同様に「ＬＤ（１）＝６」は、「追加データＥＬ（１）には６個のオーバーブロックのビット列が格納されている」ことを表す。
【００６８】
さて、ＬＤ（Ｃ）≦ＳＤの場合（Ｙｅｓ）は、追加データＥＬ（Ｃ）を、ブロック符号化データに加えたとしても、そのトータルの符号量が目標符号量Ｔ以下になること意味する。それ故、符号量制御部１０６は、追加データＥＬ（Ｃ）を符号化データに含めるとして判定する。そして、符号量制御部１０６は、ステップＳ２１２にて、プール容量ＳＤからＬＤ（Ｃ）を減じる。そして、符号量制御部１０６は、ステップＳ２１３にて、カウンタＣを“１”増加させる。
【００６９】
この後、符号量制御部１０６は、ステップＳ２１５に進み、カウンタＣと、「Ｎ−ＦＬ」とを比較する。ここでＮは、着目画像の１画素が表すビット数であり、実施形態では“１４”である。
【００７０】
従って、ステップＳ２１５にて、Ｃ＜「Ｎ−ＦＬ」であると判断した場合、処理はステップＳ２１１に戻す。こうして、ステップＳ２１１、或いは、ステップＳ２１５のいずれかの判断がＮｏとなるまで、符号量制御部１０６は、ステップＳ２１１−Ｓ２１３の処理を繰り返す。
【００７１】
さて、ステップＳ２１１にて、符号量制御部１０６が、ＬＤ（Ｃ）≦ＳＤを満たさないと判断したとする。これは、追加データＥＬ（Ｃ）を符号化データとして出力すると目標符号量Ｔを超えてしまうことを意味する。それ故、符号量制御部１０６は、処理をステップＳ２１４に進め、追加データＥＬ（Ｃ）以降を破棄する。つまり、符号量制御部１０６は追加データＥＬ（０）乃至ＥＬ（Ｃ−１）が有効なデータとして決定する。生成される符号化データは非可逆符号化データとなるが、破棄されるデータは画素値を再現する際の下位のビットであるので、画質に与える影響は少なくできる。以降、この有効な追加データのレイヤ数をＡｎｕｍと定義する。符号量制御部１０６は、「ブロック符号化部１０３が生成した符号化データ」、「オーバービット符号化部１０４が生成した追加データＥＬ（０）〜（Ａｎｕｍ−１）」を、着目画像（着目色成分の画像）の符号化データとして決定し、符号列形成部１０７に供給する。
【００７２】
この結果、着目画像のトータル符号量が、目標符号量Ｔ以下になることが約束される。符号列形成部１０７は、画像復号に必要な情報（各色成分のＡｎｕｍを含む）を含むヘッダを生成し、そのヘッダに後続して、各色成分毎の符号化データを予め設定されたフォーマットにして出力部１０８に出力する。出力部１０８は、ファイルとして、不図示の記憶媒体に格納する処理を行う。
【００７３】
一方、ステップＳ２１５にて、符号量制御部１０６が、Ｃ＜「Ｎ−ＦＬ」を満たさないと判断したとする。これは、ブロック符号化部１０３が生成した符号化データと、全追加データＥＬ（）が表す符号化データを足し合わせても、目標符号量Ｔ以下となることを意味する。よって、符号量制御部１０６は、オーバービット符号化部１０４が生成した追加データＥＬ（）の全レイヤ数をＡｎｕｍとして決定する。そして、符号量制御部１０６はバッファ１０５に格納された、ブロック符号化部１０３が生成した符号化データ、及び、追加データＥＬ（０）乃至（Ａｎｕｍ−１）を符号列形成部１０７に供給する。ここで、注目したい点は、このＳ２１５でＮｏとなった場合の符号列形成部１０７に渡される符号化データは、着目画像を完全に復元できる符号化データであることを意味する。換言すれば、目標符号量以下の可逆符号化データの生成に成功したことを意味する。
【００７４】
先に説明したように、上記実施形態によれば、１ブロック当たりの最大符号量は１３４ビットである。無圧縮の場合は１ブロックのデータ量は、１６画素×１４ビット＝２２４ビットである。故に、上記実施形態によれば、オリジナルの画像に対して５／８以下の符号量を生成することが可能になることを意味する。
【００７５】
図９は本実施形態の出力符号列の構成を示す図である。出力符号列の先頭には、画像を復号するために必要となる情報、例えば、画像の水平方向画素数、垂直方向画素数、コンポーネント数、各コンポーネントのビット数やブロックの幅、高さなどの付加情報がヘッダとして付けられる。ヘッダに続いて、色成分の符号化データが続く。そして、１つの色成分の符号化データは、ラスタースキャン順の各ブロックの固定長以下の符号化データが付加される。その後、オーバービット符号化データの追加データＥＬ（０）乃至ＥＬ（Ａｎｕｍ−１）が追加されるという構成で符号列が形成される。
【００７６】
図９に示すように、本実施形態においては、１つのブロックの符号化データは、先頭から、最小画素位置、最小画素の画素値、最大画素位置、最大画素の画素値を配置する。続いて、最小最大画素以外の画素ＯＰｍについて固定長以下の符号化データを配置する。このとき、最小画素と最大画素の差分が０の場合には、そのブロック内全ての画素が同じ値を持つことを意味するため、その他の画素値ＯＰｍの符号化データは生成しないし、付加されない。固定長以下の符号化データに後続して、オーバービット符号化データ（追加データＥＬ（））が付加される。本実施形態において、オーバービット符号化データは、追加データＥＬ（０）から追加データＥＬ（Ａｎｕｍ−１）までの符号化データを持つ。この構成によれば、復号装置が、固定長以下の符号化データを復号した時点で、画像内の全ブロックのブロックレンジは特定できる。それ故、復号装置は、オーバーブロックの位置と、それに対応するオーバービット符号化データのデータ位置を特定できる。そのため、追加データについては、付加情報を必要とせず、復号が可能となる。ただし、符号列についてはこれに限るものではない。例えば、ブロック単位に固定長符号化データとオーバービット符号化データを保持してもよい。この場合には、ブロック毎の復号が可能になるが、ブロックを順次復号する時点では何ビット分の追加データがあるか特定できない。そのため、オーバーブロックそれぞれについて、追加したデータ量がわかるように情報を付加する必要がある。
【００７７】
上記実施形態では、１ブロックの符号化データに、そのブロック内の最小画素Ｐｍｉｎと最大画素Ｐｍａｘそれぞれの値と位置を示す情報を符号化せず含めるものとして説明した。しかし、これによって本発明が限定されるものではない。例えば、処理対象ブロックのブロックレンジＢＲがわかっていれば、最小画素Ｐｍｉｎもしくは最大画素Ｐｍａｘのいずれか一方を代表画素値として決定し、その代表画素の画素値と位置とを、符号化データに含めるようにしてもよい。実施形態の場合、ブロックレンジＢＲは０乃至１４の値を取り得るので、４ビットあれば十分である。この場合、１つのブロックの符号化データは、代表画素（最小画素Ｐｍｉｎ、最大画素Ｐｍａｘのいずれか）の画素値、その画素位置、ブロックレンジＢＲ、画素ＯＰの固定長以下の符号化データとなる。
【００７８】
したがって、ブロック最大符号量Ｂmaxは、
Ｂmax=１４＋４＋４＋７×１５＝１２７ビット
となり、上記実施形態と比較して、１ブロックあたり７ビット削減できることになる。なお、上記にて、固定長ＦＬ（＝７）に“１４”ではなく“１５”を乗算したのは、最大画素Ｐｍａｘ（又は最小画素Ｐｍｉｎ）が固定長以下の符号化対象となるからである。
【００７９】
以上のような構成により、本実施形態の画像符号化装置では、画質良く目標符号量以下の符号化データを生成することが可能になる。
【００８０】
なお、上記実施形態では、符号化単位のブロックのサイズを４×４画素とし、１画素が１４ビット、固定長ＦＬ＝７とする例を説明したが、これらの数値で本発明が限定されるものではないし、これらの数値はユーザが適宜設定できるようにしても良い。
【００８１】
［第２の実施形態］
上記の第１の実施形態では、４×４画素、つまり、１６画素からなるブロックを単位として、固定長以下の符号と、固定長を超える符号を生成しつつ、画像全面で固定長符号化（目標符号量Ｔ）以下の符号化データを生成する例について説明した。出力符号列を形成するために内部で一時保持するバッファ容量に制限がある場合などでは、画像全面ではなく、ある限られた領域で固定長符号化を行う構成としても良い。本第２の実施形態においては、画像を複数のブロックからなる小領域に分割し、この小領域を単位として固定長以下の符号化する例について説明する。以下、この固定長以下の符号化処理対象となる複数ブロックで構成される領域を“ＴＲ”と表現する。
【００８２】
本第２の実施形態の処理について、第１の実施形態と動作が異なる点を中心に簡潔に説明する。なお、本第２の実施形態においても、符号化対象の画像は、ベイヤ配列の画素で構成される画像であり、Ｒ，Ｇ０，Ｇ１，Ｂの各成分が１４ビットで構成されるものとする。ただし、符号化対象の画像は１画素が、Ｒ、Ｇ、Ｂ等の複数成分で構成される画像であっても構なわい。入力部１０１は、第１の実施形態と同様に、入力した画像データから、１つの色成分の画素のみで構成されるモノクロ画像データを生成し、符号化部１００に供給するものとする。従って、符号化部１００は、１画素が１４ビットで表されるモノクロ画像を符号化するものとする。
【００８３】
図１１は、本実施形態における符号化処理の流れを示すフローチャートである。以下、図１１に示したフローチャートを参照して、符号化部１００から符号量制御部１０６の処理について説明する。
【００８４】
まず、ステップＳ１１０１にて、符号化部１００は、指定のバッファ容量に収まるように固定長化の処理対象の領域ＴＲに含まれるブロック数ｂｎを設定する。ＴＲに含まれるブロック数ｂｎは少なくとも１以上の値を取るものとする。また、本実施形態において、説明を簡易にするため、画像全面に対する総ブロック数は、ＴＲ内のブロック数ｂｎの整数倍であるものとする。
【００８５】
ステップＳ１１０２にて、符号化部１００は、領域ＴＲの数ＲＭを、次式に従って算出する。
ＲＭ＝画像の総ブロック数／ｂｎ
また、符号化部１００、処理した領域ＴＲの数をカウントするためのカウンタｋを０で初期化する。
【００８６】
ステップＳ１１０３にて、符号化部１００は着目領域ＴＲの符号化を行う。この符号化処理は、図２のステップＳ２０１乃至２０９と同じである。異なるのは、図２の処理対象が領域ＴＲになる点と、図２に示すフローチャートのステップＳ２０９における着目ブロックが領域内の最終ブロックであるか否かを判定する点である。つまり、ここで言う最終ブロックとは、領域ＴＲ内のｂｎ個目のブロックを意味する。領域ＴＲ内の全てのブロックについて符号化処理（ステップＳ１１０３）が終了したと判断された場合（図２、ステップＳ２０９ＹＥＳ）、ステップＳ１１０４へ処理を進める。
【００８７】
ステップＳ１１０４にて、処理対象の領域ＴＲについて、符号量制御部１０６による符号量制御処理が行われる。この符号量制御処理については、図２のステップＳ２１０乃至２１５と実質的に同じである。つまり、符号量制御部１０６は、ブロック数ｂｎ分の固定長符号化結果から算出されたプール容量ＳＤと、オーバービット符号化データ量との比較を行って、処理対象ＴＲについて、目標符号量以下の符号量になるように符号量制御が行われる。本実施形態において、ＴＲに対する目標符号量は、画像全体の目標符号量をＴＲの領域数ｋで割った値を設定する。ＴＲに対する目標符号量はこれに限らず、画像の特徴量などによって、領域ごとに変化させるなどしてもかまわない。ただし、画像全面に対する目標符号量を超えないように設定する必要がある。また、ＴＲを構成するブロック数は、本実施形態において全てのＴＲで同じブロック数を割り当てるものとしたが、これに限らず、領域ごとにブロック数を変更しても構わない。
【００８８】
ステップＳ１１０５にて、符号化部１００は、カウンタｋと、領域数ＲＭとの比較を行う。ｋ＜ＲＭの場合（ＹＥＳ）は、領域ＴＲの符号化処理を繰り返すため、ステップＳ１１０６にて、カウンタｋをインクリメントし、次の領域ＴＲを処理対象とする。一方、了以域数ＲＭ分の符号化処理を行った場合（Ｎｏ）は、処理を終了する。
【００８９】
全ての領域ＴＲについて、符号化処理と符号量制御の処理を終了すると、符号列形成部１０７にて符号列が形成される。図１０に本第２の実施形態における出力符号列の構成を示す図である。第１の実施形態と同様に、符号列の先頭には復号に必要な画像情報などを含むヘッダと、それに後続して各色成分の符号化データが配置される。１つの色成分の符号化データは、領域ＴＲ毎に固定長符号化データとオーバービット符号化データを持つ。ただし、符号列についてはこれに限るものではない。本実施形態において、画像内の所定の複数ブロックを固定長化単位として符号化を行っているため、処理対象の領域ＴＲを符号化するごとに符号列を形成し、出力しても構わない。この場合には、ヘッダ情報は、符号化データとは別に出力してもよいし、各ＴＲの符号化データにヘッダとして付加しても構わない。各ＴＲの符号化データを個別で出力することにより、画像全面に対して固定長符号化した場合と比較して、低遅延での符号化データの出力が可能となる。
【００９０】
なお、本実施形態において、バッファ容量に応じて、固定長化する単位を所定の複数ブロックとする方法について説明を行ったが、これに限るものではない。予め定められたバッファ容量を全て利用できるように、固定長以下の符号化データとオーバービット符号化データの管理を行って符号量制御してもよい。ただし、その場合には、符号量制御単位に付加情報が必要になり、復号時の制御も複雑になる可能性がある。
【００９１】
以上、説明した処理制御を行うことで、所定単位に固定長化を行うことで、画像全体で固定長符号化する場合と比較して、低遅延で固定長符号化データの出力が可能となる。
【００９２】
［第３の実施形態］
第１の実施形態や第２の実施形態においては、符号列形成の際に、符号量制御単位の領域内全ての固定長符号化データを符号列として並べ、その固定長符号化データの末尾にオーバービット符号化データを追加する形で符号列を形成する例であった。この場合、固定長符号化データとオーバービット符号化データが、符号量制御単位分揃った時点で、固定長のデータのまとまりが完成し、符号化データの伝送が開始できことになる。言い換えれば、固定長符号化データとオーバービット符号化データが揃わない限りに、符号化データの伝送が行えない。
【００９３】
本実施形態では、より短い処理時間ごとに符号化データの伝送が可能となる符号列形成の方法について説明する。
【００９４】
符号化処理そのものについては、第１、第２の実施形態と同様の処理であるため、その説明は省略する。そして、本実施形態におけるメインとなる処理は、符号列形成部１０７にある。この符号列形成部１０７により生成される符号列の例を図１２に示し、以下にその符号列形成の方法を説明する。
【００９５】
まず、本実施形態において、一定のタイミングで符号化データを伝送するための固定長の符号化データの単位を固定長パケットと呼ぶものとする。固定長パケットのデータ長は、固定長符号化データの符号長の上限と同じか、それよりも大きな値を設定すればよい。
【００９６】
本第３の実施形態において、符号列形成部１０７は、最初に処理される符号量制御単位の領域ＴＲ０については、生成された各ブロックの固定長符号化データについて、固定長パケットを生成し、出力部１０８を介して伝送を行わせる。図１２は、出力符号列の例である。ここで、先頭ブロックＢ（０，０）はオーバービットが発生したブロック、続く、Ｂ（１，０）はオーバービットなしに固定長以下で符号化されたブロックとする。図１２に示すように、符号列形成部１０７は、画像の先頭ブロックＢ（０，０）の符号化データはそのまま固定長パケットを生成し、出力部１０８を介して伝送する。続いて、符号列形成部１０７は、ブロックＢ（１，０）の符号化データについては、固定長パケットのデータ長よりも短いために、固定長パケットのデータ長となるようにダミーデータを付加し。出力部１０８を介して伝送する。なお、領域ＴＲ０の固定長符号化データと並行して生成された、領域ＴＲ０のオーバービット符号化データは、符号化パケットの生成を行っている最中にバッファ１０５に格納されていくが、この段階では出力されない。
【００９７】
続いて、領域ＴＲ１の固定長符号化が行われる。ＴＲ１内の符号化対象ブロックＢ（ｉ，ｊ）について固定長符号化データを生成後、固定長パケットを生成するために、対象ブロックの固定長符号化データに、１つ前の領域ＴＲ０のオーバービット符号化データの中から、追加可能なデータ長分の符号化データを付加する。復号時には、固定長パケットのデータ長がわかっていれば、Ｂ（ｉ，ｊ）の固定長符号化データを復号した時点で、復号対象の固定長パケットに追加されているデータ長が特定できる。符号化対象ブロックに対する固定長パケットが生成されると伝送が開始される。なお、符号化対象ブロックＢ（ｉ，ｊ）の固定長符号化データと領域ＴＲ０の追加データを合わせたデータ長が、固定長パケットのデータ長に満たない場合には、ダミーデータを付加するなどして、固定長パケットとなるように調整すればよい。並行して、領域ＴＲ１のオーバービット符号化データを生成し、格納しておく。
【００９８】
画像内の最後に処理される符号量制御領域ＴＲ（ＲＭ−１）のオーバービット符号化データについては、全てのデータを追加できるように、固定長パケットを生成して伝送してもよい。また、予めさだめられた固定長パケット数分のオーバービット符号化データを追加して送信してもよいものとする。
【００９９】
以上、説明した処理制御を行うことで、ブロック単位に固定長符号化を行うよりも広い範囲での符号量制御を実現しつつ、ブロックの符号化毎に固定長パケットを生成できることで、一定のタイミングで符号化データの伝送が可能となる。
【０１００】
［第４の実施形態］
これまでの実施形態では、画像について１つの固定長ＦＬを設定して符号化を行う方法について説明を行った。固定長ＦＬは画像の領域ごとの特徴を表す情報（以下、認識情報と呼ぶ）を取得して、それに基づいてブロックごとに独立して固定長ＦＬ値を設定してもよい。本第４の実施形態においては、符号化対象画像の複雑度を認識情報として利用して、ブロック毎に固定長ＦＬを設定する方法について説明する。なお、符号化対象画像データがモノクロ画像であり、１画素１４ビットで表されるなどの条件はこれまでと同じとする。
【０１０１】
図１３は、本第４の実施形態に係る画像処理装置の機能構成を示すブロック図である。図１３に示すように、本第４の実施形態の装置は、図１の機能構成に、認識情報取得部１３０１と固定長設定部１３０２を追加した構成となる。それ故、以下では、主に認識情報取得部１３０１と固定長設定部１３０２の処理の流れについて、以下に説明を行う。
【０１０２】
本実施形態では、認識情報取得部１３０１による符号化対象画像からの認識情報の取得処理と、符号化処理の２パスで処理する。
【０１０３】
図１４は、２パス目の符号化処理、すなわち、１パス目で取得した認識情報に基づく固定長ＦＬを設定する場合の処理フローを表す。
【０１０４】
まず、ステップＳ１４０１にて、入力部１０１が符号化対象の画像データを入力する。図１４に示す処理フローでは、画像入力とは別のタイミングで認識情報を取得するような処理フローとしているが、これに限らず、画像入力と同時に認識情報を入力しても構わない。
【０１０５】
ステップＳ１４０２にて、ブロック分割部１０２が、入力された符号化対象の画像からブロックに分割する。
【０１０６】
続いて、ステップＳ１４０３にて、認識情報取得部１３０１が、認識情報を取得する（詳細後述）。
【０１０７】
ステップＳ１４０４にて、固定長設定部１３０２は、取得した認識情報から、符号化対象の着目ブロックの固定長ＦＬを決定する。認識情報に応じた固定長ＦＬの設定方法の詳細については、後述する。
【０１０８】
ステップＳ１４０５では、符号化部１００は、ステップＳ１４０４にて設定した固定長ＦＬを用いて、着目ブロックの符号化を行う。全ブロックについて符号化処理を終了すると、ステップＳ１４０６にて符号量制御部１０６による符号量制御処理を行い、符号列形成部１０７が符号列を形成する。形成された符号化データは、ステップＳ１４０７にて、出力部１０８により出力され、符号化処理を終了する。
【０１０９】
ここで、ステップＳ１４０４の認識情報に応じた固定長の設定方法について、以下に説明を行う。本第４の実施形態において、画像の複雑度を認識情報として入力する。ここで、画像の複雑度とは、実施形態で説明した符号化処理により生成される符号量が多く発生するか否かを予測できる情報である。これまでの説明からわかるように、ブロック符号化部１０３において、ブロック内の最小画素と最大画素を探索し、最小画素と最大画素以外の画素について、固定長ＦＬ以下で符号化する。この場合、最小画素と最大画素の差分ＤＩＦＦの値が大きいほど、固定長ＦＬを超えるデータが増えることになる。一方、最小画素と最大画素の差分値ＤＩＦＦが小さいほど、固定長ＦＬよりも短い符号長で符号化できる。この特性から、画像の領域毎の画素値の差分の大小が複雑度を表す指標値として利用できる。たとえば、複雑度の取得方法として、認識処理を簡易に実現するために、符号化対象画像の縮小画像に対して、処理を行うものとする。縮小画像の生成方法は、一定間隔置きに画素値を間引いてサブサンプリング画像を生成しても良いし、複数画素の平均値を取るなどして生成しても構わない。本実施形態においては、１ブロックが４×４画素であるので、４×４画素の１画素を取ってきて、縮小画像を生成した場合の複雑度の取得する方法について説明する。
【０１１０】
図１５に示すように、４×４画素のうちの左上画素を縮小画像の画素（以下、縮小画素という）とする場合には、ブロックが４×４の１６画素で構成されている場合に、正しいブロックレンジを特定することはできない。そのため、隣接する縮小画素との差分を算出して、その差分値を表現するために必要なビット数を、ブロックレンジの予測値とする。ブロックレンジの予測値を、ブロック単位の複雑度Ｃｐとして取得するものとする。例えば、着目する縮小画素と、隣接縮小画素との差分値を算出した結果、０であった場合には複雑度Ｃｐを０とする。画素が１４ビットの場合、画素値は０〜１６３８３の値を取り得るので、これを表現可能なビット数は、０〜１４ビットであるため、複雑度Ｃｐは０〜１４で良いであろう。複雑度Ｃｐの算出方法や、取り得る値については、これに限るものではなく、ブロックレンジの予測をして、ブロック毎の固定長を設定できるようなデータが取得できれば良い。
【０１１１】
取得した複雑度Ｃｐと、画像全面に対する目標符号量とから、各ブロックに対する固定長ＦＬを設定することができる。
【０１１２】
画像全面に対する目標符号量と基本的な固定長ＦＬは予め定められているものとする。本実施形態においては、基本の固定長をＦＬ、ブロック毎に設定する固定長をＶＦＬと表現し、予め定められた基本の固定長ＦＬは７とする。この時、図１６（ａ）、（ｂ）、（ｃ）に示す例のように、画像内の全ブロックに対する複雑度Ｃｐの値の変動が小さく、ほぼ一定値である場合には、ブロック毎の固定長ＶＦＬの設定処理は省略し、基本の固定長ＦＬをそのまま利用して符号化処理を行う。
【０１１３】
一方、各ブロックに対する複雑度Ｃｐの値の変動が大きい場合に、ブロック毎に固定長ＶＦＬを設定する。本実施形態において、ＶＦＬは、複雑度Ｃｐに対して、一定のビット数を引いた値を設定する。ただし、基本の固定長ＦＬを全ブロックに適用した場合のデータ長が上限となるように各ブロックの固定長ＶＦＬを設定する必要がある。つまり、画像全面としての目標符号量以下になるように、各ブロックに対する固定長ＶＦＬを設定する。
【０１１４】
図１７（ａ），（ｂ）に、ブロック毎の固定長ＶＦＬの設定値の推移のイメージ図を示す。図１７（ｂ）の斜線部分の面積が、図１７（ａ）の斜線部分の面積以下となるように、ブロック毎の固定長ＶＦＬを設定する。以上の方法で設定したブロック毎の固定長ＶＦＬで、各ブロックの符号化処理を行う。
【０１１５】
符号化時に、実際のブロックレンジＢＲが予測値よりも大きな値である場合には、予測値との差分の分だけ、対象ブロックのオーバービット符号化データの優先度を高くするなど、補正処理を行うことで、さらに精度良く画質劣化の度合いを制御することが可能となる。また、ブロックレンジＢＲの小さなブロックに対しても、オーバーブロック符号化データの優先度を高く設定しておくことで、符号量制御時にロスレスにできる可能性が高くなる。
【０１１６】
なお、第４の実施形態を実施する際には、ブロックの符号化データにブロックヘッダを設け、その中でブロック符号化部１０３が利用した固定長ＦＬを記述されることになる。
【０１１７】
以上説明したように、本第４の実施形態によれば、ブロック毎の固定長ＦＬを可変に設定することで、符号量制御単位の範囲内での画質劣化の度合いを一定に保つことが可能である。更に、固定長以下の符号化データをブロック毎に順次、装置外部へ出力する場合には、符号化処理時に保持しておくデータはオーバービット符号化データのみとなるため、固定長ＦＬが一定の場合と比較して、バッファ容量を小さくできる。
【０１１８】
［第５の実施形態］
上記第４の実施形態では、認識情報として、複雑度を取得し、ブロック毎の固定長を変動させて符号化する方法について説明を行った。本第５の実施形態においては、認識情報として関心領域（以下、ＲＯＩとも呼ぶ）を取得した場合の固定長の設定方法について説明を行う。
【０１１９】
処理の流れは、第４の実施形態と同様で、図１４に示す通りであるため、詳細な説明は省略する。本第５の実施形態では、取得する認識情報の内容と、認識情報に応じた固定長の設定（図１４のステップＳ１４０４）方法に特徴があるため、かかる点について以下に説明する。
【０１２０】
本実施形態においては、認識情報として、装置外部で特定されたＲＯＩの位置情報やサイズなどを取得するものとする。ＲＯＩの位置情報とサイズを取得することで、画像内の各ブロックについて、ＲＯＩを含むか否かを特定することができる。図１８に、ＲＯＩと、ＲＯＩを含むブロックとの関係の例を示す。図１８の太枠で囲われた領域がＲＯＩであり、斜線で示した領域がＲＯＩを含むブロックを示している。
【０１２１】
ＲＯＩを含むブロックを符号化する際には、固定長設定部１３０２は、予め定められたＲＯＩ用の固定長ＨＦＬをブロック符号化部１０３に設定する。一方、ＲＯＩを含まないブロックを符号化する際、固定長設定部１３０２は、予め定められたＲＯＩ以外用の固定長ＬＦＬをブロック符号化部１０３に設定する。ＲＯＩ用の固定長ＨＦＬと、ＲＯＩ以外の固定長ＬＦＬの値は、基本の固定長ＦＬと、画像全面に対する目標符号量から決定する。第４の実施形態と同様に、基本の固定長ＦＬを全ブロックに適用した場合のデータ長が上限となるように、ＨＦＬとＬＦＬの値を決める必要がある。ＲＯＩ用の固定長ＨＦＬについては、画像の属性や、ＲＯＩの個数などによって、予め一定以上の値となるように決定しておいて、目標符号量との関係から、ＲＯＩ以外用の固定長ＬＦＬを算出するような方法でも構わない。ブロック毎の固定長の変動について図１９に一例を示す。
【０１２２】
以上の方法により、ＲＯＩを含むブロックに対して、一定値以上の固定長を設定することで、ＲＯＩを高画質に保ちつつ、符号量制御を行うことができる。
【０１２３】
なお、認識情報として、複雑度とＲＯＩを取得した場合について、個別に説明を行ったが、この２つの情報を組み合わせて、固定長を設定しても構わない。例えば、ブロック毎の固定長ＶＦＬをベースとして設定するが、ＲＯＩを含むブロックについては、予め定めた一定値以上のデータ長を持つように固定長ＨＦＬを設定しても良い。この場合についても、ブロック毎に変動する固定長は、基本の固定長ＦＬを全ブロックに適用した場合のデータ長が上限となるように設定する必要がある。
【０１２４】
また、ＲＯＩを含むブロックを特定する情報は、符号化データのヘッダに格納しておけば良い。
【０１２５】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１２６】
１０１…入力部、１０２…ブロック分割部、１０３…ブロック符号化部、１０４…オーバービット符号化部、１０５…バッファ、１０６…符号量制御部、１０７…符号列形成部、１０８…出力部
【図１】
2019047154.tif 000003
【図２】
2019047154.tif 000004
【図３】
2019047154.tif 000005
【図４】
2019047154.tif 000006
【図５】
2019047154.tif 000007
【図６】
2019047154.tif 000008
【図７】
2019047154.tif 000009
【図８】
2019047154.tif 000010
【図９】
2019047154.tif 000011
【図１０】
2019047154.tif 000012
【図１１】
2019047154.tif 000013
【図１２】
2019047154.tif 000014
【図１３】
2019047154.tif 000015
【図１４】
2019047154.tif 000016
【図１５】
2019047154.tif 000017
【図１６】
2019047154.tif 000018
【図１７】
2019047154.tif 000019
【図１８】
2019047154.tif 000020
【図１９】
2019047154.tif 000021