octave で画像処理 - 画像の縮小 単純な画素間引き

今度は画像の縮小に挑戦してみます.

画素の間引き

まずは,いちばん安易な方法として,画素を間引きして画像を縮小してみます. 絵にするとこんな感じ.

a b c d     a c
e f g h  -> i k
i j k l
m n o p

やってみる

octave 上でやってみます.

間引きする関数が見つからなかったので,適当に書きます.

function y = resample ( x, m )
  r = rows(x);
  c = columns(x);
  rm = floor(r/m);
  cm = floor(c/m);

  y(rm,cm,3) = 0;
  for p = 1:3
    for rr = 1:rm
      for cc = 1:cm
        y(rr,cc,p) = x ( m*rr, m*cc, p );
      endfor                  
    endfor  
  endfor    
endfunction      

やってみます.

octave:1> [ x m a ] = imread ( 'gaishi.jpg' ); # 画像を読み込み
octave:2> x = double ( x ) / 255;              # double型に変換
octave:3> x2 = resample(x,2);                  # 画素を間引きして
octave:4> imshow ( x2 );                       # 表示

こんな感じになりました.

gaishih_resample.jpg

ノイジーな感じがしますね.

2 次元 FFT にかけてみる

2 次元 FFT にかけてスペクトルを見てみます.

octave:6> y2 = fft2 ( x2 );
octave:7> imshow ( swap2(abs(y2))/100 );

こんな感じになりました.

gaishih_resample_sf.jpg

添付ファイル: filegaishih_resample_sf.jpg 538件 [詳細] filegaishih_resample.jpg 580件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-04-21 (水) 23:02:55 (3836d)