% convert -colorspace gray hoge0.jpg hoge1.pngとしてグレイスケール(256値)の画像に変換しておく. convert コマンドで,画像のフォーマットをいろいろ変換できる. このコマンドはいろいろなことができるので一度 man convert として マニュアルを読むとよい.
% display hoge1.png
%convert -geometry 128x128! hoge3.jpg hoge4.png
| 原画像(レナ) | → | 振幅スペクトル |
|---|---|---|
![]() |
→ | |
#より後ろはコメントなので入力する必要はない.
octave: > lena = imread( 'lena.png' ); # 画像の読み込み octave: > colormap( gray( 256 ) ); # おまじない. グレイスケールの画像という意味. octave: > image( lena ); # 画像を表示. octave: > LENA = fft2( lena ); # 2次元フーリエ変換 octave: > disp = log ( fftshift( abs(LENA) ) ); # 振幅スペクトルを取り出し,対数をとる. octave: > lmin = min( disp(:) ); octave: > lmax = max( disp(:) ); octave: > imagesc( disp, [lmin lmax ] )上記,右のような振幅スペクトルが表示されれば OK.
| 正弦波の画像 その1 | 正弦波の画像 その2 | 正弦波の画像 その3 |
|---|---|---|
![]() |
![]() |
|
octave: > x = [0 : 0.05 : 6.35]; octave: > y= sin( 10 * x ); octave: > o = ones( 128, 1 ); octave: > m = o * y; octave: > imagesc( m, [-1 1] );
| 原画像 | → | 振幅スペクトル |
|---|---|---|
|
→ | |
octave: > M = fft2( m ); # 2次元フーリエ変換 octave: > disp = fftshift( abs(M) ) ; # 振幅スペクトルを取り出す. octave: > imagesc( disp )
octave: > size( LENA ) ans = 256 256 octave: > G( 1:256, 1:256 ) = 0; octave: > G( 128-32:128+31, 128-32:128+31 ) = 1; octave: > imagesc( G, [0 1] )
| 低周波だけ通すフィルター | 通す周波数領域 | 再構成した画像 |
|---|---|---|
![]() |
![]() |
|
octave: > G = fftshift( G); octave: > LENA2 = LENA .* G; octave: > disp = log( abs( fftshift( LENA2 ) ) ); octave: > imagesc( disp, [lmin lmax ] ) octave: > lena2 = real( ifft2( LENA2 ) ); octave: > image( lena2 )