【文献】
廣岡 慎一郎、外2名,“悪環境下におけるビデオカメラ向けリアルタイム視認性向上技術”,情報処理学会 研究報告 コンシューマ・デバイス&システム(CDS),日本,情報処理学会,2013年 9月 5日,Vol.2013-CDS-8, No.1,pp.1-6,URL:https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_d
【文献】
水野 暁、外3名,“単一画像を用いた局所適応型高速霧補正技術”,映像情報メディア学会技術報告,日本,(一社)映像情報メディア学会,2012年 5月21日,Vol.36, No.20,pp.9-12
(58)【調査した分野】(Int.Cl.,DB名)
前記透過率補正部により補正された前記透過率画像の各画素の透過率と前記透過率画像生成部により生成された前記透過率画像の各画素の透過率とを乗算し、乗算した値の平方根演算を行うことで前記透過率画像を整形する透過率整形部を備え、
前記霧除去画像生成部は、前記透過率整形部により整形された前記透過率画像と前記大気光画素値と前記入力画像とに基づいて前記入力画像中の霧を除去する請求項1または請求項2記載の画像処理装置。
前記合成部は、前記第1レンジ補正部によりレンジが拡大された画像に第1係数を乗算し、前記第2レンジ補正部によりレンジが拡大された画像に第2係数を乗算し、それらの画像を加算する請求項4記載の画像処理装置。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について図面を参照して説明する。ただし、本発明はこれに限定されるものではない。また、図面においては、実施形態を説明するため、一部分を大きくまたは強調して記載するなど適宜縮尺を変更して表現することがある。
【0019】
<第1実施形態>
図1は、第1実施形態に係る画像処理装置1の構成を示すブロック図である。
図1に示す画像処理装置1は、画像処理として画像中の霧を除去する処理を行う装置である。ここで、霧とは微細な水粒が大気中に浮遊していることによって視程が小さくなる現象をいう。霧のことを靄や霞などともいう。なお、霧に限定されず、大気中の微粒子により画像中の被写体が見えにくくなる現象が含まれる。また、画像には静止画、動画が含まれる。画像処理装置1は、
図1に示すように、ダイナミックレンジ補正部(レンジ補正部)10、大気光画素値算出部(ダークチャネル画像生成部)20、透過率算出部(透過率画像生成部)30、透過率補正部40、透過率整形部50、及び霧除去画像生成部60を備えている。ダイナミックレンジ補正部10は、画像のダイナミックレンジを拡大する処理(前処理)を行う。このような処理が行われることにより、画像中の霧が低減される。
【0020】
図2は、
図1に示すダイナミックレンジ補正部10の構成を示すブロック図である。
図2に示すように、ダイナミックレンジ補正部10は、1エリア分割拡大部(第1レンジ補正部)11、4エリア分割拡大部(第2レンジ補正部)12、9エリア分割拡大部(第2レンジ補正部)13、及びエリア合成部(合成部)14を有している。入力画像の各画素の画素値は、途中で分岐して1エリア分割拡大部11、4エリア分割拡大部12、及び9エリア分割拡大部13にそれぞれ出力される。
【0021】
1エリア分割拡大部11は、入力画像の全領域のダイナミックレンジを拡大する。
図2に示すように、1エリア分割拡大部11は、第1ヒストグラム生成部11a、レンジ算出部11b、及びレンジ拡大部11cを含んでいる。第1ヒストグラム生成部11aは、入力画像の全領域のヒストグラムを生成する。ヒストグラムは、どのような明るさの画素がどれくらいあるかを示す表である(
図5参照)。レンジ算出部11bは、第1ヒストグラム生成部11aが生成した入力画像の全領域のヒストグラムを用いて入力画像のノイズ成分を除去(削除)する。レンジ拡大部11cは、レンジ算出部11bが入力画像のノイズ成分を除去したレンジを所定のレンジに拡大するレンジ拡大処理を行う。そして、レンジ拡大部11cは、レンジ拡大後の各画素の画素値をエリア合成部14に出力する。
【0022】
4エリア分割拡大部12は、入力画像の領域を4つの領域(エリア)に分割し、分割した4つの領域それぞれのダイナミックレンジを拡大する。
図2に示すように、4エリア分割拡大部12は、第2ヒストグラム生成部12a、レンジ算出部12b、及びレンジ拡大部12cを含んでいる。第2ヒストグラム生成部12aは、入力画像の領域を4つの領域に分割し、分割した4つの領域それぞれのヒストグラムを生成する。レンジ算出部12bは、第2ヒストグラム生成部12aが生成した4つの領域のヒストグラムを用いて、4つの領域それぞれのノイズ成分を除去(削除)する。レンジ拡大部12cは、レンジ算出部12bがノイズ成分を除去した4つの領域のレンジをそれぞれ所定のレンジに拡大するレンジ拡大処理を行う。また、レンジ拡大部11cは、レンジ拡大処理において領域間のバイリニア補間処理を行うことによりレンジ拡大後の画素値の連続性を持たせる。そして、レンジ拡大部12cは、レンジ拡大後の各画素の画素値をエリア合成部14に出力する。
【0023】
9エリア分割拡大部13は、入力画像の領域を9つの領域(エリア)に分割し、分割した9つの領域それぞれのダイナミックレンジを拡大する。
図2に示すように、9エリア分割拡大部13は、第3ヒストグラム生成部13a、レンジ算出部13b、及びレンジ拡大部13cを含んでいる。第3ヒストグラム生成部13aは、入力画像の領域を9つの領域に分割し、分割した9つの領域それぞれのヒストグラムを生成する。レンジ算出部13bは、第3ヒストグラム生成部13aが生成した9つの領域のヒストグラムを用いて、9つの領域それぞれのノイズ成分を除去(削除)する。レンジ拡大部13cは、レンジ算出部13bがノイズ成分を除去した9つの領域のレンジをそれぞれ所定のレンジに拡大するレンジ拡大処理を行う。また、レンジ拡大部13cは、レンジ拡大処理において領域間のバイリニア補間処理を行うことによりレンジ拡大後の画素値の連続性を持たせる。そして、レンジ拡大部13cは、レンジ拡大後の各画素の画素値をエリア合成部14に出力する。
【0024】
エリア合成部14は、1エリア分割拡大部11、4エリア分割拡大部12、及び9エリア分割拡大部13によるダイナミックレンジの拡大後の画素値を合成する。具体的には、エリア合成部14は、各エリア分割拡大部11,12,13からのレンジ拡大後の各画素の画素値をそれぞれ入力する。そして、エリア合成部14は、入力した画素値に所定の係数を乗算し、乗算した値を足し合わせる。エリア合成部14により合成された各画素の画素値は、大気光画素値算出部20及び霧除去画像生成部60に出力される。
【0025】
図1の説明に戻り、大気光画素値算出部20は、ダイナミックレンジ補正部10から出力された霧画像(霧を含む画像)の各画素の画素値に基づいてダークチャネル画像を生成する。また、大気光画素値算出部20は、霧画像の大気光画素値を算出する。大気光は大気中の粒子による散乱光である。画像の画素値のうち、大気中の粒子による散乱光の成分が大気光画素値である。
【0026】
具体的には、大気光画素値算出部20は、各画素におけるR,G,Bの中で最も小さな値(R,G,Bの各チャネルのうちの最小値)を各画素の代表値(ダークチャネル値)としてダークチャネル画像を生成する。なお、上記した非特許文献1に記載されているダーク・チャネル・プライア(Dark Channel Prior)に基づく方法では、局所領域(15×15画素の領域)内のすべての画素のすべてのチャネルの値の最小値をダークチャネル値としていたが、本実施形態では、各画素のダークチャネル値(minJ
C(y))をそのまま使用している。このように、局所領域(15×15画素の領域)内のすべての画素のすべてのチャネルの値の最小値を使用するのではなく、各画素のダークチャネル値を使用することで、処理の簡素化を実現している。
【0027】
また、大気光画素値算出部20は、入力画像の全領域において代表値(ダークチャネル値)の最も小さな画素の値を大気光画素値とする。このように、本実施形態では、大気光画素値算出部20は、入力画像の全領域に対して1つの大気光画素値を算出する。大気光画素値算出部20は、ダークチャネル画像の各画素の画素値及び大気光画素値を透過率算出部30及び霧除去画像生成部60に出力する。
【0028】
透過率算出部30は、大気光画素値算出部20からのダークチャネル画像の各画素の画素値及び大気光画素値を用いて各画素の透過率を算出する。すなわち、透過率算出部30は、次の式(1)に画素ごとのダークチャネル値(Dark)と大気光画素値(A)とを代入することにより画素ごとの透過率(dtrans)を算出する。
【0029】
dtrans=1−ω×Dark/A・・・(1)
【0030】
ここで、ωは霧除去の強さを制御するためのパラメータである。透過率算出部30は、各画素の透過率から透過率画像を生成する。そして、透過率算出部30は、透過率画像(各画素の透過率)を透過率補正部40及び透過率整形部50に出力する。
【0031】
透過率補正部40は、透過率算出部30から出力された透過率画像(初期透過率画像)を補正する。具体的には、透過率補正部40は、初期透過率画像を膨張処理(dilation)により透過率の均一化を行い、透過率均一化画像を生成する。また、透過率補正部40は、透過率均一化画像と初期透過率画像とにより透過率補正画像を生成する。透過率補正部40は、生成した透過率補正画像を透過率整形部50に出力する。なお、透過率補正部40が実行する処理の詳細は後述する(
図7参照)。
【0032】
透過率整形部50は、透過率算出部30から出力された透過率画像と透過率補正部40から出力された透過率補正画像とに基づいて透過率画像の整形処理を行う。すなわち、透過率整形部50は、透過率補正部40による補正前の透過率画像(各画素の透過率)と透過率補正部40による補正後の透過率画像(各画素の透過率)とを乗算した後に、その値の平方根をとることにより透過率画像を整形する。透過率整形部50は、整形した透過率画像を霧除去画像生成部60に出力する。
【0033】
霧除去画像生成部60は、大気光画素値算出部20から出力される大気光画素値、透過率整形部50から出力された整形後の各画素の透過率(整形後の透過率画像)、及びダイナミックレンジ補正部10から出力される霧画像の各画素の画素値に基づいて、画像中の霧を除去する霧除去処理を実行する。
【0034】
なお、画像処理装置1におけるダイナミックレンジ補正部10、大気光画素値算出部20、透過率算出部30、透過率補正部40、透過率整形部50、及び霧除去画像生成部60は、CPU(Central Processing Unit)などの演算装置が制御プログラムに基づいて処理を実行することにより実現される。
【0035】
次に、画像処理装置1が実行する画像処理方法について説明する。
図3は、第1実施形態に係る画像処理方法を説明するためのフローチャートである。なお、以下の説明では、画像処理装置1が動画(映像)中の霧を除去する場合について説明する。
【0036】
図3に示す処理において、ダイナミックレンジ補正部10は、入力画像のダイナミックレンジを補正する(ステップS1)。
図4は、1エリア分割拡大部11、4エリア分割拡大部12、及び9エリア分割拡大部13によるヒストグラムの生成対象の領域を示す図である。
図4(A)は、入力画像である動画の1フレームの領域を示している。また、
図4(B)は、1エリア分割拡大部11(第1ヒストグラム生成部11a)によるヒストグラムの生成対象の領域を示している。また、
図4(C)は、4エリア分割拡大部12(第2ヒストグラム生成部12a)によるヒストグラムの生成対象の4つの領域(エリア0、エリア1、エリア2、エリア3)を示している。また、
図4(D)は、9エリア分割拡大部13(第3ヒストグラム生成部13a)によるヒストグラムの生成対象の9つの領域(エリア0、エリア1、エリア2、エリア3、エリア4、エリア5、エリア6、エリア7、エリア8)を示している。
【0037】
第1ヒストグラム生成部11aは、
図4(B)に示すように、入力画像の領域を分割せずに、入力画像の領域においてヒストグラムを生成する。第2ヒストグラム生成部12aは、
図4(C)に示すように、入力画像の領域を4つの領域に分割し、それぞれの領域においてヒストグラムを生成する。第3ヒストグラム生成部13aは、入力画像の領域を9つの領域に分割し、それぞれの領域においてヒストグラムを生成する。なお、
図4(B)に示す領域を0階層の領域といい、
図4(C)に示す各領域を1階層の領域といい、
図4(D)に示す領域を2階層の領域という。
【0038】
図5は、エリア分割拡大部11,12,13が生成するヒストグラムの一例を示す図である。例えば、
図5に示すヒストグラムは、第1ヒストグラム生成部11aが入力画像の領域(
図4(B))において生成するヒストグラムとする。
図5に示すヒストグラムにおいて、横軸は画素の明るさ(輝度レベル、照度、階調)を示している。横軸の「0」は最も暗く(真っ黒)、右に行くほど明るくなる。横軸の「255」が最も明るい(真っ白)。縦軸はその明るさの画素がどれくらいあるかを示している(つまり、縦軸は同じ明るさの画素数を示している)。
【0039】
レンジ算出部11bは、明るさ「0」から横軸の右方向に画素数(ピクセル数)を順次加算していく。レンジ算出部11bは、加算した画素数が予め設定された設定値画素数を超えたか否かを判定する。そして、レンジ算出部11bは、加算した画素数が設定値画素数を超えた明るさの値の直前の値を最小値Yminとする。なお、Yは色のない画像(輝度1チャネルの画像)の画素値(輝度)を示している。すなわち、YはR,G,Bのいずれか1つに相当する。また、レンジ算出部11bは、明るさ「255」から横軸の左方向に画素数を順次加算していく。レンジ算出部11bは、加算した画素数が設定値画素数を超えたか否かを判定する。そして、レンジ算出部11bは、加算した画素数が設定値画素数を超えた明るさの値の直前の値を最大値Ymaxとする。
【0040】
設定値画素数はmax側(255側)及びmin側(0側)のノイズ分を判定するための値である。設定値画素数は、領域内のすべての画素数の例えば1〜3%程度の画素数とされる。本実施形態では、設定値画素数は、領域内のすべての画素数の1%の画素数とされている。
【0041】
レンジ算出部12bも、4つの領域(エリア0、エリア1、エリア2、エリア3)のそれぞれに対して、レンジ算出部11bと同様に、加算した画素数が設定値画素数を超えたか否かを判定して最小値Yminと最大値Ymaxを算出する。また、レンジ算出部1
3bも、9つの領域(エリア0、エリア1、エリア2、エリア3、エリア4、エリア5、エリア6、エリア7、エリア8)のそれぞれに対して、レンジ算出部11bと同様に、加算した画素数が設定値画素数を超えたか否かを判定して最小値Yminと最大値Ymaxを算出する。
【0042】
なお、レンジ算出部11b〜13
bは、R,G,Bのそれぞれにおいて(Ymax−Ymin)<minval(minvalは5〜15の範囲内の値)である場合は、最小値Yminを0(Ymin=0)とし、最大値Ymaxを255(Ymax=255)とする。本実施形態では、minvalを10としている。このように、画素値(輝度)の変化がほとんどない領域(色がほとんど均一な領域)についてはダイナミックレンジの拡大を行わないようにする。これにより、誤ったダイナミックレンジの拡大(誤動作)を防止することができる。
【0043】
レンジ拡大部11cは、入力画像の領域の各画素の画素値PixVal、入力画像の領域の最小値Ymin、及び入力画像の領域の最大値Ymaxに基づいて、入力画像の領域の各画素の目標値(TargetValue)を算出する。具体的には、レンジ拡大部11cは、次の式(2)に、画素値PixVal、最小値Ymin、及び最大値Ymaxを代入することにより目標値(TargetValue)を算出する。
【0044】
TargetValue=(PixVal−Ymin)*255/(Ymax−Ymin)・・・(2)
【0045】
なお、レンジ拡大部11cは、ブランク中(今回のフレームと次のフレームとの間の期間)に画素値PixValの0〜255に対して入力画像の領域のテーブルTable(R,G,B)を作成する。レンジ拡大部11cは、テーブルTable(R,G,B)において、最小値Ymin以下の画素値には0を設定し、最大値Ymax以上の画素値には255を設定する。
【0046】
レンジ拡大部11cは、画像のホワイトバランス調整を行う場合は、最小値Ymin及び最大値YmaxとしてR,G,Bのそれぞれの値を用いる。一方、レンジ拡大部11cは、画像のホワイトバランス調整を行わない場合は、最大値Ymaxとして、R,G,Bそれぞれの最大値Ymaxの中の最も大きな値をR,G,B共通で用いる。すなわち、Ymax=max(Rmax,Gmax,Bmax)とする(レンジ拡大部11cはRmax,Gmax,Bmaxのうちの最大値を選択する)。また、レンジ拡大部11cは、画像のホワイトバランス調整を行わない場合は、最小値Yminとして、R,G,Bそれぞれの最小値Yminの中の最も小さな値をR,G,B共通で用いる。すなわち、Ymin=min(Rmin,Gmin,Bmin)とする(レンジ拡大部11cはRmin,Gmin,Bminのうちの最小値を選択する)。
【0047】
その後、レンジ拡大部11cは、上記の式(2)で算出した各画素の画素値(すなわち目標値(TargetValue))をエリア合成部14に出力する。
【0048】
レンジ拡大部12cも、4つの領域(エリア0、エリア1、エリア2、エリア3)のそれぞれに対して、レンジ拡大部11cと同様に、各画素の画素値(すなわち目標値(TargetValue))を算出する。この場合も、レンジ拡大部12cは、画像のホワイトバランス調整の有無に対応した最小値Ymin及び最大値Ymaxを用いて目標値を算出する。また、レンジ拡大部13cも、9つの領域(エリア0、エリア1、エリア2、エリア3、エリア4、エリア5、エリア6、エリア7、エリア8)のそれぞれに対して、レンジ拡大部11cと同様に、各画素の画素値(すなわち目標値(TargetValue))を算出する。この場合も、レンジ拡大部13cは、画像のホワイトバランス調整の有無に対応した最小値Ymin及び最大値Ymaxを用いて目標値を算出する。
【0049】
レンジ拡大部12c及びレンジ拡大部13cは、分割された領域間の画素値の連続性を持たせるために、領域間においてバイリニア補間処理を行う。バイリニア補間は、求める位置の周辺の2×2画素(4画素)を用いて、画素値(輝度値)を直線的に補間して画素値を求める。レンジ拡大部12c及びレンジ拡大部13cは、それぞれ、第2ヒストグラム生成部12a及び第3ヒストグラム生成部13aが分割した各領域の中心位置の画素値に基づいて、バイリニア補間で各画素のレンジ拡大値(TexpValue;レンジ拡大後の画素値)を算出する。
【0050】
図6は、バイリニア補
間処理を説明するための図である。
図6において、Pはバイリニア補間処理を行う画素を示す。A,B,C,Dは、4つの領域の中心位置の画素を示している。
図4(C)に示す領域においては、Aはエリア0の中心位置の画素、Bはエリア1の中心位置の画素、Cはエリア2の中心位置の画素、Dはエリア3の中心位置の画素となる。また、
図4(D)においては、例えば、Aはエリア3の中心位置の画素、Bはエリア4の中心位置の画素、Cはエリア6の中心位置の画素、Dはエリア7の中心位置の画素となる。aは画素Pから画素A又はBまでのy方向の距離、bは画素Pから画素C又はDまでのy方向の距離、cは画素Pから画素A又はCまでのx方向の距離、dは画素Pから画素B又はDまでのx方向の距離を示している。
【0051】
レンジ拡大部12c及びレンジ拡大部13cは、次の式(3)に、画素A,B,C,Dの画素値と距離a,b,c,dを代入することによりレンジ拡大値(TexpValue;レンジ拡大後の画素値)を算出する。
【0052】
TexpValue=((A*d+B*c)*b+(C*d+D*c)*a)/((c+d)*(a+b))・・・(3)
【0053】
なお、上記の式(3)において、A,B,C,Dは各領域における画素値(PixelValue)の拡張された値のテーブルTable引きの値である。
【0054】
実際には、x方向に対しては、A(x)までは0で、その後、B(x)まで+1ずつカウントアップするカウンタ(up counter(c))と、A(x)までは(c+d)で、その後、B(x)まで−1ずつカウントダウンするカウンタ(down counter(d))とを用意する。また、y方向に対しては、A(y)までは0で、その後、C(y)まで+1ずつカウントアップするカウンタ(up counter(a))と、A(y)までは(a+b)で、その後、C(y)まで−1ずつカウントダウンするカウンタ(down counter(b))とを用意する。そして、レンジ拡大部12c及びレンジ拡大部13cは、これらのカウンタを用いてバイリニア補間処理の演算を行う。
【0055】
このように、バイリニア補間処理では、各領域の中心位置の画素値の比から中間位置の画素値を求めることができる。その後、レンジ拡大部12cは、上記の式(3)で算出した各画素の画素値(すなわちレンジ拡大値(TexpValue))をエリア合成部14に出力する。また、レンジ拡大部13cは、上記の式(3)で算出した各画素の画素値(すなわちレンジ拡大値(TexpValue))をエリア合成部14に出力する。
【0056】
エリア合成部14は、1エリア分割拡大部11から出力された画素値A1と、4エリア分割拡大部12から出力された画素値A4と、9エリア分割拡大部13から出力された画素値A9とを入力する。エリア合成部14は、画素値A1に係数α1を乗算し、画素値A4に係数α4を乗算し、画素値A9に係数α9を乗算する。そして、エリア合成部14は、画素値A1,A4,A9に係数α1,α4,α9を乗算した値をそれぞれ足し合わせて(加算して)合成画素値を算出する。すなわち、エリア合成部14は、次の式(4)に、画素値A1,A4,A9と係数α1,α4,α9とを代入することにより合成画素値を算出する。
【0057】
合成画素値=A1*α1+A4*α4+A9*α9・・・(4)
【0058】
ここで、α1+α4+α9=1.0とする。本実施形態では、係数α1は0.5、係数α4は0.3、係数α9は0.2としている。このような係数の値を設定することにより、エリア合成部14は、階層ごとに重み付けした画素値を合成(統合)することができる。
【0059】
図3の説明に戻り、大気光画素値算出部20は、ダイナミックレンジ補正部10から出力された霧画像の各画素の画素値に基づいてダークチャネル画像を生成する(ステップS2)。具体的には、大気光画素値算出部20は、各画素におけるR,G,Bの中で最も小さな値(R,G,Bの各チャネルのうちの最小値)を各画素のダークチャネル値(r,g,b)としてダークチャネル画像を生成する。また、大気光画素値算出部20は、入力画像の全領域においてダークチャネル値の最小値を大気光画素値(atmosr,atmosg,atmosb)として取得する(ステップS3)。
【0060】
透過率算出部30は、大気光画素値算出部20からのダークチャネル画像の各画素の画素値(r,g,b)及び大気光画素値(atmosr,atmosg,atmosb)を用いて各画素の透過率(dtrans)を算出する。具体的には、透過率算出部30は、次の式(5)に、ダークチャネル画像の各画素の画素値(r,g,b)と大気光画素値(atmosr,atmosg,atmosb)とを代入することにより画素ごとの透過率(dtrans)を算出する。
【0061】
dtrans=1−lomega*dtmplA/100.0・・・(5)
【0062】
ここで、式(5)は上記した式(1)に相当する。lomegaは上記した式(1)のωに相当する。dtmplA>(r/atmosr)であれば、dtmplAはr/atmosrである(dtmplA=r/atmosr)。dtmplA>(g/atmosg)であれば、dtmplAはg/atmosgである(dtmplA=g/atmosg)。dtmplA>(b/atmosb)であれば、dtmplAはb/atmosbである(dtmplA=b/atmosb)。dtmplA>(r/atmosr)でない場合、dtmplA>(g/atmosg)でない場合、及びdtmplA>(b/atmosb)でない場合、dtmplAは1.0である(dtmplA=1.0)。
【0063】
透過率算出部30は、上記のように算出した各画素の透過率からなる透過率画像を透過率補正部40及び透過率整形部50に出力する。
【0064】
透過率補正部40は、透過率算出部30から出力された透過率画像(初期透過率画像)を補正する(ステップS5)。透過率補正部40が実行する透過率補正処理について
図7を参照して説明する。
図7は、透過率補正部による透過率補正処理を示すフローチャートである。
図7に示す処理において、透過率補正部40は、ループ回数(nloop)を初期化する(ステップS11)。すなわち、透過率補正部40は、nloopに初期値0を代入する。次に、透過率補正部40は、透過率画像の領域において3×3画素の領域(3×3window)を形成する(ステップS12)。そして、透過率補正部40は、各3×3画素の領域(3×3window)内の透過率の平均値を取得する(ステップS13)。
【0065】
次に、透過率補正部40は、各3×3画素の領域において平均値による各画素の2値化を行う(ステップS14)。すなわち、透過率補正部40は、各3×3画素の領域において各画素の透過率が平均値よりも高い画素(High画素)と低い画素(Low画素)とに分ける。透過率補正部40は、High画素を「1」とし、Low画素を「0」とする。また、透過率補正部40は、High画素の透過率の平均値(have)を取得し、Low画素の透過率の平均値(lave)を取得する(ステップS15)。また、透過率補正部40は、各3×3画素の領域においてHigh画素の個数(hcnt)とLow画素の個数(lcnt)とをカウントする。また、透過率補正部40は、透過率画像全体の透過率の平均値(aave)を算出する。そして、透過率補正部40は、以下の条件により、各3×3画素の領域の画素における透過率(Ttrans)を決定する(ステップS16)。なお、abs()は()内の絶対値を表す。また、Ctransは3×3画素の領域の中央の画素の透過率を表す。
【0066】
まず、透過率補正部40は、Low画素の個数(lcnt)が7以上であれば(lcnt≧7)、透過率(Ttrans)をLow画素の平均値(lave)とする。また、透過率補正部40は、High画素の個数(hcnt)が7以上であれば(hcnt≧7)、透過率(Ttrans)をHigh画素の平均値(have)とする。また、透過率補正部40は、(have−lave)*255>20で、abs(aave−Ctrans)<5であれば、透過率(Ttrans)を3×3画素の領域の中央の画素の透過率Ctransとする。また、透過率補正部40は、Ctrans>(lave+have)/2.0であれば、透過率(Ttrans)をHigh画素の平均値(have)とする。また、透過率補正部40は、その他の場合であれば、透過率(Ttrans)をLow画素の平均値(lave)とする。
【0067】
その後、透過率補正部40は、ループ回数をインクリメントする(nloop=nloop+1)(ステップS17)。透過率補正部40は、ループ回数が3であるか否かを判定し(nloop=3?)(ステップS18)、ループ回数が3になるまでステップS11〜S17の処理を繰り返し実行する。透過率補正部40は、ループ回数が3であると判定した場合は、透過率補正処理を終了する。透過率補正部40は、
図7に示すようにして決定した透過率(Ttrans)を透過率整形部50に出力する。
【0068】
図3の説明に戻り、透過率整形部50は、透過率算出部30から出力された各画素の透過率(dtrans)と透過率補正部40から出力された各画素の透過率(Ttrans)とを入力する。そして、透過率整形部50は、それらの透過率(dtrans,Ttrans)を次の式(6)に代入することにより各画素の整形後の透過率(Mtrans)を算出する(ステップS6)。すなわち、透過率整形部50は、補正前の透過率(dtrans)と補正後の透過率(Ttrans)とを用いて透過率画像を整形する。なお、式(6)において、sqrt()は()内の平方根を求めることを意味する。
【0069】
Mtrans=sqrt(dtrans*Ttrans)・・・(6)
【0070】
その後、透過率整形部50は、整形後の透過率(Mtrans)を霧除去画像生成部60に出力する。次に、霧除去画像生成部60は、大気光画素値算出部20から出力される大気光画素値(atmosr,atmosg,atmosb)、透過率整形部50から出力された整形後の各画素の透過率(Mtrans)、及びダイナミックレンジ補正部10から出力される霧画像の各画素の画素値(r,g,b)に基づいて、画像中の霧を除去する霧除去処理を実行する(ステップS7)。具体的には、霧除去画像生成部60は、次の式(7−1)〜(7−3)に、大気光画素値(atmosr,atmosg,atmosb)、透過率(Mtrans)及び画素値(r,g,b)を代入することにより画像中の霧を除去した各画素の画素値(newR,newG,newB)を算出する。
【0071】
newR=(r−atmosr)/Mtrans+atmosr・・・(7−1);
newG=(g−atmosg)/Mtrans+atmosg・・・(7−2);
newB=(b−atmosb)/Mtrans+atmosb・・・(7−3);
【0072】
なお、透過率補正部40が
図7に示したような処理を実行した場合は、透過率整形部50による処理を省略してもよい。この場合、透過率補正部40は、透過率(Ttrans)を霧除去画像生成部60に出力し、霧除去画像生成部60は、大気光画素値算出部20から出力される大気光画素値(atmosr,atmosg,atmosb)、透過率補正部40から出力された各画素の透過率(Ttrans)、及びダイナミックレンジ補正部10から出力される霧画像の各画素の画素値(r,g,b)に基づいて、画像中の霧を除去する霧除去処理を実行する。
【0073】
以上に説明したように、第1実施形態では、入力画像に基づいてダークチャネル画像を生成するダークチャネル画像生成部20と、ダークチャネル画像生成部20により生成されたダークチャネル画像と大気光画素値とに基づいて透過率画像を生成する透過率画像生成部30と、透過率画像生成部30により生成された透過率画像を補正する透過率補正部40と、透過率補正部40により補正された透過率画像と大気光画素値と入力画像とに基づいて入力画像中の霧を除去する霧除去画像生成部60と、備える。このような構成によれば、低い処理負担で高速に画像中の霧を除去することができる。
【0074】
また、第1実施形態では、透過率補正部40は、透過率画像を所定領域(例えば3×3画素の領域)に分割し、分割した各所定領域の各画素の透過率の平均値により2値化を行い、各所定領域における2値化された各値の個数と各所定領域内の各値の透過率の平均値とに基づいて、各所定領域内の各画素の透過率を選択する。このような構成によれば、ソフトマッティングと比較して処理負担をかけずに透過率の均一化を行うことができる。
【0075】
また、第1実施形態では、透過率補正部40により補正された透過率画像の各画素の透過率と透過率画像生成部30により生成された透過率画像の各画素の透過率とを乗算し、乗算した値の平方根演算を行うことで透過率画像を整形する透過率整形部50を備え、霧除去画像生成部60は、透過率整形部50により整形された透過率画像と大気光画素値と入力画像とに基づいて入力画像中の霧を除去する。このような構成によれば、透過率補正部40による透過率画像の補正を行った場合におけるハローの発生を抑制することができる。
【0076】
また、第1実施形態では、入力画像のレンジを拡大するレンジ補正部10を備え、ダークチャネル画像生成部20は、レンジ補正部10によりレンジが拡大された画像に基づいてダークチャネル画像を生成し、霧除去画像生成部60は、透過率補正部40により補正された透過率画像と大気光画素値とレンジ補正部10によりレンジが拡大された画像とに基づいて画像中の霧を除去する。このような構成によれば、入力画像のダイナミックレンジを拡大して画像中の霧を低減することができる。
【0077】
また、第1実施形態では、レンジ補正部10は、入力画像の領域のレンジを拡大する第1レンジ補正部11と、入力画像を複数の領域に分割し、分割した複数の領域のレンジを拡大する第2レンジ補正部12と、第1レンジ補正部11によりレンジが拡大された画像と第2レンジ補正部12によりレンジが拡大された画像とを合成する合成部14と、を有する。このような構成によれば、複数階層においてレンジの拡大が行われた画像を合成し、より確実に霧の低減を実現することができる。
【0078】
また、第1実施形態では、合成部14は、第1レンジ補正部11によりレンジが拡大された画像に第1係数を乗算し、第2レンジ補正部12によりレンジが拡大された画像に第2係数を乗算し、それらの画像を加算する。このような構成によれば、各画像における重み付けを行った上で画像の合成を行うことができる。また、第1実施形態では、第2レンジ補正部12は、レンジを拡大した画像に対して補間処理を実行するので、分割した領域間における画素値の連続性を持たせることができる。
【0079】
<第2実施形態>
上記した第1実施形態では、透過率補正部40が
図7に示したような透過率補正処理を実行していたが、第2実施形態では、透過率モルフォロジー処理部40Aが透過率補正処理(膨張処理、モルフォロジー処理)を実行する。
【0080】
図8は、第2実施形態に係る画像処理装置の構成を示すブロック図である。
図8に示す画像処理装置1Aは、
図1に示した画像処理装置1における透過率補正部40に代えて透過率モルフォロジー処理部40Aを設けている。その他の構成については、
図1で説明した構成と同様であるため、重複する説明を省略する。
【0081】
透過率モルフォロジー処理部40Aは、透過率算出部30から出力された透過率画像に対してモルフォロジー処理を実行する。具体的には、透過率モルフォロジー処理部40Aは、透過率画像の領域において3×3画素の領域(3×3window)を形成する。そして、透過率モルフォロジー処理部40Aは、各3×3画素の領域(3×3window)内の透過率の平均値を取得する。また、透過率モルフォロジー処理部40Aは、各3×3画素の領域において平均値による各画素の2値化を行う。そして、透過率モルフォロジー処理部40Aは、各3×3画素の領域内の注目画素(中央の画素)の近傍の8画素のうち、1つの画素でもHigh画素があれば注目画素の透過率を、3×3画素の領域内のHigh画素の透過率の平均値(have)とする。このような処理をモルフォロジー処理という。
【0082】
図9は、第2実施形態に係る画像処理方法を説明するためのフローチャートである。なお、
図9に示す処理において、ステップS5A以外の処理は、
図3に示した処理と同様であるため、重複する説明を省略する。
【0083】
ステップS5Aにおいて、透過率モルフォロジー処理部40Aは、透過率画像に対して、モルフォロジー処理を実行する。上記したように、透過率モルフォロジー処理部40Aは、各3×3画素の領域内の注目画素(中央の画素)の近傍の8画素のうち、1つの画素でもHigh画素があれば注目画素の透過率を、3×3画素の領域内のHigh画素の透過率の平均値(have)とする。このように、透過率モルフォロジー処理部40Aがモルフォロジー処理(単純な多値膨張処理)を実行した場合は、透過率整形部50による処理が必要となる。
【0084】
以上のように、第2実施形態では、透過率補正部40は、透過率画像に対してモルフォロジー処理を実行する。このような構成によっても、処理負担をかけずに透過率の均一化を行うことができる。
【0085】
以上、本発明の実施形態を説明したが、本発明の技術的範囲は、上記の実施形態に記載の範囲には限定されない。本発明の趣旨を逸脱しない範囲で、上記の実施形態に、多様な変更または改良を加えることが可能である。また、上記の実施形態で説明した要件の1つ以上は、省略されることがある。そのような変更または改良、省略した形態も本発明の技術的範囲に含まれる。また、上記した実施形態や変形例の構成を適宜組み合わせて適用することも可能である。
【0086】
上記した第1実施形態及び第2実施形態において、揺らぎ吸収装置は、オーディオIP変換装置2AやオーディオIP変換装置6Aだけでなく、オーディオIP変換装置1BやオーディオIP変換装置5Bであってもよい。すなわち、オーディオIP変換装置1BはオーディオIP変換装置2Aと同一構成とされ、オーディオIP変換装置5BもオーディオIP変換装置6Aと同一構成とされてもよい。
【0087】
また、上記した第1実施形態において、ダイナミックレンジ補正部10は、3つの階層で画像のレンジ拡大を行っていたが、2以上の階層で画像のレンジ拡大を行う構成であればよい。
【0088】
また、上記した第1実施形態において、透過率補正部40は透過率画像を3×3画素の領域に分割していたが(ステップS12参照)、3×3画素に限定されず、異なる画素数の領域であってもよい。また、補間処理はバイリニア補間処理を用いていたが、その他の補間処理であってもよい。