画像処理
(まだ書きかけ)
ここではimagerというパッケージによる画像処理を扱う。
install.packages("imager")
library(imager)
vignette(gettingstarted) # 解説をブラウザで表示
pic = load.image("hoge.png") # 読む
oblect.size(pic) # サイズを確認
plot(pic, asp=1) # 表示
hist(pic, breaks=(0:255)/255, col="black") # ヒストグラム
hist(R(pic), breaks=(0:255)/255, col="red") # 赤だけ
hist(G(pic), breaks=(0:255)/255, col="green") # 緑だけ
hist(B(pic), breaks=(0:255)/255, col="blue") # 青だけ
r = range(pic) # 最小値・最大値を求める
pic2 = (pic - r[1]) / (r[2] - r[1]) # 0〜1に調節
save.image(pic2, "hoge.jpg") # 保存
画像はcimgクラスのオブジェクトで表される。これは各ピクセル・各色ごとに,深度が8ビットなら255で割り,16ビットなら65535で割って,0以上1以下のdouble型にしたもの。各色は関数 R(),G(),B() で取り出せる。
画像の保存は save.image() で行う。画像の形式は拡張子で決められる。8ビット深度で保存され,JPEGの品質は指定できない。品質を気にする場合はいったんPNGで保存してImageMagickのconvertコマンドで convert hoge.png -quality 92 hoge.jpg
のようにすればよいであろう。
各色に分解してから操作し,再合成する方法:
r = R(pic)
g = G(pic)
b = B(pic)
# 何らかの操作をする
pic2 = as.cimg(c(r,g,b), dim=dim(pic)) # 再合成