(58)【調査した分野】(Int.Cl.,DB名)
前記特徴量マップ作成手段は、予め定められたフィルタを用いて前記第1の画像特徴量または前記第2の画像特徴量に対しフィルタ処理を施す演算を行うことで、隣接する複数の画素の関係性を特徴付ける特徴量を抽出して前記第1の特徴量マップまたは前記第2の特徴量マップを作成する請求項1に記載の誤差計算器。
前記特徴量マップ作成手段は、前記第1の画像特徴量または前記第2の画像特徴量に基づく画像に含まれるエッジを検出するエッジフィルタを用いることにより、エッジマップを前記第1の特徴量マップまたは前記第2の特徴量マップとして作成する請求項2に記載の誤差計算器。
前記第1の画像特徴量と、前記第2の画像特徴量とに対応する画素間の画素値の誤差に基づく画像特徴量間の誤差を算出して前記誤差合成手段に出力する第2誤差算出手段を備える請求項1から請求項3のいずれか一項に記載の誤差計算器。
前記第1の画像特徴量と前記第2の画像特徴量との組を前記特徴量マップ作成手段と前記第2誤差算出手段とに順次入力し、入力した画像特徴量の前記組に応じて、所定演算により前記合成誤差が小さくなるように前記学習器のパラメータを調整し、調整したパラメータを更新用のパラメータとして前記学習器に供給する誤差最小化手段を備える請求項5に記載の誤差計算器。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態に係る誤差計算器について、図面を参照しながら説明する。
図1に示す学習装置Sは、学習器60と、誤差計算器40とを備えている。
学習装置Sは、第1の画像特徴量401である推定カラー情報と第2の画像特徴量402である真のカラー情報との誤差を誤差計算器40により算出し、誤差計算器40が算出した誤差を最小化するように学習器60により、ニューラルネットワークを構成するためのパラメータを学習する。
ここで、学習器60は、以下に詳述する画像特徴量を出力するニューラルネットワークで構成される。以下の説明では、この画像特徴量とは、例えば、輝度、色度、彩度等の色空間を表す量をいい、例えば、色空間を表す量から抽出された平均値、分散、畳み込み積分値等を含む。また、この画像特徴量の画素ごとの集合とは、例えばモノクロ画像(モノクロ情報)やカラー情報をいう。さらに、画像特徴量は、高さ方向および幅方向(縦横)に要素が並べられた行列で取り扱ってもよいし、1次元の多変数ベクトルで取り扱ってもよい。
【0014】
また、ここで、モノクロ画像とは、具体的には色空間における輝度チャンネル(HSV色空間におけるVチャンネルや、Lab色空間におけるLチャンネルなど)のみから成る画像をいう。なお、画素の情報が輝度である場合、画素値(輝度値)は、8ビットの情報で表すとき、0〜255の値を有する。このモノクロ画像の画像特徴量であるモノクロ情報は、例えば輝度分布で表される。本明細書では、このモノクロ情報をモノクロ画像と同じ意味で用いている。また、カラー情報とは、例えば、輝度チャンネル以外の2チャンネルについての画像特徴量とすることができる。
【0015】
学習器60は、以下の実施例では、一例として、この画像特徴量としてカラー情報を出力するニューラルネットワークで構成されているものとして説明する。この学習器60は、例えばモノクロ画像からカラー情報を推定するカラー情報推定器や、低解像度のカラー情報から高解像度のカラー情報を推定するカラー情報拡大器を作成するために用いるものである。学習器60は、内部にニューラルネットワークを構成するためのパラメータ(パラメータ群)を持ち、その学習データとして入力に対して内部パラメータに応じた推定値を出力する。学習器60は、この内部のパラメータを変更することにより、出力値を調整する。
【0016】
誤差計算器40は、例えば、カラー情報(画像特徴量)から学習器60がニューラルネットワークによりカラー情報を推定する学習のための推定カラー情報と真のカラー情報との誤差を計算する。誤差計算器40は、
図1に示すように、特徴量マップ作成手段41と、第1誤差算出手段42と、誤差合成手段43と、を備えている。
誤差計算器40は、第1の画像特徴量401および第2の画像特徴量402から所定演算により画像内における複数の画素の関係性を特徴付ける特徴量を抽出して第1の特徴量マップ403および第2の特徴量マップ404を作成し、第1の特徴量マップ403と第2の特徴量マップ404とに対応する画素間の画素値の誤差に基づく特徴量マップ間の誤差を算出し、第1の画像特徴量401と第2の画像特徴量402とに対応する画素間の画素値の誤差に基づいて算出された画像特徴量間の誤差を入力し、前記画像特徴量間の誤差と、前記特徴量マップ間の誤差と、を加算し、合成誤差を生成する。
なお、誤差計算器40は、従来の誤差計算器と同様の構成として、第2誤差算出手段51と、最小化手段52と、を備えている。この誤差計算器40は、例えば一般的なコンピュータで構成され、CPU(Central Processing Unit)等の演算装置と、ROM(Read Only Memory)、RAM(Random Access Memory)やHDD(Hard Disk Drive)と、入出力インタフェースと、を備えている。
【0017】
(第2誤差算出手段51)
第2誤差算出手段51は、第1の画像特徴量401と、第2の画像特徴量402と、を用いて、これら2つの画像特徴量間の誤差を算出するものである。ここで、第1の画像特徴量401は、学習器60がその訓練データとして入力される入力値に対して内部のパラメータに応じて出力する推定カラー情報である。この第1の画像特徴量401は、例えば、学習器60に対して学習用の訓練データとして入力される低解像度のカラー情報(画像特徴量)から、当該学習器60によって推定された高解像度のカラー情報(推定カラー情報)である。
【0018】
また、第2の画像特徴量402は、例えば、学習器60の訓練データとして準備された正解の高解像度のカラー情報(真のカラー情報)である。
第2誤差算出手段51は、第1の画像特徴量401と第2の画像特徴量402とに対応する画素間の画素値の誤差に基づくカラー情報(画像特徴量)間の誤差を算出して誤差合成手段43に出力する。
【0019】
カラー情報間の誤差としては、例えば、従来手法と同様の平均二乗誤差や、交差エントロピーを用いる。具体例として、次の式(1)で定義された損失関数(Loss)は、従来手法と同様の平均二乗誤差を表している。
【0021】
ここで、Hは、カラー情報として入力する画像の縦方向の画素数であり、Wは、カラー情報として入力する画像の横方向の画素数である。Cは、推定するカラー情報のチャンネル数であり、通常C=2である。
y
h,w,cは、画像上で座標(w,h)に位置する画素のチャンネルcにおける推定カラー情報である。
y
gth,w,cは、画像上で座標(w,h)に位置する画素のチャンネルcにおける真のカラー情報の値である。なお、一般には、前記した式(1)におけるH×W×CをNに置き換えて、h,w,cをまとめてiに置き換えて、次の式(2)のように表すことが多い。
【0023】
(特徴量マップ作成手段41)
特徴量マップ作成手段41は、カラー情報である第1の画像特徴量401および第2の画像特徴量402から、所定演算により画像内における複数の画素の関係性を特徴付ける特徴量を抽出して第1の特徴量マップ403および第2の特徴量マップ404をそれぞれ作成するものである。ここで、複数の画素の関係性を特徴付ける特徴量とは、カラー情報(画像特徴量)において複数の画素の関係性を特徴付けるものであり、カラー情報において単独の画素から独立に得られる特徴ではない。また、画素の関係性は、例えば、関係性の対象とする2つの画素値の差分で表される。注目画素とその周辺画素とは、離間していてもよいし、隣接していてもよい。
【0024】
隣接する複数の画素の関係性を特徴付ける特徴量を抽出するためには、空間フィルタリングをしてもよい。本実施形態では、特徴量マップ作成手段41は、予め定められたフィルタを用いてカラー情報である第1の画像特徴量401または第2の画像特徴量402に対しフィルタ処理を施す演算を行うことで、隣接する複数の画素の関係性を特徴付ける特徴量を抽出して第1の特徴量マップ403または第2の特徴量マップ404を作成する。
【0025】
ここで、フィルタは、空間フィルタリングに用いることができれば、目的や機能は特に限定されず、例えば、輪郭抽出フィルタ、ノイズ除去フィルタ、平滑化フィルタ、移動平均フィルタ、あるいは、メディアンフィルタ等の非線形フィルタ等を用いても構わない。
【0026】
本実施形態では、一例として、特徴量マップ作成手段41は、カラー情報である第1の画像特徴量401または第2の画像特徴量402に基づく画像に含まれるエッジを検出するエッジフィルタを用いることでエッジマップを第1の特徴量マップ403または第2の特徴量マップ404として作成するものとして説明する。エッジマップは、周辺画素との関係性を画素値の勾配で表したマップ(勾配マップ)である。
【0027】
エッジフィルタは、例えば、SobelフィルタやPrewittフィルタ等の一次微分フィルタを用いることができる。また、一次微分フィルタに限らず、Laplacianフィルタ等の二次微分フィルタを用いてもよい。
また、例えば、周辺8画素を考慮した3×3のサイズのフィルタであってもよいし、周辺24画素を考慮した5×5のサイズのフィルタ等であってもよい。
さらに、フィルタの形状は、正方形に限らず、例えば、上下左右に隣接する周辺4画素を考慮するような形状であってもよい。
以下では、一例として、Sobelフィルタを用いて勾配マップ(エッジマップ)を作成するものとして説明する。
【0028】
特徴量マップ作成手段41は、第1の画像特徴量401(推定カラー情報)から第1の特徴量マップ403(勾配マップ)を作成し、第1誤差算出手段42に出力する。
特徴量マップ作成手段41は、第2の画像特徴量402(真のカラー情報)から第2の特徴量マップ404(勾配マップ)を作成し、第1誤差算出手段42に出力する。
第1の特徴量マップ403は、例えば、推定された高解像度のカラー情報についての勾配マップ(以下、推定カラー情報についての勾配マップという)である。
第2の特徴量マップ404は、例えば、準備された正解の高解像度のカラー情報についての勾配マップ(以下、真のカラー情報についての勾配マップという)である。
なお、特徴量マップ作成手段41による勾配マップの作成についての詳細は後記する。
【0029】
(第1誤差算出手段42)
第1誤差算出手段42は、第1の特徴量マップ403と第2の特徴量マップ404とに対応する画素間の画素値の誤差に基づく勾配マップ間(特徴量マップ間)の誤差を算出するものである。第1誤差算出手段42は、推定カラー情報についての勾配マップと、真のカラー情報についての勾配マップとを用いて、勾配マップ間の誤差を算出して誤差合成手段43に出力する。この第1誤差算出手段42は、第2誤差算出手段51と比べると入力情報が異なるものの、誤差の計算手法については、第2誤差算出手段51と同様の手法を適用することができる。
【0030】
(誤差合成手段43)
誤差合成手段43は、第1の画像特徴量401と第2の画像特徴量402とのカラー情報間(画像特徴量間)の誤差と、第1の特徴量マップ403と第2の特徴量マップ404との勾配マップ間(特徴量マップ間)の誤差と、を加算し、合成誤差405を生成するものである。
誤差合成手段43は、第2誤差算出手段51から、推定カラー情報と真のカラー情報とのカラー情報間の誤差を受け付ける。
誤差合成手段43は、第1誤差算出手段42から、推定カラー情報についての勾配マップと真のカラー情報についての勾配マップとの勾配マップ間の誤差を受け付ける。
誤差合成手段43は、第2誤差算出手段51から取得したカラー情報間の誤差と、第1誤差算出手段42から取得した勾配マップ間の誤差との和を合成誤差405として算出する。誤差合成手段43は、算出した合成誤差405を、最小化手段52に出力する。
【0031】
(最小化手段52)
最小化手段52は、第1の画像特徴量401と第2の画像特徴量402との組を順次入力し、入力した画像特徴量の組に応じて、所定演算により合成誤差405が小さくなるように学習器60のパラメータを調整し、調整したパラメータを更新パラメータ406(更新用のパラメータ)として学習器60に供給するものである。
【0032】
最小化手段52は、SGDなどの誤差勾配に基づく最適化手法を用いて、合成誤差405が小さくなるように、学習器60のパラメータを調整する。なお、SGDについては、次の参考文献に記載されているので説明を省略する。
(参考文献)L. Bottou., ”Stochastic Gradient Descent Tricks.,”Neural Networks: Tricks of the Trade: Springer, 2012.
【0033】
ここで、従来技術では、不自然な色むらが発生してしまうという問題について説明する。
例えば、雲のない空の風景画像(カラー推定された画像)において、10個の画素からなる一列の画素領域を想定する。そして、正しい画素値を例えば「B」とし、この一列の1番目から5番目までの画素についてそれぞれ推定された画素値が「B+10」、6番目から10番目までの画素についてそれぞれ推定された画素値が「B−10」であるとする。
このとき、従来の誤差計算器は、画素ごとに独立に比較する誤差計算を行う。この例では、この一列の画素値は、正しい画素値との差分(絶対値)がすべて「10」であることから、従来の誤差計算器は、誤差が最小化されたものと判定する場合がある。よって、このような学習をして作成された推定器を用いると、この一列の1番目から5番目までの画素に対して推定される色と、この一列の6番目から10番目までの画素に対して推定される色と、が異なってしまうことなる。
これに対して、本実施形態の誤差計算器40は、複数の画素の関係性として、隣接する画素との差分も計算しているので、この一列の5番目の画素値と6番目の画素値との間に、20もの大きなギャップがあることを検知し、この一列のすべての画素値が「B+10」となるときよりも誤差が大きい、と判定することが期待できる。
つまり、従来技術では、一様に青くなるべき雲のない空の風景が斑になるなど、不自然な色むらが発生するところを、誤差計算器40は、注目画素とその周辺画素との色の均一性が保存された画像、すなわち、人間の目から見てより正しい画像が出力できるような誤差を計算することができる。
【0034】
以下、数式を用いて、誤差計算器40の説明を続ける。
本実施形態では、最小化手段52は、例えば、次の式(3)で定義された損失関数(Loss)を用いて、学習器60のパラメータの更新を行う。
【0036】
誤差計算器40は、学習に用いる誤差(合成誤差405)としては、従来手法と同様の平均二乗誤差や交差エントロピーに加えて、複数画素から計算する誤差を用いる。式(3)は、従来手法と同様の平均二乗誤差と、複数画素から計算する誤差としての、勾配マップにおける平均二乗誤差と、を用いる場合の例を示している。
【0037】
具体的には、式(3)の第1項は、従来手法と同様の平均二乗誤差を表している。この式(3)の第1項は、前記した第2誤差算出手段51の処理に相当する。なお、従来手法は、式(3)の第1項を最小化するように学習器のパラメータの更新を行う。
【0038】
一方、式(3)の第2項は、複数画素から計算する誤差として、特徴量マップ作成手段41で作成した勾配マップにおける平均二乗誤差を表している。この式(3)の第2項は、前記した第1誤差算出手段42の処理に相当する。また、式(3)の第1項と第2項との和は、前記した誤差合成手段43の処理に相当する。
【0039】
式(3)の第2項において、αは複数画素から計算する誤差の重み係数である。どのような学習器を作るかにもよるが、αは0.1程度の小さめの値が望ましい。
H
gradは、勾配マップの縦方向のサイズ(画素数)であり、W
gradは、勾配マップの横方向のサイズ(画素数)である。
Kは勾配マップを計算するのに用いるフィルタの個数を表している。
【0040】
また、式(3)の第2項において、g
h,w,c,kは、推定カラー情報から作成された勾配マップ上で座標(w,h)に位置する画素のチャンネルcにおける値(以下、推定カラー情報についての勾配マップの値という)である。
g
gth,w,c,kは、真のカラー情報から作成された勾配マップ上で座標(w,h)に位置する画素のチャンネルcにおける値(以下、真のカラー情報についての勾配マップの値という)である。
このうち、推定カラー情報についての勾配マップの値は、特徴量マップ作成手段41によって、例えば、次の式(4)に基づいて算出される。
【0042】
式(4)において、M
kは、k番目のフィルタの縦方向のサイズであり、N
kは、k番目のフィルタの横方向のサイズである。
s(1≦s≦M
k)は、k番目のフィルタの縦方向に配列された各係数の識別子であり、列の上端が1で表される。
t(1≦t≦N
k)は、k番目のフィルタの横方向に配列された各係数の識別子であり、行の左端が1で表される。
ω
s,t,kはフィルタ係数であり、k番目のフィルタのs行t列に配置された係数である。
【0043】
同様に、真のカラー情報についての勾配マップの値は、特徴量マップ作成手段41によって、例えば、次の式(5)に基づいて算出される。
【0045】
これら式(4)および式(5)は、特徴量マップ作成手段41の処理に相当する。
特徴量マップ作成手段41が勾配マップを作成するために、垂直方向のエッジおよび水平方向のエッジをそれぞれ検出するSobelフィルタを用いる場合、次の条件が設定される。
(条件)
フィルタ数K=2
k=1番目のフィルタに関して縦方向のサイズM
k=1=3
k=1番目のフィルタに関して横方向のサイズN
k=1=3
k=2番目のフィルタに関して縦方向のサイズM
k=2=3
k=2番目のフィルタに関して横方向のサイズN
k=2=3
k=1番目のフィルタが、垂直方向のエッジを検出するフィルタの場合、つまり、水平方向の差分(勾配)を検出する場合、そのフィルタ係数ω
k=1は、
図2(b)で表される。
k=2番目のフィルタが、水平方向のエッジを検出するフィルタの場合、つまり、垂直方向の差分(勾配)を検出する場合、そのフィルタ係数ω
k=2は、
図2(c)で表される。
【0046】
特徴量マップ作成手段41は、例えば入力する推定カラー情報である第1の画像特徴量401として、
図2(a)に例示するような画素値があったとき、
図2(b)に例示する垂直方向のエッジを検出するフィルタを用いて、3×3の領域をスキャンする。例えば、
図2(a)において2行2列目の画素を注目画素とした場合、その注目画素を中心とする3×3の領域の画素値と、フィルタ係数ω
k=1をコンボリューション(畳み込み)した結果は、20となる。
同様に、2行3列目の画素を注目画素としたときの計算結果は、20となる。このフィルタ(エッジフィルタ)は、エッジがあるところほど、値が高くなる。
一方、3×3の領域の画素値がすべて等しい領域に、このフィルタを適用すると、値が0となる。つまり、3行2列目の画素や3行3列目の画素を注目画素としたときの計算結果は、共に0となる。
【0047】
同様に、特徴量マップ作成手段41は、例えば入力する推定カラー情報である第1の画像特徴量401として、
図2(a)に例示するような画素値があったとき、
図2(c)に例示する水平方向のエッジを検出するフィルタ(フィルタ係数ω
k=2)を用いて、3×3の領域をスキャンする。特徴量マップ作成手段41は、このときに得られた計算結果と、垂直方向のエッジを検出するフィルタ(フィルタ係数ω
k=1)を用いたときの計算結果とを足し合わせることで、エッジマップ(勾配マップ)を作成する。
【0048】
こうして作成された勾配マップに対して、第1誤差算出手段42が、第2誤差算出手段51と同様の誤差計算を適用することで、勾配マップ間の誤差を算出することができる。なお、第1誤差算出手段42および第2誤差算出手段51は、誤差計算式に関して、平均二乗誤差ではなく交差エントロピーなど他の誤差関数を用いてもよい。また、第2誤差算出手段51が行う式(3)の第2項の演算において、厳密に式(3)の第2項と同じ数式である必要はなく、複数の画素に関連する値の間で所定の演算を行うものであれば構わない。
【0049】
また、前記した具体例で作成されるエッジマップのサイズ(H
grad×W
grad)は、入力画像のサイズ(H×W)よりも縦横2画素ずつ小さくなる。フィルタサイズを一般化して説明すると、エッジマップのサイズは、H
grad=H−(M
k−1)、W
grad=W−(N
k−1)となる。ただし、エッジマップのサイズを、入力画像のサイズよりも必ずしも小さくする必要はなく、入力画像と同じサイズのエッジマップを次のように作成してもよい。
【0050】
例えば、入力画像のサイズを、一時的に、(H+(M
k−1))×(W+(N
k−1))のサイズへ拡張することで、入力画像と同サイズのエッジマップが得られる。上記サイズへ拡張するには、補間する画素を、元画像の外周に沿うように並べながら生成すればよい。ここで、サイズ拡張のために一時的に生成された画素の値を決定する方法としては、例えば、生成されるすべての画素に対して元画像の平均画素値を付与する方法や、生成される各画素に対して最も近い元画像の画素の値を付与する方法などを採用することができる。
【0051】
このうち、平均画素値を付与する方法を用いる場合、
図3(a)に示すような3×3の画像に対しては、元画像の周囲を埋めるように生成されるすべての画素に対して、画素値「45」を付与すればよい。
また、最も近い画素の値を付与する方法を用いる場合、例えば、
図3(a)に示すような3×3の画像に対しては、元画像の周囲を埋めるように生成される各画素には、
図3(b)にハッチングで示す画素の値をそれぞれ付与すればよい。
【0052】
本実施形態に係る誤差計算器40は、最適化に用いる誤差として、従来使われてきた画素ごとに独立して比較して求める誤差に加えて、複数の画素から求める誤差を用いて行う学習に用いられる。これにより、学習装置Sは、画素間の関係性についても考慮した学習が行える。
したがって、誤差計算器40を、例えばカラー情報を出力するニューラルネットワークにおける学習に用いることで、学習装置Sは、訓練データのカラー情報と、推定されるカラー情報との間で画素値の勾配のような、周辺画素との関係性が同じになるよう学習することができる。これにより、学習装置Sの学習器60から、例えば、高精度なカラー推定器やカラー情報拡大器を作成できる。その結果として、カラー推定器やカラー情報拡大器が、不自然な色むらの発生が低減されたカラー画像を生成することができる。
上記の技術により、4K/8K画像のような高解像度のモノクロ画像に対しても色むらが少ない自然な色付けが可能になる。
【0053】
以上、本発明の実施形態について説明したが、本発明はこれに限定されず、その趣旨を変えない範囲で実施することができる。例えば、誤差計算器40として説明したが、この装置の構成の処理を可能にするように、汎用または特殊なコンピュータ言語で記述した誤差計算プログラムとみなすことも可能である。
【0054】
また、前記実施形態では、誤差計算器40は、従来の誤差計算器と同様の構成として、第2誤差算出手段51と、最小化手段52と、を備えていることとしたが、第2誤差算出手段51や最小化手段52は、誤差計算器とは別体であってもよい。この場合には、例えば、誤差計算器の前段に第2誤差算出手段51を設けたり、誤差計算器の後段に最小化手段52を設けたりすることができる。
【0055】
また、学習装置Sは、誤差計算器40と、例えば、カラー情報を推定する推定器を作成するために準備する学習器60とによって、カラー情報推定学習装置を構成してもよい。
また、学習装置Sは、誤差計算器40と、例えば、カラー情報を拡大する推定器を作成するために準備する学習器60とによって、カラー情報拡大推定学習装置を構成してもよい。
さらに、学習装置Sは、誤差計算器40と、例えば、低解像度画像から超解像画像等の高解像度画像を推定する推定器を作成するために準備する学習器60とによって、超解像画像推定学習装置を構成してもよい。
【0056】
以下、本発明の実施形態に係る誤差計算器40を学習に用いるカラー情報拡大器について詳細に説明する。
図4に示す自動色付け装置1は、モノクロ画像からカラー情報を推定することにより、モノクロ画像へ自動的に色付けするものであり、カラー情報拡大器10を含んでいる。自動色付け装置1は、
図4に示すように、主として、カラー情報推定器3と、情報合成器9と、を備えている。
この自動色付け装置1は、例えば一般的なコンピュータで構成され、GPU(Graphics Processing Units)等の演算装置と、ROM、RAM、HDDや一般的な画像メモリと、入出力インタフェースと、を備えている。
【0057】
カラー情報推定器3は、入力される高解像度モノクロ画像101から、低解像度モノクロ画像103および低解像度カラー情報105を生成して、これらの情報を用いて高解像度カラー情報107を推定するものである。
高解像度モノクロ画像101は、第1解像度のモノクロ画像である。この高解像度モノクロ画像101は、例えば、過去の白黒フィルムや写真からスキャンによりデジタル化したモノクロ画像である。
低解像度モノクロ画像103は、前記第1解像度よりも低い第2解像度のモノクロ画像である。
低解像度カラー情報105は、前記第2解像度のカラー情報である。
高解像度カラー情報107は、前記第1解像度のカラー情報である。
【0058】
第1解像度の値(高解像度の値)は、第2解像度の値(低解像度の値)に比較して大きければ特に限定されない。例えば、第2解像度の画像の大きさを256×256ピクセル、第1解像度の画像の大きさを512×512ピクセルとしてもよい。また、例えば、第2解像度の画像の大きさを480×270ピクセル、第1解像度の画像の大きさを4K(3840×2160)としてもよい。さらには、第1解像度の画像の大きさを8K(7680×4320)としても構わない。
【0059】
カラー情報推定器3は、
図4に示すように、縮小器5と、低解像度カラー情報推定器7と、カラー情報拡大器10と、を備えている。
【0060】
縮小器5は、入力される高解像度モノクロ画像101を縮小する処理を行って低解像度モノクロ画像103を生成するものである。ここで、縮小とは解像度を低減、つまり画素数を減少させることをいう。縮小における縮小率が例えば0.5である場合、縮小画像の水平方向、垂直方向の画素数は、原画像の水平方向、垂直方向の画素数のそれぞれ1/2となる。縮小器5は、生成した低解像度モノクロ画像103を低解像度カラー情報推定器7に出力する。
【0061】
低解像度カラー情報推定器7は、推定を行うための学習により予め決定されたパラメータ群を用いて、縮小器5により生成された低解像度モノクロ画像103から、低解像度のカラー情報(画像特徴量)を抽出する。これにより、低解像度カラー情報推定器7は、低解像度カラー情報105を推定する。なお、低解像度カラー情報推定器7を作成するための学習の流れは、従来技術と同様であるが、簡単な説明を後記する。
【0062】
カラー情報拡大器10は、低解像度カラー情報推定器7により推定された低解像度カラー情報105と、縮小器5をバイパスして入力される高解像度モノクロ画像101と、を入力として、画像サイズが拡大されたカラー情報(高解像度カラー情報107)を推定する処理を行うものである。カラー情報拡大器10は、低解像度カラー情報105を拡大する際に、高解像度モノクロ画像101(モノクロ情報)を用いて拡大する。そして、カラー情報拡大器10は、推定した高解像度カラー情報107を情報合成器9に出力する。
【0063】
情報合成器9は、カラー情報推定器3で推定された高解像度カラー情報107と、高解像度モノクロ画像101とを合成し、高解像度カラー画像109を作成する。情報合成器9は、1チャンネル(以下、1chと表記する場合もある)のモノクロ情報と、2チャンネル(2ch)のカラー情報とを単純に合成してカラー画像を生成する。
【0064】
次に、カラー情報拡大器10の学習の流れについて、低解像度カラー情報推定器7の学習の流れと対比しながら説明する。
【0065】
はじめに、低解像度カラー情報推定器7の学習の流れについて
図5を参照して説明する。
低解像度カラー情報推定器7は、以下の手順により、予め用意した学習器から生成する。この学習器は、モノクロ画像を入力し、所定の計算処理を行うことによりカラー情報を推定して出力する。
図5では、学習器を、学習が終わった状態の低解像度カラー情報推定器7として表記している。そして、大量の学習用のカラー画像を用意し、以下のステップS1〜ステップS4を十分な回数繰り返す。この学習器がこのパラメータを学習し、適切にパラメータを設定することにより精度の良いカラー情報推定器を作成できる。
【0066】
(ステップS1)
学習用のカラー画像として低解像度カラー画像202を用意し、それを低解像度モノクロ画像203と真のカラー情報204とに分離する。
ここで、低解像度モノクロ画像203は、低解像度の学習用モノクロ画像である。
また、真のカラー情報204は、低解像度の学習用モノクロ画像と同じサイズの正解カラー情報であって、推定されるカラー情報との誤差計算に用いる。
【0067】
(ステップS2)
次に、学習器(低解像度カラー情報推定器7)は、低解像度モノクロ画像203を入力し、現在のパラメータを用いた推定結果のカラー情報として、低解像度カラー情報205を出力する。
【0068】
(ステップS3)
次に、従来の誤差計算器8は、低解像度カラー情報205(推定カラー情報)と真のカラー情報204との誤差を計算する。この誤差としては、各画素値の平均二乗誤差などが用いられる。
【0069】
(ステップS4)
また、従来の誤差計算器8は、計算して得られた誤差から、SGDなどの誤差勾配に基づく最適化手法を用いて、誤差が小さくなるように、学習器(低解像度カラー情報推定器7)のパラメータを調整し、調整されたパラメータを学習器に出力する。
なお、従来の誤差計算器8は、例えば、
図1に示した第2誤差算出手段51と最小化手段52とで構成される。
【0070】
次に、カラー情報拡大器10の学習の流れについて
図6を参照して説明する。
カラー情報拡大器10は、以下の手順により、予め用意した学習器から生成する。この学習器は、高解像度モノクロ画像301および低解像度カラー情報305を入力し、所定の計算処理を行うことにより高解像度カラー情報307を推定して出力する。
図6では、学習器を、学習が終わった状態のカラー情報拡大器10として表記している。そして、大量の学習用のカラー画像を用意し、以下のステップS10〜ステップS14を十分な回数繰り返す。この学習器がこのパラメータを学習し、適切にパラメータを設定することにより精度の良いカラー情報拡大器を作成できる。
【0071】
(ステップS10)
学習用のカラー画像として高解像度カラー画像309を用意し、それを縮小器5によって単純に縮小して低解像度カラー情報305とする。
ここで、高解像度カラー画像309としては、古い白黒フィルムをカラー化したものも使用する。この場合、例えば、過去の白黒フィルムや写真からスキャンによりデジタル化したモノクロ画像に対して、人手で色付けしたデジタルデータとする。また、学習用の高解像度カラー画像309を大量に準備するために、古い白黒フィルム以外に、カラー撮影された新しい4K等のカラー画像を用いてもよい。
【0072】
(ステップS11)
次に、高解像度カラー画像309を、高解像度モノクロ画像301と高解像度カラー情報(真のカラー情報)304とに分離する。
ここで、高解像度モノクロ画像301は、高解像度の学習用モノクロ画像である。
また、高解像度カラー情報304は、高解像度の学習用モノクロ画像と同じサイズの正解カラー情報であって、推定される高解像度カラー情報との誤差計算に用いる。
【0073】
(ステップS12)
次に、学習器(カラー情報拡大器10)は、高解像度モノクロ画像301を入力し、現在のパラメータを用いた推定結果のカラー情報として、高解像度カラー情報307を出力する。
【0074】
(ステップS13)
次に、本発明の実施形態に係る誤差計算器40は、高解像度カラー情報307(推定カラー情報)と高解像度カラー情報(真のカラー情報)304との誤差(合成誤差)を計算する。この誤差としては、前記したカラー情報間の誤差と、勾配マップ間の誤差とを、を合成した合成誤差405(
図1参照)を用いる。
【0075】
(ステップS14)
また、誤差計算器40は、計算して得られた誤差(合成誤差405)から、SGDなどの誤差勾配に基づく最適化手法を用いて、誤差が小さくなるように、学習器(カラー情報拡大器10)のパラメータを調整し、調整されたパラメータを学習器に出力する。なお、誤差計算器40は、学習のときに付加されるが、学習後には接続を解除する。
【0076】
次に、カラー情報拡大器10の詳細な構成について
図7を参照して説明する。
カラー情報拡大器10は、
図7に示すように、サイズ拡大手段21と、合成手段22aと、高解像度カラー情報推定手段23と、を備えている。なお、
図7のカラー情報拡大器10は、特徴抽出手段31,32,33を備える形態で図示したが、例えば、すべての特徴抽出手段を省略した構成とすることもできる。なお、以下では、特徴抽出手段について、便宜的に第1の特徴抽出手段31、第2の特徴抽出手段32、および第3の特徴抽出手段33のように呼称する場合もある。
【0077】
カラー情報拡大器10は、例えばニューラルネットワークにより構成できる。また、ニューラルネットワークは、例えばCNN(Convolutional Neural Network)であってもよい。CNNでは、隠れ層(hidden layer)に、Convolution層(畳み込み層)や、Deconvolution層(逆畳み込み層、または、Transposed Convolution 層)を用いる。よて、CNNを採用した場合、カラー情報拡大器10は、各構成要素を、Convolution層またはDeconvolution層を用いて実装可能であり、GPUを用いて高速に計算できる。
【0078】
サイズ拡大手段21は、入力される低解像度の画像特徴量を拡大する処理を行って高解像度の画像特徴量を生成するものである。ここで、低解像度の画像特徴量とは、例えば、低解像度カラー情報105のことをいう。なお、
図7に示すように、カラー情報拡大器10が第2の特徴抽出手段32を備える場合には、第2の特徴抽出手段32が低解像度カラー情報105から抽出した画像特徴量が低解像度の画像特徴量となる。このサイズ拡大手段21は、生成した高解像度の画像特徴量を合成手段22aに出力する。
【0079】
サイズ拡大手段21には、例えば、Deconvolution層(ニューラルネットワークを用いた画像拡大層)を用いてもよい。また、一般的な画像拡大アルゴリズムで用いられるパラメータを固定的に用いてもよい。なお、一般的な画像拡大アルゴリズムとしては、例えば、最近傍補間法やBilinear補間法などを用いてもよい。
【0080】
合成手段22aは、例えば、入力される高解像度モノクロ画像101と、サイズ拡大手段21によって生成された高解像度の画像特徴量とを合成するものである。なお、
図7に示すように、カラー情報拡大器10が第1の特徴抽出手段31を備える場合には、合成手段22aは、高解像度モノクロ画像101から抽出された画像特徴量と、サイズ拡大手段21によって生成された高解像度の画像特徴量とを合成する。この合成手段22aは、合成した高解像度の画像特徴量を高解像度カラー情報推定手段23に出力する。
合成手段22aは、1chのモノクロ情報と、このモノクロ情報と同じ大きさの2chのカラー情報とを単純に合成し、高解像度の画像特徴量を生成する。合成手段22aには、例えば、ニューラルネットワークのConvolution層を用いてもよい。
【0081】
高解像度カラー情報推定手段23は、合成手段22aにより合成された高解像度の画像特徴量から、高解像度カラー情報を推定するための学習により、予め決定されたパラメータ群を用いて画像特徴量を抽出し、高解像度カラー情報107を推定するものである。ここで、学習とは、カラー情報拡大器10を作成するための学習をいう。
【0082】
高解像度カラー情報107は、低解像度カラー情報105が拡大されたカラー情報に相当し、高解像度モノクロ画像101に対応した解像度を有する。この高解像度カラー情報107とは、色空間のチャンネルごとのカラー情報であって、例えば、輝度チャンネル以外の2チャンネルについての画像特徴量をいう。
【0083】
高解像度カラー情報推定手段23は、その前段からの複数(3以上)の出力(Output)に対応した複数(3以上)のアウトプットチャンネルについての画像特徴量を、色空間における2チャンネルについての画像特徴量に変換し、カラー情報を推定する。
高解像度カラー情報推定手段23には、例えば、ニューラルネットワークのConvolution層を用いてもよい。また、Convolution層(隠れ層)が複数あってもよい。つまり、Convolutionを連続的に繰り返し行ってもよい。
高解像度カラー情報推定手段23の前段からのアウトプットチャンネル数は所望の値に設定できる。例えば合成手段22aからのアウトプットチャンネル数は3chやそれ以上であってもよい。
【0084】
カラー情報拡大器10は、
図7に示すように、第1の特徴抽出手段31、第2の特徴抽出手段32、および第3の特徴抽出手段33のうちの少なくとも1つの特徴抽出手段を備えてもよい。
【0085】
第1の特徴抽出手段31は、高解像度モノクロ画像101から、学習により予め決定されたパラメータ群を用いて高解像度の画像特徴量を抽出し、抽出した高解像度の画像特徴量を合成手段22aに出力するものである。なお、学習とは、カラー情報拡大器10を作成するための学習をいう。第1の特徴抽出手段31は、第1の特徴抽出手段31に入力される1chのモノクロ情報を、第1の特徴抽出手段31のアウトプットチャンネルごとに高解像度の画像特徴量にそれぞれ変換する。
【0086】
第2の特徴抽出手段32は、低解像度カラー情報105から、学習により予め決定されたパラメータ群を用いて低解像度の画像特徴量を抽出し、抽出した低解像度の画像特徴量をサイズ拡大手段21に出力するものである。第2の特徴抽出手段32は、第2の特徴抽出手段32に入力される2chのカラー情報を、第2の特徴抽出手段32のアウトプットチャンネルごとに低解像度の画像特徴量にそれぞれ変換する。
【0087】
第3の特徴抽出手段33は、合成手段22aで生成された高解像度の画像特徴量から、学習により予め決定されたパラメータ群を用いて高解像度の画像特徴量を抽出し、抽出した高解像度の画像特徴量を高解像度カラー情報推定手段23に出力するものである。第3の特徴抽出手段33は、合成手段22aからの複数の出力に対応した複数のアウトプットチャンネル(例えば3ch)についての画像特徴量を、第3の特徴抽出手段33のアウトプットチャンネルごとに高解像度の画像特徴量にそれぞれ変換する。なお、第3の特徴抽出手段33のアウトプットチャンネル数は、例えば64ch、128ch、256ch等に設定される。
【0088】
各特徴抽出手段31〜33には、例えば、ニューラルネットワークのConvolution層を用いてもよい。また、Convolution層(隠れ層)が複数あってもよい。各特徴抽出手段からのアウトプットチャンネル数は所望の値に設定できる。なお、本明細書では、特徴抽出手段等に入力した画像特徴量をアウトプットチャンネルごとにコンボリューションにかけて得られた画像特徴量のことを、入力から得た特徴という。また、本明細書では、特徴抽出手段等への複数チャンネルからなる入力情報をコンボリューションにかけて、入力した画像特徴量を変換することを、特徴を抽出するという。
【0089】
図7では、高解像度カラー情報推定手段23とは別に第3の特徴抽出手段33を図示したが、高解像度カラー情報推定手段23が内部に第3の特徴抽出手段33を備えることとしてもよい。第3の特徴抽出手段33は、高解像度カラー情報推定手段23が色空間のチャンネルごとの画像特徴量を抽出する前に、色空間の2チャンネルについての画像特徴量を出力するためのパラメータ群とは異なるパラメータ群を用いて、サイズ拡大手段21および合成手段22aの処理により生成された高解像度の画像特徴量から、複数チャンネル(例えば64ch)について高解像度の画像特徴量をそれぞれ生成する。
【0090】
カラー情報拡大器10によれば、高解像度モノクロ画像101(モノクロ情報)を明示的に用いているので、推定されるカラー情報のぼけを低減し、低解像度カラー情報105を精度よく拡大できる。このカラー情報拡大器10は、例えば4Kまたは8K等の高解像度モノクロ画像101への自動色付けをする際に用いるカラー情報を推定するカラー情報推定器3に組み込むことができる。また、カラー情報推定器3は、高解像度モノクロ画像101への自動色付けをする際に用いるカラー情報を推定する精度を向上させることができる。
【0091】
また、高解像度のモノクロ画像のデジタルデータは、例えば物理的フィルムからスキャンすることにより得られるが、従来の色付け技術では、このような高解像度のモノクロ画像に直接色づけすることはできなかった。これに対して、カラー情報推定器3を備える自動色付け装置1は、4K等の高解像度のモノクロ画像に対する自然な色付けを可能とすることができる。
【0092】
また、例えば、写真や物理的フィルムからスキャンしたモノクロ画像のデータは存在するが、写真や物理的フィルムが消失してデータしか残っていない状況においても、カラー情報推定器3を備える自動色付け装置1は、当時の色情報を推定して、モノクロ画像に色付けすることができる。
【0093】
さらに、例えば、低解像度カラー情報105が由来するところのカラー撮影された画像では、モノクロ情報チャンネル(色空間における輝度チャンネル)上で境界がはっきりしている領域は、カラー情報チャンネル(例えば、輝度チャンネル以外の2チャンネル)上でも境界がはっきりしているケースが多い。ここで、境界とは、例えばオブジェクトの輪郭線(オブジェクトとその背景との境目)等の線で表される部分である。
そのため、カラー情報拡大器10のように、高解像度モノクロ画像101を用いて、低解像度カラー情報105を拡大すると、特に、高解像度モノクロ情報チャンネル(高解像度モノクロ画像101)上で境界がはっきりしている領域におけるカラー情報のぼけが低減される効果を奏する。
【0094】
なお、前記したカラー情報は、色空間における輝度チャンネル以外の2チャンネルとして説明したが、それ以外であっても取り扱うことが可能である。一例としては、RGB色空間における3チャンネルすべてをカラー情報として用いてもよい。
【0095】
また、カラー情報拡大器やカラー情報推定器に対して入力されるカラー情報の形式と、出力するカラー情報の形式とは一致していなくても構わない。一例としては、カラー情報拡大器10に、高解像度モノクロ画像101としてLab色空間におけるLチャンネルを入力すると共に、低解像度カラー情報105としてLab色空間におけるabチャンネルを入力した場合、高解像度カラー情報107としてRGB色空間におけるRGBチャンネルを出力することもできる。
【0096】
また、カラー情報拡大器10は、ニューラルネットワークによる学習に限らず、他の機械学習技術を用いて構成することもできる。誤差計算器40は、カラー情報拡大器10の学習に用いるだけではなく、低解像度カラー情報推定器7の学習に用いてもよい。
【実施例】
【0097】
実施形態に係る誤差計算器の性能を確かめるために、誤差計算器40を学習に用いたカラー情報拡大器によってカラー情報を拡大する実験を行った。
図8は、実験に用いたカラー情報拡大器を模式的に示す説明図である。
図8に示すように、実験に用いたカラー情報拡大器は、サイズ拡大手段21と、合成手段22aと、第3の特徴抽出手段33と、高解像度カラー情報推定手段23と、を備えている。なお、このカラー情報拡大器において、
図7に示すカラー情報拡大器10と同じ構成には同じ符号を付して説明を省略する。
【0098】
合成手段22aは、高解像度モノクロ画像101と、サイズ拡大手段21によって生成された高解像度の画像情報とを合成して高解像度の合成画像情報を生成する。
【0099】
高解像度モノクロ画像101は、Lab色空間におけるLチャンネルに相当する1chのモノクロ情報(画像特徴量)である。
図8では、1枚の画像として模式的に示した。
また、実験では、高解像度モノクロ画像101が960×540ピクセルの画像であるものとした。なお、高解像度モノクロ画像101における画素値をベクトルで表現すると、一般には次の式(6)で示される。式(6)で示すベクトルx
1は、高解像度モノクロ画像101の画素数と同様に518400個の成分を持つ。
【0100】
【数6】
【0101】
低解像度カラー情報105は、Lab色空間におけるabチャンネルに相当する2chのカラー情報(画像特徴量)である。
図8では、2枚の小さな画像として模式的に示した。
また、実験では、低解像度カラー情報105の解像度が480×270ピクセルであるものとした。そして、実験では、サイズ拡大手段21による拡大率を2(垂直方向2倍×水平方向2倍)とした。
図8では、2枚の拡大された画像として模式的に示した。
【0102】
これら拡大された2chのカラー情報における画素値をそれぞれベクトルで表現すると、一般には次の式(7)および式(8)で示される。それぞれのベクトルx
2,x
3は、前記した式(6)で示されるベクトルx
1と同数個の成分を持っている。
【0103】
【数7】
【0104】
【数8】
【0105】
合成手段22aは、各ベクトルx
1、x
2、x
3を入力として、それらのベクトル成分を各画素に対応させて並べて、3chの情報とする。
図8では、3枚の画像として模式的に示した。なお、この時点では、例えば3×960×540個の画素ごとの特徴量に対応したメモリが必要である。
【0106】
第3の特徴抽出手段33は、コンボリューションを行うニューラルネットワークで構成されている。本実験では、20層のConvolution層を構築した。
また、各Convolution層では、出力としてN個の特徴を抽出するものとした。つまり、アウトプットチャンネル数はNである。この実験ではNch=64chとした。
なお、
図8では、3層のConvolution層だけを示し、他は省略した。また、64chのうち12のチャンネルだけをNchとして図示し、他は省略した。
【0107】
Convolution層の1層目(1回目)は、入力チャンネルが3ch(色空間における3チャンネル)であり、この1層目についての64のアウトプットチャンネルごとに、次の式(9)で表されるコンボリューションを行った。
【0108】
【数9】
【0109】
式(9)において、ω
iは重みベクトルである。重みベクトルω
iは、このカラー情報拡大器における学習の際に誤差を使ってω
iを更新する、という誤差計算で決定する学習パラメータである。重みベクトルω
iは、1次元の多数変数のベクトルであって、入力される高解像度モノクロ画像101の画素数と同数の成分を持つ。bはバイアスである。なお、i=1,2,3に対応したx
1、x
2、x
3は式(6)〜式(8)で定義されている。
なお、この時点では、例えば64×960×540個の画素ごとの特徴量に対応したメモリが必要である。
【0110】
Convolution層の2層目(2回目)は、入力チャンネルが64ch(前段の1層目についてのアウトプットにおける64チャンネル)であり、2層目についての64のアウトプットチャンネルごとに、次の式(10)で表されるコンボリューションを行った。
【0111】
【数10】
【0112】
式(10)は式(9)と同様の形式で表されている。なお、i=1〜64に対応したx
1〜x
64は、前段の1層目についてのアウトプットにおける64チャンネルのそれぞれの情報を示しており、式(6)〜式(8)と同様に定義できるので、その詳細は省略する。
【0113】
Convolution層の3〜19層目(3〜19回目)は、同様に、入力チャンネルが64ch(前の層についてのアウトプットにおける64チャンネル)であり、それぞれ、64のアウトプットチャンネルごとに、前記した式(10)で表されるコンボリューションを行った。なお、3〜19層目においても、i=1〜64に対応したx
1〜x
64は、同様に、それらの前の層についてのアウトプットにおける64チャンネルについての画像特徴量を示している。
【0114】
高解像度カラー情報推定手段23もConvolution層で構成されている。この高解像度カラー情報推定手段23は、出力として、色空間における2つのチャンネルに対応させた特徴をそれぞれ抽出した。つまり、アウトプットチャンネルは2chである。
このConvolution層(高解像度カラー情報推定手段23)は、入力チャンネルが64ch(前の層についてのアウトプットにおける64チャンネル)であり、色空間における2つのチャンネルごとに、前記した式(10)で表されるコンボリューションを行った。
【0115】
前記した式(9)におけるω
iと式(10)におけるω
iとはそれぞれ異なっている。また、アウトプットチャンネルごとにω
iはそれぞれ異なっている。さらに、前記した20層のConvolution層には、それぞれ異なる重みベクトルω
iを用いた。
【0116】
また、実験では、1282回(=64+64×19+2)のコンボリューションのすべてを、一例として、以下の同じ条件で、重みベクトルω
iを変えながら行った。
カーネル(kernel):3
パディング(padding):1
ストライド(stride):1
【0117】
よって、実験で用いた重みベクトルの各成分の個数を総計した個数は、次の式(11)を演算した結果の個数となる。
3×3×(3×64+64×64×19+64×2) … 式(11)
また、バイアス項の個数の総計はコンボリューションの個数と同じく、1282個である。これらの合計が全パラメータ数である。
つまり、実験に用いたカラー情報拡大器において、学習によって予め決定されたパラメータ群の個数は、703296+1282=704578個となる。
【0118】
以上の処理により得られた高解像度カラー情報107を、
図4に示すように、元画像である高解像度モノクロ画像101と合成して、高解像度カラー画像109を作成した(以下、実施例1)。
また、従来技術の方法で拡大したカラー情報を、元画像である高解像度モノクロ画像101と合成して、高解像度カラー画像を作成した(以下、比較例1)。
実施例1は、比較例1と比べて色のぼけが低減されたことを目視で確認できた。
また、式(1)で計算できる誤差が、平均値で7.66(比較例1)から6.53(実施例1)と約17%減少したことを確認できた。