2017年3月23日 更新

画像処理におけるフーリエ変換④〜pythonによるフィルタ設計〜

画像処理におけるフーリエ変換の最終回として、pythonによるフィルタ設定についてご紹介します。

95,660 view お気に入り 3
mat data type = 15 is not supported
error
といったエラーがきます。これは逆変換したときに複素数が残ってしまっているからです。なので逆変換された後の配列の実数部分だけを取り出し、配列から出力を行います。
ifimage = np.fft.ifft2(fimage)
ifimage = ifimage.real
Image.fromarray(np.uint8(ifimage)).show()
Array to Image.py
※Image.fromarray(np.uint8())としなければいけない理由は、ピクセル値に基準をつけないといけないからです。例えば「30」というピクセル値があったとき、それがどのくらいの明るさなのかは白と黒をどのように設定しているかによります。ピクセル値をいろいろいじったあと、出力する画素値は「0が白、黒が255」であると指定して初めて画像が出力されます。

フィルタ設計

これからフィルタを設計していきます。上のようにnp.fft.fft2のフーリエ変換を行うと周波数原点が、画像の左上にきます。
NumpyとImageJとのフーリエ変換の違い

NumpyとImageJとのフーリエ変換の違い

なので、ImageJと同じ処理をするためには画像をshiftしておく必要があります。フーリエ変換の中心位置を合わせるのは以下のようにすればOKです。
fimage  = np.fft.fftshift(fimage)
Shift.py
フィルターを設計していきます。前回の記事で書いたように、フィルタは周波数領域では要素の掛け算で表されました。この画像と同じサイズの行列を作ります。
size = image.shape
filter_matrix = np.zeros(size)
size.py
ローパスフィルタを作ってみましょう。周波数領域で中心部分だけ通し、他が0になるように行列を設計すればOKです。
length = size[0]
center = size[0]/2
R = 50
for i in range(0,length):
     for j in range(0,length):
            if (i-center)*(i-center) + (j-center)*(j-center) < R*R
                           filter_matrix[i][j] = 1
filter.py
フィルターとなる行列が作られました。画像をフーリエ変換したものにこれをかければローパスフィルタの完成です。

出力させてみましょう。
fimage = fimage*filter_matrix
fimage = np.fft.fftshift(fimage) #shiftする
fimage = fimage*filter_matrix
fimage = np.fft.fftshift(fimage) #shiftしたものをもとに戻す
ifimage = np.fft.ifft2(fimage) #Inverse Fourier Transform
ifimage = ifimage.real
Image.fromarray(np.uint8(ifimage)).show()
Show.py
47 件

関連する記事 こんな記事も人気です♪

ImageJ まとめ

ImageJ まとめ

「このページを見れば,ImageJ のこと全てが解決する」をモットーに,日々更新を行っています.
三好 裕之 | 4,600 view
シリーズ5.ImageJマクロ言語を用いた画像解析~マクロ言語のまとめ2~

シリーズ5.ImageJマクロ言語を用いた画像解析~マクロ言語のまとめ2~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。 今回の記事ではImageJのユーザー定義関数について学んでいきます。
シリーズ4.ImageJマクロ言語を用いた画像解析~②二値化処理-3~

シリーズ4.ImageJマクロ言語を用いた画像解析~②二値化処理-3~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。
LP-tech2周年記念#人気記事のまとめ#第15位〜第11位

LP-tech2周年記念#人気記事のまとめ#第15位〜第11位

LP-techが始まってから2周年を迎えました。ここまでLP-techを続けることができたのも読者の皆様のおかげだと思っています。そこで、LP-techの感謝祭ということで、人気の記事を第20位から第1位までをご紹介します。今回は第15位〜第11位までです。
画像の再構成理論〜概要、まとめ〜

画像の再構成理論〜概要、まとめ〜

今回は、以前4回にわたって記事として投稿した画像の再構成理論の概要について述べ、それのまとめをしたいと思います。

この記事のキーワード

この記事のキュレーター

三好 裕之 三好 裕之