Tools + Simulatorsnanase.cc / tools

画像の畳み込み

画像

画像
端の処理
線より上: 出力 下: 入力表示範囲 0〜1
画素出力 —

比較用の非線形フィルタ(畳み込みでない)
n 大きさ

画素

n 大きさ

画素

σ 標準偏差

画素

k 強さ

|H|

↕ 係数を上下にドラッグ

畳み込み

動作原理と式

2 次元の畳み込み

y[r,c]=∑k∑jh[k,j]x[r−k,c−j]
x
入力の画像
h
カーネル(点像分布関数)
y
出力の画像
r,c
行・列
  • 出力ごとに集める: 180° 回したカーネルを重ねて積和をとる(式 24-3)[1]
  • 入力ごとに配る: 入力の値を掛けたカーネルを出力へ足し込む(図 24-14)[1]。配り終えると同じ結果
  • 1 次元の原理: 畳み込み
  • 係数の和 1 → 明るさを保つ。和 0 → 平らな所が 0

カーネルの例

カーネル係数出典
恒等(デルタ関数)中央だけ 1図 24-4 a[1]
円形ぼけ円の中で一定(和 1)図 24-3 a[1]
ガウシアンe−(r2+c2)/2σ2(±3σ で打ち切り)図 24-3 b[1]
エンボス中央 1・右下 −1図 24-4 b[1]
エッジ検出中央 1・周囲 −1/8図 24-4 c[1]
鮮鋭化中央 k+1・周囲 −k/8図 24-4 d[1]
アンシャープマスク(1+k)δ−kG[6]
Sobel x[121]T[10−1][4]
  • 円形ぼけ・ガウシアン・モーションブラーは点像分布関数(PSF)。レンズの点像: カメラレンズ

アンシャープマスク

y=x+k(x−G∗x)=((1+k)δ−kG)∗x
  • 元の画像とぼかした画像の差を足す[6]
  • 平滑化のカーネルを負にしてデルタ関数を足すとエッジ強調(図 24-3 d)[1]

分離可能なカーネル

h[r,c]=a[r]b[c]
  • 横方向に 1 次元の畳み込み → 縦方向に 1 次元の畳み込み(式 24-1)[1]
  • M×M のカーネル: 1 画素あたりの積和 M2 回 → 2M 回
  • 円対称で分離可能なのはガウシアンだけ[1]
  • 1 次元のカーネル = FIR フィルタ の係数

相関

y[r,c]=∑k∑jh[k,j]x[r+k,c+j]
  • カーネルを反転せずに重ねる
  • CNN の「畳み込み」は多くが相関(式 9.6)[3]
  • 点対称のカーネル(平均化・ガウシアン)では同じ結果。Sobel・エンボス・平行移動では向きが逆

周波数で見る

Y[u,v]=X[u,v]H[u,v]
  • 2 次元の DFT: 行ごとに FFT → 列ごとに FFT[1]
  • ゼロ埋めせずに掛けると巡回畳み込み(端の処理 = 周期)[1]
  • |H| はカーネルの MTF。ガウシアンの MTF もガウス関数(図 25-1)[2]
  • 大きいカーネルでは FFT が速い(512 × 512 の画像に 50 × 50 で約 20 倍)[1]
  • DFT の高速な計算: FFT

非線形のフィルタ

  • メディアン: 窓の中の中央値[7]。ごま塩ノイズに強い
  • 勾配強度 Gx2+Gy2: 2 つの畳み込みの結果から計算
  • 膨張・収縮(モルフォロジー)も非線形[2]

このツールの設定

  • 画像: 256 × 192 のグレースケール(Rec. 709 の重み)
  • テスト画像: 64 × 64 の区画 12 個(点と線・縞・ジーメンススター・ゾーンプレート・ノイズ・文字など)
  • 端の処理: 延長・ゼロ・折り返し(端の画素も写す)・周期[5]
  • 係数の和 0 のカーネル: 出力 0 を灰色で表示(正は明・負は暗)
  • ガウシアン: ±3σ で打ち切って和を 1 に
  • 円形ぼけ: マスが円に入る割合を係数に(8 × 8 の点で数える)
  • 分離可能なカーネル: 横 → 縦の 2 回で計算
  • 画像の表示: 線より上が出力で下が入力(「配る」では途中の値)
  • 係数と窓の計算: 大きいカーネルは中央 7 × 7 だけ表示。係数は 1/8 刻み
  • メディアンの窓: 3〜7
  • 月面: NASA SVS の CGI Moon Kit のカラーマップを切り抜いてグレースケールに[8]

出典

  1. 集める見方と配る見方(図 24-14)・PSF の例(図 24-3)・3 × 3 のカーネル(図 24-4)・分離可能なカーネル(式 24-1)・2 次元の畳み込み(式 24-3)・FFT による畳み込みS. W. Smith, The Scientist and Engineer’s Guide to Digital Signal Processing, California Technical Publishing, 1997, ch. 24 Linear Image Processing
  2. PSF と MTF(図 25-1)・線像と縁の応答(図 25-3)・モルフォロジーS. W. Smith, The Scientist and Engineer’s Guide to Digital Signal Processing, California Technical Publishing, 1997, ch. 25 Special Imaging Techniques
  3. 相互相関と畳み込みの呼び分け(9.1 節・式 9.6)I. Goodfellow, Y. Bengio, and A. Courville, Deep Learning, MIT Press, 2016, ch. 9 Convolutional Networks
  4. Sobel の 3 × 3 の勾配の演算子I. Sobel, “History and Definition of the Sobel Operator,” 2014(1968 年の講演 “An Isotropic 3×3 Image Gradient Operator” の記録)
  5. 端の処理(reflect・constant・nearest・wrap)SciPy, scipy.ndimage.convolve
  6. アンシャープマスクscikit-image, skimage.filters.unsharp_mask(M. Petrou and C. Petrou, Image Processing: The Fundamentals, 2nd ed., Wiley, 2010, p. 357 を引く)
  7. メディアンSciPy, scipy.ndimage.median_filter
  8. 月面の画像E. Wright, CGI Moon Kit, NASA's Scientific Visualization Studio, 2019

関連ツール