Rで画像処理~magick package
最近、ホームページもRmarkdownで書くようになりました。凝ったものは必要ないし、修正するのも楽だし、Rstudioで全て済ませられるので満足してます。ただホームページに貼り付ける画像を編集するのに、他の画像ソフトを立ち上げるのはやや面倒だなとは感じていました。でも、もうほかのソフトは必要ないかもしれません、magick packageがあれば…
画像の入出力
パッケージを読み込んでから、画像を取り込みます。
先日頂いた、えび味噌ラーメン画像です。
library(magick) ramen <- image_read('img/ebi_miso.jpg')
Rstudioのviewerに出力するには、ramenとそのまま打ち込むだけです。
コンソールには画像の情報も一緒に出力されます。
画像の情報だけ欲しい場合は、image_infoを使います。
image_info(ramen)
ちなみに画像の出力は、image_writeを使います。
image_write(ramen,path='img/ebi_miso.png',format='png')
画像の処理
画像のサイズ変更は、image_scaleで。
library(dplyr) image_scale(ramen, "200") %>% image_browse() # width: 300px image_scale(ramen, "x200") %>% image_browse() # height: 300px
画像の回転、鏡像はimage_rotate,image_flip,image_flopで。
image_rotate(ramen, 45) image_flip(ramen) image_flop(ramen)
画像のフィルター、効果は、image_blur,image_noiseで。
image_blur(ramen, 10, 5) image_noise(ramen)
画像のテキスト注釈
上の写真のようなテキストを付けるのは、image_annotateを使います。
ramen %>% image_annotate(.,'text!!',size=70,gravity='northeast',color='green')
画像の結合
ラーメン画像を3枚用意します(ramen1,ramen2,ramen3)。
3つの画像をcombineしてから、image_appendするのですが、画像の大きさが、まちまちかもしれないので、image_scaleで高さをそろえてからappendしてください。
img <- c(ramen1,ramen2,ramen3) image_append(image_scale(img, "x200"))
レイヤー
Photoshopみたいにレイヤーを重ねたりできます。
logo <- image_read("https://www.r-project.org/logo/Rlogo.png") image_scale(ramen, "500") ->ramen500 image_scale(logo, "300") ->logo300 img <- c(ramen500 ,logo300) image_mosaic(img)
アニメーション
先ほどのラーメン画像3枚でパラパラアニメです。image_animateを使用します。
img <- c(ramen1,ramen2,ramen3) image_animate(image_scale(img, "200x200"), fps = 1, dispose = "previous")
試してない機能もまだまだあります。
ラスター画像に変換し、ggplotに貼り付けたりもできるようです。
まとめ
簡単な画像処理は、Rでできそうです。
たくさんの画像に同じ処理するような場合には、効率よいですね。
繰り返し作業は画像ソフトより、可能な限りRで済ませたいものです。