Search on the blog

2013年6月5日水曜日

Octaveで画像処理(1)

Octaveを使うと画像<->配列の変換が簡単にできるのでいろいろ遊んでみようと思います。

まずは画像を読み込んで、grayscaleに変換して書き込むということをやってみました。
function test1()
  [img, map, alpha] = imread("~/programming/octave/fft/lena.jpg");
  monotone = img(:,:,1)/3 + img(:,:,2)/3 + img(:,:,3)/3;
  imwrite(monotone, "~/programming/octave/fft/img1.jpg");
endfunction

 1行目で画像lena.jpgを読み込みます。imgに各ピクセルのRGB値が格納されます。画像サイズがn*mなら、imgはn*m*3の三次元配列になります。
 2行目でRGBの平均を計算します。
 3行目で画像ファイルにmonotoneの情報を書き込んでいます。この例では、第一引数はn*mの二次元配列ですが、フルカラーの情報をファイルに書き込みたい場合は、第一引数をn*m*3の三次元行列にすることもできます。

実行は以下のようにします。(ここでは上のプログラムを~/programming/octave/fft/test1.mに保存しているとします。)
octave> addpath("~/programming/octave/fft");
octave> test1
以下が実行結果。



0 件のコメント:

コメントを投稿