以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の画像処理装置は、カラー情報を構成するための複数の色情報のうちのいずれか1色を計測するカラー画像センサによって撮像された複数の画素により構成される画像データ(例えば、RAWデータ)を処理する画像処理装置(例えば、図30のデジタルビデオカメラ701)であって、前記画像データの入力をうけて、階調変換を行う階調変換処理手段と、前記階調変換処理手段により階調変換された前記画像データを、カラー情報を構成するための複数の前記色情報のうちのいずれかにより各画素が構成されることにより複数の前記色情報を全て有する画像データに変換する画像変換処理手段とを備え、前記階調変換処理手段は、注目する画素位置に存在する注目画素の輝度に応じた第1の濃淡値を算出する第1の濃淡値算出手段(例えば、図33の濃淡値算出部761)と、前記第1の濃淡値算出手段により算出された前記第1の濃淡値に対して、階調変換を行うことにより第2の濃淡値を算出する第2の濃淡値算出手段(例えば、図33の濃淡値階調変換部762)と、前記第1の濃淡値算出手段により算出された前記第1の濃淡値、前記第2の濃淡値算出手段により算出された前記第2の濃淡値、および、前記注目画素の画素値に基づいて、前記注目画素の階調変換された画素値を算出する画素値階調変換手段(例えば、図33のモザイク画素値階調変換部763)とを備える。
前記第1の濃淡値算出手段は、前記注目画素の近傍の複数の画素の画素値を用いて前記注目画素の輝度に相当する値を算出する輝度算出手段(例えば、図33の輝度算出部771)を備えることができる。
前記第1の濃淡値算出手段は、前記輝度算出手段により算出された前記注目画素の輝度に相当する値を非線形変換する第1の非線形変換手段(例えば、図33の非線形変換部772)を更に備えることができ、前記画素値階調変換手段は、前記注目画素の画素値を非線形変換する第2の非線形変換手段(例えば、図33の非線形変換部811)を備えることができる。
前記画素値階調変換手段は、前記第1の濃淡値に対する前記注目画素の画素値の比率を算出する比率算出手段(例えば、図35の除算部891)と、前記比率算出手段により算出された前記比率に、前記第2の濃淡値を乗じる乗算手段(例えば、図35の乗算部892)とを備えることができる。
前記画素値階調変換手段は、前記第1の濃淡値に対する前記注目画素の画素値の差分を算出する差分算出手段(例えば、図36の減算部893)と、前記差分算出手段により算出された前記差分に、前記第2の濃淡値を加算する加算手段(例えば、図36の加算部894)とを備えることができる。
前記第2の濃淡値算出手段は、トーンカーブによって前記第1の濃淡値の階調を変換する第1のトーンカーブ補正手段(例えば、図33のマッピング部801)を備えることができる。
前記第2の濃淡値算出手段は、前記画像データを構成する全画素における前記第1の濃淡値の分布に基づいて前記第1のトーンカーブ補正手段において用いられる前記トーンカーブを算出するトーンカーブ算出手段(例えば、図33のトーンカーブ算出部781)を更に備えることができる。
前記第2の濃淡値算出手段は、前記第1の濃淡値の低周波成分からなる大局輝度画像の輝度値である大局輝度値を算出する大局輝度算出手段(例えば、図33の大局輝度算出部784)と、前記トーンカーブに基づいて前記大局輝度値の階調を補正する第2のトーンカーブ補正手段(例えば、図33のマッピング部801)と、前記トーンカーブの傾き、および、階調が補正された前記大局輝度値に基づいて、階調が補正された前記第1の濃淡値のコントラストを補正するコントラスト補正手段(例えば、図33のコントラスト補正部786)とを備えることができる。
前記トーンカーブ算出手段は、前記第1の濃淡値の平均値である平均輝度値(例えば、平均レベルLaverage(nl))、前記画像データの画素数に占める第1の境界値以下の輝度の画素数の比率がほぼ所定の第1の値となる前記第1の境界値(例えば、裾野値Ldark(nl))、および、前記画像データの画素数に占める第2の境界値(例えば、裾野値Lbright(nl))以下の輝度の画素数の比率がほぼ所定の第2の値となる前記第2の境界値に基づいて、前記トーンカーブを算出することができる。
前記トーンカーブ算出手段は、前記画像データにおける現在のフレームと1つ以上前のフレームとの間で、前記平均輝度値、前記第1の境界値、および、前記第2の境界値を時間平滑化する時間平滑化手段(例えば、図6の時間平滑化部223)をさらに含むことができ、前記時間平滑化手段により時間平滑化された前記平均輝度値(例えば、平均レベルLaverage-ts(nl))、時間平滑化された前記第1の境界値(例えば、裾野値Ldark-ts(nl))、および、時間平滑化された前記第2の境界値(例えば、裾野値Lbright-ts(nl))に基づいて、前記トーンカーブを算出することができる。
前記大局輝度算出手段は、前記画像データを構成する所定のフレームを縮小した縮小画像を生成する縮小画像生成手段(例えば、図33の縮小画像生成部791)と、前記大局輝度画像が前記所定のフレームの画像データと同じ画素数になるように前記縮小画像を補間することにより前記大局輝度値を算出する補間手段(例えば、図33の補間部793)とを含むことができる。
前記画像データの入力をうけて、ホワイトバランスを調整するホワイトバランス調整手段(例えば、図31のホワイトバランス部731)と、情報を外部に出力する出力手段(例えば、図30のI/F713)とを更に備えることができ、前記階調変換処理手段は、前記ホワイトバランス調整手段によるホワイトバランスが調整された前記画像データの階調変換を行うことができ、前記出力手段は、前記画像変換処理手段により得られた、カラー情報を構成するための複数の前記色情報により各画素が構成される前記画像データを外部に出力することができる。
前記画像データの入力をうけて、ホワイトバランスを調整するホワイトバランス調整手段(例えば、図31のホワイトバランス部731)と、カラー情報を構成するための複数の前記色情報のうちのいずれかにより各画素が構成されることにより複数の前記色情報を全て有する画像データ(例えば、モザイク画像)を、全画素が同一の前記色情報で構成される複数の単色画像データ(例えば、デモザイク画像)に変換する画像データ変換手段(例えば、図31のデモザイク部733)とを更に備えることができ、前記階調変換処理手段は、前記ホワイトバランス調整手段によるホワイトバランスが調整された前記画像データの階調変換を行うことができ、前記画像データ変換手段は、前記画像変換処理手段により得られた、カラー情報を構成するための複数の前記色情報のうちのいずれかにより各画素が構成されることにより複数の前記色情報を全て有する前記画像データを、全画素が同一の前記色情報で構成される複数の単色画像データに変換することができる。
本発明の一側面の画像処理方法は、カラー情報を構成するための複数の色情報のうちのいずれか1色を計測するカラー画像センサによって撮像された複数の画素により構成される画像データ(例えば、RAWデータ)を処理する画像処理装置(例えば、図30のデジタルビデオカメラ701)の画像処理方法であって、前記画像データの入力をうけて、階調変換を行うとき、注目する画素位置に存在する注目画素の輝度に応じた第1の濃淡値を算出し(例えば、図37のステップS255の処理)、算出された前記第1の濃淡値に対して、階調変換を行うことにより第2の濃淡値を算出し(例えば、図37のステップS258乃至ステップS260の処理)、前記第1の濃淡値、前記第2の濃淡値、および、前記注目画素の画素値に基づいて、前記注目画素の階調変換された画素値を算出し(例えば、図38のステップS261乃至ステップS264の処理)、階調変換された前記画像データを、カラー情報を構成するための複数の前記色情報のうちのいずれかにより各画素が構成されることにより複数の前記色情報を全て有する画像データに変換するステップを含む。
本発明の一側面のプログラムは、カラー情報を構成するための複数の色情報のうちのいずれか1色を計測するカラー画像センサによって撮像された複数の画素により構成される画像データ(例えば、RAWデータ)の画像処理をコンピュータに実行させるためのプログラムであって、前記画像データの入力をうけて、階調変換を行うとき、注目する画素位置に存在する注目画素の輝度に応じた第1の濃淡値を算出し(例えば、図37のステップS255の処理)、算出された前記第1の濃淡値に対して、階調変換を行うことにより第2の濃淡値を算出し(例えば、図37のステップS258乃至ステップS260の処理)、前記第1の濃淡値、前記第2の濃淡値、および、前記注目画素の画素値に基づいて、前記注目画素の階調変換された画素値を算出し(例えば、図38のステップS261乃至ステップS264の処理)、階調変換された前記画像データを、カラー情報を構成するための複数の前記色情報のうちのいずれかにより各画素が構成されることにより複数の前記色情報を全て有する画像データに変換するステップを含む画像処理をコンピュータに実行させる。
以下、図を参照して、本発明の実施の形態について説明する。
図2は、本発明を適用したデジタルビデオカメラの一実施の形態を示すブロック図である。デジタルビデオカメラ101は、レンズ111、絞り112、画像センサ113、相関2重サンプリング回路(CDS)114 、A/Dコンバータ115、DSP(Digital Signal Processor)ブロック116、タイミングジェネレータ(TG)117、LCD(Liquid Crystal Display)ドライバ118、LCD119、CODEC(Compression/Decompression)120、メモリ121、CPU122、および、入力デバイス123を含むように構成される。なお、DSPブロック116は、信号処理用のプロセッサ(例えば、DSP)と画像データを保持するRAM(Random Access Memory)などのメモリなどにより構成されるブロックであり、プロセッサが所定のプログラムを実行することにより、後述する画像処理を行う。なお、以下、DSPブロック116を、単にDSP116と呼ぶ。
レンズ111および絞り112などからなる光学系を通過した被写体からの入射光は、まず、画像センサ113の撮像面上の各受光素子に到達し、受光素子による光電変換により電気信号に変換される。画像センサ113から出力された電気信号は、相関2重サンプリング回路114によってノイズが除去され、A/Dコンバータ115によってデジタル化された後、デジタル化された画像データがDSP116内のメモリに一時的に格納される。タイミングジェネレータ117は、一定のフレームレートにより画像データが取り込まれるように、相関2重サンプリング回路114、A/Dコンバータ115、および、DSP116により構成される信号処理系を制御する。すなわち、DSP116には、一定のフレームレートで画像データのストリームが供給される。
なお、画像センサ113は、一般的なCCD(Charge Coupled Device)などの画像センサよりダイナミックレンジが広く、飽和したり、ノイズを発生させたりすることなく、被写体の暗い部分から明るい部分までを撮像することができる。従って、A/Dコンバータ115は、入力される電気信号を、通常のデジタルビデオカメラの階調数(例えば、10乃至12ビット程度のデータにより表現できる階調数)よりも多い階調数(例えば、14乃至16ビット程度のデータにより表現できる階調数)の画像データに変換する。
DSP116は、画像データのダイナミックレンジが、例えばLCD119が表示可能なダイナミックレンジになるように、後述する画像処理を画像データに施した後、画像処理を施した画像データを、必要に応じて、LCDドライバ118またはCODEC120に供給する。
LCDドライバ118は、DSP116から供給される画像データをアナログの画像信号に変換する。LCDドライバ118は、デジタルビデオカメラ101のファインダであるLCD119にアナログの画像信号を供給し、画像信号に基づく画像を表示させる。
CODEC120は、DSP116から供給される画像データを所定の方式により符号化し、符号化した画像データを、半導体、磁気記録媒体、光磁気記録媒体、光記録媒体などよりなるメモリ121に記録させる。
CPU122は、例えば、シャッタボタンなどの操作ボタンなどにより構成される入力デバイス123を操作することによりユーザにより入力された指令などに基づいて、デジタルビデオカメラ101の全体の処理を制御する。
図3は、DSP116の内部のプロセッサ(演算ユニット)が、所定のプログラムを実行することにより実現される機能の構成の例を示すブロック図である。DSP116の内部のプロセッサが所定のプログラムを実行することにより、デモザイク部141、ホワイトバランス部142、階調変換部143、ガンマ補正部144、および、YC変換部145を含む機能が実現される。
デモザイク部141は、A/Dコンバータ115によりA/D変換された画像データであるモザイク画像を取得する。モザイク画像は、R,G,Bのうちいずれかの色成分に対応するデータが1つの画素に格納され、例えば、Bayer配列と呼ばれる色配列に従って各画素が配置されている画像である。デモザイク部141は、1つの画素がR,G,B成分を全て有するようにするデモザイク処理をモザイク画像に施す。これにより、R,G,Bの3つの色成分にそれぞれ対応するR画像、G画像、B画像の3つの画像データが生成される。デモザイク部141は、生成したR画像、G画像、B画像の3つの画像データをホワイトバランス部142に供給する。
なお、以下、R画像、G画像、B画像の3つの画像データをまとめてRGB画像とも称する。また、以下、モザイク画像の画素位置pにおける画素値をM(p)とする。さらに、以下、デモザイク処理が施された画像データの画素位置pにおける画素値を[R(p), G(p), B(p)]とする。なお、R(p)はR成分の画素値であり、G(p)はG成分の画素値であり、B(p)はB成分の画素値である。
ホワイトバランス部142は、RGB画像の各画素値に適切な係数をかけることにより、被写体の無彩色の部分の色バランスが実際に無彩色となるように、RGB画像のホワイトバランスを調整する。ホワイトバランス部142は、ホワイトバランスを調整したRGB画像を階調変換部143に供給する。なお、以下、ホワイトバランスが調整された画像データの画素位置pにおける画素値を[R w(p), G w(p), B w(p)]とする。なお、R w(p)はR成分の画素値であり、G w(p)はG成分の画素値であり、B w(p)はB成分の画素値である。
階調変換部143は、図16などを参照して後述するように、ホワイトバランスが調整されたRGB画像に、階調変換処理を施す。階調変換部143は、階調変換を施したRGB画像をガンマ補正部144に供給する。なお、以下、階調変換処理が施された画像データの画素位置pにおける画素値を[R u(p), G u(p), B u(p)]とする。なお、R u(p)はR成分の画素値であり、G u(p)はG成分の画素値であり、B u(p)はB成分の画素値である。
ガンマ補正部144は、階調変換が施されたRGB画像にガンマ補正を施す。ガンマ補正部144は、ガンマ補正を施したRGB画像をYC変換部145に供給する。なお、以下、ガンマ補正が施された画像データの画素位置pにおける画素値を[R uγ(p), G uγ(p), B uγ(p)]とする。なお、R uγ(p)はR成分の画素値であり、G uγ(p)はG成分の画素値であり、B uγ(p)はB成分の画素値である。
YC変換部145は、ガンマ補正が施されたRGB画像に対して、YCマトリックス処理およびクロマ成分に対する帯域制限を行うことにより、輝度成分(Y成分)により構成されるY画像、および、色差成分(CbまたはCr成分)により構成されるC画像を生成する。YC変換部145は、生成したY画像およびC画像を、必要に応じて、LCDドライバ118またはCODEC120に供給する。なお、以下、YC変換部145から出力される画像データの画素位置pにおける画素値を[Y(p), C(p)]とする。なお、Y(p)はY画像における輝度成分の値であり、C(p)はC画像における色差成分の値である。
図4は、階調変換部143の機能の構成の例を示すブロック図である。階調変換部143は、輝度算出部161、非線形変換部162−1乃至162−4、トーンカーブ算出部163、トーンカーブメモリ164、γ_compパラメータメモリ165、大局輝度算出部166、階調変換部167、コントラスト補正部168、階調補正部169−1乃至169−3、および、非線形逆変換部170−1乃至170−3を含むように構成される。
輝度算出部161は、図16を参照して後述するように、ホワイトバランスが調整されたRGB画像の画素値Rw(p),Gw(p),Bw(p)から、その画素位置に対応する輝度成分の値(輝度値L(p))を算出する。輝度算出部161は、算出した輝度値L(p)を非線形変換部162−4に出力する。
非線形変換部162−1乃至162−3は、図16を参照して後述するように、それぞれ、ホワイトバランスが調整されたRGB画像の画素値Rw(p),Gw(p),Bw(p)を非線形変換する。非線形変換部162−1乃至162−3は、それぞれ、非線形変換することにより算出した画素値R(nl)(p),G(nl)(p)またはB(nl)(p)を、階調補正部169−1乃至169−3に出力する。
非線形変換部162−4は、図16を参照して後述するように、輝度値L(p)を非線形変換する。非線形変換部162−4は、非線形変換することにより算出した輝度値L(nl)(p)を、トーンカーブ算出部163、階調補正部169−1乃至169−3、縮小画像生成部181、補間部183、および、マッピング部191−1に出力する。
なお、以下、非線形変換部162−1乃至162−4を個々に区別する必要がない場合、単に、非線形変換部162と称する。
トーンカーブ算出部163は、図24を参照して後述するように、非線形変換された輝度値L(nl)(p)、および、後述する大局輝度値Ll(nl)(p)の階調を圧縮するために適用するトーンカーブを算出する。トーンカーブ算出部163は、算出したトーンカーブを表すルックアップテーブル(輝度値の変換対応表)をトーンカーブメモリ164に記憶させる。また、トーンカーブ算出部163は、図24を参照して後述するように、トーンカーブの傾きの代表値であるγ_compパラメータを算出する。トーンカーブ算出部163は、γ_compパラメータをγ_compパラメータメモリ165に記憶させる。
大局輝度算出部166は、輝度値L(nl)(p)からなる画像のごく低周波成分からななる画像(以下、大局輝度画像と称する)の輝度値である大局輝度値Ll(nl)(p)を算出する。大局輝度算出部166は、縮小画像生成部181、縮小画像メモリ182、および、補間部183を含むように構成される。
縮小画像生成部181は、図26を参照して後述するように、輝度値L(nl)(p)からなる画像を縮小した縮小画像を生成する。具体的には、縮小画像生成部181は、輝度値L(nl)(p)からなる画像を、横wr×縦hr個のブロックに分割し、分割したブロックごとの輝度値L(nl)(p)の平均値を対応するブロックと同様の順番に配列した横wr×縦hr画素の縮小画像を生成する。縮小画像生成部181は、生成した縮小画像を縮小画像メモリ182に記憶させる。
補間部183は、図20を参照して後述するように、縮小画像を3次補間により元の画像と同じ画素値になるように拡大した画像を構成する大局輝度値Ll(nl)(p)を算出する。補間部183は、算出した大局輝度値Ll(nl)(p)をマッピング部191−2に出力する。
階調変換部167は、輝度値L(nl)(p)および大局輝度値Ll(nl)(p)の階調を圧縮する。階調変換部167は、マッピング部191−1,191−2を含むように構成される。
マッピング部191−1は、トーンカーブを表すルックアップテーブルをトーンカーブメモリ164から読み込む。マッピング部191−1は、読み出したルックアップテーブル、すなわち、トーンカーブに基づいて、輝度値L(nl)(p)の階調を圧縮する。マッピング部191−1は、階調を圧縮した輝度値Lc(nl)(p)をコントラスト補正部168に出力する。
マッピング部191−2は、トーンカーブを表すルックアップテーブルをトーンカーブメモリ164から読み込む。マッピング部191−1は、読み出したルックアップテーブル、すなわち、トーンカーブに基づいて、大局輝度値Ll(nl)(p)の階調を圧縮する。マッピング部191−2は、階調を圧縮した大局輝度値Lcl(nl)(p)をコントラスト補正部168に出力する。
コントラスト補正部168は、図22を参照して後述するように、γ_compパラメータ、および、トーンカーブにより階調が圧縮された大局輝度値Lcl(nl)(p)に基づいて、トーンカーブにより階調が圧縮された輝度値Lc(nl)(p)からなる画像のコントラストを補正する。コントラスト補正部168は、コントラストを補正した輝度値Lu(nl)(p)を階調補正部169−1乃至169−3に出力する。
階調補正部169−1乃至169−3は、図17を参照して後述するように、それぞれ、非線形変換された画素値R(nl)(p),G(nl)(p)、または、B(nl)(p)の階調を補正(変換)する。階調補正部169−1乃至169−3は、それぞれ、階調補正した画素値R u(nl)(p),G u(nl)(p)、または、B u(nl) (p)を、非線形逆変換部170−1乃至170−3に出力する。
非線形逆変換部170−1乃至170−3は、それぞれ、階調補正された画素値Ru(nl)(p),Gu(nl)(p)、または、Bu(nl)(p)に、非線形変換部162−1乃至162−3による非線形変換の逆変換となる非線形逆変換を施す。非線形逆変換部170−1乃至170−3は、それぞれ、非線形逆変換した画素値Ru(p),Gu(p)、または、Bu(p)を、ガンマ補正部144に出力する。
なお、階調変換部143は、各部の処理の内容に基づいて、大きく3つの部分に分けることができる。第1の部分は、輝度算出部161、非線形変換部162−4、トーンカーブ算出部163、および、縮小画像生成部181により構成される部分である。すなわち、縮小画像の生成と、トーンカーブおよびγ_compパラメータを算出する部分である。第2の部分は、輝度算出部161、非線形変換部162−4、および、トーンカーブ算出部163乃至コントラスト補正部168により構成される部分である。すなわち、第1の部分により生成または算出された縮小画像、トーンカーブおよびγ_compパラメータを用いて、入力画像の各画素の輝度値に対して、階調を圧縮し、コントラストの補正を行う部分である。第3の部分は、非線形変換部162−1乃至162−3、階調補正部169−1乃至169−3、および、非線形逆変換部170−1乃至170−3により構成される部分である。すなわち、第2の部分により階調変換された各画素の輝度値を用いて、各画素のR、G、B値の階調の補正を行う部分である。
図5は、図4の非線形変換部162の機能の構成の例を示すブロック図である。非線形変換部162は、マッピング部201および変換曲線メモリ202を含むように構成される。
マッピング部201は、変換曲線メモリ202に記憶されている変換曲線を表すルックアップテーブルに基づいて、外部から入力される画素値または輝度値を非線形変換する。マッピング部201は、非線形変換した画素値または輝度値を外部に出力する。
図6は、図4のトーンカーブ算出部163の機能の構成の例を示すブロック図である。トーンカーブ算出部163は、輝度域算出部221、平均レベル算出部222、時間平滑化部223、および、スプライン発生部224を含むように構成される。また、時間平滑化部223は、時間平滑化部223−1乃至223−3の3つの時間平滑化部を含む。
輝度域算出部221は、輝度値L(nl)(p)を、非線形変換部162−4から取得する。また、輝度域算出部221は、輝度値のノイズレベルを示すnoiseLevel(nl)、および、輝度値の飽和レベルを示すsaturationLevel(nl)を、DSP116の図示せぬ内部のメモリから読み込む。輝度域算出部221は、図24を参照して後述するように、輝度値L(nl)(p)の分布において、全体の画素数に占める所定の境界値以下の輝度の画素数の比率がほぼ所定の値(例えば、0.5%)となる境界値である裾野値Ldark(nl)、および、全体の画素数に占める所定の境界値以上の輝度の画素数の比率がほぼ所定の値(例えば、0.5%)となる境界値である裾野値Lbright(nl)を算出する。輝度域算出部221は、裾野値Ldark(nl)を時間平滑化部223−1に出力し、裾野値Lbright(nl)を時間平滑化部223−2に出力する。
平均レベル算出部222は、輝度値L(nl)(p)を、非線形変換部162−4から取得する。平均レベル算出部222は、noiseLevel(nl)およびsaturationLevel(nl)を、DSP116の図示せぬ内部のメモリから読み込む。平均レベル算出部222は、図24を参照して後述するように、輝度値L(nl)(p)の平均レベルLaverage(nl)を算出する。平均レベル算出部222は、平均レベルLaverage(nl)を時間平滑化部223−3に出力する。
時間平滑化部223−1乃至223−3は、例えば、IIR(Infinite Impulse Response)フィルタにより構成される。時間平滑化部223−1は、裾野値Ldark(nl)を時間平滑化し、時間平滑化した裾野値Ldark-ts(nl)をスプライン発生部224に出力する。時間平滑化部223−2は、裾野値Lbright(nl)を時間平滑化し、時間平滑化した裾野値Lbright-ts(nl)をスプライン発生部224に出力する。時間平滑化部223−3は、裾野値Laverage(nl)を時間平滑化し、時間平滑化した裾野値Laverage-ts(nl)をスプライン発生部224に出力する。
スプライン発生部224は、図24を参照して後述するように、裾野値Ldark-ts(nl)、裾野値Lbright-ts(nl)、および、裾野値Laverage-ts(nl)に基づいて、トーンカーブを生成(算出)する。スプライン発生部224は、生成したトーンカーブを表すルックアップテーブルをトーンカーブメモリ164に記憶させる。また、スプライン発生部224は、図24を参照して後述するように、γ_compパラメータを算出する。スプライン発生部224は、γ_compパラメータをγ_compパラメータメモリ165に記憶させる。
図7は、図6の輝度域算出部221の機能の構成の例を示す図である。輝度域算出部221は、間引き部241、飽和画素除外部242、ソーティング部243、および、ソーティング部244を含むように構成される。
間引き部241は、非線形変換部162−4から入力される輝度値L(nl)(p)の画素位置pが、所定の間隔ごとに設けられているサンプリング位置に合致するか否かを判定し、サンプリング位置に合致すると判定した場合、輝度値L(nl)(p)を飽和画素除外部242に出力する。
飽和画素除外部242は、noiseLevel(nl)およびsaturationLevel(nl)を、DSP116の図示せぬ内部のメモリから読み込む。飽和画素除外部242は、間引き部241から入力される輝度値L(nl)(p)が、所定のnoiseLevel(nl)以上かつsaturationLevel(nl)以下であると判定した場合、ソーティング部243および244に輝度値L(nl)(p)を出力する。
ソーティング部243は、比較部251−1乃至251−k、および、各比較部に対応するレジスタ252−1乃至252−kを含むように構成される。なお、以下、比較部251−1乃至251−kを個々に区別する必要がない場合、単に、比較部251と称し、レジスタ252−1乃至252−kを個々に区別する必要がない場合、単に、レジスタ252と称する。
比較部251−1は、飽和画素除外部242から入力される輝度値L(nl)(p)とレジスタ252−1の値を比較する。輝度値L(nl)(p)がレジスタ252−1の値より小さい場合、比較部251−1は、現在のレジスタ252−1の値を後段の比較部251に出力し、輝度値L(nl)(p)をレジスタ252−1に記憶させる。レジスタ252−1の値を輝度値L(nl)(p)がレジスタ252の値以上である場合、比較部251−1は、輝度値L(nl)(p)をそのまま後段の比較部251−2に出力する。
比較部251−2は、前段の比較部251−1から入力された値とレジスタ252−2との値を比較する。比較部251−1から入力された値がレジスタ252−2の値より小さい場合、比較部251−2は、レジスタ252−2の値を後段の比較部251−3に出力し、比較部251−1から入力された値をレジスタ252−2に記憶させる。比較部251−1から入力された値がレジスタ252−2の値以上である場合、比較部251−2は、比較部251−1から入力された値をそのまま後段の比較部251−3に出力する。比較部251−3乃至251−kも、比較部251−2と同様の処理を行う。その結果、入力された輝度値L(nl)(p)のうち、最小値からk番目に小さい値までが、レジスタ252−1乃至252−kに昇順に記憶される。
ソーティング部243は、1フレーム分の画像の輝度値L(nl)(p)のソート後に、レジスタ252−kに記憶されている値を裾野値Ldark(nl)として、時間平滑化部223−1に出力する。
ソーティング部244は、比較部261−1乃至261−k、および、各比較部に対応するレジスタ262−1乃至262−kを含むように構成される。なお、以下、比較部261−1乃至261−kを個々に区別する必要がない場合、単に、比較部261と称し、レジスタ262−1乃至262−kを個々に区別する必要がない場合、単に、レジスタ262と称する。
比較部261−1は、飽和画素除外部242から入力される輝度値L(nl)(p)とレジスタ262−1の値を比較する。輝度値L(nl)(p)がレジスタ262−1の値より大きい場合、比較部261−1は、現在のレジスタ262−1の値を後段の比較部261に出力し、輝度値L(nl)(p)をレジスタ262−1に記憶させる。レジスタ262−1の値を輝度値L(nl)(p)がレジスタ262の値以下である場合、比較部261−1は、輝度値L(nl)(p)をそのまま後段の比較部261−2に出力する。
比較部261−2は、前段の比較部261−1から入力された値とレジスタ262−2との値を比較する。比較部261−1から入力された値がレジスタ262−2の値より大きい場合、比較部261−2は、レジスタ262−2の値を後段の比較部261−3に出力し、比較部261−1から入力された値をレジスタ262−2に記憶させる。比較部261−1から入力された値がレジスタ262−2の値以下である場合、比較部261−2は、比較部261−1から入力された値をそのまま後段の比較部261−3に出力する。比較部261−3乃至261−kも、比較部261−2と同様の処理を行う。その結果、入力された輝度値L(nl)(p)のうち、最大値からk番目に大きい値までが、レジスタ262−1乃至262−kに降順に記憶される。
ソーティング部244は、1フレーム分の画素の輝度値L(nl)(p)のソート後に、レジスタ262−kに記憶されている値を裾野値Lbright(nl)として、時間平滑化部223−2に出力する。
図8は、図6の平均レベル算出部222の機能の構成の例を示すブロック図である。平均レベル算出部222は、飽和画素除外部281および平均値算出部282を含むように構成される。
飽和画素除外部281は、noiseLevel(nl)およびsaturationLevel(nl)を、DSP116の図示せぬ内部のメモリから読み込む。飽和画素除外部281は、非線形変換部162−4から入力される輝度値L(nl)(p)が、所定のnoiseLevel(nl)以上かつsaturationLevel(nl)以下であると判定した場合、平均値算出部282の加算部291およびカウンタ293に輝度値L(nl)(p)を出力する。
平均値算出部282は、加算部291、レジスタ292、カウンタ293、および、除算部294を含むように構成される。
加算部291は、飽和画素除外部281から入力される輝度値L(nl)(p)を、レジスタ292に記憶されている値に加算して、レジスタ292に記憶させる。すなわち、レジスタ292には、輝度値L(nl)(p)の合計値である輝度合計値が記憶される。
カウンタ293は、飽和画素除外部281から輝度値L(nl)(p)が入力される毎に、カウンタの値を1つインクリメントし、レジスタ292に記憶されている輝度合計値に加算された輝度値L(nl)(p)の数(画素数)をカウントする。
除算部294は、1フレーム分の画素の輝度値L(nl)(p)が加算された後に、レジスタ292の値を、カウンタ293のカウンタ値で割ることにより、輝度値L(nl)(p)の平均レベルLaverage(nl)を算出する。除算部294は、時間平滑化部223−3に平均レベルLaverage(nl)を出力する。
図9は、図6の時間平滑化部223−1乃至223−3の機能の構成の例を示すブロック図である。時間平滑化部223は、乗算部311、乗算部312、加算部313、および、レジスタ314を含むように構成される。
乗算部311は、所定の平滑化係数sc1を、DSP116の図示せぬ内部のメモリから読み込む。乗算部311は、外部から入力される値(例えば、裾野値Ldark(nl)、裾野値Lbright(nl)、または、平均レベルLaverage(nl))に平滑化係数sc1を乗じた値を加算部313に出力する。
乗算部311は、所定の平滑化係数sc2を、DSP116の図示せぬ内部のメモリから読み込む。乗算部311は、レジスタ314に記憶されている値(例えば、1つ前のフレームに対応する時間平滑化された裾野値Ldark-ts-pre(nl)、裾野値Lbright-ts-pre (nl)、または、平均レベルLaverage-ts-pre (nl))に平滑化係数sc2を乗じた値を加算部313に出力する。
加算部313は、乗算部311および312から入力される値を加算した値(例えば、時間平滑化した裾野値Ldark-ts(nl)、裾野値Lbright-ts(nl)、または、平均レベルLaverage-ts(nl))を外部に出力するとともに、レジスタ314に記憶させる。
図10は、図6のスプライン発生部224の機能の構成の例を示すブロック図である。スプライン発生部224は、コントロールポイント設定部331、曲線描画部332、および、γ算出部333を含むように構成される。
コントロールポイント設定部331は、時間平滑化部223−1から裾野値Ldark-ts(nl)を取得し、時間平滑化部223−2から裾野値Lbright-ts(nl)を取得し、時間平滑化部223−3から平均レベルLaverage-ts(nl)を取得する。コントロールポイント設定部331は、図24を参照して後述するように、トーンカーブを生成(算出)するためのコントロールポイントを設定し、設定したコントロールポイントの位置を示すコントロールポイントセットを曲線描画部332およびγ算出部333に出力する。
曲線描画部332は、図24を参照して後述するように、コントロールポイント設定部331により設定されたコントロールポイントに基づいて、トーンカーブを描画(生成)する。曲線描画部332は、生成したトーンカーブを表すルックアップテーブルをトーンカーブメモリ164に記憶させる。
γ算出部333は、図24を参照して後述するように、γ_compパラメータを算出する。γ算出部333は、γ_compパラメータをγ_compパラメータメモリ165に記憶させる。
図11は、図4の縮小画像生成部181の機能の構成の例を示す図である。縮小画像生成部181は、ソート部351、および、平均値算出部352−1乃至352−nを含むように構成される。
ソート部351は、輝度値L(nl)(p)からなる画像を横wr×縦hr個のブロックに分割し、非線形変換部162−4から入力される輝度値L(nl)(p)の画素位置pがどのブロックに含まれるかを判定する。ソート部351は、平均値算出部352−1乃至352−nのうち、画素位置pが含まれるブロックの輝度値の平均値を算出する平均値算出部に輝度値L(nl)(p)を出力する。
平均値算出部352−1乃至352−n(n=wr×hr)は、図8の平均値算出部282と同様の構成を有しており、各平均値算出部の対象となるブロックに含まれる輝度値L(nl)(p)の平均値を算出する。平均値算出部352−1乃至352−nは、算出したブロックの輝度の平均値を、縮小画像メモリ182上に対応するブロックと同様の順番に配置するように格納させる。これにより、縮小画像メモリ182上に、ブロックごとの輝度値L(nl)(p)の平均値からなる横wr×縦hr画素の縮小画像が生成される。
図12は、補間部183の機能の構成の例を示すブロック図である。補間部183は、近傍選択部371、水平係数算出部372、垂直係数算出部373、および、積和部374を含むように構成される。
近傍選択部371は、非線形変換部162−4が非線形変換した画素の画素位置pを非線形変換部162−4から取得する。近傍選択部371は、図20を参照して後述するように、画素位置pに対応する縮小画像上の位置qを算出する。近傍選択部371は、位置qの近傍の横4×縦4画素の範囲内にある画素である近傍画素を抽出する。近傍選択部371は、近傍画素の画素値a[i][j](1≦i≦4,1≦j≦4、ただし、i,jは自然数)を積和部374に出力する。また、近傍選択部371は、画素位置pと近傍画素の水平方向の位置ずれ量dx、および、垂直方向の位置ずれ量dyを算出する。近傍選択部371は、水平方向の位置ずれ量dxを水平係数算出部372に出力し、垂直方向の位置ずれ量dyを垂直係数算出部373に出力する。
水平係数算出部372は、図20を参照して後述するように、水平方向の位置ずれ量dxに基づいて、水平方向の3次補間係数kx[i](1≦i≦4,ただし、iは自然数)を算出する。水平係数算出部372は、補間係数kx[i]を積和部374に出力する。
垂直係数算出部373は、図20を参照して後述するように、垂直方向の位置ずれ量dyに基づいて、垂直方向の3次補間係数ky[j](1≦j≦4,ただし、jは自然数)を算出する。垂直係数算出部373は、補間係数ky[j]を積和部374に出力する。
積和部374は、図20を参照して後述するように、近傍画素の画素値a[i][j]、水平方向の補間係数kx[i]、および、垂直方向の補間係数ky[j]を用いて、縮小画像を3次補間することにより元のサイズ(画素数)に拡大した大局輝度画像の輝度値である大局輝度値Ll(nl)(p)を算出する。積和部374は、大局輝度値Ll(nl)(p)をマッピング部191−2に出力する。
図13は、図4のコントラスト補正部168の機能の構成の例を示すブロック図である。コントラスト補正部168は、ゲイン値算出部391、および、コントラスト強調部392を含むように構成される。
ゲイン値算出部391は、マッピング部191−1から輝度値L(nl) (p)を取得する。ゲイン値算出部391は、図22を参照して後述するように、γ_compパラメータメモリ165に記憶されているγ_compパラメータに基づいて、トーンカーブを用いて階調を圧縮した輝度値Lc(nl)(p)をコントラスト補正するときに用いるゲイン値g(p)を算出する。ゲイン値算出部391は、算出したゲイン値g(p)をコントラスト強調部392に出力する。
コントラスト強調部392は、マッピング部191−1から輝度値Lc(nl)(p)を取得し、マッピング部191−2から大局輝度値Lcl(nl)(p)を取得する。コントラスト強調部392は、図22を参照して後述するように、輝度値の階調を圧縮することにより抑制された輝度値Lc(nl)(p)からなる画像のコントラストを強調するようにコントラストを補正する。コントラスト強調部392は、コントラスト補正した輝度値Lu(nl)(p)を、階調補正部169−1乃至169−3に出力する。
図14は、非線形逆変換部170の機能の構成の例を示すブロック図である。非線形逆変換部170は、逆マッピング部411、および、変換曲線メモリ412を含むように構成される。
逆マッピング部411は、変換曲線メモリ412に記憶されている変換曲線を表すルックアップテーブルに基づいて、外部から入力される画素値または輝度値に、非線形変換部162による非線形変換の逆変換となる非線形変換逆変換を施す。逆マッピング部411は、非線形逆変換した画素値または輝度値を外部に出力する。
次に、図15のフローチャートを参照して、DSP116により実行される画像処理1を説明する。なお、この処理は、例えば、デジタルビデオカメラ101による撮影が開始され、A/Dコンバータ115からDSP116への画像データ(モザイク画像)のストリームの供給が開始されたとき、開始される。なお、DSP116に供給された画像データは、逐次DSP116の図示せぬ内部のメモリに格納される。
ステップS1において、デモザイク部141は、モザイク画像を読み込む。具体的には、デモザイク部141は、DSP116の図示せぬ内部のメモリに格納されている先頭のフレームのモザイク画像を読み込む。
ステップS2において、デモザイク部141は、デモザイク処理を行う。具体的には、デモザイク部141は、読み込んだモザイク画像にデモザイク処理を施し、RGB画像を生成する。デモザイク部141は、生成したRGB画像をホワイトバランス部142に供給する。
ステップS3において、ホワイトバランス部142は、取得したRGB画像のホワイトバランスを調整する。ホワイトバランス部142は、ホワイトバランスを調整したRGB画像を階調変換部143に供給する。
ステップS4において、階調変換部143は、階調変換処理1を行う。階調変換処理1の詳細は図16および図17を参照して後述するが、この処理により、RGB画像の階調が変換され、階調が変換されたRGB画像がガンマ補正部144に供給される。
ステップS5において、ガンマ補正部144は、RGB画像にガンマ補正を施す。ガンマ補正部144は、ガンマ補正を施したRGB画像をYC変換部145に供給する。
ステップS6において、YC変換部145は、YC変換処理を行う。具体的には、YCマトリックス処理およびクロマ成分に対する帯域制限を行うことにより、RGB画像からY画像およびC画像を生成する。
ステップS7において、YC変換部145は、Y画像およびC画像を出力する。具体的には、YC変換部145は、必要に応じて、Y画像およびC画像を、LCDドライバ118またはCODEC120に出力する。
ステップS8において、デモザイク部141は、後続するフレームが存在するか否かを判定する。デモザイク部141は、DSP116の図示せぬ内部のメモリに後続するフレームのモザイク画像が蓄積されている場合、後続フレームが存在すると判定し、処理はステップS1に戻る。
ステップS1において、次のフレームのモザイク画像が読み込まれ、読み込まれたモザイク画像に対して、ステップS2以降の処理が行われる。
その後、ステップS8において、後続するフレームが存在しないと判定されるまで、ステップS1乃至S8の処理が繰返し実行され、A/Dコンバータ115から供給されるモザイク画像に対して1フレームずつ順番に画像処理が行われる。
ステップS8において、後続するフレームがないと判定された場合、画像処理は終了する。
次に、図16および図17のフローチャートを参照して、図15のステップS4の階調変換処理1の詳細を説明する。
ステップS21において、階調変換部143は、縮小画像、トーンカーブ、γ_compをメモリから読み込む。具体的には、階調変換部143の補間部183の近傍選択部371(図12)は、1つ前のフレームの階調変換処理において生成された縮小画像を縮小画像メモリ182から読み込む。マッピング部191−1,191−2は、1つ前のフレームの階調変換処理において算出されたトーンカーブを表すルックアップテーブルをトーンカーブメモリ164から読み込む。コントラスト補正部168のゲイン値算出部391(図13)は、1つ前のフレームの階調変換処理において算出されたγ_compパラメータをγ_compパラメータメモリ165から読み込む。
ステップS22において、トーンカーブ算出部163は、noiseLevel、saturationLevelを読み込む。具体的には、トーンカーブ算出部163の輝度域算出部221の飽和画素除外部242(図7)、および、平均レベル算出部222の飽和画素除外部281(図8)は、noiseLevel(nl)およびsaturationLevel(nl)を、DSP116の図示せぬ内部のメモリから読み込む。
ステップS23において、階調変換部143は、次に階調変換する画素のRGB値を読み込む。具体的には、階調変換部143の輝度算出部161および非線形変換部162−1乃至162−3は、次に階調変換する画素位置pの画素値Rw(p),Gw(p)およびBw(p)をDSP116の図示せぬ内部のメモリから読み込む。
ステップS24において、輝度算出部161は、輝度値を算出する。具体的には、輝度算出部161は、画素位置pに対応する輝度値L(p)を、例えば、以下の式(1)により算出する。
なお、式(1)の係数cR,cg,cbは、R,G,Bの各成分のバランスをとるための係数であり、例えば、(cR,cg,cb)=(0.3, 0.6, 0.1)または(0.25, 0.5, 0.25)のような値の組み合わせとされる。
また、輝度値L(p)を算出する方法は、上述した方法に限定されるものではなく、例えば、以下の式(2)のように、R,G,Bの各成分の線形和以外の値とするようにしてもよい。
L(p)=max(Rw(p),Gw(p),Bw(p)) ・・・(2)
輝度算出部161は、算出した輝度値L(p)を非線形変換部162−4に出力する。
ステップS25において、非線形変換部162−4は、輝度値を非線形変換する。具体的には、非線形変換部162−4のマッピング部201(図5)は、変換曲線を表すルックアップテーブルを変換曲線メモリ202から読み込み、ルックアップテーブルに基づいて、輝度値L(p)を非線形変換(例えば、対数変換またはガンマ変換)する。
なお、ステップS25の非線形変換の処理は必ずしも行う必要はないが、非線形変換前の輝度値を横軸に変換後の輝度値を縦軸とする場合に、上に凸の形状で単調増加する変換曲線を用いて非線形変換を行うことにより、輝度値のヒストグラムの形状が暗輝度側または明輝度側に極端に偏ることが防止され、ヒストグラムを解析しやすくすることができる。例えば、非線形変換に用いられる変換曲線は、例えば、ガンマ補正によく用いられるべき乗曲線(ただし、指数は1より小さい値とされる)、対数曲線、または、べき乗関数もしくは対数に基づいた関数により表される曲線とされる。
マッピング部201は、非線形変換した輝度値L(nl)(p)を、トーンカーブ算出部163、縮小画像生成部181、マッピング部191−1、および、階調補正部169−1乃至169−3に出力する。
ステップS26において、トーンカーブ算出部163は、トーンカーブ算出のための画素処理を行う。トーンカーブ算出のための画素処理の詳細は、図18を参照して後述するが、この処理により、トーンカーブを算出するために輝度値L(nl)(p)のソートおよび画像全体の輝度合計値の算出が行われる。
ステップS27において、縮小画像生成部181は、縮小画像生成のための画素処理を行う。縮小画像生成のための画素処理の詳細は、図19を参照して後述するが、この処理により、縮小画像を生成するために、各ブロックごとの輝度値L(nl)(p)の輝度合計値の計算が行われる。
ステップS28において、補間部183は、大局輝度値算出処理を行う。大局輝度値算出処理の詳細は、図20を参照して後述するが、この処理により、画素位置pに対応する大局輝度値Ll(nl)(p)が算出される。
ステップS29において、階調変換部143は、非線形変換された輝度値および大局輝度値にトーンカーブを適用する。具体的には、階調変換部143のマッピング部191−1は、1つ前のフレームの階調変換処理において算出されたトーンカーブに基づいて、輝度値L(nl)(p)を輝度値Lc(nl)(p)に変換することにより、輝度値L(nl)(p)の階調を圧縮する。マッピング部191−1は、輝度値Lc(nl)(p)をコントラスト補正部168に出力する。また、マッピング部191−2は、1つ前のフレームの階調変換処理において算出されたトーンカーブに基づいて、大局輝度値Ll(nl)(p)を大局輝度値Lcl(nl)(p)に変換することにより、大局輝度値Ll(nl)(p)の階調を圧縮する。マッピング部191−2は、大局輝度値Lcl(nl)(p)をコントラスト補正部168に供給する。
ステップS30において、コントラスト補正部168は、コントラスト補正処理を行う。コントラスト補正処理の詳細は、図22を参照して後述するが、この処理により、輝度値Lc(nl)(p)からなる画像のコントラストが補正される。
ステップS31において、非線形変換部162−1乃至162−3は、RGB値をそれぞれ非線形変換する。具体的には、非線形変換部162−1乃至162−3のマッピング部201(図5)は、それぞれ、変換曲線を表すルックアップテーブルを変換曲線メモリ202から読み込み、ルックアップテーブルに基づいて、ステップS23において読み込んだ画素値Rw(p),Gw(p)、または、Bw(p)を非線形変換する。非線形変換部162−1乃至162−3のマッピング部201は、それぞれ、非線形変換した画素値R(nl)(p),G(nl)(p)またはB(nl)(p)を、階調補正部169−1乃至169−3に出力する。
なお、非線形変換部162−1乃至162−3が用いるルックアップテーブルは、ステップS25において、非線形変換部162−4が用いたルックアップテーブルと同じものとされる。すなわち、画素値Rw(p),Gw(p)、および、Bw(p)に輝度値L(p)と同様の非線形変換が施される。
ステップS32において、階調補正部169−1乃至169−3は、非線形変換されたRGB値をそれぞれ階調補正する。具体的には、階調補正部169−1乃至169−3は、それぞれ、以下の式(3)乃至(5)により、画素値R(nl)(p),G(nl)(p)、または、B(nl)(p)の階調を補正した画素値Ru(nl)(p),Gu(nl)(p)、または、Bu(nl)(p)を算出する。
Ru(nl)(p)=chromagain・(R(nl)(p)−L(nl)(p))+Lu(nl) (p) ・・・(3)
Gu(nl)(p)=chromagain・(G(nl)(p)−L(nl)(p))+Lu(nl) (p) ・・・(4)
Bu(nl)(p)=chromagain・(B(nl)(p)−L(nl)(p))+Lu(nl) (p) ・・・(5)
なお、chromagainは、R、G,Bの各成分の彩度を調節するための所定の値の係数である。
すなわち、画素値Ru(nl)(p),Gu(nl)(p)、または、Bu(nl)(p)は、画素値R(nl)(p),G(nl)(p)、または、B(nl)(p)からなる画像と階調変換前の輝度値L(nl)(p)からなる画像との差分である差分画像の各画素値にchromagainを乗じ、さらに、コントラスト補正後の輝度値Lu(nl)(p)からなる画像を加えた画像の画素値である。これにより、非線形変換されたRGB値に階調変換後の輝度値が反映される。
階調補正部169−1乃至169−3は、それぞれ、階調補正した画素値Ru(nl)(p),Gu(nl)(p)、または、Bu(nl)(p)を、非線形逆変換部170−1乃至170−3に供給する。
ステップS33において、非線形逆変換部170−1乃至170−3は、階調補正されたRGB値を非線形逆変換する。具体的には、非線形逆変換部170−1乃至170−3の逆マッピング部411(図14)は、それぞれ、変換曲線を表すルックアップテーブルを変換曲線メモリ412から読み込み、ルックアップテーブルに基づいて、画素値Ru(nl)(p),Gu(nl)(p)、または、Bu(nl)(p)に対して、ステップS31における非線形変換の逆変換となる非線形逆変換を行う。
ステップS34において、非線形逆変換部170−1乃至170−3は、非線形逆変換されたRGB値を出力する。具体的には、非線形逆変換部170−1乃至170−3の逆マッピング部411は、それぞれ、非線形逆変換した画素値Ru(p),Gu(p)、または、Bu(p)を、ガンマ補正部144に出力する。
ステップS35において、階調変換部143は、フレーム内の全ての画素を処理したか否かを判定する。まだフレーム内の全ての画素を処理していないと判定された場合、処理はステップS23に戻り、ステップS35において、フレーム内の全ての画素を処理したと判定されるまで、ステップS23乃至S35の処理が繰返し実行される。すなわち、現在処理しているフレーム内の全ての画素が、1画素ずつ順番に(例えば、ラスタスキャン順に)階調変換される。
ステップS35において、フレーム内の全ての画素を処理したと判定された場合、処理はステップS36に進む。
ステップS36において、トーンカーブ算出部163は、トーンカーブとγ_comp算出処理を行う。トーンカーブとγ_comp算出処理の詳細は、図24を参照して後述するが、この処理により、今回階調変換したフレームにおけるトーンカーブとγ_compパラメータが算出される。
ステップS37において、縮小画像生成部181は、縮小画像生成処理を行い、階調変換処理は終了する。縮小画像生成処理の詳細は、図26を参照して後述するが、この処理により、縮小画像が生成される。
次に、図18のフローチャートを参照して、図16のステップS26のトーンカーブ算出のための画素処理の詳細を説明する。
ステップS51において、トーンカーブ算出部163は、次に処理する画素の輝度値を読み込む。具体的には、トーンカーブ算出部163の輝度域算出部221の間引き部241(図7)、および、トーンカーブ算出部163の平均レベル算出部222の飽和画素除外部281は、上述した図16のS25において非線形変換された画素位置pの画素の輝度値L(nl)(p)を非線形変換部162−4から読み込む。
ステップS52において、間引き部241は、画素位置がサンプリング位置に合致するか否かを判定する。具体的には、間引き部241は、読み込んだ輝度値L(nl)(p)の画素位置pが、所定の間隔ごとに設けられているサンプリング位置に合致すると判定した場合、輝度値L(nl)(p)を飽和画素除外部242に出力する。
ステップS53において、飽和画素除外部242は、輝度値がnoiseLevel以上saturationLevel以下であるか否かを判定する。飽和画素除外部242は、輝度値L(nl)(p)が、所定のnoiseLevel(nl)以上かつsaturationLevel(nl)以下であると判定した場合、ソーティング部243およびソーティング部244に輝度値L(nl)(p)を出力し、処理はステップS54に進む。
ステップS54において、ソーティング部243は、暗輝度側ソーティングを行う。具体的には、ソーティング部243の比較部251−1は、レジスタ252−1が記憶している値と輝度値L(nl)(p)を比較して、輝度値L(nl)(p)がレジスタ252−1の値より小さい場合、レジスタ252−1に記憶されていた値を後段の比較部251−2に出力し、輝度値L(nl)(p)をレジスタ252−1に記憶させる。一方、輝度値L(nl)(p)がレジスタ252−1の値以上である場合、比較部251−1は、輝度値L(nl)(p)をそのまま後段の比較部251−2に出力する。後段の比較部251−2乃至251−kも同様の処理を行う。その結果、最終的に、フレーム内のサンプリング位置の画素の輝度値L(nl)(p)のうち、最小の輝度値L(nl)(p)からk番目に小さい輝度値L(nl)(p)までが、レジスタ252−1乃至252−kに昇順に記憶される。
ステップS55において、ソーティング部243は、明輝度側ソーティングを行う。具体的には、ソーティング部244の比較部261−1は、レジスタ262−1が記憶している値と輝度値L(nl)(p)を比較して、輝度値L(nl)(p)がレジスタ262−1の値より大きい場合、レジスタ262−1に記憶されていた値を後段の比較部261−2に出力し、輝度値L(nl)(p)をレジスタ262−1に記憶させる。一方、比較部261−1は、輝度値L(nl)(p)がレジスタ252−1の値以下である場合、輝度値L(nl)(p)をそのまま後段の比較部261−2に出力する。後段の比較部261−2乃至261−kも同様の処理を行う。その結果、最終的に、フレーム内のサンプリング位置の画素の輝度値L(nl)(p)のうち、最大の輝度値L(nl)(p)からk番目に大きい輝度値L(nl)(p)までが、レジスタ262−1乃至262−kに降順に記憶される。
ステップS53において、輝度値L(nl)(p)がnoiseLevel(nl)未満またはsaturationLevel(nl)を超えると判定された場合、ステップS54およびS55の処理はスキップされ、処理はステップS56に進む。すなわち、noiseLevel(nl)未満またはsaturationLevel(nl)を超える輝度値L(nl)(p)は、暗輝度側ソーティングおよび明輝度側ソーティングの対象から除外される。
ステップS52において、画素位置がサンプリング位置に合致しないと判定された場合、ステップS53乃至S55の処理はスキップされ、処理はステップS56に進む。これにより、暗輝度側ソーティングおよび明輝度側ソーティングの対象となる画素数が制限される。
ステップS56において、平均レベル算出部222の飽和画素除外部281(図8)は、ステップS53における輝度域算出部221の飽和画素除外部242による処理と同様に、輝度値がnoiseLevel以上saturationLevel以下であるか否かを判定する。飽和画素除外部281は、輝度値L(nl)(p)が、noiseLevel(nl)以上かつsaturationLevel(nl)以下であると判定した場合、平均値算出部282の加算部291およびカウンタ293に輝度値L(nl)(p)を出力し、処理はステップS57に進む。
ステップS57において、平均レベル算出部222は、輝度合計値を算出し、トーンカーブ算出のための画素処理は終了する。具体的には、加算部291は、レジスタ292に記憶されているこれまでの輝度値の合計値である輝度合計値を読み込み、入力された輝度値L(nl)(p)を加算する。加算部291は、算出した値をレジスタ292に記憶させる。また、カウンタ293は、カウンタの値を1つインクリメントする。すなわち、カウンタ293のカウンタ値は、これまでに輝度合計値に輝度値L(nl)(p)が加算された画素の数を示す。
ステップS56において、輝度値L(nl)(p)がnoiseLevel(nl)未満またはsaturationLevel(nl)を超えると判定された場合、ステップS57の処理はスキップされ、トーンカーブ算出のための画素処理は終了する。すなわち、noiseLevel(nl)未満またはsaturationLevel(nl)を超える輝度値L(nl)(p)は、輝度平均値を算出する対象から除外される。
次に、図19のフローチャートを参照して、図16のステップS27の縮小画像生成のための画素処理の詳細を説明する。
ステップS71において、縮小画像生成部181のソート部351(図11)は、次に処理する画素の輝度値を読み込む。具体的には、ソート部351は、上述した図16のS25において非線形変換された画素位置pの画素の輝度値L(nl)(p)を非線形変換部162−4から読み込む。
ステップS72において、ソート部351は、該当するブロックを判定する。具体的には、ソート部351は、画素位置pが、画像を横wr×縦hr個に分割した所定のブロックのどれに含まれるかを判定する。
ステップS73において、平均値算出部352は、輝度値を該当するブロックの輝度合計値に加算し、縮小画像生成のための画素処理は終了する。具体的には、ソート部351は、画素位置pが含まれるブロックの輝度値の平均値を算出する平均値算出部352に、輝度値L(nl)(p)を出力する。平均値算出部352は、対象となるブロックの輝度値の合計である輝度合計値に輝度値L(nl)(p)を加算する。
次に、図20のフローチャートを参照して、図16のステップS28の大局輝度算出処理を説明する。
ステップS91において、補間部183の近傍選択部371(図12)は、次に処理する画素の画素位置を読み込む。具体的には、近傍選択部371は、次に処理する画素の画素位置pを非線形変換部162−4から読み込む。
ステップS92において、近傍選択部371は、次に処理する画素に対応する縮小画像上の近傍画素と位置ずれ量を算出する。具体的には、近傍選択部371は、モザイク画像の画素数を横wm×縦hm、縮小画像の画素数を横wr×縦hrとした場合、画素位置p=(px, py)に対応する縮小画像上の位置q=(qx,qy)を、以下の式(6)乃至(8)により算出する。
bx=wm/wr ・・・(6)
by=hm/hr ・・・(7)
q=(qx,qy)=(px/bx−0.5, py/by−0.5) ・・・(8)
また、近傍選択部371は、位置qの近傍の横4×縦4画素の範囲内の画素である近傍画素を抽出する。例えば、図21に示される例の場合、図21の斜線で示されるqx−2<x<qx+2、qy−2<y<qy+2の範囲内に位置する“+”マークで示される画素が近傍画素として抽出される。
さらに、近傍選択部371は、画素位置pと近傍画素の水平方向の位置ずれ量dx、および、垂直方向の位置ずれ量dyを、縮小画像において、位置qから左下方向で最も近い画素と位置qとの差分とする。すなわち、位置ずれ量(dx,dy)=(qxの小数部,qyの小数部)となる。
近傍選択部371は、水平方向の位置ずれ量dxを水平係数算出部372に出力し、垂直方向の位置ずれ量dyを垂直係数算出部373に出力し、近傍画素の画素値a[i][j](1≦i≦4,1≦j≦4、ただし、i,jは自然数)を積和部374に出力する。
ステップS93において、水平係数算出部372は、水平方向の3次補間係数を算出する。具体的には、水平係数算出部372は、水平方向の位置ずれ量dxに基づいて、以下の式(9)および(10)により、水平方向の3次補間係数kx[i](1≦i≦4,ただし、iは自然数)を算出する。
水平係数算出部372は、算出した補間係数kx[i]を積和部374に出力する。
ステップS94において、垂直係数算出部373は、垂直方向の3次補間係数を算出する。具体的には、垂直係数算出部373は、垂直方向の位置ずれ量dyに基づいて、以下の式(11)および(12)により、垂直方向の3次補間係数ky[j] (1≦j≦4,ただし、jは自然数)を算出する。
垂直係数算出部373は、算出した補間係数ky[j]を積和部374に出力する。
なお、上述した式(9)乃至(12)は、3次補間によく用いられる式の一例であり、十分に滑らかな補間が得られる範囲で、補間係数kx[i],ky[j]を他の計算式に基づいて算出するようにしてもよい。
ステップS95において、積和部374は、大局輝度値を算出する。具体的には、積和部374は、近傍画素の画素値a[i][j]、水平方向の補間係数kx[i]、および、垂直方向の補間係数ky[j]を、以下の式(13)により積和計算することにより、画素位置pの大局輝度値Ll(nl) (p)を算出する。
ステップS96において、積和部374は、マッピング部191−2に、大局輝度値Ll(nl)(p)を出力して、大局輝度値算出処理は終了する。
なお、大局輝度値Ll(nl) (p)からなる大局輝度画像は、横wr×縦hr画素の縮小画像を3次補間により元のサイズ(画素数)に拡大した画像であり、元の画像(輝度値L(nl) (p)からなる画像)のごく低周波域の成分だけを抽出した画像となる。
次に、図22のフローチャートを参照して、図16のステップS30のコントラスト補正処理を説明する。
ステップS111において、コントラスト補正部168は、次に処理する画素の階調圧縮された輝度値および大局輝度値を読み込む。具体的には、コントラスト補正部168のゲイン値算出部391およびコントラスト強調部392(図13)は、上述した図16のステップS29においてトーンカーブにより階調が圧縮された輝度値Lc(nl)(p)を、マッピング部191−1から読み込む。また、コントラスト強調部392は、上述した図16のステップS29においてトーンカーブにより階調が圧縮された大局輝度値Lcl(nl)(p)をマッピング部191−2から読み込む。
ステップS112において、ゲイン値算出部391は、階調圧縮された輝度値とγ_compパラメータに基づいて、ゲイン値を算出する。具体的には、ゲイン値算出部391は、トーンカーブにより階調が圧縮された輝度値Lc(nl)(p)とγ_compパラメータに基づいて、以下の式(14)および(15)により、ゲイン値g(p)を算出する。
なお、式(15)に出てくるcontrastGainは、予め定められた定数である。
ゲイン値算出部391は、算出したゲイン値g(p)をコントラスト強調部392に出力する。
ステップS113において、コントラスト強調部392は、階調圧縮された輝度値および大局輝度値、並びに、ゲイン値を用いて、コントラスト補正した輝度値を算出する。具体的には、コントラスト強調部392は、階調が圧縮された輝度値Lc(nl)(p)および大局輝度値Lcl(nl)(p)、並びに、ゲイン値g(p)を用いて、以下の式(16)により、コントラスト補正した輝度値Lu(nl) (p)を算出する。
Lu(nl) (p)=g(p)・(Lc(nl)(p)−Lcl(nl)(p))+Lc(nl)(p) ・・・(16)
なお、輝度値(Lc(nl)(p)−Lcl(nl)(p))からなる画像は、輝度値Lc(nl)(p)からなる画像から、輝度値Lc(nl)(p)からなる画像のごく低周波域の成分からなる大局輝度画像を差し引いたものである。従って、輝度値Lu(nl)(p)からなる画像は、輝度値Lc(nl)(p)からなる画像のごく低周波域を除く周波数成分がゲイン値g(p)により強調された画像となる。
また、トーンカーブにより輝度値の階調が圧縮された画像(輝度値Lc(nl)(p)からなる画像)は、元の画像(輝度値L(nl)(p)からなる画像)と比較してコントラストが抑制されている。また、コントラストが抑制される度合いはトーンカーブの傾きに依存し、トーンカーブの傾きが緩やかであるほど抑制の度合いが大きい。従って、トーンカーブの傾きの逆数に応じて、階調が圧縮された画像のコントラスを強調するように補正すれば、階調を圧縮する前の画像に近いコントラストを得ることができる。しかし、noiseLevel(nl)またはsaturationLevel(nl)付近の輝度値Lc(nl)(p)の画素についても同様の補正を行った場合、補正後の輝度値がnoiseLevel(nl)を下回ったり、saturationLevel(nl)を超えたりするクリッピングが生じ、逆に画像のディテールが失われてしまう場合がある。
図23は、輝度値Lc(nl)(p)と、式(14)および(15)により算出されるゲイン値g(p)との関係をグラフに表したものである。輝度値Lc(nl)(p)が、輝度値Lc(nl)(p)が取り得る範囲のほぼ中間にあたる所定の中間輝度レベルLmid(nl)となるとき、ゲイン値g(p)が最大となり、輝度値Lc(nl)(p)が、輝度値Lc(nl)(p)が取りうる範囲の最小値Lmin(nl)または最大値Lmax(nl)に近づくにつれて、ゲイン値g(p)は直線的に減衰し、輝度値Lc(nl)(p)が最小値Lmin(nl)未満および最大値Lmax(nl)を超える範囲では、ゲイン値g(p)は0となる。従って、中間輝度レベルLmid(nl)付近の輝度成分のコントラストが、最小値Lmin(nl)または最大値Lmax(nl)付近の輝度成分のコントラストと比較して強調される。より厳密に言えば、中間輝度レベルLmid(nl)付近の輝度成分ほどコントラストが強調され、最小値Lmin(nl)または最大値Lmax(nl)付近の輝度成分は、ほとんどコントラストの強調が行われない。
ステップS114において、コントラスト強調部392は、コントラスト補正した輝度値を出力して、コントラスト補正処理は終了する。具体的には、コントラスト強調部392は、コントラスト補正した輝度値Lu(nl)(p)を、階調補正部169−1乃至169−3に出力する。
このように、コントラスト補正部168により、輝度値Lc(nl)(p)からなる画像のごく低周波域を除く、低中周波域から高周波域の成分のコントラストが強調される。したがって、高周波域の成分のコントラストだけを強調したときに目立つ、エッジ部分の局所的なオーバーシュートは発生せず、見た目にもごく自然にコントラストが強調された画像を得ることができる。
また、中間輝度レベルLmid(nl)付近の輝度成分ほどコントラストが強調されるように補正され、最小値Lmin(nl)または最大値Lmax(nl)付近の輝度成分は、ほとんどコントラストの補正が行われないため、画像の白ツブレや黒ツブレがほとんど発生しない。
次に、図24のフローチャートを参照して、図17のステップS36のトーンカーブとγ_comp算出処理を説明する。
ステップS131において、トーンカーブ算出部163の輝度域算出部221(図6)は、暗・明輝度側ソーティングの結果から暗・明輝度側裾野値を求める。具体的には、輝度域算出部221のソーティング部243(図7)は、レジスタ252−kに格納されている輝度値を暗輝度側の裾野値Ldark(nl)に設定する。また、輝度域算出部221のソーティング部244は、レジスタ262−kに格納されている輝度値を明輝度側の裾野値Lbright(nl)に設定する。
例えば、間引き部241により1フレームあたりにサンプリングされる画素の数が1200個とし、ソーティング部243のレジスタ252の数を6個(k=6)とした場合、1フレーム内の全ての画素が処理された後、レジスタ252−1乃至252−6には、サンプリングされた画素のうち、輝度が暗い方から6番目までの画素(厳密に言えば、輝度値L(nl)(p)がnoiseLevel(nl)未満の画素は除かれているので、必ずしも6番目とは限らない)の輝度値L(nl)(p)が格納される。従って、フレーム全体の画素数に占めるレジスタ252−6に格納されている輝度値L(nl)(p)、すなわち、Ldark(nl)以下の輝度値の画素数の比率はほぼ0.5%(=6/1200)になると推定される。同様に、フレーム全体の画素数に占めるレジスタ262−6に格納されている輝度値L(nl)(p)、すなわち、Lbright(nl)以上の輝度値の画素数の比率はほぼ0.5%(=6/1200)になると推定される。
なお、裾野値Ldark(nl)または裾野値Lbright(nl)を設定するために用いる画素数の比率を、上述した0.5%以外の値とするようにしてもよい。また、ソーティング部243または244のレジスタの数は、サンプリングされる画素の数、および、裾野値Ldark(nl)または裾野値Lbright(nl)を設定するために用いる画素数の比率に応じて設定される。
ソーティング部243は、裾野値Ldark(nl)を時間平滑化部223−1に出力し、ソーティング部244は、裾野値Lbright(nl)を時間平滑化部223−2に出力する。
ステップS132において、トーンカーブ算出部163の平均レベル算出部222(図6)は、輝度合計値より平均レベルを算出する。具体的には、平均レベル算出部222の平均値算出部282の除算部294(図8)は、レジスタ292に記憶されている輝度合計値、および、カウンタ293のカウンタ値(画素数)を読み込む。除算部294は、輝度合計値をカウンタ293のカウンタ値で割ることにより、輝度値L(nl)(p)の平均レベルLaverage(nl)を算出する。除算部294は、時間平滑化部223−3に平均レベルLaverage(nl)を出力する。
ステップS133において、時間平滑化部223は、裾野値および平均レベルを時間平滑化する。具体的には、時間平滑化部223−1の乗算部311(図9)は、裾野値Ldark(nl)に所定の平滑化係数sc1を乗じて、加算部313に出力する。時間平滑化部223−1の乗算部312は、1つ前のフレームにおける時間平滑化された裾野値Ldark-ts-pre(nl)をレジスタ314から読み込む。乗算部312は、裾野値Ldark-ts-pre(nl)に平滑化係数sc2を乗じて、加算部313に出力する。加算部313は、乗算部311から出力された値と乗算部312から出力された値を加算することにより裾野値Ldark(nl)を時間平滑化した裾野値Ldark-ts(nl)を算出する。すなわち、裾野値Ldark-ts(nl)は、以下の式(17)により表される。
Ldark-ts(nl)=sc1・Ldark(nl)+sc2・Ldark-ts-pre(nl) ・・・(17)
すなわち、平滑化係数sc1およびsc2により、現在のフレームの裾野値Ldark(nl)と1つ前のフレームの裾野値Ldark-ts-pre(nl)との間で平滑化が行われる。
加算部313は、裾野値Ldark-ts(nl)をスプライン発生部224に出力するとともに、レジスタ314に記憶させる。
同様に、時間平滑化部223−2は、以下の式(18)により、裾野値Lbright(nl)を時間平滑化した裾野値Lbright-ts(nl)を算出し、算出した裾野値Lbright-ts(nl)をスプライン発生部224に出力するとともに、レジスタ314に記憶させる。
Lbright-ts(nl)=sc1・Lbright(nl)+sc2・Lbright-ts-pre(nl) ・・・(18)
ここで、Lbright-ts-pre(nl):1つ前のフレームの時間平滑化された裾野値Lbright-ts(nl)であるものとする。
また、同様に、時間平滑化部223−3は、以下の式(19)により、平均レベルLaverage(nl)を時間平滑化した平均レベルLaverage-ts(nl)を算出し、算出した平均レベルLaverage-ts(nl)をスプライン発生部224に出力するとともに、レジスタ314に記憶させる。
Laverage-ts(nl)=sc1・Laverage(nl)+sc2・L average-ts-pre(nl) ・・・(19)
ここで、L average-ts-pre(nl):1つ前のフレームの時間平滑化された平均レベルL average-ts(nl)であるものとする。
これにより、裾野値および平均レベルの値が、フレーム間で急激に変化したり、振動したりすることが防止される。
ステップS134において、スプライン発生部224は、トーンカーブを生成する。以下、図25を参照して、トーンカーブの生成方法について説明する。図25は、スプライン発生部224により生成されるトーンカーブの一例を示している。なお、図25のグラフの横軸方向は、階調補正する前の入力輝度の対数値を表し、縦軸方向は、トーンカーブCLによる階調補正後の出力輝度の対数値を表している。
まず、スプライン発生部224のコントロールポイント設定部331(図10)は、9つのコントロールポイントP1乃至P9を設定する。コントロールポイントP1は、入力輝度が所定の最小レベルとなり、出力輝度が所定の最小レベルLbase(nl)となるポイントに設定される。コントロールポイントP2は、入力輝度がノイズレベルであると見なすことができる輝度である所定のノイズレベルLnoise(nl)となり、出力輝度が最小レベルLbase(nl)となるポイントに設定される。コントロールポイントP3は、入力輝度がノイズレベルLnoise(nl)の2倍の輝度値となり、出力輝度が最小レベルLbase(nl)となるポイントに設定される。
コントロールポイントP4は、入力輝度が暗輝度側の裾野値Ldark-ts(nl)となり、出力輝度がほぼ黒レベルの輝度値である輝度値Lankle(nl)となるポイントに設定される。コントロールポイントP5は、入力輝度が裾野値Ldark-ts(nl)の2倍の輝度値となり、出力輝度が輝度値Lankle(nl)の2倍の輝度値となるポイントに設定される。コントロールポイントP6は、入力輝度が入力輝度の平均レベルLaverage-ts(nl)となり、出力輝度が出力輝度の輝度範囲における所定のほぼ中間の中間輝度レベルLmid(nl)となるポイントに設定される。コントロールポイントP7は、入力輝度が明輝度側の裾野値Lbright-ts(nl)の2分の1の輝度値となり、出力輝度がほぼ白レベルの輝度値である輝度値Lshoulder(nl)の2分の1の輝度値となるポイントに設定される。コントロールポイントP8は、入力輝度が裾野値Lbright-ts(nl)となり、出力輝度が輝度値Lshoulder(nl)となるポイントに設定される。コントロールポイントP9は、入力輝度が所定の入力輝度の最大値となり、出力輝度が所定の出力輝度の最大値となるポイントに設定される。
コントロールポイント設定部331は、設定したコントロールポイントP1乃至P9の位置を示すコントロールポイントセットを曲線描画部332およびγ算出部333に供給する。曲線描画部332は、コントロールポイントP1乃至P9の各ポイント間を補間する3次スプライン曲線上の座標を算出することにより、トーンカーブCLのルックアップテーブルを生成する。
なお、コントロールポイントP3が補助点として設定されることにより、トーンカーブCLが確実にコントロールポイントP2またはその近傍を通過するようになる。すなわち、入力輝度がほぼノイズレベルLnoise(nl)である場合、出力輝度の最小レベルLbase(nl)にほぼ等しい値に階調変換されるようになる。また、コントロールポイントP5が補助点として設定されることにより、入力輝度がほぼ裾野値Ldark-ts(nl)となり、出力輝度がほぼ黒レベルとなる輝度値Lankle(nl)となる付近(コントロールポイントP4付近)のトーンカーブCLの傾きが極端に急峻になったり緩やかになったりすることが防止される。また、コントロールポイントP7が補助点として設定されることにより、入力輝度がほぼ裾野値Ldark-ts(nl)となり、出力輝度がほぼ白レベルとなる輝度値Lshoulder(nl)付近(コントロールポイントP8付近)のトーンカーブCLの傾きが極端に急峻になったり緩やかになったりすることが防止される。
従って、トーンカーブCLは、コントロールポイントP6付近で傾きが緩やかになり、コントロールポイントP4およびP8付近で傾きがほぼ1に近くなる逆S字状の単調増加する曲線となる。すなわち、出力輝度が中間輝度レベルLmid(nl)付近において、階調の圧縮率が高くされ、出力輝度が高い(大きい)または低い(小さい)付近ほど、階調の圧縮率が低くされる。これは、トーンカーブCLを適用して階調を圧縮した後、コントラスト補正を行うときに、上述したように、中間輝度レベルLmid(nl)付近の輝度成分ほどコントラストが強調され、階調を圧縮する前の画像に近いコントラストを得ることができる一方、輝度値のクリッピングを防止するために、最小値Lmin(nl)または最大値Lmax(nl)付近の輝度成分は、ほとんどコントラストが補正されないためである。
従って、トーンカーブCLによる階調圧縮およびステップS30のコントラスト補正を組み合わせることにより、画像のディテールをほぼ保持したまま、黒ツブレや白ツブレをほとんど発生させることなく、画像の階調の圧縮を行うことができる。
また、入力される画像データから算出された裾野値Ldark-ts(nl)、裾野値Lbright-ts(nl)、および、平均レベルLaverage-ts(nl)に基づいて、画像ごとにトーンカーブCLが生成されるため、入力画像データの画素値(輝度値)の分布に応じて、適切に画像の階調を圧縮することができる。
ステップS135において、γ算出部333は、トーンカーブの形状よりγ_compパラメータを算出する。具体的には、γ算出部333は、コントロールポイントP6付近におけるトーンカーブCLの傾きに近い値を得るために、コントロールポイントP5とP7を結ぶ線分ALの傾きを算出し、算出した傾きをγ_compパラメータにとして設定する。
ステップS136において、トーンカーブ算出部163は、トーンカーブおよびγ_compパラメータをメモリに格納し、トーンカーブとγ_comp算出処理は終了する。具体的には、曲線描画部332は、生成したトーンカーブを表すルックアップテーブルをトーンカーブメモリ164に格納させる。また、γ算出部333は、γ_compパラメータをγ_compパラメータメモリ165に格納させる。
次に、図26のフローチャートを参照して、図17のステップS37の縮小画像生成処理の詳細を説明する。
ステップS151において、縮小画像生成部181は、ブロック内の画素の輝度の平均値を算出する。具体的には、例えば、縮小画像生成部181の平均値算出部352−1(図11)は、自分が保持している1番目のブロック内の画素の輝度合計値を、ブロック内の画素数で割ることにより、1番目のブロックの輝度の平均値を算出する。
ステップS152において、縮小画像生成部181は、ブロックの輝度の平均値をメモリ上の対応する画素の位置に格納する。具体的には、例えば、平均値算出部352−1は、算出した1番目のブロックの輝度の平均値を、縮小画像メモリ182上の対応する画素(例えば、いちばん左上の画素)の位置に格納させる。
ステップS153において、縮小画像生成部181は、全てのブロックを処理したか否かを判定する。まだ、全てのブロックの処理をしていないと判定された場合、処理はステップS151に戻り、ステップS153において、全てのブロックの処理をしたと判定されるまで、ステップS151乃至S153の処理が繰り返し実行される。すなわち、2番目以降のブロックについて順番に、同様に輝度の平均値が算出され、算出された平均値が縮小画像メモリ182上の対応する画素の位置に格納される。
ステップS153において、全てのブロックの処理が終了したと判定された場合、縮小画像生成処理は終了する。
これにより、輝度値L(nl)(p)からなる画像を横wr×縦hr個の複数のブロックに分割し、分割したブロックごとの輝度値L(nl)(p)の平均値を、ブロックの順番に配列した横wr×縦hr画素の縮小画像が生成される。
以上のようにして、画像のディテールをほぼ保持したまま、黒ツブレや白ツブレをほとんど発生させることなく、画像の階調の圧縮を行うことができる。また、入力画像データの画素値(輝度値)の分布に応じて、適切に画像の階調を圧縮することができる。
さらに、1フレーム前の処理において生成または算出された縮小画像、トーンカーブ、および、γ_compパラメータを用いて、階調変換を行うことにより、同じフレーム内で生成または算出した縮小画像、トーンカーブ、および、γ_compパラメータを用いて、階調変換をする場合と比較して、縮小画像の生成、並びに、トーンカーブおよびγ_compパラメータの算出するための処理の遅延時間がほとんど発生しないため、処理時間を短縮することができる。また、縮小画像の生成、または、トーンカーブおよびγ_compパラメータの算出の終了を待機するために、例えば、1フレーム分の画像を保持する必要がないため、メモリの使用量を削減することができる。
なお、縮小画像、トーンカーブ、および、γ_compパラメータは、いずれも画像の細部に依存しない情報であるため、1フレーム前の情報を使用することによる時間のずれはほとんど問題にならない。例えば、被写体のエッジ情報のように高周波成分を含む情報であれば、動的な映像において、フレーム間の被写体の位置ずれが発生する場合があり、位置ずれを補償するような処理が必要であるが、縮小画像、トーンカーブ、および、γ_compパラメータについては、そのような問題は発生しない。
また、同じフレーム内で生成または算出した縮小画像、トーンカーブ、および、γ_compパラメータを用いて、階調変換をする場合でも、縮小画像の生成と、トーンカーブおよびγ_compパラメータの算出とを並列して行うことができるため、処理時間を短縮することができる。
次に、以上に説明した実施の形態とは異なる本発明の他の実施の形態について説明する。
図27は、白黒の画像を処理する場合の階調変換部の機能の構成の例を示すブロック図である。階調変換部501は、図4の階調変換部143と比較して、非線形変換部162−4、トーンカーブ算出部163、トーンカーブメモリ164、γ_compパラメータメモリ165、大局輝度算出部166、階調変換部167、コントラスト補正部168、および、非線形逆変換部170−1を含む点が共通し、輝度算出部161、非線形変換部162−1乃至162−3、階調補正部169−1乃至169−3、並びに、非線形逆変換部170−2および170−3を含まない点が異なる。
すなわち、階調変換部501は、各画素のカラー成分(R,G,B成分)を処理する必要がないため、階調変換部143の輝度成分を処理する部分を抽出した構成となっている。なお、階調変換部501の非線形逆変換部170−1は、階調変換部143の非線形逆変換部170−1と異なり、コントラスト補正された輝度値Lu(nl)(p)を非線形逆変換した輝度値Lu(p)を、階調変換部501の出力値として、外部に出力する。
また、図4の非線形変換部162−1乃至162−4の非線形変換の処理を、カメラの信号処理において一般的に行われているガンマ補正処理で代用するようにすれば、階調変換部の構成を簡素化することができる。
図28は、非線形変換処理をカメラのガンマ補正処理で代用する場合のDSPブロックの機能の構成の例を示す図である。DSP551は、図3のDSP116と比較して、デモザイク部141、ホワイトバランス部142、ガンマ補正部144、および、YC変換部145を含む点が共通し、階調変換部143の代わりに階調変換部561を含む点が異なる。
また、DSP551では、DSP116と異なり、ガンマ補正部144は、ホワイトバランス部142によりホワイトバランスが調整された画素値[R w(p), G w(p), B w(p)]にガンマ補正を施し、ガンマ補正を施した画素値[R uγ(p), G uγ(p), B uγ(p)]を、YC変換部145に出力する。さらに、YC変換部145は、YC変換したあとのY画像の輝度値Y(p)を階調変換部561に出力し、C画像の色差値C(p)を外部に出力する。また、階調変換部561は、ガンマ補正部144によりガンマ補正された後の輝度値Y(p)を階調変換して、外部に出力する。
図29は、図28の階調変換部561の機能の構成の例を示すブロック図である。階調変換部561は、図27の階調変換部501と比較して、トーンカーブ算出部163、トーンカーブメモリ164、γ_compパラメータメモリ165、大局輝度算出部166、階調変換部167、および、コントラスト補正部168を含む点が共通し、非線形変換部162−4および非線形逆変換部170−1を含まない点が異なる。すなわち、階調変換部561に入力される輝度値Y(p)は、すでにガンマ補正部144により非線形変換の一種であるガンマ補正が施されているため、階調変換部561では、非線形変換処理および非線形逆変換処理を行う構成を省略することができる。
以上のように、入力画像の輝度である入力輝度の分布に基づいて、輝度の階調の圧縮に用いる変換曲線を算出し、入力画像の低周波成分からなる大局輝度画像の輝度である大局輝度を算出し、変換曲線に基づいて、入力輝度の階調および大局輝度の階調を圧縮し、変換曲線の傾き、および、階調が圧縮された大局輝度に基づいて、階調が圧縮された入力輝度からなる階調圧縮入力画像のコントラストを補正する場合には、画像の輝度または色値の階調を圧縮することができる。また、画像のコントラストを損なわずに、各画像に応じた適切な輝度または色値の階調の圧縮をより高速に実行することができる。
入力画像の各画素の輝度である入力輝度を入力画像の色成分の値である色値に基づいて算出し、入力輝度の分布に基づいて、輝度の階調の圧縮に用いる変換曲線を算出し、入力輝度からなる輝度画像の低周波成分からなる大局輝度画像の輝度である大局輝度を算出し、変換曲線に基づいて、入力輝度の階調および大局輝度の階調を圧縮し、変換曲線の傾き、および、階調が圧縮された大局輝度に基づいて、階調が圧縮された入力輝度からなる階調圧縮輝度画像のコントラストを補正し、入力画像と輝度画像との差分である差分画像の各画素値に所定の係数を乗じ、さらに、コントラストが補正された階調圧縮輝度画像を加算することにより、入力画像の色値の階調を変換する場合には、画像の輝度または色値の階調を圧縮することができる。また、画像のコントラストを損なわずに、各画像に応じた適切な輝度または色値の階調の圧縮をより高速に実行することができる。
なお、以上にフローチャートを参照して説明した処理の順番は、その一例であり、本発明の本質に関わらない範囲で、処理の順序を入れ替えたり、複数の処理を同時に並列して行うようにしてもよい。例えば、入力画像のR、G、B成分を非線形変換した後に、輝度値を算出するようにしてもよい。また、非線形変換を行う前に、縮小画像を生成するようにしてもよい。さらに、輝度値のヒストグラムの裾野値および平均レベルを、非線形変換する前の輝度値のヒストグラムから求めた後に、非線形変換するようにしてもよい。
また、類似の処理を行う構成を統合したり、共有化するようにしてもよい。例えば、マッピング部191−1,191−2、非線形変換部162のマッピング部201、および、非線形逆変換部170の逆マッピング部411を共通の回路を用いて実現することが可能である。
さらに、以上の説明では、トーンカーブを生成するために必要な輝度値の平均レベルを、画像全体の輝度値の平均値とするようにしたが、例えば、縮小画像の輝度値の平均値とするようにしてもよい。これにより、平均レベルの算出時間が短縮される。また、例えば、多くのカメラの制御系に設けられているAE(Auto Exposure)制御機構を利用して、画像の全体または一部の明るさをAE制御系により計測するようにしたり、AE制御系が主要な被写体と判断した被写体領域の明るさを計測して、計測された明るさに基づく輝度値を平均レベルとするようにしてもよい。さらに、ユーザに画像内の所望の領域を指定させ、指定された領域に重点をおいた平均レベルを算出することにより、ユーザが所望するものにより近いトーンカーブを生成するようにすることも可能である。
上述した処理を特徴づけるものは、縮小画像生成部181による画像縮小処理と、補間部183による画像補間処理の組み合わせによって実現される低周波フィルタを利用して、画像中の大局輝度成分とコントラスト成分を分離することである。この構成により分離されるコントラスト成分は画像の高周波成分だけでなくより低周波成分も含めたものとなるので、いたずらにディテールだけが強調されることなしに自然なコントラスト補正をおこなうことが可能である。また、低周波成分も含めたコントラスト成分を分離するために必要な巨大な2次元オペレータを画像縮小処理と画像補間処理の2つに分けて実現したことにより、巨大なディレイラインやフレームメモリなどが必要ない、非常にコンパクトな回路構成で実現可能という利点がある。
ところで、デジタルスチルカメラの分野では、信号処理をおこなう前の画像センサ出力(以下RAWデータ)、または、それに対応するようなモザイク画像データをカメラの出力画像データとして出力できる機能が一般的になってきた。それに伴い、従来はカメラ装置内のみで必要だったRAWデータ、または、それに対応するようなモザイク画像データに対する信号処理がカメラの外、例えばパーソナルコンピュータ上で動作する画像処理プログラムなどで利用されるようになってきた。
しかしながら、図2を用いて説明したデジタルビデオカメラ101において利用されている階調変換技術は、入力画像として、各画素にRGB3色の色情報が完全にそろった画像データを前提としているため、RAWデータに対応するような階調変換後のモザイク画像データを外部の機器に出力することは困難であった。
また、図2を用いて説明したデジタルビデオカメラ101において利用されている階調変換技術は、入力画像として、各画素にRGB3色の色情報が完全にそろった画像データを前提としている。そのため、階調変換されたRGB画像を出力するために、R,G,Bの3つの色情報の画素値を並列に処理する必要があった。そのために、図4に示されるように、R,G,Bの3つの色情報のそれぞれを処理する、非線形変換部162−1乃至162−3、階調補正部169−1乃至169−3、および、非線形逆変換部170−1乃至170−3が必要であり、回路構成を更にコンパクトにする妨げとなっていた。
モザイク画素値はその画素によってどれか1色の情報しかもたないが、階調変換部143において実行される、画素値の階調補正処理は、基本的には、画素値が何色であるかに依存しない演算である。従って、画素値の階調補正処理においては、本質的に、注目画素が何色に対応する画素であるかを判別する必要がない。
そこで、色ごとに異なる演算を並列に用意することなく、例えば、階調変換前後で濃淡値に対する色の比率または色の差分を保存するようにモザイク画像を構成するそれぞれの画素値を変換することにより、階調補正を行うようにすることも可能である。
図30は、本発明を適用したデジタルビデオカメラの、図2を用いて説明した場合とは異なる構成を有する場合の、一実施の形態を示すブロック図である。
なお、図2を用いて説明した場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
すなわち、図30に示されるデジタルビデオカメラ701は、DSP116に代わってDSPブロック711が設けられ、メモリ121に代わって、メモリ712が設けられ、新たに、外部インタフェース(I/F)713が設けられている以外は、基本的に、図2を用いて説明したデジタルビデオカメラ101と同様の構成を有している。なお、以下、DSPブロック711を、単にDSP711と呼ぶ。
DSP711は、画像データのダイナミックレンジが、例えばLCD119が表示可能なダイナミックレンジになるように、後述する画像処理を画像データに施した後、画像処理を施した画像データを、必要に応じて、LCDドライバ118またはCODEC120に供給するか、または、デモザイク処理が施される前のモザイク画像データの出力を要求された場合、実行可能な画像処理のうちの一部を施したモザイク画像データをメモリ712に供給する。
メモリ712は、半導体、磁気記録媒体、光磁気記録媒体、光記録媒体などより構成され、CODEC120が符号化した画像データを記録するとともに、DSP711により実行可能な画像処理のうちの一部を施したモザイク画像データの供給を受けて記録し、デモザイク処理が施される前のモザイク画像データの出力を要求された場合、記録されているモザイク画像を、I/F713に供給する。
I/F713は、外部のネットワーク、または、装置とのインタフェースであり、デモザイク処理が施される前のモザイク画像データの出力を要求された場合、メモリ712から供給されたデモザイク処理が施される前のモザイク画像データを、所定の装置に出力する。
次に、図31は、DSP711の内部のプロセッサ(演算ユニット)が、所定のプログラムを実行することにより実現される機能の構成の例を示すブロック図である。DSP711の内部のプロセッサが所定のプログラムを実行することにより、ホワイトバランス部731、階調変換部732、および、デモザイク部733の機能が実現されるとともに、図3を用いて説明したDSP116が有する機能の一部である、ガンマ補正部144、および、YC変換部145の機能が実現される。
ホワイトバランス部731は、A/Dコンバータ115によりA/D変換された画像データであるモザイク画像を取得する。モザイク画像は、R,G,Bのうちいずれかの色成分に対応するデータが1つの画素に格納され、例えば、Bayer配列と呼ばれる色配列に従って各画素が配置されている画像である。そして、ホワイトバランス部731は、モザイク画像のRGBの各画素値に適切な係数をかけることにより、被写体の無彩色の部分の色バランスが実際に無彩色となるように、モザイク画像のホワイトバランスを調整する。ホワイトバランス部731は、ホワイトバランスを調整したモザイク画像を階調変換部732に供給する。なお、以下、ホワイトバランスが調整されたモザイク画像データの画素位置pにおける画素値をMw(p)とする。
階調変換部732は、図33などを参照して後述するように、ホワイトバランスが調整されたモザイク画像に、階調変換処理を施す。階調変換部732は、階調変換を施した画像をデモザイク部733に供給するか、または、デモザイク処理が施される前のモザイク画像データの出力を要求された場合、実行可能な画像処理のうちの一部を施したモザイク画像データをメモリ712に供給する。なお、以下、階調変換処理が施された画像データの画素位置pにおける画素値をMu(p)とする。
デモザイク部733は、ホワイトバランスが調整され、階調が変換されたモザイク画像の入力を受けて、1つの画素がR,G,B成分を全て有するようにするデモザイク処理をモザイク画像に施す。これにより、R,G,Bの3つの色成分にそれぞれ対応するR画像、G画像、B画像の3つの画像データが生成される。デモザイク部733は、生成したR画像、G画像、B画像の3つの画像データをガンマ補正部144に供給する。以下、ホワイトバランスが調整され、階調が変換されたデモザイク画像データの画素位置pにおける画素値を[R u(p), G u(p), B u(p)]とする。なお、R u(p)はR成分の画素値であり、G u(p)はG成分の画素値であり、B u(p)はB成分の画素値である。
なお、ガンマ補正部144、および、YC変換部145の機能は、図3を用いて説明したDSP116における場合と同様であるので、その詳細な説明は省略する。
次に、図32のフローチャートを参照して、DSP711により実行される画像処理2を説明する。なお、この処理は、例えば、デジタルビデオカメラ701による撮影が開始され、A/Dコンバータ115からDSP711への画像データ(モザイク画像)のストリームの供給が開始されたとき、開始される。なお、DSP711に供給された画像データは、逐次DSP711の図示せぬ内部のメモリに格納される。
ステップS201において、ホワイトバランス部731は、モザイク画像を読み込む。具体的には、ホワイトバランス部731は、DSP711の図示せぬ内部のメモリに格納されている先頭のフレームのモザイク画像を読み込む。
ステップS202において、ホワイトバランス部731は、取得したモザイク画像のホワイトバランスを調整する。ホワイトバランス部731は、ホワイトバランスを調整したモザイク画像を階調変換部732に供給する。
ステップS203において、階調変換部732は、階調変換処理2を行う。階調変換処理2の詳細は図37および図38を参照して後述するが、この処理により、モザイク画像の階調が変換され、階調が変換されたモザイク画像がデモザイク部733に供給される。
ステップS204において、デモザイク部733は、デモザイク処理を行う。具体的には、デモザイク部733は、読み込んだモザイク画像にデモザイク処理を施し、RGB画像を生成する。デモザイク部733は、生成したRGB画像をガンマ補正部144に供給する。
ステップS205において、ガンマ補正部144は、RGB画像にガンマ補正を施す。ガンマ補正部144は、ガンマ補正を施したRGB画像をYC変換部145に供給する。
ステップS206において、YC変換部145は、YC変換処理を行う。具体的には、YCマトリックス処理およびクロマ成分に対する帯域制限を行うことにより、RGB画像からY画像およびC画像を生成する。
ステップS207において、YC変換部145は、Y画像およびC画像を出力する。具体的には、YC変換部145は、必要に応じて、Y画像およびC画像を、LCDドライバ118またはCODEC120に出力する。
ステップS208において、ホワイトバランス部731は、後続するフレームが存在するか否かを判定する。ホワイトバランス部731は、DSP711の図示せぬ内部のメモリに後続するフレームのモザイク画像が蓄積されている場合、後続フレームが存在すると判定し、処理はステップS201に戻る。
ステップS201において、次のフレームのモザイク画像が読み込まれ、読み込まれたモザイク画像に対して、ステップS202以降の処理が行われる。
その後、ステップS208において、後続するフレームが存在しないと判定されるまで、ステップS201乃至S208の処理が繰返し実行され、A/Dコンバータ115から供給されるモザイク画像に対して1フレームずつ順番に画像処理が行われる。
ステップS208において、後続するフレームがないと判定された場合、画像処理は終了する。
このような処理により、DSP711により画像処理が実行される。すなわち、DSP711により実行される画像処理2においては、図15を用いて説明した画像処理1と比較して、デモザイク処理の前に、ホワイトバランスの調整と階調変換処理が施されるようになされている。すなわち、ホワイトバランスの調整と階調変換は、モザイク画像に対して施される。
なお、ここでは、モザイク画像の階調が変換され、階調が変換されたモザイク画像がデモザイク部733に供給されるものとして説明したが、上述したように、階調が変換されたモザイク画像は、メモリ712に供給され、I/F713を介して、外部に出力される場合もある。
次に、図33は、図31のDSP711の階調変換部732が有する機能を構成の例を示す機能ブロック図である。
階調変換部732は、3つの部分に分けて説明することができる。第1の部分は濃淡値算出部761、第2の部分は濃淡値階調変換部762、第3の部分はモザイク画素値階調変換部763である。
濃淡値算出部761は、輝度算出部771、非線形変換部772によって構成され、濃淡値階調変換部762は、トーンカーブ算出部781、トーンカーブメモリ782、γ_compパラメータメモリ783、大局輝度算出部784、階調変換部785、および、コントラスト補正部786によって構成され、モザイク画素値階調変換部763は、非線形変換部811、階調補正部812、および、非線形逆変換部813によって構成されている。
非線形変換部772は、輝度値に対して非線形変換処理を行うものであり、非線形変換部811は、モザイク画像のそれぞれの画素値に対して非線形変換処理を行うものである。また、階調補正部812は、モザイク画像のそれぞれの画素値に対して、階調補正を行うものである。
また、大局輝度算出部784は、縮小画像生成部791、縮小画像メモリ792、および、補間部793を含んで構成され、階調変換部785は、輝度に対して処理を施すマッピング部801、および、大局輝度に対して処理を施すマッピング部802を含んで構成される。
次に、それぞれが有する機能について説明する。
濃淡値算出部761は、現在注目中の画素位置における濃淡値を算出する。
濃淡値算出部761の輝度算出部771は、モザイク画像を取得し、そのうちのいずれかの画素、すなわち、R,G,または、Bのいずれかに対応する画素を注目画素として、例えば、図34に示されるように、注目画素位置m22を中心に3×3画素の範囲に存在する、注目画素位置の周囲9画素を用いて注目画素位置における輝度値を算出する。
典型的な色フィルタ配列であるBayer配列であれば、注目画素位置m22を中心に3×3画素の範囲を見ることにより、色情報を構成するRGB3色の画素がそろう。輝度算出部771は、周囲9画素から、次の式(20)乃至式(23)を用いて、4つの色補間値C1,C2,C3,C4を算出する。
算出された4つの色補間値は、それぞれが、注目画素位置近傍におけるR,G,Bのいずれかに対応する補間値であり、4つのうち2つがGに対応する補間値であり、残りが、それぞれ、RまたはBのいずれかに対応する補間値である。4つの補間値のうちのそれぞれがいずれの色に該当するかは、画像の撮像に用いているセンサデバイスの色配列と注目画素が画像上どの位置であるかによって判別することができる。
輝度算出部771は、注目画素位置の輝度値を、次の式(24)に示すように、4つの色補間値の線形和で算出する。
ここで、判別した後の色補間値をR,G1,G2,Bと表記している。kR,kG,kBは、線形和の係数である。線形和の係数の具体的な値は、経験的または実験的に、好ましいと思われる値を用いるものとすればよいが、とりうる値の一例として、例えば、[kR,kG,kB]=[0.2126,0.7152,0.07228]などを用いるようにすることができる。
輝度算出部771は、算出した輝度値L(p)を非線形変換部772に出力する。
非線形変換部772は、図5を用いて説明した非線形変換部162と基本的に同様の機能を有し、輝度算出部771から供給された輝度値L(p)を、非線形特性により変調する。
CCDやCMOSなどの固体撮像素子を用いたイメージセンサは、通常入射光強度に対して線形な出力特性をもつので、RAWデータ(モザイク画像)の階調特性は光強度に線形である。光強度に線形な階調特性では輝度値の分布は暗いほうに集中するため、そのままでは階調変換処理が適用し難い。そこで、ここでは、非線形変換によって、暗い値への分布の集中を緩和させた濃淡値への変換処理を行うものとする。
分布の集中を緩和させるためには、上に凸の特性をもつような滑らかな単調増加の特性が適している。非線形変換部772においても、図5を用いて説明した非線形変換部162における場合と同様に、対数特性やガンマ補正によく利用される指数を1より小さくしたべき乗特性を用いる(変換曲線メモリ202に保持するルックアップテーブルに適用する)ものとすると好適である。
濃淡値階調変換部762は、濃淡値算出部761が算出した各画素位置における濃淡値を階調変換する処理のほか、次のフレームで階調変換をおこなうときに用いる中間データを算出して次のフレームの処理の時までデータを保持する処理を実行するものであり、図4のトーンカーブ算出部163乃至コントラスト補正部168と基本的に同様の機能を有するトーンカーブ算出部781乃至コントラスト補正部786により構成されている。
中間データとは、具体的には、濃淡値階調変換部762のトーンカーブメモリ782、γ_compパラメータメモリ783、および、大局輝度算出部784の縮小画像メモリ792に格納されているデータである。上述したように、これらのデータを算出するためには、1フレーム中の全画素情報を用いる必要がある。このため、各画素毎の階調変換処理に並行してこれら中間データの算出が実行され、算出された中間データが、次のフレームの階調変換処理に用いられる。
濃淡値階調変換部762のうち、中間データ算出に関連するのは、トーンカーブ算出部781および大局輝度算出部784の縮小画像生成部791である。トーンカーブ算出部781は、各画素位置の濃淡値に階調圧縮をおこなうためのトーンカーブと、そのトーンカーブの傾き情報であるγ_compパラメータを算出して、トーンカーブメモリ782およびγ_compパラメータメモリ783にそれぞれ供給する。縮小画像生成部791は、各画素位置の濃淡値の大局輝度成分を算出するために、濃淡値を縮小した縮小画像を算出し、縮小画像メモリ792に供給する。
トーンカーブ算出部781および大局輝度算出部784の縮小画像生成部791においてこれらの処理が実行されている間に、その前のフレームに対して、トーンカーブ算出部781および大局輝度算出部784の縮小画像生成部791において算出され、トーンカーブメモリ782、γ_compパラメータメモリ783、および、大局輝度算出部784の縮小画像メモリ792に格納されているデータが用いられて、それ以外の各部において、階調変換処理が実行される。
トーンカーブ算出部781乃至コントラスト補正部786は、処理を施すデータが、濃淡値算出部761が算出した各画素位置における濃淡値である以外は、図4のトーンカーブ算出部163乃至コントラスト補正部168と基本的に同様の機能を有するので、その詳細な説明は省略する。
モザイク画素値階調変換部763は、図4の非線形変換部162−1乃至162−3、階調補正部169−1乃至169−3、および、非線形逆変換部170−1乃至170−3と、取り扱う画像データがデモザイク画像のうちのいずれかの色成分の画像に対応するデータではなくモザイク画像データであること以外は、基本的に同様の機能を有する非線形変換部811、階調補正部812、および、非線形逆変換部813を含んで構成されている。
非線形変換部811は、濃淡値算出部761の非線形変換部772と同じ変換特性で非線形変換を行うものである。すなわち、非線形変換部811の変換曲線メモリ202に保持されている変換曲線は、非線形変換部772の変換曲線メモリ202に保持されている変換曲線と同一のものである。入力されたモザイク画像の各画素は、非線形変換部811において、対応する画素位置の濃淡値と同じ階調特性に変換された後、階調補正部812に供給される。
階調補正部812は、対応する画素位置の濃淡値と、それを階調変換した濃淡値に基づいて階調変換を実行し、階調変換後のモザイク画素値を非線形逆変換部813に供給する。
上述したように、モザイク画素値はその画素によってどれか1色の情報しかもたないが、階調補正部812で施される処理は画素値が何色であるかに依存しない演算である。従って、階調補正部812は、階調補正を行う場合、その画素の画素値が、何色に対応する値であるかを判別しなくてもよく、RGBのそれぞれにおいて異なる演算を並列に用意する必要もない。
例えば、階調補正部812は、図35に示されるような構成とすることができる。図35の構成を有する階調補正部812は、ガンマカーブなどのべき乗変換を用いて非線形変換による階調特性変換が行われている場合に用いると好適である。除算部891は、非線形変換部811から供給された階調特性変換後の各画素の画素値を、濃淡値算出部761の非線形変換部772から供給された階調特性変換後の各画素の輝度値で除算する。そして、乗算部892は、除算結果に、コントラスト補正部786から供給された、コントラスト補正された輝度値を乗算する。図35の構成を有する階調補正部812は、すなわち、式(25)に示されるようにして、階調変換前後で濃淡値に対する色比率を保存するようにモザイク画素値を変換することができる。
また、例えば、階調補正部812は、図36に示されるような構成とすることができる。図36の構成を有する階調補正部812は、対数変換を用いて非線形変換による階調特性変換が行われている場合に用いると好適である。減算部893は、非線形変換部811から供給された階調特性変換後の各画素の画素値から、濃淡値算出部761の非線形変換部772から供給された階調特性変換後の各画素の輝度値を減算する。そして、加算部894は、減算結果に、コントラスト補正部786から供給された、コントラスト補正された輝度値を加算する。図36の構成を有する階調補正部812は、すなわち、式(26)に示されるようにして、階調変換前後で濃淡値に対する色差分を保存するようにモザイク画素値を変換することができる。
例えば、仮に、非線形変換として対数変換を採用した場合、色差分を保存する演算は、線形な階調で色比率を保存するのと同じであり、色比率を保存する演算と比較して、乗除算が加減算に置換されるので演算としては容易である。従って、非線形変換として対数変換を採用した場合、図36に示されるように、色差分保存の方式で階調補正部812を構成すると好適である。なお、べき乗変換の場合には、原理的には色比率保存の方式のほうが好適であるが、べき乗の指数を小さくすれば色差保存方式も問題なく利用することが可能である。
非線形逆変換部813は、図14を用いて説明した非線形逆変換部170と基本的に同様の機能を有し、変換曲線メモリ412に保持されている、非線形変換部811による非線形変換を逆変換するための変換曲線を用いて、非線形変換および階調補正された画素値を、元の階調に戻して出力する。
次に、図37および図38のフローチャートを参照して、図32のステップS203において実行される階調変換処理2について説明する。
ステップS251において、階調変換部732は、ホワイトバランス部731によりホワイトバランスが調整されたモザイク画像を読み込む。読み込まれたモザイク画像は、濃淡値算出部761の輝度算出部771、および、モザイク画素値階調変換部763の非線形変換部811に供給される。
ステップS252において、階調変換部732は、縮小画像、トーンカーブ、γ_compをメモリから読み込む。具体的には、階調変換部732の補間部793の近傍選択部371(図12)は、1つ前のフレームの階調変換処理において生成された縮小画像を縮小画像メモリ792から読み込む。マッピング部801−1,801−2は、1つ前のフレームの階調変換処理において算出されたトーンカーブを表すルックアップテーブルを、トーンカーブメモリ782から読み込む。コントラスト補正部786のゲイン値算出部391(図13)は、1つ前のフレームの階調変換処理において算出されたγ_compパラメータを、γ_compパラメータメモリ783から読み込む。
ステップS253において、トーンカーブ算出部781は、noiseLevel、saturationLevelを読み込む。具体的には、トーンカーブ算出部781の輝度域算出部221の飽和画素除外部242(図7)、および、平均レベル算出部222の飽和画素除外部281(図8)は、noiseLevel(nl)およびsaturationLevel(nl)を、DSP711の図示せぬ内部のメモリから読み込む。
ステップS254において、輝度算出部771は、供給されたモザイク画像のうち、未処理の画素から注目画素を定める。
ステップS255において、図39を用いて後述する濃淡値算出処理が実行される。
そして、ステップS256乃至ステップS260において、図16のステップS26乃至ステップS30と同様の処理が実行される。
すなわち、トーンカーブ算出部781において、図18を用いて説明したトーンカーブ算出のための画素処理と基本的に同様の処理が実行され、縮小画像生成部791において、図19を用いて説明した縮小画像算出のための画素処理と基本的に同様の処理が実行され、大局輝度算出部784において、図20を用いて説明した大局輝度値算出処理と基本的に同様の処理が実行される。
そして、階調変換部785は、非線形変換された輝度値および大局輝度値にトーンカーブを適用し、コントラスト補正部786において、図22を用いて説明したコントラスト補正処理と基本的に同様の処理が実行される。
ステップS261において、非線形変換部811は、供給されたモザイク画像の注目画素位置の画素値をそれぞれ非線形変換する。具体的には、非線形変換部811のマッピング部201(図5)は、それぞれ、変換曲線を表すルックアップテーブルを変換曲線メモリ202から読み込み、ルックアップテーブルに基づいて、注目画素の画素値Mw(p)を非線形変換し、非線形変換した画素値M(nl)(p)を、階調補正部812に出力する。
なお、非線形変換部811が用いるルックアップテーブルは、ステップS255において実行される濃淡値算出処理(詳細は後述する)において、非線形変換部772が用いるルックアップテーブルと同じものとされる。すなわち、画素値Mw(p)に輝度値L(p)と同様の非線形変換が施される。
ステップS262において、階調補正部812は、非線形変換されたモザイク画像の注目画素の画素値をそれぞれ階調補正する。具体的には、階調補正部812は、上述した式(25)または式(26)を用いて、階調補正処理を実行し、階調補正した画素値Mu (nl)(p)を、非線形逆変換部813に供給する。
ステップS263において、非線形逆変換部813は、階調補正されたモザイク画像の注目画素の画素値を非線形逆変換する。具体的には、非線形逆変換部813の逆マッピング部411(図14)は、それぞれ、変換曲線を表すルックアップテーブルを変換曲線メモリ412から読み込み、ルックアップテーブルに基づいて、画素値Mu (nl)(p)Rに対して、ステップS261における非線形変換の逆変換となる非線形逆変換を行う。
ステップS264において、非線形逆変換部813は、モザイク画像における非線形逆変換された注目画素の画素値をデモザイク部733、または、メモリ712に出力する。
ステップS265において、階調変換部732は、フレーム内の全ての画素を処理したか否かを判定する。まだフレーム内の全ての画素を処理していないと判定された場合、処理はステップS254に戻り、ステップS265において、フレーム内の全ての画素を処理したと判定されるまで、ステップS254乃至S265の処理が繰返し実行される。すなわち、現在処理しているフレーム内の全ての画素が、1画素ずつ順番に(例えば、ラスタスキャン順に)階調変換される。
ステップS265において、フレーム内の全ての画素を処理したと判定された場合、ステップS266において、図24を用いて説明した、トーンカーブとγ_comp算出処理が実行される。
そして、ステップS267において、図26を用いて説明された、縮小画像生成処理が実行されて、処理は、図32のステップS203に戻り、ステップS204に進む。
このような処理により、モザイク画像に対して、階調変換処理が施される。
なお、ここでは、フローチャートに記載される順番に処理が実行されるものとして説明しているが、以上にフローチャートを参照して説明した処理の順番は、その一例であり、本発明の本質に関わらない範囲で、処理の順序を入れ替えたり、複数の処理を同時に並列して行うようにしてもよいことは、言うまでもない。
具体的には、階調変換部732においては、上述したように、トーンカーブ算出部781および大局輝度算出部784の縮小画像生成部791において中間データの算出処理が実行されている間に、並行して、その前のフレームに対して、トーンカーブ算出部781および大局輝度算出部784の縮小画像生成部791において算出され、トーンカーブメモリ782、γ_compパラメータメモリ783、および、大局輝度算出部784の縮小画像メモリ792に格納されている中間データが用いられて、それ以外の各部において、階調変換処理が実行される。
階調変換処理が施されたモザイク画像は、メモリ712に供給されて、階調変換が施されたRAWデータとして保持され、必要に応じて外部出力されるか、または、デモザイク部733においてデモザイク処理が施されて、ガンマ補正部144によりガンマ補正されたのち、YC変換部145においてYC分離される。
次に、図39のフローチャートを参照して、図37のステップS255において実行される、濃淡値算出処理について説明する。
ステップS301において、濃淡値算出部761の輝度算出部771は、例えば、図34に示されるように、注目画素位置m22を中心に3×3画素の範囲に存在する、注目画素位置の周囲9画素を読み込む。
ステップS302において、輝度算出部771は、ステップS301において読み込まれた周囲9画素の画素値を用いて、上述した式(20)乃至式(23)を用いて、4つの色補間値C1,C2,C3,C4を算出する。
算出された4つの色補間値は、それぞれが、注目画素位置近傍におけるR,G,Bのいずれかに対応する補間値であり、4つのうち2つがGに対応する補間値であり、残りが、それぞれ、RまたはBのいずれかに対応する補間値である。4つの補間値のうちのそれぞれがいずれの色に該当するかは、画像の撮像に用いているセンサデバイスの色配列と注目画素が画像上どの位置であるかによって判別することができる。
ステップS303において、輝度算出部771は、上述した式(24)に示すように、4つの色補間値の線形和により、注目画素位置の輝度値を算出する。
ステップS304において、濃淡値算出部761の非線形変換部772は、図5を用いて説明した場合と基本的に同様にして、輝度算出部771から供給された輝度値L(p)を、非線形特性により変調し、処理は、図37のステップS255に戻り、ステップS256に進む。
このような処理により、モザイク画像の供給を受けて、注目画素における濃淡値を算出し、濃淡値階調変換部762に供給することができる。
なお、以上にフローチャートを参照して説明した処理の順番は、その一例であり、本発明の本質に関わらない範囲で、処理の順序を入れ替えたり、複数の処理を同時に並列して行うようにしてもよいことは、言うまでもない。また、類似の処理を行う構成を統合したり、共有化するようにしても良い。
図30を用いて説明したデジタルビデオカメラ701は、図2を用いて説明したデジタルビデオカメラ101における階調変換処理が、各画素に全色そろったカラー画像(デモザイク画像)の入力を前提としていたので、色数分の並列処理の存在は避けられなかったのに対して、RAWデータに対して階調変換をおこないRAWデータに対応するモザイク画像データを出力するような処理構成とすることにより、色数分の並列処理を行わないものとした。すなわち、デジタルビデオカメラ701のDSP711が有する階調変換部732において実行される、RAWデータを入力とし、対応するモザイク画像データを出力とする階調変換は、入力RAWデータの注目画素位置における輝度に応じた濃淡値を算出し、その濃淡値に対して階調変換を行い、階調変換によって濃淡値が変化した分に応じて注目画素位置のモザイク画像データの各画素値を変調することができるようになされている。
これにより、図30を用いて説明したデジタルビデオカメラ701は、図2を用いて説明したデジタルビデオカメラ101と比較して、回路構成を、更にコンパクトにすることが可能となる。
また、デジタルビデオカメラ701のDSP711が有する階調変換部732においては、入力されたモザイク画像の輝度に応じた濃淡値を算出するために、注目画素の周囲の画素を利用して注目画素位置における完全なカラー情報を得るようにして輝度値に相当する濃淡値を得るようになされている。また、入射光強度に対して線形な特性のモザイク画像データの階調をそのまま用いた場合、輝度値が暗いほうに集中してしまうので、暗部を持ち上げるような適切な非線形変換を適用することにより、階調変換の適用が容易になる。さらに、非線形変換として対数変換やガンマ補正(べき乗変換)を用いることにより、階調変換によって濃淡値が変化した分に応じて注目画素位置のモザイク画像データの画素値を変調する操作がさらに簡易になるので好適である。
更に、デジタルビデオカメラ701のDSP711が有する階調変換部732においては、階調変換によって輝度の濃淡値が変化した分に応じてモザイク画像の注目画素位置の画素値を変調する方法として、注目画素の入力画素値の輝度の濃淡値に対する比率を保存するように値を決定する方法と、輝度の濃淡値に対する差分を保存するように値を決定する方法とのいずれの方法を用いるようにしても良い。これらの方法は、いずれも、濃淡値の階調変換前後の値と注目画素の入力画素値がわかれば演算可能であり、注目画素以外の入力画素値が必要ないので、モザイク画像の画像処理に好適である。特に、色差分を保存する方法は、非線形変換処理と組み合わせて用いることで好適な結果を得ることが可能となる。
さらに、デジタルビデオカメラ701のDSP711が有する階調変換部732においては、図2を用いて説明したデジタルビデオカメラ101における場合と同様にして、濃淡値の階調変換方法として、トーンカーブ補正による方法、または、トーンカーブ補正とコントラスト補正を組み合わせた方法を用いることが可能である。トーンカーブは、算出した濃淡値の画像全体の分布から、その画像に最適な形状を計算することも可能である。
このような構成とすることにより、自然でかつ効果の高い階調変換を、よりシンプルな構成で実現することが可能となる。
なお、本発明は、上述したデジタルビデオカメラ以外に、画像の輝度または色値(画素値)の階調を圧縮する装置(例えば、画像再生装置、画像記録装置、画像表示装置など)に適用することができる。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
図40は、汎用のパーソナルコンピュータ900の内部の構成例を示す図である。CPU(Central Processing Unit)901は、ROM(Read Only Memory)902に記憶されているプログラム、または記録部908からRAM(Random Access Memory)903にロードされたプログラムに従って各種の処理を実行する。RAM903にはまた、CPU901が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU901、ROM902、およびRAM903は、バス904を介して相互に接続されている。このバス904にはまた、入出力インタフェース905も接続されている。
入出力インタフェース905には、ボタン、スイッチ、キーボードあるいはマウスなどで構成される入力部906、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などのディスプレイ、並びにスピーカなどで構成される出力部907、ハードディスクなどで構成される記録部908、およびモデムやターミナルアダプタなどで構成される通信部909が接続されている。通信部909は、インターネットを含むネットワークを介して通信処理を行う。
入出力インタフェース905にはまた、必要に応じてドライブ910が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどよりなるリムーバブルメディア911が適宜装着され、そこから読み出されたコンピュータプログラムが、記録部908にインストールされる。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを記録する記録媒体は、図40に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini-Disc)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア911により構成されるだけでなく、装置本体にあらかじめ組み込まれた状態でユーザに提供される、プログラムが記録されているROM902または記録部908に含まれるハードディスクなどで構成される。
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
さらに、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
701 デジタルビデオカメラ, 711 DSPブロック, 731 ホワイトバランス部, 732 階調変換部, 733 デモザイク部, 761 濃淡値算出部, 762 濃淡値階調変換部, 763 モザイク画素値階調変換部, 771 輝度算出部, 772 非線形変換部, 781 トーンカーブ算出部, 782 トーンカーブメモリ, 783 γ_compパラメータメモリ, 784 大局輝度算出部, 785 階調変換部, 786 コントラスト補正部, 791 縮小画像生成部, 792 縮小画像メモリ, 793 補間部, 801,802 マッピング部, 811 非線形変換部, 812 階調補正部, 813 非線形逆変換部