(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明を実施するための形態について説明する。
図1は、本実施の形態における画像処理装置を搭載したデジタルカメラの一実施の形態の構成を示すブロック図である。デジタルカメラ100は、操作部材101と、撮像レンズ102と、撮像素子103と、制御装置104と、メモリカードスロット105と、モニタ106とを備えている。操作部材101は、ユーザによって操作される種々の入力部材、例えば電源スイッチ、レリーズボタン、マルチセレクタ、再生ボタン、削除ボタンなどを含んでいる。
【0010】
撮像レンズ102は、被写体像を撮像素子103の撮像面に結像するように配置されている。撮像レンズ102は、
図1では代表して1枚のレンズで表しているが、実際は複数の光学レンズから構成される。
【0011】
撮像素子103は、例えばCMOSなどのイメージセンサであり、撮像レンズ102により結像した被写体像を撮像して、撮像によって得られた画像信号を制御装置104へ出力する。撮像素子103の受光面には、周知のカラーフィルターが設けられている。カラーフィルターは、赤(R)色、青(B)色、および緑(G)色のいずれかの光を通過させる原色フィルタが画素位置に対応してベイヤー配列で構成された色分解フィルタである。撮像素子103は、このようなカラーフィルターを通して被写体像を撮像することにより、光の3原色ごとのカラー画像信号を出力する。
【0012】
撮像素子103で生成された画像信号は、不図示のA/D変換部でデジタル信号に変換され、RAWデータとして制御装置104に出力される。RAWデータとは、入射光の光量と出力信号値との関係が線形の関係となるデジタル画像であり、ベイヤー補間、ホワイトバランス変換、γ変換などが施されていない画像データである。
【0013】
制御装置104は、CPU、メモリ、およびその他の周辺回路により構成され、デジタルカメラ100全体の制御を行う。なお、制御装置104を構成するメモリには、SDRAMやフラッシュメモリが含まれる。SDRAMは、揮発性のメモリであって、CPUがプログラム実行時にプログラムを展開するためのワークメモリとして使用されたり、データを一時的に記録するためのバッファメモリとして使用されたりする。また、フラッシュメモリは、不揮発性のメモリであって、制御装置104が実行するプログラムのデータや、プログラム実行時に読み込まれる種々のパラメータなどが記録されている。
【0014】
メモリカードスロット105は、記憶媒体としてのメモリカードを挿入するためのスロットである。モニタ106は、デジタルカメラ100の背面に搭載された液晶モニタ(背面モニタ)である。
【0015】
制御装置104は、操作部材101のレリーズボタンが全押し操作されると、撮像素子103から入力されたRAWデータに対して後述する画像処理を施す。そして制御装置104は、上記画像処理後の画像データを、JPEG形式に圧縮してJPEG画像データを生成する。制御装置104は、生成したJPEG画像データをメモリカードスロット105に挿入されたメモリカードに書き込んで記録する。また、制御装置104は、操作部材101の再生ボタンが操作されると、メモリカードスロット105に挿入されているメモリカードに記録された画像を再生してモニタ106に表示させる。
【0016】
ところで、JPEG圧縮ではYCbCr空間を用いるため、JPEG圧縮を行う際には、RGB空間の画像データをYCbCr空間の画像データに変換する。具体的に、JPEG圧縮規格で採用されている、RGB空間からYCbCr空間への変換式を、次式(1)〜(3)に示す。
Y = Kr * R + Kg * G + Kb * B …(1)
Cb = {1/2 * (B-Y) / (1-Kb) }+ 128 …(2)
Cr = {1/2 * (R-Y) / (1-Kr) }+ 128 …(3)
【0017】
式(1)〜(3)において、例えば、Kr=0.299、Kg=0.587、Kb=0.114である。また、画像データが8ビットの場合、R信号の取り得る値の範囲は、0〜255である。ここで、式(1)〜(3)にR=0、G=0、B=0を代入すると、Cr=128となる。また、式(1)〜(3)にR=255、G=0、B=0を代入すると、Cr=255となる。すなわち、変換前のR信号では0〜255の256階調であったのが、変換後のCr信号では128〜255の128階調となり、階調数が1/2となる。なお、Cb信号でも同様に階調数が1/2となる。
【0018】
このように、JPEG圧縮の際にRGB空間の画像データをYCbCr空間の画像データに変換すると、Cr信号およびCb信号の階調数は、変換前におけるR信号およびB信号の階調数の1/2となる。したがって、輝度面(Y)でのトーンジャンプと比較して、色差面(CbCr)でのトーンジャンプがより目立ってしまう。また、トーンジャンプは、JPEGでの圧縮量が大きくなると、さらに目立ってしまう。
【0019】
このような問題を解決するため、本実施の形態において制御装置104は、
図2に例示する処理を実行する。制御装置104は、ユーザにより操作部材101のレリーズボタンが押下されると、
図2に例示する処理を実行するプログラムを起動する。
【0020】
ステップS1において、制御装置104は、所定の撮影処理を行って撮像素子103からRAWデータを取得し、ステップS2に進む。なお、このRAWデータは、12ビット深度を有しているとする。
【0021】
ステップS2において、制御装置104は、上記12ビットのRAWデータに対して公知のベイヤー補間処理を行って、ステップS3に進む。
【0022】
ステップS3において、制御装置104は、次式(4)〜(6)により、上記ベイヤー補間処理後の12ビットの画像データに対して公知の階調変換処理を行って、ニー補正、sRGB規格のガンマ補正、黒締め、コントラスト調整などを行い、ステップS4に進む。
【0023】
R’[x,y]=ganma(R[x,y]) …(4)
G’[x,y]=ganma(G[x,y]) …(5)
B’[x,y]=ganma(B[x,y]) …(6)
【0024】
なお、式(4)〜(6)において、[x,y]は、画素の座標であり、R[x,y]、G[x,y]、B[x,y]は、各画素における上記ベイヤー補間処理後のRGB値である。また、R’[x,y]、G’[x,y]、B’[x,y]は、階調変換処理後のRGB値である。さらに、ganma()は、階調変換を行う関数である。
【0025】
ステップS4において、制御装置104は、次式(7)〜(9)により、上記階調変換処理後の12ビットの画像データに対して、所定の3×3のマトリックスを用いて、RGB空間からYCbCr空間への色空間変換を行い、ステップS5に進む。ここで、彩度や色相を整える。
【0026】
Y[x,y] = Mycc[1,1] * R’[x,y] + Mycc[1,2] * G’[x,y] + Mycc[1,3] * B’[x,y] …(7)
Cr[x,y] = Mycc[2,1] * R’[x,y] + Mycc[2,2] * G’[x,y] + Mycc[2,3] * B’[x,y] …(8)
Cb[x,y] = Mycc[3,1] * R’[x,y] + Mycc[3,2] * G’[x,y] + Mycc[3,3] * B’[x,y] …(9)
【0027】
なお、式(7)〜(9)において、Y[x,y]、Cb[x,y]、Cr[x,y]は、色空間変換後のYCrCb値である。また、Mycc[a,b](a,bは1〜3)は、上記マトリックスのパラメータである。
【0028】
ステップS5において、制御装置104は、不図示の疑似乱数データ発生器で線形帰還シフトレジスタなどを用いて疑似乱数データを発生させ、ステップS6に進む。なお、この疑似乱数データは、−1から1までの値をとるものとする。
【0029】
ステップS6において、制御装置104は、次式(10)〜(12)により、ステップS4でYCbCr空間に変換した12ビットの画像データに対し、ステップS5で発生させた疑似乱数データを付加して、ステップS7に進む。
【0030】
Y’[x,y] = Y[x,y] + rand() * rndY …(10)
Cb’[x,y] = Cb[x,y] + rand() * rndCb …(11)
Cr’[x,y] = Cr[x,y] + rand() * rndCr …(12)
【0031】
なお、式(10)〜(12)において、Y’[x,y]、Cb’[x,y]、Cr’[x,y]は、疑似乱数データ付加後のYCrCb値である。また、rand()は、ステップS5で発生させた疑似乱数データである。さらに、rndY、rndCb、rndCrは、Y信号、Cb信号、Cr信号にそれぞれ付加する疑似乱数データの値の幅を決定する係数であり、rndCbおよびrndCrは、rndYよりも2〜4倍大きい値である。すなわち、CbCr信号には、Y信号に付加する疑似乱数データよりも2〜4倍程度の大きさの値を取り得る疑似乱数データを付加する。これにより、Y信号のトーンジャンプと比較してCbCr信号のトーンジャンプが目立つのを防ぐことができる。
【0032】
ステップS7において、制御装置104は、次式(13)〜(15)により、上記疑似乱数データを付加した12ビットの画像データを、8ビットの画像データへビット変換し、ステップS8に進む。ここでは、上位8ビットを取り出すようにビット変換を行う。なお、次式(13)〜(15)において、Y”[x,y]、Cb”[x,y]、Cr”[x,y]は、ビット変換後のYCrCb値である。
Y”[x,y] = Y’[x,y]/16 …(13)
Cb”[x,y] = Cb’[x,y]/16 …(14)
Cr”[x,y] = Cr’[x,y]/16 …(15)
【0033】
このとき下位4ビットの情報は失われるが、あらかじめ乱数が付加されているため、そのデータがある段階の大きさとなるか、次の段階の大きさになるかは確率分布となり、周辺の複数画素の平均値では8ビット以上の表現が可能になり、トーンジャンプの発生を防止することが可能になる。
【0034】
ステップS8において、制御装置104は、ステップS7で8ビットに変換したYCbCr画像データに対して公知のJPEG圧縮処理を施してJPEG画像データに変換し、ステップS9に進む。
【0035】
ステップS9において、制御装置104は、ステップS8で変換したJPEG画像データをメモリカードスロット105に挿入されたメモリカードに書き込んで保存し、
図2の処理を終了する。
【0036】
以上説明した実施の形態によれば、次の作用効果が得られる。
(1)デジタルカメラ100は、YCbCr色空間の画像データに対して、乱数データ(疑似乱数データ)を付加する制御装置104と、乱数データを付加したYCbCr色空間の画像データを、当該画像データよりもビット深度の少ないYCbCr色空間の画像データへビット変換する制御装置104と、を備え、制御装置104は、YCbCr色空間の画像データにおけるY信号、Cb信号、およびCr信号のそれぞれに乱数データを付加し、Cb信号およびCr信号に付加する乱数データは、Y信号に付加する乱数データよりも取り得る値の幅が大きいように構成したので、ざらつきをそれほど増加させずにビット変換後の画像データのトーンジャンプを目立たなくすることができる。また本実施形態では、ビット変換前の画像データ(12ビットの画像データ)に対して乱数データを付加するようにしたので、ビット変換後の画像データ(8ビットの画像データ)に対して乱数データを付加する場合と比較して、適切にトーンジャンプを低減することができる。
【0037】
(2)上記(1)のデジタルカメラ100において、上記ビット変換した画像データに対してJPEG圧縮処理を行う制御装置104をさらに備えるように構成したので、JPEG圧縮処理後の画像データにおいても、トーンジャンプを目立たなくすることができる。
【0038】
(変形例1)
上述したようにYCbCr画像データに疑似乱数データを付加した場合、JPEG圧縮前の情報量が増加することになるので、JPEG圧縮を行っても期待するほど圧縮されない場合もある。そこで、JPEG圧縮において、圧縮量を優先する圧縮量優先モードで圧縮するか、トーンジャンプの低減を優先するトーンジャンプ低減優先モードで圧縮するかを、ユーザが操作部材101を操作することで選択できるようにしてもよい。
【0039】
変形例1の制御装置104は、操作部材101からの操作信号に応じて圧縮量優先モードを選択した場合、12ビットのYCbCr画像データに疑似乱数データを付加せずに8ビットへ変換し、変換後の画像データに対してJPEG圧縮を行う。この圧縮量優先モードによれば、トーンジャンプが低減されないものの圧縮量を大きくすることができる。
【0040】
一方、制御装置104は、操作部材101からの操作信号に応じてトーンジャンプ低減優先モードを選択した場合、上述した実施の形態のように12ビットのYCbCr画像データに疑似乱数データを付加した後8ビットへ変換し、変換後の画像データに対してJPEG圧縮を行う。このトーンジャンプ低減優先モードによれば、圧縮量が圧縮量優先モードの場合よりも小さくなるもののトーンジャンプを低減することができる。
【0041】
(変形例2)
YCbCr色空間の画像データに付加する疑似乱数データの取り得る値の幅を、JPEG圧縮処理の圧縮量に応じて設定するようにしてもよい。この場合の制御装置104は、JPEG圧縮処理の圧縮量が大きいほど、上述したrndY、rndCb、rndCrの値を大きく設定して、YCbCr信号に付加する疑似乱数データの取り得る値の幅を大きくする。これにより、圧縮量が大きくなっても、トーンジャンプが目立つのを防ぐことができる。
【0042】
同様に、YCbCr信号に付加する疑似乱数データの取り得る値の幅を、JPEG圧縮処理の圧縮パラメータに応じて設定するようにしてもよい。JPEG圧縮処理の圧縮パラメータとしては、例えば、量子化係数や、サンプリング比(色差成分の間引き量を示す値)などがある。この場合の制御装置104は、圧縮量が大きくなる圧縮パラメータの設定であるほど、YCbCr信号に付加する疑似乱数データの取り得る値の幅を大きくする。
【0043】
(変形例3)
YCbCr色空間の画像データに付加する疑似乱数データの取り得る値の幅を、画像の乱雑度に応じて設定するようにしてもよい。この場合の制御装置104は、ステップS4で変換された12ビットのYCbCr画像データに対して、画像の乱雑度を解析する解析処理を実行する。この解析処理では、例えば、画像のエントロピーを算出して画像の乱雑度を求めればよい。そして制御装置104は、画像の乱雑度が低いほど、上述したrndY、rndCb、rndCrの値を大きく設定して、YCbCr信号に付加する疑似乱数データの取り得る値の幅を大きくする。一般的に、乱雑度が高い画像ではトーンジャンプが発生しにくいが、乱雑度が低い画像(すなわち整然とした画像、例えば空を撮影したグラデーションの画像など)ではトーンジャンプが発生しやすい。ゆえに、この変形例3によれば、乱雑度が低い画像の場合は、YCbCr信号に付加する疑似乱数データの取り得る値を大きくすることで、適切にトーンジャンプを抑制できる。また、乱雑度が高い画像の場合は、YCbCr信号に付加する疑似乱数データの取り得る値を小さくすることで、疑似乱数データの付加による情報量の増加を抑制することができる。
【0044】
(変形例4)
上述した実施の形態では、YCbCr色空間の画像データに付加する疑似乱数データの取り得る値の幅を、画像全体で同一とする例について説明した。しかしながら、制御装置104は、YCbCr色空間の画像データの部分ごとに、当該画像データに付加する疑似乱数データの取り得る値の幅を変えるようにしてもよい。
【0045】
この場合の制御装置104は、ステップS4で変換された12ビットのYCbCr画像データに対して、例えば、被写体を認識する被写体認識処理を実行する。なお、この被写体認識処理については、公知の方法を用いればよい。制御装置104は、被写体認識処理の結果、画像内で、トーンジャンプが発生しやすい被写体(例えば空や壁など)の部分に対しては、上述したrndY、rndCb、rndCrの値を大きく設定して、YCbCr信号に付加する疑似乱数データの取り得る値の幅を大きくする。一方、トーンジャンプが発生しにくい被写体(例えば人など)の部分に対しては、上述したrndY、rndCb、rndCrの値を小さく設定して、YCbCr信号に付加する疑似乱数データの取り得る値の幅を小さくする。変形例4によれば、トーンジャンプを適切に抑制することができるとともに、疑似乱数データの付加による情報量の増加も抑制することができる。
【0046】
(変形例5)
YCbCr信号に付加する疑似乱数データの取り得る値の幅を、ユーザが変更できるようにしてもよい。この場合、例えば、JPEG圧縮後の画像をモニタ106に表示させてユーザに目視確認させながら、操作部材101の操作によってYCbCr信号に付加する疑似乱数データの取り得る値の幅を変更できるようにする。こうすることにより、ユーザは、自身が許容できるトーンジャンプの度合いに応じて、YCbCr信号に付加する疑似乱数データの取り得る値の幅を選択することができる。
【0047】
(変形例6)
上述した実施の形態では、ビット変換前のY信号、Cb信号およびCr信号に対して、それぞれ疑似乱数データを付加する例について説明した。しかしながら、制御装置104は、Y信号には疑似乱数データを付加せず、Cb信号およびCr信号のみに、それぞれ疑似乱数データを付加するようにしてもよい。変形例6によっても、上述した実施の形態と同様に、トーンジャンプが目立ちやすい色差面(CbCr)においてトーンジャンプを抑制できるので、JPEG圧縮後の画像においてトーンジャンプを目立ちにくくすることができる。
【0048】
(変形例7)
上述した実施の形態では、ビット変換前のYCbCr色空間の画像データに対して疑似乱数データを付加する例について説明したが、再現不可能な真の乱数データを付加するようにしてもよい。この場合の制御装置104は、例えばダイオードの生成するノイズや熱雑音などの物理現象を用いて真の乱数データを生成するハードウェア乱数発生器から入力される真の乱数データを、ビット変換前のYCbCr色空間の画像データに付加する。
【0049】
(変形例8)
上述した実施形態では、デジタルカメラ100の制御装置104が
図2に示す処理を行う例を説明したが、
図2に示す処理を行う画像処理プログラムを
図3に示すコンピュータ200に実行させることにより、
図2に示す処理を行う画像処理装置を構成するようにしてもよい。
図2に示す処理を行う画像処理プログラムをコンピュータ200に取込んで使用する場合には、コンピュータ200のデータストレージ装置に当該画像処理プログラムをローディングした上で、当該画像処理プログラムを実行させる。
【0050】
コンピュータ200に対する上記画像処理プログラムのローディングは、上記画像処理プログラムを格納したCD−ROMなどの記憶媒体204をコンピュータ200にセットして行ってもよいし、ネットワークなどの通信回線201を経由する方法でコンピュータ200へローディングしてもよい。通信回線201を経由する場合は、通信回線201に接続されたサーバー(コンピュータ)202のストレージ装置203などに上記画像処理プログラムを格納しておく。上記画像処理プログラムは、記憶媒体や通信回線を介する提供など、種々の形態のコンピュータプログラム製品として供給することができる。
【0051】
なお、コンピュータ200で画像処理装置を構成する場合は、
図2のステップS1に代えて、RAWデータが記録された記録媒体(メモリカードなど)から、当該RAWデータを読みだし、ステップS2以降の処理を行う。
【0052】
以上の説明はあくまで一例であり、上記の実施形態の構成に何ら限定されるものではない。また、上記実施形態に各変形例の構成を適宜組み合わせてもかまわない。