(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】学習データの製造方法、学習方法、学習データ製造装置、学習装置、およびプログラム
(51)【国際特許分類】
G06T 5/73 20240101AFI20240109BHJP
G06T 1/40 20060101ALI20240109BHJP
【FI】
G06T5/00 710
G06T1/40
(21)【出願番号】P 2021003864
(22)【出願日】2021-01-14
【審査請求日】2023-03-23
(31)【優先権主張番号】P 2020040026
(32)【優先日】2020-03-09
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100110412
【氏名又は名称】藤元 亮輔
(74)【代理人】
【識別番号】100104628
【氏名又は名称】水本 敦也
(74)【代理人】
【識別番号】100121614
【氏名又は名称】平山 倫也
(72)【発明者】
【氏名】鬼木 崇
【審査官】岡本 俊威
(56)【参考文献】
【文献】特開2020-036310(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 5/00
G06T 1/40
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークの学習に用いる学習データの製造方法であって、
原画像を取得する工程と、
前記原画像に対して第1のぼけを付加することで訓練画像を生成する工程と、
前記原画像に対して第2のぼけを付加することで正解画像を生成する工程とを有し、
前記第2のぼけの量は、前記第1のぼけの量よりも少な
く、
前記第1のぼけ及び前記第2のぼけは、互いに同じ光学情報に基づいて生成されることを特徴とする製造方法。
【請求項2】
前記光学情報は像高に応じて異なる複数の値であることを特徴とする請求項
1に記載の製造方法。
【請求項3】
前記複数の値は、光学伝達関数または点像分布関数に基づく値であることを特徴とする請求項
2に記載の製造方法。
【請求項4】
前記第2のぼけの量は、前記原画像の位置に応じて異なることを特徴とする請求項1乃至
3のいずれか一項に記載の製造方法。
【請求項5】
前記第2のぼけの量は、前記原画像の第1の像高に対応する位置よりも、該第1の像高よりも高い第2の像高に対応する位置において多いことを特徴とする請求項
4に記載の製造方法。
【請求項6】
前記第1のぼけの量は、前記原画像の位置に応じて異なることを特徴とする請求項1乃至
5のいずれか一項に記載の製造方法。
【請求項7】
前記第1のぼけの量は、前記原画像の第1の像高に対応する位置よりも、該第1の像高よりも高い第2の像高に対応する位置において多いことを特徴とする請求項
6に記載の製造方法。
【請求項8】
前記第2のぼけの量は、前記原画像の輝度値に基づいて決定されることを特徴とする請求項1乃至
4のいずれか一項に記載の製造方法。
【請求項9】
前記第2のぼけの量は、前記原画像における第1の輝度値の領域よりも、該第1の輝度値よりも低い第2の輝度値の領域において
少ないことを特徴とする請求項
8に記載の製造方法。
【請求項10】
請求項1乃至
9のいずれか一項に記載の製造方法により生成された学習データを用いたニューラルネットワークの学習を行う学習方法であって、
前記訓練画像を前記ニューラルネットワークに入力することで処理画像を生成する工程と、
前記正解画像と前記処理画像とに基づいて前記ニューラルネットワークのパラメータを更新する工程とを有することを特徴とする学習方法。
【請求項11】
ニューラルネットワークの学習に用いる学習データを製造する製造装置であって、
原画像を取得する第1の生成手段と、
前記原画像に対して第1のぼけを付加することで訓練画像を生成する第2の生成手段と、
前記原画像に対して第2のぼけを付加することで正解画像を生成する第3の生成手段とを有し、
前記第2のぼけの量は、前記第1のぼけの量よりも少な
く、
前記第1のぼけ及び前記第2のぼけは、互いに同じ光学情報に基づいて生成されることを特徴とする製造装置。
【請求項12】
請求項1乃至
9のいずれか一項に記載の製造方法により生成された学習データを用いたニューラルネットワークの学習を行う学習装置であって、
前記訓練画像を前記ニューラルネットワークに入力することで処理画像を生成する生成手段と、
前記正解画像と前記処理画像とに基づいて前記ニューラルネットワークのパラメータを更新する更新手段とを有することを特徴とする学習装置。
【請求項13】
請求項1乃至
9のいずれか一項に記載の製造方法をコンピュータに実行させることを特徴とするプログラム。
【請求項14】
請求項1
3に記載のプログラムを記憶していることを特徴とする記憶媒体。
【請求項15】
請求項1乃至
9のいずれか一項に記載の製造方法により生成された学習データを用いたニューラルネットワークの学習により学習済みモデルを製造する製造方法であって、
前記訓練画像を前記ニューラルネットワークに入力することで処理画像を生成する工程と、
前記正解画像と前記処理画像とに基づいて前記ニューラルネットワークのパラメータを更新する工程と、を有することを特徴とする製造方法。
【請求項16】
請求項1
2に記載の学習装置からニューラルネットワークを取得する工程と、
入力画像を前記ニューラルネットワークに入力することで推定画像を生成する工程とを有することを特徴とする画像処理方法。
【請求項17】
前記入力画像は撮像により得られた画像であり、
前記推定画像は、前記ニューラルネットワークによって前記撮像において発生した前記入力画像におけるぼけを補正することで生成されることを特徴とする請求項1
6に記載の画像処理方法。
【請求項18】
請求項1
6又は1
7に記載の画像処理方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディープラーニングに用いる学習データの製造方法、およびディープラーニングを用いた学習方法に関する。
【背景技術】
【0002】
特許文献1には、RAW画像を入力とする多層のニューラルネットワークを学習する際に、ガンマ補正の影響を考慮することで、高解像度化や高コントラスト化(鮮鋭化)に伴うアンダーシュートやリンギングを抑制する手法が開示されている。非特許文献1には、様々な回帰問題に対して汎用的に適用可能なネットワーク構成が開示されている。また非特許文献1には、ネットワークを用いて、入力画像のアップサンプリング、JPEGデブロッキング(圧縮ノイズの除去)、デノイジング、ノンブラインドなデブラー、または、インペインティングを実行することが開示されている。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】X. Mao, C. Shen, Y. Yang, “Image Restoration Using Convolutional Auto-encoders with Symmetric Skip Connections”,https://arxiv.org/abs/1606.08921.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1および非特許文献1に開示された方法では、入力する画像によってはアンダーシュートやリンギング等を抑制できず、補正画像(推定画像)にこれらの弊害が生じることがある。具体的には、入力する画像に高輝度な被写体があった場合や、光学系の収差によって被写体が大きくぼけていた場合であり、特に被写体の輝度値が大きく輝度飽和している場合に弊害が発生しやすい。これらの画像を学習データとして用いた場合、補正量に伴うアンダーシュートやリンギング等の弊害が発生する可能性がある。
【0006】
そこで本発明は、ニューラルネットワークに入力する画像に高輝度な被写体や、光学系の収差により大きくぼけた被写体を含む場合でも、弊害が発生する可能性を低減しつつ高精度な補正を実現することが可能な学習データの製造方法等を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一側面としての学習データの製造方法は、ニューラルネットワークの学習に用いる学習データの製造方法であって、原画像を取得する工程と、前記原画像に対して第1のぼけを付加することで訓練画像を生成する工程と、前記原画像に対して第2のぼけを付加することで正解画像を生成する工程とを有し、前記第2のぼけの量は、前記第1のぼけの量よりも少なく、前記第1のぼけ及び前記第2のぼけは、互いに同じ光学情報に基づいて生成されることを特徴とする。
【0008】
本発明の他の目的及び特徴は、以下の実施例において説明される。
【発明の効果】
【0009】
本発明によれば、ニューラルネットワークに入力する画像に高輝度な被写体や、光学系の収差により大きくぼけた被写体を含む場合でも、弊害が発生する可能性を低減しつつ高精度な補正を実現することが可能な学習データの製造方法等を提供することができる。
【図面の簡単な説明】
【0010】
【
図1】実施例1における学習データの製造方法のフローチャートである。
【
図2】実施例1及び3における画像処理システムのブロック図である。
【
図3】実施例1及び3における画像処理システムの外観図である。
【
図4】各実施例における光学情報に関する説明図である。
【
図5】実施例及1及び3における補正マップに関する説明図である。
【
図6】各実施例における学習工程のフローチャートである。
【
図7】各実施例における畳み込みニューラルネットワークを示す図である。
【
図8】各実施例における画像の色成分に関する説明図である。
【
図9】実施例1及び2における推定工程のフローチャートである。
【
図10】実施例2における画像処理システムのブロック図である。
【
図11】実施例2における画像処理システムの外観図である。
【
図12】実施例2における学習データの製造方法のフローチャートである。
【
図13】実施例2における補正マップに関する説明図である。
【
図14】実施例3における学習データの製造方法のフローチャートである。
【
図15】実施例3における光学性能とぼかし量の説明図である。
【
図16】実施例3における推定工程のフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明の実施例について、図面を参照しながら詳細に説明する。各図において、同一の部材については同一の参照符号を付し、重複する説明は省略する。
【0012】
まず、以下に各実施例において使用される用語を定義する。各実施例は、ディープラーニングによって回帰問題を解き、入力画像から様々な出力画像を推定する方法に関する。ディープラーニングとは、多層のニューラルネットワークを用いた機械学習である。大量の訓練画像とそれに対応する正解画像(得たい出力)のペアから、ネットワークパラメータ(ウエイトとバイアス)を学習することで、未知の入力画像に対しても高精度な推定が可能となる。
【0013】
多層のニューラルネットワークを用いた画像処理には、ネットワークパラメータ(ウエイトとバイアス)を更新するための処理工程と、更新されたパラメータを用いて未知の入力に対して推定を行う処理工程の二つが存在する。以下、前者を学習工程と呼び、後者を推定工程と呼ぶ。
【0014】
次に、学習工程と推定工程における画像の名称を定める。ネットワークへ入力する画像を入力画像とし、特に学習工程の際に用いる、正解画像が既知の入力画像を訓練画像と呼称する。ネットワークから出力された画像を出力画像とし、特に推定工程の際の出力画像を推定画像と呼称する。ネットワークの入力画像と、正解画像はRAW画像である。ここでRAW画像とは、撮像素子から出力された未現像の画像データであり、各画素の光量と信号値とが略線型の関係にある。ユーザが画像を鑑賞する前にRAW画像は現像されるが、その際にガンマ補正が実行される。ガンマ補正は、例えば入力の信号値を冪乗する処理であり、その冪指数として1/2.2などが用いられる。また、各実施例の学習データ(学習画像)の製造方法では、弊害を抑制しつつ高精度な補正を実現するための学習に用いる調整された正解画像を生成する。各実施例において、正解画像または訓練画像を生成する際の元となる無劣化相当の画像を原画像と呼称する。
【0015】
各実施例の具体的な説明へ入る前に、本発明の要旨を述べる。本発明では、画像に高輝度な被写体や、光学系の収差により大きくぼけた被写体を含むような場合であっても、弊害なく補正できるようなニューラルネットワークを構築すること、及びそのために必要な学習データを提供することを目的とする。そのために、学習データの正解画像に原画像をそのまま用いるのではなく、調整された正解画像を用いることを特徴とする。この調整された正解画像とは、高輝度部や高コントラスト部、収差の大きい領域等の弊害が発生しやすい場所において、原画像にぼけを付加した画像である。このような調整により、正解画像と訓練画像は鮮鋭度が画面の位置よって異なる。あるいは、訓練画像を鮮鋭化して生成してもよい。いずれかの方法により、正解画像を原画像と訓練画像の間のぼけ量(鮮鋭度)となるよう調整することができ、弊害が発生しやすい領域において原画像と訓練画像に比べて正解画像と訓練画像を差異が小さくことができる。このように作成した正解画像と訓練画像を用いて学習することにより、弊害の発生の可能性を低減しつつ高精度な補正を実現するための学習モデルの生成が可能となる。
【実施例1】
【0016】
本発明の実施例1における画像処理システムに関して説明する。本実施例では、まず多層のニューラルネットワークの学習に用いる学習データを生成する。そして、生成した学習データを用いて学習し、学習したモデルを用いて補正処理を実行する。
【0017】
図2は、本実施例における画像処理システム100のブロック図である。
図3は、画像処理システム100の外観図である。画像処理システム100は、学習装置(画像処理装置)101、撮像装置102、画像推定装置(画像処理装置)103、表示装置104、記録媒体105、出力装置106、ネットワーク107、および、学習データ製造装置(画像処理装置)108を有する。
【0018】
学習データ製造装置108は、学習工程に用いる学習データを製造する装置であり、記憶部108a、取得部108b、および、生成部108cを有する。取得部108bは、原画像(第3の画像)、および学習データの生成に用いる光学系の特性情報(像高など)を取得する。生成部108cは、原画像に基づいて、訓練画像(第1の画像)および正解画像(第2の画像)を生成する。すなわち生成部108cは、訓練画像を取得する取得手段、および、訓練画像に対して光学特性が異なる正解画像を生成する生成手段としての機能を有する。生成部108cにより生成された訓練画像および正解画像は、記憶部108aに記憶される。なお、学習データの生成に関する詳細は、
図1のフローチャートを参照して後述する。
【0019】
学習装置101は、学習工程を実行する画像処理装置であり、記憶部101a、取得部101b、生成部(生成手段)101c、および、更新部(更新手段)101dを有する。取得部101bは、訓練画像と正解画像を取得する。生成部101cは、訓練画像(第1の画像)を多層のニューラルネットワークへ入力して出力画像(処理画像)を生成する。更新部101dは、生成部101cにより生成された出力画像と正解画像との差(誤差)に基づいて、ニューラルネットワークのネットワークパラメータを更新する。なお、学習工程に関する詳細は、フローチャートを用いて後述する。学習されたネットワークパラメータは、記憶部101aに記憶される。
【0020】
撮像装置102は、光学系102aと撮像素子102bを有する。光学系102aは、被写体空間から撮像装置102へ入射した光を集光する。撮像素子102bは、光学系102aを介して形成された光学像(被写体像)を受光して(光電変換して)撮像画像を取得する。撮像素子102bは、例えばCCD(Charge Coupled Device)センサや、CMOS(Complementary Metal-Oxide Semiconductor)センサなどである。撮像装置102によって取得される撮像画像は、光学系102aの収差や回折によるぼけと、撮像素子102bによるノイズを含む。
【0021】
画像推定装置103は、推定工程を実行する装置であり、記憶部103a、取得部103b、および、補正部(推定手段)103cを有する。画像推定装置103は、撮像画像を取得し、弊害を抑制したぼけ補正を行って推定画像を生成する。ぼけ補正には、多層のニューラルネットワークを使用し、ネットワークパラメータの情報は記憶部103aから読み出される。ネットワークパラメータは学習装置101で学習されたものであり、画像推定装置103は、事前にネットワーク107を介して記憶部101aからネットワークパラメータを読み出し、記憶部103aに保存している。保存されるネットワークパラメータはその数値そのものでもよいし、符号化された形式でもよい。ネットワークパラメータの学習、およびネットワークパラメータを用いたぼけ補正処理に関する詳細は、後述する。
【0022】
出力画像は、表示装置104、記録媒体105、および、出力装置106の少なくとも1つに出力される。表示装置104は、例えば液晶ディスプレイやプロジェクタなどである。ユーザは、表示装置104を介して、処理途中の画像を確認しながら編集作業などを行うことができる。記録媒体105は、例えば半導体メモリ、ハードディスク、ネットワーク上のサーバー等である。出力装置106は、プリンタなどである。画像推定装置103は、必要に応じて現像処理やその他の画像処理を行う機能を有する。
【0023】
次に、
図1を参照して、学習データ製造装置108で実行される学習データの製造方法に関して説明する。
図1は、学習データの製造方法のフローチャートである。
図1の各ステップは、学習データ製造装置108の各部(記憶部108a、取得部108b、生成部108c)により実行される。
【0024】
まず、
図1のステップS101において、取得部108bは複数の原画像(第3の画像)を取得する(第1の取得工程)。原画像は、記憶部108aに事前に記憶しておき、そこから取得してもよいし、不図示の外部装置から取得してきてもよい。本実施例において、原画像は未現像のRAW画像である。ただし本実施例は、これに限定されるものではなく、現像後の画像でもよい。複数の原画像は、様々な被写体、すなわち、様々な強さと方向のエッジや、テクスチャ、グラデーション、平坦部などを有する画像である。原画像は、実写画像でもよいし、CG(Computer Graphics)により生成した画像でもよい。好ましくは、原画像は、撮像素子102bの輝度飽和値よりも高い信号値を有する。これは、実際の被写体においても、特定の露出条件で撮像装置102により撮影を行った際、輝度飽和値に収まらない被写体が存在するためである。
【0025】
続いてステップS102において、取得部108bはステップS101で取得した原画像に対して、ぼけを付与(付加)するために用いる光学系102aの光学情報を取得する(第4の取得工程)。光学系102aは、複数のレンズステート(ズーム、絞り、合焦距離の状態)と像高、アジムスによって異なる収差や回折を有する。このため、原画像ごとに異なるレンズステートや像高、アジムスの収差や回折によるぼけを付与する必要がある。ステップS102では次のステップS103のぼけ付与で利用する光学系102aのPSF(点像強度分布関数)を取得する。このとき取得部108bが取得する光学情報は、PSFの分布に対応する2次元データでもよいし、PSFを特異値分解等で分解して得られる1次元ベクトルの集合を取得してきてもよい。また、PSFを特定の関数でフィッティングして近似し、近似の際に得られる複数の係数データを光学情報として取得してもよい。この場合は取得した係数データと近似関数を用いて再構成することでPSFを得ることができる。なお本実施例では、ぼけの付与にPSFを用いる場合について説明するが、PSFではなくOTF(光学伝達関数)を用いてもよい。OTFを光学情報として取得する場合もPSFの場合と同様に、2次元データとして取得してもよいし、1次元ベクトルや係数データとして取得することもできる。
【0026】
図4は、原画像とPSFの位置関係を示しており、
図4の長方形の枠は原画像、白丸は取得または生成するPSFの位置を表わしている。
図4に示されるように原画像内でPSFを変化させる場合は、各位置に応じたPSFを取得または生成する。
図4では9×9としているが、軽量化のため減らしてもよいし、より精度を重視して増やしてもよい。
【0027】
続いてステップS103において、生成部108cは、ステップS102で取得した光学情報を用いて訓練画像(第1の画像)を生成する(第2の取得工程)。取得した光学情報がPSFではなく、その元となる係数データ等ある場合はPSFを生成する。そして、原画像に対してPSFを用いてぼけを付与する。本実施例では、PSFをぼかしフィルタとして原画像に畳み込むことによりぼけの付与を実現する。像高に応じてぼけ方を変化させる場合は、原画像の画素毎にPSFを変えて、PSFと原画像の対応する領域について線形和を全画素分計算すればよい。例えば、
図4に示されるような位置に対応するPSFを用いる場合、白丸の間に位置するある画素(注目画素)のぼけ付与後の画素値を求めるのであれば、まず近傍4点の白丸に対応したPSFを取得する。そして、取得してきた4つのPSFを補間して注目画素に対応するPSFを計算し、このPSFと原画像の線形和をとって、その値をぼけ付与後の注目画素値とする。補間方法としては、バイリニア、バイキュービック、ニアレストネイバー等の既存の手法を用いればよい。
【0028】
次に、ぼけを付与した原画像を縮小する。このとき原画像が撮像素子102bの輝度飽和値よりも高い信号値を有する場合、撮像素子102bの輝度飽和値で信号をクリップする。特に、原画像として実写画像を使用する場合、既に収差や回折によってぼけが発生しているため、縮小することでぼけの影響を小さくし、高解像(高品位)な画像にすることができる。なお、原画像に高周波成分が充分に含まれている場合、縮小は行わなくてもよい。
【0029】
続いてステップS104において、生成部108cは、正解画像の生成に用いる補正マップを生成する。
図5は、本実施例における補正マップの模擬図であり、原画像を像高に応じてABCDの4つの領域に分割している。
図5において、実線の内側の領域をA領域、実線と破線で囲まれた領域をB領域、破線と2点鎖線で囲まれた領域をC領域、2点鎖線の外側の領域をD領域とする。本実施例では光学系の性能に基づき、原画像にぼけを付与して正解画像を生成する。補正マップ生成に用いる光学系の性能については、性能に関連する指標であれば何を用いてもよいが、本実施例では光学系のOTFを用いて補正マップを生成する。
【0030】
まず、
図4の白丸に対応したPSFに関してフーリエ変換を行い、白丸に対応した位置におけるOTFを生成する。次に各OTFに対し、絶対値をとってMTF(変調伝達関数)を算出する。そして、MTFに対して撮像素子のナイキスト周波数までの平均値を計算し、この値を指標として補正マップを生成する。白丸以外の位置における指標値については、近傍の白丸に対応した指標値を補間することにより求める。なお、ここではナイキスト周波数までの平均MTFを使って指標を算出しているが、異なる周波数帯域で平均MTFを算出してもよいし、ある特定の周波数を指標として用いてもよい。本実施例の補正マップは、正解画像をぼかす際に用いるため、各画素におけるぼかし量に対応する。
【0031】
図5では像高に応じて4つのエリアに分割されており、指標値である平均MTFの値によってこれらのエリアに分割されている。例えば、平均MTFが0.8以上の領域をA領域、平均MTFが0.6以上0.8未満の領域をB領域、平均MTFが0.4以上0.6未満の領域をC領域、0.4未満の領域をD領域とする。ここで、光学系102aが共軸系であれば、光学性能が光軸に対して対称になるため、補正マップも
図5のように回転対称となる。また、一般的に光学系の性能は光軸に近い画像の中心ほど(像高が低いほど)性能が高く、光軸から離れた画像の周辺部ほど(像高が高いほど)性能が低くなる傾向があるため、補正マップも
図5に示されるような分布になることが多い。すなわち、正解画像は、像高が第1の像高の場合には鮮鋭度は第1の鮮鋭度(第1のぼけ量)であり、像高が第1の像高よりも高い第2の像高の場合には鮮鋭度は第1の鮮鋭度よりも低い第2の鮮鋭度(第1のぼけ量よりも大きい第2のぼけ量)である。
【0032】
なお、光学ローパスフィルタや撮像素子102bの画素開口、光学系102aの製造時のばらつき等を考慮した場合、このような対称性はなくなるため、補正マップが必ずしも円形の対称性を有するわけではない。また、本ステップでは指標を算出するためにOTFを算出するが、指標は光学性能を反映できたものであればよいため、別の数値を指標としてもよい。例えばPSFのピーク値を指標として用いることもできる。PSFのピーク値はOTFの実部の積分値となるため、MTFと相関のある指標となる。他にもパーセバルの定理を利用して、PSFの二乗和を計算し、MTFの二乗和の平均値を算出してもよい。このようにPSFからOTFを介さず直接指標を計算し補正マップを生成すれば、フーリエ変換が不要になるため演算量を削減することができる。また、本実施例の補正マップは、
図5に示されるように4つの領域に分割しているが、領域数は増やしてもよいし、減らしてもよい。また、指標を段階的に分割しているが、指標値をそのまま補正マップとしてもよく、連続値として利用することもできる。
【0033】
続いてステップS105において、生成部108cは、ステップS104にて作成した補正マップに基づいて、正解画像(第2の画像)を生成する(第3の取得工程)。ディープラーニングによるぼけ補正を行う場合、学習する際に用いる学習データにおいて訓練画像と正解画像が乖離するほど、推定時に弊害が発生する可能性が増大する。光学系102aの性能が低い領域ほど、ステップS103において訓練画像をよりぼかすことになるため、正解画像に原画像をそのまま用いた場合、訓練画像と正解画像が乖離することになる。本実施例では、この乖離を小さくすることによる弊害の発生の可能性を低減する。
図5の補正マップにおいて、領域Aは性能が高い領域であるため、この領域に対応する正解画像は原画像をぼかさずそのまま用いる。これにより、元々弊害の発生の可能性が低い性能の高い領域については、訓練画像と正解画像の乖離を維持ことで補正量を保つことができる。
【0034】
次に、領域Bに関しては領域Aよりも性能が低く、領域Cよりは高いため、原画像に対して少しぼけを付与する。例えば、各画素に対応したPSFに対して30%に縮小したPSFを生成して、その縮小したPSFを原画像に付与することで正解画像を生成する。続いて、領域Cについては領域Bよりも性能が低いため、さらにぼけ量を増やす。例えば、訓練画像に付与したPSFに対して60%に縮小したPSFを生成して、その縮小したPSFを原画像に付与することで正解画像を生成する。そして、領域Dについては、最も性能が低いため、縮小せず訓練画像に付与したPSFで原画像をぼかして正解画像を生成する。この補正マップに対するPSFの縮小量は一例であり、これに限定されるものではない。また、領域Aについてはぼかさない領域としたが全領域をぼかしてもよい。ただし、正解画像に付与するぼけ量は訓練画像を生成する際に付与したぼけ量と比べて同等かそれ以下となる必要がある。すなわち訓練画像は、正解画像よりも鮮鋭度が低い(ぼけ量が大きい)。このため、正解画像にぼけを付与する場合、訓練画像を生成する際に用いたPSFに対して等倍か縮小したものを用いる。
【0035】
また、ステップS103において訓練画像を生成する際にぼけ付与後、縮小した場合は正解画像も同じ倍率で縮小する。このとき原画像が撮像素子102bの輝度飽和値よりも高い信号値を有する場合、撮像素子102bの輝度飽和値で信号をクリップする。
【0036】
続いてステップS106において、ステップS103で生成した訓練画像とステップS105で生成した正解画像のペアを学習データとして記憶部108aに格納する。なお、生成する訓練画像および正解画像は、分割して複数のパッチとして出力してもよい。パッチとは既定の画素数(例えば、64×64画素など)を有する画像を指す。また、正解パッチと訓練パッチの画素数は、必ずしも一致する必要はない。パッチとして出力する際は
図1のフローチャートを通して出力された訓練画像および正解画像を分割してもよいし、ステップS101で原画像をそれぞれパッチに分解してからステップS102以降の処理を実施してもよい。
【0037】
以上のように本実施例では、正解画像を生成する際にそのまま原画像を縮小して出力するのではなく、光学系の光学性能が低い領域については、あえてぼけを付与する(鮮鋭度を低くする)。ぼけを付与する際にはガウス分布等の回転対称なぼけでぼかしてもよいが、光学系の劣化に基づくぼけの方が望ましく、本実施例のように光学系のPSFを用いた方がより高精度に補正することができる。
【0038】
次に、
図6を参照して、本実施例における学習装置101により実行されるネットワークパラメータの学習方法(学習済みモデルの製造方法)に関して説明する。
図6は、ネットワークパラメータの学習に関するフローチャートである。
図6の各ステップは、主に、学習装置101の取得部101b、生成部101c、または、更新部101dにより実行される。
【0039】
まず、
図6のステップS201において、取得部101bは、正解パッチ(第1の正解画像)と訓練パッチ(第1の訓練画像)を取得する。正解パッチは相対的にぼけが少ない画像であり、訓練パッチは相対的にぼけが多い画像である。本実施例では、多層のニューラルネットワークのネットワークパラメータの学習に、ミニバッチ学習を使用する。このためステップS101では、複数組の正解パッチと訓練パッチを取得する。ただし本実施例は、これに限定されるものではなく、オンライン学習またはバッチ学習を用いてもよい。
【0040】
続いてステップS202において、取得部101bは、学習工程で用いられる補正強度に関する情報(補正強度情報)を取得する。本実施例において補正強度情報とは、学習データに紐付いた情報であり、推定時に補正量をコントロールできるようにするものである。例えば、補正強度情報として「強め」と「弱め」という2つの情報を推定時に設定できるようにする場合、それぞれに対応した学習データ(訓練画像と正解画像)を使って学習し、2種類のネットワークパラメータを用意しておく必要がある。なお、本実施例では、この2つの情報を使う場合について説明するが、設定できる数を増やしてもよいし、離散的な情報とするのではなく連続的に設定できるようにしてもよい。
【0041】
続いてステップS203において、生成部101cは、ステップS201にて取得された複数の訓練画像のうち少なくとも一つの訓練画像を選択し、選択された訓練画像をネットワークへ入力して出力画像を算出(生成)する。複数の訓練画像の全てを選択する(訓練画像の全てをネットワークへ入力し、それら全ての出力を用いてネットワークパラメータを更新する)場合をバッチ学習と呼ぶ。この方法は、訓練画像の数が増えるにつれて、演算負荷が膨大になる。一枚の訓練画像のみを選択する場合(ネットワークパラメータの更新に一枚の訓練画像のみを用いて、更新ごとに異なる訓練画像を用いる)場合をオンライン学習と呼ぶ。この手法は、訓練画像の総数が増えても演算量が増大しないが、一枚の訓練画像に存在するノイズの影響を受けやすい。このため、複数の訓練画像から少数(ミニバッチ)を選択し、それらを用いてネットワークパラメータの更新を行なうミニバッチ法を用いることが好ましい。次の更新では、異なる少数の訓練画像を選択して用いる。この処理を繰り返すことにより、バッチ学習とオンライン学習の弱点を小さくすることができる。
【0042】
ここで、
図7を参照して、多層のニューラルネットワークで行われる処理に関して説明する。
図7は、畳み込みニューラルネットワーク(CNN)を示す図である。ただし本実施例は、これに限定されるものではなく、例えばCNNに残差ネットワークを採用することができ、または、GAN(Generative Adversarial Network)などを用いてもよい。なお
図7では、簡単のため、入力する訓練画像201を一枚だけ描画しているが、実際には選択された複数の訓練画像それぞれに対して、出力画像が生成される。訓練画像201は、RAW画像を色成分ごとに三次元方向に配列した画像である。
【0043】
図8は、画像の色成分に関する説明図である。本実施例において、訓練画像は
図8(A)に示されるようなBayer配列の画像である。ここでRGBは、それぞれ赤、緑、青を表す。
図8(A)のBayer配列から、各色の成分だけを配列し直した構成が
図8(B)である。Gは、G1とG2の2種類があるため、それぞれを抽出して配列する。
図8(B)の四枚の画像を三次元方向に配列した4チャンネルの画像が、
図7における訓練画像201である。この作業は必ずしも必要ではないが、収差・回折は波長によって変化するため、同一のぼけを持つ色成分を配列させた方が補正しやすい。また、RGBが同一次元内に配列されていると、局所的に異なる明るさを有する画素が混合されるため、推定精度が低下しやすい。このため、訓練画像を色成分ごとに分離することが好ましい。なお、ここではBayer配列の場合を示しているが、その他の配列(ハニカム構造など)に関しても同様である。なお、モノクロの場合、色成分の再配列は実行しなくてよい。また本実施例では、複数の色成分を一括で学習、推定する例を示すが、各色で個別に学習、推定してもよい。
図1では描画を簡略化するため、訓練画像201を4×4の4チャンネル画像としているが、縦横の画像サイズはこれに限定されるものではない。
【0044】
本実施例において、訓練画像および正解画像はそれぞれ、周期的に配列された複数の色成分を有し、訓練画像または正解画像の各色成分のみで構成される色成分画像を生成する工程を設けてもよい。ここで、色成分画像を生成する工程は、訓練画像に対してニューラルネットワークへの入力前に実行され、正解画像に対して誤差の算出前に実行される。CNNは複数の層構造になっており、各層で線型変換と非線型変換が実行される。線型変換は、入力された画像(または特徴マップ)とフィルタの畳み込み、およびバイアス(
図7中のbias)との和で表現される。各層におけるネットワークパラメータ(フィルタのウエイトとバイアス)を学習工程によって更新する。非線形変換は、活性化関数(Activation Function)と呼ばれる非線型関数による変換である(
図7中のAF)。活性化関数の例としては、シグモイド関数やハイパボリックタンジェント関数などがあり、本実施例では以下の式(1)で表されるReLU(Rectified Linear Unit)が用いられる。
【0045】
【0046】
式(1)において、maxは、引数のうち最大値を出力するMAX関数を表す。
【0047】
入力層に入力された訓練画像201は、第1畳み込み層で複数のフィルタ202それぞれとのコンボリューションと、バイアスとの和を取られる。フィルタ202それぞれのチャンネル数は、訓練画像201と一致し、訓練画像201のチャンネル数が2以上の場合、3次元フィルタとなる(三次元目がチャンネル数を表す)。なお、フィルタの縦横の大きさは任意である。コンボリューションと和の結果は、活性化関数によって非線形変換が施され、第1特徴マップ203が第1中間層に出力される。ここで、第1特徴マップ203のチャンネル数(三次元方向の配列数)は、フィルタ202の数と同じである。次に、第2畳み込み層へ第1特徴マップ203が入力され、前述と同様に複数のフィルタ204のそれぞれとのコンボリューションと、バイアスとの和が取られる。その結果を非線形変換し、以下同様に畳み込み層の数だけ繰り返す。一般に、畳み込み層が3層以上あるCNNが、ディープラーニングに該当する。最後の畳み込み層から出力された結果が、CNNの出力画像211である。なお、最後の畳み込み層では、活性化関数による非線形変換を実行しなくてもよい。
【0048】
続いてステップS204において、生成部101cは、出力画像211と正解画像221の誤差を算出する。このとき、本実施例では出力画像211と正解画像221に対してガンマ補正を実行してから誤差を算出する。ガンマ補正は、例えば入力の信号値を冪乗する処理であり、その冪指数として1/2.2などが用いられる。正解画像221は訓練画像201と同様に、色成分ごとに配列してチャンネル方向にスタックされている。本実施例において、生成部101cは、以下の式(2)を用いて誤差Lを算出する。
【0049】
【0050】
式(2)において、tは正解画像221の信号値、yは出力画像211の信号値、jは画素の番号、Nは総画素数、gはガンマ補正を示す。式(2)ではユークリッドノルムを用いているが、正解画像と出力画像の差異を表す値であれば、他の指標を用いてもよい。なお、本実施例では出力画像211と正解画像221に対してガンマ補正を実行してから誤差を算出しているが、この処理は必須ではなく、ガンマ補正を行わずに誤差を算出してもよい。
【0051】
続いてステップS205において、更新部101dは、ステップS204にて算出された誤差からネットワークパラメータの更新量を算出し、ネットワークパラメータを更新する。ここでは、誤差逆伝搬法(Backpropagation)が用いられる。誤差逆伝搬法では、誤差の微分に基づいて更新量を算出する。ただし、本実施例はこれに限定されるものではない。
【0052】
続いてステップS206において、更新部101dは、所定の終了条件を満たすか否か、すなわち、ネットワークパラメータの最適化が終了したか否かを判定する。ここで所定の終了条件とは、例えば、学習工程が既定の時間に達した場合、パラメータの更新回数が既定の回数に達した場合、パラメータ更新には用いない訓練画像と正解画像を用意しておき、その出力画像と正解画像の誤差が所定の値以下になった場合などである。または、ユーザが最適化終了を指示してもよい。所定の終了条件を満たさない場合、ステップS203に戻り、更新部101dは新たなミニバッチを取得してネットワークパラメータを更新する。一方、所定の終了条件を満たす場合、ステップS207へ進む。
【0053】
ステップS207において、更新部101dにて更新されたネットワークパラメータを記憶媒体105に出力する。本実施例では、異なる補正強度情報ごとにネットワークパラメータを学習するため、ネットワークパラメータとそれに対応する補正強度情報とを合わせて記憶媒体105に記憶する。以上の学習工程により、光学性能が低い領域を含む画像に対して補正処理を実行する場合であっても、弊害の発生の可能性を低減することが可能な多層のニューラルネットワークを得ることができる。
【0054】
次に、
図9を参照して、画像推定装置103で実行される推定工程に関して説明する。
図9は、推定工程のフローチャートである。
【0055】
まず、ステップS301において、取得部103bは、撮像装置102または記録媒体105から、撮像画像を取得する。撮像画像は、未現像のRAW画像である。RAW画像の信号値が符号化されている場合、補正部103cは復号処理を実行する。また取得部103bは、撮像装置102または記録媒体105から、補正強度情報を取得する。前述のように補正強度情報は「強め」や「弱め」といった補正の強さに紐づくパラメータであり、撮像装置内の設定でユーザが自由に選択できる。なお、補正強度情報は撮影画像のヘッダー情報として、撮影画像内に保持させてもよい。以降の説明において、ヘッダー情報と記載されている場合には画像の付加情報を表しており、フッター情報であってもよい。また、ユーザに選択させるのではなく、撮像装置102が撮影シーンに応じて補正強度情報を自動で決めてもよい。
【0056】
続いてステップS302において、補正部103cは、ステップS301にて取得した補正強度情報から、その情報に対応するネットワークパラメータを取得する。ネットワークパラメータは、学習装置101の記憶部101aから読み出される。または、画像推定装置103の記憶部103aに複数のネットワークパラメータを保存しておき、記憶部103aから読み出してもよい。取得するネットワークパラメータは、ステップS301にて取得した補正強度情報と学習工程で用いられた補正強度情報とが互いに一致するもの、または、最も近いものである。
【0057】
続いてステップS303において、補正部103cは、撮像画像からCNNへ入力する入力画像を取得する。入力画像は、訓練画像と同様に、色成分ごとに配列して三次元方向にスタックされる。なお、推定工程の入力画像のサイズは、学習工程における訓練画像のサイズと、必ずしも一致する必要はない。
【0058】
続いてステップS304において、補正部103cは、入力画像とネットワークパラメータに基づいて、推定画像を生成する。推定画像の生成には、学習工程と同様に、
図7に示されるCNNが用いられる。ただし、
図7中の出力画像211が推定画像となり、それ以降の正解画像との誤差算出等の処理は行わない。
【0059】
続いてステップS305において、補正部103cは、撮像画像の所定の領域に対して推定が完了したか否かを判定する。推定が完了していない場合、ステップS303へ戻り、補正部103cは、撮像画像の所定の領域から新たな入力画像を取得する。推定に用いられるCNNにおいて、出力画像のサイズが入力画像よりも小さくなる場合、所定の領域からオーバーラップして入力画像を取得する必要がある。所定の領域は、撮像画像の全体または一部である。撮像画像はRAW画像であるため、受光して得られた画像の他に、ヘッダー情報(画像の画素数や撮影時刻などの情報)や撮像素子のオプティカルブラックの情報が含まれていることがある。ヘッダー情報やオプティカルブラックは、収差・回折のぼけと無関係であるため、所定の領域からそれらを除いてもよい。
【0060】
続いてステップS306において、補正部103cは、生成された複数の推定画像を合成して、収差・回折によるぼけが補正された撮像画像を出力する。必要に応じて、補正部103cは、ヘッダー情報やオプティカルブラックの情報を含めて出力する。
【0061】
以上の推定工程により、光学系の性能によって大きく劣化した画像を含む撮影画像に対して推定処理を実施した場合であっても、アンダーシュートやリンギングを抑制しつつ、収差・回折によるぼけを補正することができる。推定工程後、ユーザが任意で露出補正などの編集を行い、現像処理により最終的な現像画像を得る。本実施例では、補正強度情報によってネットワークパラメータを切り替えて補正を実施する方法について述べたが、複数のネットワークパラメータを取得して、入力画像をそれぞれのネットワークに入力することで複数の出力画像を生成してもよい。これにより、補正強度が異なる出力画像を複数生成することができるため、例えばそれらを補間することによって、中間の補正強度の出力画像を生成することができる。また、逆に補正強度情報は1つだけでもよく、特定のネットワークパラメータのみ撮像装置102または記録媒体105に保持しておいてもよい。
【0062】
好ましくは、第2の画像は、鮮鋭度が像高に応じて異なる。より好ましくは、第2の画像は、像高が第1の像高の場合には鮮鋭度は第1の鮮鋭度であり、像高が第1の像高よりも高い第2の像高の場合には鮮鋭度は第1の鮮鋭度よりも低い第2の鮮鋭度である。
【0063】
好ましくは、第2の画像は、鮮鋭度が輝度値に応じて異なる。より好ましくは、第2の画像は、輝度値が第1の輝度値の場合には鮮鋭度は第3の鮮鋭度であり、輝度値が第1の輝度値よりも低い第2の輝度値の場合には鮮鋭度は第3の鮮鋭度よりも高い第4の鮮鋭度である。
【0064】
好ましくは、第1の画像は、第2の画像よりも鮮鋭度が低い。
【0065】
好ましくは、学習データの製造方法は、更に、第3の画像(原画像)を取得する工程を有する。画像生成工程において、第3の画像をぼかすことにより2の画像を生成する。より好ましくは、画像生成工程において、第2の画像は、第3の画像に対して光学系の光学特性に応じてぼけ量を異ならせたぼけ付加処理により生成される。
【実施例2】
【0066】
次に、本発明の実施例2における画像処理システムに関して説明する。
図10は、本実施例における画像処理システム300のブロック図である。
図11は、画像処理システム300の外観図である。画像処理システム300は、ネットワーク303を介して接続されたサーバー301と撮像装置302を含む。
【0067】
サーバー301は、学習部310および学習データ生成部(学習データ製造装置)330を有する。学習部310は、記憶部311、取得部312、生成部313、および、更新部314を有し、ニューラルネットワークで収差・回折によるぼけを補正するためのネットワークパラメータを学習する。学習データ生成部330は、記憶部331、取得部332、および、生成部333を有する。取得部332は、原画像、および学習データの生成に用いる光学系の特性情報を取得する。生成部333は、原画像に基づいて訓練画像および正解画像を生成する。すなわち生成部333は、訓練画像を取得する取得手段、および、訓練画像に対して光学特性が異なる正解画像を生成する生成手段としての機能を有する。生成部333により生成された訓練画像および正解画像は、記憶部331に記憶される。
【0068】
撮像装置302は、被写体空間を撮像して撮像画像を取得し、読み出した前記ネットワークパラメータを用いて撮像画像中の収差・回折によるぼけを補正する。撮像装置302は、光学系321および撮像素子322を有する。画像推定部323は、取得部323aと推定部323bを有し、記憶部324に保存されたネットワークパラメータを用いて、撮像画像の補正を実行する。ネットワークパラメータは、学習部310で事前に学習され、記憶部311に保存されている。撮像装置302は、記憶部311からネットワーク303を介してネットワークパラメータを読み出し、記憶部324に保存する。収差・回折によるぼけを補正した撮像画像(出力画像)は、記録媒体325に保存される。ユーザから出力画像の表示に関する指示が出された場合、保存された出力画像が読み出され、表示部326に表示される。なお、記録媒体325に既に保存された撮像画像を読み出し、画像推定部323でぼけ補正を行ってもよい。以上の一連の制御は、システムコントローラ327によって行われる。
【0069】
次に、
図12を参照して、学習データ生成部330で実行される学習データ生成工程に関して説明する。
図12は、学習データ生成工程のフローチャートである。
図12の各ステップは、学習データ生成部330の各部(記憶部331、取得部332、生成部333)により実行される。
【0070】
実施例1では、光学系の光学性能が低い領域については、正解画像を生成する際に原画像に対してあえてぼけを付与した。これにより、光学性能が低い領域においては訓練画像との差異が小さくなり、光学性能が高い領域では訓練画像と正解画像の際は確保できるため、弊害の発生の可能性を低減した学習データを生成した。一方、本実施例では、画像の輝度値に着目し、高輝度部周辺で発生するアンダーシュートやリンギング等の弊害の発生の可能性を低減するための学習データの製造方法について説明する。
【0071】
図12のステップS401、ステップS402、ステップS403については、
図1のステップS101、ステップS102、ステップS103と同様の処理となるため、説明を省略する。なお、ステップS404で撮像素子322の輝度飽和値の情報を利用する場合は、ステップS401またはステップS402において、取得部332が撮像装置302から輝度飽和値の情報を取得してもよい。あるいは、輝度飽和値の情報をステップS401にて取得した原画像のヘッダー情報から取得してもよい。
【0072】
次に、ステップS404において、正解画像の生成に用いる補正マップを生成する。
図13(A)は本実施例における補正マップの模擬図であり、原画像を輝度値に応じてABCDの4つの領域に分割している。
図13(A)において、実線の内側の領域をD領域、D領域を除く破線の内側の領域をC領域、D領域およびC領域を除く2点鎖線の内側の領域をB領域、2点鎖線の外側の領域をA領域とする。また、
図13(B)は、
図13(A)の太い実線に対応する原画像の断面図である。
図13(B)の実線、破線、2点鎖線はそれぞれ
図13(A)の実線、破線、2点鎖線に対応している。本実施例では、撮像素子322の輝度飽和値以上の輝度値をD領域、輝度飽和値の60%以上かつ輝度飽和値未満をC領域、輝度飽和値の20%以上かつ60%未満をB領域、輝度飽和値の20%未満をA領域とする。本実施例の補正マップは、
図13(A)に示されるように輝度値に応じて4つの領域に分割しているが、領域数は増やしてもよいし、減らしてもよい。また、指標を段階的に分割しているが、指標値をそのまま補正マップとしてもよく、連続値として利用することもできる。
【0073】
続いて、ステップS405において、ステップS404で作成した補正マップに基づき正解画像を生成する。
図13(A)の補正マップにおいて、A領域は輝度値が低く弊害が発生しにくい領域であるため、この領域に対応する正解画像は原画像をぼかさずそのまま用いる。これにより、元々弊害の発生の可能性が低い性能の高い領域については、訓練画像と正解画像の乖離を維持することで補正量を保つことができる。
【0074】
次に、B領域に関してはA領域よりも輝度が高く、C領域よりは低いため、原画像に対して少しぼけを付与する。例えば、各画素に対応したPSFに対して20%に縮小したPSFを生成して、その縮小したPSFを原画像に付与することで正解画像を生成する。続いて、C領域についてはB領域よりも輝度が高いため、さらにぼけ量を増やす。例えば、訓練画像に付与したPSFに対して50%に縮小したPSFを生成して、その縮小したPSFを原画像に付与することで正解画像を生成する。そして、D領域については、最も輝度が高いため、縮小せず訓練画像に付与したPSFで原画像をぼかして正解画像を生成する。すなわち正解画像は、輝度値が第1の輝度値の場合、鮮鋭度は第3の鮮鋭度(第3のぼけ量)であり、輝度値が第1の輝度値よりも低い第2の輝度値の場合、鮮鋭度は第3の鮮鋭度よりも高い第4の鮮鋭度(第3のぼけ量よりも小さい第4のぼけ量)である。
【0075】
なお、前述の補正マップに対するPSFの縮小量は一例であり、これに限定されるものではない。また、A領域についてはぼかさない領域としたが全領域をぼかしてもよい。ただし、正解画像に付与するぼけ量は訓練画像を生成する際に付与したぼけ量と比べて同等かそれ以下となる必要がある。すなわち訓練画像は、正解画像よりも鮮鋭度が低い(ぼけ量が大きい)。このため、正解画像にぼけを付与する場合、訓練画像を生成する際に用いたPSFに対して等倍か縮小したものを用いる。また、ステップS403において訓練画像を生成する際にぼけ付与後、縮小した場合は正解画像も同じ倍率で縮小する。このとき原画像が撮像素子322の輝度飽和値よりも高い信号値を有していた場合、撮像素子322の輝度飽和値で信号をクリップする。
【0076】
続いてステップS406において、ステップS403で生成した訓練画像とステップS405で生成した正解画像のペアを学習データとして記憶部331に格納する。ステップS406はステップS106と同様であるため、詳細説明は省略する。
【0077】
本実施例において、学習工程は学習部310において実行され、推定工程は画像推定部323によって実行される。本実施例における学習工程では、
図12のフローで作成された学習データ(正解画像と訓練画像)が用いられる。それ以外の内容に関しては、実施例1の
図6に示されるフローチャートと同様の処理になるため、詳細は省略する。また、推定工程についても、実施例1の
図9に示されるフローチャートと同様の処理になるため、説明は省略する。
【0078】
以上、輝度値に応じた補正マップを生成し、その補正マップに基づき正解画像を生成することで、高輝度部周辺で発生するアンダーシュートやリンギング等の弊害発生の可能性を低減可能な学習データを製造することができる。こうして作成した学習データを使ってネットワークパラメータを生成し、その情報を使って推定処理を実行することで、高輝度部を有する撮影画像に対しても前述の弊害の発生の可能性を低減しつつ、収差・回折によるぼけを高精度に補正することができる。なお、本実施例では、補正マップを4つに分割したが、輝度飽和部と輝度飽和部以外の2つに分割してもよい。このとき、例えば輝度飽和部に対して訓練画像に付与したPSFで原画像をぼかして正解画像を生成したとすると、輝度飽和部に関しては訓練画像と正解画像に差異がなくなる。この学習データを利用してネットワークを学習し、そのネットワークパラメータを用いて推定処理を実行すれば、輝度飽和部は補正せずに輝度飽和部以外の領域を補正する処理を実現することができる。特に、撮影画像において輝度飽和部は情報が欠落している領域であり、他の領域と同様にそのまま補正しようとすると弊害が発生しやすくなる。そのため、このような学習を行うことで、高品質な推定画像を出力できるネットワークを実現することができる。また本実施例では、原画像の輝度値を用いて補正マップを生成したが、輝度値の変化に基づいて補正マップを生成してもよい。この場合、原画像に対して微分フィルタやプリューウィットフィルタ、ソーベルフィルタを適用することで微分画像を生成することができる。あるいはラプラシアンフィルタ等を用いて2階微分した画像を生成してもよい。このように、輝度の変化に基づいて補正マップを生成することで、コントラストの高いエッジ近傍で発生する弊害を抑制可能な学習データを生成することができる。
【0079】
また、実施例1では性能に応じた補正マップの生成について説明し、本実施例では画像の輝度に応じた補正マップの生成について述べたが、この両方を実施してもよい。すなわち、ステップS404において、輝度に応じた補正マップを作成するだけでなく、光学系の光学情報に応じた補正マップも作成し、これら2つの補正マップを統合する。例えば、
図5と
図13(A)の補正マップを統合する場合、よりぼかす方に合わせることで統合したマップを作成することができる。つまり、
図5でB領域、
図13(A)でD領域であった領域では、B領域にするという方法である。あるいは、それぞれの補正マップにおけるPSFの縮小率の平均値を統合した補正マップとしてもよい。統合の方法については、これらの手法に限らず、別の方法を用いて統合した補正マップを生成してもよい。このように2つの補正マップを用いることで、光学系の性能と画像の輝度値の両方の影響を加味した学習データを生成することができる。
【実施例3】
【0080】
次に、本発明の実施例3における画像処理システムに関して説明する。本実施例における画像処理システムの構成および学習工程は実施例1と同様であり、学習データ生成工程(学習データの製造方法)および推定工程が異なる。
【0081】
図14を参照して、本実施例で実行される学習データの製造方法に関して説明する。
図14は、学習データの製造方法のフローチャートである。
【0082】
実施例1では、補正マップを作成し、その補正マップに基づいて正解画像を生成したが、本実施例では補正マップを用いずに正解画像および訓練画像を生成する。すなわち、本実施例における正解画像および訓練画像の原画像に対する補正量は画像内で一定である。ステップS601、ステップS602はそれぞれ、実施例1のステップS101、ステップS102と同様の処理であるため説明を割愛する。
【0083】
ステップS603において、生成部108cは、ステップS602で取得した光学情報を用いて訓練画像(第1の画像)を生成する。本実施例における訓練画像は、例えば、光学系を用いた撮影により取得される画像(光学系の全画角に対応した画像)における一部のみを抜き出した画像(一部の像高に対応する画像)に対応する。実施例1では、画素位置ごとにPSFを異ならせるためにPSFを線形補間する方法を説明したが、本実施例では画素位置に応じてPSF変更することなく一律のぼけを付与する。その代わり、本実施例では像高に応じた光学性能(光学情報)の変動に対応するため、原画像の枚数を増やして生成する正解画像および訓練画像を増やす。推定する際に複数のレンズステート、像高、アジムスに対応する必要があれば、これらを混ぜて正解画像と訓練画像のペアを生成しておく。
【0084】
続いてステップS604において、生成部108cは、ステップS603で生成された訓練画像のペアとなる正解画像(第2の画像)を生成する。本実施例における正解画像は、例えば、光学系を用いた撮影により取得される画像(光学系の全画角に対応した画像)における一部のみを抜き出した画像(一部の像高に対応する画像)に対応する。正解画像として抜き出される原画像の領域はペアとなる訓練画像と同等であり得る。本実施例では、光学系の性能としてPSFのピーク値として用いて正解画像を生成する。光学系の性能が高ければ高いほどPSFのピーク値も高くなり、逆に性能が低いとピーク値も下がるため、原画像から正解画像を生成する際の指標として適している。なお、実施例2に述べたように光学性能ではなく輝度飽和部の有無に基づいて正解画像を生成しても良い。
【0085】
図15は、光学系の性能(光学性能)と正解画像生成のために原画像に付与するPSFのぼかし量との関係を示す模擬図であり、光学系の性能に応じて3つの領域(区間A、B、C)に分割している。本実施例において、
図15の横軸はPSFのピーク値に対応する光学性能である。光学性能が区間Aに属する場合、PSFのピーク値が高く光学系の性能が十分に出ていると見做せる。正解画像として抜き出される原画像の領域の光学性能が区間Aに属する場合は原画像をそのまま正解画像として用いる。このように光学性能が高く上述した弊害発生の可能性が低い場合には訓練画像と正解画像の乖離を維持する。その結果、光学性能が区間Aに属する場合には訓練画像(入力画像)に対する補正量が比較的大きくなるように学習される。
【0086】
正解画像として抜き出される原画像の領域の光学性能が区間Bに属する場合、PSFピーク値に応じてPSFのぼかし量を変化させる。
図15に示すようにPSFのピーク値が高いと原画像に付与するぼかし量は小さく、逆にピーク値が低いとぼかし量は大きくなるよう調整される。
図15の領域Bにおける変化は直線で表現されているが、これに限らず2次関数や指数関数等、非線形関数で表現してもよい。
【0087】
区間Cは、最も光学系の性能が低い領域である。正解画像として抜き出される原画像の領域の光学性能が区間Cに属する場合には訓練画像を生成する際に用いたPSFをそのまま用いて正解画像を生成する。すなわち、訓練画像と正解画像を同様の手法により生成する。区間Cのように光学性能が低い場合には、弊害が発生する可能性が高くなる。このため、訓練画像と正解画像を一致させることで、学習による訓練画像(入力画像)に対する補正効果を抑える。これにより、弊害を抑制することが可能となる。このように、光学系の性能に応じて原画像から正解画像を生成する際のぼけ付与量を調整することにより、弊害が発生しにくい条件では効果を大きく、逆に弊害が発生しやすい条件では効果を抑えて弊害抑制を優先することができる。
【0088】
ここでは、ぼけ付与量を調整のためにPSFのピーク値を指標にとったが、周波数特性を指標としてもよい。この場合は、PSFをフーリエ変換することでOTFを生成し、絶対値をとってMTFを算出する。MTFを指標とする際には特定の周波数におけるMTF値(例えばナイキスト周波数の半分におけるMTF値)でもよいし、ある区間の積分値(ナイキスト周波数までの積分値)や平均値でもよい。他の指標としてぼけの非対称性を用いてもよく、非対称性を数値化してその数値に応じてぼけ量を調整することもできる。基本的にPSFが非対称なほど弊害が発生しやすくなるという傾向がある。非対称性を数値化する方法として、例えばPSFからメリジオナル方向とサジタル方向のように直交する2断面のLSFを算出し、2つのLSFのピーク値の差を指標とする。この場合、ピーク値の差が大きいと非対称な形状であるため、よりぼかし量を増やし、逆に差が小さいほどぼかし量を減らす。LSFではなく周波数特性で評価し、メリジオナル方向とサジタル方向のMTF特性の平均値や特定の周波数における差分値を用いて非対称性の指標としてもよい。あるいは、PSFの歪度を用いることもできる。歪度の絶対値が大きいほど非対称性が高くなるためぼかし量を大きく、逆に絶対値が小さいほど非対称性が小さくなるため、ぼかし量を小さくすればよい。また、ぼけ付与量を調整のためのより簡便な指標として、正解画像の対応する像高(光学系の全画角に対応した画像における正解画像の位置)を用いても良い。一実施例1で述べたように、一般に像高が高くなると光学性能が低下する相関があるためである。
【0089】
また、原画像の高周波成分が不充分な場合、原画像を縮小して正解画像を生成してもよい。この際、訓練画像でも同様に縮小を行う。
【0090】
続いてステップS605において、ステップS603で生成した訓練画像とステップS604で生成した正解画像のペアを学習データとして記憶部108aに格納する。
【0091】
以上が、本実施例における学習データの製造方法となる。このように作成した正解画像と訓練画像を用いて学習することにより、弊害の発生の可能性を低減しつつ高精度な補正を実現するための学習モデルの生成が可能となる。
【0092】
次に、
図16を参照して、画像推定装置103で実行される推定工程に関して説明する。
図16は、推定工程のフローチャートである。
【0093】
実施例1では、補正強度情報に基づいてネットワークパラメータを取得する方法について説明した。本実施例では画像推定装置103のリソース情報に基づいてネットワークモデルを取得する方法について説明する。本実施例においてネットワークモデルとは、ネットワークパラメータとネットワークの構成(アーキテクチャ)を含むものとする。実施例1で述べたように、CNNに入力する入力画像のサイズは学習時と異ならせてもよい。もし、撮影画像の一部の領域を入力画像とする場合は、出力される推定画像を合成して補正された撮影画像を生成すればよい。このように推定処理を行う場合、入力画像のサイズを大きくすると撮影画像の分割数が減るため、より高速に推定処理を実行することができる。しかしながら、サイズを大きくすると、その分メモリ(RAM)の使用量が増大する。画像推定装置のメモリ容量をオーバーすると処理速度が逆に低下したり、異常終了となったりする。つまり、より効率的に処理するためには、画像推定装置に合わせて入力サイズを設定した方がよく、ここではその一例について述べる。
【0094】
まず、ステップS701において、取得部103bは、撮像装置102または記録媒体105から、撮像画像を取得する。撮像画像は、未現像のRAW画像である。RAW画像の信号値が符号化されている場合、補正部103cは復号処理を実行する。また取得部103bは画像処理装置のメモリ情報(リソース情報)を取得する。取得するメモリ情報は物理メモリの容量でもよいが、他のプロセスによって使用できる容量が変化するため、空き容量を取得する方が好ましい。他のプロセスによる影響が小さいのであれば物理メモリの容量でもよいし、物理メモリと使用中のメモリ容量から使用できるメモリ容量を見積もってもよい。
【0095】
続いてステップS702において、補正部103cは、ステップS701にて取得したメモリ情報に基づいて、適切なネットワークモデルを取得する。ここで、入力画像サイズが固定のネットワークモデルの場合、適切なネットワークモデルを選択する必要がある。たとえば、ステップS701にて取得したメモリの空き容量がCNNによって使用するメモリ容量よりも十分に大きい場合、入力画像サイズが大きいネットワークモデルを取得する。逆に空き容量が少ない場合、入力画像サイズが小さいネットワークモデルを取得する。ネットワークパラメータは変える必要がないため、メモリ情報に基づいてネットワークの構成のみ取得してもよい。ネットワークモデルは様々なフォーマットが存在するが、入力画像サイズが固定の場合はこのように切り替えることで効率的に補正処理を実行することができる。入力画像サイズが可変のネットワークモデルであれば、特にネットワークモデルを変える必要はなく、入力画像サイズのみ適切な値を設定すればよい。ここでは、2つのネットワークモデルの選択について説明したが、ネットワークモデルのバリエーションを増やすことで、より画像処理装置に適したネットワークモデルを選択できるようになる。このネットワークモデルの選択については、メモリ情報より自動的に判定して対応したネットワークモデルを選定するだけでなく、ユーザの入力情報に基づいてもよい。例えば、高パフォーマンスモードと軽量モードを選択できるようにし、そのモード情報も加味することで、よりユーザが望む処理を実現することができる。
【0096】
ステップS703以降については、実施例1のステップS303以降と同様であるため詳細説明は省略する。
【0097】
以上が、本実施例における推定工程となる。画像処理装置のメモリ情報に基づいてネットワークモデルや構成を取得することにより、処理する環境に適した推定処理を実現することができる。
【0098】
なお、本実施例においては訓練画像および正解画像を、光学系の全画角に対応した画像における一部の像高に対応するものとした。この場合、学習の際には、訓練画像に加えて訓練画像の像高に関する情報をニューラルネットワークに入力して学習するようにしても良い。これにより、光学系の全画角に対応した画像内の位置に応じた補正量をより精度よく学習することが可能となる。また、訓練画像の像高に関する情報をニューラルネットワークに入力して学習させる場合には、推定工程においても学習時と同様にして入力画像の像高に関する情報をニューラルネットワークに入力する。
【0099】
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0100】
各実施例によれば、ニューラルネットワークに入力する画像に高輝度な被写体や、光学系の収差により大きくぼけた被写体を含む場合でも、弊害が発生する可能性を低減しつつ高精度な補正を実現することが可能な学習データの製造方法等を提供することができる。
【0101】
以上、本発明の好ましい実施例について説明したが、本発明はこれらの実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【符号の説明】
【0102】
108 学習データ製造装置
108c 生成部(取得手段、生成手段)