図1は、実施例1に係る画像符号化装置のハードウェア構成を示すブロック図である。
図1において、画像符号化装置100は、CPU101、光学部102、撮像部103、色分離部104、プレーン変換部105、ウェーブレット変換部106、量子化部107、及びエントロピー符号化部108を備える。さらに、画像符号化装置100は、メモリI/F109、メモリ110、記録処理部111、記録媒体112を備える。
CPU101は、CPU101が実行する制御プログラムを格納するメモリを持ち、画像符号化装置100の全体の処理を制御する。また、CPU101は、メモリI/F109にアクセスし、メモリ110に格納された符号化ストリーム(圧縮RAWデータ)を並べ替えるプログラムも持つ。
光学部102は、光学レンズ、絞り、フォーカス制御及びレンズ駆動部を含む光学ズームが可能なレンズ光学系で構成されており、レンズ光学系を通して取得した光情報を、撮像部103に送る。
撮像部103は、光学部102から送られた光情報を電気信号に変換する撮像素子を含み、CPU101から撮影命令を受けて撮像素子により得られた電気信号をデジタル信号へ変換してRAW画像を生成する。撮像部103はその生成されたRAW画像をメモリI/F109を介してメモリ110に記憶させると共に、色分離部104に読み出し許可信号を送る。色分離部104は撮像部103から受け取った読み出し許可信号を合図として動作を開始する。尚、撮像部103の撮像素子は、光情報を電気信号に変換する素子であればよく、例えば、CCDイメージセンサーやCMOSセンサー等が例示される。
色分離部104は、撮像部103からの読み出し許可信号を受けてメモリ110からRAW画像を読み出し、そのRAW画像からR,B,G1,G2成分のプレーン画像を生成する色プレーン分離を行う。色分離部104はその生成された各プレーン画像をプレーン変換部105に送る。
プレーン変換部105は、色分離部104から送られた各プレーン画像に対してプレーン変換を実施し、輝度(Y)成分のプレーン画像、および色差(C1,C2,C3)成分のプレーン画像を生成する。プレーン変換部105は、その生成された各プレーン画像をウェーブレット変換部106に送る。尚、プレーン変換部105は、複数の計算式を実装しておき、CPU101で実際に使用する計算式を選択してもよい。
ウェーブレット変換部106は、プレーン変換部105から送られた各プレーン画像に対し階層的な周波数分解を行い、複数のサブバンドを生成するウェーブレット変換を行う。ウェーブレット変換部106は、その生成された各サブバンドをウェーブレット変換部106に送る。尚、ウェーブレット変換部106によるウェーブレット変換の回数(以下、「ウェーブレット回数」という。)は、CPU101で設定される。
量子化部107は、ウェーブレット変換部106より送られた各サブバンドに対して、所定の量子化ステップサイズに基づいて夫々を量子化する。量子化部107は、その量子化された各サブバンドをエントロピー符号化部108に送る。ここで、量子化部107で用いられる量子化ステップサイズは、CPU101より与えられた1つのベースとなる量子化ステップサイズから各サブバンドで異なる重みづけをしつつ設定してもよい。また、CPU101により各サブバンドで個別に量子化ステップサイズを設定してもよい。
エントロピー符号化部108は、量子化部107から送られた量子化された各サブバンドに対してハフマン符号や算術符号等を用いたエントロピー符号化を行って符号化ストリームを生成する。また、エントロピー符号化部108は、符号化ストリームをメモリI/F109を介してメモリ110に記憶する。
メモリI/F109は、CPU101、撮像部103、色分離部104、エントロピー符号化部108、記録処理部111等の画像符号化装置100の各処理部からのメモリ・アクセス要求を調停し、メモリ110に対する読み出し・書き込み制御を行う。
メモリ110は、CPU101、撮像部103、エントロピー符号化部108等の画像符号化装置100の各処理部から出力される各種データを格納するための例えば揮発性メモリで構成される記憶領域である。
記録処理部111は、CPU101からの記録命令に従い、メモリ110へ格納された符号化ストリーム等の各種データを記録媒体112へ記録する。またCPU101からの読出命令に従い、その各種データを読み出す。
記録媒体112は、例えば不揮発性メモリで構成される記録メディアである。
次に、RAW画像を実施例1に係る画像記録フォーマットに符号化して圧縮RAW画像を生成する符号化処理200について、図2を参照して説明する。
図2に示すように、符号化処理200は、色分離処理201、プレーン変換処理202、ウェーブレット変換処理203、量子化処理204、エントロピー符号化処理205で構成されている。
色分離処理201は、色分離部104により実行される処理であり、図9に示すように、入力されたRAW画像からR,B,G1,G2成分の4つのプレーン画像を生成する。
プレーン変換処理202は、プレーン変換部105により実行される処理である。具体的には、色分離処理201によって生成された各プレーン画像に対して、プレーン変換を実施し、輝度(Y)成分のプレーン画像、および色差(C1,C2,C3)成分の4つのプレーン画像を生成する。ここで、プレーン変換は、例えば以下の数式(1)に基づいて生成される。また数式1のC3成分のように色差成分の内の1つをG1,G2成分の差分成分としている計算式であるのならば、以下の数式(2)に則った行列を用いた計算式を複数用意してもよい。
ウェーブレット変換処理203は、ウェーブレット変換部106により実行される処理であり、プレーン変換処理202によって生成された輝度色差成分の各プレーン画像のウェーブレット変換を実施し、図3で示すようなサブバンドを生成する。
図3は、ウェーブレット変換処理203によるウェーブレット回数が2回である場合に生成されたサブバンドを示す図である。
プレーン変換処理202によって生成された輝度色差成分の各プレーン画像に対するウェーブレット回数が1回の場合、1LL、1HL、1LH、1HHの4つのサブバンドが各プレーン画像から生成される。ここで、Lが低域、Hが高域を表す。L、Hの前の数字が分解レベルを表す。例えば、1HLは、水平方向が高域成分で、垂直方向が低域成分である分解レベル(ウェーブレット回数)=1のサブバンド画像を表す。なお、ウェーブレット回数に制限はない。また、2回目以降のウェーブレット変換は、直前のウェーブレット変換で得られたサブバンドLLに対して再帰的に行うことになる。それ故、予定した回数のウェーブレット変換を行った際のサブバンドLLは1つしか存在しない。図3は、ウェーブレット回数が2回である場合を示しているので、1HL、1LH、1HH、2HL、2LH、2HH、2LLの7つのサブバンドが生成される。 図2に戻り、量子化処理204は、量子化部107により実行される処理であり、ウェーブレット変換処理203で生成された各サブバンドを所定の量子化ステップサイズに基づいて量子化する。ここで、量子化処理204で用いられる量子化ステップサイズは、図4で示すように、予め設定されたベース量子化ステップサイズとサブバンド毎の重み係数から算出する。以下、図4を用いて、ウェーブレット回数が1回であって、ベース量子化ステップサイズが4に設定されている場合を例にして、Yプレーン画像から生成されたサブバンド(以下、「Y成分のサブバンド」という。)の量子化を説明する。
量子化処理204において、Y成分の1LL、1HL,1LH,1HHの4つのサブバンドに設定された重み係数1,1.5,1.5.2にベース量子化ステップサイズである4が夫々乗算される。これにより、Y成分の1LL、1HL,1LH,1HHの4つのサブバンドの量子化ステップサイズは、4,6,6,8と算出される。尚、本実施例では、量子化処理204で用いられる量子化ステップサイズは、各サブバンドで同一の値である4が設定されていたが、各サブバンドで個別にその値が設定されていてもよい。
図2に戻り、エントロピー符号化処理205は、エントロピー符号化部108で実行される処理であり、量子化処理204で量子化された各サブバンドに対してハフマン符号や算術符号等を用いたエントロピー符号化を行う。これにより、各サブバンドが圧縮符号化され、複数の圧縮サブバンドが生成される。
ここで、前述した圧縮RAW画像は、エントロピー符号化処理205で生成した複数の圧縮サブバンドで構成されているものとする。
続いて、図2の符号化処理200により生成された複数の圧縮サブバンドを用いてRAW画像の縮小表示を行う方法を図5を参照して説明する。
図5は、水平8192画素、垂直4320ラインのサイズを持つRAW画像の階層的なサイズの画像表示(以下、「階層表示」という。)を示す図である。尚、図5の例は、ウェーブレット回数を1回としている。
図5は、3階層(階層1〜3)の表示サイズの画像500a〜cと、その画像を生成するために使用される輝度色差成分のサブバンドを示す。
階層3における画像500aは、RAW画像そのままのサイズである水平8192画素、垂直4320ラインの表示サイズの画像であり、図5ではその右に、画像500aを生成するために使用される輝度色差成分のサブバンドを示す。
階層2における画像500bは、RAW画像に対して水平方向に2分の1、垂直方向に2分の1に縮小した水平4096画素、垂直2160ラインの表示サイズの画像である。図5ではその右に、画像500bを生成するために使用される輝度色差成分のサブバンドを示す。
階層1における画像500cは、RAW画像に対して水平方向に4分の1、垂直方向に4分の1に縮小した水平2048画素、垂直1080ラインの表示サイズの画像である。図5ではその右に、画像500cを生成するために使用される輝度色差成分のサブバンドを示す。
画像500aのような、水平8192画素、垂直4320ラインのRAW画像そのままの表示サイズの画像は、圧縮RAW画像をデコードし、デコードしたRAW画像の現像処理を行なって生成される。ここで、現像処理とはRAW画像に対してデベイヤー処理(デモザイク処理)を施し、輝度と色差から成る信号に変換、各信号に含まれるノイズを除去、光学的な歪を補正し、画像を適正化するなどの処理のことを指す。尚、このようなRAW画像そのままの表示サイズの画像500aの生成には、RAW画像から生成された全ての圧縮サブバンドのデコードが必要となる。
画像500bのような、水平4096画素、垂直2160ラインの表示サイズの縮小画像は、後述するようにRAW画像の現像処理は行わず、RAW画像のY成分、および2つの色差成分のプレーン画像を多重化して生成する。これにより、1画素毎に3成分の輝度色差成分を持った画像として画像500bが生成される。ここで、本実施例において、CPU101は、C1〜C3の3つの色差成分のうち上記2つの縮小画像の表示を行うための色差成分(表示用色差成分)としてC1,C2成分を選択している(選択手段)。尚、このような水平4096画素、垂直2160ラインの表示サイズの画像500bの生成には、RAW画像から生成されたY、C1、C2成分の全ての圧縮サブバンドのデコードが必要となる。尚、CPU101が選択する表示用色差成分は、C1〜C3の3つの色差成分のうちの2つであればこれに限定されない。
画像500cのような、水平2048画素、垂直1080ラインの表示サイズの縮小画像は、画像500bと同様にRAW画像の現像処理は行わず、RAW画像から生成されたY、C1、C2成分1LLのサブバンドを多重化して生成する。これにより、1画素毎にY、C1、C2の3成分を持った1LLのサイズの画像として画像500cが生成される。尚、このような水平2048画素、垂直1080ラインの表示サイズの画像500cの生成には、RAW画像から生成されたY、C1、C2成分の1LLの圧縮サブバンドのデコードが必要となる。
次に、Y、C1、C2成分のプレーン画像の多重化による縮小画像の生成方法を、図6を用いて説明する。すなわち、図6では、生成される縮小画像が水平4096画素、垂直2160ラインの表示サイズの画像500bである場合を例示する。尚、ここでの説明ではC1、C2成分のプレーン画像は上記数式(1)、または数式(2)に基づいてプレーン変換される。すなわち、C1成分は、青系統の色の色相と彩度を表わすCb成分に対応する成分であり、C2成分は、赤系統の色の色相と彩度を表わすCr成分に対応する成分である。
上記数式(1),(2)で示すように、本実施例におけるプレーン変換で用いる計算式は、RAW画像を構成する色成分の内、G1、G2成分の平均、R成分、およびB成分を用いて輝度(Y)成分と2つの色差(C1、C2)成分を生成する。また、G1、G2成分の差分を3つめの色差(C3)成分として生成する。
また輝度成分、色差成分の夫々のプレーン画像の画素数は等しいため、プレーン画像のサイズにおいては、同画素位置に各プレーン画像の輝度成分と色差成分が配置されるとみなすことができる。
そのため、プレーン画像の同画素位置の輝度成分、およびG1、G2成分の差分であるC3成分以外の色差成分(C1,C2成分)を用いる。これにより、画像500bの各画素位置に対してRGBの3成分を揃えることができ、そのまま表示に用いることが可能となる。
図6の例では、RAW画像を色分離、プレーン変換により、Y、C1、C2、C3の各プレーン画像が生成される。さらに、図6では不図示であるが、その後、1回のウェーブレット変換を行った場合Y、C1、C2、C3の各プレーン画像から夫々1LL、1HL、1LH、1HHのサブバンドが生成される。
縮小画像生成の際には、まず、その生成されたサブバンドが合成されてY、C1、C2成分のプレーン画像に戻される。その後、そのY、C1、C2成分のプレーン画像を多重化して、1画素にY成分、C1(≒Cb)成分、C2(≒Cr)成分の3成分を持ったプレーン画像と同じ解像度を持つ画像を生成する。その後、その生成された画像のY、C1、C2の3成分をR、G、Bの3成分に変換することで、1画素にR成分、G成分、B成分を持った画像500bを生成する。この画像500bを表示することにより、RAW画像の階層2の表示サイズでの縮小表示をすることができる。
尚、本実施例ではY成分とC1,C2の2つの色差成分の3つの成分を持った縮小画像を生成しているが、これに限定されない。例えば、全ての成分、すなわち、Y成分とC1〜C3の3つの色差成分を持った縮小画像を生成してもよい。例えば、Y、C1、C2、C3成分の1LLのサブバンドから縮小サイズのRAW画像を生成し、その縮小サイズのRAW画像を現像することで、縮小画像を生成してもよい。また、上述の通り、画像500aの生成の際にY、C1,C2、C3成分の圧縮RAW画像をデコードしてRAW画像に戻す処理が入るが、Y、C1,C2、C3成分の1LLサイズの圧縮RAW画像に対して同様の処理を行って、縮小画像を生成してもよい。
続いて、実施例1に係る画像記録フォーマットについて図7A,Bを用いて説明する。
図7Aに示す画像記録フォーマット700は、情報管理部701と、圧縮RAW部702で構成される。
情報管理部701は、メインヘッダ703、解像度ヘッダ704、サブバンドヘッダ705で構成される。
圧縮RAW部702は、RAW画像を圧縮して生成した各サブバンドの圧縮データ、すなわち、圧縮サブバンドを、後述するサブバンドヘッダ705と同様にRAW画像の階層表示に基づいた階層のグループ毎にまとめて格納する。
メインヘッダ703は、撮影したRAW画像の画像サイズや画素ビット数、ウェーブレット回数、およびプレーン変換に用いる数式等の情報を格納している。
解像度ヘッダ704は、RAW画像を階層表示する際に用いられるパラメタ、すなわち、圧縮RAW画像を復号するための復号情報を格納する。具体的には、復号画像(縮小画像)の表示サイズ、ウェーブレット回数、縮小画像を生成するのに使用するサブバンド数、読み出しデータサイズ、復号画像がRAW画像であるか否かのフラグ(図7Bの表の「現像」が該当)を格納する。ここで、読み出しデータサイズとは、縮小画像を生成する際に必要な圧縮サブバンドのデータサイズを指す。尚、解像度ヘッダ704がRAW画像であるか否かのフラグを持つのは、縮小画像を表示する際にこのフラグを参照して、デコード後に現像処理をするか否か判断するためである。すなわち、解像度ヘッダ704は、図5に示す各表示階層に関する情報をパラメタとして格納する。
ここで例として、解像度ヘッダ704で格納されるパラメタのうち画像500bの表示に使用される階層2の情報を図7Bの表を用いて説明する。
階層2の情報は、表示サイズが4096画素×2160ライン、ウェーブレット回数が1回、使用サブバンド数が12となっている。また、読み出しデータサイズが圧縮RAW部702の階層1,2のグループでまとめられた圧縮サブバンドの合計サイズ、また表示の際に現像処理は不要となっている。尚、階層2の画像500bは、Y、C1、C2成分の夫々の1LL、1HL、1LH、1HHの4つのサブバンドを使用して生成されるので使用サブバンド数は12となる。また、上記12個のサブバンドのうち、Y、C1、C2成分の夫々の1LLのサブバンドは圧縮RAW部702で階層1のグループの圧縮サブバンドとしてまとめられる。一方、残りのサブバンドは圧縮RAW部702で階層2のグループの圧縮サブバンドとしてまとめられる。よって、読み出しデータサイズは圧縮RAW部702で階層1,2のグループにまとめられる圧縮サブバンドのデータサイズの総和となる。
すなわち、ウェーブレット回数がN回の場合、階層n(1≦n≦N+1)の情報に含まれる読み出しデータサイズは、階層1〜nまでにまとめられる圧縮サブバンドのデータサイズの総和となる。
図7Aに戻り、サブバンドヘッダ705は、圧縮RAW部702で保持される圧縮サブバンド毎のパラメタ(圧縮サブバンド情報)を格納する。このパラメタは、圧縮サブバンド毎のデータサイズや量子化パラメタ、ウェーブレット分解におけるどのサブバンドであるのか(例えば、図3に示す2HLのサブバンドである等)、またY、C1、C2、C成分のいずれであるかの情報を含む。
圧縮RAW部702における各圧縮サブバンドの並びは、ウェーブレット回数がN回の場合、図7Aに示すようになる。すなわち、階層1のグループにはY、C1、C2成分の順に、NLLの圧縮サブバンドが並べられ、階層2のグループには、Y、C1、C2成分の順に、NHL、NLH、NHHの圧縮サブバンド群が並べられる。階層3のグループには、Y、C1、C2成分の順に(N−1)HL、(N−1)LH、(N−1)HHの圧縮サブバンド群が並べられる。また、階層4のグループには、Y、C1、C2成分の順に(N−2)HL、(N−2)LH、(N−2)HHの圧縮サブバンド群が並べられる。同様の方法で階層5〜N−1のグループにおいても複数の圧縮サブバンドが並べられる。階層NのグループにはY、C1、C2成分の順に2HL、2LH、2HHの圧縮サブバンド群が並べられる。また、階層N+1のグループにはY、C1、C2成分の順に1HL、1LH、1HHの圧縮サブバンド群が並べられ、最後の階層N+2のグループには縮小表示には使用されないC3の全圧縮サブバンドが並べられる。サブバンドヘッダ705に保持される圧縮サブバンドの夫々に関するパラメタも、かかる圧縮RAW部702における各圧縮サブバンドの並びと同様に階層のグループ毎にまとめられる。
以上のように、圧縮RAW部702では、まず、縮小表示で用いる成分、すなわちY成分及び表示用色差成分(C1、C2成分)の圧縮サブバンドのグループが縮小表示の階層1〜N+1の順で階層のグループ毎にまとめて並べられる。すなわち、Y、C1、C2成分の圧縮サブバンドのグループが低階層のグループから高階層のグループの順で配置される。またこの際、各グループ内において、Y成分の圧縮サブバンドが先に配置される。その後、縮小表示で用いない色差成分(C3成分)の圧縮サブバンドが縮小表示の階層のグループとは異なるグループ(RAW再構成用データグループ)にまとめて並べられる。
図5の縮小表示を例とすると、圧縮RAW部702において、階層1のグループにY、C1、C2成分の順に1LLの圧縮サブバンドが配置され、階層2のグループにY、C1、C2成分の順に1HL、1LH、1HHの圧縮サブバンド群が配置される。また、最後の階層3のグループにC3の全サブバンド夫々が配置される。
尚、解像度ヘッダ704で読み出しデータサイズとして格納される情報は、縮小画像を生成する際に圧縮RAW部702から読み取る圧縮サブバンドのデータサイズの総和でなくてもよい。例えば、その縮小画像の表示階層に対応する圧縮RAW部702の階層のグループにまとめられた圧縮サブバンドのデータサイズの総和としてもよい。また、この場合、この情報を表示に必要な圧縮サブバンドの読み出しの際に使用してもよい。
図7Aに示す解像度ヘッダ704を例に示すとすれば、階層1の読み出しデータサイズは、圧縮RAW部702の階層1のグループにまとめられているY、C1、C2成分のNLLの圧縮サブバンドのデータサイズの総和となる。また、階層2の読み出しデータサイズは、圧縮RAW部702の階層2のグループにまとめられるY,C1,C2成分のNHL/NLH/NHHの圧縮サブバンド群のデータサイズの総和となる。階層3の読み出しデータサイズは、圧縮RAW部702の階層3のグループにまとめられるY,C1,C2成分の夫々の(N−1)HL/(N−1)LH/(N−1)HHの圧縮サブバンド群のデータサイズの総和となる。階層4の読み出しデータサイズは、圧縮RAW部702の階層4のグループにまとめられるY,C1,C2成分の夫々の(N−2)HL/(N−2)LH/(N−2)HHの圧縮サブバンド群のデータサイズの総和となる。同様の方法で階層5〜N−1の読み出しデータサイズも階層5〜N−1のグループの圧縮サブバンド群のデータサイズの総和となる。また、階層Nの読み出しデータサイズは、圧縮RAW部702の階層NのグループにまとめられるY,C1,C2成分の夫々の2HL/2LH/2HHの圧縮サブバンド群のデータサイズの総和となる。同様に、階層N+1の読み出しデータサイズは、圧縮RAW部702の階層N+1のグループにまとめられるY,C1,C2成分の夫々の1HL/1LH/1HHの圧縮サブバンド群のデータサイズの総和となる。
以上、実施例1によれば、RAW画像を図7Aに示す画像記録フォーマット700に従って圧縮RAW画像に符号化して記録ファイルを生成し、生成した記録ファイルを記録媒体112に格納する。これにより、記録ファイルを記録媒体112から読み出して画像符号化装置100で縮小画像を再生する場合に必要な圧縮サブバンドを効率的に取り出すことができる。また、外部の表示機器に転送してストリーミング再生する場合においては、必要な圧縮サブバンドを効率的に取り出してスマートフォンなどの表示機器に転送することができる。ここで、記録ファイルとは、画像記録フォーマット700に従い、圧縮RAW画像を構成する複数の圧縮サブバンド、圧縮RAW画像を復号するための復号情報などを格納したデータのことを指す。
図8を参照して、本実施例の画像記録フォーマット700及び公知の2つの画像記録フォーマット毎の、縮小画像の表示に必要な記録ファイルからの圧縮サブバンドの読み出し回数について説明する。
図8は、本実施例の画像記録フォーマット及び公知の2つの画像記録フォーマット毎の、記録ファイルに圧縮サブバンドを記録する際の並べ方を表す。
記録ファイル800aは、解像度⊃プレーン⊃サブバンドの包含関係となる画像記録フォーマットで並べられた圧縮サブバンドを有する。解像度⊃プレーン⊃サブバンドの包含関係は、JPEG2000などの公知の画像記録フォーマットで規定されている。
記録ファイル800bは、プレーン⊃解像度⊃サブバンドの包含関係となる画像記録フォーマットで並べられた圧縮サブバンドを有する。プレーン⊃解像度⊃サブバンドの包含関係は、記録ファイル800aと同様に、JPEG2000などの公知の画像記録フォーマットで規定されている。
記録ファイル800cは、図7Aの画像記録フォーマット700で並べられた圧縮サブバンドを有する。
図5に示す水平4096画素、垂直2160ラインの表示サイズの画像500bを表示する場合を例とすると、図8に示す点線で示す部分の圧縮サブバンドを記録ファイル800a〜cで読み出す必要がある。
具体的には、記録ファイル800aでは、Y,C1、C2成分の1LLのサブバンド、およびY、C1、C2成分の1HL、1LH、1HHのサブバンド群で2回の読み出しが必要となる。また、記録ファイル800bでは、Y成分の1LL、1HL、1LH、1HHのサブバンド群、C1成分の1LL、1HL、1LH、1HHのサブバンド群、C2成分の1LL、1HL、1LH、1HHのサブバンド群で3回の読み出しが必要となる。このように、記録ファイル800a,800bでは複数回、圧縮サブバンドの読み出し処理が必要となる。これに対して、記録ファイル800cではY、C1、C2成分の1LL、1HL、1LH、1HHのサブバンド群がひとまとめとなっている。このため、CPU101(読出手段)は、画像500bの表示に必要な圧縮サブバンドを記録媒体112に記録された記録ファイル800cから読み出す際、1回の読み出し処理で済む。
さらに、外部の表示機器で圧縮RAW画像を動画として再生するストリーム再生を行う場合は、上記の読み出し処理が動画に含まれる圧縮RAW画像の枚数だけ発生する。
すなわち、1つの記録ファイルからの読み出し処理の回数が多い程、画像符号化装置100のハードウェア、特にCPU101に負荷がかかり、画像表示のための処理を圧迫し、縮小画像の表示やストリーム再生の際の遅延の原因となってしまう。このため、1つの記録ファイルからの読み出し処理の回数は少ないほうがよい。
そこで、本実施例では、記録ファイル800cのように、画像記録フォーマット700の圧縮RAW部702の並べ方で圧縮サブバンドを並べる。これにより、縮小画像の表示の際に、記録媒体112に保存された記録ファイルから表示に必要な圧縮サブバンドを読み出す読み出し処理の回数を減らすことができる。また、上記ストリーミング再生で必要な圧縮サブバンドを外部の表示機器に送る際に、必要な圧縮サブバンドを記録媒体112に保存された記録ファイルから効率的に読み出すことができる。
以上、実施例1に係る画像記録フォーマット700を記録ファイルに適用することで、記録ファイルからの読み出し処理に起因する表示遅延を軽減することができる。
続いて、実施例1に係る画像符号化処理を図10のフローチャートを参照して説明する。
まず始めに、CPU101が撮像部103に撮像開始指示を行う(ステップS1001)。
その後、撮像部103がRAW画像を取得し、メモリ110に一時的に記憶する(ステップS1002)。
続いて、色分離部104(変換手段)がメモリ110に記憶されたRAW画像を読み出し、その読み出したRAW画像から、R、B、G1、G2の4つの成分のプレーン画像を生成する色プレーン分離を行う(ステップS1003)。
その後、プレーン変換部105(変換手段)により、R、B、G1、G2成分のプレーン画像に対してプレーン変換を実施し、Y、C1、C2、C3の4つの成分のプレーン画像を生成する(ステップS1004)。
続いて、ウェーブレット変換部106(第1の生成手段)が、Y、C1、C2、C3成分のプレーン画像から複数のサブバンドを生成するウェーブレット変換を行う(ステップS1005)。この際、生成された複数のサブバンドが、ウェーブレット分解におけるどのサブバンドであるか、またY、C1、C2、C成分のいずれであるかをメモリ110に一時記憶させる。
その後、量子化部107が各サブバンドを量子化する(ステップS1006)。この際、各サブバンドの量子化パラメタをメモリ110に一時記憶させる。
続いて、エントロピー符号化部108(第2の生成手段)が量子化後の各サブバンドを圧縮して符号化ストリームを生成するエントロピー符号化を行った後、その符号化ストリームをメモリ110に一時記憶させる(ステップS1007)。この際、圧縮サブバンド毎のデータサイズもメモリ110に一時記憶させる。
その後、CPU101(並替手段)が、メモリ110に一時記憶された符号化ストリームに含まれる各サブバンドの符号化データ(圧縮サブバンド)を図7Aに示す順に並べ替える(ステップS1008)。
続いて、CPU101が、図7Aの画像記録フォーマット700の情報管理部701に則ったヘッダの情報の生成を行う(ステップS1009)。具体的には、CPU101(並替手段)は、メモリ110に一時記憶されている圧縮サブバンドの夫々に関する情報についても図7Aに示す順に並べ替えて、ヘッダの情報を生成する。
最後に、CPU101(第4の生成手段)は、記録ファイルを生成し記録媒体112に記録する(ステップS1010)。すなわち、記録媒体112上に、ステップS1008で並べ替えられた符号化データが圧縮RAW部702に対応する記録ファイルの圧縮RAW領域に書き込まれる。また、ステップS1009で生成されたヘッダの情報が情報管理部701に対応する記録ファイルの情報管理領域に書き込まれる。その後、本処理を終了する。
以上、実施例1に係る画像記録フォーマット700を記録ファイルに適用することで、縮小画像表示の際に、記録媒体112に保存された記録ファイルから表示に必要な圧縮サブバンドを1回の読み出し処理で読み出すことが可能となる。また、実施例1に係る画像記録フォーマット700を記録ファイルに適用することで、ストリーミング再生の際に、必要な圧縮サブバンドを、必要最低限の転送回数で表示機器に送ることが可能となる。
このように、実施例1に係る画像記録フォーマット700を記録ファイルに適用することで、記録ファイルからの読み出し処理やストリーミングによる転送処理による負荷を低減でき、ひいては縮小表示やストリーミング再生を高速に行うことができる。
次に、実施例2に係る画像記録フォーマットについて説明する。
実施例2に係る画像記録フォーマットは、縮小画像生成時に色差成分の解像度を輝度成分の解像度以下とすることを可能にする。これにより、実施例1に係る画像記録フォーマット700を使用する場合よりも、圧縮サブバンドの読み出し量をさらに削減することが期待できる。
実施例1に係る画像記録フォーマット700は、階層2の縮小画像(画像500b)の生成時にY、C1(≒Cb)、C2(≒Cr)の3成分のプレーン画像を多重化する。その後、1画素にY成分、C1成分、C2成分の3成分を持ったYCbCr444(YUV444)の形式の画像を生成する。
一方、実施例2に係る画像記録フォーマットは、階層2の縮小画像の生成に使用されるC1、C2成分のプレーン画像の解像度をYプレーン画像の解像度に対し、水平方向、あるいは水平/垂直方向で半分となるように間引き(以下「色差間引き」という。)する。これにより、YUV422、YUV420の形式の画像生成も可能とする。尚、本実施例では、C1、C2成分のプレーン画像の解像度をYプレーン画像の解像度に対し水平方向で半分となる色差間引きを行っているが、水平又は垂直のいずれか一方の方向の色差間引きが行わればよい。
階層2の縮小画像の生成に際し、Yプレーン画像に対し、C1、C2プレーン画像の解像度を落とした場合について図11を用いて説明する。
図11は、水平8192画素、垂直4320ラインのサイズを持つRAW画像の階層表示を示す図である。尚、図11の例は、ウェーブレット回数を1回としている。
図11は、3階層(階層1〜3)の表示サイズの画像1100a〜cと、その画像を生成するために使用される輝度色差成分のサブバンドを示す。尚、階層2の画像1100bを生成するために使用される輝度色差成分のサブバンドは、図11に示すように、画像1100bの生成時に用いる色差成分の圧縮サブバンドの数を定義するサブ階層1〜3により構成される。
階層3における画像1100aは、RAW画像そのままのサイズである水平8192画素、垂直4320ラインの表示サイズの画像であり、図11ではその右に、画像1100aを生成するために使用される輝度色差成分のサブバンドを示す。
階層2における画像1100bは、RAW画像に対して水平方向に2分の1、垂直方向に2分の1に縮小した水平4096画素、垂直2160ラインの表示サイズの画像である。図11ではその右に、画像1100bを生成するために使用される輝度色差成分のサブバンドを示す。具体的には、サブバンド群1101は、サブ階層1に対応する3つの成分のサブバンドを示し、サブバンド群1102は、サブ階層2に対応する3つ成分のサブバンドを示し、サブバンド群1103は、サブ階層3に対応する3つ成分のサブバンドを示す。
階層1における画像1100cは、RAW画像に対して水平方向に4分の1、垂直方向に4分の1に縮小した水平2048画素、垂直1080ラインの表示サイズの画像である。図11ではその右に、画像1100cを生成するために使用される輝度色差成分のサブバンドを示す。
画像1100aのような、水平8192画素、垂直4320ラインの表示サイズの画像の生成は、実施例1と同様の方法で行われる。
画像1100bのような、水平4096画素、垂直2160ラインの表示サイズの縮小画像は、RAW画像の現像処理は行わず、Y、C1、C2成分のプレーン画像を多重化して生成する。これにより、1画素毎にY、C1、C2の3成分の輝度色差成分を持った画像として画像1100bが生成される。ここで、本実施例では、サブ階層1〜3で夫々異なるサブバンド群1101〜1103を用いて画像1100bを生成する。
具体的には、サブ階層1については、サブバンド群1101に示すように、Y成分の1LL、1HL、1LH、1HHのサブバンド、およびC1、C2成分の1LLのサブバンドを用いて、YUV420形式の縮小画像を画像1100bとして生成する。
また、サブ階層2については、サブバンド群1102に示すように、Y成分の1LL、1HL、1LH、1HHのサブバンド、およびC1、C2成分の1LL、1LHのサブバンドを用いて、YUV422形式の縮小画像を画像1100bとして生成する。
また、サブ階層3については、サブバンド群1103に示すように、Y、C1、C2成分の1LL、1HL、1LH、1HHのサブバンドを用いて、YUV444形式の縮小画像を画像1100bとして生成する。
画像1100cのような、水平2048画素、垂直1080ラインの表示サイズの画像の表示は、実施例1と同様の方法で行われる。
ここで、図11に示す階層2の各サブ階層1〜3における縮小画像の生成について、図12A,Bを用いて説明する。
図11に示す階層2のサブ階層1のサブバンド群1101は、Y成分のプレーン画像の画素数に対して、C1、C2成分のプレーン画像の画素数が水平/垂直方向で2分の1に間引かれている。そこで、図12A(a)に示すように、サブ階層1のサブバンド群1101からYUV420形式の縮小画像のRGBの3成分を生成する際に、C1、C2成分のプレーン画像を水平・垂直方向ともに2倍のアップサンプリング(解像度拡張)をする必要がある。
一方、図11に示す階層2のサブ階層2のサブバンド群1102は、Y成分のプレーン画像の画素数に対して、C1、C2成分のプレーン画像の画素数が水平方向で2分の1に間引かれている。そこで、図12A(b)に示すように、サブ階層2のサブバンド群1102からYUV422形式の縮小画像におけるRGBの3成分を生成する際に、C1、C2成分のプレーン画像を水平方向で2倍のアップサンプリングをする必要がある。
尚、サブバンド群1102の間引く方向は水平方向ではなく、垂直方向であってもよい。但しその場合は、アップサンプリングはC1、C2成分のサブバンドを垂直方向で行う必要がある。
次に、図12A(a),(b)で、アップサンプリングの際に、隣接画素をそのままコピーしている例を示す。また、図12A(a),(b)では、Y成分の各画素を(水平座標、垂直座標)と表記し、C1、C2成分の各画素を[水平座標、垂直座標]と表記している。
図12A(a)では、アップサンプリングによって、例えば[1,0]の画素を右、下、右下の方向にコピーしている。一方、図12A(b)では、アップサンプリングによって、例えば[1,0]の画素を右方向にコピーしている。
また、図11のサブバンド群1101,1102を用いてYUV422形式の縮小画像およびYUV420形式の縮小画像が生成できれば、アップサンプリング方法は図12A(a),(b)に示す方法に限定されない。例えば、図12B(a),(b)で示すように、ウェーブレット合成の段階でC1、C2成分のプレーン画像の解像度をアップサンプリングするようにしてもよい。
すなわち、サブバンド群1101については、図12B(a)で示すように、読み出さないサブバンドの係数、具体的には、C1、C2成分のプレーン画像の1HL、1LH、1HHのサブバンドの夫々の係数が全て0で構成されているものとみなす。この状態でウェーブレット合成を行う。
同様に、サブバンド群1102についても、図12B(b)で示すように、読み出さないサブバンドの係数、具体的にはC1、C2成分のプレーン画像の1HL、1HHのサブバンド夫々の係数が全て0で構成されているものとみなす。この状態でウェーブレット合成を行う。
ここで、5/3タップのフィルタによるウェーブレット変換を例として、図12B(a),(b)で示した、読み出さないサブバンドの係数が全て0で構成されるものとみなした場合の計算を説明する。
水平方向、あるいは垂直方向に対するウェーブレット変換は次のフィルタ計算となる。
sはウェーブレット変換の対象となる信号、ここではプレーン画像の画素値を表す。
また、水平方向、あるいは垂直方向に対するウェーブレット合成は次の計算となる。
ここで、C1/C2の1HLと1HHのサブバンドをウェーブレット変換係数値がすべて0であるものとする、つまり水平方向におけるウェーブレット合成の計算におけるHが0である場合、
となる。
計算式より、C1、C2成分のプレーン画像のサブバンドは水平方向において、奇数位置の画素値は両隣の偶数位置の画素値の平均である。つまり、読み出さないサブバンドの係数が全て0で構成されるものとみなしてウェーブレット合成することで、C1、C2成分のプレーン画像の解像度をY成分のプレーン画像相当にするためのアップサンプリング処理をするのと同等の処理が可能となる。
続いて、実施例2に係る画像記録フォーマット1300について図13A,Bを用いて説明する。尚、実施例2に係る画像記録フォーマットの構成において、実施例1に係る画像記録フォーマットと同様のものについては、同じ符号を付した上で説明を省略する。
図13Aに示す画像記録フォーマット1300は、情報管理部1301と、圧縮RAW部1302で構成される。
情報管理部1301は、メインヘッダ1303、解像度ヘッダ1304、サブバンドヘッダ1305で構成される。
圧縮RAW部1302は、RAW画像を圧縮して生成した各サブバンドの圧縮データ、すなわち、圧縮サブバンドを後述するサブバンドヘッダ1305と同様にRAW画像の階層表示に基づいた階層のグループ毎にまとめて格納する。
メインヘッダ1303は、実施例1の画像記録フォーマット700のメインヘッダ703と同様に、撮影したRAW画像の画像サイズや画素ビット数、ウェーブレット回数、およびプレーン変換に用いる数式等の情報を格納している。
解像度ヘッダ1304は、RAW画像を階層表示する際に用いられるパラメタを格納する。具体的には、復号画像の表示サイズ、輝度に対して色差が間引かれているか否かのフラグ(図13Bの表の「色差間引き」が該当)、ウェーブレット回数、使用するサブバンド数、読み出しデータサイズ、復号画像がRAW画像であるか否かのフラグを格納する。
階層2のように、輝度に対して色差が間引かれているか否かのフラグが1、つまり輝度に対して色差の画素が間引かれている場合は、使用するサブバンド数、読み出しデータサイズ、復号画像がRAW画像であるか否かのフラグが無効となる。この場合、後述のサブ解像度ヘッダ1306を参照することになる。
尚、輝度/色差間の解像度が同じか否かのフラグが1の場合は、復号画像がRAW画像ではないとみなし、表示画像生成時の現像処理は実施しない、すなわち無効とする。
すなわち、図13Bに示すように、解像度ヘッダ1304は、図7Bの解像度ヘッダ704と同様、図13Aに示す各表示階層に関する情報をパラメタとして格納する。
サブ解像度ヘッダ1306は、各表示階層の内、輝度に対して色差の画素が間引かれている階層に含まれるサブ階層で用いられるパラメタを格納する。具体的には、サブ階層毎に、C1、C2の色差成分のデータサイズ、水平方向のウェーブレット合成の有無、垂直方向のウェーブレット合成の有無、使用するサブバンド数、読み出しデータサイズが含まれる。
ここで例として、解像度ヘッダ1304で格納されるパラメタのうち画像1100a〜cの表示に使用される階層1〜3の情報を図13Bの表を用いて説明する。
階層1の情報は、表示サイズが2048画素×1080ライン、輝度に対して色差の画素が間引かれていない、ウェーブレット回数が0回、使用サブバンド数が3となっている。また、読み出しデータサイズが圧縮RAW部1302の階層1でまとめられた圧縮サブバンドの合計サイズ、また表示の際に現像処理は不要となっている。尚、階層1の画像1100cは、Y、C1、C2成分の1LLのサブバンドを使用して生成されるので使用サブバンド数は3となる。また、上記3個のサブバンドはいずれも圧縮RAW部1302で階層1の圧縮サブバンドとしてまとめられるので、読み出しデータサイズは階層1の合計サイズとなる。
また、階層2の情報は、表示サイズが4096画素×2160ライン、輝度に対して色差の画素が間引かれている、ウェーブレット回数が1回となっている。また、使用するサブバンド数、使用するサブバンドのデータサイズの総和などについては、図13Bに示すように階層2に従属しているサブ解像度ヘッダの表に示す情報を参照することになる。
階層2に従属しているサブ階層の内、サブ階層2の情報は、水平ウェーブレット無、垂直ウェーブレット有、使用するサブバンド数が8、読み出しデータサイズが階層1、サブ階層1、サブ階層2の夫々でまとめられた圧縮サブバンドの合計サイズとなっている。尚、サブ階層2の縮小画像として生成される画像1100bは、Y成分の1LL、1HL、1LH、1HHのサブバンド、およびC1、C2成分の1LL、1LHのサブバンドを使用して生成されるので使用サブバンド数は8となる。また、上記8個のサブバンドのうち、Y、C1、C2成分の1LLのサブバンドは圧縮RAW部1302の階層1のグループの圧縮サブバンドとしてまとめられる。また、Y成分の1HL、1LH、1HHのサブバンド、及びC1、C2成分の1LHのサブバンドは、夫々圧縮RAW部1302の階層2のサブ階層1,2のグループの圧縮サブバンドとしてまとめられる。よって。読み出しデータサイズは圧縮RAW部702で階層1、サブ階層1、サブ階層2のグループにまとめられる圧縮サブバンドのデータサイズの総和となる。
すなわち、ウェーブレット回数がN回の場合、階層M(2≦M≦N+1)のサブ階層1の情報に含まれる読み出しデータサイズは、階層1〜M−1及び階層Mのサブ階層1にまとめられた圧縮サブバンドのデータサイズの総和となる。また、階層Mのサブ階層2の情報に含まれる読み出しデータサイズは、階層Mのサブ階層1の情報に含まれる読み出しデータサイズと階層Mのサブ階層2にまとめられた圧縮サブバンドのデータサイズの総和となる。同様に、階層Mのサブ階層3の情報に含まれる読み出しデータサイズは、階層Mのサブ階層2の情報に含まれる読み出しデータサイズと階層Mのサブ階層3にまとめられた圧縮サブバンドのデータサイズの総和となる。ここで、階層Mとは、言い換えると、縮小画像の表示の際に使用される階層1〜N+1のうち、最小階層数である階層1を除く階層数を指す。
図13Aに戻り、サブバンドヘッダ1305は、圧縮RAW部1302で保持される圧縮サブバンド毎のパラメタを格納する。このパラメタは、圧縮サブバンド毎のデータサイズや量子化パラメタ、ウェーブレット分解におけるどのサブバンドであるのか(例えば、図3に示す2HLのサブバンドである等)、またY、C1、C2、C3成分のいずれであるかの情報を含む。
圧縮RAW部1302における各圧縮サブバンドの並びは、ウェーブレット回数がN回の場合、図13Aに示すようになる。すなわち、階層1のグループにはY、C1、C2成分の順に、NLLの圧縮サブバンドが並べられる。階層2のグループにおいては、そのサブ階層1のグループにはY成分のNHL、NLH、NHHの圧縮サブバンドが、そのサブ階層2のグループにはC1、C2成分のNLHの圧縮サブバンドが並べられる。また、そのサブ階層3のグループにはC1、C2成分のNHL、NHHの圧縮サブバンドが並べられる。階層3のグループにおいては、そのサブ階層1のグループにはY成分の(N−1)HL、(N−1)LH、(N−1)HHの圧縮サブバンドが、そのサブ階層2にのグループはC1、C2成分の(N−1)LHの圧縮サブバンドが並べられる。また、そのサブ階層3のグループにはC1、C2成分の(N−1)HL、(N−1)HHの圧縮サブバンドが並べられる。同様の方法で階層4〜N−1のグループにおいても複数の圧縮サブバンドが並べられる。また、階層Nのグループにおいては、そのサブ階層1のグループにはY成分の2HL、2LH、2HHの圧縮サブバンドが、そのサブ階層2にはC1、C2成分の2LHの圧縮サブバンドが並べられる。また、そのサブ階層3のグループにはC1、C2成分の2HL、2HHの圧縮サブバンドが並べられる。階層N+1のグループにおいては、そのサブ階層1のグループにはY成分の1HL、1LH、1HHの圧縮サブバンドが、そのサブ階層2のグループにはC1、C2成分の1LHの圧縮サブバンドが並べられる。また、そのサブ階層3のグループにはC1、C2成分の1HL、1HHの圧縮サブバンドが並べられる。最後の階層N+2のグループにはC3の全サブバンドが並べられる。サブバンドヘッダ1305に保持される圧縮サブバンドの夫々に関するパラメタも、かかる圧縮RAW部1302における各圧縮サブバンドの並びと同様に階層及びサブ階層のグループ毎にまとめられる。
以上のように、圧縮RAW部1302では、縮小表示で用いる成分(Y、C1、C2成分)の圧縮サブバンドが縮小表示の階層1〜N+1の順で階層のグループ毎にまとめて並べられる。また、縮小画像生成時に色差間引きを行う場合を考慮して、階層M(2≦M≦N+1)のグループはサブ階層1〜3のグループにより構成する。具体的には、水平/垂直方向のアップサンプリングを必要とする、YUV420の形式の縮小画像の表示に使用されるサブ階層1(第1のサブ階層)のグループとしてY成分のMHL、MLH、MHHの圧縮サブバンドがまとめられる。また、水平方向のアップサンプリングを必要とする、YUV422の形式の縮小画像の表示に使用されるサブ階層2(第1の色差階層)のグループとしてC1,C2成分のMLHの圧縮サブバンドがまとめられる。さらに、アップサンプリングは不要であるYUV444の形式の縮小画像の表示に使用されるサブ階層3(第2の色差階層)のグループとしてMHL,MHHの圧縮サブバンドがまとめられる。その後、縮小表示で用いない成分(C3成分)の全圧縮サブバンドがまとめて並べられる。尚、図12A(b)を用いて説明した通り、サブバンド群1102の間引く方向は水平方向ではなく、垂直方向であってもよい。その場合は、サブ階層2のグループには垂直方向のアップサンプリング用いる圧縮サブバンドがまとめられる。
このような画像記録フォーマット1300を用いることで、実施例1に係る画像記録フォーマット700ではYUV444の形式の縮小画像生成のみができたのに対し、YUV422の形式やYUV420の形式の縮小画像の生成も可能となる。すなわち、色差間引きを許容することで、縮小画像生成の必要な圧縮サブバンドのデータサイズを実施例1の場合よりさらに削減できる。
以上、実施例2によれば、RAW画像を図13Aに示す画像記録フォーマット1300の圧縮RAW画像に符号化する。これにより、色差成分に関わる圧縮サブバンドの読み出し量を少なくし、記録ファイルからの必要な圧縮サブバンドの読み出し処理や外部の表示機器でのストリーミング再生の際に必要な圧縮サブバンドの転送処理による負荷が実施例1よりさらに低減できる。すなわち、記録ファイルからの読み出し処理に起因する表示遅延を実施例1よりさらに軽減できる。
尚、本実施例では、YUV422、YUV420のいずれの形式の画像生成も可能としたが、いずれか一方の画像生成のみを可能としてもよい。この場合、画像生成を可能とする形式に対応するサブ階層の圧縮サブバンド及びそれに関する情報のみが画像記録フォーマット1300に格納される。
[その他の実施例]
本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、装置に供給することによっても、達成されることは言うまでもない。このとき、供給された装置の制御部を含むコンピュータ(またはCPUやMPU)は、記憶媒体に格納されたプログラムコードを読み出し実行する。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、上述のプログラムコードの指示に基づき、装置上で稼動しているOS(基本システムやオペレーティングシステム)などが処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、装置に挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれ、前述した実施例の機能が実現される場合も含まれることは言うまでもない。このとき、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行う。