(57)【要約】【課題】明度画像内の陰影部のコントラストを改善し、更に明度の不連続を低減する。【解決手段】陰影部領域検出部２００により明度画像内の陰影部領域を検出し、陰影部領域明度変換部３００により、上記陰影部領域内のコントラストを改善するように明度を変換し、グラデーション処理部４００により、前記陰影部領域以外の非陰影部が存在する非陰影部領域と前記陰影部領域との境界に隣接して位置する、前記陰影部領域内の境界隣接領域内の一群の境界近傍画素に対してグラデーション処理を実行して、境界隣接領域とその近傍の領域との間で明度が不連続とならないよう、前記一群の境界近傍画素に対する更に改善された一群の明度を決定し、前記一群の境界近傍画素の明度を、前記陰影部明度変換部により決定された一群の明度に代えて当該一群の更に改善された明度に変更する。【選択図】図１
2005348081.tif 000002
【特許請求の範囲】
【請求項１】
明度画像内の陰影部が存在する陰影部領域を検出する陰影部領域検出手段と、
前記検出された陰影部領域内の複数の画素の明度に対して、前記陰影部領域のコントラストを改善するための明度を所定の明度変換規則にしたがって決定し、前記複数の画素の明度を当該決定された明度に変換する陰影部領域明度変換手段と、
前記明度画像内の前記陰影部領域内の、非陰影部が存在する非陰影部領域との境界に隣接して位置する境界隣接領域内の一群の境界近傍画素に対してグラデーション処理を実行するグラデーション処理手段、
としてコンピュータを機能させ、
前記グラデーション処理は、前記一群の境界近傍画素に対して一群の更に改善された明度を決定し、前記一群の境界近傍画素の明度を、前記陰影部領域明度変換手段により決定された一群の明度に代えて当該一群の更に改善された明度に変更する処理であり、
当該一群の更に改善された明度は、前記一群の境界近傍画素のそれぞれの位置が前記境界から前記陰影部領域の内部に向けて離れるにつれて、それぞれの境界近傍画素の前記陰影部領域明度変換手段により決定される前の明度に近い明度からそれぞれの境界近傍画素の前記陰影部領域明度変換手段により決定された後の明度に近い明度に変化するものである、
ことを特徴とする陰影部のコントラストを改善可能なプログラム。
【請求項２】
前記境界隣接領域を前記境界からの距離に依存して複数のグラデーション領域に分割する境界隣接領域分割手段、
としてコンピュータを更に機能させ、
前記グラデーション処理は、各グラデーション領域内の複数の画素のそれぞれに対して、前記陰影部領域明度変換手段により明度が決定される前のそれぞれの画素の明度と、前記陰影部領域明度変換手段により決定されたそれぞれの画素の明度と、前記境界から当該グラデーション領域までの距離に依存してあらかじめ決定された当該グラデーション領域用の重みとを用いて、当該グラデーション領域内のそれぞれの画素のための前記更に改善された明度を決定する、
ことを特徴とする請求項１に記載の陰影部のコントラストを改善可能なプログラム。
【請求項３】
前記検出された陰影部領域内の複数の画素に関する明度ヒストグラムを検出するヒストグラム検出手段と、
検出された明度ヒストグラムから、当該陰影部領域に関する改善されたコントラストを表す目標明度ヒストグラムを決定する目標ヒストグラム決定手段、
としてコンピュータを更に機能させ、
前記陰影部領域明度変換手段により実行される前記所定の明度変換規則は、前記陰影部領域に関する改善後の明度ヒストグラムがほぼ前記目標明度ヒストグラムになるように、前記検出された陰影部領域内の複数の画素の明度を変換するための変換規則であり、
前記目標ヒストグラム決定手段は、
前記明度画像に対してあらかじめ定められた最大明度から最小明度までの範囲に拡大されるべき、前記明度ヒストグラムの中央領域を前記明度ヒストグラムに基づいて決定する中央領域決定手段と、
前記明度ヒストグラムの前記中央領域を、前記最大明度から最小明度までの範囲に分布する拡大ヒストグラムに拡大する中央領域拡大手段と、
前記明度ヒストグラムのうち、前記決定された中央領域より小さい明度に対するヒストグラム下側領域と、前記中央領域より大きい明度に対するヒストグラム上側領域とを組み合わせて、前記最小明度から前記最大明度までの明度範囲に画素が分布する組合せヒストグラムに変換し、当該変換で生成された前記組合せヒストグラムを前記中央領域変換手段により生成される前記拡大ヒストグラムと合成して前記目標明度ヒストグラムを生成する上下側領域拡大手段と、
を備える、
ことを特徴とする請求項１又は２に記載の陰影部のコントラストを改善可能なプログラム。
【請求項４】
前記明度画像を複数のブロックに分割する領域分割手段、
としてコンピュータを更に機能させるプログラムであり、
前記陰影部領域明度変換手段は、前記複数のブロックのそれぞれ毎に、それぞれに含まれた陰影部領域のコントラストを改善するための明度を決定する、
ことを特徴とする請求項１から３のいずれか一つに記載の陰影部のコントラストを改善可能なプログラム。
【請求項５】
明度画像内の陰影部が存在する陰影部領域を検出する陰影部領域検出ステップと、
前記検出された陰影部領域内の複数の画素の明度に対して、前記陰影部領域のコントラストを改善するための明度を所定の明度変換規則にしたがって決定し、前記複数の画素の明度を当該決定された明度に変換する陰影部明度変換ステップと、
前記明度画像内の前記陰影部領域内の、非陰影部が存在する非陰影部領域との境界に隣接して位置する境界隣接領域内の一群の境界近傍画素に対してグラデーション処理を実行するグラデーション処理ステップと、
を含み、
前記グラデーション処理は、前記一群の境界近傍画素に対して一群の更に改善された明度を決定し、前記一群の境界近傍画素の明度を、前記陰影部明度変換ステップで決定された一群の明度に代えて当該一群の更に改善された明度に変更する処理であり、
当該一群の更に改善された明度は、前記一群の境界近傍画素のそれぞれの位置が前記境界から前記陰影部領域の内部に向けて離れるにつれて、それぞれの境界近傍画素の前記陰影部明度変換ステップで決定される前の明度に近い明度からそれぞれの境界近傍画素の前記陰影部明度変換ステップで決定された後の明度に近い明度に変化するものである、
ことを特徴とする陰影部のコントラストの改善方法。
【請求項６】
前記境界隣接領域を前記境界からの距離に依存して複数のグラデーション領域に分割する境界隣接領域分割ステップ、
を更に含み、
前記グラデーション処理は、各グラデーション領域内の複数の画素のそれぞれに対して、前記陰影部明度変換ステップで明度が決定される前のそれぞれの画素の明度と、前記陰影部明度変換ステップで決定されたそれぞれの画素の明度と、前記境界から当該グラデーション領域までの距離に依存してあらかじめ決定された当該グラデーション領域用の重みとを用いて、当該グラデーション領域内のそれぞれの画素のための前記更に改善された明度を決定する、
ことを特徴とする請求項５に記載の陰影部のコントラストの改善方法。
【請求項７】
前記検出された陰影部領域内の複数の画素に関する明度ヒストグラムを検出するヒストグラム検出ステップと、
検出された明度ヒストグラムから、当該陰影部領域に関する改善されたコントラストを表す目標明度ヒストグラムを決定する目標ヒストグラム決定ステップと、
を更に含み、
前記陰影部明度変換ステップで実行される前記所定の明度変換規則は、前記陰影部領域に関する改善後の明度ヒストグラムがほぼ前記目標明度ヒストグラムになるように、前記検出された陰影部領域内の複数の画素の明度を変換するための変換規則であり、
前記目標ヒストグラム決定ステップは、
前記明度画像に対してあらかじめ定められた最大明度から最小明度までの範囲に拡大されるべき、前記明度ヒストグラムの中央領域を前記明度ヒストグラムに基づいて決定する中央領域決定ステップと、
前記明度ヒストグラムの前記中央領域を、前記最大明度から最小明度までの範囲に分布する拡大ヒストグラムに拡大する中央領域拡大ステップと、
前記明度ヒストグラムのうち、前記決定された中央領域より小さい明度に対するヒストグラム下側領域と、前記中央領域より大きい明度に対するヒストグラム上側領域とを組み合わせて、前記最小明度から前記最大明度までの明度範囲に画素が分布する組合せヒストグラムに変換し、当該変換で生成された前記組合せヒストグラムを前記中央領域変換ステップで生成される前記拡大ヒストグラムと合成して前記目標明度ヒストグラムを生成する上下側領域拡大ステップと、
とを含む、
ことを特徴とする請求項５又は６に記載の陰影部のコントラストの改善方法。
【請求項８】
前記明度画像を複数のブロックに分割する領域分割ステップ、
を更に含み、
前記陰影部領域明度変換ステップは、前記複数のブロックのそれぞれ毎にそれぞれに含まれた陰影部領域のコントラストを改善するための明度を決定する、
ことを特徴とする請求項５から７のいずれか一つに記載の陰影部のコントラストの改善方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、人工衛星あるいは航空機等から地表を撮影して得た画像等の撮像画像に含まれる、ビル等の建物により生じる比較的大きい陰影部の画像のコントラストを改善して当該陰影部の画像を見やすい画像、すなわち、視認性を向上した画像にする、陰影部のコントラストを改善可能なプログラム及び陰影部のコントラストの改善方法に関する。
【背景技術】
【０００２】
近年、人工衛星又は航空機等（以下、人工衛星等と呼ぶことがある）により地表を高所から撮影して得られる、地表を撮影した画像（以下、この画像を地理画像と呼ぶ場合がある）に関する地理画像データの利用が広まってきている。例えば、地図の生成や都市部での土地の利用状況の把握等である。しかし、都市部では高層ビル群等の高層建築物の陰となる部分（以下、陰部分と呼ぶことがある）及び影となる部分（以下、影部分と呼ぶことがある）は全体として非常に暗く、画像のコントラストが非常に小さく、視認性に欠ける場合が起きている。
【０００３】
以下では、上記陰部分と影部分を合わせて陰影部と呼ぶことがある。ここで、陰部分は、例えばビル等の物体のうち、その物体の他の部分により太陽光が遮断され、太陽光が照射されなくなった部分である。例えばビルの壁面のうち太陽光が照射されていない壁面である。影部分は、ビル等の太陽光が照射された物体により地表等に投影される黒い部分である。
【０００４】
このように陰影部の濃度が低く、画像のコントラストが小さいと、その陰影部内にある物体を明瞭に識別することが難しくなるという、陰影部の視認性の問題が発生し、このことが地理画像データの利用時の問題の一つとなっている。そのため、従来からも陰影部内の視認性を向上させるための研究が活発に行われている。その一例として、特許文献１は、地理画像から影部分を削除する方法を提案している。具体的には、この提案では、衛星画像データに含まれる撮影日時情報とビル等の物体の高さ情報とを利用して、その物体への太陽光の照射方向、照射角度、当該物体の存在により発生する影の幅とその長さを算出し、算出された情報に基づいてビル等の物体の影部分の存在位置を決定し、当該決定に基づいて影部分を地理画像から削除する技術が提案されている。
【０００５】
なお、地理画像と異なる他の画像についてではあるが、対象物に対する照明が悪いとかあるいは逆光で撮影された場合のように、対象物を撮影して得られる画像のコントラストが低い場合に、画像のコントラストを改善するための方法として、いくつかの手法は知られている。例えば、濃度ヒストグラムを均一化する手法あるいは濃度を線形又は非線形に変換するという手法自体は知られている（例えば、特許文献２、３、４及び非特許文献１参照）。また、画像のノイズを除去して画像を鮮明にする方法自体も知られている（例えば、非特許文献２参照）。
【特許文献１】特開平１０−２６９３４７号公報
【特許文献２】特開２００２−２０９１１５号公報
【特許文献３】特開２００１−１１８０６２号公報
【特許文献４】特開２００２−１４０７００号公報
【非特許文献１】酒井幸市，「デジタル画像処理入門」，ＣＱ出版株式会社，２００２年１０月１日，ｐ．３８−４９
【非特許文献２】八木伸行、外５名，「Ｃ言語で学ぶ実践画像処理」，株式会社オーム社，１９９９年１２月８日，ｐ．５４−６３，８４−９７
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示されている技術では、影部分のみの除去を行うことを提案しているので、影部分が投影された地上の物体に関する画像情報がなくなり、その物体を全く識別できなくなる。したがって、影部分を削除してもよいという用途にしか適用できない。更に、特許文献１では、陰部分の視認性の低さの問題は何も解決していない。
【０００７】
一般に陰影部を含むモノクロの濃淡画像内の陰影部の視認性を改善するには、それ自体知られている、濃度ヒストグラムの均一化あるいは線形変換又は非線変換を使用することが考えられる。しかし、発明者による実験ではこのようなコントラスト改善策を陰影部と非陰影部の両方を有する白黒画像全体に適用しても、陰影部の画像のコントラストはあまり改善されないことが分かった。そこで、本発明者は、陰影部のコントラスト改善のためには、非陰影部と区別して陰影部だけに対してコントラスト改善処理を施すことがよいと考えるに至った。しかし、本発明者による実験の結果、従来のコントラスト改善策である、濃度ヒストグラムの均一化あるいは線形変換あるいは非線形変換等の既に知られた処理を陰影部だけに適用しても、得られる画像はコントラストが高すぎたりあるいは逆に低すぎたりして、適切なコントラストが得られないということが判明した。したがって、本発明者は、陰影部という濃度の低い画像が大部分である特定の画像部分のコントラストの改善に適した新しいコントラスト改善方法が望ましいと考えるに至った。
【０００８】
更に、発明者の検討の結果、非陰影部と区別して陰影部のみにコントラスト改善処理を施した場合、コントラスト改善後の陰影部の画像が不自然になる場合があることが判明した。特に、陰影部を検出するために使用する２値化のための閾値に近い濃度の領域の画像の濃度が近傍の領域に対して不連続になる場合があることが判明した。すなわち、陰影部として検出される領域と、そうでない領域との境界で濃度の不連続が生じることが分かった。更に、この問題は陰影部に対して施すコントラスト改善方法の種類によらないで生じることが分かった。例えば、従来の濃度ヒストグラムの均一化あるいは線形変換を陰影部のみに対して行ったときにも生じる場合があることが分かった。
【０００９】
陰影部の画像の視認性の問題及び上記濃度の不連続は、画像がモノクロ濃淡画像とカラー画像のいずれの場合にも生じる問題であることが判明した。したがって、本明細書では、両方の画像の明るさを表す画像値として明度を使用する。明度は、画像がモノクロの濃淡画像の場合には、その濃度自体である。画像がカラー画像の場合には、その画像の各画素の画像値として当該カラー画像から決定され、色相と彩度と組にして使用される明度を、本発明での明度として使用可能である。画像の明度は、明るい画像部分では値が大きいあるいは高いと呼び、暗い画像部分では値が小さいあるいは低いと呼ぶことにする。画像の明度に代えて濃度を議論するときも同様とする。
【００１０】
したがって、本発明の目的は、非陰影部と区別して陰影部に対して明度のコントラスト改善処理を施した場合に生じる、２値化のための閾値に近い明度の領域とその近傍の領域との間で生じる明度の不連続とそれによる画像の不自然さを低減できる、陰影部のコントラストの改善方法及び陰影部のコントラストを改善可能なプログラムを提供することである。
【００１１】
本発明の他の目的は、従来のコントラスト改善方法よりも効果的に陰影部のコントラストを改善でき、更に、陰影部のコントラストの改善後に生じる、２値化のための閾値に近い明度の領域とその近傍の領域との間で生じる明度の不連続を低減できる、陰影部のコントラストの改善方法及び陰影部のコントラストを改善可能なプログラムを提供することである。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明は、陰影部として検出された領域のうち、非陰影部として検出された領域に隣接する境界隣接領域内の複数の画素の明度をコントラスト改善のための値にいきなり変化させないで、当該境界隣接領域内の複数の画素の明度に対してグラデーション処理を施し、その処理により上記境界隣接領域内の複数の画素の明度を境界から離れるにしたがって、元の   明度変換前の明度に近い明度から明度変換後の明度に近い明度に変化させるものである。
【００１３】
より具体的には、請求項１に記載の陰影部のコントラストを改善可能なプログラムは、明度画像内の陰影部が存在する陰影部領域を検出する陰影部領域検出手段と、前記検出された陰影部領域内の複数の画素の明度に対して、前記陰影部領域のコントラストを改善するための明度を所定の明度変換規則にしたがって決定し、前記複数の画素の明度を当該決定された明度に変換する陰影部領域明度変換手段と、前記明度画像内の前記陰影部領域内の、非陰影部が存在する非陰影部領域との境界に隣接して位置する境界隣接領域内の一群の境界近傍画素に対してグラデーション処理を実行するグラデーション処理手段、としてコンピュータを機能させるものである。更に、前記グラデーション処理は、前記一群の境界近傍画素に対して一群の更に改善された明度を決定し、前記一群の境界近傍画素の明度を、前記陰影部領域明度変換手段により決定された一群の明度に代えて当該一群の更に改善された明度に変更する処理である。更に、当該一群の更に改善された明度は、前記一群の境界近傍画素のそれぞれの位置が前記境界から前記陰影部領域の内部に向けて離れるにつれて、それぞれの境界近傍画素の前記陰影部領域明度変換手段により決定される前の明度に近い明度からそれぞれの境界近傍画素の前記陰影部領域明度変換手段により決定された後の明度に近い明度に変化するものである。
【００１４】
ここで上記明度は、画像の明るさを表す画像値であり、画像がモノクロ濃淡画像の場合には濃度自体である。画像がカラー画像の場合には、その画像の各画素の画像値として当該カラー画像から決定され、色相と彩度と組にして使用される明度を上記明度として使用可能である。上記発明により、画像の陰影部領域に対してコントラストを向上するための明度を決定した後に、前記陰影部領域内の上記境界隣接領域内の一群の境界近傍画素の明度は、グラデーション処理により、一群の境界近傍画素のそれぞれの位置が前記境界から前記陰影部領域の内部に向けて離れるにつれて、それぞれの境界近傍画素の前記陰影部領域明度変換手段により明度が決定される前の明度に近い値からそれぞれの境界近傍画素の前記陰影部領域明度変換手段により決定された後の明度に近い値に変化するように変更される。したがって、陰影部領域と非陰影部領域との境界付近にある陰影部領域内の画素の明度は、陰影部領域明度変換手段により明度が決定される前の明度に近く、一方、上記境界より内部の画素の明度は、陰影部領域明度変換手段により決定された明度に近い明度になる。したがって、陰影部領域の境界隣接領域内では明度は急激には変化しない。こうして、２値化閾値に近い部分とその近傍との間では、明度の不連続は低減される。なお、上記発明は、カラー画像にも適用できる利点がある。
【００１５】
請求項２に記載の陰影部のコントラストを改善可能なプログラムは、請求項１において、前記境界隣接領域を前記境界からの距離に依存して複数のグラデーション領域に分割する境界隣接領域分割手段としてコンピュータを更に機能させるものである。更に、前記グラデーション処理は、各グラデーション領域内の複数の画素のそれぞれに対して、前記陰影部領域明度変換手段により明度が決定される前のそれぞれの画素の明度と、前記陰影部領域明度変換手段により決定されたそれぞれの画素の明度と、前記境界から当該グラデーション領域までの距離に依存してあらかじめ決定された当該グラデーション領域用の重みとを用いて、当該グラデーション領域内のそれぞれの画素のための前記更に改善された明度を決定するものである。これにより、境界隣接領域内での画素の明度を、陰影部内の画素の位置が内部になるにしたがい、陰影部領域明度変換手段による明度の決定前のその画素の明度に近い明度から前記陰影部領域明度変換手段により決定されたその画素の明度に近い明度まで漸次変化させることを、簡単な処理により実現できる。
【００１６】
請求項３に記載の陰影部のコントラストを改善可能なプログラムは、請求項１又は２において、前記検出された陰影部領域内の複数の画素に関する明度ヒストグラムを検出するヒストグラム検出手段と、検出された明度ヒストグラムから、当該陰影部領域に関する改善されたコントラストを表す目標明度ヒストグラムを決定する目標ヒストグラム決定手段、としてコンピュータを更に機能させるものである。
更に、前記陰影部領域明度変換手段により実行される前記所定の明度変換規則は、前記陰影部領域に関する改善後の明度ヒストグラムがほぼ前記目標明度ヒストグラムになるように、前記検出された陰影部領域内の複数の画素の明度を変換するための変換規則である。更に、前記目標ヒストグラム決定手段は、前記明度画像に対してあらかじめ定められた最大明度から最小明度までの範囲に拡大されるべき、前記明度ヒストグラムの中央領域を前記明度ヒストグラムに基づいて決定する中央領域決定手段と、前記明度ヒストグラムの前記中央領域を、前記最大明度から最小明度までの範囲に分布する拡大ヒストグラムに拡大する中央領域拡大手段と、前記明度ヒストグラムのうち、前記決定された中央領域より小さい明度に対するヒストグラム下側領域と、前記中央領域より大きい明度に対するヒストグラム上側領域とを組み合わせて、前記最小明度から前記最大明度までの明度範囲に画素が分布する組合せヒストグラムに変換し、当該変換で生成された前記組合せヒストグラムを前記中央領域変換手段により生成される前記拡大ヒストグラムと合成して前記目標明度ヒストグラムを生成する上下側領域拡大手段と、を備えるものである。
【００１７】
これにより、陰影部領域の明度ヒストグラムに基づいて、陰影部領域の改善後の目標ヒストグラムを決定でき、陰影部領域の明度のコントラストをこの目標ヒストグラムとなるように改善することができる。更に、陰影部領域の明度変換前の明度ヒストグラムの中央領域を、画像が持ちうる最小明度から最大明度までに分布するように拡大することができ、更に、この拡大対象から除外されたヒストグラム下側領域とヒストグラム上側領域を組み合わせて、最小明度から最大明度までの範囲に画素が分布する組み合わせヒストグラムに変換し、そのヒストグラムを上記拡大ヒストグラムと合成して目標ヒストグラムとするので、陰影部領域の明度を、元のヒストグラム下側領域とヒストグラム上側領域に属する明度を有していた画素の情報を除去しないで、かつ、明度の分布範囲を最小明度から最大明度までの範囲に拡大でき、陰影部領域の明度のコントラストを改善することが可能になる。更に、コントラストを改善した陰影部に関して、請求項１から３の少なくとも一つについて上に説明した効果も生じる。
【００１８】
請求項４に記載の陰影部のコントラストを改善可能なプログラムは、請求項１から３のいずれか一つにおいて、前記プログラムは、前記明度画像を複数のブロックに分割する領域分割手段としてコンピュータを更に機能させるプログラムであり、前記陰影部領域明度変換手段は、前記複数のブロックのそれぞれ毎に、それぞれに含まれた陰影部領域のコントラストを改善するための明度を決定するものである。これにより、陰影部領域のコントラストをブロック毎にブロックに合わせて改善できる。
【発明の効果】
【００１９】
本発明によれば、明度画像から検出された非陰影部領域と区別して、検出された陰影部領域に対してコントラスト改善処理を施した場合に生じる、２値化閾値に近い部分とその近傍との間に生じる明度の不連続を減少できる。
更に、本発明の望ましい態様では、従来のコントラスト改善方法よりも効果的に陰影部のコントラストを改善でき、更に、陰影部のコントラストの改善により生じる、２値化閾値に近い部分とその近傍との間に生じる明度の不連続を減少できる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明に係る陰影部のコントラストを改善可能なプログラム及び陰影部のコントラストの改善方法の実施の形態を図面を参照して詳細に説明する。
図１は、本発明に係る、画像の陰影部のコントラストを改善可能な装置の一つの実施形態の概略ブロック図である。符号１は、上記装置の一つの実施の形態の全体を指す。本装置１は、例えばパソコン又はワークステーションにより実現される処理装置１０と、メインメモリとして使用されるＲＡＭ（ランダムアクセスメモリ）（図示せず）及び磁気ディスク記憶装置のような補助記憶装置（図示せず）とを含む記憶装置２０と、入出力装置３０とを備えている。入出力装置３０は、キーボード及びマウス等のポインティングデバイスを含む入力装置３１と、ＣＲＴディスプレイ装置等の表示装置３２又はプリンタ３３などの出力装置を備えている。入力装置３１はパラメータの入力やコマンドの起動などに使われる。表示装置３２又はプリンタ３３は、陰影部のコントラストを改善すべき画像あるいは当該画像から生成された陰影部のコントラストが改善された画像などの表示又は印字に使われる。記憶装置２０内にデータが記憶されるときに、当該データが図示しないＲＡＭと図示しない補助記憶装置のいずれに記憶されるかは、あらかじめ当該データ毎に決められている。
【００２１】
陰影部のコントラストを改善可能なプログラムは、記憶装置２０に記憶され処理装置１０に組み込まれ実行されるが、図では分かりやすさのために、本プログラム４０とそれを構成する複数のモジュールを処理装置１０を示すブロックの内部に記載している。陰影部のコントラストを改善可能なプログラム４０は、カラー形式変換部１００と、陰影部領域検出部２００と、陰影部領域明度変換部３００と、グラデーション処理部４００と、カラー形式逆変換部５００というモジュールを含む。陰影部領域明度変換部３００は、陰影部領域ヒストグラム検出部６００と、目標ヒストグラム生成部７００と、明度変換部８００というモジュールを含む。グラデーション処理部４００は、グラデーション領域決定部９００と、グラデーション処理実行部９５０というモジュールを含む。
【００２２】
処理装置１０は、プログラム４０内のそれぞれのモジュールが実行されたときに、カラー画像情報を変換する機能ブロックと、陰影部領域を検出する機能ブロックと、陰影部領域のコントラストを改善するように陰影部領域の明度を変換する機能ブロックと、非陰影部領域との境界に位置する、陰影部領域内の境界隣接領域に対して、明度の急激な変化を防止するためのグラデーション処理を実行する機能ブロックと、カラー画像情報を逆変換する機能ブロックという複数の機能ブロックとしてコンピュータを動作させる。したがって、処理装置１０とプログラム４０のこれらのモジュールにより、それぞれのモジュールに対応する複数の機能ブロックが実現されることになる。したがって、処理装置１０と、記憶装置２０と、入出力装置３０と、カラー形式変換部１００、陰影部領域検出部２００、陰影部領域明度変換部３００と、グラデーション処理部４００と、カラー形式逆変換部５００は、本発明に係る。画像の陰影部のコントラストを改善可能な装置の一つの実施の形態を実現することになる。
【００２３】
プログラム４０は、本発明に係る、陰影部のコントラストを改善可能なプログラムの一つの実施の形態を実現するものであり、記録媒体に記録してあるいはネットワークを介して記憶装置２０に記憶され処理装置１０で実行される。プログラム４０は、記録媒体に記録されて又はネットワークを介して販売可能である。処理装置１０がプログラム４０を実行して陰影部のコントラストを改善する手順は、本発明に係る陰影部のコントラストの改善方法の一つの実施の形態を実現する。
【００２４】
記憶装置２０には、あらかじめ陰影部のコントラストを改善する対象とするカラー画像データ２１が記憶され、カラー画像データ２１をプログラム４０により処理して、明度データ（以下、改善対象明度データと呼ぶことがある）２２と、彩度データ２２Ａと、色相データ２２Ｂと、２値画像データ２３Ａと、陰影部領域データ２３Ｂと、実ヒストグラムデータ２４Ａと、目標ヒストグラムデータ２４Ｂと、明度変換データ２５と、コントラスト改善後明度データ２６と、グラデーション領域データ２７と、グラデーション処理後明度データ２８と、改善後カラー画像データ２９が生成され、記憶装置２０に格納される。以下では断らない限り、本実施の形態では、カラー画像データ２１は、カラーの多値画像のデータであると仮定する。より具体的には、本実施の形態では、陰影部を含む画像の例として、例えば人工衛星や航空機等の高度飛翔体から地表を撮影して得られたカラーの地理画像が使用される。
【００２５】
プログラム４０の処理の概要は以下のとおりである。当該地理画像を表すカラー画像データ２１を変換して改善対象明度データ２２と、彩度データ２２Ａと、色相データ２２Ｂを生成する。当該改善対象明度データ２２から、画像内の陰影部を含む陰影部領域を検出し、当該陰影部領域を表す陰影部領域データ２３Ｂを生成する。生成された陰影部領域データ２３Ｂが示す当該陰影部領域に含まれる複数の画素の明度に関する実ヒストグラムデータ２４Ａを検出し、その実ヒストグラムデータ２４Ａから、コントラストが改善された目標とする目標ヒストグラムデータ２４Ｂを決定する。当該陰影部領域の前記複数の画素の明度を変換するための明度変換データ２５を、前記検出された実ヒストグラムデータ２４Ａと前記決定された目標ヒストグラムデータ２４Ｂとに依存して生成し、生成された明度変換データ２５に基づいて前記陰影部領域内の前記複数の画素の明度を変換してコントラスト改善後明度データ２６を生成する。
【００２６】
上記陰影部領域データ２３Ｂが示す当該陰影部領域内の、非陰影部領域との境界に隣接する境界隣接領域に位置する、グラデーション処理を実行すべき複数のグラデーション領域を決定し、それぞれのグラデーション領域を指定するグラデーション領域データ２７を生成する。複数のグラデーション領域は、例えば、上記境界隣接領域内の、上記境界から陰影部領域の内部に向けて異なる距離に位置するように決定される。上記グラデーション領域データ２７が指定する上記複数のグラデーション領域に対応してあらかじめ決定された重みに応じて、上記コントラスト改善後明度データ２６内の、上記境界隣接領域の明度を変換し、グラデーション処理後明度データ２８を生成する。そのグラデーション処理後明度データ２８と、上記彩度データ２２Ａと、上記色相データ２２Ｂとを合成して、改善後カラー画像データ２９を生成する。
【００２７】
図２は、改善対象明度データ２１が示す地理画像の一例を示す図である。この地理画像は、人工衛星により地上を撮影して得られた実際の地理画像である。この画像内には複数のビルが存在し、道路が複数の箇所に存在し、複数の自動車が路上に存在している。図では、陰影部でないところでは、太陽光が直接照射されていて、明度が非常に高いが、一方、明度が低い陰影部がビルの壁面あるいは路上の多くの場所に存在している。陰影部の内部はほとんど識別できないくらい明度のコントラストが少ない。画像全体としては、明度の分布は非常に広く、陰影部が非常にコントラストが低い状態にあり、陰影部の視認性が低い。
【００２８】
図３０は従来技術による明度ヒストグラムの線形変換とその問題点を説明するための図である。線形変換は、同図（ａ）に示すように明度ヒストグラムの明度の分布範囲［ａ＋１，ｂ−１］を、拡大された明度の分布範囲［ａ'，ｂ'］に変換することにより明度のコントラストを拡大する手法である。任意の画素の明度ｉ（ａ＋１≦ｉ≦ｂ−１）が明度ｉ'（ａ'≦ｉ'≦ｂ'）に変換される。例えば、同図（ｂ）の明度ヒストグラムに示すように、画像の明度の範囲が実質的に明度の分布範囲［ａ＋１，ｂ−１］内である場合、ａ'＝０、ｂ'＝ＭＡＸ（最高の明度）のときは、変換後の明度の範囲［ａ'，ｂ'］は、同図（ｃ）のヒストグラムに示すように、明度の最大の分布範囲［０，ＭＡＸ］となり、明度のコントラストが改善される。
【００２９】
図３１は、陰影部と明るい非陰影部を含む画像の明度ヒストグラムとその画像に対する従来技術による線形変換を行った結果得られる画像の明度ヒストグラムを模式的に示す図である。同図（ａ）は、陰影部と明るい非陰影部を含む画像（例えば図２）に対する明度ヒストグラムを模式的に示す図であり、同図（ｂ）は、この明度ヒストグラムに対して線形変換をした結果得られる明度ヒストグラムの例を示す図である。同図（ａ）から分かるように、図２に例示したような画像では、陰影部の明度の最小値ａ＋１も、画像が取りうる明度の最小値０に近く、かつ非陰影部の明度の最大値ｂ−１も、画像が取りうる明度の最大値ＭＡＸに近い。このような画像に線形変換を施しても、得られる明度ヒストグラムの明度の分布範囲は、図３１（ｂ）に示すように、同図（ａ）に示した元の明度の分布範囲に比べてそれほど大きくは拡大されない。したがって、図２のような画像に対しては、従来の線形変換では、陰影部のコントラストの改善は難しい。
【００３０】
また、ダイナミックレンジの拡大のために、線形変換する明度の分布範囲［ａ＋１，ｂ−１］を図３１（ａ）内の画素が現に存在する明度範囲のうちの一部の範囲に制限して、その範囲内の画素のみの明度を明度の最大の範囲［０，ＭＡＸ］に変換することも考えられるが、この場合には、明度ｉがｉ≦ａ＋１となる明度の画素は処理後に明度が０となり、つぶれという現象が起きる。また、ｂ−１≦ｉとなる明度の画素は処理後に明度がＭＡＸとなり、白とびという現象が起きる。白とびとつぶれが起きるとその部分の情報が失われるという問題がある。
一方、従来の明度ヒストグラムの均一化では、得られる画像は明度のコントラストが強すぎ、ノイズも多く発生して見にくい画像になってしまう。
【００３１】
本発明では、図２のような画像に含まれたコントラストが低い陰影部の視認性を向上するために、陰影部が存在する陰影部領域を検出して、その陰影部領域内の画素の明度を、陰影部のコントラストを向上させるように変換する。なお、本実施の形態では、画像全体を陰影部と非陰影部の２つの領域に分け、陰影部領域に対してコントラストを改善する処理を施す方法を採る。しかし、画像によっては陰影部領域内の画素の明度の分布が場所によって大きく異なる場合もあり得る。その場合には、陰影部領域を複数のブロックに分割して各ブロック毎に、そのブロック内の陰影部領域のコントラストを向上するための処理を当該陰影部領域に施しても良い。
【００３２】
図１に戻り、プログラム４０は、まずカラー形式変換部１００を実行する。図３はＲ、Ｇ、Ｂの３原色に関するカラー画像情報でカラー画像を定義するＲＧＢカラーモデルを示す図である。カラー画像データ２１は、図３に示すＲＧＢカラーモデルで定義されたＲ、Ｇ、Ｂの３原色に関するカラー画像情報を有するデータであると仮定する。ここで、Ｒ、Ｇ、Ｂは、値０から１の範囲を有すると仮定する。カラー形式変換部１００は、カラー画像データ２１のＲＧＢカラー画像情報を、色相（Ｈ）、明度（Ｉ）、彩度（Ｓ）からなるＨＩＳ空間のカラー画像情報に変換して、改善対象明度データ２２、彩度データ２２Ａ、色相データ２２Ｂを生成する。ＨＩＳの明度Ｉは明度Ｌと呼ばれることもある。
【００３３】
図４は、カラー画像情報を定義される双六角錐カラーモデルを示す図である。本実施の形態では、ＨＩＳ空間のカラー画像情報として、図４に示す双六角錐カラーモデルで定義されるカラー画像情報を使用する。ここで、Ｈは色相であり、０〜３６０度の値を採る。Ｉは明度であり、０〜１の実数値を採る。Ｓは彩度であり、０〜１の値を採る。以下では、図２は、カラー形式変換部１００により生成された改善対象明度データ２２の一例が示す地理画像であるとする。なお、明度Ｉはカラー画像の明るさの成分を表しており、カラー画像情報から生成されたモノクロ画像の明度と一致する。なお、図３に示すＨＩＳ空間のカラー画像情報に代えて他のカラーモデルを使用することもできる。また、カラー画像データ２１自体が図３に示すＨＩＳ空間のカラー画像情報を持つデータであってもよい。その場合には、カラー形式変換部１００は実行する必要はないことはいうまでもない。本発明では、明度は画像の明るさを表す情報であればよく、カラーモデルの種別は限定されない。なお、双六角錐カラーモデル及びＲＧＢ→ＨＩＳ変換のアルゴリズムについては、例えば、平林雅英、「Ｃ言語による最新プログラム辞典 第２巻」、 株式会社技術評論者、１９９２年１１月２７日、 ｐ．１０４−１１０（以下参考文献と呼ぶ）を参照。
【００３４】
図１に戻り、プログラム４０は、つぎに陰影部領域検出部２００を実行する。図５は、陰影部領域検出部２００の概略フローチャートを示す。陰影部領域検出部２００は、２値化部２１０とノイズ除去部２２０というモジュールとを含み、これらのモジュールをこの順番で順次実行する。２値化部２１０は、適当な２値化閾値を用いて改善対象明度データ２２を２値化して、改善対象明度データ２２の画素に対応する画素を有する２値画像データ２３Ａに変換する。すなわち、２値化の閾値より小さい明度を有する画素を、陰影部が存在する陰影部領域に属する画素として検出し、その画素に対応する、２値画像データ２３Ａの画素の値を１とし、上記２値化の閾値以上の大きい明度を有する画素を非陰影部が存在する非陰影部領域に属する画素として検出し、その画素に対応する２値画像データ２３Ａ内の画素の値を０にする。
【００３５】
２値化部２１０は、上記閾値をモード法、判別分析法、Ｐタイル法、微分ヒストグラム法などの種々の周知技術のいずれかを用いて、改善対象明度データ２２から決定することができる。どの方法で閾値を決定するのが適切であるかは、改善対象明度データ２２によって異なるので、改善対象明度データ２２に合わせて適切な方法を選択すればよい。一般的には、判別分析法を用いると陰影部領域と非陰影部領域を区分しやすい。本実施の形態でも具体的な処理においては判別分析法を使用する。判別分析法は、ある値ｆｔにて画像全体の明度のヒストグラムを２つのクラス（級）に分けた場合、級間分散÷（クラス１の級内分散＋クラス２の級内分散）の算出結果が最大となるときのｆｔを閾値として決定する手法である。
【００３６】
図６は、２値化部２１０により図２に示す画像から生成された２値画像データ２３Ａが表す画像の例を示す図である。２値化部２１０の処理により単に閾値で２値化して陰影部領域を検出しようとすると、非常に小さな領域までも検出してしまい、検出された陰影部領域がノイズとなり見にくい画像となってしまう。例えば、この図に示すように、道路の境界線の一部あるいはビルの屋上の境界線の一部というような小さな画像部分も検出されている。このような画像部分は、元の地理画像中の、陰影部以外の明るい領域に存在した部分的に暗い部分である。これらは、陰影部を示す画像部分ではなく、これらが陰影部領域内にあると、陰影部領域から見ると、これらの画像部分はノイズである。更に、陰影部内に明るい小さな物体が存在したときに、明るい小さな画像が検出されることがある。このような画像は、本来は陰影部領域として検出されるべきであるが、非陰影部領域として検出されるので、陰影部領域からみると、ノイズ部分である。あるいは陰影部領域の境界がギザギザになる場合もある。
【００３７】
ノイズ除去部２２０（図５）は、このような、陰影部ではないと考えられる、黒い小さい画像、細い線、あるいは逆に陰影部として検出されるべき明るい小さい画像あるいは輪郭のギザギザ等をノイズとして除去する。同様に、ノイズ除去部２２０は、非陰影部ではないと考えられる、白い小さい画像、細い線等をノイズとして除去する。ノイズ除去には、膨張収縮処理やラベリング処理による小面積除去処理などが知られている（例えば、非特許文献２参照）。
【００３８】
図７は、ノイズ除去部２２０の処理の一例を示す概略フローチャートである。まず、２値画像データ２３Ａを読み込み（ステップＳ２２１）、膨張収縮回数α、小面積サイズβを利用者により入力装置３１から入力させる（ステップＳ２２２）。つぎに非陰影部領域に関して、膨張→収縮→収縮→膨張の順番でそれぞれ1画素分ずつα回行う。すなわち、非陰影部領域を膨張又は収縮するように、α回膨張処理（ステップＳ２２３）、α回収縮処理（ステップＳ２２４）、α回収縮処理（ステップＳ２２５） α回膨張処理（ステップＳ２２６）を実行する。以上の処理を行うことで２値画像データ２３Ａから、ノイズとなる細長い黒色又は白色の領域が消え、また、ギザギザの輪郭が滑らかな輪郭になる。αとしては例えば値２を使用することができる。図７に示したように、膨張処理の総回数（今の場合は４）と収縮処理の総回数（今の場合は４）は同じであることが必要である。ノイズ除去部２２０は、つぎに面積がβ以下の領域を除去するための処理を行い微小領域を除去する。すなわち、β以下のサイズの黒領域を白領域に変換し（ステップＳ２２７）、β以下の白領域を黒領域に変換する（ステップＳ２２８）。βとしては、例えば８００画素を使用することができる。本実施の形態では、黒領域を白領域に変換する処理（ステップＳ２２７）の後に白領域を黒領域に変換する処理（ステップＳ２２８）を行ったが、順番を逆にしてもよい。以上の処理結果を陰影部領域データ２３Ｂとして記憶装置２０に保存する（ステップＳ２２９）。
【００３９】
以上においては、膨張収縮処理は非陰影部領域に関して行うとしたが、そのようにすると、目視したときに陰影部と見える領域内の画素は陰影部領域に属する画素として検出されないことが生じるが、目視したときに非陰影部と見える領域内の画素は、非陰影部領域に属する画素として検出されないことは少ない。このため、画像内の明るい部分が明瞭に見え、画像が鮮明に見える。逆に、膨張収縮処理を陰影部領域に関して行う、すなわち陰影部領域を膨張及び収縮するように上記膨張収縮処理を行うと、逆の現象が起きて、目視したときに非陰影部領域に属すると見える画素が、陰影部領域に属する画素であると検出される場合が生じ、上記の実施の形態の場合と比べて画像が不鮮明に見える。
【００４０】
膨張収縮の順序は、図７に示されたように、膨張を先に行うほうがよい。そうすると、目視して陰影部領域に属すると見える画素の一部がまちがって非陰影部領域に属する画素であると検出されることが起きるが、逆に、目視して非陰影部領域に属すると見える画素はほぼ確実に非陰影部領域に属する画素であると検出される。このような処理をした後の画像は、非陰影部は明確に見えるので、利用者から見ると、画像としては見やすく、鮮明に見えることになる。膨張と収縮の順序を図７の場合と逆の順序で行うと、目視して陰影部領域に属すると見える画素はほとんどそのまま陰影部領域に属する画素として検出されるが、目視して非陰影部領域に属すると見える画素の一部がまちがって陰影部領域に属する画素として検出されることが起きる。このように収縮処理を先に行って得られる場合よりも前者のように膨張を先に実施するほうが、得られる画像は画像全体としては利用者にとっては見やすい画像になる。
【００４１】
βの値は、非陰影部領域と陰影部領域で異なる値にすることが望ましい場合もある。例えば、非陰影部領域ではβ＝５００画素、陰影部領域ではβ＝１５００画素とする。このように、陰影部領域でのβを非陰影部領域でのβより大きくする（例えば２〜３倍にする）と、陰影部領域では、非陰影部領域に比べて比較的大きなゴミと思われる領域を除去することができ、利用者から見ると処理後の画像はノイズが少ないと見える利点がある。一方、非陰影部領域では、陰影部領域では除去されるような比較的大きな領域も削除されないので、非陰影部では画像の解像度が高く見えることになり、利用者にとってはより鮮明な画像に見えるという利点がある。
【００４２】
陰影部領域データ２３Ｂの各画素は、改善対象明度データ２２の一つの画素に対応していて、改善対象明度データ２２内の対応する画素が陰影部領域内に位置しているか否かを示す２値の画像データである。陰影部領域データ２３Ｂの各画素の値は、陰影部が存在する領域内では１であり、それ以外の領域内では０であるが、陰影部領域データ２３Ｂの画素の値は、これらとは逆の値を持つように定めてもよい。
【００４３】
図８は、ノイズ除去部２２０の処理の後に得られる陰影部領域データ２３Ｂが表す、陰影部領域の例を示す図である。黒色で示された領域がその領域である。図から分かるように、ビルなどの比較的大きな陰影部だけが示され、図６に含まれたノイズ部分は、除去されている。本発明では、陰影部のコントラストを改善するために陰影部領域に対して明度変換を行う。明度変換を行うのは、図２の画像のうち、図８の黒色で示された陰影部領域に含まれた画素に対してである。
【００４４】
図１に戻り、プログラム４０は、つぎに陰影部領域明度変換部３００を実行する。陰影部領域明度変換部３００は、陰影部領域ヒストグラム検出部６００を実行する。陰影部領域ヒストグラム検出部６００は、陰影部領域内にある複数の画素についての明度ヒストグラムを検出し、検出されたヒストグラムを表す実ヒストグラムデータ２４Ａを記憶装置２０に記憶する。なお、画像内の画素のうち陰影部領域に属さない画素は、本実施の形態では処理されない。非陰影部は太陽光が照射されている箇所であるため既に見やすい画像であるためである。本実施の形態では、陰影部領域にだけ明度変換を行うことにより処理時間も短縮できる。
【００４５】
陰影部領域明度変換部３００は、つぎに目標ヒストグラム生成部７００を実行する。目標ヒストグラム生成部７００は、陰影部領域に属する画素のコントラストを改良した後の目標ヒストグラムを決定し、決定された目標ヒストグラムを表す目標ヒストグラムデータ２４Ｂを生成して記憶装置２０に格納する。図９は、目標ヒストグラム生成部７００の処理の概要を説明するための図である。同図（ａ）において、ｆ(ｉ)は、実ヒストグラムデータ２４Ａが表すヒストグラムを模式的に表す関数であり、明度ｉを有する画素数を示す関数である。図において、Ａはヒストグラムの下側領域、Ｂは中央領域、Ｃは上側領域を示す。
【００４６】
本実施の形態では、実ヒストグラムの中央領域Ｂを、同図（ｂ）に示すように、画像が取りうる最小明度０から最大明度ＭＡＸまでの範囲の明度を有するように拡大されたヒストグラムｇ（ｉ）に変換する。このとき、同（ａ）に示すヒストグラムの下側領域Ａと上側領域Ｃに属する明度を有する複数の画素は、従来技術によれば、同図（ｂ）に示すように、明度０又はＭＡＸにそれぞれ変換される。このままなら、条件ｉ≦ａ＋１を満たす明度ｉは処理後に明度が０となり、つぶれという現象が起きる。また、条件ｂ−１≦ｉとなる明度ｉは処理後に明度がＭＡＸとなり、白とびという現象が起きる。白とびやつぶれが起きるとその部分の情報が失われるという問題がある。このような問題をなくすために、本実施の形態では、それらの領域を組合せ、それらの組み合わされた領域の画素に関する、同図（ｃ）に示すように、最小明度０から最大明度ＭＡＸの範囲に画素が分布するヒストグラム（本明細書では、このヒストグラムを組合せヒストグラムと呼んでいる）に変換し、上記拡大されたヒストグラムｇ(ｉ)と上記組合せヒストグラムとを合成して、目標ヒストグラムｈ(ｉ)を生成する。本実施の形態では、上記組合せヒストグラムの例として、同図（ｃ）に示すように、最小明度０から最大明度ＭＡＸの範囲で画素数がほぼ一様であるヒストグラムを使用している。
【００４７】
これにより、同図（ａ）に示すヒストグラムの中央領域Ｂが最小明度０から最大明度ＭＡＸまでの最大範囲に拡大され、このときに変換されなかった同図（ａ）の下側領域Ｂと上側領域Ｃに属する画素が、無視されることなく、同図（ｃ）に示すように、組み合わされて最小明度０から最大明度ＭＡＸの範囲に画素が分布する組合せヒストグラムに属するように、目標ヒストグラムｈ(ｉ)が決定される。本発明では、このように元のヒストグラムの下側領域Ａと上側領域Ｃに属する画素を切り出し、同図（ｃ）に示すように最小明度０から最大明度ＭＡＸの範囲に画素が分布する組合せヒストグラムに属させることをクリッピングと呼ぶことがある。上記下側領域Ａの明度限界値と上記上側領域Ｃの明度限界値をそれぞれ下側限界値又は上側限界値と呼ぶことがあり、あるいはそれぞれの限界値を下側クリッピング値及び上側クリッピング値と呼ぶことがある。目標ヒストグラム生成部７００の処理の詳細は後に説明する。
【００４８】
図１に戻り、陰影部領域明度変換部３００は、つぎに明度変換部８００を実行する。明度変換部８００は、まず明度変換データ２５を生成する。この明度変換データ２５は、改善対象明度データ２２の画像の陰影部領域の画素の明度のヒストグラムが目標ヒストグラムデータ２４Ｂが示すヒストグラムを有する画像に変換するためのデータであり、この明度変換データ２５は、実ヒストグラムデータ２４Ａと目標ヒストグラムデータ２４Ｂとに基づいて生成される。明度変換部８００は、つぎに改善対象明度データ２２の陰影部領域に対して明度変換を明度変換データ２５に基づいて実行し、明度ヒストグラムが図９（ｃ）に例示された目標ヒストグラムにほぼ等しくなるように、陰影部領域の画素の明度を変換してコントラスト改善後明度データ２６を生成し、記憶装置２０に記憶する。明度変換部８００の処理の詳細は後に説明する。
【００４９】
明度変換部８００は、改善対象明度データ２２内の画素の明度を更新する代わりに、当該改善対象明度データ２２をコピーしたコピー画像データ（図示せず）を記憶装置２０に記憶し、このコピー画像データ内の陰影部領域に属する画素の明度の変換後の値を決定し、その画素の明度を決定された変換後の明度で置換すればよい。それにより、陰影部領域の明度が変換された画像データ（コントラスト改善後明度データ）を元の改善対象明度データ２２とは別に生成することができる。あるいは、元の改善対象明度データ２２のコピー画像データを生成して記憶装置２０に記憶して、上記明度変換を元の改善対象明度データ２２内の陰影部領域に対して実行してもよい。
【００５０】
いずれの方法でも、元の改善対象明度データ２２と同じ内容の画像データと、元の改善対象明度データ２２内の陰影部領域の明度が更新された画像データを得ることができる。あるいは同じ結果データが得られるならば、他の方法でもよい。したがって、明度変換部８００の実行はいずれの方法を使用してもよいので、本明細書では、改善対象明度データ２２のコピー画像データを更新する場合も、説明の簡単化のためと分かりやすさのために元の改善対象明度データ２２を更新すると呼ぶ場合があるが、その場合でも、その更新処理は、改善対象明度データ２２のコピー画像を更新する場合も含むものである。
【００５１】
図１０は、図２に示す改善対象明度データ２２を陰影部領域明度変換部３００により明度変換して得られるコントラスト改善後明度データ２６が表す画像の例を示す図である。陰影部領域の明度を変換したため、陰影部領域のコントラストが元の改善対象明度データ２２（図２）より改善されており、その視認性が高まっている。例えば、画面ほぼ中央でやや右上がり方向に延びる道路及び右下がり方向にに延びる道路のうち陰影部内にある部分でも、自動車を示す白いスポット画像が見ることができる。
【００５２】
しかし、いくつかの箇所で、明度の変化が不自然になっている。以下にいくつかの不自然な領域の例を説明する。
（ケース１）領域１０ａ、１０ｂ、１０ｃで例示される、陰影部領域と非陰影部領域の境界に沿って帯状に延びている領域では明度が急激に高くなっており、その近傍の明度に比べると明度が不連続になっている。
（ケース２）領域１０ｄは、ビルのひとつの壁面の一部を表している領域であり、元の改善対象明度データ２２（図２）では、目視したときには陰影部と見えるが、図１０では、壁面の水平方向の経路に沿っての明度は、途中で急に増大しており、その部分で明度が不連続となっている。
（ケース３）領域１０ｅは、図２からも分かるように、ビルの屋上の一部に他のビルの影が投影されている領域であるが、図１０では、この領域１０ｅには、ビルの屋上の明るい領域とその領域に隣接した黒い影領域と、その下方に位置する白い領域が含まれている。これらの黒い領域とその下方の白い領域との間では明度が不連続となっている。図２を参照すると、この領域１０ｅ内の上記黒い領域とそれに隣接する下方の領域は、領域１０ｄと同じく、ほぼ明度が連続している同じ陰影部に属する領域である。それにも拘わらず図１０では、これらの二つの領域の明度は不連続に変化している。
【００５３】
以上のような明度が不連続な領域は、陰影部領域明度変換部３００による明度変換の結果生じたものである。上記ケース１で説明した領域１０ａから１０ｃは、図２と詳細に比較すると、これらの部分は、図２では目視したときには非陰影部領域と見えるが、目視したときの陰影部領域に隣接している領域であることが分かる。すなわち、領域１０ａ等は、目視したときには非陰影部に属すると見えるが、明度が低く２値化閾値より低い領域である。改善対象明度データ２２から決定された２値化閾値が、目視したときの陰影部と目視したときの非陰影部の境界に来るとは限らないで、その境界の明度より大きくなることが起きる。この場合には、上に記載したように、目視したときの非陰影部の一部の明度が２値化の閾値より小さくなることがおきる。
【００５４】
図１１は、このような領域１０ａ等とその近傍における明度変換前の明度分布、明度変換後の明度分布及びグラデーション処理後の明度分布を模式的に示す図である。図で点線が明度変換前の明度を示し、破線が明度変換された後の明度を示す。実線は後に述べるグラデーション処理後の明度を示す。これらの線種の違いは後に述べる図１２、１３にも当てはまる。領域１０ａ等の近傍は、目視したときの非陰影部と目視したときの陰影部とが見える領域である。しかし、目視したときの非陰影部では２値化の閾値より小さい明度を持つ部分と２値化閾値より大きい明度を持つ部分とが含まれている。目視したときの非陰影部領域のうち、２値化のための閾値より明度が低い領域があると、その領域は陰影部領域に属する領域として検出される。目視したときの非陰影部領域内のその他の領域は非陰影部領域として検出される。
【００５５】
領域１０ａ等は、前者の領域である。このような領域は、陰影部領域明度変換部３００による明度変換を受け、その結果、２値化閾値に近い明度を有する画素の明度は、図９（ｃ）に示されたように大きい値の明度に変換される。このため、領域１０ａ等のような領域の明度は明度変換後に非常に大きくなる。近傍の、目視したときに非陰影部と見え、実際の明度が２値化閾値より大きいために非陰影部領域として検出される領域の明度は、明度変換を受けない。したがって、領域１０ａ等の領域の明度は、近傍の目視したときに非陰影部と見える領域の明度よりも大きくなり、これが原因となって、領域１０ａ等の明度が極端に大きくなる領域が発生し、目視したときには明度の不連続が発生しているように見える。
【００５６】
図１２は、上記ケース２で説明した図１０内の領域１０ｄが含まれるビルの壁面上での図のほぼ水平方向の経路に沿っての明度変換前の明度分布、明度変換後の明度分布及びグラデーション処理後の明度分布を模式的に示す図である。領域１０ｄが含まれるビルの壁面では、明度変換前は、目視したときには図２では壁面全体が陰影部と見える。しかし、目視したときの陰影部でも明度が場所により異なり２値化の閾値より小さい明度を持つ部分と２値化閾値より大きい明度を持つ部分とが含まれている。改善対象明度データ２２から決定された２値化の閾値が、目視したときの陰影部と目視したときの非陰影部の境界に来るとは限らないで、目視した陰影部の明度分布の範囲の中に含まれることが起きる。したがって、上のような二つの部分が目視したときの陰影部に含まれることが起きる。陰影部領域のうち、２値化のための閾値より明度が低い領域があると、その領域は陰影部領域に属する領域として検出される。目視したときの陰影部領域内のうち、閾値より高い領域は非陰影部領域として検出される。
【００５７】
領域１０ｄでは、両方の領域が含まれている。前者の領域は、先の領域１０ａ等と同じく、陰影部領域明度変換部３００による明度変換を受け、その結果、２値化閾値に近い明度を有する画素の明度は、図９（ｃ）に示されたように大きな値の明度に変換される。このため、領域１０ｄのような領域のうち、閾値より明度が低い領域の明度は明度変換後に非常に大きくなる。近傍の、目視したときの陰影部と見え、実際の明度が２値化閾値より大きいために非陰影部領域として検出される領域の明度は、明度変換を受けない。したがって、領域１０ｄのうち、閾値より低く閾値に近い領域の明度は、近傍の目視したときに陰影部と見えるが、閾値より高い明度を有する近傍の領域の明度よりもはるかに大きくなり、これが原因となって、領域１０ｄの一部では明度が極端に大きくなり、目視したときには明度の不連続が発生しているように見える。
【００５８】
図１３は、上記ケース３で説明した図１０の領域１０ｅが含まれるビルの屋上における、図のほぼ垂直方向の経路に沿っての明度変換前の明度分布、明度変換後の明度分布及びグラデーション処理後の明度分布を模式的に示す図である。領域１０ｅが含まれるビルの屋上では、明度変換前は、目視したときには明らかに非陰影部と見える領域と、陰影部と見える領域とがある。しかし、領域１０ｄの場合に説明したように、目視したときの陰影部でも明度が場所により異なり、２値化の閾値より小さい明度を持つ部分と２値化閾値より大きい明度を持つ部分とが含まれている。このような二つの部分が目視したときの陰影部に含まれることが起きる理由は、領域１０ｄについて説明したのと同じ理由である。
【００５９】
目視したときの陰影部領域のうち、２値化のための閾値より明度が低い領域があると、その領域は陰影部領域に属する領域として検出される。目視したときの陰影部領域内のうち、閾値より高い領域は非陰影部領域として検出される。したがって、領域１０ｅでは、明るい非陰影部領域（第１の領域）と、その領域に隣接して、目視したときに陰影部と見えるが、明度が閾値より高く、非陰影部領域として検出される領域（第２の領域）と、目視したときに陰影部と見え、かつ、明度が閾値より低く閾値に近く陰影部領域として検出される領域（第３の領域）という３つの領域がある。第３の領域の明度は明度変換により高くなり、上記第２の領域よりも明度が高くなり、第２の領域と第３の領域の間で明度が不連続となる。
【００６０】
以上に説明したように、陰影部領域明度変換部３００により陰影部領域に対してコントラスト改善のための明度変換を行うと、陰影部領域のコントラストが改善され、その視認性が向上するが、反面一部の領域１０ａ〜１０ｅ等において、明度の不連続が発生する。既に説明したように、そのような明度の不連続は、２値化閾値より低いために、陰影部領域検出部２００により陰影部領域として検出されるが、その明度がその閾値に近いために、陰影部領域明度変換部３００による明度変換により、非常に大きな明度に変換されることによることが判明した。
【００６１】
閾値より低く閾値に近い明度を有する画素は、検出された陰影部領域に属し、検出された非陰影部領域に隣接する領域（本明細書では境界隣接領域と呼ぶ）にある画素である。本実施の形態では、上記明度変換後の明度の不連続を低減するために、閾値より低く閾値に近い明度を有する画素の明度を明度変換後の明度に変更しないで、境界から陰影部領域の内部に向かうに連れて漸次明度変換後の明度に近づく値を有する、更に改善された明度に変換する処理（グラデーション処理と呼ぶ）を実行する。
【００６２】
図１に戻り、プログラム４０は、つぎにグラデーション処理部４００を実行する。グラデーション処理部４００は、まずグラデーション領域決定部９００を実行する。グラデーション領域決定部９００は、陰影部領域データ２３Ｂに基づいて、グラデーション領域データ２７を生成する。グラデーション領域データ２７は、グラデーション処理を実行する、境界隣接領域内の複数のグラデーション領域を指定するデータである。
【００６３】
図１４は、複数のグラデーション領域とグラデーション領域データ２７を説明するための図である。同図（ａ）は、陰影部領域データ２３Ｂの値を示す図である。図では、陰影部領域データ２３Ｂを、改善対象明度データ２２上の画素の座標ｘ、ｙと同じ座標位置における陰影部領域データ２３Ｂの値を表すデータＳ（ｘ，ｙ）でもって表している。本実施の形態では、陰影部領域データＳ（ｘ，ｙ）（２３Ｂ）は、陰影部領域２３１内では値１を有し、非陰影部領域２３２内では値０を有する。同図（ｂ）は、グラデーション領域データ２７を模式的に示す図である。図ではグラデーション領域データ２７を、同様に座標ｘ、ｙの画素位置に対するグラデーション領域データの値を表すデータＧ（ｘ，ｙ）でもって表している。図に示されるように、陰影部領域２３１内の、非陰影部領域２３２に隣接する境界隣接領域２７０に複数のグラデーション領域２７１から２７４が設けられている。本実施の形態では、グラデーション段階数Ｇｎｕｍを４と仮定している。本実施の形態ではグラデーション段階数Ｇｎｕｍはユーザが指定可能になっている。境界隣接領域２７０に設定されるグラデーション領域の数は、グラデーション段階数に等しい。
【００６４】
本実施の形態では複数のグラデーション領域２７１から２７４は、陰影部領域２３１に対して１画素分の収縮処理を繰り返し実行することにより生成される。各グラデーション領域２７１から２７４に対しては、重みとして順次、１／（Ｇｎｕｍ＋１）＝ 0.2ずつ大きくなる値0.2〜0.8が割り当てられ、これらの重みが、グラデーション領域２７１から２７４のそれぞれ内の画素に対応するグラデーション領域データＧ（ｘ，ｙ）（２７）内の画素に格納される。したがって、グラデーション領域データＧ（ｘ，ｙ）（２７）は、改善対象明度データ２２の各画素に対応して、このような重みデータ以外に重みデータを識別可能にするデータを保持するようにしてもよい。例えば、重み0.2、0.4等に順に番号２、３、…というように番号を与えて、各グラデーション領域データＧ（ｘ，ｙ）（２７）には、この番号を記憶するようにしてもよい。このような重みを識別可能にするデータも、本発明に関しては重みを表すデータと見なす。
【００６５】
各グラデーション領域に対応した上記重みは、このようにあらかじめ決定されるが、本実施の形態では、重みはグラデーション段階数（＝グラデーション領域数）に依存して自動的に決定されるようになっている。更に、グラデーション領域データＧ（ｘ，ｙ）（２７）は、いずれかのグラデーション領域に属する画素に対応して、そのグラデーション領域に対して決定された重みを表すデータを保持することにより、その画素がグラデーション領域に属する画素であることを示すとともに、そのグラデーション領域に対する重みも表している。
【００６６】
図１５は、陰影部領域データ２３Ｂが示す陰影部領域（図８）に対して決定された複数のグラデーション領域の存在範囲を示す図である。図において、灰色で示された領域が複数のグラデーション領域を含む境界隣接領域の存在範囲を示す。
【００６７】
図１６は、グラデーション領域決定部９００の処理の一例の概略フローチャートである。グラデーション領域決定部９００は、まず、ステップＳ９０１で、使用するグラデーション段階数Ｇｎｕｍを入力装置３１からユーザに入力させる。つぎに、ステップＳ９０２で、陰影部領域データＳ（ｘ，ｙ）を作業用データＴ（ｘ，ｙ）とグラデーション領域データＧ（ｘ，ｙ）にコピーする。作業用データＴ（ｘ，ｙ）は、改善対象明度データ２２の各画素（ｘ，ｙ）の位置に対応した陰影部領域データＳ（ｘ，ｙ）の画素の２値のデータを収容可能なデータである。この時点では、グラデーション領域データＧ（ｘ，ｙ）（２７）と作業用データＴ（ｘ，ｙ）は、図１４（ａ）に示される陰影部領域データＳ（ｘ，ｙ）（２３）と同じデータとなる。
【００６８】
つぎにステップＳ９０３でカウンタｉを１に初期化する。つぎにステップＳ９０４で作業用データＴ（ｘ，ｙ）に対して収縮処理を行う。これは、検出された陰影部領域２３１（図１４（ａ））に対して収縮処理を行うのと同じである。収縮処理の結果、陰影部領域２３１に含まれなくなった画素が構成する領域が第１のグラデーション領域２７１として使用される。したがって、ステップＳ９０５において、収縮処理により作業用データＴ（ｘ，ｙ）の値が１から０に変化した画素に対応するグラデーション領域データＧ（ｘ，ｙ）（２７）内の、グラデーション領域２７１に属する画素に、重みとして値ｉ／（Ｇｎｕｍ＋１）（今の段階では0.2 ）を格納する。
【００６９】
ステップＳ９０６でカウンタｉをインクリメントする。ステップＳ９０７でｉ＞Ｇｎｕｍか否かを判断し、そうならば、グラデーション領域決定部９００の処理を終了し、そうでないならステップＳ９０４に戻り、そのステップ以降の処理を繰り返す。すなわち、作業用データＴ（ｘ，ｙ）を更に１画素分収縮する処理を実行し、順次グラデーション領域２７２から２７４を決定し、それぞれに属する画素に重み0.4 、0.6 、0.8 を順次格納する。こうして、グラデーション領域データＳ（ｘ，ｙ）（２７）内の、グラデーション領域２７１から２７４のそれぞれに属する複数の画素に０でない重みが格納されて、グラデーション領域決定部９００の処理が終了する。
【００７０】
以上から分かるように、複数のグラデーション領域内の画素に対する重みは、画素の位置が非陰影領域と陰影領域との境界に隣接する領域では一番小さく、画素の位置が非陰影領域と陰影領域との境界から陰影領域内部に行くほど大きくなるように決定されている。なお、以上においては、陰影部領域の最も外側の領域である第１のグラデーション領域２７１に対する重みは０でない値としたが、グラデーション領域の数を一つ増やし、第１のグラデーション領域の重みを０にして、その後第２のグラデーション領域２７２以降の重みを順次、0.2 、0.4 、…としてもよい。この場合には、第１のグラデーション領域２７１では、後に説明するように、改善対象明度データ２２の画像がそのまま使用されることになる。
【００７１】
図１に戻り、グラデーション処理部４００は、その後、グラデーション処理実行部９５０を実行する。グラデーション処理実行部９５０は、検出された陰影部領域と非陰影部領域の境界部分の明度の不連続さを緩和し、境界における画像を滑らかにするための処理としてグラデーション処理を実行する。グラデーション処理実行部９５０は、コントラスト改善後明度データ２６をコピーしたコピー画像データ（図示せず）を記憶装置２０に記憶し、先に生成されたグラデーション領域データ２７を用いて、このコピー画像データ内のグラデーション領域内に属する画素の明度の変換後の値を決定して、その決定された変換後の明度でもってそのコピー画像データのその画素の明度を更新してグラデーション処理後明度データ２８として記憶装置２０に記憶する。
【００７２】
グラデーション処理実行部９５０は、改善対象明度データ２２の座標(ｘ，ｙ)における明度をIo(ｘ，ｙ)、コントラスト改善後明度データ２６の座標（ｘ，ｙ）における明度をIc(ｘ，ｙ)、グラデーション処理により得られるグラデーション処理後明度データ２８の座標(x，y)における明度をＩg(ｘ，ｙ)とすると、次式１に従い、グラデーション処理後明度データIg(ｘ，ｙ)（２８）を決定する。
【００７３】
Ig(ｘ，ｙ) = Ic(ｘ，ｙ)×Ｇ(ｘ，ｙ)＋Io(ｘ，ｙ)×{1−Ｇ(ｘ，ｙ)}    （１）
すなわち、重みＧ(ｘ，ｙ)が０である、非陰影部領域の画素に対しては、グラデーション処理後明度データIg(ｘ，ｙ)（２８）は、改善対象明度データIo(ｘ，ｙ)(２２)に等しくなり、重みＧ(ｘ，ｙ)が１である、陰影部領域の画素に対しては、グラデーション処理後明度データIg(ｘ，ｙ)（２８）は、コントラスト改善後明度データIc(ｘ，ｙ)（２６）に等しくなる。重みＧ(ｘ，ｙ)が０と１の間であるグラデーション領域内の画素に対しては、改善対象明度データIo(ｘ，ｙ)(２２)とコントラスト改善後明度データIc(ｘ，ｙ)（２６）とをそれぞれ重み（１−Ｇ（ｘ，ｙ））と重みＧ（ｘ，ｙ）とを用いて加算してグラデーション処理後明度データIg(ｘ，ｙ)（２８）が決定されている。
【００７４】
境界隣接領域２７０内の画素に対する重みは、当該画素が非陰影領域と陰影領域との境界から陰影領域内部に行くほど重みが大きくなるように決定されるので、境界隣接領域２７０内の画素に対するグラデーション処理後明度データIg(ｘ，ｙ)（２８）は、画素が上記境界に近いときには、改善対象明度データIo(ｘ，ｙ)(２２)に近くなり、画素が陰影領域内部に行くにしたがって、コントラスト改善後明度データIc(ｘ，ｙ)（２６）に近づくことになる。したがって、陰影部領域内にあり上記境界に近い画素に対して、グラデーション処理後明度データIg(ｘ，ｙ)（２８）は急激に変化することはなく、明度の不連続さが小さくなる。
【００７５】
図１７は、グラデーション処理を実行した結果得られるグラデーション処理後明度データ２８が表す明度画像の例を示す図である。この画像は、図２に例示した明度画像を表す改善対象明度データ２２から生成された、コントラストが改善された明度画像（図１０）を表すコントラスト改善後明度データ２６に基づいて生成されたグラデーション処理後明度データ２８が表す明度画像である。この図には、図１０に例示したような、明度が不連続となる領域が存在していない。すなわち、図１０に陰影部領域として検出された領域１０ａ、１０ｂ、１０ｃのような、陰影部と非陰影部との境界に位置する領域での明度の不連続はなくなり、領域１０ｄ、１０ｅのような目視したときに一つの陰影部と見える領域内における、２値化閾値より高い明度の部分と２値化閾値より低い明度の部分との間の明度の不連続はほぼ解消されている。このように、グラデーション処理を実行することにより境界での明度の変化は滑らかになり、不自然さは緩和される。
【００７６】
例えば図１０内の領域１０ａ、１０ｂ、１０ｃに関しては、図１１に示したように、目視したときに非陰影部と見えるが２値化閾値より小さい明度を有するために、陰影部に属すると検出された領域のグラデーション処理後の明度は、目視したときの隣接する非陰影部の明度に近い明度から、隣接する目視したときに陰影部と見え、２値化閾値より小さいために陰影部領域明度変換部３００により明度変換を受けた後の明度に近い明度までの範囲で変化している。したがって、陰影部領域明度変換部３００により生じた明度が急に変化するという現象がグラデーション処理後に解消されていることが分かる。更に、グラデーション処理を行っても、もともとある陰影部分と日向の部分との明度差は残る。しかし、人にはもともと存在する陰影と日向の部分との境界は自然に見えるため問題はない。
【００７７】
より具体的には、図１０内の領域１０ｄに関しては、図１２に示したように、この領域は、目視したときに非陰影部と見えるが、２値化閾値より少し大きい明度を有するために、非陰影部に属すると検出され、陰影部領域明度変換部３００による明度変換を受けない領域と、隣接する目視したときに陰影部と見え、２値化閾値より小さい明度を有するために、陰影部領域として検出され、陰影部領域明度変換部３００により明度変換を受ける領域とが含まれている。後者の領域では、グラデーション処理後の明度は、隣接する目視したときに陰影部と見えるが、２値化閾値より大きいために陰影部領域明度変換部３００による明度変換を受けない明度に近い明度から、目視したときに陰影部と見え、明度が閾値より小さいために明度変換を受けた後の明度に近い明度まで変化している。したがって、陰影部領域明度変換部３００により生じた明度が急に変化するという現象がグラデーション処理後に解消されることが分かる。
【００７８】
同様に、図１０内の領域１０ｅに関しては、図１３に示したように、この領域は、目視したときに陰影部と見える領域と、目視したときに非陰影部と見える領域とが隣接していているが、目視したときに陰影部と見える領域には、２値化閾値より少し大きい明度を有するために非陰影部に属すると検出され、陰影部領域明度変換部３００による明度変換を受けない領域と、隣接する目視したときに陰影部と見え、２値化閾値より小さい明度を有するために陰影部領域として検出され、陰影部領域明度変換部３００による明度変換を受ける領域とが含まれている。後者の領域では、グラデーション処理後の明度は、領域１０ｄの場合と同じく、隣接する目視したときに陰影部と見えるが、２値化閾値より大きいために陰影部領域明度変換部３００による明度変換を受けない明度に近い明度から、目視したときに陰影部と見え、明度が閾値より小さいために明度変換を受けた後の明度に近い明度まで変化している。したがって、陰影部領域明度変換部３００により生じた明度が急に変化するという現象がグラデーション処理後に解消されることが分かる。
【００７９】
なお、グラデーション段階数が少ないと、陰影部領域の明度変換の結果、明度が急上昇した部分の一部のみでしか明度の急激な変化が抑えられず、明度の急激な変化を抑えきれない部分が残ることになる。したがって、グラデーション段階数はある程度の大きさを有する必要がある。しかし、グラデーション段階数を多くすると、次のような現象が発生し、問題になることがある。(ａ) 影の端が暗いままとなり、その部分が目立ち、画像が見づらくなる。この現象の影響は、小さめの影ほど強くなる。(ｂ) 複数のグラデーション領域は、図１５に示されたように、非陰影部領域を縁取りするように位置する。グラデーション段階数が多いと、この縁取り部分が太くなり、画像が縁取りにより不自然に見える。以上から、グラデーション段階数は多すぎず少なすぎないことが重要であり、試行錯誤の結果４〜６程度がよいことが判明した。そこで、本実施の形態ではグラデーション段階数Ｇｎｕｍを４とした。
【００８０】
図１に戻ると、プログラム４０は、つぎにカラー形式逆変換部５００を実行する。この処理では、グラデーション処理後明度データ２８と彩度データ２２Ａと色相データ２２Ｂを用いて、ＨＩＳ→ＲＧＢ変換を行い、ＲＧＢモデルの改善後カラー画像データ２９を生成して記憶装置２０に格納する。なお、ＨＩＳ→ＲＧＢ変換のアルゴリズムについては、例えば前述の参考文献を参照。
【００８１】
以下においては、陰影部領域の明度のコントラストを改善するのに好適な陰影部領域明度変換部３００の処理を説明する。陰影部領域明度変換部３００は、既に説明したように、まず陰影部領域ヒストグラム検出部６００により、改善対象明度データ２２のうち、陰影部領域データ２３Ｂが示す陰影部領域内の画素に関する実ヒストグラムデータ２４Ａを生成した後に、目標ヒストグラム生成部７００が目標ヒストグラムデータ２４Ｂを決定する。
【００８２】
図１８は、目標ヒストグラム生成部７００の概略フローチャートである。目標ヒストグラム生成部７００は、中央領域決定部７１０と、中央領域拡大部７２０と、上下側領域拡大部７３０という複数のモジュールを含み、これらのモジュールをこの順に順次実行する。目標ヒストグラム生成部７００は、まず中央領域決定部７１０を実行する。
【００８３】
図１９は、中央領域決定部７１０の処理の一例の概略フローチャートである。本実施の形態では、改善対象明度データ２２内に存在する陰影部領域に属する画素の総数Ｎｓに対して一定の比率Ｒを有する、明度が小さい側の画素の集合を下側領域Ａとし、当該陰影部領域内総画素数Ｎｓに対して一定の比率Ｒを有する、明度が大きい側の画素の集合を上側領域Ｃと定める。一定の比率Ｒは、利用者にあらかじめ指定させておく。
【００８４】
図１９において、まず、明度値ｎを初期値０に設定し（ステップＳ７１１）、得られたヒストグラムデータを表す関数ｆ(ｉ)に基づいて、最小の明度値０から明度値ｎ迄の画素数の累積値が上記陰影部領域内総画素数Ｎｓと一定の比率Ｒとの積Ｎｓ×Ｒを越えたか否かを判定し（ステップＳ７１２）、越えていないときには、明度値ｎを値１だけ増大する（ステップＳ７１３）ことを繰り返し、ステップＳ７１２において、初めて画素数の積算値が上記積を越えたと判断されたときに、そのときの明度値ｎの値を、ヒストグラム下限領域Ａの上限明度ａに設定する（ステップＳ７１４）。中央領域Ｂの下限明度はａ＋１になる。
【００８５】
その後ステップＳ７１５において、明度値ｎの値を１だけ増やして、最小の明度値０から明度値ｎまでの値に対する画素数の累積値が陰影部領域内総画素数Ｎｓと（１−Ｒ）との積にＮｓ×（１−Ｒ）を初めて越えるとステップＳ７１６で判定されるまで、明度値ｎを値１増大することを繰り返し（ステップＳ７１７）、上記累積値が初めて上記積を越えたときに、そのときの明度値ｎより１小さい値をヒストグラムの上側領域Ｃの下限明度ｂとする（ステップＳ７１８）。中央領域Ｂの上限はｂ−１となる。
【００８６】
これにより、中央領域Ｂとして、明度ａ＋１からｂ−１までの明度に対するヒストグラム部分が決定される。ヒストグラムの下側領域の最大明度はａとなり、上側領域Ｃの最小明度はｂとなる。なお、以上のようにして求めた値ａ、ｂをそれぞれヒストグラムの中央領域Ｃの最小明度、最大明度としてもよいことは言うまでもない。このときには、下側領域Ａの上限明度はａ−１となり、上側領域Ｃの下限明度はｂ＋１となる。
【００８７】
こうして中央領域決定部７１０の処理が終了すると、中央領域拡大部７２０が実行される。中央領域拡大部７２０は、決定された中央領域Ｂの下限明度ａ＋１と上限明度ｂ−１とを使用して、図９（ａ）に示した中央領域Ｂに対して、図３１（ａ）に示したような線形変換を実施し、図９（ｂ）に示したように、中央領域Ｂは、最小明度０から最大明度ＭＡＸまでの拡大された明度範囲に分布する拡大ヒストグラムｇ(ｉ)に変換する。なお、ここでは、中央領域Ｂを拡大するために線形変換を使用したが、場合により非線形変換等の他の変換を使用してもよい。
【００８８】
図９（ｂ）に示したように、従来技術での線形変換では、元のヒストグラムの下側領域Ａに属する画素の明度は明度０のところに変換され、元の上側領域Ｃに属していた画素の明度は明度の最大明度ＭＡＸのところに変換されるが、本実施の形態では、これらの領域に属していた画素には上記線形変換を施さない。すなわち、図１８に戻り、目標ヒストグラム生成部７００は、中央領域拡大部７２０の実行後に上下側領域拡大部７３０を実行する。上下側領域拡大部７３０は、これらの領域Ａ、Ｃの画素を、図９（ｃ）に示したように、これらの領域Ａ、Ｃを組み合わせて最小明度から最大明度ＭＡＸまでに画素が分布する組合せヒストグラムに変換し、変換で生成される組合せヒストグラムを先に生成された拡大ヒストグラムｇ(ｉ)と合成して目標ヒストグラムｈ(ｉ)を生成する。この結果、従来技術で生じる白とびとつぶれは生じない。上記のように、上下側領域拡大部７３０による処理は、線形変換で発生するオーバーフローした画素を、線形変換後の明度のヒストグラムの下部に配置する処理であるとも言える。本明細書では、このような処理をクリッピングとも呼ぶことがある。
【００８９】
図２０は、上下側領域拡大部７３０の処理の一例の概略フローチャートである。ステップＳ７３１では、元の実ヒストグラムの下側領域Ａの画素数の累積と上側領域Ｃの画素数の累積との総和を、異なる明度の総数である（ＭＡＸ＋１）で割ることにより平均画素数ａveを計算する。この平均画素数ａveは、これらの下側領域Ａと上側領域Ｃとの組合せに対する組合せヒストグラムとして、最小明度から最大明度までの明度範囲で一様なヒストグラムを使用する場合の各明度における画素数を与えるものである。ステップＳ７３２以降では、この組合せヒストグラムと、先に線形変換で得られた拡大されたヒストグラムｇ(ｉ)とを合成して目標ヒストグラムｈ(ｉ)を生成するようになっている。
【００９０】
まず、ステップＳ７３２では、明度ｉを最小値０に設定する。その後ステップＳ７３３で、明度ｉに対して拡大されたヒストグラムｇ(ｉ)と平均画素数ａverとを加算して、合成後のヒストグラムを表す関数ｈ(ｉ)を計算する。その後ステップＳ７３３で明度ｉを１だけ増大して、明度が最大明度ＭＡＸを超えない範囲でステップＳ７３４の計算を繰り返す。こうして、先に得られた拡大されたヒストグラムと上記組合せヒストグラムを合成したヒストグラムｈ(ｉ)が得られ、このヒストグラムｈ(ｉ)が、目標ヒストグラムとして使用される。この目標ヒストグラムを表す目標ヒストグラムデータ２４Ｂが記憶装置２０に格納される。
【００９１】
なお、ステップＳ７３１において計算された平均画素数ａverは、一般には整数ではない。したがって、合成後の目標ヒストグラムｈ(ｉ)も整数でなくなる。しかし、ステップＳ７３３で目標ヒストグラムｈ(ｉ)を決定するときには、画素数ｈ(ｉ)を、整数となるように決定するものとする。
【００９２】
そのための一つの方法は、平均画素数ａverが整数でないときには、ステップＳ７３３において、拡大されたヒストグラムの画素数ｇ(ｉ)と平均画素数ａverを加算するときに、明度ｉに応じて加算する平均画素数ａverの値としてステップＳ７３１で計算された平均画素数ａverを越えない最大の整数と、それより１大きな整数との一組の整数を交互に選んで使用し、全ての明度ｉに対して使用した平均画素数ａverの総和が、ステップＳ７３１の平均の計算式の分子で計算された総画素数に等しくなるように、明度ｉに応じて平均画素数ａverを調整すればよい。もちろん、他の方法を使用することもできる。以下では、このようにして、目標ヒストグラムの画素数ｈ(ｉ)が整数になるように決定されるとする。
【００９３】
なお、目標ヒストグラムの画素数ｈ(ｉ)は非整数のままにして、後で明度変換するときに、上に述べたのと類似の方法を使用して、非整数の平均値ｈ(ｉ)に対して割り当てる画素の数が整数となるように、割り当てる画素数を調整してもよい。こうして目標ヒストグラム生成部７００の処理が終わる。
【００９４】
図１に戻り、プログラム４０はつぎに明度変換部８００を実行する。図２１は、明度変換部８００の概略フローチャートである。明度変換部８００は、明度変換データ生成部８１０と、明度変換実行部８３０という複数のモジュールを含み、これらのモジュールを順次実行する。明度変換部８００は、まず明度変換データ生成部８１０を実行し、明度変換データ２５を生成する。このデータは、改善対象明度データ２２の陰影部領域の画素の明度のヒストグラムが、実ヒストグラムデータ２４Ａから目標ヒストグラムデータ２４Ｂに変化するように、それらの画素の明度を変換するためのデータである。明度変換データ生成部８１０の処理の詳細を説明する前に明度変換がどのように行われるかを説明する。
【００９５】
図２２は、実ヒストグラムデータ２４Ａと目標ヒストグラムデータ２４Ｂとに基づいて行われる明度変換を説明するための図である。同図（ａ）は、陰影部領域内の画素に関する実ヒストグラムデータ２４Ａの例を示す図である。同図（ｂ）は、目標ヒストグラムデータ２４Ｂの例を示す図である。同図（ｃ）は、同図（ａ）に示す実ヒストグラムデータ２４Ａを表す関数ｆ(ｉ)のグラフを示す図である。同図（ｄ）は、同図（ｂ）に示す目標ヒストグラムデータ２４Ｂを表す関数ｈ(ｉ)のグラフを示す図である。同図（ｃ）では、同じ明度の画素に関しては、同じ斜線等の模様を用いて画素数が示されている。同図（ｄ）では、同図（ｃ）の明度が変換される前の画素に対して用いた模様が、明度が変換された後の画素にも付けられている。
【００９６】
例えば、目標ヒストグラムデータ２４Ｂの明度０には、実ヒストグラムデータ２４Ａの明度０、１のそれぞれ一つの画素と、明度２の２個の画素のうちの一つの合計３つの画素が割り当てられる。同様に、目標ヒストグラムデータ２４Ｂの明度１には、実ヒストグラムデータ２４Ａの明度２の２個の画素のうちの残りの一つと、現明度３の３つの画素のうちの２個の画素との合計３個の画素が割り当てられる。同様に、目標ヒストグラムデータ２４Ｂの明度２には、実ヒストグラムデータ２４Ａの明度３の３個の画素のうちの残りの一つと、現明度４の４つの画素のうちの３個の画素との合計４個の画素が割り当てられる。同様に、目標ヒストグラムデータ２４Ｂの明度３には、実ヒストグラムデータ２４Ａの明度４の４個の画素のうちの残りの一つと、現明度５の５つの画素のうちの４個の画素との合計５個の画素が割り当てられる。以下、同様である。
【００９７】
図２３は、図２２（ａ）と（ｂ）に示された実ヒストグラムデータ２４Ａと目標ヒストグラムデータ２４Ｂに対する明度変換データ２５の例としての明度変換テーブルの例を示す図である。以下では、明度変換テーブルも参照符号２５を引用して明度変換テーブル２５と呼ぶ場合もある。明度変換データ２５は、変換元の画素の明度ｉ（２５ａ）と、当該明度ｉを有する変換対象画素の総数ｆ(ｉ)（２５ｂ）と、当該明度ｉに対する変換先明度Ｔ(ｉ)（２５ｃ）と、同じ明度ｉに対する変換先明度Ｔ(ｉ)が複数個ある場合には、同じ明度ｉの変換対象画素の総数ｆ(ｉ)のうちそれぞれの変換先明度Ｔ(ｉ)に変換される部分変換対象画素数（２５ｄ）とを含む。
【００９８】
変換先明度Ｔ(ｉ)（２５ｃ）は、目標ヒストグラムｈ(ｉ)となるように、元画像のヒストグラムデータ２４Ａを低明度から順に足し合わせていき、明度変換する際の各画素の明度の割当てを再構成する。もちろん高明度の画素から順に割り当てるようにしてもよい。この際、同じ変換元の明度ｉに対する変換先の明度Ｔ(ｉ)（２５ｃ）が複数個ある場合には、それぞれの変換先明度毎に、その明度に変換されるべき部分変換対象画素数を決めてある。なお、元の画素の明度の変換にあたっては、明度変換対象画素の総数から、それぞれの変換先明度に変換される画素をランダムに決定する。この決定については、後に例を用いて更に詳しく説明する。
【００９９】
図２４は、明度変換データ生成部８１０の処理の一例の概略フローチャートであり、ここでは、明度変換データ２５として、図２３に例示した明度変換テーブル２５を生成する。以下では、図２２（ａ）又は（ｃ）に示した変換元の実ヒストグラムデータ２４Ａと図２２（ｂ）又は（ｄ）に示した目標ヒストグラムデータ２４Ｂとを適宜参照して、明度変換データ生成部８１０の処理を説明する。
【０１００】
明度変換データ生成部８１０は、まずステップＳ８１１で、明度ｉを０にセットし、変数HighとＬowを０にセットする。変数Highは、目標の明度ｉに割り当てる元の画像の明度の最大明度であり、変数Ｌowは、目標の明度ｉに割り当てる元の画像の明度の最小値である。ステップＳ８１２で、明度ｉが最大明度ＭＡＸ以下であるか否かを判定し、そうであれば、ステップＳ８１３にて変数Ｓumを初期値０にセットする。変数Ｓumは、目標ヒストグラムの明度ｉにおける画素数ｈ(ｉ)に対する割当て候補とされた元の画像の画素の数を表す。
【０１０１】
つぎにステップＳ８１４において変数Ｓumが、目標ヒストグラムの明度ｉにおける画素数ｈ(ｉ)より小さいか否かを判定する。すなわち、目標ヒストグラムの明度ｉにおける画素数ｈ(ｉ)より小さいときには、元の画像の明度Highの画素を割り当てられる可能性があることになる。ステップＳ８１４での判定の結果がＹｅｓであれば、ステップＳ８１５において、元の実ヒストグラムデータ２４Ａの明度Highでの画素数ｆ(High)、今の例ではｆ(０)を変数Ｓumに加算し、変数Highの値を１だけ増大する。今の例では、変数Ｓumは、ｆ(０)に等しくなり、変数Highは値１になる。その後、ステップＳ８１４以降が再度実行される。ステップＳ８１４では、ステップＳ８１５で更新された変数Ｓumの更新後の値が目標ヒストグラムデータ２４Ｂの明度ｉにおける画素数ｈ(ｉ)より小さいか否かを判定する。小さい限り、ステップＳ８１５が繰り返される。
【０１０２】
図２２（ａ）又は（ｃ）の場合には、目標ヒストグラムデータ２４Ｂの明度０における画素数ｈ(０)は３であり、元の画像の明度０、１、２における画素数はそれぞれ１、１、２であるので、Ｓumがｆ(０)（＝１）になり、変数Highが１になり、その後にＳumがｆ(０)＋ｆ(１)＝２に増大され、変数Highも値２に増大された後も、ステップＳ８１４では、Ｓumはまだ目標画素数ｈ(０)（＝３）より小さいと判断され、ステップＳ８１５で再度Ｓumに次の元の画素数ｆ(２)が加算されてＳumの値はｆ(０)＋ｆ(１)＋ｆ（２）（＝４）になり、変数Highが３に増大される。加算後のＳumの値４は、目標の画素数ｈ(０)＝３より大きくなる。このことは、目標の明度ｉ＝０に対して、元の画像の明度０、１の画素を割り付けることができるが、明度２の画素は全てを割り付けられないことを意味する。したがって、処理はステップＳ８１６に移る。そこでは、変数Highが１だけ減じられ、今の例では値２になり、差分Deltを次式２により求める。
【０１０３】
Delt＝ｆ(High)−（Ｓum−ｈ(ｉ)）    （２）
ここで、（Ｓum−ｈ(ｉ)）は、割当て候補の画素の総数Ｓumのうち、目標の画素数ｈ(ｉ)を越えた画素の総数であり、差分Deltは、割当て候補の画素のうちの最大の明度の画素数ｆ(High)のうち、上記目標の画素数ｈ(ｉ)を越えた画素の総数分だけ少ない画素の数、すなわち、画素数ｆ(High)のうち目標の明度ｉに割当て可能な画素の数を表す。例えば、図２２（ａ）又は（ｃ）の場合には、Ｓumは４であり、ｈ(０)は３であり、ｆ(２)は２であるので、上記差分Deltは１となる。すなわち、元の画像の明度２の２個の画素のうち１個は目標の明度０に割り当てられるが、残りの１個は、目標の明度０には割り当てられないことを示している。
【０１０４】
ステップＳ８１７では、変数Ｌow（今の場合には０）が変数High（今の場合は２）より小さいので、ステップＳ８１８において、変数Ｔmpが変数Ｌowの値（今の場合は０）にセットされ、ステップＳ８２０で、明度変換テーブル２５の明度Ｔmap（今の例では０）に対する変換先明度Ｔ(Ｔmap)（今の例ではＴ(０)）として明度ｉ（今の例では０）を設定する。すなわち、陰影部領域内の明度０に変換先Ｔ(０)として明度０が決定される。ステップＳ８２０が繰り返される毎に、ステップＳ８１９で変数Ｔmpが変数Highより小さいか否かが判定され、小さいときにステップＳ８２０が繰り返される。こうしてステップＳ８２０が繰り返され、変数Ｔmpを１だけ増大し、同様に元の明度１に対する変換先明度Ｔ(１)として明度０が決定される。
【０１０５】
以上により、元の画素の明度ｉが０、１のときには、変換先の明度はいずれも明度０であると決定される。このように変換元の明度に対して変換先の明度が決定された場合には、明度変換テーブル２５内の、変換元明度ｉに対応した変換先明度Ｔ(ｉ)（２５ｃ）に、当該決定された変換先の明度が格納される。ステップＳ８２０では、更に変数Ｔmpを１だけ増大する。その結果、変数Ｔmpは２になる。その後ステップＳ８１９において、変数Ｔmpが変数Highより小さくないと判断されると、処理はステップＳ８２１に移る。
【０１０６】
ステップＳ８２１では、変換元の画像の明度Highに対する画素数ｆ(High)（例えばｆ(２）（＝２））のうち、式２で計算した差分Deltの数だけの画素（今の例では１個）を目標の明度ｉに割り当てる。すなわち、この画素の対してＴ(High)＝ｉとする。すなわち、今の例では、元の明度２の画素１個に対して変換先明度Ｔ(２)＝０が決定される。元の画像の明度High（今の例では２）を有する画素の数は２であるので、目標の明度ｉ（今の例では０）に割り当てられる画素の総数（部分変換対象画素数）は１となる。この部分変換対象画素数が、明度変換テーブル２５内に、変換元の明度Highと変換先目標の明度ｉとの組に対応して部分変換対象画素数２５ｄとして格納される。以下でも部分変換対象画素数が決定されるごとに、その部分変換対象画素数が明度変換テーブル２５内に部分変換対象画素数２５ｄとして格納される。
【０１０７】
その後ステップＳ８２２では、次の式３により、元の画像の明度Highの画素の数ｆ(High)を、元の画像の明度Highの画素のうちの未割当ての画素の総数に設定しなおす。
ｆ(High)＝Ｓum−ｈ(ｉ)          （３）
【０１０８】
今の例では、この値は１に等しい。ステップＳ８２２では、更に、変数Ｌowを変数Highの値（今の例では２）に等しくし、目標の明度ｉを１だけ増大して値３にする。今の例では、明度ｉは値１になる。その後処理はステップＳ８１２に戻る。目標のヒストグラムの明度１の画素数は、図２２（ｂ）又は（ｄ）の場合には３であるから、目標の明度１には、上記ｆ(High)の値（未割当ての画素１個分）がステップＳ８１５にて変数Ｓumに加算され、Ｓumは値１になり、変数Highは１だけ増大され、値３になる。ステップＳ８１４が再度実行された場合、今の仮定のようにＳum（＝１）が画素数ｈ(１)（＝３）より小さく、そのときにはステップＳ８１５が再度実行され、変数Ｓumにｆ(３)の値（今の例では３）が加算され、Ｓumは４になる。その後、変数Highが１だけ増大され４になる。ステップＳ８１４では、変数Ｓum（＝４）が、目標の画素数ｈ(１)（今の例では３）より大きくなるので、処理はステップＳ８１６に再度移る。
【０１０９】
ステップＳ８１６では、変数Highの値を１だけ減らして３に戻す。更に、上に説明した式２により差分Deltを計算する。今の場合には、この差分Deltは２になる。その後ステップＳ８１７では、今の場合、変数Ｌowが２であり、変数Highは３であるので、変数Ｌowが変数Highより小さいと判断され、ステップＳ８１８において、変数Ｔmpが変数Ｌowの値２に設定され、ステップＳ８１９にて、変数Ｔmpは変数Highより小さいと判断されるので、ステップＳ８２０で、元の明度２の画素のうち、未割当ての画素１個に対する割当て先の明度Ｔ(２)として明度１が決定される。すなわち、元の明度２の２個の画素のうち、未割当ての画素１個に明度１が割り当てられる。こうして、元の明度２の２個の画素に対して、目標の明度０に割り当てられる部分変換対象画素数が１であり、目標の明度１に割り当てられる部分変換対象画素数が１となる。
【０１１０】
その後、変数Ｔmpが１だけ増大されて３になると、ステップＳ８１９では、変数Ｔmpは変数High（３）より小さくないと判断され、処理はステップＳ８２１に移る。ステップＳ８２１では、既に述べたように、明度High（＝３）を有する元の画素数ｆ(High)（今の例では３）のうち、ステップＳ８１６で計算された差分Delt（今の場合は値２）の数の画素に対して割当て先の明度Ｔ(３)として、明度ｉ（今の例では１である）を決定する。割当て先を選択する確率は、割当て画素数（今の場合は２）／割当て候補の画素数（今の場合は３）により決まる２／３である。こうして、元の明度３の画素３個のうちの２個に対して明度１が割り当てられる。
【０１１１】
その後、既に述べたように明度３の元の画素の未割当ての画素数を上に述べた式３により計算され、その数が、元の画素の明度３に対する画素数ｆ(High)に設定される。以下、同様にして、元の画像の後続の明度の画素に対して、新たな割当て先の明度Ｔ(ｉ)が決定される。なお、以上の説明では、ステップＳ８１７による判定では変数Ｌowが変数Highより小さくないという場合は発生しなかった。このような場合が発生するのは、ステップＳ８２２を実行して変数Ｌowを変数Highの値に等しくした後に、ステップＳ８１５が実行されて、変数Ｓumが未割当ての元の画素の画素数の値ｆ(High)にされ、更に画素数ｆ(High)が次の目標の明度の画素数ｈ(ｉ)より小さい場合には、ステップＳ８１４では変数Ｓumが画素数ｈ(ｉ)より小さいと判断される。そのときは、処理はステップＳ８１６に移る。その場合、ステップＳ８１６では、差分Deltが式２にしたがって計算され、その値は画素数ｈ(ｉ)と等しくなる。このような場合には、その後ステップＳ８１７では、変数Ｌowが変数Highより小さくない（両者が等しい）と判定されることになる。この場合には処理はステップＳ８２１に移る。ステップＳ８２１の処理は既に説明したとおりであるので、省略する。以上のようにして、明度変換データ生成部８１０により、図２３に示したような明度変換テーブル２５が生成される。
【０１１２】
図２１に戻り、明度変換部８００は、明度変換データ生成部８１０の実行後に明度変換実行部８３０を実行する。この処理では、改善対象明度データ２２をコピーしたコピー画像データ（図示せず）を記憶装置２０に記憶し、先に生成された明度変換テーブル２５を用いて、このコピー画像データ内の陰影部領域に属する画素の明度に対する変換後の明度を決定し、その画素の明度を決定された変換後の明度で置換すればよい。
【０１１３】
例えば、図２３の明度変換テーブル２５の場合には、変換元明度ｉが０、１の場合には、それらに対する変換先明度Ｔ(０)、Ｔ(１)はいずれも０である。元の画素の明度iを変換するときに、同じ変換元の明度ｉに対する変換先の明度Ｔ(ｉ)が複数個ある場合には、上に述べたように、それぞれの変換先明度毎に、その明度に変換されるべき部分変換対象画素数が決定され、明度変換テーブル２５に格納されている。このような画素の明度の変換にあたっては、明度変換対象画素の総数分の画素から、それぞれの変換先明度に変換される画素を、部分変換対象画素数／明度変換対象画素の総数の確率で決定すればよい。
【０１１４】
例えば、図２３の明度変換テーブルの場合、元の明度ｉが２の場合には変換先明度Ｔ(２)は、０と１の二つがあり、それぞれに対する部分変換対象画素数はいずれも１である。したがって、元の明度ｉが２の変換対象画素の総数２のうち、１個ずつが変換先明度０と１に変換される。この元の明度２の２個の画素のそれぞれに対して、変換先明度０と１を、部分変換対象画素数／明度変換対象画素の総数の確率、すなわちいずれの変換先に対しても１／２の確率でランダムに決定すればよい。同様に、元の明度ｉが３の場合には、明度変換対象画素の総数は３であり、変換先明度は１と２の二つがあり、それぞれに変換されるべき部分変換対象画素数は２と１である。したがって、明度変換対象画素の総数３の画素を、２／３、１／３の確率でランダムに変換先明度１と２に変換すればよい。
【０１１５】
明度２の２個の画素の明度の変換先をランダムに決定するには、異なる変換先明度値を、それぞれの変換先明度に対する部分変換対象画素数だけ生成して、合計で明度変換対象画素の総数に等しい変換先明度値のグループを生成し、明度が２である変換すべき画素が最初に見つかった場合には、このグループからランダムに一つの変換先明度値を取りだし、その値をその変換すべき画素の変換先の明度値とし、当該グループからも、上記取り出された変換先明度値を削除するようにして、後続の明度２を有する変換すべき画素の明度を上記グループを使用してランダムに決定すればよい。
【０１１６】
以上に説明した陰影部領域明度変換部３００の処理から分かるように、元の画像のヒストグラムの下側領域の画素数又は上側領域の画素数と全画素数との比率Ｒの値を調整することにより、明度変換後の画像のコントラストを自由に調整することができる。すなわち、比率Ｒを大きくするほど、下側領域と上側領域のいずれの領域についても、それらに含まれる画素の数が多くなり、それらの画素の明度が、最小明度から最大明度の明度範囲に画素が分布する組合せヒストグラムになるように変換されるので、コントラストは強くなり、はっきりと視認できるようになる。また、比率Ｒを小さくすればコントラストは、強くはないが、その分、自然な画像になる。図１０の例は、Ｒ＝0.05とした場合に得られた画像である。
【０１１７】
図２５は、図２の画像から検出された陰影部領域データ２３Ｂの明度のヒストグラムを示す図であり、図３１（ａ）で模式的に示したヒストグラムの実例を示す。このヒストグラムでは、明度の低いところに多くの画素があり、全体として最小明度から最大明度近くまで明度が分布していることがわかる。
【０１１８】
図２６は、本実施の形態における陰影部領域明度変換部３００の処理を実行して得られた、図１０に示されたコントラスト改善画像内の陰影部領域の明度のヒストグラムを示す図である。図２５に比べて明度分布は最小値０から最大値ＭＡＸまでの全範囲に拡がっており、頻度の分布も特定の明度に過度に集中していない。このヒストグラムは、図１０に示された画像が示すように、陰影部領域の明度のコントラストがよくなり、視認性が改善されたことを反映している。
【０１１９】
図２７は、図２の画像の陰影部領域に対して、図３１を参照して説明された従来技術による線形変換を行った結果得られた画像の例を示す図である。陰影部のコントラストが強くなり、視認性が改善されていて、車や、建物の輪郭がわかりやすくなった。しかし、建物の明るい部分の明度変化がなくなり、一様に白く跳んでいたり、道路の暗い部分が一様に暗くなっていて道路構造を把握しにくい。つまり、白とびとつぶれが起こっていて、図１０に示す本実施の形態で得られた画像より画像全体としては視認性は劣る。
【０１２０】
図２８は、上記図２７の画像の陰影部領域の明度のヒストグラムを示す図である。図２５のヒストグラムに比べて、明度分布範囲は最小値０から最大値ＭＡＸまでの全範囲に拡がっている点では図２６と同じであるが、図２８では、最小明度と最大明度での画素数が極端に多くなっている。このことは、図２８に示された画像で見られる白とびとつぶれが起こっていることを示している。
【０１２１】
図２９は、比較のために図２の陰影部領域に対して、従来技術によるヒストグラム均一化を行った結果得られた画像を示す図である。同図では、陰影部内の視認性は高いが、コントラストが強すぎ、ノイズが目立つ。また、陰影部と非陰影部との境界で明度が極端に変化しているため、不自然な画像となっている。これに対し、図１０に示した本実施の形態により得られた画像では、このようなノイズが少なく、より自然な画像となっていて、視認性は優れている。
【０１２２】
したがって、本実施の形態で示したように、陰影部領域明度変換部３００により陰影部領域の明度を変換することにより陰影部領域のコントラストを改善できるだけでなく、自然な明度変化をする画像を得ることができる。すなわち、明度のヒストグラムの中央領域に対して線形変換するとともに、明度のヒストグラムの下側領域と上側領域の画素に対してヒストグラム均一化を施した結果、従来の線形変換のみで得られるコントラストよりは強く、従来のヒストグラム均一化のみを行った場合よりは弱いコントラストを有し、いわば両方の変換の中間程度のコントラストを有するように陰影部のコントラスト改善でき、かつ、陰影部の変換後の画像をより自然な画像にすることができる。すなわち、陰影部内の視認性と画像の自然さを両立するように、陰影部の画像を改良できている。
【０１２３】
以上のようにして明度変換実行部８３０が実行されると、明度変換部８００の処理が終了し、陰影部領域明度変換部３００の処理が終了する。図１に戻り、プログラム４０は、陰影部領域明度変換部３００の実行後にグラデーション処理部４００を既に述べたようにして実行する。
【０１２４】
本実施の形態では陰影部領域明度変換部３００により実行される明度変換は、非常に有効であるが、得られる画像では、図１０の領域１０ａから１０ｅに例示されるように、いくつかの領域では明度の不連続が発生し、画像がそれらの領域では不自然に見えるという問題が残っている。本実施の形態でのグラデーション処理部４００を更に実行することにより、このような問題が改善されることは、既に説明したとおりである。
【０１２５】
本発明は、上記の実施の形態に限定されるものではなく、本発明の要旨を変更しない範囲で変更又は修正して他の形態で実施してもよいことは言うまでもない。上記実施の形態で使用されたグラデーション処理部４００は、本実施の形態における陰影部領域明度変換部３００の実行結果に対して実行されるのが有効であるが、グラデーション処理部４００自体は、従来の線形変換の結果得られる画像（例えば図２７）あるいは従来のヒストグラム均一化により得られる画像（例えば図２９）に対しても適用でき、それらの処理により発生する明度の不連続を現象させる効果を有する。
【０１２６】
また、上記実施の形態では、陰影部を一つのブロックと考えて処理を施した。しかし、本発明は改善対象明度画像を複数のブロックに分割した場合にも適用可能である。例えば、影が重なり合うことによってさまざまな明度を持つ陰影部分が含まれている場合には、陰影部分を一つのブロックに属すると考えた場合、暗い陰影部のコントラストが十分に改善されない可能性がある。そのような場合には、画像を複数のブロックに分割して各ブロック毎に陰影部領域のコントラストを改善するように、ブロック毎に変換後の明度を決定することが可能となる。また、既に述べたように、元の画像のヒストグラムの下側領域の画素数又は上側領域の画素数と全画素数との比率Ｒの値をブロックごとに調整することが可能となり、例えば、陰影部部分領域をコントラストを付けてはっきり見たいブロックと、陰影部分領域を自然なコントラストで見たいブロックとを区別して、それぞれのブロックに適した比率Ｒを使用することも可能になる。
【０１２７】
また、以上の実施の形態では、元のヒストグラムの中央領域を線形変換を用いて拡大したが、線形変換に代えて他の変換、例えば非線形変換、区分線形変換を用いてもよい。また。元のヒストグラムの下側領域と上側領域を組み合わせて、最小明度から最大明度までの明度範囲に画素が分布する組合せヒストグラムを使用するときに、全明度範囲に対してほぼ一様となるようにヒストグラムを使用したが、これに代えて完全に一様でなくてもよく、ほぼ一様であればよい。更には、ほぼ一様でなくてもよく、例えば、全明度範囲において不均一に分布するように変換してもよい。
【０１２８】
上記実施の形態では、コントラスト改善対象の画像はカラー画像であるとしたが、本発明は、モノクロ濃淡画像にも適用でき、モノクロ濃淡画像の場合には、色相は任意に指定し、彩度０のカラー画像と考えて、その画像の明度データに対して処理を行えばよい。あるいは、モノクロ濃淡画像の場合には、その濃度データを上記実施の形態における改善対象明度データ２２として使用して、陰影部領域明度変換部３００とグラデーション処理部４００を実行し、カラー形式変換部１００とカラー形式逆変換部５００を実行しなければよい。
【図面の簡単な説明】
【０１２９】
【図１】本発明に係る画像の陰影部のコントラストを改善可能な装置の一つの実施形態の概略ブロック図である。
【図２】改善対象画像データが示す地理画像の一例を示す図である。
【図３】Ｒ、Ｇ、Ｂの３原色に関するカラー画像情報でカラー画像を定義するＲＧＢカラーモデルを示す図である。
【図４】カラー画像情報を定義される双六角錐カラーモデルを示す図である。
【図５】陰影部領域検出部の概略フローチャートを示す。
【図６】２値化部により図２の画像から生成された２値画像の例を示す図である。
【図７】ノイズ除去部の処理の一例を示す概略フローチャートである。
【図８】ノイズ除去部の処理の後に得られる陰影部領域データが表す陰影部領域の例を示す図である。
【図９】目標ヒストグラム生成部の処理の概要を説明するための図である。
【図１０】図２に示す改善対象明度データを陰影部領域明度変換部により明度変換して得られるコントラスト改善後明度データを示す図である。
【図１１】図１０内の領域１０ａ等とその近傍における明度変換前の明度分布、明度変換後の明度分布及びグラデーション処理後の明度分布を模式的に示す図である。
【図１２】図１０内の領域１０ｄが含まれるビルの壁面上での図のほぼ水平方向の経路に沿っての明度変換前の明度分布、明度変換後の明度分布及びグラデーション処理後の明度分布を模式的に示す図である。
【図１３】図１０内の領域１０ｅが含まれるビルの屋上で図のほぼ垂直方向の経路に沿っての0明度変換前の明度分布、明度変換後の明度分布及びグラデーション処理後の明度分布を模式的に示す図である。
【図１４】複数のグラデーション領域とグラデーション領域データを説明するための図である。
【図１５】陰影部領域データが示す図８の陰影部領域に対して決定された複数のグラデーション領域の存在範囲を示す図である。
【図１６】グラデーション領域決定部の処理の一例の概略フローチャートである。
【図１７】グラデーション処理を実行した結果得られるグラデーション処理後明度データが表す明度画像の例を示す図である。
【図１８】目標ヒストグラム生成部の概略フローチャートである。
【図１９】中央領域決定部の処理の一例の概略フローチャートである。
【図２０】上下側領域拡大部７３０の処理の一例の概略フローチャートである。
【図２１】明度変換部の概略フローチャートである。
【図２２】実ヒストグラムデータと目標ヒストグラムデータとに基づいて行われる明度変換を説明するための図である。
【図２３】明度変換データの例としての明度変換テーブルの例を示す図である。
【図２４】明度変換データ生成部の処理の一例の概略フローチャートである。
【図２５】図２の画像から検出された陰影部領域データの明度のヒストグラムを示す図である。
【図２６】陰影部領域明度変換部の処理を実行して得られたコントラスト改善画像の陰影部領域の明度のヒストグラムの例を示す図である。
【図２７】図２の画像の陰影部領域に対して従来技術による線形変換を行った結果得られた画像の例を示す図である。
【図２８】図２７の画像の陰影部領域の明度のヒストグラムを示す図である。
【図２９】図２の陰影部領域に対して従来技術によるヒストグラム均一化を行った結果得られた画像を示す図である。
【図３０】従来技術による明度ヒストグラムの線形変換とその問題点を説明するための図である。
【図３１】陰影部と明るい非陰影部を含む画像の明度ヒストグラムとその画像に対する従来技術による線形変換を行った結果得られる画像の明度ヒストグラムを模式的に示す図である。
【符号の説明】
【０１３０】
２７０…境界隣接領域、２７１から２７４…グラデーション領域、ｆ(ｉ)…実ヒストグラムを表す関数、ｇ(ｉ)…実ヒストグラムの中央領域の範囲を拡大した後の拡大ヒストグラムを表す関数、ｈ(ｉ)…目標ヒストグラムを表す関数。
【図１】
2005348081.tif 000003
【図３】
2005348081.tif 000004
【図４】
2005348081.tif 000005
【図５】
2005348081.tif 000006
【図６】
2005348081.tif 000007
【図７】
2005348081.tif 000008
【図８】
2005348081.tif 000009
【図１１】
2005348081.tif 000010
【図１２】
2005348081.tif 000011
【図１３】
2005348081.tif 000012
【図１４】
2005348081.tif 000013
【図１６】
2005348081.tif 000014
【図１８】
2005348081.tif 000015
【図１９】
2005348081.tif 000016
【図２０】
2005348081.tif 000017
【図２１】
2005348081.tif 000018
【図２２】
2005348081.tif 000019
【図２３】
2005348081.tif 000020
【図２４】
2005348081.tif 000021
【図２５】
2005348081.tif 000022
【図２６】
2005348081.tif 000023
【図２８】
2005348081.tif 000024
【図３０】
2005348081.tif 000025
【図３１】
2005348081.tif 000026
【図２】
2005348081.tif 000027
【図９】
2005348081.tif 000028
【図１０】
2005348081.tif 000029
【図１５】
2005348081.tif 000030
【図１７】
2005348081.tif 000031
【図２７】
2005348081.tif 000032
【図２９】
2005348081.tif 000033