Rで解析:画像処理に役に立つかも「OpenImageR」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

「magick」パッケージ以外の画像処理に役に立つかもしれないパッケージの紹介です。基本的なコマンドを紹介します。画像のリサイズや回転、切り抜きが可能です。画像はjpeg,png,tiffファイルの処理が可能です。

・「magick」パッケージの紹介
 https://www.karada-good.net/analyticsr/r-531/

パッケージバージョンは1.2.3。実行コマンドはwindows 11のR version 4.2.1で確認しています。

スポンサーリンク

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

下記コマンドを実行してください。

#パッケージのインストール
install.packages("OpenImageR")

実行コマンド

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

画像例:https://www.karada-good.net/wp/wp-content/uploads/2022/08/TEST.jpg

参考までにケトルベルとダンベルのAmazonアソシエイトです。パフォーマンスを発揮するには体が資本です。ケトルベルとダンベルも「からだにいいもの」でおすすめの道具です。

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

###画像ファイルの準備#####
#画像例を作業フォルダにダウンロード
download.file('https://www.karada-good.net/wp/wp-content/uploads/2022/08/TEST.jpg',
              'KARADA.jpg', mode = 'wb') 
#画像例を指定
library("tcltk")
Path <- paste0(as.character(tkgetOpenFile(title = "画像ファイルを選択",
                                          filetypes = '{"画像ファイル" {".*"}}',
                                          initialfile = c("*.*"))))
########

#jpeg,png,tiffファイルの読み込み:readImageコマンド
ImageTest <- readImage(Path)

#画像を表示:imageShowコマンド
imageShow(file_path = ImageTest,
          clear_viewer = TRUE)

#画像サイズを確認
dim(ImageTest)
[1] 319 425   3

#作業フォルダに画像を書き出し:writeImageコマンド
#jpeg,png,tiffファイルの指定が可能,ファイル名で指定
writeImage(data = ImageTest, file_name = "Test.tiff")

#グレースケール化:rgb_2grayコマンド
GrayImage <- rgb_2gray(RGB_image = ImageTest)
imageShow(file_path = GrayImage,
          clear_viewer = TRUE)

#切り抜き:cropImageコマンド
#幅を指定:new_widthオプション
#高さを指定:new_heightオプション
#範囲を指定:typeオプション;equal_spaced:画像の中心から指定,user_defined:範囲を指定
CropTest <- cropImage(image = ImageTest, new_width = 200:300,
                      new_height = 200:300, type = "user_defined")
imageShow(file_path = CropTest,
          clear_viewer = TRUE)

#反転:flipImageコマンド
#向きを指定:modeオプション;horizontal:水平,vertical:垂直
FlipTest <- flipImage(image = ImageTest, mode = "vertical")
imageShow(file_path = FlipTest,
          clear_viewer = TRUE)

#回転:rotateImageコマンド
#保管方法の指定:methodオプション;nearest,bilinearの指定が可能
#回転後のサイズ:modeオプション;same:処理前と同じ,full:元サイズ内に収める
RotateTest <- rotateImage(image = ImageTest, angle = 45,
                             method = "bilinear", mode = "full")
imageShow(file_path = RotateTest,
          clear_viewer = TRUE)

#エッジの抽出:edge_detectionコマンド
#抽出方法の指定:methodオプション;Frei_chen,LoG,Prewitt,
#Roberts_cross,Scharr,Sobelの指定が可能
#その他設定はヘルプを参照
EdgeTest <- edge_detection(image = ImageTest, method = "Frei_chen",
                           conv_mode = "full")
imageShow(file_path = EdgeTest,
          clear_viewer = TRUE)

#画像のリサイズ:resizeImageコマンド
#リサイズ方法の指定:methodオプション;nearest,bilinear
#その他設定はヘルプを参照
ResizeTest <- resizeImage(image = ImageTest,
                          width = 100, height = 100,
                          method = 'bilinear')
imageShow(file_path = ResizeTest,
          clear_viewer = TRUE)

#ガウシアぼかしでダウンサンプリング:down_sample_imageコマンド
#factorオプション;1以上で指定
#gaussian_blurオプション;TRUE/FALSE
DownSampleTest <- down_sample_image(image = ImageTest,
                                    factor = 1.2, 
                                    gaussian_blur = TRUE)
imageShow(file_path = DownSampleTest,
          clear_viewer = TRUE)

#ガンマ値の調整:gamma_correctionコマンド
GammaTest <- gamma_correction(image = ImageTest, gamma = 1)
imageShow(file_path = GammaTest,
          clear_viewer = TRUE)

#モルフォロジ処理:delationErosionコマンド
#処理方法の指定:methodオプション;delation,erosionの指定が可能
#処理範囲を指定:Filterオプション
DelationTest <- delationErosion(image = ImageTest,
                                Filter = c(4, 4), method = "erosion")
imageShow(file_path = DelationTest,
          clear_viewer = TRUE)

出力例

・グレースケール化:rgb_2grayコマンド

・切り抜き:cropImageコマンド

・反転:flipImageコマンド

・回転:rotateImageコマンド

・エッジの抽出:edge_detectionコマンド

・画像のリサイズ:resizeImageコマンド;width = 100, height = 100

・ガウシアぼかしでダウンサンプリング:down_sample_imageコマンド

・モルフォロジ処理:delationErosionコマンド


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました