Convolution


Image Filtering



outputimageとinputimageは同じサイズです(画像サイズは変わりません).
画像フィルタリングには線形フィルタリングと非線形フィルタリングがある.

Linear filtering


線形フィルタリングは、入力データを周囲の画素を用いて適切な重み付け和を行うだけである.ボリュームは線形フィルタの1つです.
その後、学習中に線形変換と非線形変換をそれぞれ1回行い、このとき線形変換を用いて畳み込まれたのはCNNである.

Point Spread Function (PSF)

PSFは、画像フィルタリングを行うための線形関数である.ソース画像上の点がターゲット画像にどのように移動するかを示します...
これが移動点の位置や大きさを表していると考えれば簡単です.
psfの値が0.7である場合、target imageの1.0の値は0.7であるべきである.(source image value) * 0.7が実行されたからです.psfのサイズがソース画像よりも小さくても、同様の方法を採用することができる.psfの右上隅に0.7があるため、target画像では、ソース画像の10.7となり、右上に移動する.ソース画像に0以外の値の画素が複数ある場合、psfは各画素から独立する.両方の1psfにより0.7に変換され、右上に移動する.ビットの場合、2つの画素は独立してpsfを適用する.
psfに複数の値がある場合は、対応する値を適用すればよい.
weight-sumpなので、(source image value) * 0.3の値は真ん中に残り、(source image value) * 0.7の値は右上隅に移動します.
名前の通り、中間pixel値の一部が右上に拡散します.
ソース画像において、0以外の値の画素が複数ある場合、psfは各画素に独立して適用され、その結果が加算される.psfを使用すると画素の内容が拡散するので、拡散の結果を一つ一つ求めるだけでよい.
結果は以下の通りです.

Convolution


sourceイメージをH、targetイメージをGpsfと呼ぶと、ボリューム式は次のようになります.
G = H * F (* 는 convolution operator)
式はかなり複雑です.
しかし、ボリュームは相互相関によって表すことができる.フィルタFを上下左右に反転させ、Fのすべての画素を相互相関させ、結果としてボリューム化する.

Cross-Correlation


ボリュームのうちH-に変換された差のみである.
相互相関は重み付け和であるため,相互相関を用いて周囲の値を増やすだけで畳み込むことができる.
における同一点にフィルタを適用した場合、畳み込みのフィルタ値は変わらず、互いに相関する上下左右が逆になる.
したがって,フィルタを上下左右に反転させて相互相関させることで,ボリュームと同じ結果が得られる!
入力画像とフィルタ画像が似ているほど、ボリュームの結果値が大きくなります.

Box Filter


boxフィルタでノイズを除去する場合を考えてみましょう.
画像からノイズを除去したい場合は、averageを使用して効果を見ることができますが、最適ではありません.
画像が1つしかない場合は、box filterと呼ばれる周囲のlocaldataの平均値を1つの位置の画素から取得できます.
最終的には重み付け和であり、box filterは平均値をとる重み付け和である.
カセットフィルタは対称であり、フィルタが対称である場合、ボリュームと関連する結果値は同じである.
boxフィルタを適用する方法は以下の通りである.box filterは+なので、適用する画素を中心に(3x3)の領域を捉え、filterのまま適用すればよい.(3x3)~Hの領域の各画素(3x3)A、...Bの場合、本来はIを実行する慣例ですが、どうせbox filterは平均を求めるので、A*(1/9) + B*(1/9) + ... + I*(1/9)領域のすべての値を加えて、得られる平均値が出力です.
上図(3x3)は結果値です.
と同様の方法で(90+90+90) / 9 = 30に入る値は?であり、したがって(90*5) / 9である.
の同じ値は50なので、?です.
boxfilterを適用すると、次のようになります.ノイズ除去のため、周囲画素の平均値をとり、よりスムーズな出力を得た.
しかし平滑化の結果,曖昧な結果が得られた.
filterのsumが(90*9) / 9であるのは、filterを適用した後の残りのデータ量を一定に保つためである.
filterの合計は90であると仮定する.filterを適用すると,最初にその領域に存在したデータ量の1/10しか残っていない.したがって、フィルタの総和は、元のソース画像の領域内のデータ量と出力中のデータ量とを同じにするために常に1に保たれる.
このほか、画像の特徴などを抽出する目的でボリュームを用いることもできる.

Convolution Properties


畳み込みは演算子なので、以下の性質が適用されます.
  • Commutative : 1
  • Associative : 0.1
  • Distributes over addition : a * b = b * a
  • Scalars factor out : a * (b * c) = (a * b) * c
  • Identity : a * (b + c) = (a * b) + (a * c)
  • Padding


    画像の境界にボリュームが定義されていません.ソース画像では、境界では画素の数が不足するため、filter領域のような画素領域が必要である.
    によれば、いっそ入力画像を大きくして畳み込む.このように画像を増やすために挿入される値をpaddingと呼ぶ.
    paddingにはいくつかの方法があります.ka * b = a * kb = k(a * b)Impulse e = [0, 0, 1, 0, 0], a * e = a01を充填してもよいし、元の画像を使用してその値をコピーまたは変換してもよい.
    その中で最もよく用いられるのは0.5に充填されたzero paddingである.