【文献】
ニューラルネットワークの基礎解説:仕組みや機械学習・ディープラーニングとの関係は,ビジネス+IT,日本,SBクリエイティブ株式会社,2017年 3月15日,p.1−9,[オンライン],[検索日 2019.12.23],URL,https://www.sbbit.jp/article/cont1/33345
(58)【調査した分野】(Int.Cl.,DB名)
ニューラルネットワークにより入力画像を処理し、前記ニューラルネットワークの出力に基づいて、前記入力画像における部分領域毎に異なるホワイトバランス調整値を算出する算出部
を備え、
前記算出部は、前記ニューラルネットワークにより前記入力画像を処理することによって前記入力画像に含まれる複数の画素のそれぞれに対応する複数のフィルタを生成し、前記入力画像に前記複数のフィルタを適用して得られた画像と前記入力画像とに基づいて、前記入力画像における前記部分領域毎に異なるホワイトバランス調整値を算出し、
前記ニューラルネットワークは、
前記入力画像を入力とし、前記複数のフィルタのフィルタ係数を出力し、
既知の照明光下で撮像されることによって得られた画像と、前記既知の照明光下で撮像されることによって得られた画像に前記既知の照明光に基づくホワイトバランス補正を施した画像とを用いた機械学習により構築されている
画像処理装置。
前記算出部は、前記入力画像に前記複数のフィルタを適用して得られた画像と前記入力画像とに基づく前記複数の画素毎の色温度を分類することによって、前記部分領域毎に前記ホワイトバランス調整値を算出する
請求項1に記載の画像処理装置。
前記算出部は、前記分類された複数の前記色温度を含む複数の色温度群のそれぞれについて、それぞれの色温度群に含まれる複数の色温度に対応する複数の画素を含む複数の部分領域を特定し、前記特定した前記複数の部分領域毎に前記ホワイトバランス調整値を算出する
請求項2に記載の画像処理装置。
前記算出部は、前記特定した前記複数の部分領域毎に、前記入力画像にホワイトバランス調整値を適用した画像と、前記入力画像に前記複数のフィルタを適用して得られた画像との差を繰り返し調整することよってホワイトバランス調整値を更新することにより、前記ホワイトバランス調整値を算出する
請求項3に記載の画像処理装置。
前記入力画像のカラーチャネル数をC(Cは自然数)として、前記複数のフィルタは、前記複数の画素のそれぞれについて、それぞれの画素及びそれぞれの画素の近傍の画素を含むN個の画素群にそれぞれ適用されるN個のフィルタ係数群をC×C個含む
請求項1から請求項4の何れか1項に記載の画像処理装置。
前記算出部は、前記C×C個の前記フィルタ係数群の値に基づいて前記ニューラルネットワークによる前記入力画像の処理結果の信頼値を算出し、前記入力画像に前記複数のフィルタを適用することによって得られた画像と前記入力画像とに基づいて前記複数の画素毎の色温度を算出し、算出した信頼値に応じて前記色温度を分類することによって、前記入力画像の前記部分領域毎に前記ホワイトバランス調整値を算出する
請求項5に記載の画像処理装置。
前記算出部は、前記C×C個の前記フィルタ係数群の値に基づいて前記ニューラルネットワークによる前記入力画像の処理結果の信頼値を算出し、算出した信頼値が予め定められた値以上であることを条件として、前記入力画像に前記複数のフィルタを適用することによって得られた画像と前記入力画像とに基づいて前記複数の画素毎の色温度を算出し、前記入力画像の前記部分領域毎に前記ホワイトバランス調整値を算出する
請求項5に記載の画像処理装置。
ニューラルネットワークにより入力画像を処理し、前記ニューラルネットワークの出力に基づいて、前記入力画像における部分領域毎に異なるホワイトバランス調整値を算出する段階
を備え、
前記入力画像における部分領域毎に異なるホワイトバランス調整値を算出する前記段階は、前記ニューラルネットワークにより前記入力画像を処理することによって前記入力画像に含まれる複数の画素のそれぞれに対応する複数のフィルタを生成し、前記入力画像に前記複数のフィルタを適用して得られた画像と前記入力画像とに基づいて、前記入力画像における前記部分領域毎に異なるホワイトバランス調整値を算出し、
前記ニューラルネットワークは、
前記入力画像を入力とし、前記複数のフィルタのフィルタ係数を出力し、
既知の照明光下で撮像されることによって得られた画像と、前記既知の照明光下で撮像されることによって得られた画像に前記既知の照明光に基づくホワイトバランス補正を施した画像とを用いた機械学習により構築されている
画像処理方法。
【発明を実施するための形態】
【0021】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施の形態は特許請求の範囲に係る発明を限定するものではない。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。以下の実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【0022】
特許請求の範囲、明細書、図面、及び要約書には、著作権による保護の対象となる事項が含まれる。著作権者は、これらの書類の何人による複製に対しても、特許庁のファイルまたはレコードに表示される通りであれば異議を唱えない。ただし、それ以外の場合、一切の著作権を留保する。
【0023】
本発明の様々な実施形態は、フローチャート及びブロック図を参照して記載されてよく、ここにおいてブロックは、(1)操作が実行されるプロセスの段階または(2)操作を実行する役割を持つ装置の「部」を表わしてよい。特定の段階及び「部」が、プログラマブル回路、及び/またはプロセッサによって実装されてよい。専用回路は、デジタル及び/またはアナログハードウェア回路を含んでよい。集積回路(IC)及び/またはディスクリート回路を含んでよい。プログラマブル回路は、再構成可能なハードウェア回路を含んでよい。再構成可能なハードウェア回路は、論理AND、論理OR、論理XOR、論理NAND、論理NOR、及び他の論理操作、フリップフロップ、レジスタ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)等のようなメモリ要素等を含んでよい。
【0024】
コンピュータ可読媒体は、適切なデバイスによって実行される命令を格納可能な任意の有形なデバイスを含んでよい。その結果、そこに格納される命令を有するコンピュータ可読媒体は、フローチャートまたはブロック図で指定された操作を実行するための手段を作成すべく実行され得る命令を含む、製品を備えることになる。コンピュータ可読媒体の例としては、電子記憶媒体、磁気記憶媒体、光記憶媒体、電磁記憶媒体、半導体記憶媒体等が含まれてよい。コンピュータ可読媒体のより具体的な例としては、フロッピー(登録商標)ディスク、ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、静的ランダムアクセスメモリ(SRAM)、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、ブルーレイ(RTM)ディスク、メモリスティック、集積回路カード等が含まれてよい。
【0025】
コンピュータ可読命令は、1または複数のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードの何れかを含んでよい。ソースコードまたはオブジェクトコードは、従来の手続型プログラミング言語を含む。従来の手続型プログラミング言語は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、JAVA(登録商標)、C++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語または同様のプログラミング言語でよい。コンピュータ可読命令は、汎用コンピュータ、特殊目的のコンピュータ、若しくは他のプログラム可能なデータ処理装置のプロセッサまたはプログラマブル回路に対し、ローカルにまたはローカルエリアネットワーク(LAN)、インターネット等のようなワイドエリアネットワーク(WAN)を介して提供されてよい。プロセッサまたはプログラマブル回路は、フローチャートまたはブロック図で指定された操作を実行するための手段を作成すべく、コンピュータ可読命令を実行してよい。プロセッサの例としては、コンピュータプロセッサ、処理ユニット、マイクロプロセッサ、デジタル信号プロセッサ、コントローラ、マイクロコントローラ等を含む。
【0026】
図1は、本実施形態に係る撮像装置100の外観斜視図の一例を示す図である。
図2は、本実施形態に係る撮像装置100の機能ブロックを示す図である。
【0027】
撮像装置100は、撮像部102及びレンズ部200を備える。撮像部102は、イメージセンサ120、画像処理部104、撮像制御部110、及びメモリ130を有する。
【0028】
イメージセンサ120は、CCDまたはCMOSにより構成されてよい。イメージセンサ120は、レンズ部200が有するレンズ210を介して光を受光する。イメージセンサ120は、レンズ210を介して結像された光学像の画像データを画像処理部104に出力する。
【0029】
撮像制御部110及び画像処理部104は、CPUまたはMPUなどのマイクロプロセッサ、MCUなどのマイクロコントローラなどにより構成されてよい。メモリ130は、コンピュータ可読可能な記録媒体でよく、SRAM、DRAM、EPROM、EEPROM、及びUSBメモリなどのフラッシュメモリの少なくとも1つを含んでよい。メモリ130は、撮像制御部110がイメージセンサ120などを制御するのに必要なプログラム、画像処理部104が画像処理を実行するのに必要なプログラム等を格納する。メモリ130は、撮像装置100の筐体の内部に設けられてよい。メモリ130は、撮像装置100の筐体から取り外し可能に設けられてよい。
【0030】
撮像部102は、指示部162及び表示部160をさらに有してよい。指示部162は、撮像装置100に対する指示をユーザから受け付けるユーザインタフェースである。表示部160は、イメージセンサ120により撮像され、画像処理部104により処理された画像、撮像装置100の各種設定情報などを表示する。表示部160は、タッチパネルで構成されてよい。
【0031】
撮像制御部110は、レンズ部200及びイメージセンサ120を制御する。例えば、撮像制御部110は、レンズ210の焦点位置や焦点距離の調整を制御する。撮像制御部110は、ユーザからの指示を示す情報に基づいて、レンズ部200が備えるレンズ制御部220に制御命令を出力することにより、レンズ部200を制御する。
【0032】
レンズ部200は、レンズ210、レンズ駆動部212、レンズ制御部220、及びメモリ222を有する。レンズ210は、少なくとも1つのレンズを含んでよい。例えば、レンズ210は、フォーカスレンズ及びズームレンズを含んでよい。レンズ210が含むレンズのうちの少なくとも一部または全部は、レンズ210の光軸に沿って移動可能に配置される。レンズ部200は、撮像部102に対して着脱可能に設けられる交換レンズであってよい。
【0033】
レンズ駆動部212は、レンズ210が含むレンズのうちの少なくとも一部または全部を、レンズ210の光軸に移動させる。レンズ駆動部212は、レンズ210が含むレンズのうちの少なくとも一部又は全部を、レンズ210の光軸に沿って移動させるモータを含む。レンズ制御部220は、撮像部102からのレンズ制御命令に従って、レンズ駆動部212を駆動して、レンズ210が含むズームレンズやフォーカスレンズを光軸方向に沿って移動させることで、ズーム動作やフォーカス動作の少なくとも一方を実行する。レンズ制御命令は、例えば、ズーム制御命令、及びフォーカス制御命令等である。
【0034】
メモリ222は、レンズ駆動部212を介して移動するフォーカスレンズやズームレンズ用の制御値を記憶する。メモリ222は、SRAM、DRAM、EPROM、EEPROM、及びUSBメモリなどのフラッシュメモリの少なくとも1つを含んでよい。
【0035】
撮像制御部110は、指示部162等を通じてユーザからの指示を示す情報に基づいて、イメージセンサ120に制御命令を出力することにより、イメージセンサ120に撮像動作の制御を含む制御を実行する。イメージセンサ120により撮像された画像は、画像処理部104により処理されて、メモリ130に格納される。
【0036】
画像処理部104は、生成部142と、算出部144と、調整部146とを備える。生成部142は、イメージセンサ120により撮像された画像から算出部144に入力される入力画像を生成する。算出部144は、ニューラルネットワークにより入力画像を処理し、ニューラルネットワークの出力に基づいて、入力画像における部分領域毎に異なるホワイトバランス調整値を算出する。ニューラルネットワークとしては、畳み込みニューラルネットワーク(CNN)を適用できる。ニューラルネットワークは、少なくとも1回の畳み込み演算の処理を含む。ニューラルネットワークは、例えば、入力画像を処理するための複数のパラメータを有し、少なくも1回の畳み込み演算を行う処理を含む関数に相当する。当該関数は、学習データ等を用いて複数のパラメータの調整が完了している場合、学習済みモデルとも呼ばれる。
【0037】
算出部144は、ニューラルネットワークにより入力画像を処理することによって入力画像に含まれる複数の画素のそれぞれに対応する複数のフィルタを生成し、入力画像に複数のフィルタを適用して得られた画像と入力画像とに基づいて、入力画像における部分領域毎に異なるホワイトバランス調整値を算出する。
【0038】
算出部144は、入力画像に複数のフィルタを適用して得られた画像と入力画像とに基づく複数の画素毎の照明ベクトルをクラスタリングすることによって、部分領域毎にホワイトバランス調整値を算出する。例えば、算出部144は、クラスタリングされた複数の照明ベクトルを含む複数の照明ベクトル群のそれぞれについて、それぞれの照明ベクトル群に含まれる複数の照明ベクトルに対応する複数の画素を含む複数の部分領域を特定し、特定した複数の部分領域毎にホワイトバランス調整値を算出する。算出部144は、特定した複数の部分領域毎に、入力画像にホワイトバランス調整値を適用した画像と、入力画像に複数のフィルタを適用して得られた画像との差に基づく反復フィッティングによってホワイトバランス調整値を更新することにより、ホワイトバランス調整値を算出してよい。照明ベクトルとは、例えば、ホワイトバランスのゲインに相当する。照明ベクトルは、例えば、色温度に相当する。クラスタリングとは、いわゆる分類に相当する用語である。反復フィッティングとは、繰り返し計算して所望の値に近づけることである。
【0039】
入力画像のカラーチャネル数をCとして、複数のフィルタは、複数の画素のそれぞれについて、それぞれの画素及びそれぞれの画素の近傍の画素を含むN個の画素群にそれぞれ適用されるN個のフィルタ係数群をC×C個含む。算出部144は、C×C個のフィルタ係数群の値に基づいてニューラルネットワークによる入力画像の処理結果の信頼値を算出し、入力画像に複数のフィルタを適用することによって得られた画像と入力画像とに基づいて複数の画素毎の照明ベクトルを生成し、算出した信頼値に応じて照明ベクトルをクラスタリングすることによって、入力画像の部分領域毎にホワイトバランス調整値を算出してよい。また、算出部144は、C×C個のフィルタ係数群の値に基づいてニューラルネットワークによる入力画像の処理結果の信頼値を算出し、算出した信頼値が予め定められた値以上であることを条件として、入力画像に複数のフィルタを適用することによって得られた画像と入力画像とに基づいて複数の画素毎の照明ベクトルを生成し、入力画像の部分領域毎にホワイトバランス調整値を算出してよい。C、Nは自然数である。
【0040】
算出部144は、撮像画像から生成された入力画像をニューラルネットワークにより処理し、ニューラルネットワークの出力に基づいて、入力画像における部分領域毎に異なるホワイトバランス調整値を算出してよい。調整部146は、算出部144が部分領域毎に算出したホワイトバランス調整値のそれぞれを、撮像画像における部分領域に対応する部分領域にそれぞれ適用することによって、撮像画像にホワイトバランス調整を施す。なお、調整部146により撮像画像にホワイトバランス調整が施された後、画像処理部104は、ホワイトバランス調整が施された画像に、ホワイトバランス処理以外の画像処理を施して、メモリ130に格納してよい。
【0041】
図3は、ホワイトバランス調整部140において行われるホワイトバランス処理を模式的に示す。ホワイトバランス調整部140は、CNN320によって入力画像310を処理することによって、参照画像340を生成するための処理パラメータ330を生成する。
【0042】
まず、CNN320を含む処理の概要を説明する。CNN320は、入力画像310を入力とし、処理パラメータ330を出力する。入力画像310のサイズはW×Hである。W及びHには128等の値を適用できる。入力画像310の各画素は、C個の画素値を持つ。Cはカラーチャネル数を表す。入力画像310がカラー画像である場合、C=3であってよい。C=3の場合、入力画像310は、例えば、R、G及びBの3個の画素値を持つ。入力画像がモノクロ画像である場合、C=1であってよい。W、Hは自然数である。
【0043】
処理パラメータ330は、W×H×K×K×C×C個のフィルタ係数の情報を持つ。
図3において、処理パラメータ330は、W×Hのサイズの画素のそれぞれに対して、K×K×C×C個のチャネルを有するものとして示されている。つまり、処理パラメータ330は、W×H個の各画素に適用されるK×K×C×C個のフィルタ係数を持つ。Kは自然数である。
【0044】
Kは、入力画像310から参照画像340を生成する場合に施す畳み込み演算のカーネルサイズを表す。Kの値は5であってよい。K=5の場合、畳み込み演算は、注目画素の近傍2画素の範囲内の25個の画素の画素値にそれぞれフィルタ係数を乗算することによって行われる。Kには、1以上の値を適用できる。なお、畳み込み演算のカーネルサイズはK×Kに限られない。畳み込み演算で適用されるフィルタ係数の数は、任意の正数Nであってよい。
【0045】
図3のブロック332において、処理パラメータ330は、C×C行列の要素のそれぞれに、H×WのサイズのフィルタをK×K個配置したものとして示される。参照画像340は、入力画像310に処理パラメータ330を適用することによって生成される。
【0046】
例えば、フィルタ333RR、フィルタ333RG、及びフィルタ333RBは、それぞれ入力画像310のR画素、入力画像310のG画素、及び入力画像310のB画素に適用される。例えば、入力画像310のR画素のそれぞれに、フィルタ333RRにおいて画素位置に対応する位置のK×K個のフィルタ係数群をカーネルとして用いた畳み込み演算が適用される。そして、参照画像340のR画素のそれぞれの画素値は、入力画像310のR画素にフィルタ333RRが適用された画素値と、入力画像310のG画素にフィルタ333RGが適用された画素値と、入力画像310のB画素にフィルタ333RBが適用された画素値の和により算出される。このように、入力画像310に処理パラメータ330を適用することによって、W×Hのサイズを持ち、C個のカラーチャネルを持つ参照画像340が得られる。
【0047】
次に、機械学習によってCNN320を構築する場合の処理を説明する。機械学習を行う場合、入力画像310としての複数の訓練画像がCNN320に入力される。訓練画像は、例えば既知の照明光下で撮像されることによって得られた画像をW×Hのサイズにダウンサンプリングすることによって得られる。教師画像350は、既知の照明光下で撮像されることによって得られた画像に、既知の照明光に基づくホワイトバランス補正を施した画像をW×Hのサイズにダウンサンプリングすることによって得られる。
【0048】
入力画像310として入力された複数の訓練画像のそれぞれについて、CNN320から得られた処理パラメータ330を訓練画像に適用することによって、参照画像340が得られる。複数の訓練画像のそれぞれについて、参照画像340及び教師画像350を入力とする損失関数を最小化するCNN320のパラメータを決定することによって、CNN320が生成される。
【0049】
損失関数としては、以下の式を適用できる。
【数1】
ここで、λ1、λ2、及びλ3は、予め定められた重み付け係数である。F
i,jは、
図3のブロック332に示すC×C行列における第i行第j列のフィルタを表す。f(X)は、フィルタを入力画像310に適用することを示す。すなわち、f(X)は、機械学習により得られた処理パラメータ330を入力画像310に適用することを表す。
【0050】
損失関数の第1項のl1及び第2項のl2は、次の2式で表される。
【数2】
ここで、
【数3】
は有限差分演算子である。
【数4】
は参照画像を表す。Y
*は教師画像を表す。aとしては、0.055を適用できる。
【0051】
損失関数の第3項のR(F)は、次の式で表される。
【数5】
【0052】
R(F)には、
図3のブロック332に示すC×C行列の非対角要素のフィルタのフィルタ係数が反映される。C×C行列の非対角要素のフィルタは、カラーチャネル間の相互の作用を示す。例えば、フィルタ333RBは、入力画像のBチャネルの情報が参照画像340のRチャネルの情報に反映されることを示す。もし教師画像を用いてCNN320が高い学習精度で機械学習できた状態でCNN320に教師画像を入力すると、CNN320により得られる処理パラメータ330におけるC×C行列の非対角要素のフィルタのフィルタ係数の大きさは微小値となる。よって、R(F)が大きい場合は、高い精度で学習できていない状態であると考えることができる。損失関数にR(F)を考慮することで、高い精度で機械学習できたか否かを判断することができる。
【0053】
なお、機械学習後のCNN320を用いて撮像画像にホワイトバランス調整を施す場合、CNN320で撮像画像を処理することによって得られた処理パラメータ330におけるC×C行列の非対角要素のフィルタのフィルタ係数は、撮像画像に対して正しいホワイトバランス調整が可能な処理パラメータ330が得られたか否かを判断するための指標とすることができる。
図4は、CNN320によって入力画像410を処理することによって得られた処理パラメータを示す。
図4に示す処理パラメータは、CNN320においてC=3、K=1を適用して機械学習されたものであるとする。この場合、処理パラメータは、H×Wのサイズの9つのフィルタ433を含む。
【0054】
入力画像410は、異なる照明光源下で撮像された画像を部分領域411及び部分領域412に含む画像である。この場合、対角成分のフィルタ433(R−R、G−G、B−B)のフィルタのフィルタ係数は、それぞれの照明光源の各色の色に応じて、部分領域411及び部分領域412のそれぞれの中ではほぼ一様の値を持つ。
【0055】
これに対し、3×3行列の非対対角成分を見ると、特に部分領域411と部分領域412との境界付近において、大きなフィルタ係数が得られた領域が存在する。このような領域では、ホワイトバランスを正しく補正できる処理パラメータ330が得られていない可能性がある。
【0056】
そこで、ホワイトバランスを正しく補正できる処理パラメータ330が得られたか否かの指標として、画素pのカラーチャネルcに対する信頼値Conf
cpを、次の式により定める。
【数6】
ここで、V
pは、画素pを含む画素pのK×K個の画素を表す。f
pc,iは、K×K個の画素に適用される畳み込み演算のカーネルとなるフィルタ係数を表す。
【0057】
経験的に、信頼度は、Conf
cpの画素にわたる平均値に比例し、Conf
cpの画素にわたる分散に反比例する。次の式で表されるように、カラーチャネルcにわたって合計することで、信頼値Confを次の式によって定める。
【数7】
ここで、εは、零除算を避けるための微小値である。信頼値を用いた制御については、撮像画像に対してホワイトバランス調整を行う処理に関連して後述する。
【0058】
次に、撮像装置100において、イメージセンサ120で得られた撮像画像にホワイトバランス調整を施す処理を、
図3を参照して説明する。上述した機械学習によって構築されたCNN320のパラメータは、撮像装置100のメモリ130に格納されている。ホワイトバランス調整部140は、メモリ130に格納されたCNN320のパラメータを用いて、CNN320による入力画像310の処理を実行して、処理パラメータ330を生成する。
【0059】
生成部142は、イメージセンサ120により得られた撮像画像をW×Hのサイズにダウンサンプリングすることによって、CNN320への入力画像310を生成する。算出部144は、メモリ130に格納されたCNN320のパラメータを用いて、撮像画像から生成された入力画像310をCNN320で処理することにより、処理パラメータ330を算出する。
【0060】
算出部144は、処理パラメータ330を入力画像310に適用して、参照画像340を生成する。算出部144は、参照画像340及び入力画像310に基づいて、画素毎に照明ベクトル360を算出する。これにより、W×H個の照明ベクトルが得られる。
【0061】
算出部144は、照明ベクトルをクラスタリングすることにより、全体領域370を、類似する照明ベクトルが算出された部分領域R1及び部分領域R2をと決定する。算出部144は、部分領域R1に対応するホワイトバランス調整値371と、部分領域R2に対応するホワイトバランス調整値372とを算出する。
【0062】
図5は、撮像画像500に対して照明ベクトルをクラスタリングするまでの処理を示す。入力画像510は、生成部142が撮像画像500から生成した画像である。参照画像540は、入力画像510をCNN320で処理することによって得られた処理パラメータ330を入力画像510に適用することによって得られた画像である。算出部144は、3個のカラーチャネルのそれぞれについて、入力画像510を参照画像540で画素毎に除算することによって、W×H個の照明ベクトルを算出する。算出部144は、照明ベクトルをクラスタリングすることにより、W×Hのサイズの全体領域を、領域561と領域562とに分割する。
【0063】
図6は、照明ベクトルのクラスタリングを概念的に説明する図である。
図6において、V1、V2、V3、及びV4は、W×H個の照明ベクトルのうちの4つの照明ベクトルを示す。算出部144は、次の式によって算出されるE
ijを指標として、クラスタリングする。
【数8】
ここで、σは分散値である。Ii及びIjは、それぞれ添え字i及びjで識別される照明ベクトルを表す。算出部144は、同じ部分領域にクラスタリングされる照明ベクトルのE
ijが最小化され、異なる部分領域にクラスタリングされる照明ベクトル同士のE
ijが最大化されるように、部分領域561及び部分領域562を決定する。
【0064】
なお、クラスタリングは、上述した信頼値が予め定められた閾値より低い画素における照明ベクトルを用いずに行われてよい。上述した信頼値が予め定められた閾値より低い画素における照明ベクトルを、信頼値が予め定められた閾値以上の画素における照明ベクトルより小さい重み付けで重み付けすることによって、クラスタリングしてもよい。
【0065】
続いて、算出部144は、部分領域561及び部分領域562のそれぞれのホワイトバランス調整値を算出する。例えば、算出部144は、入力画像510における部分領域561にホワイトバランス調整値を適用した画像と、参照画像540における部分領域561の画像との差が最小になるように、反復フィッティングにより第1のホワイトバランス調整値を算出する。第1のホワイトバランス調整値としては、Rゲイン及びBゲインを例示することができる。同様に、算出部144は、入力画像510における部分領域562にホワイトバランス調整値を適用した画像と、参照画像540における部分領域562の画像との差が最小になるように、反復フィッティングにより、第2のホワイトバランス調整値を算出する。第2のホワイトバランス調整値としては、Rゲイン及びBゲインを例示することができる。このように、算出部144は、部分領域561及び部分領域562のそれぞれに対して、ホワイトバランス調整値を別々に算出する。
【0066】
調整部146は、撮像画像500における部分領域561に対応する領域に第1のホワイトバランス調整値を適用する。また、調整部146は、撮像画像500における部分領域562に対応する領域に、第2のホワイトバランス調整値を適用する。これにより、ホワイトバランスが適用された画像を生成する。
【0067】
なお、以上の説明では、主として照明ベクトルをクラスタリングすることによって2つの部分領域のホワイトバランス調整値を算出する場合を説明した。しかし、単一光源で照明された被写体の画像に対しては、大半の照明ベクトルが1つにクラスタリングされる場合がある。このように、予め定められた数以上の照明ベクトルが同一クラスタにクラスタリングされた場合、算出部144は、
図3に示されるように、画像の全体領域に対して反復フィッティングすることによって、単一のホワイトバランス調整値381としてのRゲイン及びBゲインを算出してもよい。
【0068】
図7は、上述したホワイトバランス調整を施した画像の具体例を示す。
図7には、3個の撮像画像のそれぞれに対して、入力画像、クラスタリングされた部分画像、参照画像、画像全体でホワイトバランス調整を施した画像、部分領域毎にホワイトバランス調整を施した画像、及び正解画像を示す。
【0069】
図7の撮像画像は、光源が異なる2種類の画像を組み合わせたものである。そのため、画像全体にわたって1つのホワイトバランス調整値でホワイトバランス調整を施した場合、正解画像とは異なる色合いの画像が得られている。これに対し、部分領域毎にホワイトバランス調整を行うことで、正解画像に近い色合いの画像が得られていることが分かる。
【0070】
図8は、撮像装置100によるホワイトバランス調整の手順の一例を示すフローチャートである。ここでは、
図3で示した処理の流れに沿って説明する。
【0071】
S700において、生成部142は、撮像画像をダウンサンプリングすることによって、CNN320への入力画像を生成する。S702において、算出部144は、S700で生成した入力画像をCNN320により処理する。これにより、処理パラメータ330が得られる。
【0072】
S704において、算出部144は、信頼値Confが閾値以上であるか否かを判断する。信頼値Confが閾値以上である場合、算出部144は、S706において、入力画像310に処理パラメータ330を適用して、参照画像340を生成する。算出部144は、S708において、入力画像310及び参照画像340を用いて照明ベクトルを画素毎に算出して、照明ベクトルをクラスタリングする。これにより、算出部144は、部分領域R1及び部分領域R2を特定する。
【0073】
続いて、算出部144は、S710において、部分領域R1及びR2のうち、ホワイトバランス調整値の算出処理を行っていない部分領域を選択する。S712において、算出部144は、反復フィッティングにより、一対のRゲインBゲインを、ホワイトバランス調整値として算出する。
【0074】
S714において、算出部144は、部分領域R1及びR2のうち、ホワイトバランス調整値の算出処理を行っていない部分領域があるか否かを判断する。ホワイトバランス調整値の算出処理を行っていない部分領域がある場合、S710に処理を移行する。ホワイトバランス調整値の算出処理を行っていない部分領域がない場合、S716において、調整部146は、撮像画像に、S712で部分領域毎に算出したホワイトバランス調整値を適用して、ホワイトバランス調整を施す。具体的には、調整部146は、撮像画像における部分領域R1に対応する領域に、部分領域R1において特定したホワイトバランス調整値を適用し、撮像画像における部分領域R2に対応する領域に、部分領域R2において特定したホワイトバランス調整値を適用して、メモリ130に格納する。S716の処理が完了すると本フローチャートの処理を終了する。
【0075】
なお、704において、信頼値が閾値未満の場合、S720において、調整部146は、撮像装置100において予め定められた、CNN320を用いるホワイトバランス調整とは異なる方式のホワイトバランス調整を撮像画像に適用して、本フローチャートの処理を終了する。
【0076】
以上の通り、撮像装置100によれば、白色に近い領域が存在しない画像や、領域毎に異なる光源で照明された画像に対して、適切なホワイトバランス調整値を算出することが可能になる。
【0077】
上記のような撮像装置100は、移動体に搭載されてもよい。撮像装置100は、
図9に示すような、無人航空機(UAV)に搭載されてもよい。UAV10は、UAV本体20、ジンバル50、複数の撮像装置60、及び撮像装置100を備えてよい。ジンバル50、及び撮像装置100は、撮像システムの一例である。UAV10は、推進部により推進される移動体の一例である。移動体とは、UAVの他、空中を移動する他の航空機などの飛行体、地上を移動する車両、水上を移動する船舶等を含む概念である。
【0078】
UAV本体20は、複数の回転翼を備える。複数の回転翼は、推進部の一例である。UAV本体20は、複数の回転翼の回転を制御することでUAV10を飛行させる。UAV本体20は、例えば、4つの回転翼を用いてUAV10を飛行させる。回転翼の数は、4つには限定されない。また、UAV10は、回転翼を有さない固定翼機でもよい。
【0079】
撮像装置100は、所望の撮像範囲に含まれる被写体を撮像する撮像用のカメラである。ジンバル50は、撮像装置100を回転可能に支持する。ジンバル50は、支持機構の一例である。例えば、ジンバル50は、撮像装置100を、アクチュエータを用いてピッチ軸で回転可能に支持する。ジンバル50は、撮像装置100を、アクチュエータを用いて更にロール軸及びヨー軸のそれぞれを中心に回転可能に支持する。ジンバル50は、ヨー軸、ピッチ軸、及びロール軸の少なくとも1つを中心に撮像装置100を回転させることで、撮像装置100の姿勢を変更してよい。
【0080】
複数の撮像装置60は、UAV10の飛行を制御するためにUAV10の周囲を撮像するセンシング用のカメラである。2つの撮像装置60が、UAV10の機首である正面に設けられてよい。更に他の2つの撮像装置60が、UAV10の底面に設けられてよい。正面側の2つの撮像装置60はペアとなり、いわゆるステレオカメラとして機能してよい。底面側の2つの撮像装置60もペアとなり、ステレオカメラとして機能してよい。複数の撮像装置60により撮像された画像に基づいて、UAV10の周囲の3次元空間データが生成されてよい。UAV10が備える撮像装置60の数は4つには限定されない。UAV10は、少なくとも1つの撮像装置60を備えていればよい。UAV10は、UAV10の機首、機尾、側面、底面、及び天井面のそれぞれに少なくとも1つの撮像装置60を備えてもよい。撮像装置60で設定できる画角は、撮像装置100で設定できる画角より広くてよい。撮像装置60は、単焦点レンズまたは魚眼レンズを有してもよい。
【0081】
遠隔操作装置300は、UAV10と通信して、UAV10を遠隔操作する。遠隔操作装置300は、UAV10と無線で通信してよい。遠隔操作装置300は、UAV10に上昇、下降、加速、減速、前進、後進、回転などのUAV10の移動に関する各種命令を示す指示情報を送信する。指示情報は、例えば、UAV10の高度を上昇させる指示情報を含む。指示情報は、UAV10が位置すべき高度を示してよい。UAV10は、遠隔操作装置300から受信した指示情報により示される高度に位置するように移動する。指示情報は、UAV10を上昇させる上昇命令を含んでよい。UAV10は、上昇命令を受け付けている間、上昇する。UAV10は、上昇命令を受け付けても、UAV10の高度が上限高度に達している場合には、上昇を制限してよい。
【0082】
図10は、本発明の複数の態様が全体的または部分的に具現化されてよいコンピュータ1200の一例を示す。コンピュータ1200にインストールされたプログラムは、コンピュータ1200に、本発明の実施形態に係る装置に関連付けられるオペレーションまたは当該装置の1または複数の「部」として機能させることができる。例えば、コンピュータ1200にインストールされたプログラムは、コンピュータ1200に、ホワイトバランス調整部140又は画像処理部104として機能させることができる。または、当該プログラムは、コンピュータ1200に当該オペレーションまたは当該1または複数の「部」の機能を実行させることができる。当該プログラムは、コンピュータ1200に、本発明の実施形態に係るプロセスまたは当該プロセスの段階を実行させることができる。そのようなプログラムは、コンピュータ1200に、本明細書に記載のフローチャート及びブロック図のブロックのうちのいくつかまたはすべてに関連付けられた特定のオペレーションを実行させるべく、CPU1212によって実行されてよい。
【0083】
本実施形態によるコンピュータ1200は、CPU1212、及びRAM1214を含み、それらはホストコントローラ1210によって相互に接続されている。コンピュータ1200はまた、通信インタフェース1222、入力/出力ユニットを含み、それらは入力/出力コントローラ1220を介してホストコントローラ1210に接続されている。コンピュータ1200はまた、ROM1230を含む。CPU1212は、ROM1230及びRAM1214内に格納されたプログラムに従い動作し、それにより各ユニットを制御する。
【0084】
通信インタフェース1222は、ネットワークを介して他の電子デバイスと通信する。ハードディスクドライブが、コンピュータ1200内のCPU1212によって使用されるプログラム及びデータを格納してよい。ROM1230はその中に、アクティブ化時にコンピュータ1200によって実行されるブートプログラム等、及び/またはコンピュータ1200のハードウェアに依存するプログラムを格納する。プログラムが、CR−ROM、USBメモリまたはICカードのようなコンピュータ可読記録媒体またはネットワークを介して提供される。プログラムは、コンピュータ可読記録媒体の例でもあるRAM1214、またはROM1230にインストールされ、CPU1212によって実行される。これらのプログラム内に記述される情報処理は、コンピュータ1200に読み取られ、プログラムと、上記様々なタイプのハードウェアリソースとの間の連携をもたらす。装置または方法が、コンピュータ1200の使用に従い情報のオペレーションまたは処理を実現することによって構成されてよい。
【0085】
例えば、通信がコンピュータ1200及び外部デバイス間で実行される場合、CPU1212は、RAM1214にロードされた通信プログラムを実行し、通信プログラムに記述された処理に基づいて、通信インタフェース1222に対し、通信処理を命令してよい。通信インタフェース1222は、CPU1212の制御の下、RAM1214、またはUSBメモリのような記録媒体内に提供される送信バッファ領域に格納された送信データを読み取り、読み取られた送信データをネットワークに送信し、またはネットワークから受信した受信データを記録媒体上に提供される受信バッファ領域等に書き込む。
【0086】
また、CPU1212は、USBメモリ等のような外部記録媒体に格納されたファイルまたはデータベースの全部または必要な部分がRAM1214に読み取られるようにし、RAM1214上のデータに対し様々なタイプの処理を実行してよい。CPU1212は次に、処理されたデータを外部記録媒体にライトバックしてよい。
【0087】
様々なタイプのプログラム、データ、テーブル、及びデータベースのような様々なタイプの情報が記録媒体に格納され、情報処理を受けてよい。CPU1212は、RAM1214から読み取られたデータに対し、本開示の随所に記載され、プログラムの命令シーケンスによって指定される様々なタイプのオペレーション、情報処理、条件判断、条件分岐、無条件分岐、情報の検索/置換等を含む、様々なタイプの処理を実行してよく、結果をRAM1214に対しライトバックする。また、CPU1212は、記録媒体内のファイル、データベース等における情報を検索してよい。例えば、各々が第2の属性の属性値に関連付けられた第1の属性の属性値を有する複数のエントリが記録媒体内に格納される場合、CPU1212は、第1の属性の属性値が指定される、条件に一致するエントリを当該複数のエントリの中から検索し、当該エントリ内に格納された第2の属性の属性値を読み取り、それにより予め定められた条件を満たす第1の属性に関連付けられた第2の属性の属性値を取得してよい。
【0088】
上で説明したプログラムまたはソフトウェアモジュールは、コンピュータ1200上またはコンピュータ1200近傍のコンピュータ可読記憶媒体に格納されてよい。また、専用通信ネットワークまたはインターネットに接続されたサーバーシステム内に提供されるハードディスクまたはRAMのような記録媒体が、コンピュータ可読記憶媒体として使用可能であり、それによりプログラムを、ネットワークを介してコンピュータ1200に提供する。
【0089】
特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【0090】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【解決手段】画像処理装置は、ニューラルネットワークにより入力画像を処理し、ニューラルネットワークの出力に基づいて、入力画像における部分領域毎に異なるホワイトバランス調整値を算出する算出部を備えてよい。画像処理方法は、ニューラルネットワークにより入力画像を処理し、ニューラルネットワークの出力に基づいて、入力画像における部分領域毎に異なるホワイトバランス調整値を算出する段階を備えてよい。