今回は前回に引き続き、空間フィルタリングを行いました。ノイズ処理に多く用いられる、周波数領域でのフィルタリングは、ローパスフィルタ・ハイパスフィルタ・バンドパスフィルタなどで知られていますが、これらは特定の周波数をカットして画像内の情報を判別しやすくしてくれます。pythonで実装していきます。
画像のフーリエ変換
フーリエ変換とは、数学的操作によって距離をもつ空間である空間領域から信号がどのような周波数成分を持っているか表現する空間周波数領域へのシフトのことです。空間領域から空間周波数領域に画像情報をシフトすることで、画像内の特定の周波数を扱えるようになります。次の画像をフーリエ変換してみます。
まず画像を白黒表示で得ます。
gray = cv2.imread("img01.png",0) plt.imshow(gray) plt.gray()
show.picture(white&black).py
白黒画像が得られたので、早速フーリエ変換していきます。
mg_fft = np.fft.fft2(gray) img_fft2 = np.fft.fftshift(img_fft)
Fourier transform.py
plt.gray() plt.imshow(np.abs(img_fft2))
Show picture Fourier transformed.py
上絵のようにフーリエ変換ができました。これで画像が空間領域から空間周波数領域へとシフトしたので、画像の周波数を取り扱えるようになります。
様々な空間周波数フィルタの紹介
1. ハイパスフィルタ
ハイパスフィルタとは、遮断周波数より高い周波数を減衰させることなく低い周波数のみをカットするフィルタです。高周波成分のみが残ることで、画像のエッジ部分が強調されより画像がシャープになります。