* octave で画像処理 - 画像拡大とフィルタ [#safdea30] ** 画像拡大とフィルタ [#le5d15d2] [[前回>日記/2010-04-11/octave で画像処理 - 画像の拡大 その 2]]触れた nearest neighbor 法は「黒画素水増し画像」の黒画素を「最近傍の画素」で補間する方法です. つまり,画像を加工する''フィルタ''と言えます. そして,その加工具合を空間周波数領域で見ると,エイリアジングを除去しようとしている(が,あまりうまくいってない)''エイリアジング除去フィルタ''であると言えます. つまり,画像拡大のアルゴリズムはエイリアジング除去フィルタとして捉えることができます. ** フィルタの係数と空間周波数特性 [#y86c60d9] nearest neighbor 法フィルタの特性は,近傍画素の重み付け係数 |1|1| |1|1| で表すことができます. で,この重み付け係数の枠の外の値の無い部分は「0 の重み付け係数がある」と解釈しても計算結果は変わりません. 0 に何をかけても 0 で,0 を足し合わせても計算結果は一緒ですね. つまり,nearest neighbor 法の重み付け係数は 1 1 0 ...... 0 1 1 0 ...... 0 0 0 0 ...... 0 ... 0 ...........0 である,とも言えることになります. 実は,この重み付け係数を 2 次元 FFT にかけると,フィルタの''空間周波数特性''を得ることができます. 空間周波数特性とは, >どの空間周波数を残してどの空間周波数をカットするか を表すものです. ** octave で計算してみる [#qf21dff2] 実際に計算してみましょう. octave:1> h = zeros ( 512 ); # 512x512 の零行列 octave:2> h (1:2, 1:2) = [ 1 1; 1 1 ]; # 左上の 2x2 を 1 に octave:3> y = fft2(h); # 2 次元フーリエ変換 octave:5> imshow ( abs(swap2(y))/max(max(abs(y))) ); # 表示 #ref(freq_resp_nn.jpg,center) 理想的なエイリアジング除去フィルタは,中央の元から存在する周波数成分のみを通過させ,周囲のエイリアジング部分をカットするような特性です. 画像にすると中央部だけ真っ白,周囲は真っ黒,となります. が,このフィルタは,通過させるべき領域でもなだらかに減衰し,遮断すべき領域でも通過する成分があります. 「理想特性」に比べるとまだまだ,ということがわかると思います.