図1は、本実施形態の撮像装置の構成例を示した図である。撮像装置は、デジタルカメラ、ビデオカメラ、デジタル双眼鏡、ノートPC、タブレット端末、スマートフォン、携帯電話、PDA(Personal Digital Assistant)等とすることができ、例示したいずれの装置であってもよい。なお、ビデオカメラには、車載用カメラや監視カメラ等も含まれる。撮像装置10は、レンズユニット11、撮像ユニット12、コントローラ13、画像メモリ14、操作ユニット15、出力I/F16、透過率計測センサ17、画像処理回路18を含んで構成される。
撮像装置10は、撮像対象である被写体にレンズユニット11を向けて配置され、撮像時に、操作ユニット15の1つであるシャッターボタンが押下される。シャッターボタンが押下されると、撮像装置10は、被写体に反射した光を、レンズユニット11を通して撮像ユニット12へ入射させる。レンズユニット11は、複数のレンズ、絞り、焦点調節機構を含んで構成される。焦点調整機構は、焦点を自動で調整するオートフォーカス(AF)機能を提供する。
撮像ユニット12は、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサやCCD(Charge Coupled Device)イメージセンサ等の撮像素子を含む。撮像素子は、入射された光の強さに応じた大きさの電圧に変換する。撮像ユニット12は、撮像素子で変換された電圧に対し、ゲインをかけるAFE(Analog Front End)回路を備える。また、撮像ユニット12は、AFE回路から出力された電圧、すなわちアナログ信号をデジタルデータへ変換するA/D変換回路も備える。A/D変換回路から出力されるデジタルデータは、コントローラ13へ出力される。
コントローラ13は、撮像装置10全体の制御を行う。コントローラ13は、撮像ユニット12からデジタルデータである、撮像された画像の画像データを受け取る。そして、コントローラ13は、受け取った画像データを画像処理回路18へ送って画像処理を実行させたり、画像メモリ14に保存したり、出力I/F16を介して出力デバイスに出力する等の処理を実行する。また、コントローラ13は、設定されたAF機能に従い、また、操作ユニット15が受け付けたレンズの焦点距離切り替え等の指示を受け、レンズユニット11を制御し、その機能や焦点距離の切り替え等を行う。
コントローラ13は、上記の制御を行うためのプログラムやそのプログラムが使用する設定値等の設定情報を記憶するメモリ、そのプログラムを実行するCPUを含んで構成される。メモリは、上記のAF機能や焦点距離の切り替え等を行うために、レンズの焦点距離等のレンズに対して設定されたレンズ情報を記憶することができる。
操作ユニット15は、シャッターボタン等の各種ボタンや操作パネルを含み、撮像装置10を操作するユーザの操作内容を取得し、コントローラ13へその内容を伝達する。例えば、ユーザがシャッターボタンを押下した場合、操作ユニット15は、シャッターボタンが押下された旨をコントローラ13へ伝える。この場合、コントローラ13は、撮像ユニット12に対して指示し、被写体の撮像を実行させる。操作ユニット15は、操作内容のほか、ユーザがコントラスト調整の1つである霧補正を行うか否かの情報も受け付け、それをコントローラ13へ伝える。
出力I/F16は、画像メモリ14に保存された画像データを、コントローラ13を経由して受け付け、出力デバイスへ出力する。出力デバイスは、印刷装置、ファックス装置、コピー機、電子黒板、プロジェクタ、PC、タブレット端末、スマートフォン等、画像データを出力することができれば、いかなる機器であってもよい。出力I/F16と出力デバイスとは、HDMI(登録商標)(High-Definition Multimedia Interface)ケーブル等のケーブルにより接続されていてもよいし、ネットワークにより接続されていてもよい。なお、ネットワークは、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット等のいずれのネットワークであってもよく、また、有線、無線のいずれのネットワークであってもよい。
透過率計測センサ17は、光の透過率を計測するためのセンサで、計測手段の1つとして用いることができる。なお、透過率は、画像から求めることもできるため、この透過率計測センサ17は、撮像装置10に実装されていなくてもよい。透過率計測センサ17は、例えば、赤外光等を投光してその後方散乱を計測することにより透過率を計測することができる。また、透過率計測センサ17として測距センサを用い、撮像装置10から被写体までの距離を計測し、画像情報を合わせて透過率を計測してもよい。そのほか、特定の波長をもつレーザー光を照射し、そのレーザー光の反射率から透過率を算出してもよいし、複数の撮像装置で角度を変えて撮像し、撮像画像の視差から上記の距離を求め、その距離から透過率を算出してもよい。この透過率計測センサ17も、コントローラ13により制御される。なお、透過率計測センサ17を用いて透過率を計測することで、画像から透過率を求める場合に比べて高精度の透過率を得ることができる。
画像処理回路18は、撮像ユニット12から出力され、画像メモリ14に保存された画像データを、コントローラ13を経由して受け取り、出力デバイスが要求する出力形式になるように画像処理を実行する。また、画像処理回路18は、コントラスト調整も実施する。画像処理回路18は、図1に示すようにコントローラ13とは別個の装置として構成することもできるが、この画像処理を実施するためのプログラムとして構成し、コントローラ13や他の回路や機器に実施させることも可能である。なお、コントローラ13等にプログラムを実行させ、上記の画像処理を実施させる場合、画像処理装置ではなく、画像処理システムとして提供することができる。
図2は、画像処理装置としての画像処理回路18の機能ブロック図である。図2は、図1の構成において、透過率計測センサ17を用いない場合の構成例を示した図である。画像処理回路18は、CTL I/F20と、ISP(Image Signal Processing)部21と、計測手段の1つとして用いられる透過率算出部22と、コントラスト調整部23とを含んで構成される。ちなみに、透過率計測センサ17を用いる場合は、透過率算出部22が不要で、透過率計測センサ17が透過率を計測し、その透過率情報を取得する。そして、透過率計測センサ17がコントラスト調整部23へ取得した透過率情報を提供する。
図1に示す撮像ユニット12が撮像し、出力した画像データは、コントローラ13を介して画像メモリ14に保存される。その画像データは、コントローラ13を介して画像メモリ14から画像処理回路18へ転送される。CTL I/F20は、コントローラ13と接続し、画像メモリ14に保存された画像データをコントローラ13から受け取り、また、画像処理した画像データをコントローラ13へ渡す。
ISP部21は、一般的なカメラにおける画像処理を実施する。この画像処理は公知であるため詳述しないが、例えば、黒補正、シェーディング補正、ゲイン処理、ガンマ処理、RGB変換、フィルタ処理、色補正処理等を挙げることができる。ISP部21は、画像処理後の画像データを、透過率算出部22とコントラスト調整部23とに出力する。
透過率算出部22は、ISP部21から受信した画像データに対して画像処理を行い、透過率を算出する。透過率の算出方法の詳細については後述する。透過率算出部22は、算出した透過率を透過率情報としてコントラスト調整部23へ出力する。
コントラスト調整部23は、透過率算出部22から受け取った透過率情報を用い、明るさ成分に対しては、CLAHEを実施し、色味成分に対しては彩度補正処理を実施する。このため、コントラスト調整部23は、CLAHEを実施するCLAHE処理部24と、彩度補正を行う彩度補正部25とを備える。コントラスト調整部23は、これらの処理が終了したところで、CTL I/F20を介して画像メモリ14へ画像処理した後の画像データを保存する。出力デバイスは、出力I/F16を介してコントローラ13に対して画像データを要求し、コントローラ13は、画像メモリ14に保存された画像データを、出力I/F16を介して出力デバイスへ出力する。
コントラスト調整部23は、ISP部21で画像処理した後の画像データに限らず、CTL I/F20から直接画像データを受け付け、その画像データに対してコントラスト調整を実施することもできる。また、コントラスト調整部23は、CLAHEと彩度補正の両方ではなく、いずれか一方のみを実施することも可能である。
ここで、CLAHE処理部24が実施するCLAHEについて簡単に説明する。CLAHEは、図3に示すように、撮像した画像を複数の矩形領域(タイル)に分割し、各タイルにつき、ヒストグラムの平坦化処理を行い、コントラストを向上させる処理である。図3は、霧が発生している場所で撮像した画像を示している。なお、この場所は、霧の濃さが一様であり、撮像装置10からの距離に応じて、光の透過率が変化している。以下、霧を例に挙げて説明するが、霧に限定されるものではなく、上述した霞、黄砂、PM2.5等であってもよいものである。
図3の縦横均等に4つに分割されたタイルのうち、上側2つのタイルは、遠距離にある山が撮像されているため、光の透過率が低く、左下のタイルは、近距離にある車が撮像されているため、光の透過率が高くなっている。また、右下のタイルは、その中間の中距離のものが撮像されているため、光の透過率がその中間の値となっている。
霧の中で撮像した霧画像において、光の透過率が低いタイル、すなわち撮像対象までの距離が遠く、霧が濃く撮像されているタイルについては、コントラストが小さく、撮像対象がはっきりしない。このため、コントラストの制約値を小さくし、コントラスト強調処理を大きく行うようにする。これに対し、光の透過率が高いタイル、すなわち撮像対象までの距離が近く、霧が薄く撮像されているタイルについては、コントラストの制約値を大きくし、あまりコントラスト強調処理を行わないようにする。光の透過率がその中間のタイルについては、その中間の制約値とし、適当なコントラスト強調処理を行うようにする。これにより、撮像対象がはっきりしないものに対しては、はっきり見えるようにし、撮像対象がはっきりしているものに対しては、過度に補正されないようにして、ノイズが見立たないようにすることができる。
霧の濃さが一様である場合は、上記のように、撮像対象までの距離によってコントラストの制約値を切り替え、コントラスト強調処理を行うことができる。霧の濃さが一様でない場合は、光の透過率が距離に依存しないため、計測した透過率あるいは算出した透過率に応じて、コントラストの制約値を切り替え、コントラスト強調処理を行うことができる。
CLAHEでタイルに分割する数は、図3に示すように4つに限定されるものではなく、9、16、25等、もっと細かく分割してもよい。CLAHEで行うヒストグラムの平坦化処理については、上記の特許文献2に記載された方法等、公知の方法を採用することができる。その詳細については、上記の特許文献2等を参照されたい。コントラスト調整部23は、このようにタイルに分割することから、コントラスト調整を行う調整手段のほか、画像を複数の領域に分割する分割手段としても機能する。
このヒストグラムの平坦化処理は、コントラストの強調具合が強い処理であるため、そのコントラストを弱めるため、コントラストの制約値としてクリップ値と呼ばれるパラメータを導入し、ヒストグラムのクリッピング演算を実施する。
クリッピング演算は、局所的ヒストグラム均等化法において用いられる演算である。局所的ヒストグラム均等化法は、一般的なコントラスト強調法であり、画像の局所情報を考慮してコントラスト強調処理を行う方法である。図4を参照して、クリッピング演算について説明する。図4(a)に示す入力画像の中の領域(タイル)内の画素がもつ輝度値の分布を分布図で表すと、図4(b)のようなものになる。
タイルに対して所定のクリップ値が設定され、各輝度値の画素数がそのクリップ値を超える場合、図4(b)の斜線で示される、その超えた画素数を除去する。その超えた画素数を合計し、輝度値の全数で除算して、各輝度値に分配する画素数を算出する。そして、クリップ値を超える画素数を除去した後の各輝度値の画素数と、各輝度値に分配する画素数とを加算し、図4(c)に示す各輝度値の新たな画素数を算出する。例えば、図4(b)の斜線で示される部分の画素数の合計が512個であり、輝度値の全数が256階調の256個である場合、512/256=2個の画素数を全輝度値に対して分配し、加算する。クリッピング演算では、このように算出した各輝度値における画素数の分布を再設定する。
次に、クリップ値を設定することによる効果について、図5を参照して説明する。図5(a)、(b)を参照すると、クリップ値を超える画素数を除去する前の左側に示した分布図では、分割したあるタイルの輝度値がαからβの間に分布している。図5(a)ではクリップ値k1、図5(b)ではクリップ値k2(k2<k1)を超えた画素数を除去し、その超えた画素数を合計し、輝度値の全数で除算して各輝度値に分配する画素数を算出し、その画素数を全輝度値に加算する。これにより、それぞれの中央に示したクリッピング後の分布図が得られる。クリッピング後の分布図を参照し、輝度値0から255まで各輝度値の画素数を加算、累積し、それを正規化することで、右側に示した、各輝度値に対する変換後の輝度値を表す変換曲線が求められる。正規化は、ここでは0から255の値に収めるための処理である。
この変換曲線を求める場合、その都度、各輝度値の画素数を加算して算出してもよいし、予め各輝度値の画素数を加算して算出しておいたルックアップテーブル(LUT)をメモリ等に格納しておき、その都度、LUTから選択してもよい。
クリッピング後の分布図から変換曲線を求める方法を、図6を参照してより詳細に説明する。図6(a)は、クリッピング後の分布図を示し、図6(b)は、図6(a)から求められた変換曲線を示した図である。図6(a)に示すように、輝度値0からαまでは、画素数が一定である。輝度値0からαの間において、変換後の輝度値は、変換前の輝度値に一定の画素数を加算、累積して求めるため、その間の変換曲線は、図6(b)に示すように一定の傾きとなる。また、輝度値γからδの間、輝度値βから255の間も同様に一定の画素数を加算、累積して求めるため、一定の傾きとなる。
なお、輝度値γからδの間は、輝度値0からαの間、βから255の間に比べて加算する画素数が多いため、その傾きはそれらより急峻になる。輝度値αからγの間は、図6(a)に示すように画素数が一定ではなく、急激に増加する傾向を示すため、画素数を加算、累積して求めたαからγの間の変換曲線は、図6(b)に示すように直線ではなく、急激に増加する曲線となる。これに対し、輝度値δからβの間は、画素数が急激に減少する傾向を示すため、δからβの間の変換曲線は、急激に減少する曲線となる。これらの直線、曲線を繋ぎ合わせて、図6(b)に示す変換曲線を求めることができる。
このようにして図5(a)、(b)に示すクリッピング後の分布図からも各変換曲線を求めることができる。設定したクリップ値が大きい図5(a)に示す例では、変換曲線において、α>α’、β<β’となっており、αからβまでの距離Qとα’からβ’までの距離Q’との関係がQ<Q’となっている。これは、輝度値の下限値を示すαがα’に低下し、輝度値の上限値を示すβがβ’に上昇し、画素の分布が拡大していることを表している。つまり、原画の階調に対して変換後の階調が拡大しており、今まで輝度値が似通っていて判別しづらい部分を鮮明に見分けられるようになったことを示している。
設定したクリップ値が小さい図5(b)に示す例では、変換曲線において、図5(a)に示す例と同様、α>α”、β<β”、Q<Q”となっているが、それぞれが近い値になっている。したがって、αからα”へ下限値が低下し、βからβ”へ上限値が上昇するが、わずかな低下および上昇であり、変換前とあまり大差がない。つまり、原画の階調に対して変換後の階調の変化があまり見られず、階調補正がほとんどなされないことを示している。
なお、上記の変換曲線を求める演算の途中または演算後において、α’=αになるようにα’を変換し、それに伴い、β’や変換曲線を再度求めてもよい。α’だけに限られるものではなく、β’、α”、β”等に関しても同様な処理を行ってもよい。
上記の結果から、霧画像において、光の透過率が高い部分についてはクリップ値を小さくして、コントラストの調整具合を小さくし、光の透過率が低い部分についてはクリップ値を大きくして、コントラストの調整具合を大きくすればよいことが分かる。
光の透過率は、透過率計測センサ17を用いて計測することができるが、画像処理により画像から透過率を算出することもできる。その算出方法の1つとして、ダークチャンネルを用いる方法を説明する。なお、この方法の詳細については、例えば、「Single image Haze removal Using Dark Channel Prior」, He Kaiming, Jian Sun, Xiaoou Tang Pattern Analysis and Machine Intelligence, IEEE 2011や、特開2012−221237号公報等を参照されたい。
霧の性質から霧画像の局所領域におけるRGBの最小値を算出すると、霧の大まかな透過率と相関関係のあるデータを得ることができる。このデータは、ダークチャンネルと呼ばれる。霧のモデル式は、霧が晴れている場合の画像データをJとし、大気中の透過率をt(t=0〜1)とし、大気光(間接光成分)をAとし、霧発生時の画像データをIとすると、次の式1で表すことができる。
上記式1中、J×tは、直接光データと呼ばれ、光の透過率100%の霧が晴れているときの画像が透過率tにより減衰されている様子を示している。上記式1中、(1−t)×Aは、間接光データと呼ばれ、直接光で減衰した分、大気光Aで明るくなっている様子を示している。
ダークチャンネルは、霧が晴れている場合、ほとんどの物質が、RGB最小値がほぼ0に近いという性質から成り立っている。上記式1より、透過率tが低ければ低いほど、大気光の成分が加算され、その値が大きくなる。一方、直接光データは0に近い値になる。このため、直接光データを0とみなし、大気光Aの値を用いて大まかな透過率tを求めることができる。
Jの最小値をさらに0に近い値にするために、局所領域を、例えば15×15という小さいサイズに分割した領域とし、その各領域での最小値を取ることができる。ちなみに、霧が晴れていても、晴れていなくても、白い大きい物体等は、RGBの最小値がほぼ0に近い値を示すことから、ダークチャンネルでも正確に透過率を算出することはできない。
上記の条件の下、上記式1に示すモデル式から導出したダークチャンネルと透過率tとの関係式を、次の式2に示す。式2中、Ωは、注目画素に対する局所領域を指し、mincはRGB最小値を表す。
上記式2を用いて、透過率tもしくはダークチャンネルminy∈Ω(minc(J))を算出する。以下、ダークチャンネルは、dark(J)と記述することにする。図2に示す透過率算出部22は、上記式2を用いて透過率tもしくはダークチャンネルdark(J)を算出し、これを透過率情報としてコントラスト調整部23へ出力する。コントラスト調整部23では、透過率tもしくはダークチャンネルdark(J)に応じて、CLAHEで使用するクリップ値kを決定する。
上記の透過率情報を使用しないCLAHEのクリップ値kは、従来、以下の式3および式4によりユーザが求め、ユーザが設定している。
上記式3中、mは、1タイル当たりの画素数であり、Nは、画素のbin数、すなわち8ビット画像であれば256であり、16ビット画像であれば65536である。k_minは、最小クリップ値である。上記式4中、ユーザ設定値Sは0から1の間の値であり、1である場合は、クリップ値による制約がない場合に等しい状態である。
透過率情報を使用するCLAHEのクリップ値は、1タイル当たりの透過率tの平均値をタイル透過率Tとし、1タイル当たりのダークチャンネルdark(J)の平均値をタイルダークチャンネルdark(J)とし、上記式4を変形した下記式5を用いて算出することができる。
上記式5を用いることで、タイルの透過率毎にCLAHEのクリップ値が変化し、透過率の低いタイルにはクリップ値を大きく、透過率の高いタイルにはクリップ値を小さくすることができる。上記式5中、α1、β1、α2、β2は、透過率tを一次変換し、どの程度の重み付けするかを示す値であり、一次変換の結果が1を超える場合にはクリップすることにする。例えば、透過率の感度を強くし、透過率が小さい差分でもクリップ値の変化を大きくした場合は、画像全体におけるタイルダークチャンネルの最大値が1、タイルダークチャンネルの最小値が0になるようにα1、α2、β1、β2を定めることができる。
コントラスト調整部23は、上記式5を用いてタイル毎のクリップ値を算出し、各クリップ値を用いてCLAHE処理を実施する。クリップ値は、上記式5により算出するほか、透過率情報に対応するクリップ値としてテーブル等に設定しておき、そのテーブルを参照して決定するようにしてもよい。CLAHE処理を実施するに際して、画像がRGB画像である場合、RGB色空間からYCbCr色空間等へ変換することができる。色空間の変換は、これまでに知られたいかなる計算式等でも使用して行うことができる。コントラスト調整部23は、変換後のY(輝度値)を使用して、上記の方法によりヒストグラムの平坦化を実施することができる。
コントラスト調整部23は、CLAHE処理のみを実施してもよいが、この処理だけでは、霧画像が無彩に近づき、彩度が不足する場合がある。このような場合には、YCbCr色空間におけるCb、Cr成分にゲインをかけて彩度を向上させることができる。Cbは、青系統の色の色相と彩度を表す色差成分で、Crは、赤系統の色の色相と彩度を表す色差成分である。
Cb、Cr成分にゲインをかける彩度補正は、下記式6を用いて実施することができる。式6中、Cb、Crは、−1〜1の間の値とする。また、式6中、Cxのxは、bまたはrのいずれかを示す。また、Cx’は、彩度補正後のCb、Crの値である。
上記式6も、CLAHEのクリップ値と同様、透過率が大きいほどゲインが小さくなり、透過率が小さいほどゲインが大きくなるような式である。また、α3、α4、β3、β4は、CLAHEのクリップ値の場合と同様、透過率tを一次変換し、どの程度の重み付けするかを示す値である。
ここで、図7(a)〜(c)を参照して、上記式6の指数部が1〜3に変化した場合にゲインがどのように変わるかについて説明する。図7(a)が式6中の指数部が1の場合、図7(b)が式6中の指数部が2の場合、図7(c)が式6中の指数部が3の場合を示す。指数部が1の場合は、Cxに対するCx’の比が1であるが、指数部が2、3と大きくなるにつれて、その比が大きくなり、ゲインが大きくなることが分かる。上記式6の指数部には、透過率情報が含まれることから、上記式6を用いて彩度補正を行うことで、透過率情報に応じて彩度補正のゲインを決定することができる。
図8を参照して、撮像装置10が行う処理について説明する。ステップ800から処理を開始する。ユーザは、任意の撮像対象である被写体に撮像装置10のレンズユニット11を向け、シャッターボタンを押下する。これを受けて、ステップ810において撮像ユニット12が画像を撮像する。ここでは霧除去処理を行うものとして説明するが、当然ながら霧以外の黄砂やPM2.5等であってもよい。霧除去処理を行う場合、ユーザは、操作ユニット15において霧補正を行うかどうかを指定することができる。撮像装置10は、その指定を受けて、霧除去処理を実行する。なお、撮像装置10の種類によっては、撮像画像により霧が発生しているかどうかを自動的に検知する装置もあるため、そのような装置では、ユーザが意識せずに自動的に霧補正を実行することができる。
ステップ810では、コントローラ13がシャッターボタンの押下を受け付け、撮像ユニット12に対し、撮像を開始するように指示する。撮像ユニット12は、その指示を受けて、シャッターを開き、撮像素子を露出させ、撮像素子に入射される光を光電変換し、画像データを出力する。ステップ820では、コントローラ13がその画像データを受け取り、画像メモリ14に保存する。
ステップ830では、画像処理回路18のCTL I/F20が画像メモリ14から画像データを取得し、ISP部21でシェーディング補正等の画像処理が行われた後、画像データは、透過率算出部22とコントラスト調整部23へ送られる。透過率算出部22は、上記の式2を用いて透過率tもしくはダークチャンネルdark(J)といった透過率情報を算出する。透過率算出部22は、算出した透過率情報をコントラスト調整部23へ送る。
ステップ840では、コントラスト調整部23のCLAHE処理部24が、その透過率情報を用い、上記式5によりクリップ値を算出し決定する。ステップ850では、CLAHE処理部24が、決定したクリップ値を用い、上記の方法で各タイルにつきヒストグラムの平坦化を実施し、各変換曲線を求める。そして、CLAHE処理部24は、求めた各変換曲線を用い、各タイル内の画素の輝度値を変換する。このようにして、CLAHE処理部24は、画素の輝度成分に対して補正を行う。CLAHE処理部24は、補正後の画像データを彩度補正部25へ送る。
ステップ860では、彩度補正部25が、その画像データにおける各画素の輝度成分以外の色差成分に対して彩度補正を行う。彩度補正部25は、上記式6を用いて彩度成分にゲインをかけ、彩度を向上させる処理を行う。すべての画素に対して彩度補正を行った後、コントラスト調整部23は、コントラストの調整が終了したものとし、画像データをCTL I/F20を介して画像メモリ14に保存する。撮像装置10は、画像メモリ14への保存が終了したところで、ステップ870へ進み、この処理を終了する。
撮像装置10は、レンズユニット11を備え、レンズユニット11は、焦点距離を変更し、撮像対象を拡大して撮像することができるズームレンズを含む。このズームレンズに対して設定されるレンズ情報は、画角やズーム倍率の設定情報を含み、これらの設定を変えることで、画角やズーム倍率を変えることができる。画角は、撮像範囲を角度で表したもので、ワイド端のときが最も大きく、テレ端のときが最も小さくなる。ワイド端は、ズームレンズの焦点距離を最も短くした状態であり、テレ端は、ズームレンズの焦点距離を最も長くした状態である。ズーム倍率は、ワイド端からズームレンズの焦点距離を変えたときのワイド端に対する倍率であり、例えば、ワイド端の焦点距離が35mmで、そのときの焦点距離が70mmであった場合、2倍となる。レンズユニット11の画角やズーム倍率等のレンズ情報は、コントローラ13が備えるメモリに記憶されている。
図9(a)に示すワイド端では、撮像装置10からの距離が近い人物から距離が遠い山や空まで撮像される。このため、撮像された1つの画像における透過率の差異は大きいと考えられる。これに対し、図9(b)に示すテレ端では、撮像装置10からの距離が近い車しか撮像されない。この撮像された1つの画像は、その奥行きに差が少ないため、その画像における透過率の差異は小さいと考えられる。すると、ワイド端の場合は、クリップ値に差をつけやすくし、テレ端の場合は、クリップ値があまり変化しないようにして、ダークチャンネルを用いる方法において透過率の精度が低い場合の補正を行うことが望ましい。
画角やズーム倍率は、ワイド端に近いのか、テレ端に近いのかの度合いを表すパラメータとなり、画像内の透過率のばらつきがどの程度あるかを推測することを可能にする。このため、CLAHE処理部24は、レンズ情報をコントローラ13から取得し、このレンズ情報と、ダークチャンネルとを利用して、より適切なクリップ値を決定することができる。
クリップ値kは、レンズ情報に応じたレンズ設定情報Lを用いて、上記式5を変形した下記式7により算出することができる。Lは、ワイド端のときを1とし、テレ端のときを0とし、その中間を0.5とし、その中間からワイド端に近づけば0に近づき、その中間からテレ端に近づけば1に近づく値とすることができる。なお、Lは、これに限定されるものではなく、レンズの焦点距離や画角に応じて数値化した値を用いることも可能である。
上記式7中、α1、α2、β1、β2は、全dark(J)もしくは全タイルの透過率の最小値、最大値で0から1に正規化するように設定される。この式7を用いて、クリップ値kを決定することで、Lが大きい場合、すなわちワイド端に近い場合は、クリップ値に差異を出し、Lが小さい場合、すなわちテレ端に近い場合は、クリップ値に差異がほとんど出ないようにすることができる。
レンズ情報は、上記のように、透過率の精度を向上させるために用いることができるが、輝度だけではなく、彩度を補正し、その精度を向上させるために用いることも可能である。したがって、彩度補正も、レンズ設定情報Lを用いて、上記式6を変形した下記式8により算出することができる。なお、この式8中のα3、α4、β3、β4も、上記α1等と同様、正規化するように設定される。
レンズ情報を取得し、レンズ情報を用いてクリップ値を決定し、彩度補正を行う処理の流れについて、図10を参照して簡単に説明する。ステップ1000からステップ1030までは、図8に示したステップ800からステップ830までと同様であるため、ここではその説明を省略する。ステップ1040では、コントラスト調整部23のCLAHE処理部24が、コントローラ13が保持するレンズ情報を、コントローラ13から取得する。
ステップ1050からステップ1080は、図8に示したステップ840からステップ870までの処理と同様であるが、クリップ値の決定および彩度補正を行うにあたって、レンズ設定情報L、上記式7および式8を用いる。
ところで、撮像した霧画像に空が写っている場合、空は、人物や山等よりも撮像装置10からの距離が遠く、光の透過率が小さい。したがって、上記式5を使用してクリップ値を決定すると、クリップ値が大きくなり、CLAHEを実施すると、コントラストを大きく向上させることになる。霧が発生したとき、空の領域(空領域)には特に新しい情報を含んでおらず、コントラストを向上させると、ノイズが増大するばかりである。そこで、画像内の空領域を検知し、空領域に対しては透過率情報に関係なく、クリップ値を小さくし、ノイズを減少させることが望ましい。
画像処理回路18は、図11に示すように画像内の空領域を検知する空領域検知部26をさらに備えることができる。その他の構成は、図2に示した構成と同様である。空領域は、公知の技術を使用して検知することができる。例えば、「Single Image Algorithm Based on Sky Region Segmentation」 Information Technology Journal 12(6):1168-1175,2013を参照されたい。ちなみに、この技術は、空領域が大きく、明るく、エッジがないという特徴に基づき、モルフォロジー処理でノイズを除去し、二値化する技術である。そのほか、機械学習を用い、空領域を認識する手法等を採用することもできる。
この空領域検知部26を備える撮像装置10が行う処理を、図12を参照して説明する。ステップ1200からステップ1230までの処理は、図8に示したステップ800からステップ830まで、図10に示したステップ1000からステップ1030までの処理と同様である。このため、ここではその説明を省略する。ステップ1240では、透過率算出部22が透過率情報を算出すると同時に、あるいはその後に、空領域検知部26が画像における空領域の検知を行う。空領域検知部26は、検知した空領域の情報をコントラスト調整部23のCLAHE処理部24へ送る。
ステップ1250からステップ1280までの処理は、図8に示したステップ840からステップ870まで、図10に示したステップ1050からステップ1080までの処理と同様である。ただし、ステップ1250のクリップ値の決定において、空領域は、指定されたクリップ値、例えばクリップ値を最小値に設定し、コントラストの調整をあまり実施しないようにする。なお、空領域については、CLAHE処理部24が全く処理を実施せず、そのまま彩度補正部25へ出力してもよい。
空領域についてコントラスト調整をあまり実施しない、あるいは全く実施しないようにすることで、空領域のノイズを減少し、霧補正画像の高画質化を実現することができる。ここでは、空領域を一例に挙げたが、コントラスト調整をあまり実施したくない領域については、この方法と同様にして、その領域を抽出し、抽出した領域のクリップ値を最小値に設定することができる。また、その抽出した領域については、コントラスト調整を実施せずに出力することもできる。
上記では、コントラスト調整をあまり実施したくない領域について説明したが、その反対に、コントラスト調整を積極的に実施したい領域も存在する。例えば、車載用カメラで撮像する場合の道路の領域(道路領域)等である。車載用カメラをドライブレコーダーの用途として用いる場合、撮影対象は、道路上の車や物であり、自動運転用のカメラであれば、道路上の車、歩行者、標識、信号等であり、道路上にあるものが中心である。
したがって、このような領域については、上記とは反対に、クリップ値を大きく設定することで、透過率に関係なく、常にその領域の視認性を向上させることができる。その領域として、道路領域を一例に挙げて説明するが、これに限定されるものではない。図13(a)は、撮像装置10により撮像される画像の一例を示した図で、図13(b)は、その画像において道路領域を検知したところを示した図である。
道路領域を検知する技術はこれまでに数多く知られている。例えば、特開平7−028975号公報を参照されたい。この技術では、左右の白線を検知し、2つの白線内の領域を走行レーンとして認識する。しかしながら、道路領域は、走行レーンのみではないので、対向車が走行するレーンを含めた図13(b)に斜線で示す領域として検知することが望ましい。
そこで、画像処理回路18は、図14に示すように、この道路領域を検知する道路領域検知部27をさらに備えることができる。その他の構成は、図2に示した構成と同様である。道路領域検知部27は、空領域検知部26と同様、ISP部21から画像データを取得し、その画像データにおける画像から道路領域を検知する。道路領域検知部27は、その検知した道路領域の情報をコントラスト調整部23に送る。コントラスト調整部23では、CLAHE処理部24が道路領域のコントラストを向上させるようにクリップ値を決定する。
道路領域か否か、また、道路領域に近いか遠いかにより、クリップ値を変化させるため、道路用制御パラメータDを用いる。この道路用制御パラメータDを用いたクリップ値の算出式を、下記式9に示す。Dは、道路領域を0とし、道路領域から所定距離以上離れている領域を1とし、その間の領域を、道路領域からの距離に応じて0から1の間の値を設定する。
上記式9では、透過率情報を加味しながら、道路領域に近いほどクリップ値を大きく、道路領域から遠いほどクリップ値が小さくなるように、クリップ値を算出することができる。この場合も、輝度だけではなく、彩度を向上させるべく、道路用制御パラメータDを用いて彩度補正を行うことができる。その計算式を下記式10に示す。
この道路領域検知部27を備える撮像装置10が行う処理を、図15を参照して説明する。ステップ1500からステップ1530までの処理は、図8に示したステップ800からステップ830まで等の処理と同様である。このため、ここではその説明を省略する。ステップ1540では、透過率算出部22が透過率情報を算出すると同時に、あるいはその後に、道路領域検知部27が画像における道路領域の検知を行う。道路領域検知部27は、検知した道路領域の情報をコントラスト調整部23のCLAHE処理部24へ送る。
ステップ1550からステップ1580までの処理は、図8に示したステップ840からステップ870まで等の処理と同様である。ただし、ステップ1550のクリップ値の決定において、道路領域は、指定されたクリップ値、例えばクリップ値を道路領域以外の領域より大きい値に設定し、コントラストの調整具合を大きくする。
これまで、霧画像を例にとり、透過率情報を利用してコントラスト調整を行う処理について説明してきた。その際、指定された分割条件として、画像を複数の矩形のタイルに分割するという条件に従い、そのように領域分割し、タイル毎にクリップ値を決定し、CLAHEを実施し、彩度補正を行っている。このようにタイルで分割すると、図16(a)に示す家のように、そのタイルの境界を跨ぐオブジェクトは、その境界で画像処理のパラメータが切り替わるため、画像処理の結果に差が出てしまう。そうすると、画像処理後の画像は、違和感のある画像になる。
例えば、特許第3543103号公報に記載のように、テクスチャ解析によりオブジェクトの形状を抽出し、オブジェクト毎に領域分割する技術が知られている。このようにオブジェクトを分割することで、上記の問題を解決することができる。しかしながら、図16(b)に示すように霧が濃い画像の場合、オブジェクトの形状の抽出が難しく、オブジェクト毎に領域分割するのは困難である。領域分割ができたとしても、処理時間が膨大であり、リアルタイムでの処理は困難である。
そこで、霧により低減したコントラストを改善するために、霧の影響の強さに応じて領域分割し、分割した領域毎にコントラストを調整して、白とびや黒つぶれ等の違和感のない画像を出力できるようにする。領域を分割する方法としては、後述する暗画像と呼ばれる白黒一版の画像を用いる方法を一例として挙げることができる。この方法では、画像処理により暗画像を作成し、作成した暗画像の画素値に応じて領域を分割する。したがって、この方法を用いる場合、分割条件が、所定数のタイルに分割ではなく、暗画像の画素値に応じて領域分割するという条件となる。
詳細については後述するが、簡単に説明すると、図17に示す白から黒へ画素値を5段階に調整した暗画像を作成する。ここでは5段階としているが、その他の数の段階とすることも可能である。原画像を、暗画像の画素値に応じて各領域に分割する。暗画像の白で示される領域は、空領域であり、コントラスト改善の必要はないため、図17に示すように4つの領域に分割する。なお、画像内の建物と街灯は、それを構成する暗画像の画素値が同じ段階のものであるため、同じ領域として扱うことができる。このようにして分割した各領域に対し、コントラスト調整を行うことができる。
図17を参照して、暗画像について詳細に説明する。暗画像は、画素値が低い(暗い)ほど、その奥行き量が小さい近距離にあり、画素値が高い(明るい)ほど、その奥行き量が大きい遠距離にある。暗画像は、撮像装置10から撮像対象まで距離に応じて上記の段階を変えた画像である。したがって、複数の撮像装置を用いたステレオマッチング等の画像処理による距離計測で、あるいはレーザーレーダ等の画像処理以外の方法で距離情報を取得し、その距離情報に基づき、暗画像を作成することができる。
暗画像の輝度値は、撮像装置10から撮像対象までの距離に依存するだけではなく、透過率にも依存する。霧は、撮像装置10から遠いほど透過率が小さく、近いほど透過率が大きい。つまり、暗画像の画素値が低いと透過率が大きく、画素値が高いと透過率は小さい。このため、暗画像ではなく、透過率を計測する透過率計測手段を用い、計測された透過率により領域分割することも可能である。
次に、図18を参照して、暗画像の作成方法について説明する。この暗画像の作成方法は、上述したダークチャンネルを用いる方法と同様のものである。この例では、原画像をRGB画像とする。図18(a)に示す原画像を構成する画素毎にRGBの最小値を選択する。各画素は、R、G、Bの各々につき画素値を有し、その最小値を選択する。このようにRGBの最小値を選択することで、単純に明度を選択する場合とは異なり、街灯等の光源に対しても適切な暗画像を作成することができる。
次に、図18(b)に示すように、RGB最小値を選択した画像の中の選択された画像(注目画像)30を含む所定の範囲内にある注目画素30以外の画素を周辺画素とし、その周辺画素のRGB最小値に置換する。このように周辺画素の情報を利用することで、建物の壁と窓のように、撮像装置10からの距離は同じであるが、画素値が異なるオブジェクトを同じ画素値に置換することができる。なお、所定の範囲31は、注目画素30を中心とし、その注目画素30を取り囲む全部で9つの画素からなる範囲等、任意に設定することが可能である。
なお、周辺画素の情報を利用して画素値を置換していくと、本当は注目画素30の右側、下側にある周辺画素だけを置き換えればよいのに、注目画素30の上側、左側にある周辺画素も置き換えられてしまう。すると、図18(c)に示すように画像内のオブジェクトが膨張してしまう。図18(c)では、画像内のすべてのオブジェクト、すなわち山、家、街灯、建物が膨張している。
このような状態でコントラスト調整を行うと、ハローと呼ばれるオブジェクトの境界部分の滲みが発生する。したがって、ハローが発生しないように、オブジェクトの元の形状と、暗画像のオブジェクトの形状とが一致するようにエッジ補正を行う。エッジ補正は、原画像を利用するガイデッドフィルタ等、汎用的な画像処理方法を用いることができる。
したがって、RGB最小値を選択し、次に、注目画素30を周辺画素のRGB最小値に置き換え、最後に、エッジ補正を行うことで、図18(d)に示す暗画像を作成することができる。ここでは、RGB画像としたが、このような3版の画像に限られるものではない。ただし、Labのように明度とそれ以外の版、YUVのように輝度とそれ以外の版に分けられた色空間では、この方法を用いることができない。
暗画像は、図18に示したように原画像から作成することもできるし、図17および上述したように、距離情報、透過率情報を用いて作成することもできる。ちなみに、暗画像の画素値は、原画像の画素値が256階調であれば、原画像と同じく、256階調である。したがって、画素値に基づき領域分割する場合、画素値を任意の範囲に区切り、その範囲内の画素値をもつ画素を同じ領域とすることができる。
図19を参照して、領域分割する方法について説明する。図19(a)は、暗画像の画素値が0から255までの256段階である場合に、画素値と、その画素値をもつ画素の画素数との関係を棒グラフにて示した暗画像ヒストグラムである。ここでは、コントラスト調整を行う領域を4つに分割するため、暗画像を4つの領域に分割する例を用いて説明する。
4つの領域に分割するために3つの閾値を用意する。1つの方法は、図19(b)に示す分散を考慮した分割方法である。この方法では、閾値の上下で分散値が最大になるように閾値を決定する。別の方法としては、図19(c)に示す単純分割法である。この方法では、256段階を均等に分けた範囲で分割するため、閾値を単純に64、128、192としている。これらは一例であり、分割の方法は、これら以外の方法を用いることができ、分割数も4つ以外とすることができる。
これまで暗画像について説明してきたが、暗画像を用いて原画像を領域分割した後、各領域につき実施するコントラスト調整について、図20を参照して説明する。図20(a)は、原画像のヒストグラムを例示した図で、図20(b)は、各画素値の画素数を加算し、累積した累積ヒストグラムを例示した図で、図20(c)は、ヒストグラム平坦化用の変換曲線を例示した図である。
原画像がRGB画像等の3版の画像である場合、3版のそれぞれに対してヒストグラム平坦化処理を実施する。ヒストグラム平坦化処理は、上記のクリップ値を用いて実施することができる。まず、分割した領域毎に図20(a)に示すようなヒストグラムを算出する。ヒストグラムは、画素値をxとすると、関数h(x)で表すことができる。このヒストグラムから各画素値の画素数を加算し、累積して累積ヒストグラムを算出する。累積ヒストグラムも、画素値をxとすると、関数H(x)で表すことができる。関数H(x)は、下記式11で表すことができる。なお、関数H(x)は、x=0のとき、H(0)=h(0)である。
変換曲線は、上記のようにクリップ値を決定し、その決定したクリップ値を用いて算出する。この変換曲線は、その入力を画素値xとし、その出力をyとし、y=L(x)とすると、関数L(x)は、下記式12で表すことができる。
画像処理回路18は、図21に示すように、この暗画像を作成する暗画像作成部28をさらに備えることができる。その他の構成は、図2に示した構成と同様である。暗画像作成部28は、ISP部21から画像データを取得し、その画像データにおける画像から暗画像を作成する。上述したように、計測した距離情報や透過率情報を用いて暗画像を作成することも可能である。暗画像作成部28は、作成した暗画像のデータをコントラスト調整部23に送る。コントラスト調整部23では、CLAHE処理部24が暗画像の画素値に応じて領域分割し、各領域につきクリップ値を決定する。
図22を参照して、この暗画像を用いて領域分割し、コントラスト調整を行う処理について説明する。撮像装置10は、ユーザによりシャッターボタンが押下されたことを受けて、ステップ2200からこの処理を開始する。ステップ2210では、撮像ユニット12が画像を撮像し、ステップ2220で、コントローラ13がその画像を画像メモリ14に保存する。
ステップ2230では、透過率算出部22が原画像から透過率を算出し、もしくは透過率計測センサ17が透過率を計測し、撮像素子から撮像対象までの透過率情報を取得する。また、距離計測手段が撮像装置10から撮影対象までの距離を計測し、距離情報を取得する。なお、距離情報は、画像処理により算出してもよい。
ステップ2240では、暗画像作成部28が、取得した透過率情報もしくは距離情報を用いて暗画像を作成する。光の透過率は、その距離が遠いほど小さく、その距離が近いほど大きい。暗画像作成部28は、透過率が大きい、もしくは近距離ほど画素値を低い値に設定し、透過率が小さい、もしくは遠距離ほど画素値を高い値に設定することにより暗画像を作成する。暗画像作成部28は、作成した暗画像をCLAHE処理部24へ送る。
ステップ2250では、CLAHE処理部24が、暗画像を画素値に応じて領域分割する。そして、ステップ2260で、CLAHE処理部24が、領域分割した暗画像に基づき、ISP部21から入力された原画像を領域分割する。暗画像は、上記の分散を考慮した分割方法や均等に分けた範囲で分割する方法等を使用して領域分割することができる。CLAHE処理部24は、ステップ2270で、分割した各領域につき、上記の方法でクリップ値を決定する。
CLAHE処理部24は、ステップ2280で、決定したクリップ値を用いてヒストグラム平坦化処理を行い、変換曲線を求める。変換曲線ではなく、LUTであってもよい。変換曲線またはLUTは、各領域につき算出される。そして、CLAHE処理部24が、各領域につき算出された変換曲線またはLUTを使用して、各領域のコントラスト調整を行う。具体的には、CLAHE処理部24が、各領域につき算出された変換曲線を使用して、各領域内の画素値を変換する。CLAHE処理部24は、各領域につき画素値を変換して得られた画像を出力する。
ステップ2290では、彩度補正部25は、その画像の上記各領域につき彩度補正を行い、コントラスト調整済み画像として出力する。コントラスト調整済み画像は、コントローラ13を介して画像メモリ14へ送られ、出力デバイスへ出力するまで保存される。上記処理は、例えば、画像メモリ14へコントラスト調整済み画像を送り、保存したところで、ステップ2300にて終了する。
以上に説明してきたように、画像における各領域の透過率に応じてコントラストの制約値であるクリップ値の大きさを切り替えることで、適切にコントラスト調整を行うことができ、画像の視認性を向上させることができる。また、各領域を矩形のタイルに分割するのではなく、透過率や距離等で適切な領域に分割することで、さらに視認性を向上させることができる。
これまで説明した実施形態では、透過率や距離等に応じてヒストグラム平坦化を行う領域を分割し、テクスチャ領域の検知が困難な濃霧時でも画像のコントラストを改善することができる。しかしながら、分割数が任意であるため、分割数によっては、空領域等の本来は同じ領域とするべき箇所が分割される。この場合、本当はその部分が境界ではないのに境界が形成されることで、疑似輪郭が発生してしまう場合がある。また、霧除去した結果の明度の大小が晴天時と入れ替わる場合もあり、これでは画像のコントラストの改善が十分とは言えない。そこで以下に説明する暗画像の分割方法を採用することで、疑似輪郭の発生や白とび、黒つぶれなどをなくし、画像のコントラストをより改善することができる。
まず、暗画像の画素値の分割について、図23を参照して説明する。図23に示すようなヒストグラムがあった場合、任意の値wを閾値とし、そのwで分割する。画像をパターン領域と背景領域とにクラス分けした際、閾値未満の画素値をもつ画素の、画素数をω1、平均をm1、分散をσ1とし、閾値以上の画素値をもつ画素の、画素数をω2、平均をm2、分散をσ2とする。すると、クラス間分散σb 2は、下記式13で表すことができる。
この実施形態では、上記式13を用い、wの値を変え、クラス間分散σb 2が最大になる閾値を第一の閾値とする。このときのwの変動範囲は、画像データの画素値のビット精度に従い、8bitの画像データの場合、0〜255とすることができる。10bitの画像データの場合は、0〜1023とすることができる。また、空領域モードの場合は0〜空領域の閾値とすることができる。
なお、閾値wを決める式は、上記式13に限定されるものではなく、その他の式を用いることもできる。分割数は、任意で設定することができ、その分割数を2とする場合は、閾値wのみを決定すればよい。
次に、暗画像の画素値の再分割について、図24を参照して説明する。閾値wを上記式13によって決定した後、閾値w以下の暗画像の画素値をさらに2つの領域に分割することができる。分割する場合の閾値をuとすると、閾値uは、閾値wを算出した方法と同様の上記式13を用いて算出する。同じ式を用いて算出するのは、同じ基準で閾値を算出するためである。
閾値wを決定したときと同様に、クラス間分散σb 2が最大になる閾値を第二の閾値uとすることで、暗画像の画素値を0〜u、u〜t、t〜255の3つの領域に分割することができる。同様にして、閾値t〜255間での閾値vを算出することで、4つの領域に分割することができる。暗画像の画素値は、2つの領域、3つの領域、4つの領域に限定されるものではなく、5つ以上の領域に分割してもよい。
上記のような処理を繰り返すことで、領域の数を最適に分割することができる。なお、閾値の数を多く設定することで、領域はいくつでも分割できるが、クラス間分散σb 2が、ある設定値σwより小さい場合は分割しないほうが望ましい。その理由は、あまり細かく閾値を設定すると、同じ領域にすべき箇所が分割され、上記の疑似輪郭が発生してしまうためである。
閾値uを探索する際、閾値uがどんな値を取ったとしても、クラス間分散σb 2が常にσw以下である場合は、閾値uでは分割をせず、次の閾値vの探索に移行する。σwはユーザが任意で設定してもよいし、暗画像全体の分散値から設定してもよい。このような処理を行うことで、分割する領域数を最適にし、上記の疑似輪郭の発生をなくすことができる。なお、この分割および再分割は、上記のコントラスト調整部23により実行することができる。
上記の暗画像の画素値を分割および再分割する処理を、図25を参照して説明する。ステップ2500からこの処理を開始し、ステップ2505では、図18に示した方法で暗画像を取得し、ステップ2510では、画像データの画素ごとに算出された暗画像の画素値から、図23に示すような暗画像のヒストグラムを作成する。
ステップ2515では、作成したヒストグラムを用いて暗画像の領域を分割するために、上記式13を用いてクラス間分散σb 2を算出する。ステップ2520では、このσb 2を領域分割用の閾値wを変えるごとに算出し、σb 2の最大値Σを決定し、最大値Σのときの領域分割閾値wの値を記憶しておく。
ステップ2525では、最大値Σとあらかじめ設定された閾値σwとを比較し、Σがσwより大きいかどうかを判断する。Σがσw以下である場合、ステップ2555へ進み、この処理を終了する。この場合、領域分割が無いものとして図20に示したコントラスト調整を行う。Σがσwより大きい場合、ステップ2530へ進み、領域分割閾値wを第一の閾値と決定する。
ステップ2535、ステップ2540では、図24で示したように、ステップ2530で分割した領域をさらに再分割する閾値uを算出する。算出方法はステップ2515、ステップ2520と同様である。ステップ2545では、ステップ2525と同様に、Σとσwとを比較し、Σがσwより大きいかどうかを判断する。Σがσw以下である場合、ステップ2550へ進み、Σがσwより大きい場合、ステップ2530へ戻り、領域分割閾値を決定する。
ステップ2550では、他に分割判定をする領域があるかを判断し、領域がない場合にはステップ2555へ進み、この処理を終了する。領域がある場合には、ステップ2530へ戻り、残った領域に対して、領域分割閾値を決定する。ここで、残った領域とは、閾値w以上の領域である。この残った領域につき、上記でいう閾値vを決定する。なお、ステップ2550では、他に分割判定をする領域の有無で処理の終了を判定しているが、分割した領域数が一定以上のときに処理を終了してもよい。
ここまで暗画像の画素値を分割および再分割する処理について説明してきたが、この処理を含むコントラスト調整を行う全体の処理を、図26を参照して説明する。ステップ2600からこの処理を開始し、ステップ2610において撮像装置10により原画像を取得する。原画像はRGB画像である。
ステップ2620では、暗画像作成のための、撮像装置10から撮影対象までの透過率、もしくは撮像装置10から撮影対象までの距離を算出するかを判断する。原画像の画像処理によって透過率や距離を求める場合には、透過率や距離を算出し、ステップ2640へ進む。透過率計測器や距離計測器によって透過率や距離を求める場合には、ステップ2630へ進み、計測を行う。
ステップ2640では、ステップ2620またはステップ2630で求めた透過率や距離を用いて、図18に示した方法で暗画像を作成する。ステップ2650では図23および図24に示した方法で暗画像を分割する。ステップ2660では図25に示した方法で原画像を分割する。ステップ2670では図20に示した方法でコントラスト調整パラメータを作成する。
ステップ2680では、原画像に対してステップ2670で作成したパラメータを用いて、コントラストを調整し、処理を終了する。コントラスト調整は図20に示したヒストグラム平坦化により実施することができる。これ以外のコントラスト調整としては、領域毎の最大画素値と最小画素値をもとに線形に補正する方法や、画像の階調の応答特性を示すガンマが1となるよう、適当なガンマ値のカーブに従って画像の階調を補正するガンマ補正などの方法を用いて実施することも可能である。
これまでの説明では、コントラスト調整を行う対象の画像を、撮像装置10により撮像して得られた画像として説明してきたが、撮像装置10により撮像された画像に限定されるものではない。したがって、ネットワークを介してサーバ等から受信して取得した画像や、CD-ROMやSDカード等の記録媒体に記録された画像等であってもよい。
また、画像処理装置あるいは画像処理システムは、図2、図11、図14、図21に例示した構成に限定されるものではなく、空領域検知部26、道路領域検知部27、暗画像作成部28のうちの2つを備えた構成であってもよい。また、それらの全部を備えた構成であってもよい。
これまで本発明を、画像処理装置、画像処理システム、撮像装置、画像処理方法およびプログラムとして上述した実施の形態をもって説明してきたが、本発明は上述した実施の形態に限定されるものではない。本発明は、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。したがって、本発明は、上記プログラムが記録された記録媒体や、そのプログラムを、ネットワークを介して提供するサーバ装置等も提供することができるものである。