rimage on mac

Mac(Snow Leopard)にRで画像処理を行えるように、rimageパッケージをインストールして使ってみる。

エラー: 関数 "read.jpeg" を見つけることができませんでした

このようなエラーを見た人がいるかもしれない。Windowsの方は簡単にインストール出来るようである。see. R での JPEG ファイルの画像処理の例 (rimage パッケージを使用)

% sudo port install fftw jpeg

% sudo ln -s /opt/local/include/dfftw.h /usr/local/include/fftw.h
% sudo ln -s /opt/local/lib/libdfftw.a /usr/local/lib/libfftw.a

R起動で下記コマンドを入力。

> install.packages("rimage"
, repos="http://cran.md.tsukuba.ac.jp/"
, type="source"
, configure.args="--with-fftw-include=/usr/local/include --with-fftw-lib=/usr/local/lib --with-jpeg-include=/opt/local/include --with-jpeg-lib=/opt/local/lib"
)

Thanks! http://meme.biology.tohoku.ac.jp/students/iwasaki/rimage

関数

  • clipping(img, low=0, high=1)
    • ピクセル値をlow .. high の間に制限。
  • imagematrix(mat, type=NULL, ncol=dim(mat)[1], nrow=dim(mat)[2], noclipping=FALSE)
    • matrixからimagematrixオブジェクトを生成する. imagematrixオブジェクトは、rimageにおける基本的なデータ構造
  • imageType(img)
    • 与えられたイメージマトリクスのカラータイプ("rgb" or "grey")

メモ

> img <- read.jpeg('/Users/rish/test.jpg')
> imageType(img)
[1] "rgb"
> dim(img)
[1] 756 537   3 
> imageType(rgb2grey(img))
[1] "grey"
> dim(rgb2grey(img))
[1] 756 537

dimは、行列の行数と列数を表示するらしい。最後の3は、RGBの3だと思う(3チャンネルってこういう意味?)。グレイスケールに変換した際には、値が二値になっているため、この3が消えている(最後の行)。これから分かるように、画像でさえも行列のように扱えるようである。

> x <- rgb2grey(img)
> op <- par(mfrow=c(2,2))
> plot(apply(x, 1, sum),type = 'l')
> plot(apply(x, 2, sum),type = 'l')
> image(x)

apply(x, 1, sum)は、行列xの各行に対して、sum関数を適応するという意味。つまりは、各行の和を返している。

周辺分布を表示してみた。これでいいはず。もう少し分かりやすく表示したかったけど、これだけでもよく分かる。周辺分布について分かりやすい解説はAS3 でヒストグラムを作る (4) - 周辺分布 - てっく煮ブログを参照すること。