Rで解析:画像操作の進化「magick」パッケージ


これまでに画像を操作するパッケージとして「imager」や「EBImage」パッケージを紹介しました。これらパッケージも有用ですが、本パッケージはカユイ所に手が届くパッケージかと思います。

各実行コマンドを自身で確認いただき本パッケージの有用性を実感いただければと思います。

今年一番のパッケージかもしれません。

パッケージバージョンは0.3。windows 7およびOS X 10.11.5のR version 3.3.1で確認しています。

パッケージのインストール

下記コマンドを実行してください。windowsでの利用はRToolsのインストール、Macではターミナルで「brew install imagemagick --with-fontconfig --with-librsvg --with-fftw」の実行が必要です。

RTools
https://cran.r-project.org/bin/windows/Rtools/

#パッケージのインストール
#Macでは事前に下記コマンドをターミナルで実行
#brew install imagemagick --with-fontconfig --with-librsvg --with-fftw
#windowsは事前にRToolsのインストールが必要
install.packages("magick")

実行コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。

#パッケージの読込
library("magick")

#画像の読み込み:image_readコマンド
#からだにいいものバナーを読み込み
#もちろんローカル環境の画像も読み込めます
KaradaBanner <- image_read('https://www.karada-good.net/wp/wp-content/uploads/2015/08/4d45f652babef5b63a8c2a5f85c9885d.jpg') #画像の情報を表示:image_infoコマンド image_info(image = KaradaBanner) format width height colorspace filesize JPEG 986 149 sRGB 78164 #画像フォーマットを変換:image_convertコマンド #フォーマットを指定:formatオプション;png,jpeg,gif,pdfが指定可能 ConvertImg <- image_convert(image = KaradaBanner, format = "pdf") image_info(image = ConvertImg) format width height colorspace filesize pdf 986 149 sRGB 0 #画像を保存:image_writeコマンド #tcltkパッケージを利用して保存場所を指定 library("tcltk") setwd(paste(as.character(tkchooseDirectory(title = "保存場所を選択"), sep = "", collapse =""))) #保存ファイル名を指定:pathオプション #フォーマットを指定:formatオプション;png,jpeg,gif,pdfが指定可能 image_write(KaradaBanner, path = "test.pdf", format = "pdf") #画像を表示:image_browseコマンド #画像フォーマットに従いシステムで設定しているソフトで表示 image_browse(image = KaradaBanner) #画像周囲に枠線を付与:image_borderコマンド #色を指定:colorオプション #枠線太さをピクセルで指定:geometryオプション;左右×上下で指定 image_border(image = KaradaBanner, color = "blue", geometry = "15x10") #画像をtrim処理:image_trimコマンド image_trim(image = KaradaBanner) #画像を切り抜き:image_cropコマンド #切り抜く大きさ位置を指定:geometryオプション;幅x高さ{+-}X軸開始位置{+-}Y軸開始位置 image_crop(image = KaradaBanner, geometry = "140x150+100-30") #画像のリサイズ:image_scaleコマンド image_scale(image = KaradaBanner, geometry = "400x600") #画像の回転:image_rotateコマンド #角度を指定:degreesオプション image_rotate(image = KaradaBanner, degrees = 30) #画像を上下反転:image_flipコマンド image_flip(image = KaradaBanner) #画像を左右反転:image_flopコマンド image_flop(image = KaradaBanner) #画像の塗りつぶし:image_fillコマンド #基準点を指定:pointオプション #境界領域の指定:fuzzオプション;0から65536の範囲 image_fill(image = KaradaBanner, point = "200x130", color = "yellow", fuzz = 300) #画像のぼかし処理:image_blurコマンド #radiusとsigmaの数値を大きくするとぼかしが強い image_blur(image = KaradaBanner, radius = 1, sigma = 1) #画像にノイズを加える:image_noiseコマンド #ノイズ処理を指定:noisetypeオプション;Uniform,Gaussian,Impulse,Laplacian,Poissonが指定可能 image_noise(image = KaradaBanner, noisetype = "Poisson") #画像を縁取り:image_charcoalコマンド image_charcoal(image = KaradaBanner, radius = 1, sigma = 0.5) #画像の油絵処理:image_oilpaintコマンド image_oilpaint(image = KaradaBanner, radius = 0.5) #画像のエッジ処理:image_edgeコマンド image_edge(image = KaradaBanner, radius = 1) #画像のネガ処理:image_negateコマンド image_negate(image = KaradaBanner) #画像に文字を追加:image_annotateコマンド #文字を指定:textオプション #文字サイズを指定:sizeオプション #表示位置を設定:gravityオプション;Forget,NorthWest,North,NorthEast, #West,Center,East,SouthWest #文字背景色:boxcolorオプション image_annotate(image = KaradaBanner, text = "Karada-Good", size = 70, gravity = "West", color = "green", boxcolor = "lightblue") #複数画像を1つの画像に結合する:image_mosaicコマンド #からだにいいものバナーを読み込み KaradaBanner <- image_read('https://www.karada-good.net/wp/wp-content/uploads/2015/08/4d45f652babef5b63a8c2a5f85c9885d.jpg') #Rのロゴを読み込み logo <- image_read("https://www.r-project.org/logo/Rlogo.png") #画像を結合してリサイズ img <- image_scale(c(logo, KaradaBanner), "300x300") #描写 image_mosaic(image = img) #複数画像を並べて表示:image_appendコマンド #縦方向に表示:stackオプション;FALSEで横方向 AppendImg <- image_append(img, stack = FALSE) image_background(image = AppendImg, "red") #画像間を指定したframesで保管:image_morphコマンド #フレーム数を指定:framesオプション GifAnime <- image_morph(img, frames = 30) #image_morphコマンドで作成したmagick imageオブジェクトをアニメ化:image_animateコマンド #fpsを指定:fpsオプション #繰り返しの設定:loopオプション;0で繰り返し,1で繰り返ししない image_animate(GifAnime, fps = 10, loop = 0) #参考_グラフに画像を追加;ラスター画像プロットと同じです plot(cars) rasterImage(image_scale(KaradaBanner, "600x400"), 5, 100, 20, 120) #ggplo2パッケージの場合 library("ggplot2") library("grid") #rasterGrobコマンド RasterData <- rasterGrob(KaradaBanner, interpolate = TRUE) #annotation_customコマンドでグラフに追加 ggplot(data = cars, aes(speed, dist)) + geom_point() + annotation_custom(RasterData, xmin = 3, xmax = 20, ymin = 100, ymax = 120) [/code]


出力例

他コマンドは実行してみてください。大変面白いです。

・参考_グラフに画像を追加:ggplot2パッケージとの組み合わせ
magickggplot2

・image_animateコマンド
preview


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

関連コンテンツ


スポンサードリンク