以下、添付図面を参照し、本発明の実施の形態について詳細に説明する。
図1は本発明の実施の形態を説明するための簡略化されたブロック図である。本実施の形態は、撮像手段により被写界の静止画撮影又は動画撮影を行い、静止画像又は動画のフレーム画像を入力し、その画像データを圧縮して記録媒体に記録する電子カメラ装置である。ここでは、静止画撮影を主機能とした所謂デジタルスチルカメラとして説明するが、動画撮影を主機能とした所謂デジタルビデオカメラを除外することを意図するものではない。なお、本発明は、パソコン、光ディスク装置などの機器、ネットワークなどから静止画又は動画の画像データを入力し、その画像データを記録媒体に記録する画像記録装置全般に適用し得るものである。また、本実施の形態は、本発明の画像データ選択方法の実施の形態でもある。
図1において、100は撮像手段(より一般的には画像入力手段)であり、撮像光学系102、イメージセンサ104、アナログ信号処理部106、アナログ・デジタル変換部108、画像プロセッサ110、メモリ114、表示装置112、操作部124及びシステムコントローラ122から構成される。
被写界の光学像が撮像光学系102によりイメージセンサ104に結像され、電気信号に変換される。撮像光学系102は光学レンズ、絞り機構、シャッター機構などから構成される。イメージセンサ104は、結像された光学像を色フィルタにより色分解し、各色成分の光量に応じた画像信号を出力するもので、一般にCCD型もしくはMOS型のイメージセンサが用いられる。
イメージセンサから出力される画像信号は、アナログ信号処理部106で相関二重サンプリング、ガンマ補正、ホワイトバランス調整などの処理を施されたのち、アナログ・デジタル変換部108でデジタル画像データに変換されて画像プロセッサ110に入力される。画像プロセッサ110は、画像データに対するエッジ強調処理などの画像処理を行うほか、イメージセンサ104、アナログ信号処理部106、アナログ・デジタル変換部108、表示装置112の制御、オートフォーカス制御や自動露出制御などのための情報の検出などを行う。この画像プロセッサ110は、1フレーム以上の画像データなどを一時的に保存するためのメモリ114を有する。表示装置112は、例えば液晶表示装置であり、モニタリング時の撮影画像(スルー画像)や記録画像、各種情報の表示に利用される。なお、ガンマ補正やホワイトバランス調整などの処理を画像プロセッサ110で行う構成としてもよく、そのような態様も本発明に包含される。
システムコントローラ122は、操作部124から入力される操作情報や画像プロセッサ110から与えられる情報などに応答して、撮像光学系102のシャッター機構、絞り機構、ズーミング機構の制御、画像プロセッサ110の制御など、撮像手段100に関する制御を行うほか、後述のように画像データの圧縮/伸長、記録/読み出し、記録された画像データのデータ量削減などに関する制御を行う。
撮像手段100により撮影された(入力された)画像データは、圧縮されたのち所定のファイル形式の画像ファイルとして各種メモリカードなどの記録媒体170に記録される。このような画像データの圧縮及び伸長のために画像圧縮/伸長部150が設けられ、また、圧縮された画像データの記録媒体170への記録又は記録された画像データの読み出しのためにファイル管理部166が設けられている。画像ファイルの記録又は読み出しは、ファイル管理部166の制御によりインターフェース部168を介して行われる。また、本発明においては、記録された画像データに対するデータ量削減処理が行われるが、その処理の管理及び処理対象の画像データの選択のためにデータ量削減管理部162が設けられている。また、データ量削減処理及び画像ファイルの記録/読み出し処理に関連した情報を記憶するための管理情報記憶部164が設けられている。このような画像データの圧縮/伸長、画像ファイルの記録/再生、記録済み画像データのデータ量削減に関連した全体的な動作はシステムコントローラ122によって統御される。
画像圧縮/伸長部150としては、画像データの再圧縮を行うことなく符号データの操作によりデータ量を調整可能な画像圧縮アルゴリズムを利用する構成のものが好ましいが、再圧縮を必要とする画像圧縮アルゴリズムを排除するものではない。本実施の形態にあっては、画像圧縮/伸長部150は、JPEG2000準拠の画像圧縮アルゴリズムを利用する構成であり、DCレベル・色空間変換部152、2次元ウェーブレット変換部154、量子化部156、エントロピー符号化部158、符号生成部160からなる。
JPEG2000は、その基本方式(JPEG2000 Part1)の標準化作業を終了し2001年1月に勧告されている。その拡張方式であるモーション(Motion)JPEG2000(JPEG2000 Part3)の勧告化も目前である。このモーションJPEG2000は、動画を静止画の系列として扱うが、各フレーム画像に対する圧縮アルゴリズムは基本方式そのものであり、基本方式との違いはファイル形式が一部異なるのみである。JPEG2000の画像圧縮アルゴリズムについては、例えば、非特許文献1などに詳しいが、その概略を以下に説明する。
圧縮処理の対象となる画像データ(動画を扱う場合には各フレーム画像データ)は、各コンポーネント毎にタイルと呼ばれる重複しない矩形領域に分割されてDCレベル・色空間変換換部152に入力される。
DCレベル・色空間変換部152においては、圧縮率の向上を目的として、入力画像データに対しレベルシフト操作と色空間変換処理を施す。レベルシフトは、RGB値のような符号無し整数値からダイナミックレンジの半分を減算する操作である。入力画像データが例えばYCrCbデータの場合、Cr,Cbコンポーネントのような符号付き整数値に対してレベルシフトは行われない。色空間変換処理は、入力画像データがRGBデータやCMYデータの場合に、YCrCbデータに変換する処理である。なお、このDCレベル変換及び色空間変換を画像プロセッサ110で行う構成とすることも可能である。
DCレベル・色空間変換部152により処理後の各コンポーネントの各タイルの画像データは、2次元ウェーブレット変換部154により2次元のウェーブレット変換(離散ウェーブレット変換:DWT)を施される。
図2はデコンポジション・レベル数が3の場合のウェーブレット変換の説明図である。図2(a)に示すタイル画像に対する2次元ウェーブレット変換により、図2(b)に示すような1LL,1HL,1LH,1HHの各サブバンドに分割される。1LLサブバンドの係数に対し2次元ウェーブレット変換が適用されることにより、図2(c)に示すような2LL,2HL,2LH,2HHのサブバンドに分割される。2LLサブバンドの係数に対し2次元ウェーブレット変換が適用されることにより、図2(d)に示すような3LL,3HL,3LH,3HHのサブバンドに分割される。
このような低周波成分(LLサブバンド係数)の再帰的分割(オクターブ分割)により得られた各サブバンドの係数は、量子化部156によって量子化された後にエントロピー符号化部158により符号化される。JPEG2000では可逆圧縮(ロスレス圧縮)と非可逆圧縮(ロシィ圧縮)のいずれも可能であり、可逆圧縮の場合には量子化ステップ幅は常に1であり、この段階では実質的に量子化されない。
エントロピー符号化部158はウェーブレット係数のエントロピー符号化を行う。このエントロピー符号化には、ブロック分割、係数モデリング及び2値算術符号化からなるEBCOT(Embedded Block Coding with Optimized Truncation)と呼ばれるブロックベースのビットプレーン符号化方式が用いられる。符号化対象となるウェーブレット係数は正負の符号を持つ整数であり、それらを決められた順序で走査しながら、係数を絶対値表現したものに対し上位ビットから下位ビットへとビットプレーン単位で符号化処理が実行される。
エントロピー符号化部158で生成された符号列は符号生成部160に送られる。符号生成部160において、算術符号化された符号列を最終的に必要な順序に並べ替え、また、必要に応じて一部符号の廃棄(ポスト量子化)を行い、1本のビットストリームとして出力する。
画像圧縮/伸長部150より出力される符号データ(圧縮データ)は図3に示すような構造である。図3に見るように、符号データは、SOCマーカから始まり、その後に符号化のパラメータや量子化のパラメータ等を記述したメインヘッダが続き、その後に各タイル毎のデータが続く。各タイルのデータは、SOTマーカで始まり、タイルヘッダ、SODマーカ、タイルデータ(符号列)で構成される。最後のタイルデータの後に、終了を示すEOCマーカが置かれる。
このJPEG2000の画像圧縮アルゴリズムは高圧縮率(低ビットレート)での画質が良好であるほか、多くの特徴を有する。その1つが、符号化後に、下位ビットプレーンの符号の廃棄(切り捨て:トランケーション)による量子化(ポスト量子化)であり、再圧縮を行うことなく全体の符号量(圧縮率)を調整できる。JPEG2000では、コードブロック単位もしくはプリシンクト単位で係数のビットプレーンに順序付けを行い、任意の数のビットプレーンからなるレイヤを構成することができる。複数レイヤ構成をとる場合には下位のレイヤからレイヤ単位でのポスト量子化が可能である。
符号データの伸長処理は圧縮処理と逆の処理となる。符号生成部160によって符号データのタグ情報が解釈され、符号データは各コンポーネントの各タイルの符号列に分解され、この符号列はエントロピー符号化部158によってタグ情報に基づく順番でウェーブレット係数に復号される。復号されたウェーブレット係数は量子化部156で逆量子化を施されたのち、2次元ウエーブレット変換部154で2次元ウェーブレット逆変換を施されることにより、各コンポーネントの各タイルの画像が再生される。各コンポーネントの各タイル画像は、DCレベル・色空間変換部152で圧縮時と逆の変換処理を施されてから出力される。この各コンポーネントの各タイル画像が画像プロセッサ110において統合されることにより、圧縮された画像が復元されることになる。
さて、JPEG2000では、ビットプレーン符号化を採用しているため、ウェーブレット係数の符号化に際して、係数の最大値を予想し、その最大値に相当する「符号化すべきビットプレーン数の最大値(最大ビットプレーン数)」を計算する。この最大ビットプレーン数は、符号化時にヘッダに埋め込まれ、次に述べるように、符号のヘッダから算出可能である。
図3に示したメインヘッダは図9に示す構成であり、必須のマーカセグメントとしてQCDマーカセグメントが含まれている。
このQCDマーカセグメントの構成と内容は図10と図11に示す通りである。量子化スタイルのパラメータSqcd、量子化ステップサイズのパラメータSPqcdの内容は図12乃至図14に示すとおりである。SPqcdからεb及び保護ビット数を読み出すことができる。
また、画像が複数のコンポ−ネントから成り、メインヘッダにQCCマーカセグメントが存在する場合には、QCCマーカセグメントのパラメータSPqccから当該コンポ−ネントに対応したεbを読み出すことができる。
ウェーブレット変換では、その変換を施す毎に、ウェーブレット係数のビット数(=ビットプレーン数)が増加していき、かつ、その増加量はサブバンドHL,LH,HH毎に異なる。この増加量のうち、サブバンドに共通な分の値を「保護ビット数」と呼び、サブバンドごとに異なる分を本明細書中では便宜的に「ゲインビット」とよぶ。「ゲインビット」は、デコンポジションレベルによらず、LLでは0、HL及びLHでは1、HHでは2と規定されている。
また、εbは符号化時に算出される量である。JPEG2000におけるウェーブレット変換としては5×3変換又は9×7変換が規定されているが、5x3変換の場合、εbは次式により求められる。
εb=Rb+(色変換により増加したビットプレーン数) 式(1)
ここで、Rb=(原データのビット数)+(ゲインビット数)
また、9x7変換の場合、εbは、次の式(2)(サブバンド毎の量子化ステップ数△bの式)と、図14中のμbとから求められる。
Δb=2(Rb−εb)*(1+μb/211) 式(2)
ここでRb=(原データのビット数)+(ゲインビット数)
なお、5×3変換の場合、線形量子化はしない仕様である(すなわち、量子化ステップ数=1)。
以上をもとに、最大ビットプレーン数は
最大ビットプレーン数=Rb+(色変換により増加したビットプレーン数)
−(線形量子化で減少するビットプレーン数)−1
で算出され、5×3変換、9×7変換のいずれの場合も次式で表される。
最大ビットプレーン数=εb+保護ビット数−1 式(3)
JPEG2000では、原データに対してDCレベルシフトを行うため、例えば0〜255の正の数を-128〜+127の数として扱う。この場合、-128〜+127の数を「極性1ビット,絶対値7ビット」として扱うため、式(3)中の「−1」が生じる。
次に、「ゼロビットプレーン数」及び「符号化されたビットプレーン数」と、その読み出し方について説明する。
最大ビットプレーン数は前記式(3)式により算出されるが、全てのコードブロックにおいて(少なくとも1つの係数は)前記式(3)式による最大ビットプレーン数に達するとは限らず、実際には、それに達しないコードブロックがある。つまり、あるコードブロックにおいては、ビットプレーンの上位側が0で埋まっているのである。
よって、コードブロック単位で、(最大ビットプレーン数)と(実際のビットプレーン数)の差を「0ビットプレーン数」と呼ぶ。0ビットプレーン数は、パケットヘッダ中にコードブロックごとに記述されている。
図3に示したタイルデータは、図15の上段に示すように複数のパケットと呼ばれる単位からなり、各パケットは図15の下段に示すようにパケットヘッダとパケットデータとから成る。
各パケットのパケットヘッダには
(1)当該パケットが空かどうか(当該パケットにサブビットプレーンの符号が全く含まれていない)
(2)当該パケットにいくつのコードブロックが含まれているか
(3)当該パケットに含まれる各コードブロックに対応したゼロビットプレーン数(ゼロビットプレーン数はコードブロック毎にカウントする)
(4)当該パケットに含まれる各コードブロック毎の、当該パケットに含まれる符号化されたサブビットプレーン数
(5)当該パケットに含まれる各コードブロック毎の、当該パケットに含まれるエントロピー符号長
の情報が記述されている。
したがって、パケットヘッダの内容を読み出すことによって、各コードブロック毎の「ゼロビットプレーン数」が分かる。よって、前記式(3)から、パケットヘッダより取得したゼロビットプレーン数を減じれば、各コードブロック毎の「非ゼロビットプレーン数」が分かる。また、符号化されたサブビットプレーン数はパケットヘッダより直接読み取ることができ、したがって、各コードブロック毎の「符号化されたビットプレーン数」も計算できる。
なお、符号がマルチレイヤ構成の場合、同一のコードブロックのビットプレーンが幾つかのレイヤに分けられて符号化される(例:符号化すべきビットプレーンが9枚だった場合、レイヤAに含まれるパケットには5枚分、レイヤBに含まれるパケットには残りの4枚分の符号が入る)。したがって、パケットヘッダ中のサブビットプレーン数を各コードブロックごとに積算し、当該コードブロックに関し符号化されたサブビットプレーン数の合計を求める必要がある。
サブビットプレーンとは、一部の例外を除き、ビットプレーンを仮想的に3枚に分割したものであり、
非ゼロサブビットプレーン数=1+3×(非ゼロビットプレーン数―1) 式(4)
である。最上位の非ゼロビットプレーンは3枚に分割しないため、上記「一部の例外」が生じる。
JPEG2000の符号化処理は、概ね図16に示す流れで行われ、符号形成プロセスと呼ばれる右端の2つのブロックで、パケットと呼ばれる符号単位を所望の順序に並べる作業がなされる。
ここで、画像、タイル、サブバンド、プリシンクト、コードブロックの関係、並びに、パケットとレイヤの関係について整理する。
物理的な大きさの序列は、
画像≧タイル>サブバンド≧プリシンクト≧コードブロック
である。
タイルとは画像を矩形に分割したものであり、分割数=1の場合、
画像=タイル
である。
プリシンクトとは、サブバンドを矩形に分割したもので、画像中の大まかな場所(position)を表すものである。HL,LH,HHの各サブバンドを分割したプリシンクトについては、各サブバンドの対応位置のプリシンクト(合計3個)がひとまとまりとして扱われる。ただし、LLサブバンドを分割したプリシンクトは、1つでひとまとまりとして扱われる。プリシンクトはサブバンドと同じサイズにすることもできる。
プリシンクトをさらに矩形に分割したものがコードブロックである。
デコンポジション回数が3の場合について、タイル、サブバンド、プリシンクト、コードブロックの関係を図17に模式的に示す。
プリシンクトに含まれる全てのコードブロックから、符号の一部を取り出して集めたもの(例えば、全てのコードブロックのMSBから3枚目までのビットプレーンの符号を集めたもの)がパケットである。上記“一部”は“空”(から)でもいいので、パケットの中身が符号的には“空(から)”ということもある。
全てのプリシンクト(=全てコードブロック=全てのサブバンド)のパケットを集めると、画像全域の符号の一部(例えば、画像全域のウェーブレット係数の、MSBから3枚目までのビットプレーンの符号)ができるが、これがレイヤである。レイヤは、大まかには、画像全体のビットプレーンの符号の一部であるから、復号されるレイヤ数が増えれば画質は上がる。したがって、レイヤはいわば画質の単位である。すべてのレイヤを集めると、画像全域の全てのビットプレーンの符号になる。
ウェーブレット変換の階層数(デコンポジションレベル)=2,プリシンクトサイズ=サブバンドサイズ、としたときのレイヤ構成の例を図18に示す。各レイヤに含まれる、いくつかのパケットを図19に太線で囲んで示す。パケットは、プリシンクトを単位とするものであるから、プリシンクト=サブバンドとした場合には、パケットはHL〜HHサブバンドをまたいだものとなる。
図16に関連して述べた「符号形成プロセス」において、レイヤ単位あるいはパケット単位での符号の破棄(トランケーション)すなわちポスト量子化が可能である。また、符号生成後において、あるパケットに関してビットプレーンのエントロピー符号を部分的に捨てて、当該パケットのパケットヘッダの生成をやり直すと言ったことも可能である。
次に、「サブバンドゲイン」について説明する。復号時の逆ウェーブレット変換においては、サブバンドごとに「周波数係数値が信号値に逆変換された場合の倍率」が異なり、この倍率の二乗をサブバンドゲイン(Gsbと表記)という。量子化によって周波数係数に生じた誤差△eは、信号への逆変換によってサブバンドゲインの平方根倍され、√Gsb・△eとなる。
以下、5×3変換の場合を例にして、サブバンドゲインの算出法を説明する(詳細は非特許文献2に記載されている)。
5×3ウェーブレット変換の逆変換は、インターリーブされた係数の配列に対して、まず水平方向に、X座標が偶数(x=2i)の係数C(2i)を中心に逆ローパスフィルタを施し、次にX座標が奇数(x=2i+1)の係数C(2i+1)を中心に逆ハイパスフィルタを施す(これを全てのY座標について行う)。ここで、逆ローパスフィルタ,逆ハイパスフィルタは順に式(5)、式(6)で表される。
P(2i)=C(2i)−floor((C(2i-1)+C(2i+1)+2)/4) 式(5)
P(2i+1)=C(2i+1)+floor((P(2i)+P(2i+2))/2) 式(6)
ここでfloor(A)はAのフロア関数(実数Aを、Aを越えず、かつ、Aに最も近い整数に置換する関数)である。
式(5)、式(6)のフロア関数をはずして次の近似式を得る。
P(2i)=C(2i)−1/4・C(2i-1)−1/4・C(2i+1)−1/2 式(7)
P(2i+1)=C(2i+1)+P(2i)/2+P(2i+2)/2
=−1/8・C(2i-1)+1/2・C(2i)+3/4・C(2i+1)+1/2・C(2i+2)
−1/8・C(2i+3)−1/2 式(8)
また、式(7)(8)から下の5つの式を得る。
P(2i-1)=−1/8・C(2i-3)+1/2・C(2i-2)+3/4・C(2i-1)+1/2・C(2i)
−1/8・C(2i+1)−1/2
P(2i) =C(2i)−1/4・C(2i-1)−1/4・C(2i+1)−1/2
P(2i+1)=−1/8・C(2i-1)+1/2・C(2i)+3/4・C(2i+1)+1/2・C(2i+2)
−1/8・C(2i+3)−1/2
P(2i+2)=C(2i+2)−1/4・C(2i+1)−1/4・C(2i+3)−1/2
P(2i+3)=−1/8・C(2i+1)+1/2・C(2i+2)+3/4・C(2i+3)+1/2・C(2i+4)
−1/8・C(2i+5)−1/2
今、奇数位置のハイパス係数C(2i+1)に量子化誤差1が生じた場合、上の5つの式は、該誤差がP(2i-1)からP(2i+3)の5画素に影響を及ぼすことを示し、これら5つの誤差が独立であると仮定すると、該5画素に生じる誤差の二乗和の平方根は
√((-1/8)2+(-1/4)2+(3/4)2+(-1/4)2+(-1/8)2)=0.85
である。つまり、ハイパス係数の誤差1が、画素値のエラー0.85に変換されるのである。これが逆ハイパスフィルタ1回分のゲインの平方根である。
同様に、偶数位置のローパス係数C(2i)に量子化誤差1が生じた場合、上式は、該誤差がP(2i-1)からP(2i+1)の3画素に影響を及ぼすことを示し、該3画素に生じる誤差は
√((1/2)2+12+(1/2)2)=1.2
である。つまり、ローパス係数の誤差1が、画素値の誤差1.2に変換されるのである。これが逆ローパスフィルタ1回分のゲインの平方根である。
2次元の逆ウェーブレット変換の場合、LL係数の逆変換には逆ローパスフィルタを2回かける必要があるため、LL係数に量子化誤差1が生じた場合、画素に生じる誤差は
1.2×1.2
となる。同様に、HL係数の逆変換には逆ローパスフィルタ、逆ハイパスフィルタを1回ずつかける必要があるため、HL係数に量子化誤差1が生じた場合、画素に生じる誤差は
1.2×0.85
となる。
同様の計算を行うと、デコンポジションレベル5の場合、各サブバンドの係数に生じた単位量子化誤差が画素に与えるエラーの二乗和の平方根(=サブバンドゲインの平方根)は図20及び図21に示す値となる。ただし、図20は9×7逆変換の場合であり、図21は5x3逆変換の場合である。
なお、サブバンドゲインは、正規直交変換でない周波数変換では常に問題となるものであり、ウェーブレット変換以外の周波数変換を用いる符号化においても同様な考え方が適用できる。
JPEG2000では、コンポーネント変換(色空間変換)として以下のような可逆のRCT(Reversible multiple component transformation)と、非可逆のICT(Irreversible multiple component transformation)が用いられる。
RCTの順変換と逆変換は次式で表される。
順変換
Y0(x,y)=floor((I0(x,y)+2*(I1(x,y)+I2(x,y))/4)
Y1(x,y)=I2(x,y)-I1(x,y)
Y2(x,y)=I0(x,y)-I1(x,y) 式(9)
逆変換
I1(x,y)=Y0(x,y)-floor((Y2(x,y)+Y1(x,y))/4)
I0(x,y)=Y2(x,y)+I1(x,y)
I2(x,y)=Y1(x,y)+I1(x,y) 式(10)
上式中のIは原信号、Yは変換後の信号を示す。RGB信号を例にすれば、I信号は0=R,1=G,2=B、Y信号は0=Y,1=Cb,2=Crと表される。
ICTの順変換と逆変換は次式で表される。
順変換
Y0(x,y)=0.299*I0(x,y)+0.587*I1(x,y)+0.144*I2(x,y)
Y1(x,y)=-0.16875*I0(x,y)-0.33126*I1(x,y)+0.5*I2(x,y)
Y2(x,y)=0.5*I0x,y)-0.41869*I1(x,y)-0.08131*I2(x,y) 式(11)
逆変換
I0(x,y)=Y0(x,y)+1.402*Y2(x,y)
I1(x,y)=Y0(x,y)-0.34413*Y1(x,y)-0.71414*Y2(x,y)
I2(x,y)=Y0(x,y)+1.772*Y1(x,y) 式(12)
式中のIは原信号、Yは変換後の信号を示す。RGB信号を例にすれば、I信号は0=R,1=G,2=B、Y信号は、0=Y,1=Cb,2=Crと表される。
このような逆RCTや逆ICTのゲインについて説明する。これらゲインも同様に、各コンポ−ネントに生じた単位誤差によるRGB値のエラーの二乗和である。これらは、サブバンドゲインを導出する場合と同様、RCTやICTの逆変換の式中の定数の二乗和として算出される。よって、逆ICTと逆RCTのゲインの平方根は図22と図23に示すような値となる。
以下、図1に示した電子カメラ装置の動作について説明する。
《静止画撮影時の動作》
静止画撮影時の動作の一例を図4のフローチャートを参照して説明する。操作部124に含まれる不図示のレリーズボタン(静止画撮影指示ボタン)が押下されると、静止画撮影指示がシステムコントローラ122より画像プロセッサ110に与えられ、画像プロセッサ110は静止画撮影の条件でイメージセンサ104を駆動する。撮影された画像データは、画像プロセッサ110より各コンポーネント毎にタイル分割されて画像圧縮/伸長部116へ送られ、圧縮処理される(ステップS100)。画像圧縮/伸長部150においては、エントロピー符号化部158の段階まではロスレス圧縮を行い、符号生成部160で画質モード(高画質、標準画質、エコノミー画質など)に応じたポスト量子化を行う。画質モードは撮影者(ユーザ)により操作部124を介して予め設定され、また、設定されない場合はデフォルトの画質モードが選ばれ、これがシステムコントローラ122によって画像圧縮/伸長部150に指定される。なお、高画質モード時にポスト量子化を行わないことも可能であり、そのような態様も本発明に包含される。
この符号化処理時に、ファイル管理部166は、その圧縮された画像データのデータ量削減余力を判断するための情報(データ量削減処理の序列を決定するための情報)として、例えば、ロスレス符号量、ポスト量子化後の符号量(現符号量)、非ゼロビットプレーンの総数、画質モード、画像サイズなどを取得する。
ロスレス符号量とポスト量子化後の符号量は符号生成部160より取得することができる。サブバンドごとに視覚的な重み付けをしたロスレス符号量とポスト量子化後を取得してもよく、これも本発明に包含される。非ゼロビットプレーンの総数は、符号データのパケットヘッダからゼロビットプレーン数を取得し、それを総ビットプレーン数から差し引くことにより求めることができる。非ゼロビットプレーンの総数又はゼロビットプレーン数を、符号生成部160で求めてファイル管理部166に与えるようにしてもよい。画像サイズと画質モードは、システムコントローラ122より指定されるが、符号データのメインヘッダから取得することもできる。なお、これらの情報を必ずしも全部取得する必要はなく、画像データのデータ量削減余力の判断のために必要な一部の情報のみ取得するようにしてもよい。データ量削減余力の判断のために利用する情報と、その取得方法については更に後述する。
ファイル管理部166は、画像圧縮/伸長部150より出力された符号データをJPEG2000の画像ファイルとして記録媒体170に記録し(ステップS102)、記録終了後に管理情報記憶部164上のファイル管理情報を更新する(ステップS104)。このファイル管理情報にはステップS100において取得された情報も含まれる。撮影者は撮影直後又は任意の時点で、記録済み画像ファイルに対し「お気に入り指定」「モノクロ化容認指定」「サイズ変更容認指定」を行うことができる。これら指定の情報もファイル管理情報に含まれる。各画像ファイルに対しデータ量削減処理が適用された回数を示す情報もファイル管理情報に含まれる。また、記録媒体170の空き容量を示す情報もファイル管理情報に含まれる。また、静止画の画像ファイルであるか動画の画像ファイルかの区別を示す情報もファイル管理情報に含まれる。
なお、管理情報記録部164として、記録媒体170上の特定の記憶領域を割り当てることもできる。このようにすると、記録媒体170を交換した場合にも同媒体上の画像ファイルに関するファイル管理情報及び削減序列リストを改めて生成する必要がない。また、管理情報記憶部164上のファイ管理情報及び削減序列リストのコピーを記憶媒体170に記録してもよい。このようにすると、記録媒体170を交換したときに、記録媒体170上の画像ファイルを参照することなく、ファイル管理情報及び削減序列リストのコピーを読み出すだけで管理情報記憶部164上にファイル管理情報及び削減序列リストを復元することができる利点がある。
データ量削減管理部162は、管理情報記録部164上のファイル管理情報中の特定の情報を参照し、その情報に基づき特定の判断基準により今回追加された画像ファイルのデータ量削減余力を判断することによって、そのデータ量削減序列を決定し、管理情報記録部164上の削減序列リストを更新する(ステップS106)。この削減序列リストは、データ量削減序列(順番)に従って全ての(又はデータ量削減余力の大きい上位N個の)画像ファイルのインデックスを並べたリストである。データ量削減序列は、基本的には、画質的観点からデータ量削減余力の大きいものを優先するように決定される。データ量削減余力の具体的な判断基準の例は次の通りである。
基準1:[現符号量/ロスレス符号量]が大きい画像ファイルを優先する。
この比は現時点での情報量の削減度合を示すため、この比が大きい画像ファイルはデータ量削減余力が大きいからである。ここで、「ロスレス符号量」とは、狭義のロスレス符号量のみならず、「係数をビットプレーンに変換した後、全てのビットプレーンを符号化した場合の符号量」という意味である。したがって、9×7変換の場合は、「係数の線形量子化後、全てのビットプレーンを符号化した場合の符号量」になる。
基準2:[(サブバンドごとに視覚的な重み付けをして計算した現符号量)/(サブバンドごとに視覚的な重み付けをして計算したロスレス符号量)]が大きい画像ファイルを優先する。この比は、上記基準1の比の分母子を視覚的に有効な情報量として正規化したものである。
基準3:[現符号量/非ゼロビットプレーンの総数]の大きい画像ファイルを優先する。
非ゼロビットプレーンの総数が多いということはウェーブレット係数の絶対値が大きい、したがってロスレス符号量が大きいからである。
基準4:[画像サイズ]の大きい画像ファイルを優先する。サイズの大きい画像は冗長度が大きいので、データ量削減による画質劣化は少ないからである。
基準5:[非ゼロビットプレーンの総数]が少ない画像を優先する。非ゼロビットプレーンの総数が少ない画像は高周波成分が少なく、手振れなどによる撮影失敗の可能性が高いので、データ量削減による画質劣化が問題になりにくいからである。
基準6.1:[破棄(トランケート)されたサブビットプレーン数又はビットプレーン数の総和]が小さい画像ファイルを優先する。[破棄されたサブビットプレーン数又はビットプレーン数の総和]は、削除されたビットの総数を示し、原データ中から削減されたデータ量を直接的に示す指標となるからである。
基準6.2:[量子化ステップ数を考慮した、破棄されたサブビットプレーン数又はビットプレーン数の総和]が小さい画像ファイルを優先する。[量子化ステップ数を考慮した、破棄されたサブビットプレーン数又はビットプレーン数の総和]は、削除されたビットの総数を示し、原データ中から削減されたデータ量を直接的に示す指標となるからである。
基準6.3:[サブバンドゲインを考慮した、破棄されたサブビットプレーン数又はビットプレーン数の総和]が小さい画像ファイルを優先する。[サブバンドゲインを考慮した、破棄されたサブビットプレーン数又はビットプレーン数の総和]は、逆周波数変換後の、削除されたビットの総数を示し、原データ中から削減されたデータ量を直接的に示す指標となるからである。
基準6.4:[コンポ−ネント変換のゲインを考慮した、破棄されたサブビットプレーン数又はビットプレーン数の総和]が小さい画像ファイルを優先する。[コンポ−ネント変換のゲインを考慮した、破棄されたサブビットプレーン数又はビットプレーン数の総和」は、逆コンポ−ネント変換後の、削除されたビットの総数を示し、原データ中から削減されたデータ量を直接的に示す指標となるからである。
基準6.5:[周波数毎の視覚特性を考慮した、破棄されたサブビットプレーン数又はビットプレーン数の総和]が小さい画像ファイルを優先する。[周波数毎の視覚特性を考慮した、破棄されたサブビットプレーン数又はビットプレーン数の総和」は、削除されたビットの総数に視覚的な重み付けをした量を示し、視覚的な劣化を示す指標となるからである。
基準7.1:[破棄されたサブビットプレーン又はビットプレーンによる量子化誤差の総和]が小さい画像ファイルを優先する。[量子化誤差の総和]は、原データの劣化量を直接的に示す指標となるからである。
基準7.2:[量子化ステップ数を考慮した、破棄されたサブビットプレーン又はビットプレーンによる量子化誤差の総和]が小さい画像ファイルを優先する。[量子化ステップ数を考慮した量子化誤差の総和」は、原データの劣化量を直接的に示す指標となるからである。
基準7.3:[サブバンドゲインを考慮した、破棄されたサブビットプレーン又はビットプレーンによる量子化誤差の総和]が小さい画像ファイルを優先する。[サブバンドゲインを考慮した量子化誤差の総和]は、逆周波数変換後の原データの劣化量を直接的に示す指標となるからである。
基準7.4:[コンポ−ネント変換ゲインを考慮した、破棄されたサブビットプレーン又はビットプレーンによる量子化誤差の総和]が小さい画像ファイルを優先する。[コンポ−ネント変換ゲインを考慮した量子化誤差の総和]は、逆コンポ−ネント変換後の原データの劣化量を直接的に示す指標となるからである。
基準7.5:[周波数毎の視覚特性を考慮した、破棄されたサブビットプレーン又はビットプレーンによる量子化誤差の総和]が小さい画像ファイルを優先する。[周波数毎の視覚特性を考慮した量子化誤差の総和]は、原データの劣化に視覚的な重み付けをした量を示し、視覚的な劣化を示す指標となるからである。
基準8:高画質モードで撮影された画像ファイルを優先する。高画質モードで撮影された画像はもともと高画質であるため、データ量削減を行ったとしても良好な画質を維持できるからである。
基準9:[データ量削減処理が適用された回数]の少ない画像ファイルを優先する。適用回数が少ない画像ファイルは、適用回数が多い画像ファイルに比べ、一般に画質が良好であるからである。
基準10:動画の画像ファイルを静止画の画像ファイルより優先する。動画は、一般に静止画ほど高画質を要求されないからである。
基準11:動画の画像ファイルの相互間では[フレームの前記基準1又は3の比の平均値あるいは最大値]の大きいものを優先する。
基準12:動画内のフレームの間では、前記基準1、2又は3の比の大きいフレームを優先する。
基準13:動画の画像ファイルの相互間では[フレームの前記基準6.1又は7.1の総和の平均値又は最小値]の小さいものを優先する。
基準14:動画内のフレームの間では、前記基準6.1又は7.1の総和の小さいフレームを優先する。
以上の基準は画質的観点に立った判断基準であるが、本実施の態様においては、次の判断基準も適用できる。
基準15:撮影者により「サイズ変更容認指定」又は「モノクロ化容認指定」の指定がなされた画像ファイルを優先する。これは撮影者の意思に基づく基準である。これら指定のある画像ファイルは、撮影者がデータ量削減を容認したうえで、その削減方法を指定しているからである。なお、撮影者の「お気に入り指定」のある画像ファイルは、撮影者が画質低下を望まないことを表明したもの、つまりプロテクト指定したものであるからデータ量削除対象から除外される。
基準16:記録された日付の古い画像ファイルを優先する。これは記録時期に基づく基準である。通常、古い画像は、撮影者が重視しているのであれば「お気に入り指定」がなされるか、既に別の記録媒体にコピーされている可能性が高いからである。
以上に述べたことを基礎として、前記判断基準に用いられる値の具体的な算出方法の例について順に説明する。
まず、「非ゼロビットプレーンの総数」であるが、この値は符号化すべきビットの総数を示すため、原画像のデータ量の多寡を示す指標となる。よって、「原符号量/非ゼロビットプレーンの総数」は、原画像に対するデータ削減の度合いを示す指標になる。その算出であるが、例えば、
最大ビットプレーン数:MBP
当該コードブロックのゼロビットプレーン数:ZBP
当該コードブロックに含まれる係数の数:N
として、
[非ゼロビット数の総数]=ΣΣΣ{(MBP―ZBP)×N}
により算出される。
この式中のΣΣΣはコンポーネント、サブバンド、コードブロックそれぞれについて総和をとることを意味する。すなわち、[{(最大ビットプレーン数−コードブロックごとのゼロビットプレーン数)×当該コードブロックに含まれる係数の数}の全サブバンドに関する総和]の全コンポ−ネントに関する総和が求められる。この値は、いわば“全ウェーブレット係数に関する非ゼロビットプレーンの総和”的なものである。ただし、この例では、Nを乗じているので、求められる値は、非ゼロビットプレーン数の総和というよりは、“非ゼロビット数”の総和と呼ぶべきかもしれない。
次に、「破棄(トランケート)されたサブビットプレーン数の総和」であるが、この値は削除されたビットの総数を示すため、直接、原データ中から削減されたデータ量を示す指標となる。その算出であるが、例えば
当該コードブロックの非ゼロサブビットプレーン数:NZSBP
当該コードブロックに関して符号化されたサブビットプレーン数:CSBP
当該コードブロックに含まれる係数の数:N
として、
[破棄されたサブビットプレーン数の総和]=ΣΣΣ{(NZSBP−CSBP)×N}
により算出される。
すなわち、[{(非ゼロサブビットプレーン数−符号化されたサブビットプレーン数)×当該コードブロックに含まれる係数の数}の全サブバンドに関する総和]の全コンポ−ネントに関する総和である。
次に、「破棄されたビットプレーン数の総和」であるが、この値は、同じく削除されたビットの総数を示すため,同様に直接,原データ中から削減されたデータ量を示す指標となる。この算出であるが、例えば
当該コードブロックの非ゼロビットプレーン数:NZBP
当該コードブロックに関して符号化されたビットプレーン数:CBP
当該コードブロックに含まれる係数の数:N
として、
[破棄されたビットプレーン数の総和]=ΣΣΣ{(NZBP−CBP)×N}
により算出される。
すなわち、[{(非ゼロビットプレーン数−符号化されたビットプレーン数)×当該コードブロックに含まれる係数の数}の全サブバンドに関する総和]の全コンポ−ネントに関する総和である。
前述のように、サブビットプレーン数はビットプレーン数の概ね3倍であるから、ここでは簡易に、CBP=(CSBP/3)を整数に切り上げた値、としている。
また、線形量子化が使用されている場合、上記[破棄されたサブビットプレーン数」にさらに線形量子化を加味し、以下のような「量子化ステップ数を考慮した、破棄されたサブビットプレーン数の総和」が算出される。この算出であるが、例えば、
当該コードブロックの非ゼロサブビットプレーン数:NZSBP
当該コードブロックに関して符号化されたサブビットプレーン数:CSBP
当該コードブロックが含まれるサブバンドの量子化ステップ数:Q
当該コードブロックに関し、線形量子化も含めて破棄されたサブビットプレーン数:TSBP
当該コードブロックに含まれる係数の数:N
として、
[量子化ステップ数を考慮した、破棄されたサブビットプレーン数の総和]
=ΣΣΣ{TSBP×N}
(ただし、TSBP=NZSBP−CSBP−QSBP、QSBP=3log2(Q))
により算出される。
量子化ステップ数Qによる係数の量子化は、log2(Q)枚のビットプレーンの破棄、すなわち3log2(Q)枚サブビットプレーンの破棄に相当するからである。5×3逆変換の場合も、Q=1とすればこの例をそのまま適用可能である。
このような線形量子化も考慮した、「量子化ステップ数を考慮した、破棄されたサブビットプレーン数の総和」は、やはり直接、原データ中から削減されたデータ量を示す指標となる。
同様に、破棄されたビットプレーン数に、さらに線形量子化を加味した、「量子化ステップ数を考慮した、破棄されたビットプレーン数の総和」も算出する。
その算出であるが、例えば
当該コードブロックの非ゼロビットプレーン数:NZBP
当該コードブロックに関して符号化されたビットプレーン数:CBP
当該コードブロックが含まれるサブバンドの量子化ステップ数:Q
当該コードブロックに関して、線形量子化も含めて破棄されたビットプレーン数:TBP
当該コードブロックに含まれる係数の数:N
として、
[量子化ステップ数を考慮した、破棄されたビットプレーン数の総和]
=ΣΣΣ{TBP×N}
(ただし、TBP=NZBP−CBP−QBP、QBP=log2(Q))
により算出される。量子化ステップ数Qによる係数の量子化は、log2(Q)枚のビットプレーンの破棄にあたるからである。5×3逆変換の場合も、Q=1とすればこの例をそのまま適用可能である。
こうした、線形量子化も考慮した「破棄されたビットプレーン数の総和」は、やはり直接、原データ中から削減されたデータ量を示す指標となる。
また、先に述べたように、ウェーブレット逆変換では、係数がRGB値に戻る際には√Gsb倍される。これは、RGBに戻る際に、破棄されたサブビットプレーンの枚数が3log2(√Gsb)枚増えることを意味する(これは、ビットプレーン換算ではlog2(√Gsb)枚増えることにあたる)。このGsbを考慮しない「破棄されたサブビットプレーン数又はビットプレーン数の総和」でも、例えば共通のデコンポジションレベルの符号同士で比較する場合等は、削減されたデータ量の指標として使用可能である。しかし,Gsbの値はサブバンドによって異なるため、Gsbを考慮した「破棄されたサブビットプレーン数又はビットプレーン数の総和」の方が、より一般的なデータ削減量の指標となるので、その算出について次の述べる。
まず、「サブバンドゲインを考慮した、破棄されたサブビットプレーン数の総和」の算出であるが、例えば、
当該コードブロックの非ゼロサブビットプレーン数:NZSBP
当該コードブロックに関して符号化されたサブビットプレーン数:CSBP
当該コードブロックが含まれるサブバンドの量子化ステップ数:Q
当該コードブロックが含まれるサブバンドのサブバンドゲイン:Gsb
当該コードブロックに関して,線形量子化も含めて破棄されたサブビットプレーン数:TSBP
当該コードブロックに含まれる係数の数:N
として、
[サブバンドゲインを考慮した、破棄されたサブビットプレーン数の総和]
=ΣΣΣ{TSBP×N}
(ただし、TSBP=NZSBP−CSBP―QSBP―GSBP、
GSBP=3log2(√Gsb)、QSBP=3log2(Q))
により算出される。5×3逆変換の場合も、Q=1とすればこの例がそのまま適用可能である。
また同様に、「サブバンドゲインを考慮した、破棄されたビットプレーン数の総和」が算出される。その算出であるが、例えば、
当該コードブロックの非ゼロビットプレーン数:NZBP
当該コードブロックに関して符号化されたビットプレーン数:CBP
当該コードブロックが含まれるサブバンドの量子化ステップ数:Q
当該コードブロックに関して、線形量子化も含めて破棄されたビットプレーン数:TBP
当該コードブロックに含まれる係数の数:N
として、
[サブバンドゲインを考慮した、破棄されたビットプレーン数の総和]
=ΣΣΣ{TBP×N}
(ただし、TBP=NZBP−CBP−QBP−GBP、
QBP=log2(Q)、GBP=log2(√Gsb))
により算出される。5×3逆変換の場合も、Q=1とすればこの例がそのまま適用可能である。
さて、よく知られているように、人間の視覚特性は、低周波数領域に敏感であるが高周波数領域に鈍感であるので、低周波サブバンドの量子化誤差には敏感で、高周波サブバンドの量子化誤差には鈍感であることとなりる。したがって、視覚的には、低周波サブバンドほど量子化ステップ数を小さくし、高周波サブバンドほど量子化ステップ数を大きくするのが望ましいことになる。これを言い換えれば、低周波サブバンドほど破棄(トランケート)されるビットプレーン数を少なくし、高周波サブバンドほど破棄されるビットプレーン数を多くするのが望ましいことになる。
JPEG2000の標準書に、上記視覚特性を加味した、周波数毎のサブバンドのデータの視覚的重要性を示す「Visual Weight」という量が示されている。この「Visual Weight」は、画像への観察距離(Viewing distance)によって何種類か用意されているが、9×7変換の場合の一例を図24に示す。「Visual Weight」の値が大きいサブバンドほど、視覚的に重要であることを示す。
JPEG2000の標準書には、「Visual Weight」の使用法として、サブバンドごとの標準的な量子化ステップ数を「Visual Weight」で除算することにより、視覚的に適切な量子化ステップ数を得る方法が記載されている。これは、破棄されたサブビットプレーンから見れば、破棄(トランケート)量にサブバンド毎の重み付けを行うことによって、さらに一般的な、視覚特性を反映したデータ削減量の指標が得られることを意味している。量子化ステップ数を重みwで除算するということは、係数にwを乗算することになるので、破棄するサブビットプレーン数を3log2(w)枚だけ減らしたことになる。
よって、「周波数毎の視覚特性を考慮した、破棄されたサブビットプレーン数の総和」として、[サブバンドゲイン及び「Visual Weight」を考慮した、破棄されたサブビットプレーン数の総和]を用いることができる。その算出であるが、例えば、
当該コードブロックの非ゼロサブビットプレーン数:NZSBP
当該コードブロックに関して符号化されたサブビットプレーン数:CSBP
当該コードブロックが含まれるサブバンドの量子化ステップ数:Q
当該コードブロックが含まれるサブバンドのサブバンドゲイン:Gsb
当該コードブロックが含まれるサブバンドのVisual Weight:W
当該コードブロックに関して、線形量子化等も含めて破棄されたサブビットプレーン数:TSBP
当該コードブロックに含まれる係数の数:N
として、
[サブバンドゲインと「Visual Weight」を考慮した、
破棄されたサブビットプレーン数の総和]=ΣΣΣ{TSBP×N}
(ただし、QSBP=3log2(Q)、GSBP=3log2(√Gsb)、
WSBP=3log2(W)、TSBP=NZSBP−CSBP−QSBP−GSBP+WSBP)
により算出される。5×3逆変換の場合も、Q=1とすれば本例がそのまま適用可能である。
また同様に、「周波数毎の視覚特性を考慮した、破棄されたビットプレーン数の総和」として、[サブバンドゲイン及び「Visual Weight」を考慮した、破棄されたビットプレーン数の総和]を用いることができる。その算出であるが、
えば、
当該コードブロックの非ゼロサブビットプレーン数:NZBP
当該コードブロックに関して符号化されたサブビットプレーン数:CBP
当該コードブロックが含まれるサブバンドの量子化ステップ数:Q
当該コードブロックが含まれるサブバンドのVisual Weight:W
当該コードブロックに関して、線形量子化等も含めて破棄されたビットプレーン数:TBP
当該コードブロックに含まれる係数の数:N
として、
[サブバンドゲインと「Visual Weight」を考慮した、
破棄されたビットプレーン数の総和]=ΣΣΣ{TBP×N}
(ただし,QBP=log2(Q),GBP=log2(√Gsb),WBP=log2(W),
TBP=NZBP−CBP−QBP−GBP+WBP)
により算出される。5×3逆変換の場合も、Q=1とすれば本例がそのまま適用可能である。
さて,以上では、破棄(トランケート)されたビットプレーン数又はサブビットプレーン数を指標としてきたが、これは量子化誤差を指標としてきたと言い換えることもできる。
ビットプレーンn枚の破棄は、量子化ステップ数=(2のn乗)による線形量子化と等価であり、この場合の平均的な量子化誤差は、量子化ステップ数の半分の、2のn-1乗になるからである。同様に、サブビットプレーンn枚の破棄は量子化ステップ数=(2のn/3乗)による線形量子化と等価であり、この場合の平均的な量子化誤差は、量子化ステップ数の半分の、2の(n/3-1)乗になるからである。そしてこれに「Visual Weight」を組み合わせることにより、視覚特性を反映した、さらに一般的なデータ削減量の指標が得られることになる。
よって,破棄されたサブビットプレーン数に、サブバンドゲインとVisual Weightを加味することにより、視覚的な誤差の総和」を算出することができる。その算出であるが、例えば、
当該コードブロックの非ゼロサブビットプレーン数:NZSBP
当該コードブロックに関して符号化されたサブビットプレーン数:CSBP
当該コードブロックが含まれるサブバンドの量子化ステップ数:Q
当該コードブロックが含まれるサブバンドのサブバンドゲイン:Gsb
当該コードブロックが含まれるサブバンドのVisual Weight:W
当該コードブロックに関して、線形量子化を含めない、破棄されたサブビットプレーン数:TSBP
当該コードブロックに含まれる係数の数:N
として、
[視覚的な誤差の総和]=ΣΣΣ{(2^(TSBP/3−1))×√Gsb/(Q/W)×N}
(ただし、TSBP=NZSBP―CSBP、^はべき乗を示す)
により算出される。5×3逆変換の場合も、Q=1とすれば本例がそのまま適用可能である。
また、誤差の総和を二乗和として求めることも可能であり、その場合は、
[視覚的な誤差の総和]=ΣΣΣ{(2^(2TSBP/3−2))×Gsb/(Q/W)^2×N}
(ただし、TSBP=NZSBP−CSBP、^はべき乗を示す)
により算出される。
同様に、破棄されたビットプレーン数に、サブバンドゲインとVisual Weightを加味した、視覚的な誤差の総和」を算出することができる。その算出であるが、例えば、
当該コードブロックの非ゼロビットプレーン数:NZBP
当該コードブロックに関して符号化されたビットプレーン数:CBP
当該コードブロックが含まれるサブバンドの量子化ステップ数:Q
当該コードブロックが含まれるサブバンドのサブバンドゲイン:Gsb
当該コードブロックが含まれるサブバンドのVisual Weight:W
当該コードブロックに関して、線形量子化を含めない、破棄されたビットプレーン数:TBP
当該コードブロックに含まれる係数の数:N
として、
[視覚的な誤差の総和]=ΣΣΣ{(2^(TBP−1))×√Gsb/(Q/W)×N}
(ただし、TBP=NZBP−CBP、^はべき乗を示す)
により算出される。5×3逆変換の場合も、Q=1とすれば本例がそのまま適用可能である。
この誤差の総和を二乗和として求めることも可能であり、その場合は、
[視覚的な誤差の総和]=ΣΣΣ{(2^(2TBP−2))×Gsb/(Q/W)^2×N}
(ただし、TBP=NZBP−CBP、^はべき乗を示す)
により算出される。
なお、コンポ−ネント変換が導入される場合には、誤差の総和の算出に、上記サブバンドゲインGsbの他に逆コンポ−ネント変換のゲインGctをコンポ−ネント毎に考慮する事も可能である。この場合、Gsbの代わりにGsb×Gctを用いればよいので、その算出例の説明は省略する。また、5x3変換用のVisual Weightであるが、Y成分については図24に示した9x7変換用の値を用いることができ、Cb,Cr成分については図24に示した9×7変換用の値を1/2にした値を用いることができる。
また、現符号量及びロスレス符号量に対し、サブバンドごとのVisual Weightを反映させ、[視覚特性を反映した(視覚的な重み付けをした)現符号量及びロスレス符号量]を算出することができる。その算出は、
当該サブバンドのロスレス符号量:LSLEN
当該サブバンドの現在の符号量:CURLEN
当該サブバンドのVisual Weight:W
として、
[視覚特性を反映したロスレス符号量]=ΣΣ(LSLEN×W)
[視覚特性を反映した現在の符号量]=ΣΣ(CURLEN×W)
により行うことができる。上記2式中のΣΣはコンポ−ネント、サブバンドそれぞれについて総和をとることを意味する。
図1に示す電子カメラ装置の説明に戻る。
前記の基準のどれをいくつ適用するかは、撮影者によって指定することができる。この指定は、例えば、表示装置112に表示したメニューから、適用したい単独の基準、又は、2つ以上の基準の組み合わせを選択させることによって行われる。2つ以上の基準の組み合わせが指定された場合には、それぞれの基準は予め定められた順序で適用される。また、撮影者が指定しない場合には、予め定められた1つ又は2つ以上の基準が適用される。前記基準12又は14が指定されない場合には、動画内の各フレームの序列は均等である。
再び、図4を参照する。データ量削減処理については自動実行モードを設定することができる。自動実行モードが設定されていないときには(ステップS108,No)、システムコントローラ122は一連の動作を終了させる。
データ量削減処理の自動実行モードが設定されているときには(ステップS108,Yes)、システムコントローラ122はデータ量削減処理の制御に移行する(ステップS110)。
ステップS110の自動削減処理の手順の一例を、図5のフローチャートを参照して説明する。システムコントローラ122は、ファイル管理情報を参照し、記録媒体170に所定以上の空き容量があるかチェックする(ステップS120)。空き容量が十分ならば(ステップS120,Yes)、処理を終了する。
空き容量が不足している場合には(ステップS120,No)、システムコントローラ122はデータ量削減管理部162にデータ量削減のための手順を開始させる。まず、データ量削減管理部162は、削減序列リスト上の最上位の画像ファイルを選択し、そのファイル管理情報を参照し(ステップS122)、当該画像ファイルに対し「サイズ変更容認指定」又は「モノクロ化容認指定」があるか調べる(ステップS124)。
いずれの指定もない場合には、データ量削減管理部162はステップS126の処理に進む。このステップにおいては、ファイル管理部166によって当該画像ファイルの読み出しを行わせ、その符号データを画像圧縮/伸長部150の符号生成部160に転送し、符号生成部160において当該データに対し例えばパケットの符号のなかから最高解像度レベルの一定数の下位サブビットプレーンの符号を破棄させる処理を行わせる。そして、ファイル管理部166によって、処理後の符号データからなる画像ファイルで記録媒体170上の元の画像ファイルを書き換えさせる。この書き換えに関連して、現符号量やデータ量削減処理の実施回数などのファイル管理情報も更新される。なお、その画像ファイルの符号データが複数レイヤ構成の場合には、下位レイヤを廃棄することも可能であり、そのような態様も本発明に包含される。
選択された画像ファイルに「サイズ変更許容指定」がある場合には、データ量削減管理部162はステップS128の処理に進む。このステップにおいては、ファイル管理部166によって当該画像ファイルの読み出しを行わせ、その符号データを画像圧縮/伸長部150の符号生成部160に転送し、符号生成部160において当該データの最高解像度レベルの符号を破棄させる処理を行わせる。そして、ファイル管理部166によって、処理後の符号データからなる画像ファイルで記録媒体170上の元の画像ファイルを書き換えさせる。ファイル管理情報も更新される。
選択された画像ファイルに「モノクロ化許容指定」がある場合には、データ量削減管理部162はステップS130の処理に進む。このステップにおいては、ファイル管理部166によって当該画像ファイルの読み出しを行わせ、その符号データを画像圧縮/伸長部150の符号生成部160に転送し、符号生成部160において当該データの色差Cr,Cbの符号を破棄させる処理を行わせる。そして、ファイル管理部166によって、処理後の符号データからなる画像ファイルで記録媒体170上の元の画像ファイルを書き換えさせる。ファイル管理情報も更新される。
次に、データ量削減管理部166は、更新後のファイル管理情報を参照して序列を決定するための必要な処理を行い、削減序列リストを更新する(ステップS132)。なお、「モノクロ化容認指定」又は「サイズ変更容認指定」のある画像ファイルは、データ量削減処理を1回適用した後はデータ量削減処理の対象から除外する。いずれの指定もない画像ファイルは、データ量削減処理の適用回数が規定回数に達したならば(例えば、最高解像度レベルの上位数ビットのサブビットプレーンの符号のみになったときに)、データ量削減処理の対象から除外する。
なお、「サイズ変更容認指定」のある画像ファイルについて、データ量削減処理を複数回適用させることも可能であり、そのような態様も本発明に包含される。また、「モノクロ化容認指定」のある画像ファイルについて、モノクロ化した後に「無指定」の場合と同様のデータ量削減処理を適用させることも可能であり、そのような態様も本発明に包含される。また、「サイズ変更容認指定」のある画像ファイルについて、タイル分割が行われているならば、いくつかのタイルの符号を破棄してデータ量削減を行うことも可能であり、そのような態様も本発明に包含される。
削減序列リストの更新後、システムコントローラ122は記録媒体170の空き容量を再度チェックし(ステップS120)、空き容量が不足しているならば(ステップS120,No)、ステップS122以降の処理を実行させる。
なお、任意時点で操作部124より自動削減処理の実行を指示することができる。この指示が入力されると、システムコントローラ122は図5に示すデータ量削減処理の手順を開始する。
記録済み画像データに対しデータ量削減処理を実施した場合の一番の問題点は、撮影者(ユーザ)が画質の低下を容認できるか否かである。本発明においては、前記の基準1乃至14のように、画質的観点から画像データのデータ量削減余力を判断し、データ量削減余力の大きい画像データを優先的に選択してデータ量削減処理を実施するため、データ量削減による画質の低下に関して撮影者の不満は生じにくい。また、前記の基準15及び16は撮影者の意向を考慮した判断基準であり、さらに、複数の基準の中から適用する基準を選択することができるため、データ量削減処理が実施される画像データの選択に撮影者の嗜好もしくは意思を反映させることもできるため、例えばファイルサイズの大きい画像データを単純に選んでデータ量削減処理を実施する構成に比べ、撮影者の高い満足度を得ることができる。さらに、データ量削減処理を実施すべき画像データを撮影者が直接選択する必要がなく、電子カメラ装置の使い勝手も向上する。
《動画撮影時の動作》
動画撮影時の動作の一例について、図6のフローチャートを参照して説明する。操作部124に含まれる不図示の動画撮影指示ボタンが押下されると、動画撮影指示がシステムコントローラ122より画像プロセッサ110に与えられ、画像プロセッサ110は動画撮影の条件でイメージセンサ104を駆動する。撮影された動画の各フレームの画像データは、図4のステップS100〜S104と同様の手順で圧縮されて記録媒体170に記録され、ファイル管理情報が更新され、また、図4のステップS106と同様に削減序列リストの更新が行われる(ステップS202)。ただし、動画の画像データはモーションJPEG2000のファィル形式の画像ファイルとして記録される。
各フレーム毎に、システムコントローラ122はファイル管理情報を参照し、記録媒体170の空き容量をチェックし、空き容量の不足が予想されるときには(ステップS204,Yes)、現在設定されていめ圧縮率より1段階高い圧縮率を画像圧縮/伸長部150に指定し(ステップS206)、また、データ量削減管理部162にデータ量削減処理を実行させる(ステップS208)。このステップS208の処理は図5に示した処理と同様であるが、ステップS120のような空き容量チェックは行わず、常に削減序列リストの上位にある所定数の画像ファイルに対するデータ量削減処理を実行する。
このように、記録媒体170の空き容量の不足が心配される場合に、圧縮率を上げて新たに記録されるフレーム画像のデータ量を減らすとともに、記録済み画像ファイルに対するデータ量削減を行うことにより、動画撮影の途中で空き容量不足のために記録が不可能になる事態を回避することができる。なお、圧縮率を変更せず、記録済み画像ファイルのデータ量削減のみを行わせることも可能であり、そのような態様も本発明に包含される。
《撮影者が介入するデータ量削減処理》
任意の時点で、操作部124より指示することにより、撮影者が介入するデータ量削減処理のモードを選択することができる。その動作の一例を図7のフローチャートを参照し説明する。
このモードが選択されると、システムコントローラ122はファイル管理情報を参照し、記録媒体170の空き容量から予想される撮影可能枚数を算出し、これを「データ量削減方法」の指定のための案内情報とともに画像プロセッサ110に送り、表示装置112に表示させ、撮影者に「サイズ変更許容指定」「モノクロ化許容指定」「指定なし」「終了」のいずれかを選択させる(ステップS300)。撮影者は、予め「サイズ変更許容指定」又は「サイズ変更許容指定」を行った画像ファイルに対してデータ量削減を行いたいときには、その指定を選択し、そのような指定のない画像ファイルに対してデータ量削減を行いたいときには「指定なし」を選択し、処理を終了したいとには「終了」を選択することができる。
撮影者により「終了」以外が選択されると、システムコントローラ122は、削減序列リストを参照し、上位にある画像ファイルより、そのファイル管理情報の「指定」情報を調べ、撮影者の選択した「指定」情報を持つ画像ファイルを見つけ、それをファイル管理部166に読み出させ、その符号データを画像圧縮/伸長部150に送り、最低解像度レベルの画像データを復元させる。そして、この画像データを画像プロセッサ110により表示装置112に縮小表示させ、撮影者にデータ量削減を実行するか否かの確認を求める(ステップS306)。すなわち、撮影者が選択した「指定」情報を持つ画像ファイルの縮小画像が表示され、そのデータ量削減を行うか否かを撮影者が判断することができる。
撮影者が操作部124でデータ量削減の実行を指示した場合には(ステップS308,Yes)、システムコントローラ122は、当該画像ファイルに対するデータ量削減処理をデータ量削減管理部162に実行させる(ステップS310)。このステップの処理内容は図5のステップS124〜S130の処理と同様である。ただし、この段階では削減序列リストの更新処理(図5、ステップS132に相当)は行わない。
この処理が終わると、システムコントローラ122はステップS300の処理に戻る。次回のステップS306の処理においては、前回縮小表示された画像ファイルより削減序列が遅い画像ファイルが選ばれて縮小表示される。
撮影者は、撮影可能枚数から空き容量が十分だと判断した場合には、ステップS300で終了を指示することができる。終了指示が入力されると(ステップS304,Yes)、システムコントローラ122は、データ量削減管理部162に削減序列リストの更新処理を行わせる(ステップS312)。この更新処理は図5のステップS132と同様である。
《各種指定動作》
前述のように、撮影直後又は任意時点で記録済みの画像ファイルに対し「お気に入り指定」「サイズ変更容認指定」「モノクロ化容認指定」を行うことができるが、その指定のための動作の一例を図8のフローチャートを参照し説明する。
撮影者が操作部124より、この動作モードを選択すると、システムコントローラ122は、ファイル管理情報を参照し、記録日付の新しい(又は記録日付の古い)ほうから、「指定」のない画像ファイルを1つ選択し、それをファイル管理部166に読み出させ、その符号データの伸長処理を画像圧縮/伸長部150に実行させて最低解像度レベルの画像データを復元させる。この画像データを画像プロセッサ110により表示装置112に縮小表示させ、撮影者に指定入力を促す(ステップS400)。動画については、例えば最初のフレームの画像ファイルを選び、その画像を縮小表示させる。
撮影者は、「お気に入り指定」「サイズ変更容認指定」「モノクロ化容認指定」「指定無し」又は「終了」を操作部124で選択することができる。
システムコントローラ122は、「お気に入り指定」「サイズ変更容認指定」又は「モノクロ化容認指定」が選択された場合には(ステップS402,Yes)、当該画像ファイルのファイル管理情報に指定内容を示す情報を設定する(ステップS404)。当該画像ファイルが動画の場合には、全フレームに対し同じ指定内容を示す情報を設定する。
システムコントローラ122は、ステップS400に戻り、前回選択した画像ファイルの次に記録日時が新しい(又は古い)「指定」のない画像ファイルを1つ選択してその画像を縮小表示させ、撮影者の指定入力を待ち、それに応じた処理を行う。撮影者から「終了」が入力されるまで、同様の処理が繰り返される。撮影者から「終了」が入力されると(ステップS406,Yes)、システムコントローラ122はデータ量削減管理部162に削減序列リストの更新処理を実行させ(ステップS408)、一連の動作を終了する。
前述の実施の形態においては、記録済み画像ファイルに対するデータ量削減処理のための手段として、画像圧縮/伸長部150の符号生成部160を利用したが、その手段を独立させてもよい。
また、前述の実施の形態においては、画像圧縮アルゴリズムとしてJPEG2000準拠の画像圧縮アルゴリズムを採用しているため、圧縮された符号データの一部廃棄によって記録済み画像ファイルのデータ量削減を行った。この方法は、符号データを伸長してから再圧縮する方法に比べて画質の劣化が少ない利点がある。しかし、再圧縮によりデータ量削減を行う方法を採用することも可能であり、そのような態様も本発明に包含される。
また、システムコントローラ122、画像圧縮/伸長部150、ファイル管理部166、データ量削減管理部162の全部又は一部を単一又は複数のプロセッサ(CPU,MPU)上でソフトウェアにより実現してもよい。換言すれば、図4乃至図8の各フローチャートに従って説明した処理手順をソフトウェアにより実行してもよい。パソコンなどの汎用のプロセッサ上で同様の処理手順をソフトウェアにより実施してもよい。また、そのためのプログラムと、同プログラムを記録した各種記録媒体も本発明に包含される。