概要
平均化フィルタとガウシアンフィルタについて解説し、OpenCV での適用方法について紹介します。
平均化フィルタ
平均化フィルタ (averaging filter) は、カーネル内の画素の平均を計算するフィルタです。
dst(x,y)=N21i=1∑Nj=1∑Nsrc(x+i,y+j)フィルタのサイズが N×N の場合、各フィルタの値を f(i,j)=N21 とすることで実現できます。
(3, 3) の平均化フィルタ
平均化フィルタは画像のエッジを滑らかにします。
エッジが滑らかになることで、ノイズが軽減します。
cv2.blur
cv2.blur() で平均化フィルタを適用できます。
sample.jpg
エッジが滑らかになることで、画像全体がぼやけた感じになります。
ガウシアンフィルタ
ガウシアンフィルタ (Gaussian filter) は、ガウス分布 (正規分布)で重み付けしたカーネルを使用するフィルタです。ガウス分布は以下のような単峰型の分布です。
ガウシアンフィルタは以下のように導出できます。
多次元正規分布の確率密度関数
f(x)=(2π)2n∣Σ∣1exp{−21(x–μ)TΣ−1(x–μ)}について、
Σ=(σx00σy), n=2, x=(x,y)T, μ=0 とおくと、
f(x,y)=2πσxσy1exp(−21(σxx2+σyy2))σx=σy=σ の場合は
f(x,y)=2πσ21exp(−2σ2x2+y2)
ガウシアンフィルタは画像のエッジを滑らかにします。
エッジが滑らかになることで、ノイズが軽減します。
cv2.GaussianBlur
cv2.GaussianBlur() でガウシアンフィルタを適用できます。
simgaX
のみ指定した場合は、sigmaX = sigmaY
となります。
コメント