(58)【調査した分野】(Int.Cl.,DB名)
前記量子化パラメータ生成手段は、前記複数のサブバンドデータを所定のライン単位に量子化し、符号化した場合の、符号化の目標符号量と符号化した結果の発生符号量との差分に基づいて決定された第3の量子化パラメータから前記第1の量子化パラメータを決定し、
前記量子化パラメータ生成手段は、前記第3の量子化パラメータを、前記セグメントごとの画質特性に応じて修正することにより前記第1の量子化パラメータを決定し、
前記画質特性が、低周波成分の振幅が小さいことを示す場合に前記第1の量子化パラメータを減少させるように補正し、
前記画質特性が、高周波成分の振幅が大きいことを示す場合に前記第1の量子化パラメータを増大させるように補正する
ことを特徴とする請求項1から4のいずれか1項に記載の画像符号化装置。
前記セグメントは、それぞれのサブバンドデータに含まれるセグメント数が一致するように前記複数のサブバンドデータのそれぞれを分割することにより生成されることを特徴とする請求項1から6のいずれか1項に記載の画像符号化装置。
【発明を実施するための形態】
【0010】
以下、図面を参照しながら本発明の好適な実施の形態を説明する。
【0011】
[実施形態1]
以下、発明の実施形態を説明する。
図1(a)は、発明の実施形態に対応する撮像装置100を示す。撮像装置100は、例えばデジタルカメラ、デジタルビデオカメラとして実現することができる。また、それ以外に、例えばパーソナルコンピュータ、携帯電話、スマートフォン、PDA、タブレット端末、携帯型メディアプレーヤなどの任意の情報処理端末或いは画像処理装置として実現することもできる。なお、
図1(a)は、撮像装置であるデジタルカメラ等として機能する場合を考慮して撮像部102を含む構成を示した。しかし、発明の実施形態として、RAW画像を圧縮し、記録、再生することが可能な画像符号化装置・画像復号装置、画像記録装置、画像圧縮装置、画像復元装置等として、撮像部102を有しない構成で実現してもよい。
【0012】
撮像装置100において、制御部101は、撮像装置100を構成する各処理部を制御する。撮像部102は、光学レンズ、絞り、フォーカス制御及びレンズ駆動部を含む光学ズームが可能なレンズ光学系とレンズ光学系からの光情報を電気信号に変換するCCDイメージセンサ又は、CMOSイメージセンサなどの撮像素子を含む。撮像部102は、撮像素子により得られた電気信号をディジタル信号へ変換したRAWデータは、RAWデータ符号化・復号部103へ出力する。
【0013】
ここでRAWデータは、
図1(b)に示すように受光した画素領域である有効撮像領域と遮光された画素領域であるオプティカルブラック領域とで構成される。各画素はR(赤)、G1(緑)、G2(緑)、B(青)の周期的なパターンで構成されており、人間の視覚的な感度は色成分よりも輝度成分に敏感なことから輝度成分を多く含む緑が赤や青に対して2倍の面積が割り当てられている。本実施形態ではRAWデータは、ベイヤー配列の4色要素で構成されるものとするが、その配列や色要素はこの構成に限定されず他の方式であっても良い。
【0014】
RAWデータ符号化・復号部103は、撮像部102が取得したRAWデータを符号化し、生成した符号化データをメモリ105へ書き込みを行う。また、符号化されていないRAWデータを記録媒体107から取得して、本実施形態に対応する符号化処理を実行して符号化データを生成してもよい。また、RAWデータ符号化・復号部103は、符号化データを復号してRAWデータを復元することができる。RAWデータ符号化・復号部103に関わる詳細な構成や動作については後述する。
【0015】
メモリI/F部104は、各処理部からのメモリ・アクセス要求を調停し、メモリ105に対する読み出し、又は書き込み制御を行う。メモリ105は、撮像装置100を構成する各処理部から出力される各種データを格納するための例えば揮発性メモリで構成される記憶領域である。記録処理部106は、メモリ105へ格納された符号化データを読み出し、所定の記録フォーマット化を行い記録媒体107へ記録する。記録媒体107は、例えば不揮発性メモリで構成される記録メディアであり、撮像装置100に対して着脱可能に構成されている。以上の処理部により撮像装置が構成されている。
【0016】
続いて、RAWデータ符号化・復号部103の詳細な構成及び処理の流れについて
図2(a)及び
図2(b)に示すブロック図を参照しながら説明を行う。
図2(a)は、RAWデータ符号化・復号部103のうちRAWデータ符号化部103Eの構成を示し、
図2(b)はRAWデータ符号化・復号部103のうちRAWデータ復号部103Dの構成を示す。
【0017】
図2(a)においてRAWデータ符号化部103Eは、主にチャネル変換部201、周波数変換部202、量子化パラメータ生成部203、量子化部204、符号化部205及び量子化パラメータ符号化部206で構成されている。チャネル変換部201は、
図3に示すように入力されたベイヤー配列のRAWデータを複数のチャネルに変換する。周波数変換部202、量子化部204は変換により得られたチャネル数に対応するブロックが用意され、並列に処理される。本実施形態では、チャネル変換部201は、例えば、RAWデータをベイヤー配列のR、G1、G2、B毎に4つのチャネルへ変換し、更にR、G1、G2、Bに対して以下の変換式1によりC0からC3の4つのチャネルへ変換することができる。
【0018】
C0=a+c
C1=B−G2 式1
C2=R−G1
C3=b−a
但し、a=G2+[C1/2]、b=G1+[C2/2]、c=a+[C3/2]
また、式1において床関数[x]は、x以下の最大整数を表す。
【0019】
尚、ここでは
図3(a)に示すように4つのチャネルへ変換する構成例を示しているが、
図3(b)や
図3(c)に示すようにR、G1とG2を合わせたG、B毎の3つのチャネルへ変換しても良く、チャネル数や変換方法は上記以外の方法であっても良い。
【0020】
次に、周波数変換部202は、チャネル単位に所定の分解レベル(以降、単に「レベル」または「lev」と呼ぶ)で離散ウェーブレット変換による周波数変換処理を行い、生成された複数のサブバンドデータ(変換係数)を量子化パラメータ生成部203及び量子化部204へ出力する。
【0021】
図4(a)は、lev=1のサブバンド分割処理に関わる離散ウェーブレット変換を実現するためのフィルタバンク構成を示しており、離散ウェーブレット変換処理を水平、垂直方向に実行した結果、
図4(b)に示すように最初に1つの低周波数サブバンド(LL)と3つの高周波数サブバンド(HL、LH、HH)へ分割される。
図4(a)に示すローパスフィルタ(以降、lpfと呼ぶ)及びハイパスフィルタ(以降、hpfと呼ぶ)の伝達関数をそれぞれ下式2,3に示す。
lpf(z)=(−z
-2+2z
-1+6+2z−z
2)/8 式2
hpf(z)=(−z
-1+2−z)/2 式3
【0022】
また、「↓2」は2対1のダウンサンプリングを表す。従って、水平方向と垂直方向とで1回ずつのダウンサンプリングが実行されるので、サブバンドのサイズは元のサイズの1/4となる。levが1よりも大きい場合には、低周波数サブバンド(LL)に対して階層的にサブバンド分割が実行され、例えばlev=3の場合は、
図4(c)に示すように10個のサブバンドに対応したサブバンドデータが生成される。尚、ここでは離散ウェーブレット変換は上記式2、3に示すように5タップのlpfと3タップのhpfで構成しているが、これとは異なるタップ数及び異なる係数のフィルタ構成であっても良い。
【0023】
量子化パラメータ生成部203は、周波数変換部202により生成されたサブバンドデータ(変換係数)に対して量子化処理を行うための全チャネル、全サブバンドに共通の第1の量子化パラメータを生成し、量子化パラメータ符号化部206へ出力する。また、第1の量子化パラメータから各チャネル、各サブバンドのための個別の第2の量子化パラメータを生成し、量子化部204へ供給する。第1の量子化パラメータ及び第2の量子化パラメータの生成単位やその生成方法については、
図5から
図7等を参照して後述する。
【0024】
量子化部204は、周波数変換部202から入力されたサブバンドデータ(変換係数)に対して量子化パラメータ生成部203から供給された第2の量子化パラメータに基づき量子化処理を行い、量子化結果として量子化後のサブバンドデータ(変換係数)を符号化部205へ出力する。
【0025】
符号化部205は、量子化部204から入力された量子化後のサブバンドデータ(変換係数)に対して、サブバンド毎にラスタースキャン順で予測差分型エントロピー符号化を行う。これにより、量子化後のサブバンドデータはサブバンド単位で符号化されことになる。ここでは、
図4(d)に示すように符号化対象データ(変換係数)の周辺データからMED(Median Edge Detector)予測により予測値pdを生成し、符号化対象データxの値xdと予測値pdとの差分データを例えばハフマン符号化、ゴロム符号化等によりエントロピー符号化を行い、生成した符号化データをメモリ105へ格納する。このとき、各サブバンドのラスタースキャン順で先頭のデータには周辺データがないため、符号化対象データxの値xdがそのまま符号化される。そして、それ以降の符号化対象データについては差分データが符号化される。尚、予測符号化方式やエントロピー符号化方式は、他の方式であっても良い。また、各サブバンド別にライン単位に発生した発生符号量を量子化パラメータ生成部203へ供給する。また、ここで生成される符号化データの具体的なデータ構造については
図9及び
図10を参照して後述する。
【0026】
量子化パラメータ符号化部206は、量子化パラメータ生成部203から入力された第1の量子化パラメータを符号化する処理部である。量子化パラメータ符号化部206は、符号化部205と共通の符号化方式により量子化パラメータを符号化し、生成した符号化済みの量子化パラメータをメモリ105へ格納する。
図2(a)では量子化パラメータ符号化部206を符号化部205とは独立に設ける場合を示したが、両者は共通の符号化方式を採用するので、量子化パラメータ符号化部206の機能を符号化部205で共通化するように構成することも可能である。RAWデータ符号化部103Eは以上のように構成される。
【0027】
次に、RAWデータ復号部103Dの構成を説明する。RAWデータ復号部103Dは、主に復号部211、量子化パラメータ復号部212、量子化パラメータ生成部213、逆量子化部214、周波数逆変換部215、チャネル逆変換部216で構成されている。
【0028】
まず、復号部211は、メモリ105から入力される符号化データを、RAWデータ符号化部103Eが採用した符号化方式に対応する復号方式により復号し、量子化済みのサブバンドデータ(変換係数)を復元する。例えば、予測差分型エントロピー符号化方式が用いられていた場合、対応する予測差分型エントロピー復号方式を採用する。このとき、
図4(d)に示すように符号化データは、符号化対象データ(変換係数)の周辺データから生成された予測値pdと符号化対象データxの値xdとの差分データがエントロピー符号化されたものである。そこで、復号部211は符号化データをエントロピー復号方式により復号して差分データを復元すると、復号対象データ周辺の復号済みデータから予測値pdを生成し、差分データを加算することにより符号化対象データxを復元する。符号化データはサブバンド単位に符号化されたデータで構成されているので、復号部211でもサブバンド単位に変換係数を復元する。
【0029】
量子化パラメータ復号部212は、メモリ105から入力された符号化データに含まれる、符号化された第1の量子化パラメータを復号部211と共通の復号方式により復号し、第1の量子化パラメータを復元する。また、量子化パラメータ復号部212は、チャネル、サブバンド単位の第2の量子化パラメータを算出するための所定の係数(後述する式5のα、β)も復号する。復号結果は量子化パラメータ生成部213に出力する。量子化パラメータ生成部213は、量子化パラメータ復号部212から提供された第1の量子化パラメータと、所定の係数とからチャネル、サブバンド単位の第2の量子化パラメータを生成し、逆量子化部214に提供する。
【0030】
逆量子化部214は、復号部211から出力されたチャネル単位の量子化済みサブバンドデータを、量子化パラメータ生成部213から提供された第2の量子化パラメータを用いて逆量子化して、サブバンドデータを復元する。周波数逆変換部215は、離散ウェーブレット逆変換による周波数逆変換処理を行い、所定の分割レベルのサブバンドデータ(変換係数)からチャネルを復元する。チャネル逆変換部216は、入力されたチャネルデータを逆変換して、元のRAWデータを復元する。例えば、RAWデータ符号化部103Eのチャネル変換部201がベイヤー配列のR、G1、G2、Bを式1に従いC0からC3の4つのチャネルへ変換していた場合、式1に対応する逆変換処理に従い、C0からC3の4つのチャネルからR、G1、G2、BのRAWデータを復元する。RAWデータ復号部103Dは以上のように構成される。
【0031】
次に、量子化パラメータ生成部203における量子化パラメータ生成処理を説明する。本実施形態では、全チャネル、全サブバンドに共通の第1の量子化パラメータを生成し、当該第1の量子化パラメータから各チャネル、各サブバンドのための個別の第2の量子化パラメータを生成する。量子化パラメータ生成部203は、符号化前に予め設定された目標符号量に基づき、所定のサブバンドデータ単位に符号量制御に関わる量子化パラメータ生成処理を行い、まず全チャネル、全サブバンドに共通の第1の量子化パラメータを生成する。
【0032】
本実施形態では第1の量子化パラメータを直接に生成するのではなく、2段階に分けて生成する場合を説明する。まず、各サブバンドデータについて所定のライン単位に、全チャネル、全サブバンドの共通の量子化パラメータ(第3の量子化パラメータ)を生成する。そして、上記所定のラインをセグメントと呼ぶ単位で分割し、セグメントにおけるサブバンドデータの画質特性に応じて、第3の量子化パラメータを修正して第1の量子化パラメータを生成する。以下、第1の量子化パラメータの生成手順について詳細に説明する。
【0033】
図5は、各チャネルをlev=3でサブバンド分割した場合の符号量制御に関わる符号量の評価及び量子化パラメータを更新する単位を示す。C0からC3までの4つのチャネルのレベル3のサブバンド(3LL,3HL,3LH,3HH)の垂直方向に1×N(Nは整数)ライン分、レベル2のサブバンド(2HL,2LH,2HH)の垂直方向に2×Nライン分、レベル1のサブバンド(1HL,1LH,1HH)の垂直方向に4×Nライン分のサブバンドデータを纏めて1つの処理単位(第1の処理単位)とする。
図5に示すように、第1の処理単位は、サブバンドをそれぞれ垂直方向に所定のラインごとに分割した領域(バンド)として設定される。特に、
図5はN=1の場合を示している。
【0034】
量子化パラメータ生成部203は、第1の処理単位に対応する目標符号量と発生符号量とを比較し、次の同処理単位の全チャネル、全サブバンドのデータに対する発生符号量を目標発生符号量に近づけるようにフィードバック制御を行い、全チャネル、全サブバンドに共通の第3の量子化パラメータ(QpBr)を生成する。尚、RAWデータに対して画面内の符号量制御を行わない場合には、上記に示すような符号量制御単位に関係なく全画面固定となる全チャネル、全サブバンドに共通のQpBrを設定又は生成すれば良い。このときの符号量の制御は以下の式4に従って実行することができる。
【0035】
QpBr(i)=QpBr(0)+r×Σ{S(i−1)−T(i−1)} 式4
QpBr(0) : 初期量子化パラメータ
QpBr(i):i番目の量子化パラメータ(i>0)
r:制御感度
S:発生符号量
T:目標符号量
【0036】
式4では、サブバンドデータに設定された各バンド(第1の処理単位)のうちの先頭のバンドに対して設定した初期量子化パラメータを基準とし、発生符号量と目標符号量との差分の大きさに応じて当該初期量子化パラメータを調整する。具体的に、先頭のバンド以降に発生した符号量の合計(総発生符号量)と、対応する目標符号量の合計(総目標符号量)との符号量差分が小さくなるように初期量子化パラメータの値を調整して、処理対象のバンドのための第3の量子化パラメータを決定する。先頭のバンドに対して設定される初期量子化パラメータは、圧縮率などに基づいて量子化パラメータ生成部203が決定したパラメータを用いることができる。
【0037】
このようにして、バンドごとに第3の量子化パラメータ(QpBr)を生成した後、量子化パラメータ生成部203はバンドを更に細分化(セグメント化)し、第2の処理単位であるセグメントごとのサブバンドデータの画質評価結果に応じて第3の量子化パラメータ(QpBr)を調整して第1の量子化パラメータ(QpBs)を生成する。これにより、RAWデータの特性に応じて量子化の強弱を調整する画質制御に関わる量子化パラメータ生成を行うことができる。
【0038】
図6(a)は、各チャネルをlev=3でサブバンド分割した場合の画質制御に関わるサブバンドデータの評価及び量子化パラメータを更新する第2の処理単位(セグメント)を示す。各セグメントでは、全チャネルのレベル3のサブバンド(3LL,3HL,3LH,3HH)の水平、垂直方向それぞれに(1×M)×(1×N)(M、Nはそれぞれ整数)、レベル2のサブバンド(2HL,2LH,2HH)の水平、垂直方向にそれぞれ(2×M)×(2×N)、レベル1のサブバンド(1HL,1LH,1HH)の水平、垂直方向にそれぞれ(4×M)×(4×N)としている。
【0039】
ここに示す第2の処理単位としてのセグメントは、第1の処理単位としてのバンドを水平方向に細分化したものである。本実施形態ではセグメント化は、各サブバンドに含まれるセグメント数が一致するように行う。M=1、N=1とすると、セグメントはレベル1相当でバンドを水平方向に4画素単位に分割したものと捉えることができる。量子化パラメータ生成部203は、バンドごとに算出した第3の量子化パラメータQpBrを、セグメントごとの画質特性に応じて修正することで、セグメントごとの第1の量子化パラメータ(QpBs)を生成する。
【0040】
図6(b)は、M=1、N=1とした場合の、第1の量子化パラメータ(QpBs)とサブバンドデータとの関係を示す。ここに示すように、1つのセグメントに含まれる各チャネルの複数のサブバンドデータに対して1つの第1の量子化パラメータ(QpBs)が生成される。
【0041】
セグメントごとの画質評価ついては、各セグメントに含まれるサブバンドデータのうち、例えば3LLのサブバンドデータを低周波成分として評価し、1HL,1LH,1HHのサブバンドデータにより高周波成分を評価する。このとき、低周波成分の振幅が小さい程量子化を細かく、高周波成分の振幅が大きい程量子化を粗く制御するように符号量制御により、第3の量子化パラメータ(QpBr)に対してゲイン、オフセット調整を行うようにフィードフォワード制御すれば良い。
【0042】
図7は、量子化パラメータ生成部203が実行する、画質評価に基づく第3の量子化パラメータ(QpBr)の調整処理の一例に対応するフローチャートを示す。該フローチャートに対応する処理は、例えば、量子化パラメータ生成部203として機能する1以上のプロセッサが対応するプログラム(ROM等に格納)を実行することにより実現できる。
【0043】
S701において、量子化パラメータ生成部203は低周波成分について判定を行う。3LLの変換係数と、判定用に設定された閾値Th1とを比較し、3LLの変換係数が閾値以下の大きさであれば(S701で「YES」)、処理はS702に進む。S702において、量子化パラメータ生成部203は処理対象のセグメントが属するバンドに対して設定された第3の量子化パラメータQpBrの値を減少させる。例えば、QpBrに対して1未満の係数を掛けるか、あるいはQpBrから所定値を減算する。
【0044】
S701の判定で、3LLの変換係数が閾値Th1より大きい場合(S701で「NO」)、処理はS703に進む。S703において量子化パラメータ生成部203は、高周波成分について判定を行う。1HL、1LH、1HHの変換係数の平均値と、判定用に設定された閾値Th2とを比較し、平均値が閾値Th2より小さい場合(S703で「NO」)、処理はS704に進む。また、平均値が閾値Th2以上の大きさであれば(S703で「YES」)、処理はS705に進む。S704ではQpBrの値を維持する。S705ではQpBrの値を増大させる。例えば、QpBrに対して1以上の係数を掛けるか、あるいはQpBrに所定値を加算する。
【0045】
以上により、セグメント毎に第3の量子化パラメータQpBrを調整して得られた結果を当該セグメントの第1の量子化パラメータQpBsとする。尚、画質制御に関わる量子化制御を行なわない場合には、QpBrをそのままQpBsとすれば良い。
【0046】
以上により生成された全チャネル、全サブバンドに共通の第1の量子化パラメータQpBsは、例えば上記のM=1、N=1とした場合、
図8に示すように各チャネルの8×8画素相当に対応し、元のRAWデータの16×16画素相当のRAWデータのブロック単位の量子化制御が可能となる。
【0047】
次に、第1の量子化パラメータQpBsを用いて各チャネル、各サブバンドのための個別の第2の量子化パラメータQpSbを生成する処理について説明する。本実施形態では上述のように、セグメント毎に1つの第1の量子化パラメータQpBsが生成されるが、各チャネルの各セグメントの量子化はQpBsをそのまま用いるのではなく、チャネル、セグメントに個別に対応した第2の量子化パラメータQpSbをQpBsから生成して量子化処理を行う。以下、QpSbの生成処理について説明する。
【0048】
式5は、QpSb生成のための計算式である。
QpSb[i][j]=QpBs×α[i][j]+β[i][j] 式5
QpSb:各チャネル、各サブバンド個別の第2の量子化パラメータ
QpBs:全チャネル、全サブバンド共通の第1の量子化パラメータ
α:傾き
β:切片
i:チャネルインデックス(0〜3)
j:サブバンドインデックス(0〜9)
【0049】
式5において、傾きα及び切片βは、各チャネル、各サブバンドに個別に与えられる係数(変数)であって、予め定めておくことができる。αの値は、チャネルC0からC3について、C0>C1=C2>C3の関係で値が大きくなり、αが大きいほどQpSbの値が大きくなる。また、各サブバンドについては低周波成分寄りのサブバンドほど量子化パラメータの値を小さくするためα、βの値を小さくし、高周波成分寄りのサブバンドほど量子化パラメータの値を大きくするためにα、βの値を大きくする。
【0050】
また、α[i][j]、β[i][j]の各値は予め設定されるものであるが、設定される圧縮率に応じて複数の組み合わせが用意されても良い。例えば、圧縮率が高い場合にはQpSbの値が大きすぎると情報が消失してしまうので、QpSbが大きくなりすぎないようにα、βの値を小さめに調整することができる。
【0051】
このようにして、各チャネル、各サブバンドの個別の重み係数α、βにより第1の量子化パラメータQpBsを修正して第2の量子化パラメータQpSbを生成するので、各チャネル、各サブバンドに対して柔軟に量子化制御することが可能になる。量子化部204は、式5に基づき生成された各チャネル、各サブバンドの第2の量子化パラメータQpSbを用いて、周波数変換部202から得られた変換係数を量子化する。
【0052】
また、RAWデータ復号部103における第2の量子化パラメータQpSbの生成方法も、上述の式5に従って行うことができる。その際、第1の量子化パラメータQpSrとα、βの各値は、量子化パラメータ復号部212から提供される。
【0053】
以上のようにしてRAWデータ符号化・復号部103で符号化された各チャネルのサブバンドデータ、及び、第1の量子化パラメータQpBsは、記録処理部106により所定のデータ形式に基づき多重化され、符号化データとして記録される。
図9(a)は、符号化データを記録する場合のデータ構造の一例を示す。
図9(a)に示すように、符号化データは階層構造となっており、符号化データ全体に関わる情報を示す「main_header」から始まり、RAWデータを複数の画素ブロック単位にタイル分割して符号化することを想定して「tile_header」と「tile_data」によりタイル単位にデータを格納することが可能となっている。上記説明においては、RAWデータをチャネル、サブバンドデータ単位に直接符号化する場合を説明したが、タイルに限らずRAWデータ内の所定の集合を単位として本発明を適用することができる。即ち、RAWデータをタイルに分割し、当該タイルについてチャネル、サブバンドデータ単位に符号化する場合も、上記と同様の処理をRAWデータを複数に分割して得られたタイル単位に実行すればよい。この場合、タイル単位に各チャネルのサブバンドデータ、及び、第1の量子化パラメータQpBsが符号化されて、符号化データに包含される。タイル分割を行わない場合は、「tile_header」と「tile_data」は1つのみとなる。
【0054】
「tile_data」は以下の要素を含む。まず符号化された第1の量子化パラメータQpBsに関わる情報を示す「qp_header」と符号化された第1の量子化パラメータ自体である「coded_qp_data」が配置される。続く「coded_raw_data」は、チャネル単位に並んで配置されており、各チャネルに関わる情報を示す「channel_header」とそのチャネル毎の本体データである「channel_data」の順にチャネル分の符号化済みのデータが格納される。「channel_data」は、サブバンド毎の符号化されたデータの集合で構成されており、各サブバンドに関わる情報を示す「sb_header」と符号化されたサブバンド毎のデータである「sb_data」がサブバンドインデックス順に並んでいる。サブバンドインデックスは、
図9(b)に示す通りである。
【0055】
続いて、各ヘッダ情報のシンタクス要素について
図10に基づき説明を行う。「main_header」は以下の要素で構成される。「coded_data_size」は符号化データ全体のデータ量を示す。「width」はRAWデータの幅を示す。「height」はRAWデータの高さを示す。「depth」はRAWデータのビット深度を示す。「channel」はRAWデータの符号化時のチャネル数を示す。「type」はチャネル変換のタイプを示す。「lev」は各チャネルのサブバンドレベルを示す。
【0056】
「tile_header」は、以下の要素で構成される。「tile_index」はタイル分割位置を識別するためのタイルのインデックスを示す。「tile_data_size」はタイルに含まれるデータ量を示す。「tile_width」はタイルの幅を示す。「tile_height」はタイルの高さを示す。
【0057】
「qp_header」は、以下の要素で構成される。「qp_data_size」は符号化された第1の量子化パラメータのデータ量を示す。「qp_width」は、第1の量子化パラメータの幅、即ちRAWデータに対応する水平方向の第1の量子化パラメータの数を示す。「qp_height」は、第1の量子化パラメータの高さ、即ちRAWデータに対応する垂直方向の第1の量子化パラメータ数を示す。
【0058】
「channel_header」は、以下の要素で構成される。「channel_index」はチャネルを識別するためのチャネルのインデックスを示す。「channel_data_size」はチャネルのデータ量を示す。「sb_header」は、以下の要素で構成される。「sb_index」はサブバンドを識別するためのサブバンドインデックスを示す。「sb_data_size」はサブバンドの符号化されたデータ量を示す。「sb_qp_a」は、各サブバンドに対する量子化パラメータを生成するための式5に示すα値を示す。「sb_qp_b」は、各サブバンドに対する量子化パラメータを生成するための式5に示すβ値を示す。
【0059】
以上の実施形態に対応する発明によれば、各チャネル、各サブバンドの量子化パラメータを全て記録するのではなく、全チャネル、全サブバンドの共通の量子化パラメータを記録し、当該共通量子化パラメータから各チャネル、各サブバンドの量子化パラメータを生成可能にする。これにより、以下に述べるような量子化パラメータのデータ量抑制の効果を達成することができる。
【0060】
各チャネル、各サブバンドの個別の量子化パラメータを全て記録する場合(従来例)と、全チャネル、全サブバンド共通の量子化パラメータを記録する場合(本実施形態)とでデータ量の比較を考える。ここで、レベル1からレベル3までの各サブバンドについて1つずつの量子化パラメータが記録されることになる。よって、1セグメントについて記録することになる量子化パラメータのデータサイズは、(1×4サブバンド+1×3サブバンド+1×3サブバンド)×4チャネル分となり全体で40となる。一方、共通量子化パラメータは、1つだけあればよいため1となり、記録対象とする量子化パラメータを共通の量子化パラメータとすることで量子化パラメータのサイズを40分の1に削減することできる。
【0061】
更に、
図11に示すように記録対象の共通の量子化パラメータは2次元座標系にマップされた画面データと見なすことができるので、量子化パラメータの符号化に用いた予測差分符号化方式(MED予測)を同様に適用することでより量子化パラメータのデータ量を削減することが可能となる。
図11(b)において、QpBs[p, q]は、各セグメントに割り当てられた共通量子化パラメータを示し、pは、1から垂直方向のセグメントの分割数Pまでの値を取り、qは、1から水平方向のセグメントの分割数Qまでの値を取り得る。[p, q]の各値は、サブバンドにおける各セグメントの位置と対応する。
【0062】
以上のようにRAWデータを複数のチャネルに変換し、各チャネル単位にサブバンド分割を行う場合に、セグメント単位に全チャネル、全サブバンドに共通の量子化パラメータと重み付け関数とにより各チャネル、各サブバンド個別の量子化パラメータを生成することができる。これにより、柔軟な量子化制御を実現しつつ、共通の量子化パラメータを2次元データとして予測符号化を行うことで量子化パラメータのデータ量を大幅に削減し、高画質且つコンパクトにRAWデータを記録することが可能となる。
【0063】
[実施形態2]
以下、発明の第2の実施形態について説明する。本実施形態の撮像装置は、実施形態1の撮像装置と同様の構成とすることができる。但し、RAWデータ符号化・復号部103の量子化パラメータ生成部203における第1の量子化パラメータの生成単位と、各チャネル、各サブバンド個別の第2の量子化パラメータを生成するプロセスとが異なる。実施形態1と共通の構成の説明は本実施形態では省略するものとし、主に量子化パラメータ生成方法の相違に係る構成について説明する。
【0064】
図12(a)は、各チャネルをlev=3でサブバンド分割した場合の画質制御に関わるサブバンドデータの評価及び量子化パラメータを更新する単位を示しており、全チャネルのレベル3のサブバンド(3LL,3HL,3LH,3HH)の水平、垂直方向それぞれに(1×M)×1ライン(Mはそれぞれ整数)に対し、レベル2のサブバンド(2HL,2LH,2HH)の水平、垂直方向にそれぞれ(2×M)×1ライン、レベル1のサブバンド(1HL,1LH,1HH)の水平、垂直方向にそれぞれ(4×M)×1ラインのサブバンドデータに対応する共通の第1の量子化パラメータ(QpBs)を生成する。
【0065】
図6(a)に示した画質制御に関わるセグメントと比較すると、
図12(a)ではレベル1においてセグメントサイズが垂直方向に4分の1となっている。よって、仮にM=1とした場合の第1の量子化パラメータ(QpBs)とサブバンドデータとの関係は、
図12(b)のようになる。ここでは、レベル1においてセグメントサイズが4×1となっているため、4×4のセグメントに換算すると第1の量子化パラメータ(QpBs)が4つ存在することになる。これにより、実施形態1と比較して垂直方向により細かい量子化制御が可能となっている。尚、同様に水平方向に対しても細かくすることも可能である。
【0066】
画質制御に関わるサブバンドデータの評価方法は、実施形態1と実質的には同様であるが、本実施形態では低周波成分として評価する対象を3LLではなくサブバンド分割工程で中間的に生成される1LL相当のサブバンドデータとする。処理の流れは
図7に示したフローチャートと同様であるが、S701における判定対象は3LLではなく1LLの変換係数となる。
【0067】
本実施形態では、例えばM=1の4×4のセグメントに換算した場合、画質制御の対象となるライン単位の量子化パラメータ数がレベル1からレベル3で異なるため、実施形態1のようにレベル1からレベル3まで第1の量子化パラメータQpBsを共通に使用できない。そこで、本実施形態では、レベル1における4つのQpBsから、各レベルのQpLv1〜QpLv3を以下の式6に示す計算式に基づき生成し、これらを用いて各チャネル、各サブバンドに対応する個別の第2の量子化パラメータQpSbを生成する。
QpLv1[m]=QpBs[m]
QpLv2[n]=(QpBs[n×2]+QpBs[n×2+1])>>1 式6
QpLv3[n]=(QpBs[0]+QpBs[1]+QpBs[2]+QpBs[3])>>2
m :セグメント単位のレベル1のサブバンドに対するライン数(0〜3)
n :セグメント単位のレベル2のサブバンドに対するライン数(0〜1)
>>:右ビットシフト
【0068】
尚、式6に示すようにレベル2及びレベル3の量子化パラメータを対応するQpBsの平均値により算出しているが、最大値や最小値のQpBsを選択するようにしても良い。また、QpLv3をQpLv2の平均値、最大値又は最小値として算出しても良い。最終的な量子化に用いる各チャネル、各サブバンドの第2の量子化パラメータ(QpSb)は、前述の式5におけるQpBsをQpLv1〜QpLv3に置き換えて算出すれば良く、各量子化パラメータと量子化対象のサブバンドとの関係は、
図12(c)に示すようになる。
【0069】
次に、
図13を参照して、本実施形態における、記録される量子化パラメータのデータ量の削減度合いについて説明する。対比される従来例において、各レベルにつき1ライン単位に量子化パラメータを記録すると仮定すると、レベル3のサブバンドの量子化パラメータを1とした場合、レベル2はレベル3の2倍、レベル1はレベル3の4倍の量子化パラメータを記録することになる。よって、1セグメントについて記録することになる量子化パラメータのデータサイズは、(1×4サブバンド+2×3サブバンド+4×3サブバンド)×4チャネル分となり全体で88となる。一方、共通の量子化パラメータは、レベル1のサブバンド相当であるため4となり、記録対象とする量子化パラメータを共通の量子化パラメータとすることで量子化パラメータのサイズを22分の1に削減することできる。
【0070】
このように、本実施形態のように垂直方向により細かい量子化制御を行なった場合であっても、従来例と比較して十分なデータ削減効果が期待できるものである。また、実施形態1と同様に、本実施形態でも柔軟な量子化制御を実現しつつ、共通の量子化パラメータを2次元データとして予測符号化を行うことで量子化パラメータのデータ量を大幅に削減し、高画質且つコンパクトにRAWデータを記録することが可能となる。
【0071】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。