以下、本発明を実施するための形態について図面を用いて詳細に説明する。以下に説明する実施例1は、入力画像から切り出した部分画像に対してNN(ニューラルネットワーク)の演算を行い、NN演算後の部分画像に窓関数Mを適用して対象画像を切り出し、対象画像をタイル状に配置して出力画像を生成する。また、実施例2は、入力画像から切り出した部分画像に対してNNの演算を行い、NN演算後の部分画像に、重み値を有する窓関数Mを適用して対象画像を生成し、生成した対象画像に対し既に生成済みの対象画像の一部を加算し、出力画像を生成する。
〔実施例1〕
まず、実施例1について説明する。前述のとおり、実施例1は、入力画像から切り出した部分画像に対してNNの演算を行い、NN演算後の部分画像に窓関数Mを適用して対象画像を切り出し、対象画像をタイル状に配置して出力画像を生成する。実施例1では、出力画像を生成する際に、複数の対象画像をオーバーラップさせる必要がない。
図1は、実施例1の画像復元装置の構成例を示すブロック図であり、図2は、実施例1の画像復元装置の処理例を示すフローチャートである。この画像復元装置1−1は、走査部10、切り出し部11、NN(ニューラルネットワーク)部12、窓関数適用部(切り出し部)13−1、格納処理部14及びメモリ15を備えている。
画像復元装置1−1は、画質劣化した画像Iを入力し、画像Iに対し画像復元処理を施してブロック歪みを軽減し、画像Oを生成して出力する。
具体的には、画像復元装置1−1は、画質劣化した画像Iから所定領域の画像を部分画像Aとして切り出す。そして、画像復元装置1−1は、部分画像A毎に、NN及び窓関数Mを用いて部分画像Aの画素値列を処理し、部分画像Aの領域(部分領域)に含まれる所定領域(対象領域)の画像を対象画像Bとして生成し、メモリ15に格納する。
ここで、メモリ15に格納された全ての対象画像Bを組み合わせることにより、入力用の画像Iに対応する出力用の画像Oが構成される。
画像復元装置1−1は、メモリ15から全ての対象画像Bを読み出し、ブロック歪みが軽減された画像Oを出力する。
図3は、部分画像A及び対象画像Bを説明する図である。画像Iから所定領域である部分領域の部分画像Aが切り出され、NN部12、窓関数適用部13−1及び格納処理部14により、部分画像Aから対象画像B(部分画像A内の対象領域が補正された対象画像B)が生成される。部分領域及び部分画像AのサイズはW×H画素であり、対象領域及び対象画像BのサイズはX×Y画素である。
復元対象の領域が対象領域であり、対象領域に隣接する領域が近傍領域であり、対象領域及び近傍領域の和集合が部分領域である。図3に示すように、対象領域を含むように部分領域が設定される。
例えば、部分領域は、X×Y画素の矩形領域を、対象領域に対して8近傍に隣接するように配置することで、これら8個の矩形領域である近傍領域と対象領域との和集合として設定される。X,Yは1以上の整数とし、例えば、X,Yは、3Xが画像Iの水平画素数以下かつ3Yが画像Iの垂直画素数以下とする。具体的には、例えば、X=Y=8とする。
図1及び図2に戻って、画像復元装置1−1の走査部10は、画像Iを走査するための所定位置の走査座標(x1,y1)を設定する。所定位置の走査座標(x1,y1)は、画像Iにおいて、対象画像Bの対象領域における左上頂点を基準位置とした座標である。走査座標(x1,y1)は、画像Iに対応する画像Oが隙間なく構成されるように、対象画像Bを生成するための基準位置が順次設定される。
走査部10は、走査座標(x1,y1)を基準とする位置の対象画像Bの生成に伴い、走査座標(x1,y1)を切り出し部11及び格納処理部14に出力する。すなわち、走査部10は、メモリ15に格納されるべき対象画像Bを単位として、切り出し部11、NN部12、窓関数適用部13−1及び格納処理部14がそれぞれの処理を行うように、走査座標(x1,y1)を設定して出力する。
切り出し部11は、画像Iを入力すると共に(ステップS201)、走査部10から走査座標(x1,y1)を入力する。そして、切り出し部11は、走査座標(x1,y1)を基準とする対象領域を含む所定の部分領域を画像I内に設定し、画像Iから部分領域の部分画像Aを切り出し、部分画像AをNN部12に出力する(ステップS202)。
図4は、切り出し部11の処理例を説明する図であり、図2のステップS202の処理を示している。切り出し部11により、走査座標(x1,y1)を基準として、対象領域を含むW×H画素の部分領域が設定され、画像Iから、W×H画素の部分領域の部分画像Aが切り出される。
例えば、部分画像Aが24×24画素からなり、対象画像Bが8×8画素からなる場合を想定する。切り出し部11は、対象画像B1に対応する走査座標(x1−1,y1−1)を基準として、部分画像A1を切り出す。そして、対象画像B1が生成された後、切り出し部11は、対象画像B1に隣接する対象画像B2に対応する走査座標(x1−2,y1−2)を基準として、部分画像A1から8画素分シフトした部分画像A2を切り出す。この場合、部分画像A1,A2は、一部の領域で重複することとなる。
図1及び図2に戻って、NN部12は、切り出し部11から部分画像Aを入力し、部分画像A及び予め設定されたパラメータ(重み係数)に基づいて、NNの演算を行い、部分画像A’を生成する(ステップS203)。そして、NN部12は、部分画像A’を窓関数適用部13−1に出力する。NN部12の詳細については後述する。
尚、NN部12が用いるパラメータは、後述する畳み込み演算部20等におけるカーネルWに相当し、後述する学習装置2の機械学習により生成された値が用いられる。尚、パラメータとして、人為的に与えられた値を用いてもよいし、後述する学習装置2の機械学習により生成された値を人為的に修正した値を用いるようにしてもよい。
窓関数適用部13−1は、NN部12から部分画像A’を入力し、部分画像A’に予め設定された窓関数Mを適用し、対象画像Bを切り出す(ステップS204)。そして、窓関数適用部13−1は、対象画像Bを格納処理部14に出力する。窓関数適用部13−1の詳細については後述する。
格納処理部14は、走査部10から走査座標(x1,y1)を入力すると共に、窓関数適用部13−1から対象画像Bを入力する。そして、格納処理部14は、走査座標(x1,y1)に対応するアドレスを指定し、対象画像Bをタイル状に配置して出力用の画像Oを構成するように、メモリ15に格納する(ステップS205)。格納処理部14の詳細については後述する。
図2のステップS202〜ステップS205の処理は、対象画像Bの位置を示す走査座標(x1,y1)毎に順次行われ、画像Iに対応する画像Oが隙間なく構成されるように、対象画像Bが順次生成されメモリ15に格納される。
図示しない処理部は、メモリ15から全ての対象画像Bを画像Oとして読み出し、画像Oを出力する(ステップS206)。
〔NN部12〕
次に、図1に示したNN部12について詳細に説明する。前述のとおり、NN部12は、部分画像A及び予め設定されたパラメータに基づいてNNの演算を行い、部分画像A’を生成する。
例えば、NN部12は、W×H画素(Wは3以上の整数かつHは3以上の整数とする。例えば、W=3X、H=3Yとする。)の部分画像Aを入力するものとし、これと同じ大きさW×H画素の部分画像A’を出力するものとする。また、NN部12は、畳み込みNNを構成要素として含むものとする。
図5は、NN部12の構成例を示すブロック図である。このNN部12は、畳み込み演算部20、活性化関数適用部21、ビルディングブロック22,23、畳み込み演算部24及び活性化関数適用部25を備えている。これらの構成部は、この順番に縦続接続されている。
ビルディングブロック22,23は、畳み込みNNの一種であるResNetにより構成される。ビルディングブロック22は、畳み込み演算部30,32及び活性化関数適用部31,33及び加算部34を備えている。ビルディングブロック23は、畳み込み演算部35,37及び活性化関数適用部36,38及び加算部39を備えている。これらの構成部も、この順番に縦続接続されている。
畳み込み演算部20,30,32,35,37,24は、W×H×D(Dは1以上の整数とする。)の3階テンソルTinを入力する。畳み込み演算部20,30,32,35,37,24は、3階テンソルTin及び予め設定されたパラメータである結合重みを表す4階テンソルW(以下、「カーネルW」という。)を用いて以下の演算を行う。畳み込み演算部20,30,32,35,37,24は、W×H×N(Nは1以上の整数とする。)の3階テンソルTconvを出力する。以下、3階テンソルTの(x,y,z)成分をT(x,y,z)と表す。
Kは、3次元ベクトル空間において定義される領域であって、例えば、x0≦x1かつy0≦y1なる4つの整数x0,x1,y0,y1に対し、以下の式を満たすものとする。
例えば、正の奇数Kx及び正の奇数Kyに対して、x0=−(Kx−1)/2、x1=(Kx−1)/2、y0=−(Ky−1)/2、及びy1=(Ky−1)/2とする。具体的には、例えば、Kx=Ky=3またはKx=Ky=5のような値を用いる。
例えば、Kx=Ky=5の場合には、
となる。
活性化関数適用部21,31,33,36,38,25は、前段の畳み込み演算部20,30,32,35,37,24からW×H×Nの3階テンソルTconvを入力する。活性化関数適用部21,31,33,36,38,25は、以下の演算にて、線形または非線形の関数φ(これを「活性化関数」という。)を3階テンソルTconvの各成分に適用し、その結果を3階テンソルToutとして出力する。
活性化関数φは、典型的には非線形関数とする。図5に示すように、NN部12が複数(P個(Pは2以上の整数))の活性化関数適用部21,31等を備える場合には、0個以上(P−1)個以下の範囲で、線形の活性化関数φを含めても構わない。
活性化関数φが線形関数である場合には、実定数b及び非零の実定数aに対して、以下の演算が行われる。
典型的には、a=1及びb=0、すなわち、以下の演算が行われる。
尚、前記式(6)の活性化関数φを用いる場合には、NN部12において、当該活性化関数適用部21,31,33,36,38,25を省略することができ、出力をテンソルの成分毎に短絡して実装可能である。
活性化関数φが非線形関数である場合には、例えば、活性化関数φとして以下の式にて表すシグモイド(sigmoid)関数が用いられる。
また、例えば、活性化関数φとして以下の式にて表すReLU(Rectified Linear Unit)関数が用いられる。
また、例えば、活性化関数φとして以下の式にて表すソフトサイン(soft sign)関数が用いられる。
また、例えば、活性化関数φとして以下の式にて表すソフトプラス(soft plus)関数が用いられる。
また、例えば、活性化関数φとして以下の式にて表す双曲線正接(hyperbolic tangent)関数が用いられる。
図5に示すように、NN部12が複数の活性化関数適用部21,31等を備える場合、全ての活性化関数適用部21,31等が同一の活性化関数φを用いてもよいし、異なる活性化関数φを用いてもよい。活性化関数適用部21,31等は、任意の活性化関数φを用いることができる。
図5では、NN部12は2個のビルディングブロック22,23を備えているが、1個のビルディングブロック22を備えるようにしてもよいし、3個以上のビルディングブロック22,23等を備えるようにしてもよい。
ビルディングブロック22は、畳み込み演算部30,32及び活性化関数適用部31,33の対を、1対以上縦続接続して構成される。ビルディングブロック22は、初段の畳み込み演算部30に対する入力テンソルと最終段の活性化関数適用部33からの出力テンソルとの和を演算して出力する加算部34を備え、当該加算部34の出力信号を当該ビルディングブロック22の出力信号として扱う。ビルディングブロック23についても同様である。
ビルディングブロック22の加算部34は、活性化関数適用部21からビルディングブロック22への入力テンソル値(すなわち畳み込み演算部30への入力テンソル値)と、活性化関数適用部33からの出力テンソル値との成分毎の和を演算する。そして、加算部34は、その結果をビルディングブロック23に出力する。
ビルディングブロック23の加算部39は、ビルディングブロック22からのビルディングブロック23への入力テンソル値(すなわち畳み込み演算部35への入力テンソル値)と、活性化関数適用部38からの出力テンソル値との成分毎の和を演算する。そして、加算部39は、その結果を畳み込み演算部24に出力する。
また、NN部12は、ビルディングブロック22,23を構成しない非ビルディングブロックとして、畳み込み演算部20,24及び活性化関数適用部21,25を備えている。NN部12は、ビルディングブロックを構成しない畳み込み演算部を1個以上備えていればよい。図5では、畳み込み演算部20,24は、ビルディングブロックを構成しない。
前述のとおり、畳み込み演算部20,30,32,35,37,24は、W×H×Dの3階テンソルTin及びカーネルWを用いて、前記式(1)の演算にて、W×H×Nの3階テンソルTconvを求める。
NN部12を構成する初段の畳み込み演算部20におけるDの値は、画像復元装置1−1の処理対象である画像I(すなわち、部分領域または対象領域の画像)の画素がモノクロであるかまたはカラーであるかにより、その色成分の数と同値とする。
例えば、画像復元装置1−1の処理対象がモノクロ画像である場合、畳み込み演算部20においてD=1とする。また、例えば、画像復元装置1−1の処理対象がカラー画像である場合、畳み込み演算部20においてD=3とする。
また、NN部12を構成する最終段の畳み込み演算部24におけるNの値は、画像復元装置1−1の処理対象である画像Iの画素値がモノクロであるかまたはカラーであるかにより、その色成分の数と同値とする。
例えば、画像復元装置1−1の処理対象がモノクロ画像である場合、畳み込み演算部24においてN=1とする。また、例えば、画像復元装置1−1の処理対象がカラー画像である場合、畳み込み演算部24においてN=3とする。
また、ある段の畳み込み演算部のNの値と、(必要に応じて活性化関数適用部、加算部、またはそれらの両方を挟んで、)引き続く畳み込み演算部のDの値は、同値かつ1以上の整数値とする。例えば、畳み込み演算部32のNの値と、畳み込み演算部35のDの値は、同値の1以上の整数値とする。
図5において、畳み込み演算部20,30,32,35,37,24内に記載したカッコ[]内の4個の数字は、順に、Kx,Ky,D,Nの値を示す。
このように、NN部12は、部分画像Aの画素値列に基づいて、対象領域において生じているモスキートノイズ成分等を除いた画素値列を予測するように演算する。
ビルディングブロック22内の畳み込み演算部30の入力から加算手段34へ直接的に至る第一の短絡路、及びビルディングブロック23内の畳み込み演算部35の入力から加算手段39へ直接的に至る第二の短絡路の存在により、第一の短絡路及び第二の短絡路のいずれも経由しない信号経路において、NN部12は6層の畳み込みニューラルネットワークとして動作する。また、第一の短絡路または第二の短絡路のいずれか一方を経由する信号経路において、NN部12は4層の畳み込みニューラルネットワークとして動作する。また、第一の短絡路及び第二の短絡路の両方を経由する信号経路において、NN部12は2層の畳み込みニューラルネットワークとして動作する。
NN部12は、2層、4層及び6層の畳み込みニューラルネットワークの重ね合わせとして捉えることができるため、モスキートノイズ成分等による劣化の質または量に応じた適切な層数のネットワークからなるNN部12を構築することが可能となる。入出力間の回帰におけるオーバフィットまたは誤差を抑えることができるため、NN部12は、部分画像A内の対象領域において生じているモスキートノイズ成分等を除いた画素値列を適切に予測し、画質を向上させた部分画像A’を生成することが可能となる。
〔窓関数適用部13−1〕
次に、図1に示した窓関数適用部13−1について詳細に説明する。前述のとおり、窓関数適用部13−1は、部分画像A’に予め設定された窓関数Mを適用し、対象画像Bを切り出す。この窓関数Mは、部分画像A’から対象画像Bを切り出すための切り出し関数である。
図6は、実施例1における窓関数適用部13−1の処理例を説明する図であり、図2のステップS204の処理を示している。窓関数適用部13−1にて部分画像A’に窓関数Mを適用することで、W×H画素の部分画像A’から、部分画像A’内の対象領域がX×Y画素の対象画像Bとして切り出される。
例えば、窓関数適用部13−1は、部分領域及び対象領域の位置関係に従って、入力した部分画像A’のテンソルに対し、その部分テンソルを求め、これを対象画像Bとして出力する。
具体的には、窓関数適用部13−1は、NN部12から入力したW×H×Nfinalの3階テンソルTNNである部分画像A’から、X×Y×Nfinalの部分テンソルTcropである対象画像Bを切り出して出力する。ここで、Nfinalは、NN部12を構成する最終段の畳み込み演算部24(図5を参照)におけるNの値である。
例えば、画像復元装置1−1がモノクロ画像を対象とする場合、Nfinal=1とし、3つの色成分を有するカラー画像を対象とする場合、Nfinal=3とする。
W×H×Nfinalの3階テンソルTNNからX×Y×Nfinalの部分テンソルTcropを切り出す数式は、以下のとおりである。
s,tは、部分領域及び対象領域の相対位置を表す定数であり、例えば部分領域の左上頂点の画素位置に対する対象領域の左上頂点の画素位置について、その相対座標を(s,t)とする。sは水平方向成分であり、tは垂直方向成分である。
(窓関数適用部13−1の窓関数M)
図7は、実施例1における窓関数適用部13−1が使用する窓関数Mを説明する図である。例えば、窓関数適用部13−1が使用する窓関数Mは、部分画像A’に対応するW×H画素の部分領域において、中央のX×Y画素の対象領域の重み値を1とし、対象領域以外の近傍領域の重み値を0とした矩形関数である。
部分領域におけるp−pの線の箇所の窓関数Mは、図7に示すように、中央のX画素の領域について重み値を1とし、他の領域について重み値0とした関数である。窓関数適用部13−1は、部分画像A’の画素値列に、窓関数Mの重み値をそれぞれ乗算し、対象画像Bを求める。
〔格納処理部14〕
次に、図1に示した格納処理部14について詳細に説明する。図8は、実施例1における窓関数適用部13−1及び格納処理部14の処理例を説明する図であり、図2のステップS204,S205の処理を示している。
窓関数適用部13−1は、今回の処理にて、部分画像A3’に窓関数Mを適用し、対象画像B3(右上方向への斜め線)を切り出す。尚、窓関数適用部13−1は、前回の処理にて、部分画像A3’に対して左横方向にX画素移動させた部分画像A2’(図示せず)に窓関数Mを適用し、対象画像B2(右下方向への斜め線)を切り出し済みである。また、窓関数適用部13−1は、前々回の処理にて、部分画像A3’に対して左横方向に2X画素移動させた部分画像A1’(図示せず)に窓関数Mを適用し、対象画像B1(横線)を切り出し済みである。
対象画像B1,B2,B3は、図7に示した窓関数M(対象領域に重み値1を設定し、それ以外に0を設定した関数)を用いて、それぞれの部分画像A1’,A2’,A3’の対象領域から切り出された画像である。
格納処理部14は、前々回の処理にて、対象画像B1をメモリ15の所定箇所に格納し((1)を参照)、前回の処理にて、対象画像B2を、メモリ15の所定箇所(対象画像B1の右隣)に格納する((2)を参照)。そして、格納処理部14は、今回の処理にて、対象画像B3を、メモリ15の所定箇所(対象画像B2の右隣)に格納する((3)を参照)。このように、格納処理部14は、対象画像B1,B2,B3等をタイル状に配置して出力用の画像Oを構成するように、メモリ15に格納する。
メモリ15に格納される対象画像B1,B2,B3の所定箇所は、走査部10から入力する走査座標(x1,x2)に基づいて決定される。これにより、メモリ15には、対象画像B1,B2,B3等が格納され、画像復元装置1−1が入力する画像Iに対応して、画像復元装置1−1が出力する画像Oが構成される。画像Oは、対象画像B1,B2,B3等をタイル配置することにより構成される。
以上のように、実施例1の画像復元装置1−1によれば、切り出し部11は、画像Iから部分画像Aを切り出し、NN部12は、部分画像A及び予め設定されたパラメータに基づいてNNの演算を行い、部分画像A’を生成する。窓関数適用部13−1は、部分画像A’に窓関数Mを適用して対象画像Bを切り出し、格納処理部14は、対象画像Bをメモリ15に格納する。
これにより、W×Hの部分画像Aの画素値列から、これよりも狭いX×Y画素の対象領域の補正後の画素値列(対象画像Bの画素値列)を得ることができる。すなわち、NN演算後の画質が改善された部分画像A1’,A2’,A3’等に窓関数Mが適用され、これよりも狭い領域の対象画像B1,B2,B3等がそれぞれ生成される。そして、メモリ15には、対象画像B1,B2,B3等が格納され、入力用の画像Iに対応する出力用の画像Oが構成される。
したがって、部分画像Aを単位としてNNにて画質が改善され、これよりも狭い領域の対象画像Bを得ることができ、対象画像Bを用いて出力用の画像Oを構成することで、ブロック間の歪みが軽減される。例えば画像Iをブロック分割し、ブロック単位で画像復元する場合に生じ得るブロック歪みを軽減することができる。つまり、デジタル画像圧縮技術において生じるブロック歪みを効率的に軽減することが可能となる。
また、後述する学習装置2により残差学習されたNN部12に備えたビルディングブロック22,23及び窓関数適用部13−1は、それぞれのブロック間の直流値の差分に起因するブロック歪みと波形の不連続性に起因するブロック歪みを抑圧するように機能する。
このため、画像復元装置1−1は、窓関数適用部13−1にて切り出したそれぞれの対象画像Bを単純にタイル配置することで、出力用の画像Oを構成すればよい。つまり、出力用の画像Oを構成するために、複数の対象画像Bをオーバーラップさせてブレンディングする必要がなく、オーバーラップさせブレンディングする必要のある後述する実施例2に比べ、演算の高速化を実現することができる。
〔実施例1の変形例〕
次に、実施例1の変形例について説明する。実施例1の変形例は、実施例1とは異なる窓関数Mを用いる例である。
実施例1の変形例における画像復元装置1−1の構成及び処理は、図1に示した実施例1の構成例及び図2に示した実施例1の処理例と基本的に同じであるが、窓関数適用部13−1が用いる窓関数Mに違いがある。
図9は、実施例1の変形例における窓関数適用部13−1の処理例を説明する図であり、図2のステップS204の処理を示している。図9に示すように、部分画像A’に窓関数Mを適用することで、W×H画素の部分画像A’から、部分画像A’内の対象領域がX×Y画素の対象画像Bとして切り出される。
図6に示した実施例1にて切り出される対象領域は、部分画像A’内の中央に位置するが、実施例1の変形例にて切り出される対象領域は、部分画像A’内で左上頂点に近い箇所に位置する。
図6に示した実施例1の窓関数Mは、部分画像A’内の中央に位置する対象領域を切り出すように定義された関数である。これに対し、実施例1の変形例の窓関数Mは、部分画像A’内で左上頂点に近い箇所に位置する対象領域を切り出すように定義された関数である。
以上のように、実施例1の変形例の画像復元装置1−1によれば、実施例1と同様の効果を奏し、デジタル画像圧縮技術において生じるブロック歪みを効率的に軽減することが可能となる。
〔実施例2〕
次に、実施例2について説明する。前述のとおり、実施例2は、入力画像から切り出した部分画像に対してNNの演算を行い、NN演算後の部分画像に、重み値を有する窓関数Mを適用して対象画像を生成し、生成した対象画像に対し既に生成済みの対象画像の一部を加算し、出力画像を生成する。実施例2では、出力画像を生成する際に、複数の対象画像をオーバーラップさせてブレンディングする必要がある。
図10は、実施例2の画像復元装置の構成例を示すブロック図であり、図11は、実施例2の画像復元装置の処理例を示すフローチャートである。この画像復元装置1−2は、走査部10、切り出し部11、NN部12、窓関数適用部13−2、加算部16、格納処理部14及びメモリ15を備えている。
図1に示した実施例1の画像復元装置1−1とこの実施例2の画像復元装置1−2とを比較すると、両画像復元装置1−1,1−2は、走査部10、切り出し部11、NN部12、格納処理部14及びメモリ15を備えている点で共通する。一方、画像復元装置1−1は、窓関数適用部13−1を備えているのに対し、画像復元装置1−2は、窓関数適用部13−1とは異なる窓関数適用部13−2を備え、さらに加算部16を備えている点で相違する。
画像復元装置1−2は、画像Iを入力し、画像Iから部分画像Aを切り出し、部分画像A毎に、NN及び窓関数M(重みを用いた窓関数)を用いて部分画像Aの画素値列を処理し、部分画像Aの領域に含まれる対象領域の対象画像Bを生成する。そして、画像復元装置1−2は、対象画像Bに、メモリ15に既に格納されている画像b’を加算して対象画像B’を生成し、メモリ15に格納する。
ここで、メモリ15に格納された全ての対象画像B’を組み合わせることにより、入力用の画像Iに対応する、ブロック歪みが軽減された出力用の画像Oが構成されるものとする。
画像復元装置1−2は、メモリ15から全ての対象画像B’を読み出し、画像Oを出力する。
画像復元装置1−2の走査部10は、図1に示した実施例1と同様に、走査座標(x1,y1)を設定する。そして、走査部10は、走査座標(x1,y1)を基準とする位置の対象画像B’の生成に伴い、走査座標(x1,y1)を切り出し部11、格納処理部14及び加算部16に出力する。すなわち、走査部10は、メモリ15に格納されるべき対象画像B’を単位として、切り出し部11、NN部12、窓関数適用部13−2、加算部16及び格納処理部14がそれぞれの処理を行うように、走査座標(x1,y1)を設定して出力する。
切り出し部11は、図1に示した実施例1と同様に、画像Iを入力し(ステップS1101)、走査座標(x1,y1)を基準とする対象領域を含む所定の部分領域を設定し、画像Iから部分画像Aを切り出す(ステップS1102)。
例えば、部分画像Aが24×24画素からなり、対象画像B,B’が8×8画素からなり、後述する図13に示すように、対象画像B’のオーバーラップする領域が横方向に4画素分である場合を想定する。
切り出し部11は、対象画像B1,B1’に対応する走査座標(x1−1,y1−1)を基準として、部分画像A1を切り出す。そして、対象画像B1’が生成された後、切り出し部11は、対象画像B2,B2’に対応する走査座標(x1−2,y1−2)を基準として、部分画像A1から4画素分横方向にシフトした部分画像A2を切り出す。この場合、部分画像A1,A2は、横方向に4画素分だけ一部の領域で重複することとなる。
NN部12は、図1に示した実施例1と同様に、部分画像A及び予め設定されたパラメータに基づいて、NNの演算を行い、部分画像A’を生成する(ステップS1103)。
窓関数適用部13−2は、NN部12から部分画像A’を入力し、部分画像A’に予め設定された窓関数M(重み値を有する窓関数M)を適用し、対象画像Bを生成する(ステップS1104)。そして、窓関数適用部13−2は、対象画像Bを加算部16に出力する。窓関数適用部13−2の詳細については後述する。
加算部16は、走査部10から走査座標(x1,y1)を入力すると共に、窓関数適用部13−2から対象画像Bを入力する。そして、加算部16は、走査座標(x1,y1)に基づいて、対象画像Bに加算する画像b’が格納されているアドレスを求め、メモリ15から当該アドレスに対応する画像b’を読み出す(ステップS1105)。例えば、加算部16は、メモリ15の当該アドレスから画像を読み出し、読み出した画像の一部(対象画像Bとオーバーラップさせない領域)を0パディングし、画像b’を生成する。
加算部16は、対象画像Bに画像b’を加算して対象画像B’を生成し(ステップS1106)、対象画像B’を格納処理部14に出力する。加算部16の詳細については後述する。
格納処理部14は、図1に示した実施例1と同様に、走査部10から走査座標(x1,y1)を入力すると共に、窓関数適用部13−2から対象画像B’を入力する。そして、格納処理部14は、走査座標(x1,y1)に対応するアドレスを指定し、対象画像B’をメモリ15に格納する(ステップS1107)。この場合、格納処理部14は、対象画像B’をメモリ15に格納する際に、既に格納済みの画像の一部に上書きする。メモリ15に格納される対象画像B’の詳細については後述する。
図11のステップS1102〜ステップS1107の処理は、対象画像B’の位置を示す走査座標(x1,y1)毎に順次行われ、画像Iに対応する画像Oが隙間なく構成されるように、対象画像B’が順次生成されメモリ15に格納される。
図示しない処理部は、メモリ15から上書きされた全ての対象画像B’を画像Oとして読み出し、画像Oを出力する(ステップS1108)。
〔窓関数適用部13−2〕
次に、図10に示した窓関数適用部13−2について詳細に説明する。前述のとおり、窓関数適用部13−2は、部分画像A’に予め設定された窓関数Mを適用し、対象画像Bを生成する。
(窓関数適用部13−2の窓関数M)
図12は、実施例2における窓関数適用部13−2が使用する窓関数Mを説明する図である。例えば、窓関数適用部13−2が使用する窓関数Mは、部分画像A’に対応するW×H画素の部分領域において、中央のX×Y画素の対象領域の重み値を、中心に向かって0から1へ徐々に増加する値とし、対象領域以外の近傍領域の重み値を0とした三角状の関数である。
部分領域におけるp−pの線の箇所の窓関数Mは、図12に示すように、中央のX画素の領域について重み値を、中心に向かって0から1へ徐々に増加する値とし、他の領域について重み値0とした関数である。窓関数適用部13−2は、部分画像A’の画素値列に、窓関数Mの重み値をそれぞれ乗算し、対象画像Bを求める。
尚、重み値は、画像Oを構成する対象画像B’内の領域が加算部16により生成される際に、加算対象であるそれぞれの対象画像Bの前記領域(オーバーラップする領域)について、その合計が1であるものとする。
〔加算部16〕
次に、図10に示した加算部16について詳細に説明する。図13は、実施例2における窓関数適用部13−2、格納処理部14及び加算部16の処理例を説明する図であり、図11のステップS1104〜S1107の処理を示している。
窓関数適用部13−2は、今回の処理にて、部分画像A3’に、図12に示した窓関数Mを適用し、対象画像B3(右上方向への斜め線)を生成する。尚、窓関数適用部13−2は、前回の処理にて、部分画像A3’に対して左横方向にX/2画素移動させた部分画像A2’(図示せず)に窓関数Mを適用し、対象画像B2(右下方向への斜め線)を生成済みである。また、窓関数適用部13−2は、前々回の処理にて、部分画像A3’に対して左横方向にX画素移動させた部分画像A1’(図示せず)に窓関数Mを適用し、対象画像B1(横線)を生成済みである。
対象画像B1,B2,B3は、それぞれの部分画像A1’,A2’,A3’の対象領域から切り出された画像ではなく、図12に示した重み値を有する窓関数Mを用いて生成された画像である。
加算部16は、前々回の処理にて、窓関数適用部13−2から対象画像B1を入力し、メモリ15から画像b0’を読み出す。そして、加算部16は、対象画像B1に画像b0’を加算して対象画像B1’を生成し、格納処理部14は、対象画像B1’をメモリ15の所定箇所に格納(上書き)する(図13の(1)を参照)。
図13の(1)に示すとおり、メモリ15に格納された対象画像B1’の右半分の画像(横線)は、窓関数Mの重みが反映された画像である。
加算部16は、前回の処理にて、窓関数適用部13−2から対象画像B2を入力し、メモリ15から画像b1’を読み出す。そして、加算部16は、対象画像B2に画像b1’を加算して対象画像B2’を生成し、格納処理部14は、対象画像B2’をメモリ15の所定箇所に格納する(図13の(2)を参照)。
図13の(2)に示すとおり、メモリ15に格納された対象画像B2’の左半分の画像(右下方向への斜め線及び横線が重複した箇所)は、対象画像B2の左半分の画像及び画像b1’(対象画像B1’の右半分の画像)が加算された画像である。また、メモリ15に格納された対象画像B2’の右半分の画像(右下方向への斜め線の箇所)は、対象画像B2の右半分の画像であり、窓関数Mの重みが反映された画像である。
加算部16は、今回の処理にて、窓関数適用部13−2から対象画像B3を入力し、メモリ15から画像b2’を読み出す。そして、加算部16は、対象画像B3に画像b2’を加算して対象画像B3’を生成し、格納処理部14は、対象画像B3’をメモリ15の所定箇所に格納する(図13の(3)を参照)。
図13の(3)に示すとおり、メモリ15に格納された対象画像B3’の左半分の画像(右上方向及び右下方向への斜め線が重複した箇所)は、対象画像B3の左半分の画像及び画像b2’(対象画像B2’の右半分の画像)が加算された画像である。また、メモリ15に格納された対象画像B3’の右半分の画像(右上方向への斜め線の箇所)は、対象画像B3の右半分の画像であり、窓関数Mの重みが反映された画像である。
この場合、加算部16は、図13の(2)に示した対象画像B2’を読み出し、対象画像B2’の左半分にゼロパディングして画像b2’を生成し、対象画像B3の左半分のみに画像b2’の右半分を加算し、対象画像B3’を生成する。
メモリ15に格納される対象画像B1’,B2’,B3’の所定箇所は、走査部10から入力する走査座標(x1,x2)に基づいて決定される。これにより、メモリ15には、対象画像B1’,B2’,B3等が順番に、一部を上書しながら格納され、画像復元装置1−2が入力する画像Iに対応して、画像復元装置1−2が出力する画像Oが構成される。
以上のように、実施例2の画像復元装置1−2によれば、切り出し部11は、画像Iから部分画像Aを切り出し、NN部12は、部分画像A及び予め設定されたパラメータに基づいてNNの演算を行い、部分画像A’を生成する。窓関数適用部13−2は、部分画像A’に窓関数Mを適用して対象画像Bを生成し、加算部16は、メモリ15から画像b’を読み出し、対象画像Bに画像b’を加算して対象画像B’を生成する。格納処理部14は、対象画像B’をメモリ15に格納する。
これにより、実施例1と同様に、部分画像Aを単位としてNNにて画質が改善され、これよりも狭い領域の対象画像B’を得ることができ、対象画像B’による出力用の画像Oを構成することで、ブロック間の歪みが軽減される。つまり、デジタル画像圧縮技術において生じるブロック歪みを効率的に軽減することが可能となる。
また、対象画像Bは、重み値を有する窓関数Mを用いて生成され、対象画像B’は、対象画像Bに画像b’を加算することで生成される。これにより、ブロック間の歪み(隣り合う部分領域間の歪み)を軽減することができると共に、隣り合う対象領域間でも歪みを軽減することができる。
〔実施例2の一般例〕
次に、実施例2の一般例について説明する。実施例2の一般例は、部分画像Aに対して画像処理を行い、部分領域よりも狭い対象領域の対象画像B’を生成する実施例2に加え、部分領域と同じサイズの対象領域の対象画像B’を生成する例である。
実施例2の一般例における画像復元装置1−2の構成及び処理は、図10に示した実施例2の構成例及び図11に示した実施例2の処理例と基本的に同じであるが、窓関数適用部13−2が用いる窓関数Mに違いがある。
(窓関数適用部13−2の窓関数M)
図14は、実施例2の一般例における窓関数適用部13−2が使用する窓関数Mを説明する図である。窓関数適用部13−2が使用する窓関数Mは、W×H画素の部分領域とX×Y画素の対象領域を同一(W=X,H=Y)とした関数である。例えば、図14のp−pの線の箇所に示すように、窓関数Mは、部分画像A’に対応するW×H画素の領域において、所定の中央領域の重み値を0とし、中央領域以外の領域の重み値を、部分画像A’の外枠から中央領域の外枠に向かって0から1へ徐々に増加する値とした台形状の関数である。
〔加算部16〕
次に、図10に示した加算部16について詳細に説明する。図15は、実施例2の一般例における窓関数適用部13−2、格納処理部14及び加算部16の処理例を説明する図である。
窓関数適用部13−2は、今回の処理にて、部分画像A3’に、図14に示した窓関数Mを適用し、部分領域と同じサイズの対象画像B3(右上方向への斜め線)を生成する。尚、窓関数適用部13−2は、前回の処理にて、部分画像A3’に対して左横方向に所定画素移動させた部分画像A2’(図示せず)に窓関数Mを適用し、部分領域と同じサイズの対象画像B2(右下方向への斜め線)を生成済みである。また、窓関数適用部13−2は、前々回の処理にて、部分画像A3’に対して左横方向に所定画素移動させた部分画像A1’(図示せず)に窓関数Mを適用し、部分領域と同じサイズの対象画像B1(横線の画像)を生成済みである。
対象画像B1,B2,B3は、それぞれの部分画像A1’,A2’,A3’と同じ画像ではなく、図14に示した重み値を有する窓関数Mを用いて生成された画像である。
加算部16は、前々回の処理にて、窓関数適用部13−2から対象画像B1を入力し、メモリ15から画像b0’を読み出す。そして、加算部16は、対象画像B1に画像b0’を加算して対象画像B1’を生成し、格納処理部14は、対象画像B1’をメモリ15の所定箇所に格納(上書き)する(図15の(1)を参照)。
図15の(1)に示すとおり、メモリ15に格納された対象画像B1’における中央領域及びその右側領域の画像(横線)は、窓関数Mの重みが反映された画像である。
加算部16は、前回の処理にて、窓関数適用部13−2から対象画像B2を入力し、メモリ15から画像b1’を読み出す。そして、加算部16は、対象画像B2に画像b1’を加算して対象画像B2’を生成し、格納処理部14は、対象画像B2’をメモリ15の所定箇所に格納する(図15の(2)を参照)。
図15の(2)に示すとおり、メモリ15に格納された対象画像B2’の左側領域の画像(右下方向への斜め線及び横線が重複した箇所)は、対象画像B2の左側領域の画像及び画像b1’(対象画像B1’の右側領域の画像)が加算された画像である。また、メモリ15に格納された対象画像B2’の中央領域及び右側領域の画像(右下方向への斜め線)は、対象画像B2の中央領域及び右側領域の画像であり、窓関数Mの重みが反映された画像である。
加算部16は、今回の処理にて、窓関数適用部13−2から対象画像B3を入力し、メモリ15から画像b2’を読み出す。そして、加算部16は、対象画像B3に画像b2’を加算して対象画像B3’を生成し、格納処理部14は、対象画像B3’をメモリ15の所定箇所に格納する(図13の(3)を参照)。
図13の(3)に示すとおり、メモリ15に格納された対象画像B3’の左側領域の画像(右上方向及び右下方向への斜め線が重複した箇所)は、対象画像B3の左側領域の画像及び画像b2’(対象画像B2’の右側領域の画像)が加算された画像である。また、メモリ15に格納された対象画像B3’の中央領域及び右側領域の画像(右上方向への斜め線)は、対象画像B3の中央領域及び右側領域の画像であり、窓関数Mの重みが反映された画像である。
この場合、加算部16は、図15の(2)に示した対象画像B2’を読み出し、対象画像B2’の左側領域及び中央領域にゼロパディングして画像b2’を生成し、対象画像B3の左側領域のみに画像b2’の右側領域を加算し、対象画像B3’を生成する。
メモリ15に格納される対象画像B1’,B2’,B3’の所定箇所は、走査部10から入力する走査座標(x1,x2)に基づいて決定される。これにより、メモリ15には、対象画像B1’,B2’,B3等が順番に、一部を上書しながら格納され、画像復元装置1−2が入力する画像Iに対応して、画像復元装置1−2が出力する画像Oが構成される。
以上のように、実施例2の一般例の画像復元装置1−2によれば、部分画像Aを単位としてNNにて画質が改善され、対象画像B’を得ることができ、対象画像B’を用いた出力用の画像Oを構成することで、ブロック間の歪みが軽減される。つまり、デジタル画像圧縮技術において生じるブロック歪みを効率的に軽減することが可能となる。
〔学習装置〕
次に、前述の実施例1,2に適用する学習装置について説明する。学習装置は、図1に示した実施例1における画像復元装置1−1のNN部12、及び図10に示した実施例2における画像復元装置1−2のNN部12が用いる最適なパラメータを求める。
図16は、学習装置の構成例を示すブロック図であり、図17は、学習装置の処理例を示すフローチャートである。この学習装置2は、学習部40、NN部41、減算部42、窓関数適用部43及びメモリ44を備えている。NN部41は、図1及び図10に示したNN部12に対応する。
(学習部40)
学習部40は、画質劣化した画像I、及び画質劣化を生じていない元の原画像である真値画像SIを入力する(ステップS1701)。画像I及び真値画像SIは、学習用画像として用いられる。学習部40は、画像Iから部分画像Aを切り出すと共に(ステップS1702)、真値画像SIから、部分画像Aに対応する真値対象画像SBを切り出す(ステップS1703)。
切り出される部分画像A及び真値対象画像SBにおける画像I及び真値画像SI内の位置関係は、図3に示したように、画像復元装置1−1,1−2が部分画像Aから対象画像Bを生成する際の部分領域及び対象領域の位置関係に相当する。
学習部40は、部分画像AをNN部41に出力すると共に、真値対象画像SBを減算部42に出力し、NN部41を機械学習する。学習部40は、NN部41から、機械学習が完了したパラメータを入力し、パラメータをメモリ44に格納する。
図18は、図16に示した学習部40の構成例を示すブロック図である。この学習部40は、走査部50、切り出し部51,52及びパラメータ処理部53を備えている。
走査部50は、図1及び図10に示した走査部10に相当し、画像I及び真値画像SIを走査するための所定位置の走査座標(x1,y1)を設定する。所定位置の走査座標(x1,y1)は、真値画像SIにおいて、真値対象画像SBの対象領域における左上頂点を基準位置とした座標である。
走査部50は、走査座標(x1,y1)を基準とする位置の部分画像A及び真値対象画像SBの切り出しが行われるように、走査座標(x1,y1)を切り出し部51,52に出力する。
切り出し部51は、画像Iを入力すると共に、走査部50から走査座標(x1,y1)を入力する。そして、切り出し部51は、走査座標(x1,y1)を基準とする対象領域を含む所定の部分領域を設定し、画像Iから部分領域の部分画像Aを切り出し、部分画像Aである劣化パッチをNN部41に出力する。
切り出し部52は、真値画像SIを入力すると共に、走査部50から走査座標(x1,y1)を入力する。そして、切り出し部52は、走査座標(x1,y1)を基準とする対象領域を設定し、真値画像SIから対象領域の真値対象画像SBを切り出し、真値対象画像SBである原画像パッチを窓関数適用部43に出力する。
パラメータ処理部53は、NN部41から、機械学習が完了したパラメータを入力し、パラメータをメモリ44に格納する。メモリ44に格納されたパラメータは、図1及び図10に示したNN部12に用いられる。
(NN部41)
図16及び図17に戻って、NN部41は、学習部40から部分画像Aを入力し、部分画像A及びパラメータに基づいてNNの演算を行い、部分画像A’を生成する(ステップS1704)。そして、NN部41は、部分画像A’を減算部42に出力する。部分画像A’は、NNの順伝播により生成される。
また、NN部41は、部分画像A’と真値対象画像SBとの間の誤差に窓関数を適用して算出された加重誤差画像Kを入力し、例えば誤差逆伝播法により、パラメータを求める。パラメータは、NNの逆伝播により求められる。NN部41は、機械学習が完了したときのパラメータを学習部40に出力する。
機械学習は、部分画像Aである劣化パッチ及び真値対象画像SBである原画像パッチの対を、必要に応じて(例えば毎回)変更しつつ、1回以上(例えば100万回)実行したときに完了とする。
このように、パラメータの演算を機械学習により行う場合には、復元すべき劣化を生じた画像Iから切り出した部分画像Aである劣化パッチと、劣化を生じていない真値画像SIから切り出した真値対象画像SBである原画像パッチとからなる対を用いて、誤差逆伝播法により求める。
誤差逆伝播法によりパラメータを求めるには、まず、パラメータとして仮の成分値を用いる。仮の成分値は、例えば、乱数または擬似乱数により設定することができる。次に、成分値が設定された(最初は仮の成分値が設定された)NN部41に対し、部分画像Aを入力し、順伝播にて、部分画像A’である復元パッチを得る。
部分画像A’と真値対象画像SBとの間の成分毎の減算結果に窓関数を適用し、加重誤差画像Kである誤差テンソルが演算される。さらに、NN部41に、加重誤差画像Kが入力され、逆伝播しつつ、パラメータを勾配法によって更新していく。これにより、最適なパラメータが求められる。
(減算部42及び窓関数適用部43)
減算部42は、学習部40から真値対象画像SBを入力すると共に、NN部41から部分画像A’を入力し、画素成分毎に部分画像A’から真値対象画像SBを減算し、誤差画像(A’−SB)を生成する(ステップS1705)。そして、減算部42は、誤差画像(A’−SB)を窓関数適用部43に出力する。
図19は、減算部42及び窓関数適用部43の処理例を説明する図である。部分画像A’と真値対象画像SBのサイズが異なる場合(A’のサイズ>SBのサイズの場合)、減算部42は、ステップS1705において、部分画像A’内の真値対象画像SBに対応する領域から、真値対象画像SBを減算し、誤差画像(A’−SB)を生成する。
尚、部分画像A’と真値対象画像SBのサイズが同じ場合(A’のサイズ=SBのサイズの場合)、減算部42は、ステップS1705において、部分画像A’からこれと同サイズの真値対象画像SBを減算し、誤差画像(A’−SB)を生成する。
図16及び図17に戻って、窓関数適用部43は、減算部42から誤差画像(A’−SB)を入力する。そして、窓関数適用部43は、誤差画像(A’−SB)に対し、図1に示した窓関数適用部13−1または図10に示した窓関数適用部13−2に用いる窓関数Mを適用し、部分領域において対象領域以外の領域をゼロパディングした加重誤差画像Kを生成する(ステップS1706)。
図19を参照して、部分画像A’と真値対象画像SBのサイズが異なる場合(A’のサイズ<SBのサイズの場合)、例えば窓関数適用部43は、ステップS1706において、図1に示した窓関数適用部13−1または図10に示した窓関数適用部13−2に用いる窓関数Mに対して、部分領域において対象領域以外の領域(部分画像A’と真値対象画像SBとの間で重複しない領域)の重み値を0に設定する(ゼロパディングする)。
窓関数適用部43は、以下の式のように、誤差画像(A’−SB)に対し、ゼロパディングした窓関数Mを適用し、加重誤差画像Kを生成する。
前記式(13)において、Mと(A’−SB)との間の演算子は、成分毎の積を表すアダマール積である。これにより、加重誤差画像Kは、部分画像A’と真値対象画像SBとの間で重複しない領域について、ゼロパディングされた画像となる。
尚、部分画像A’と真値対象画像SBのサイズが同じ場合(A’のサイズ=SBのサイズの場合)、窓関数適用部43は、誤差画像(A’−SB)に対し、窓関数Mをそのまま適用し、加重誤差画像Kを生成する。
このようにして生成された加重誤差画像Kは、NN部41に入力され、逆伝播の処理に用いられる。尚、加重誤差画像Kにおいて、重み値が0の領域、及び、部分領域における対象領域以外の領域(ゼロパディングされた領域)は、画素値が0である。これらの領域は、常に0の値として逆伝播することとなる。
図16及び図17に戻って、前述したとおり、NN部41は、窓関数適用部43から加重誤差画像Kを入力し、例えば誤差逆伝播法により、パラメータを求める(ステップS1707)。
NN部41は、機械学習が完了すると、パラメータを学習部40に出力し、学習部40は、NN部41からパラメータを入力し、パラメータをメモリ44に格納する(ステップS1708)。
以上のように、図16に示した学習装置2によれば、学習部40は、画質劣化した画像I、及び画質劣化を生じていない真値画像SIを学習用画像として入力し、画像Iから部分画像Aを切り出し、真値画像SIから真値対象画像SBを切り出す。学習部40は、部分画像AをNN部41に出力すると共に、真値対象画像SBを減算部42に出力し、NN部41を機械学習する。
NN部41は、部分画像A及びパラメータに基づいてNNの演算を行い、部分画像A’を生成する。減算部42は、画素成分毎に部分画像A’から真値対象画像SBを減算し、誤差画像(A’−SB)を生成し、窓関数適用部43は、誤差画像(A’−SB)に対し、窓関数適用部13−1,13−2に用いる窓関数Mを適用し、部分画像A’と真値対象画像SBとが重複しない領域にゼロパディングして加重誤差画像Kを生成する。
NN部41は、加重誤差画像Kを用いて、例えば誤差逆伝播法によりパラメータを更新する。学習部40は、機械学習が完了すると、NN部41からパラメータを入力し、パラメータをメモリ44に格納する。
これにより、学習装置2により求めたパラメータが、画像復元装置1−1,1−2のNN部12に用いられることで、デジタル画像圧縮技術において生じるブロック歪みを効率的に軽減することが可能となる。
また、NN部41は、図1及び図10に示したNN部12に相当するから、図5に示したとおり、ビルディングブロック22,23と、畳み込み演算部20等の非ビルディングブロックとから構成される。このため、ビルディングブロック22,23は、機械学習時に残差学習が行われる。
例えば、画像Iに含まれるモスキートノイズの量が少ない場合を想定すると、NN部41に入力される加重誤差画像Kである誤差テンソルの絶対値は小さくなる。
この場合、仮にNN部41がビルディングブロック22,23のみから構成されるとすると、逆伝播時の信号がビルディングブロック22,23内の加算部34,39に繋がる短絡路のみを通過することとなる。このため、これが逆伝播との相乗的な悪条件となり、短絡路内に存在する構成部(ビルディングブロック22内の畳み込み演算部30〜活性化関数適用部33、及びビルディングブロック23内の畳み込み演算部35〜活性化関数適用部38)におけるパラメータの学習進捗が鈍くなる。
一方、NN部41が、非ビルディングブロックのみから構成されるとすると、NNの入出力間における画像間の差が小さいにもかかわらず、恒等写像に近い系を深い階層で構築する必要が生じる。このため、非ビルディングブロックにおけるパラメータの学習進捗が鈍くなる。
本発明の実施例1,2では、図5に示したとおり、NN部12は、ビルディングブロック22,23と、畳み込み演算部20等の非ビルディングブロックとから構成される。NN部41の構成も同様である。
このように構成することで、純粋な残差学習とするのではなく、非ビルディングブロックにおいて誤差テンソルの値を撹乱することで、ビルディングブロック22,23において純粋な残差を学習すべき状況からわずかに摂動させることができる。したがって、符号化劣化のような微小な信号変化分に対し、学習効率を高めることができる。つまり、画像Iに含まれるモスキートノイズの量が少ない場合であっても、精度の高いパラメータを求めることができる。
以上、実施例1,2等を挙げて本発明を説明したが、本発明は前記実施例1,2等に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。例えば、図1及び図10に示した画像復元装置1−1,1−2のNN部12は、畳み込みNNの一種であるResNetにより構成されるビルディングブロック22,23を備えるようにしたが、ビルディングブロック22,23を備えていなくてもよい。要するに、NN部12は、部分画像Aに含まれるモスキートノイズを除去する等して画質を改善した部分画像A’を生成するために、畳み込みNN以外の種類のNNを用いるようにしてもよい。
尚、画像復元装置1−1,1−2及び学習装置2のハードウェア構成としては、通常のコンピュータを使用することができる。画像復元装置1−1,1−2及び学習装置2のそれぞれは、CPU、RAM等の揮発性の記憶媒体、ROM等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。
画像復元装置1−1に備えた走査部10、切り出し部11、NN部12、窓関数適用部13−1、格納処理部14及びメモリ15の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。また、画像復元装置1−2に備えた走査部10、切り出し部11、NN部12、窓関数適用部13−2、加算部16、格納処理部14及びメモリ15の各機能も、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。また、学習装置2に備えた学習部40、NN部41、減算部42、窓関数適用部43及びメモリ44の各機能も、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
これらのプログラムは、前記記憶媒体に格納されており、CPUに読み出されて実行される。また、これらのプログラムは、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。