(57)【要約】【課題】  所定の単位ごとの符号化データが固定長以下に符号化する。【解決手段】  画像を所定の単位で固定長符号化する画像符号化装置であって、前記画像を、複数の画素からなるブロックに分割する分割手段と、前記画像の特徴量を取得する取得手段と、前記特徴量に基づいて、少なくとも２つ以上のブロックを含む前記所定の単位とするブロックの組み合わせを選択する選択手段と、前記選択手段により選択された所定の単位ごとに固定長符号化する符号化手段と、を有することを特徴とする。【選択図】  図１
2020092327.tif 000002
【特許請求の範囲】
【請求項１】
画像を所定の単位で固定長符号化する画像符号化装置であって、
前記画像を、複数の画素からなるブロックに分割する分割手段と、
前記画像の特徴量を取得する取得手段と、
前記特徴量に基づいて、少なくとも２つ以上のブロックを含む前記所定の単位とするブロックの組み合わせを選択する選択手段と、
前記選択手段により選択された所定の単位ごとに固定長符号化する符号化手段と、
を有することを特徴とする画像符号化装置。
【請求項２】
前記符号化手段は、前記所定の単位ごとに、前記所定の単位に含まれる複数のブロックのデータを固定長以下になるように符号化する固定長符号化手段と、
前記固定長符号化手段により符号化されなかったオーバービットデータを取得し、前記オーバービットデータを符号化するオーバービット符号化手段と、
前記固定長符号化手段から出力される固定長符号化データと、前記オーバービット符号化手段から出力されるオーバービット符号化データとに基づいて、符号量を制御する符号量制御手段を有することを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記固定長符号化手段は、前記所定の単位ごとに、余剰となる余剰データ容量を算出し、
前記符号量制御手段は、前記余剰データ容量に基づいて、前記固定長符号化データに前記オーバービット符号化との少なくとも一部を追加することを特徴とする請求項２に記載の画像符号化装置。
【請求項４】
前記選択手段は、符号量が多くなることが予測されるブロックと、符号量が小さくなることが予測されるブロックとを、前記所定の単位として組み合わせることを特徴とする請求項１乃至３の何れか一項に記載の画像符号化装置。
【請求項５】
前記分割手段は、前記符号化手段が符号化できる前記所定の単位に、複数のブロックが含まれるように、前記所定の単位より小さいサイズのブロックに分割することを特徴とする請求項１乃至４の何れか一項に記載の画像符号化装置。
【請求項６】
前記取得手段は、ブロック毎の複雑度を前記特徴量として取得し、
前記選択手段は、複雑度の高いブロックと複雑度の低いブロックとそれぞれ少なくとも１つを含むように、２つ以上のブロックを選択することを特徴とする請求項１乃至５の何れか一項に記載の画像符号化装置。
【請求項７】
前記取得手段は、画像における関心領域を、前記特徴量として取得し、
前記選択手段は、前記心領域を含むブロックと関心領域を含まないブロックとそれぞれ少なくとも１つを含むように、２つ以上のブロックを選択することを特徴とする請求項１乃至５の何れか一項に記載の画像符号化装置。
【請求項８】
前記取得手段は、ブロック毎の劣化視認度を取得し、
前記選択手段において、劣化視認度の高いブロックと、劣化視認度の低いブロックとそれぞれ少なくとも１つを含むように、２つ以上のブロックを選択することを特徴とする請求項１乃至５の何れか一項に記載の画像符号化装置。
【請求項９】
コンピュータに読み込ませ実行させることで、請求項１乃至８の何れか一項に記載の画像符号化装置として機能させるプログラム。
【請求項１０】
画像を所定の単位で固定長符号化する画像符号化方法であって、
前記画像を、複数の画素からなるブロックに分割し、
前記画像の特徴量を取得し、
前記特徴量に基づいて、少なくとも２つ以上のブロックを含む前記所定の単位とするブロックの組み合わせを選択し、
前記選択された所定の単位ごとに固定長符号化することを特徴とする画像符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを固定長符号化する技術に関する。
【背景技術】
【０００２】
従来、画像データを所定の符号量以下になるよう符号化する固定長符号化技術が知られている。特許文献１には、画像のおけるブロック毎に特徴を抽出し、ブロック毎に特徴に応じた量子化を行うことで、各ブロックに対して固定長符号化を実現する方を記載している。特許文献１に記載の方法によれば、１つのブロックに対する符号は、一定の長さとなる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−６３２８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような従来技術においては、画素値に変化のないブロックに余分に符号を割り当てたり、複雑なテクスチャのブロックに対しては他のブロックに比べて過剰画質を劣化させてしまったりする場合がある。
【０００５】
そこで本発明では、所定の単位ごとの符号化データが固定長以下に符号化しつつ、所定の単位ごとに固定長をオーバーするデータ量を抑制することを目的とする。
【課題を解決するための手段】
【０００６】
かかる課題を解決するため本発明は、画像を所定の単位で固定長符号化する画像符号化装置であって、前記画像を、複数の画素からなるブロックに分割する分割手段と、前記画像の特徴量を取得する取得手段と、前記特徴量に基づいて、少なくとも２つ以上のブロックを含む前記所定の単位とするブロックの組み合わせを選択する選択手段と、前記選択手段により選択された所定の単位ごとに固定長符号化する符号化手段と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明により、所定の単位ごとの符号化データが固定長以下に符号化しつつ、所定の単位ごとに固定長をオーバーするデータ量を抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る画像符号化装置の構成を示すブロック図。
【図２】第１の実施形態に係る符号化対象画像の例を示す図。
【図３】第１の実施形態に係る固定長符号化部１０５の処理を示すフローチャート。
【図４】符号化対象ブロックの例を示す図。
【図５】符号化対象ブロックの符号化データの例を示す図。
【図６】符号化対象ブロックと符号化データのデータ長の関係を示す図。
【図７】符号化対象画像のブロック毎の符号量の例を示す図。
【図８】符号化対象画像データと、ブロックの関係を示す図。
【図９】第１の実施形態に係る符号化データの構造を示す図。
【図１０】第１の実施形態に係る固定長符号化部１０５の構成を示すブロック図。
【図１１】ＲＯＩとＲＯＩを含むブロックの例を示す図。
【図１２】第２の実施形態に係るブロック毎の符号量の例を示す図。
【図１３】ブロック毎の符号量保証基準を変更する例を示す図。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必ずしも必須のものとは限らない。
【００１０】
＜第１の実施形態＞
第１の実施形態では、画像特徴量を利用して、固定長符号化するブロックの組み合わせを決定することで、高画質に固定長符号化する方法について説明する。本実施形態の画像符号化装置は、デジタルカメラ等の撮像装置に内蔵されるものとして説明する。
【００１１】
図１は、第１の実施形態に適用可能な画像符号化装置の構成を示すブロック図である。本実施形態の画像符号化装置は、入力部１０１、ブロック分割部１０２、特徴量取得部１０３、ブロック選択部１０４、固定長符号化部１０５、符号列形成部１０６、出力部１０７を有する。各構成は、１つ以上の回路によって実現されている。
【００１２】
入力部１０１は、デジタルカメラが有する撮像素子で撮影された画像の画像データを入力する。本実施形態では、Ｒ／Ｇ０／Ｇ１／Ｂの単位画素群とするベイヤ配列のＲＡＷ画像データを入力するものとする。ＲＡＷ画像データにおける各画素は１４ビットのデータが保存されている。なお以下の説明では、ＲＡＷ画像データに対して、色成分毎のプレーンに分離することにより、各色成分のモノクロ画像として符号化する場合を例に説明する。なお本実施形態は、ＲＡＷ画像データだけではなく、ＲＧＢ画像データなど、他の色表現を用いた画像データに対しても適用できる。例えば、ＲＧＢ各８ビットで表現される画像データに対しては、色成分毎にモノクロ画像として符号化すれば良い。また、１画素がＹＣｂＣｒ各８ビットで表現される輝度色差成分に対しては、成分毎にモノクロ画像として符号化すれば良い。
【００１３】
ブロック分割部１０２は、入力部１０１から入力された画像データを、水平方向にＢｗ画素（Ｂｗ≧２）、垂直方向にＢｈ画素（Ｂｈ≧２）の矩形ブロックに分割する。なお符号化対象の画像は、水平方向にＷ画素、垂直方向にＨ画素とする。本実施形態では、符号化対象の画像における画素数Ｗは、矩形ブロックの幅Ｂｗの整数倍であるものとする。同様に、符号化対象の画像における画素数Ｈは、矩形ブロックの幅Ｂｈの整数倍であるとする。従ってここでは、符号化対象の画像を矩形ブロックに分割した場合に、不完全なブロックが発生しないものとする。この水平方向にＢｗ画素、垂直方向にＢｈ画素により構成される矩形ブロックをこれ以降、単にブロックと呼び、ブロックにおける全画素のデータをブロックデータと呼ぶ。また処理対象とするブロックを着目ブロックと呼ぶ。本実施形態では、ブロックサイズを４画素×４画素とする。なお、ブロックのサイズは、これに限らない。ブロックのサイズは、後述の符号量制御単位に応じて設定される。具体的には後述の符号量制御単位の半分以下のサイズであり、処理の負担にならないサイズであれば良い。図８に符号化対象の画像とブロックの関係を示す。図８に示すように、符号化対象の画像において、水平方向にｉ番目、垂直方向にｊ番目のブロックをＢ（ｉ，ｊ）と記す。また、ブロックＢ（ｉ，ｊ）における画素の位置をＢｉｊ（ｍ，ｎ）と記す。例えば、Ｂ（２，３）ブロックにおいて最も左上にある先頭画素はＢ２３（０，０）と記す。
【００１４】
特徴量取得部１０３は、符号化対象の画像について、ブロック毎の複雑度を取得する。複雑度とは、符号化したときに符号量が多くなるか少なくなるかを予測できる指標値であるものとする。本実施形態において特徴量取得部１０３は、ブロック内の最小画素値と最大画素値との差分に基づいて複雑度を算出する。最小画素値と最大画素値との差分が所定の閾値未満であれば０を、所定の閾値以上であれば１を出力する。つまり、ブロック毎の複雑度は、０か１かの２値によって表される。複雑度０は、複雑度が低いブロックであることを示し、複雑度１は、複雑度が高いブロックであることを示す。図２は、符号化対象の画像の一例を示す図である。図２に示す画像は４ブロックから構成される。また、ブロック１およびブロック２は、複雑度が０のブロックであり、ブロック３およびブロック４は、複雑度が１であるものとする。特徴量取得部１０３は、算出したブロック毎の複雑度をブロック選択部１０４に出力する。
【００１５】
ブロック選択部１０４には、ブロック分割部１０２に格納された１ブロック分のブロックデータと、特徴量算出部１０３が算出した特徴量を示す情報が入力される。ブロック選択部１０４は、順次入力されるブロックの特徴量に基づいて、符号化を実行する単位である符号量制御単位として複数のブロックを選択する。本実施形態においてブロック選択部１０４は、複雑度が低い１ブロックと複雑度が高い１ブロックの一組が符号量制御単位となるようにブロックを組み合わせる。
【００１６】
具体的には、ブロック選択部１０４には、ラスタ順にブロックの特徴量を示す情報とブロックデータが入力されるとすると、図２に示す画像の場合ブロック１の特徴量とブロックデータが入力される。次にブロック２の特徴量を示す情報とブロックデータが入力されるがブロック２は複雑度が０なので、ブロック選択部１０４のメモリ（不図示）に保持しておく。次にブロック３の特徴量を示す情報とブロックデータが入力される。この時ブロック３は複雑度１なので、ブロック１とブロック３を符号量制御単位として選択する。ブロック選択部１０４は、選択した組み合わせであるブロック１のブロックデータとブロック３のブロックデータを固定長符号化部１０５へ出力する。次にブロック選択部１０４は、ブロック４の特徴量を示す情報とブロックデータを取得する。ブロック４の複雑度は１なので、保持していたブロック２とブロック４とを１組として選択し、ブロック２のブロックデータとブロック４のブロックデータを固定長符号化部１０５に出力する。ただしブロック選択部１０４は、ブロック毎にデータを読み出すのではなく、複数のブロックそれぞれの特徴量およびデータを読み出すようにしてもよい。
【００１７】
固定長符号化部１０５は、符号量制御単位ごとに固定長符号化を実行する。固定長以下に符号化できる方式であれば、どのような方式で符号化しても構わない。
【００１８】
本実施形態における固定長符号化部１０５が実行する符号化の詳細な処理について説明する。固定長符号化部１０５の説明をするにあたり、まずは固定長ＦＬについて説明する。固定長ＦＬは、ブロック単位の最大符号長を制御するパラメータである。本実施形態において、ブロック内の画素には非圧縮でそのまま保持される画素と、固定長以下の可変長符号で表される画素が存在する。ブロック内の可変長符号のビット数上限を固定長ＦＬと定める。ただし、符号化対象の画像全体に対する目標符号量を超えないように、各ブロックに対する固定長ＦＬを設定する必要がある。固定値ＦＬは、不図示の装置外部からユーザが入力しても構わないし、装置に予め値を設定しておいてもよい。処理の詳細は後述する。
【００１９】
符号列形成部１０６は、固定長符号化部１０５から出力される固定長以下の符号化データに必要な付加情報を加えて、画像符号化装置の出力となる符号列を形成する。図９は本実施形態の出力符号列の構成を示す図である。出力符号列の先頭には、画像を復号するために必要となる情報、例えば、画像の水平方向画素数、垂直方向画素数、コンポーネント数、各コンポーネントのビット数やブロックの幅、高さなどの付加情報がヘッダとして付けられる。本実施形態においては、ヘッダ情報として、符号量制御領域単位のブロック数やブロックの符号化順序を付加することで、復号時にブロック位置の特定が可能となる。ヘッダに続いて、各符号量制御単位の固定長符号化データが付加される。出力部１０７は、符号列形成部１０６から供給された符号化データを装置外部へ出力する。
【００２０】
図１０は固定長符号化部１０５の詳細な構成を示すブロック図である。図１０に示すように、固定長符号化部１０５は、固定長保証符号化部１００１、オーバービット符号化部１００２、バッファ１００３、符号量制御部１００４を有する。固定長保証符号化部１００１へ信号線１０００を介して、ブロック選択部１０４により符号量制御単位ごとにブロックデータが順次入力される。
【００２１】
図３は、固定長符号化部１０５の処理内容を示すフローチャートである。以下、図１０と図３に従って固定長符号化部１０５の処理手順を説明する。なお以下のフローチャートにおいて、各工程（ステップ）を「Ｓ」と表記することとする。
【００２２】
まず、Ｓ３０１において固定長保証符号化部１００１は、入力された符号化対象ブロック内の最小画素Ｐｍｉｎと最大画素Ｐｍａｘを探索する。最小画素Ｐｍｉｎとは、ブロックにおいて最小の画素値を有する画素を示し、最大画素Ｐｍａｘはブロックにおいて最大の画素値を有する画素を示す。図４（ａ）に示すように、ブロック内の画素を所定のスキャン順序（例えばラスタースキャン）で０番からｎ番まで順位付けし、最も左上に位置する先頭画素から順に、各画素値をＰ０，Ｐ１，・・・Ｐｎと表現する。図４（ｂ）の例において、最小画素Ｐｍｉｎの画素位置（順位）は０番であり、最小画素Ｐｍｉｎの値はＰ０となる。同図（ｂ）において、最大画素Ｐｍａｘの画素位置は７番であり、最大画素Ｐｍａｘの値はＰ７となる。ちなみに、最小画素および最大画素以外の各画素は、図４（ｂ）に示すように、ＯＰｍ（ｍ＝１〜ｎ−２）と表現する。
【００２３】
次に、Ｓ３０２において固定長保証符号化部１００１は、最小画素Ｐｍｉｎに関する情報と最大画素Ｐｍａｘに関する情報を符号化する。本実施形態においては、最小画素Ｐｍｉｎの画素位置と画素値、最大画素Ｐｍａｘの画素位置と画素値をそれぞれ固定長の符号データとして保持するものとする。このとき画素位置については、ブロックサイズが４×４であるので、位置情報は４ｂｉｔで表現可能である。ここでは自然二進数表現を用いるが、一意に復号できるものであれば、交番二進など、別の二値表現を用いても構わない。図４の例では、Ｐｍｉｎの位置情報は０なので００００、Ｐｍａｘの位置情報は７なので０１１１と表現される。画素値については、非圧縮のままとする。すなわち、入力画像の画素値のビット精度が１４ｂｉｔであるため、１４ｂｉｔで表現される。但し、最大画素Ｐｍｉｎの画素値および最大画素Ｐｍａｘの画素値は必ずしも非圧縮としなくとも良い。例えば、多少の劣化を許容できる方式であれば入力画素のビット数よりも少ないビットで最小画素値、最大画素値を表現しても構わない。最小画素と最大画素の符号化データについては、図１０に示したバッファ１００３へ格納される。
【００２４】
Ｓ３０３において固定長保証符号化部１００１は、符号化対象ブロックのレンジＢＲを算出する。本実施形態において、ブロックレンジＢＲとは、ブロック内の最小画素の画素値と最大画素の画素値との差分のビットレンジのことを示すものと定義する。つまり固定長保証符号化部１００１は、最大画素Ｐｍａｘの画素値から最小画素Ｐｍｉｎの画素値を引くことで、差分値ＤＩＦＦを算出し、この差分値ＤＩＦＦを表現するために必要なビットレンジを、ブロックレンジＢＲとして算出する。例えば、図４に示すように、Ｐｍｉｎ＝１２，Ｐｍａｘ＝２５７の場合、差分値ＤＩＦＦ＝２４５となる。即ち、ブロック内のすべての画素値は最小値と最大値の間の２４６階調のうちいずれかの階調であり、最小値（または最大値）からの差分で表すことができる。そこで最小値０から最大値ＤＩＦＦ＝２４５を表現するためには、８ｂｉｔ必要になるため、ブロックレンジＢＲ＝８となる。
【００２５】
図６を用いてブロックレンジＢＲと固定長ＦＬの関係を以下に説明する。図６（ａ）（ｂ）（ｃ）には、特徴の異なる３つのブロックの例を示している。図６（ａ）は、ブロック内の画素値の変化が小さく、ブロックレンジＢＲの値が小さい場合の例を示す。図６（ｂ）は、画素値の変化がなだらかな例、図６（ｃ）は、画素値の変化が大きく、ブロックレンジＢＲの値が大きなブロックの例を示す。各ブロックのブロックレンジＢＲは、図６（ａ）ＢＲ＝２、図６（ｂ）ＢＲ＝７、図６（ｃ）ＢＲ＝１４である。図６（ｄ）（ｅ）（ｆ）は、図６（ａ）（ｂ）（ｃ）それぞれのブロックにおいて、固定長ＦＬが７である場合の固定長ＦＬとブロックレンジＢＲとの関係を示す図である。図６からわかるように、ブロックレンジＢＲが固定長ＦＬ以下である図６（ａ）、図６（ｂ）のブロックについては、固定長保証符号化部１００１は、情報損失なく固定長以下で符号化することができる。図６（ａ）に示すブロックの場合は、ブロックレンジＢＲが固定長ＦＬ未満であるため、利用しないですむ容量が生じる。この余りの容量を、余剰データ容量ＳＤと呼ぶ。一方図６（ｃ）のブロックについては、ブロックレンジＢＲが固定長ＦＬより大きいため、ＢＲ−ＦＬ分、固定長を超えてしまう。そのため、上位ビットから固定長ＦＬビットまでのＦＬビットは、固定長保証符号化部１００１により符号化されるが、固定超ＦＬビットから下位ビットまでのＢＰビットは後述するオーバービット符号化部１００２により符号化されることになる。なお、ＢＰビットの長さは、ＢＲ−ＦＬ分となる。
【００２６】
Ｓ３０４において固定長保証符号化部１００１は、Ｓ３０３において算出されたブロックレンジＢＲと０とを比較する。ブロックレンジＢＲの値が０よりも大きい場合（Ｙｅｓ）は、Ｓ３０５へ進み、ブロックレンジＢＲの値が０以下である場合（Ｎｏ）は、Ｓ３０７に進む。ブロックレンジＢＲの値が０の場合、符号化対象ブロック内のすべての画素が同じ画素値を持つことを意味する。従って、最小画素と最大画素とを除く画素ＯＰ１〜ＯＰｍを符号化する必要がない。そのため、画素ＯＰ１〜ＯＰｍの符号化処理（Ｓ３０５〜Ｓ３０６）をスキップして、Ｓ３０７へ進むことができる。
【００２７】
Ｓ３０５において固定長保証符号化部１００１は、最小画素と最大画素を除く画素ＯＰ１〜ＯＰｍの画素値を、固定長以下になるように符号化する。上述の通り本実施形態では、最小画素と最大画素とを除く画素ＯＰは、ＯＰ１、ＯＰ２、・・・ＯＰ１４の１４画素存在する。ここでは固定長保証符号化部１００１は、符号化対象ブロックのブロックレンジＢＲが固定長ＦＬ以下の場合、各ＯＰの値（ＯＰ１〜ＯＰｍ）から最小画素Ｐｍｉｎの画素値を引いた値（Ｑ１〜Ｑｍ）を符号化データとして出力する。一方、符号化対象ブロックのブロックレンジＢＲが固定長ＦＬよりも大きい場合には、固定長保証符号化部１００１はまず画素ＯＰ１〜ＯＰｍの値をそれぞれ最小画素の画素値Ｐｍｉｎで引いた値Ｑ１〜Ｑｍを生成する。このＱ１〜Ｑｍを固定長ＦＬで表現できるように、固定長保証符号化部１００１は、各Ｑ１〜Ｑｍのうち上位ＦＬビットを各ＯＰの固定長ＦＬの符号化データとして生成する。なお固定長保証符号化部１００１は、固定長ＦＬの符号化データを超えたビット（以下、オーバービットと呼ぶ）のデータをオーバービット符号化部１００２に出力する。
【００２８】
図４（ｂ）に示すブロックの場合について、以下に具体例を示す。本実施形態において固定長ＦＬ＝７であり、図４（ｂ）に示すブロックはブロックレンジＢＲ＝８であるため、下位１ｂｉｔを切り捨てることで、ブロック内の画素値が７ｂｉｔで表現できる値となる。例えば、Ｑ１を１ビット右シフトすることで、符号化データ２６（実際の符号はこれを７ビット自然二進で表現した”００１１０１０”）が生成される。他のＱ２〜Ｑｍの値についても同様に１ビット右シフトして、符号化データを生成する。図４（ｂ）に示すブロックに対する、画素ＯＰ１〜ＯＰそれぞれの符号化データの各値については、図５に示すとおりである。固定長保証符号化部１００１は、固定長符号化したデータをバッファ１００３に格納する。
【００２９】
Ｓ３０６において固定長保証符号化部１００１は、ブロックレンジＢＲと予め定められた固定長ＦＬとを比較する。ＢＲがＦＬ以下の場合（Ｙｅｓ）は、処理をＳ３０５へ進める。一方、ＢＲがＦＬよりも大きな値の場合（Ｎｏ）には、Ｓ３０８へ処理を遷移する。
【００３０】
Ｓ３０７において固定長保証符号化部１００１は、余剰データ容量ＳＤを算出する。つまり、ＦＬ−ＢＲ分がブロックに対する余剰データ容量ＳＤである。Ｓ３０７で処理されるブロックは、ブロックレンジＢＲ≦固定長ＦＬであるため、固定長ＦＬ以下で可逆符号化できるブロックであると言える。更に、ＢＲ＜ＦＬの場合にはＦＬ分すべてを利用せずに、可逆符号化が可能なブロックである。そのため、余剰データ容量ＳＤが０より大きい場合、固定長ＦＬを超えてしまうような他のブロックの符号化データに割り当てることができる。この余剰データ容量ＳＤをこれ以降、プール容量ＳＤと呼ぶ。本実施形態においてプール容量ＳＤは、ブロックレンジＢＲが固定長ＦＬ以下の場合のビット長ＦＬ−ＢＲで算出される値である。
【００３１】
具体的には、図６（ａ）のブロックの場合、ＳＤ＝５となる。
【００３２】
Ｓ３０７において固定長保証符号化部１００１は、算出した処理対象のブロックのプール容量ＳＤを、既に算出した総プール容量に加算する。つまり固定長保証符号化部１００１は、符号化対象の画像において生じたプール容量ＳＤの合計を、プール容量ＳＤとして算出する。なお、プール容量ＳＤは画像内の先頭ブロック入力時に０に初期化されているものとする。
【００３３】
Ｓ３０８においてオーバービット符号化部１００２は、ＢＲ＞ＦＬであるブロックにおいて、固定長ＦＬを超えたオーバービットのデータを符号化する。オーバービット符号化処理では、オーバービットデータをビットプレーン毎にランレングス符号化などで符号化しても良いし、ビットデータをそのまま保持しても構わない。この後の符号量制御処理において、プール容量とデータ量を比較できる状態であり、オーバービットデータの中から符号量制御で追加できると判断されたデータ量分を追加可能な形式で保持されていればよい。オーバービット符号化部１００２は、符号化したデータをバッファ１００３に格納する。Ｓ３０７とＳ３０８の処理が終了すると、処理をＳ３０９へ進める。
【００３４】
Ｓ３０９において固定長保証符号化部１００１は、符号化対象ブロックが最終ブロックであるかどうかの判断を行う。最終ブロックである場合（Ｙｅｓ）、処理をＳ３１０へ進める。最終ブロックでない場合（Ｎｏ）には、処理をＳ３０１へ戻し、次のブロックを処理する。
【００３５】
Ｓ３１０において符号量制御部１００４は、符号量制御処理を行う。符号量制御の方法は、Ｓ３０７において算出したプール容量ＳＤ分だけ、オーバービット符号化データからデータを追加する。プール容量ＳＤよりもオーバービット符号化データのデータ量が少ないか、同じデータ量の場合には、すべてのデータが追加される。一方、プール容量ＳＤよりもオーバービット符号化データのデータ量が多い場合には、オーバービット符号化データの中のプール容量ＳＤ分のみデータが追加される。
【００３６】
以上に説明したとおり、符号化処理と符号量制御処理を行うことで、符号量制御単位ごとに、固定長以下での符号化が可能となる。図２に示す画像に固定長符号化を適用した場合、一般的にはブロック番号１→２→３→４の順に符号化される。符号量制御単位が２ブロック毎であるとすると、図７（ａ）に示すように、固定長以下に符号化されるブロック１、２と、符号長が固定長を超過するブロック３，４とがそれぞれ符号量制御単位０、１として符号化される。符号量制御単位０（ブロック１と２）については、固定長以下での符号化が可能となる。一方、符号量制御単位１（ブロック３と４）については、固定長を超過した符号化データ（図７（ａ）の斜線部分）は、すべて切り捨てられることになる。
【００３７】
本実施形態では、図２示す同じ画像に適用し、ブロック選択部１０４が選択した組み合わせにより符号化した場合には図７（ｂ）に示す結果となる。ブロック選択部１０４から、ブロック１と３、２と４の組み合わせが符号量制御単位０、１としてそれぞれ、固定長符号化部１０５へ入力される。固定長符号化部１０５では、まずブロック１が符号化されて、プール容量ＳＤが算出される。続いて、ブロック３が符号化されるが、ブロック３については、符号長が固定長を超えるため、オーバービット符号化処理が行われる。符号量制御単位０，１の固定長符号化が終えると、固定長符号化データに、それぞれの符号量制御単位０，１において生じた余剰データ容量の総量の分、オーバービット符号化データが追加される。図７（ｂ）に示す例の場合には、プール容量ＳＤとオーバービット符号化データのデータ量が等しいので、オーバービット符号化データをすべて追加することができる。従って、本実施形態の場合には、図２に示す画像をロスレスで固定長符号化することができる。なお、プール容量ＳＤよりもオーバービット符号化データのデータ量の方が少ない場合には、図２の例と同様に、すべてのオーバービット符号化データを追加できる。プール容量ＳＤよりもオーバービット符号化データのデータ量が多い場合には、オーバービット符号化データの中から、プール容量ＳＤ分のみのビットデータを追加する。この場合には、オーバービット符号化データの一部が切り捨てられることになるが、複雑度の高いブロックと低いブロックを組み合わせて処理をしていることで、切り捨てられる量は少なくなると言える。
【００３８】
以上の通り本実施形態によれば、複数のブロックを符号量制御単位とする場合、複雑度の低いブロックと複雑度の高いブロックとの組み合わせを含むように符号量制御単位を設定することで、できるだけ固定長をオーバーするデータ量を抑制することができる。さらに、他の符号量制御単位において生じた余剰のデータ容量分、オーバービットの符号化データを追加することで、切り捨てられる符号化データを減らすことができる。
【００３９】
＜変形例＞
第１実施形態では、ブロックにおける最小画素値と最大画素値との差分に基づいてブロックの複雑度を算出した。これにより、オーバービットが生じるブロックとオーバービットが生じないブロックとの組み合わせをより精度よく選択することができる。ただし、他の方法により複雑度を算出することもできる。例えば、ブロック内の画素値の分散を複雑度として算出しても良いし、エッジ検出して、エッジ数を複雑度として算出しても良い。また、上述の実施形態では、最小画素値と最大画素値との差分を、閾値を用いて量子化した。しかしながら、差分値をそのまま複雑度として出力しても良いし、０か１かの２値ではなく、複雑度を複数の段階に分けた情報を出力しても構わない。また、特徴量を算出する際に、画像内の全画素を使って算出しても良いが、必ずしも全画素から算出しなくてもよい。例えば、画像から一定間隔で間引いて取得した画素の値から算出するなどしても構わない。特徴量取得部１０３は符号化対象の画像から特徴量を算出したが、予め算出された特徴量を取得可能な場合には、必ずしも算出しなくてもよい。例えば、特徴量取得部１０３は符号化装置外部から与えられる特徴量を取得するなどしても良い。
【００４０】
また上述の実施形態では、２つのブロックを符号量制御単位として説明したが、符号量制御単位は、適宜各構成のデータ転送する際の転送速度や、処理するために保持できるデータ容量などを考慮して、符号量制御単位とすればよい。ブロック選択部１０４は、符号量制御単位として、少なくとも１つの複雑度が低いブロックと、少なくとも１つの複雑度が高いブロックとが含まれるようにブロックの組み合わせを選択すれば良い。
【００４１】
また上述の実施形態においては、固定長ＦＬは全てのブロックに対して同じとしたが、ブロック単位に変更可能な場合にも、本実施形態は適用可能である。また、プール容量ＳＤとオーバービット符号化データとをブロックごとに比較するために、プール容量をビット長ＦＬ−ＢＲと定義した。しかしながら、プール容量と固定長をオーバーする符号化データとの比較ができれば良く、これに限るものではない。例えば、実際のブロックに対するプール容量としては、最小画素と最大画素以外の画素１４画素について各（ＦＬ−ＢＲ）ｂｉｔの余剰があることを意味するため、（ＦＬ−ＢＲ）×１４ｂｉｔをプール容量としてもよい。
【００４２】
また上述の実施形態において符号列形成部１０６は、ヘッダ情報としてブロックの符号化順序を付加すると説明したが、これに限らない。例えば、動画の１フレームを符号化する際に、先頭フレームでなく、直前に符号化したフレームとの差分が少ない場合には、直前フレームと同じ順序で符号化すると決めておいてもよい。その場合、ヘッダ情報としては、直前フレームと同じ順序で符号化するか否かのフラグを持つなどすればよい。
【００４３】
＜第２の実施形態＞
第１の実施形態では、ブロックにおける最大画素値と最小画素値との差分を、ブロックの複雑度として算出し、複雑度に基づいて符号量制御単位とするブロックを選択する方法について説明した。本実施形態では、画像の特徴量として関心領域を特徴量として取得しし、関心領域を含むブロックであるか否かに基づいてブロック選択方法について説明する。なお、第１の実施形態と同様の構成については同一の符号を付し、詳細な説明を省略する。
【００４４】
本実施形態において特徴量取得部１０３は、事前に画像の認識処理を行って得た関心領域（以下、ＲＯＩとも呼ぶ）の位置情報やサイズなどを取得する。ＲＯＩの位置情報とサイズを取得することで、画像内の各ブロックについて、特徴量取得部１０３は、ブロックがＲＯＩを含むか否かを特定することができる。図１１に、ＲＯＩと、ＲＯＩを含むブロックとの関係の例を示す。図１１の太枠で囲われた領域がＲＯＩであり、斜線で示した領域がＲＯＩを含むブロックを示している。特徴量取得部１０３では、ＲＯＩを含むブロックであるか含まないブロックであるかがわかる情報をブロック選択部１０４へ出力する。
【００４５】
ブロック選択部１０４は、ＲＯＩを含むブロックと含まないブロックを組み合わる。これは、ＲＯＩについては、符号量を少なくすることよりも画質を優先させ、一方、ＲＯＩ以外の領域については、画質よりも符号量を少なくすることを優先させるためである。
【００４６】
例えば、図１２（ａ）に示すように、符号量制御単位の中にＲＯＩを含むブロックしか存在しなかった場合、固定長をオーバーするブロックのオーバービット符号化データから均一に符号量を追加することになる。一方、図１２（ｂ）に示すように、関心領域と関心領域以外を組み合わせることで、関心領域のオーバービット符号化データを優先して追加することが可能となる。これにより、関心領域の画質を向上させることができる。
【００４７】
また、オーバービット符号化データから追加するデータを、ＲＯＩを含むブロックから優先的に選択するだけでなく、ＲＯＩを含むブロックとそれ以外のブロックで固定長符号化する際のパラメータを変化させることも可能である。第１の実施形態で説明をした固定長符号化の方法では、ブロック内の可変長符号のビット数上限を固定長ＦＬと定めた。この方法で符号化するときに、図１３の例の場合、ＲＯＩを含むブロックと含まないブロックで符号量が同等のため、固定長ＦＬが全ブロックで固定であれば画質差無く符号化される。しかしながら、固定長ＦＬを、ＲＯＩを含むブロックでは大きく、ＲＯＩを含まないブロックでは小さく設定しておくことで、ＲＯＩを含むブロックの画質を向上させることができる。
【００４８】
なお、画像の特徴量として、ＲＯＩと複雑度を組み合わせて取得することができた場合には、複雑度が高い関心領域と、複雑度の低い関心領域以外の領域を組み合わせることで、更にＲＯＩの画質を向上できる。
【００４９】
＜第３の実施形態＞
本実施形態においては、画質劣化が視認されうるか否かの判断基準から、符号量制御単位とするブロックを選択する方法について説明する。
【００５０】
本実施形態において特徴量取得部１０３は、ノイズが目立ち易いブロックとノイズが目立ち難いブロックであるという情報を取得する。ここで、ノイズが目立ち易いブロックを劣化視認度の高いブロックとし、ノイズが目立ち難いブロックを劣化視認度の低いブロックと呼ぶものとする。この劣化視認度は、例えば、ブロックに対してＤＣＴなどの周波数変換手段を適用し、高周波成分の電力を数値化することで算出できる。これにより、高周波成分の電力が高いブロックはノイズを視認し難く、高周波成分の電力が低いブロックはノイズを視認し易いと判断できる。
【００５１】
ブロック選択部１０４は、１つの符号量制御単位として、できるだけ劣化視認度の高いブロックと低いブロックを組み合わせる。劣化視認度の低いブロックに割り当てる符号量を少なくすることで、劣化視認度の高いブロックに対して、符号量を多く割り当てることができ、結果として符号化によるノイズをできるだけ発生させないように制御することが可能となる。
【００５２】
以上の方法により、符号量が同じように発生するような画像についても、画質劣化の視認度によって組み合わせを選択することで、見た目に画質良く固定長符号化することが可能となる。
【００５３】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５４】
１０１  入力部
１０２  ブロック分割部
１０３  特徴量取得部
１０４  ブロック選択部
１０５  固定長符号化部
１０６  符号列形成部
１０７  出力部
【図１】
2020092327.tif 000003
【図２】
2020092327.tif 000004
【図３】
2020092327.tif 000005
【図４】
2020092327.tif 000006
【図５】
2020092327.tif 000007
【図６】
2020092327.tif 000008
【図７】
2020092327.tif 000009
【図８】
2020092327.tif 000010
【図９】
2020092327.tif 000011
【図１０】
2020092327.tif 000012
【図１１】
2020092327.tif 000013
【図１２】
2020092327.tif 000014
【図１３】
2020092327.tif 000015