(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-20
(45)【発行日】2023-12-28
(54)【発明の名称】画像処理装置、画像処理方法、およびプログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20231221BHJP
G06T 5/00 20060101ALI20231221BHJP
【FI】
G06T7/00 350C
G06T5/00 710
(21)【出願番号】P 2019143099
(22)【出願日】2019-08-02
【審査請求日】2022-07-29
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】松丸 美央
【審査官】合田 幸裕
(56)【参考文献】
【文献】特開2016-126750(JP,A)
【文献】特開2018-194346(JP,A)
【文献】特開2017-005389(JP,A)
【文献】国際公開第2017/047494(WO,A1)
【文献】米国特許出願公開第2016/0005152(US,A1)
【文献】中国特許出願公開第106530246(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
G06T 5/00
IEEE Xplore
JSTPlus(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
処理対象の画像に対して、散乱光の影響の少なくとも一部を除去した補正画像を生成する画像処理装置であって、
前記処理対象の画像に対して、空領域を含むか否かを判定する判定手段と、
前記判定手段により、空領域を含まないと判定された画像に対して第1の補正処理を実行する第1の補正処理手段と、
前記判定手段により、空領域を含むと判定された画像
の空領域に対して第2の補正処理を実行する
とともに、当該画像の空領域以外の領域に対して前記第1の補正処理を実行する第2の補正処理手段とを有し、
前記第1の補正処理手段が実行する前記第1の補正処理は、散乱光の影響の少ない空領域のみの画像を教師データとせず、散乱光の影響の少ない空
領域を含まない領域の画像を教師データとして学習したモデルを用いる処理であることを特徴とする画像処理装置。
【請求項2】
前記第1の補正処理手段は、ニューラルネットワークを有し、前記モデルに応じたパラメータが設定されていることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記第2の補正処理は、画素ごとの演算処理であることを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記判定手段は、前記処理対象の画像のブロックごとに、判定することを特徴とする請求項1乃至3の何れか一項に記載の画像処理装置。
【請求項5】
前記判定手段は、前記処理対象の画像に対して判定し、
前記処理対象の画像が空領域を含まないと判定した場合は、前記処理対象の画像は前記第1の補正処理手段による前記第1の補正処理のみが実行されることを特徴とする請求項1乃至3の何れか一項に記載の画像処理装置。
【請求項6】
前記判定手段は、前記処理対象の画像が空領域を含むと判定した場合、さらに前記処理
対象の画像は空領域のみであるか否かを判定することを特徴とする請求項5に記載の画像
処理装置。
【請求項7】
前記判定手段が空領域のみであると判定した場合は、前記処理対象の画像は前記第2の補正処理手段による前記第2の補正処理のみが実行されることを特徴とする請求項6に記載の画像処理装置。
【請求項8】
前記判定手段が、前記処理対象の画像が空領域を含むが、空領域のみではないと判定した場合は、前記処理対象の画像は、ブロックごとに前記第1の補正処理または前記第2の補正処理の何れかが実行されることを特徴とする請求項6または7に記載の画像処理装置。
【請求項9】
前記判定手段は、前記処理対象の画像を撮像した撮像装置が屋内に設置されているか屋外に設置されているかを示す情報に基づいて、空領域を含むか否かを判定することを特徴とする請求項5乃至8の何れか一項に記載の画像処理装置。
【請求項10】
前記判定手段は、前記
処理対象の画像を撮像した撮像装置の撮像時の姿勢を示す姿勢情報に基づいて、前記空領域のみか否かを判定することを特徴とする請求項6乃至8の何れか一項に記載の画像処理装置。
【請求項11】
コンピュータを請求項1乃至10の何れか1項に記載の画像処理装置として機能させるためのプログラム。
【請求項12】
処理対象の画像に対して、散乱光の影響の少なくとも一部を除去した補正画像を生成する画像処理方法であって、
判定手段が、前記処理対象の画像に対して、空領域を含むか否かを判定し、
第1の補正処理手段が、空領域を含まないと判定された画像に対しては、散乱光の影響の少ない空領域のみの画像を教師データとせず、散乱光の影響の少ない空
領域を含まない領域の画像を教師データとして学習したモデルを用いる第1の補正処理を実行し、
第2の補正処理手段が、空領域を含むと判定された画像
の空領域に対して第2の補正処理を実行する
とともに、当該画像の空領域以外の領域に対して前記第1の補正処理を実行する画像処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮像画像における散乱光の影響を低減する画像処理技術に関する。
【背景技術】
【0002】
監視カメラなどの分野において、カメラから被写体までの間に存在する微粒子(例えば、霧や霞)の影響によってコントラストが低下し、撮像画像の画質が劣化することが問題となっている。この原因として、光が大気中を通過する際に、微粒子成分によって光が散乱することが挙げられる。このような散乱光により視認性が低下した画像に対して、散乱光による影響を除去する画像処理技術が知られている。
【0003】
特許文献1は、霧除去処理として機械学習を用いる方法について説明している。具体的には、霧画像の領域が入力されると、学習モデルは領域に対応する透過率を生成し、学習モデルによって得られた透過率を用いて霧除去画像を生成する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
被写体によって、霧や霞などの微粒子による影響を受けたことにより視認性の変化は異なる。例えば、テクスチャのある建物などはコントラストが低下する一方、テクスチャの少ない空領域では、色相が変化する。しかしながら上述の特許文献1による方法では、画像から透過率マップを出力するよう学習する際に、被写体によって視認性の変化の仕方が異なることを考慮しておらず、必ずしも適切な学習モデルを得られない。
【0006】
そこで本発明は、画像に対して機械学習を用いて霧霞除去処理をする際に、霧霞によってコントラストが低下する被写体について適切に学習されたモデルを用いた処理を実現することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するため本願発明は、処理対象の画像に対して、散乱光の影響の少なくとも一部を除去した補正画像を生成する画像処理装置であって、前記処理対象の画像に対して、空領域を含むか否かを判定する判定手段と、前記判定手段により、空領域を含まないと判定された画像に対して第1の補正処理を実行する第1の補正処理手段と、前記判定手段により、空領域を含むと判定された画像の空領域に対して第2の補正処理を実行するとともに、当該画像の空領域以外の領域に対して前記第1の補正処理を実行する第2の補正処理手段とを有し、前記第1の補正処理手段が実行する前記第1の補正処理は、散乱光の影響の少ない空領域のみの画像を教師データとせず、散乱光の影響の少ない空領域を含まない領域の画像を教師データとして学習したモデルを用いる処理であることを特徴とする。
【発明の効果】
【0008】
本発明は、画像に対して機械学習を用いて霧霞除去処理をする際に、霧霞によってコントラストが低下する被写体について適切に学習されたモデルを用いた処理を実現できる。
【図面の簡単な説明】
【0009】
【発明を実施するための形態】
【0010】
以下、添付の図面を参照して、本発明を好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例にすぎず、本発明は図示された構成に必ずしも限定されるものではない。
【0011】
<第1の実施形態>
第1の実施形態では、画像に対して霧霞除去処理を実行する画像処理装置について説明する。なお、霧霞除去処理とは、霧や霞などの微粒子成分による散乱光の影響を受けて、コントラストが低下した画像に対して、散乱光の影響を低減する処理のことを意味する。本実施形態においては、画像のうち空領域は予め設定されたパラメータを用いて画素ごとに補正し、空領域以外の領域に対しては霧霞のない画像と霧霞のある画像との相関を学習することによって得られる学習モデルのパラメータを用いて補正する。
【0012】
図1は、本実施形態の画像処理装置100のハードウェア構成を示すブロック図である。本実施例の画像処理装置100は、CPU101、RAM102、ROM103、HDD I/F104、HDD105、入力I/F106、出力I/F107、システムバス108を有している。CPU101は、以下に述べる各構成を統括的に制御するプロセッサである。RAM102はCPU101の主メモリ、ワークエリアとして機能するメモリであり、ROM103は、画像処理装置100内での処理を司るプログラムを格納するメモリである。
【0013】
HDD I/F104は、例えばシリアルATA(SATA)等のインタフェースであり、二次記憶装置としてのHDD105をシステムバス108に接続する。CPU101は、HDD I/F104を介してHDD105からのデータ読み出し、およびHDD105へのデータ書き込みが可能である。さらにCPU101は、HDD105に格納されたデータをRAM102に展開し、同様に、RAM102に展開されたデータをHDD105に保存することが可能である。そしてCPU101は、RAM102に展開したデータをプログラムとみなし、実行することができる。なお、二次記憶装置はHDDの他、光ディスクドライブ等の記憶デバイスでもよい。入力I/F106は、例えばUSBやIEEE1394等のシリアルバスインタフェースである。
【0014】
画像処理装置100は、入力I/F106を介して、外部メモリ109および撮像部111に接続されている。CPU101は、入力I/F106を介して、外部メモリ109および撮像部111からデータを取得することができる。出力I/F107は、例えばDVIやHDMI(登録商標)等の映像出力インタフェースである。画像処理装置100は出力I/F107を介して表示部110と接続されている。CPU101は、出力I/F107を介して表示部110に画像を出力し、出力した画像を表示部110に表示することができる。
【0015】
システムバス108は、各種データの転送経路であり、画像処理装置100内の各構成部はシステムバス108を介して相互に接続されている。
【0016】
外部メモリ109はハードディスク、メモリカード、CFカード、SDカード、USBメモリなどの記憶媒体であり、画像処理装置100で処理された画像データなどを保存することができる。表示部110は、ディスプレイなどの表示装置であり、画像処理装置100で処理された画像などを表示することができる。
【0017】
撮像部111は、被写体の光情報をセンサで受光し、取得した画像をデジタルデータとして出力するカメラである。撮像部111が撮像することで得られた撮像画像においては、霧霞などが発生したシーンなど散乱光の影響によりコントラストが低下してしまっている場合がある。本実施形態では、撮像部111が撮像した画像に対して霧霞除去処理を実行することで、散乱光の影響が低減された画像を生成することができる。
【0018】
図2は、本実施形態における画像処理装置100の詳細な論理構成を示すブロック図である。画像処理装置100は、霧霞除去処理を実行する霧霞除去処理部200と学習用データを生成するための学習用データ生成部201によって構成される。
【0019】
まず、学習用データ生成部201について説明する。学習用データ生成部201は、機械学習を行う学習モデルのパラメータを最適化するための生徒データと教師データのペアである学習用データを生成する。学習モデルとは、入力された生徒データから生徒データに対応する霧霞低減画像を出力するニューラルネットワークに基づくネットワーク構造とそのパラメータとする。本実施形態における学習モデルは、霧霞による散乱光の影響を受けた画像から霧霞による散乱光の影響を低減した画像を推定する処理を行うモデルである。生徒データは、霧霞によりコントラストが低下している画像から生成される。また、教師データは、生徒データである画像において霧霞によるコントラスト低下がなかった場合の霧霞低減画像から生成される。
【0020】
学習用データ生成201は、学習用画像取得部202、ブロック分割部203、領域判定部204、学習部205を有する。学習用画像取得部202は、同じシーンを同じ位置から同じ撮像条件により撮像した2つの画像を取得する。
図3(a)は、学習用画像取得部202が取得する画像の一部を示す図である。このとき取得する2つの画像は、同じ位置から同じ風景を晴天時に撮像した晴天画像と、霧霞等が発生し散乱光による影響下で撮像した霧霞画像である。なおここでは、晴天画像と霧霞画像は同じ撮像条件(露出、画角など)で撮像されたものとする。また、晴天画像および霧霞画像はいずれもR(レッド)、G(グリーン)、B(ブルー)のプレーンからなるカラー画像である。学習用画像取得部202は、このような晴天画像と霧霞画像とのペアを複数、取得する。
【0021】
ブロック分割部203は、取得した晴天画像と霧霞画像とのペアを分割し、ブロック画像を出力する。ブロック分割部203は、後述するように、学習部204におけるニューラルネットワークの入力層のノード数に応じて、画像をブロックに分割する。ブロック分割部203は、分割したブロック画像のペアを順に領域判定部204に出力する。領域判定部204は、処理対象のブロックペアのうち晴天画像から抽出されたブロックに基づいて、空領域を含むか否かを判定する。領域判定部204は、空領域を含むと判定したブロックは学習部204に出力せず、空領域を含まないと判定したブロックは学習部205に出力する。
【0022】
学習部205は、ブロック分割部203から出力された空領域を含まないブロック画像のペアを用いて、内部に保持するニューラルネットワークのパラメータの学習を行う。
【0023】
ここでニューラルネットワークについて説明する。
図4は、ニューラルネットワークを説明する図である。
図4では説明を簡単にするため中間層を1層としているが、2層以上で中間層を構成することが望ましい。
図4に示すニューラルネットワークでは、入力層はMi個のノード(n11、n12、…、n1Mi)を有し、中間層はMh個のノード(n21、n22、…、n2Mh)を有し、出力層(最終層)はMo個のノード(n31、n32、…、n3Mo)を有している。そして、各層のノードは隣接する層の全てのノードと結合しており、階層間で情報伝達を行う3層の階層型ニューラルネットワークを構成している。
【0024】
入力層に画像を入力する場合、該入力層には、入力される画素とノードとが1対1となるように、入力する画素数分のノードを設ける。また、出力層においても出力する画素数分のノードが設定されている。つまり本実施形態においては、16画素×16画素のブロック画像が入力され、16画素×16画素の画素値を出力するので、入力層および出量層におけるノードは256個である。データは、
図4の左から右へ、即ち、入力層、中間層、出力層の順で受け渡される。入力層の各ノードは中間層のすべてのノードに接続され、ノード間の接続はそれぞれ重みを持っている。一方のノードから結合を通して他方のノードに伝達される際の出力値は、結合の重みによって増強あるいは減衰される。このような接続に定められた重み係数、バイアス値の集合は学習モデルのパラメータである。なお活性化関数については特に限定しないが、ロジスティックシグモイド関数やRectified Linear Unit(ReLU)関数などを用いれば良い。学習方法としては、種々提案されているニューラルネットワークの学習方法を適用できる。例えば、入力層に生徒データを入力してニューラルネットワークを動作させた場合に出力層から得られる出力と、該生徒データに予め対応づけられている教師データと、の差分を計算し、該差分を極小化するように、重み係数及びバイアス値を調整する。このような学習処理によって生成される重み係数及びバイアス値が、学習モデルのパラメータである。本実施形態における学習部205は、霧霞画像を生徒データとし、晴天画像を教師データとするため、霧霞による散乱光の影響を受けた画像から散乱の影響を低減した画像を推定する学習モデルのパラメータを生成する。
【0025】
次に、学習用データ生成部201における学習処理の流れを、詳細に説明する。
図5は、学習処理のフローチャートである。CPU101が、
図5に示すフローチャートを実現可能なプログラムを読み出し実行することで、各構成(機能)が実現される。なお以下においては、フローチャートにおける各工程(ステップ)を、「S」と付して説明する。
【0026】
S501において学習用画像取得部202は、メモリ(不図示)から学習用に用意された1組の画像を取得する。上述の通りここでは、同じ位置から同じ風件を晴天時に撮像した晴天画像と、霧霞等が発生し散乱光による影響下で撮像した霧霞画像とを取得する。例えば所定の位置に設置された固定の監視カメラが撮像した画像が格納された外部のメモリから、天気予報を参照して2つの画像データを取得するようにしてもよい。この場合は、異なる複数の監視カメラが撮像した画像から、画像ペアを取得すると良い。
【0027】
S502においてブロック分割部203は、1組の画像をブロックに分割する。本実施形態においては、画像における左上から、16画素×16画素のブロック画像を順に抽出する。
図3(b)は、ブロック分割部203が分割するブロックを説明する図である。
図3(b)に示すように、タイル状に画像をブロックに分割し、1つの画像から複数のブロック画像を抽出する。ブロック分割部203は、晴天画像と、対応する霧霞画像とにおいて、同じ位置から抽出された2つのブロックを1つのブロックペアとして領域判定部204に出力する。
【0028】
S503において領域判定部204は、取得したブロック画像のペアのうち晴天画像のブロック画像が空領域を含むか否かを判定する。空領域か否かを判定する方法は、公知の技術を適用すればよい。本実施形態では、ブロックにおける各画素のR,G,Bの画素値から色相を算出し、予め設定された空の可能性が高い色相の範囲か否かを判定する。領域判定部204は、ブロックにおいて空領域の画素であると判定した画素の数を算出し、空領域の画素の数が所定の閾値以上であれば、ブロック画像が空領域を含むと判定し、S504はスキップしてS505に進む。また、空領域の画素の数が所定の閾値未満であれば、領域判定部204は、ブロック画像は空領域を含まないと判定してS504に進む。
【0029】
S504において領域判定部204は、空領域を含まないと判定されたブロック画像のペアのみを学習部205に出力する。S505において領域判定部204は、取得したブロック画像の全てに対して領域判定を行ったか否かを判定する。全てのブロック画像に対して領域判定をしていればS506に、未処理のブロック画像がある場合は、S503に戻る。また、S506において学習用画像取得部202は、全ての学習用画像を取得したか否かを判定する。全ての学習用画像を取得済であれば、S507に進み、未取得の学習用画像があればS501に戻る。
【0030】
S507において学習部205は、入力された学習用データを用いて散乱の影響を低減した画像を推定する学習モデルのパラメータを生成する。S508において学習部205は生成した学習モデルのパラメータを、後述する第1の補正部209に出力する。
【0031】
ここから、実際に霧霞除去を実行する霧霞除去処理部200について説明する。まず、画像入力部206は、霧霞により散乱の影響を除去したい処理対象の画像を入力する。ブロック分割部207は、処理対象の画像をブロックごとに分割する。本実施形態においてブロック分割部207は、ブロック分割部203が抽出したブロック画像のサイズと同じサイズのブロックに分割する。領域判定部208は、処理対象のブロックが空領域を含むか否かを判定する。領域判定部208は、空領域を含まないブロックは第1の補正部209に、空領域を含むブロックは第2の補正部210に出力する。
【0032】
第1の補正部209は、ニューラルネットワークを備える。ここで第1の補正部209は、学習部205と同じネットワーク構造を持つ。さらにニューラルネットワークにおける各重み係数やバイアス値は、学習部205から出力されたパラメータに従って設定されている。つまり第2の補正部209は、空領域を含まない画像を用いて学習した霧霞による影響を除去するモデルに基づいて、処理対象のブロックに対して補正処理を実行する。第1の補正部209は、処理対象の画像から霧霞による影響を除去した、本来のコントラストの画像を推定し、補正済ブロックを出力する。
【0033】
第2の補正部210は、処理対象のブロックに含まれる各画素について、順に所定のアルゴリズムに従った演算処理を実行し、空領域を含むブロックの補正済ブロックを出力する。本来霧霞の影響を受けると、霧霞の影響がない場合の画像に比べてコントラストは低下することが知られている。ただし空領域は複雑なテクスチャ成分は含まれていない場合が多く、霧霞除去処理としてコントラストを拡大すると、S/N比が低下してしまう。そこで本実施形態では、第2の補正部210は、空領域に適した補正処理を実行する。
【0034】
出力画像生成部211は、第1の補正部209から出力されたブロック画像と、第2の補正部210から出力されるブロック画像とを蓄積して1枚の画像を生成し、出力する。
【0035】
霧霞除去処理部200が実行する霧霞除去処理の流れを、詳細に説明する。
図6は、霧霞除去処理のフローチャートである。CPU101が、
図6に示すフローチャートを実現可能なプログラムを読み出し実行することで、各構成(機能)が実現される。
【0036】
まずS601において画像入力部206は、処理対象の画像を入力する。ここでは学習用画像データと同様、R,G,Bのプレーンからなるカラー画像を処理対象の画像とする。S602においてブロック分割部203は、処理対象の画像を分割する。本実施形態においては、処理対象の画像を16画素×16画素のブロックに分割する。
【0037】
S603において領域判定部208は、処理対象のブロックが空領域を含むか否かを判定する。ここでは上述したS503における領域判定部204と同様の方法により、ブロックに対する領域判定を行う。領域判定部208は、ブロックが空領域を含むと判定した場合は、S604に進みブロック画像を第1の補正部209に出力する。また領域判定部208は、ブロックが空領域を含まないと判定した場合は、S605に進みブロック画像を第2の補正210に出力する。
【0038】
S605において第1の補正部209は、入力されたブロック画像に対して第1の補正処理を実行する。ここで第1の補正処理とは、霧霞除去画像を推定する学習モデルに基づくパラメータが設定されたニューラルネットワークによる処理のことである。この処理により、ブロック画像は、コントラストが拡大した霧霞による影響が低減された補正済ブロックに変換される。
【0039】
S607において第2の補正部210は、入力された空領域を含むブロック画像に対して第2の補正処理を実行する。本実施形態において第2の補正処理は、彩度補正処理を実行する。第2の補正部210は、処理対象のブロックに含まれる画素を順に注目画素とし、まず、注目画素のR,G,Bの画素値をYCbCr色空間に変換する。色空間の変換処理は、公知の計算式を用いて実行する。第2の補正部201は、Cb、Cr成分に対して所定のゲインを乗算する。
【0040】
S608において領域判定部208は、処理対象の画像においてすべてのブロックに対して判定処理を実行したか否かを判定し、未処理ブロックがある場合には、S603に戻る。すべてに対する判定処理が完了していれば、S609に進む。
【0041】
S609において出力画像生成部211は、処理対象の画像において補正済ブロックのデータを蓄積し、1つの補正画像を生成し、出力する。以上で霧霞除去処理は完了する。
【0042】
以上の通り本実施形態においては、画像のうち空領域を含まない被写体領域に対しては、教師あり学習によって得られる学習モデルを用いて散乱光による影響を低減した補正画像を生成する。一方、空領域に対しては彩度補正処理によって散乱光による影響を低減した補正画像を生成する。
【0043】
通常、散乱光による影響を受けると、空領域以外の領域においては、コントラストが低下する。そのため、散乱光による影響を除去した画像は、散乱光による影響を受けた画像よりもコントラストを拡大する補正処理であることが望ましい。そこで、コントラストが低下した画像と低下していない画像とのペアを用いて、低下していない画像を推定する学習モデルを使った補正処理は、空以外の領域に対しては好適である。しかしながら空領域においては、もともとテクスチャ成分がないため、コントラストを拡大するとノイズ成分の増大により画質が劣化してしまう場合がある。晴天画像を教師データとして教師あり学習したモデルを空領域にも適用すると、コントラストの拡大によって空領域の画質が低下してしまう。すなわち空領域に対しては、学習したモデルを用いた補正処理ではなく、空領域に適した彩度補正処理を実行することで、より良好な散乱光の影響を低減した補正画像を生成することができる。
【0044】
また、空領域における散乱光による影響と、空以外の領域における散乱光による影響とは異なる。例えば、空領域であれば、晴天の場合は青っぽく、散乱光による影響を受けると灰色っぽく撮像される。従って空領域においては、霧霞除去処理によって灰色などの無彩色は青っぽく補正されることが望ましい。一方、空以外の領域においては、建造物など被写体自身が灰色である物体もある。そのため空以外の領域においては、必ずしも霧霞画像において灰色であっても、霧霞除去処理の結果、青色に補正されることが望ましいとは限らない。そのため、晴天画像を教師データとして、霧霞画像から霧霞の影響を除去した画像を推定するモデルを学習する際には、空以外の領域の画像を用いて学習することで、空領域以外における学習モデルをより適切に習得することができる。
【0045】
<第2の実施形態>
第1の実施形態では、処理対象の画像に対して空領域を含むか否かを判定し、第1の補正処理と第2の補正処理を切り替える方法について説明した。本実施形態では、処理対象の画像を撮像した撮像装置が設置された位置情報および、姿勢情報を取得することで、補正処理を制御する方法について説明する。なお第1の実施形態と同一の構成については、同じ符号を付し、説明を省略する。
【0046】
本実施形態における霧霞除去処理部700は、第1の実施形態に加えて、位置情報取得810、姿勢情報取得部711、画像判定部712を有する。位置情報取得部710は、
図8に示すグラフィカルユーザーインターフェース(GUI)をユーザに表示させ、ユーザからの入力を受け付ける。これにより位置情報取得部710は、撮像部111が屋内に設置されているか、屋外に設置されているか否かを示す屋内外情報を位置情報として取得する。
【0047】
姿勢情報取得部711は、処理対象画像を撮影した時の撮像部111の姿勢を示す情報を取得する。ここでは姿勢情報取得部711は、撮像部111から、撮像部111の仰角方向に関する情報を姿勢情報として取得する。すなわち、撮像部111には、仰角方向の角度を検出可能な角度センサ(不図示)が内蔵されており、処理対象の画像を霧霞除去処理部700に転送する際には、角度センサの角度情報も一緒に転送する。
【0048】
画像判定部712は、処理対象の画像に空領域が含まれる可能性があるか否かを判定する。判定結果に応じて、処理対象の画像を、ブロック分割部207、第1の補正部209、第2の補正部210のいずれかに出力する。
【0049】
霧霞除去処理部700が実行する霧霞除去処理の流れを、詳細に説明する。なお、第1の補正部209におけるニューラルネットワークのパラメータは、第1の実施形態と同様の学習方法により調整されたパラメータによって更新されている。
図9は、霧霞除去処理のフローチャートである。
【0050】
S901において霧霞除去処理部700は、処理対象の画像を取得する。S902において位置情報取得部710は、表示部110に
図8に示す画像を表示させる。S903において位置情報取得部710は、ユーザがGUIを介して屋外か屋内のいずれかを選択した結果を示す屋内外情報を取得する。
【0051】
S905において姿勢情報取得部711は、撮像部111から、撮像部111の仰角方向に関する情報を姿勢情報として取得する。なお本実施形態において姿勢情報取得部711は、撮像部111が真下の地面方向を向いている場合を-90度とし、水平方向を0度、真上の天井や空方向を向いている場合は90度として、仰角方向の角度を取得する。
【0052】
S905において画像判定部712は、位置情報や姿勢情報に基づいて、処理対象の画像に空領域が含まれる可能性があるか否かを判定する。ユーザ入力により、屋内が選択された場合、および屋外が選択され、かつ姿勢情報が-45~-90を示す場合は、処理対象の画像は空領域を含まないと判定する。これは屋外で撮像された画像であっても、撮像方向が地面や床を向いていて、空領域を含んでいる可能性が低いためである。処理対象の画像は空領域を含まないと判定すると、次に画像判定部712はS911に進み、処理対象の画像を第2の補正部210に出力する。また、屋外が選択され、かつ姿勢情報が-45~90度を示す場合は、空領域を含むと判定する。画像が空領域を含むと判定すると画像判定部712は、S906に進む。
【0053】
S906において画像判定部712はさらに、処理対象の画像が空領域のみか否かを判定する。本実施形態では画像判定部712は、カラー画像における画素値から色相を算出し、保存しておく。さらに画像判定部712は、各画素の色相が空と認定される範囲にある画素の数をカウントし、所定の比率、例えば95%以上の画素が空の色相である場合には、空領域のみであると判定する。画像判定部712は空領域のみの画像である場合には、S907に進み、処理対象の画像を第1の補正部209に出力する。一方、空領域は含むが空領域のみではないと判定した場合には、画像判定部712はS909に進む。
【0054】
S909、S910については、第1実施形態におけるS902、S903と同様の処理である。ただし、S903においては、領域判定部208は、各画素の色相を算出せず、画像判定部712が算出し、記憶した各画素の色相を参照すればよい。
【0055】
S907において第2の補正部210には、空領域を含むブロック画像または、空領域のみの画像を入力される。S908において第2の補正部210は、入力された画像に対して第2の補正処理を実行する。
【0056】
S911において第1の補正部210には、空領域を含まないブロック画像または、空領域を含まない画像が入力される。S912において第1の補正部209は、入力された画像に対して、第1の補正処理を実行する。S913において、全ての画素に対する補正処理が完了すると、出力画像生成部211は、補正画像を出力する。
【0057】
以上の通り本実施形態においては、位置情報や姿勢情報に応じて、画像に対する霧霞除去処理を制御する。霧霞除去処理としては3つの方法に分類され、いずれかの方法によって画像は処理される。1つ目は、画像に対して画素ごとに演算処理を実行する補正処理を実行する方法であり、2つ目は、画像に対してニューラルネットワークを使った補正処理を実行する方法であり、3つ目は、ブロックに応じて1つ目の方法と2つ目の方法を切り替える方法である。例えば、監視カメラの場合は、一度設置されるとしばらく固定であることが多く、特に屋内に設置されている場合にはその監視カメラが撮像した画像に空領域が含まれる可能性は低い。そこで本実施形態ではまず、屋内外の情報や姿勢情報に基づいて、処理対象の画像が空領域を含むか否かを判定することとした。これにより、空領域のみ、あるいは空領域を含まない場合は、ブロック分割や領域判定処理を実行せず、それぞれの場合に適した補正処理を実行することができる。これにより、処理の負荷を軽減することができる。なお、画像判定部710による処理は、処理対象の画像が入力される度に実行しなくてもよい。設置位置が変更された場合や設定のリセットが実行された場合にのみ実行し、それ以外の場合には1度判定した結果を流用してもよい。
【0058】
<その他の実施形態>
上述の実施形態においては、晴天画像を教師データとして、霧霞画像から霧霞を低減した画像を推定するモデルを学習する場合について、説明した。しかしながら、機会学習を用いた補正処理は、他の方法もある。例えば、霧霞画像を生徒データ、霧霞画像に対応する透過率マップを教師データとして学習することで、霧霞画像から透過率マップを推定する学習モデルを学習するようにしてもよい。このような学習モデルのパラメータが設定された補正処理を実行する場合はまず、ニューラルネットワークを介して処理対象の画像に対応する透過率マップを推定する。その後、透過率マップを参照して処理対象の画像における画素ごとにコントラスト調整する処理を実行すればよい。透過率マップを用いた霧霞除去処理については、公知であるため説明を省略する。
【0059】
上述の実施形態においては、ブロックごとに空領域か否かを判定し、ブロックごとに第1または第2の補正処理を実行する形態を例に説明した。しかしながら、必ずしも矩形のブロックごとの処理ではなくても良い。例えば公知の意味的領域分割によって、空領域と空以外の領域に分割し、空領域のみを抽出した画像には第2の補正処理を、空以外の領域のみを抽出した画像に対しては第1の補正処理を実行するようにしてもよい。
【0060】
また第1実施形態の説明においては、処理対象の画像には、空領域と空以外の領域が混在していることを前提に説明した。しかしながら、画像に空領域が含まれない場合には、画像における全領域に対して第1補正処理を実行することになる。
【0061】
上述の実施形態では、晴天画像と霧霞画像とのペアを学習用画像として用いる例について説明した。しかしながら、同じ位置から同じ撮像条件において撮像した2つの画像がない場合もある。例えば、霧霞画像に対して、ダークチャンネル法などの公知の霧霞除去処理を用いて霧霞を低減した画像を生成し、教師データとしてもよい。
【0062】
また、領域の判定処理として、カラー画像における画素値から色相を算出する方法について説明したが、例えば画像に対応する距離画像を用いて空領域か否かを判定してもよい。
【0063】
なお、これまでの説明において、散乱光を発生させる要因として、霧や霧を例に挙げて説明したが、黄砂、PM2.5等の他の微粒子成分による散乱光によってコントラストが低下した画像に対しても同様に適用することができる。
【0064】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。入力I/F106は、例えばUSBやIEEE1394等のシリアルバスインタフェースである。
【符号の説明】
【0065】
202 学習用画像取得部
203 ブロック分割部
204 領域判定部
205 学習部
206 画像入力部
207 ブロック分割部
208 領域判定部
209 第1の補正部
210 第2の補正部
211 出力画像生成部