私は現在、主成分分析を R の視覚データに適用することに取り組んでいます。
Matlab では、「im2double」や「mat2gray」などのコマンドを呼び出して、ビットマップを数値行列に変換し、再び画像に戻すことができます。
おそらく追加のパッケージを介して、これがRで達成できるかどうか疑問に思っていました。
私は現在、主成分分析を R の視覚データに適用することに取り組んでいます。
Matlab では、「im2double」や「mat2gray」などのコマンドを呼び出して、ビットマップを数値行列に変換し、再び画像に戻すことができます。
おそらく追加のパッケージを介して、これがRで達成できるかどうか疑問に思っていました。
バイオコンダクターで利用可能なEBImage パッケージ (ここでは vignette) を使用して、画像を操作および操作しました。
# installing package if needed
source("http://bioconductor.org/biocLite.R")
biocLite("EBImage")
library(EBImage)
f = readImage(system.file("images", "lena-color.png", package="EBImage"))
str(f)
#Formal class 'Image' [package "EBImage"] with 2 slots
# ..@ .Data : num [1:512, 1:512, 1:3] 0.886 0.886 0.875 0.875 0.886 ...
# ..@ colormode: int 2
パッケージをインストールする 2 つの方法。
R コマンドを実行できるプロンプトに移動します。これらは基本的な画像処理コマンドです。
このコマンドを実行して Bio Conductor backage biocLite をインストールします。これは、EBIMage パッケージのインストールに役立ちます (このパッケージは画像処理に広く使用されています)。
source("http://bioconductor.org/biocLite.R")
EMImage パッケージをインストールして、画像処理コマンドを使用します。
biocLite("EBImage")
EBIMage パッケージをロードして画像処理を使用する
library("EBImage")
# Reading image from computer
img=readImage(files="~/Desktop/Prog/R/tinago.JPG")
display(img)
img1=img+ 0.2 # increase brightness
img2=img- 0.2 # decrease brightness
display(img1) # Display images in browser or graphical window
display(img2) # Display images in browser or graphical window
img3= img * 0.5 # decrease contrast
img4=img * 2 # increase contrast
display(img3); display(img4) # show result images
img5=img^2 # increase Gamma correction
img6=img^0.7 # decrease Gamma correction
display(img5); display(img6) # Display result images
注 : readImage を使用してイメージを読み取ります。ディスプレイは、グラフィカル ウィンドウで画像を表示するために使用されます。
私はこれを試すのに十分興味がありました。明らかにパッケージの方が優れたソリューションですが、本当にベース R に固執したい場合は、これにより png が読み込まれます (上下逆ではありますが、おそらく修正可能です)。netpbm ツールが存在することを前提としているため、Windows システムではそのままでは機能しない可能性があります。
readPng <- function(pngFile) {
contents <- system(paste('pngtopnm',pngFile,'| pnmtoplainpnm'),intern=TRUE)
imgDims <- strsplit(contents[2], ' ')
width <- as.numeric(imgDims[[1]][1])
height <- as.numeric(imgDims[[1]][2])
rawimg <- scan(textConnection(contents),skip=3)
return(list(
x=1:width,
y=1:height,
z=matrix(rawimg,width),
width=width,
height=height))
}
この関数から返されたリストを直接実行image(img)
するか、img$z を使用してピクセルごとの値にアクセスできます。
比較的新しいパッケージtiff
は、TIF イメージの読み取りと書き込みを非常にうまく処理します。
それでも、比較的単純な画像操作以外の場合は、ハーバード・スミソニアン グループの ImageJ または SAOImage9 を使用することをお勧めします: http://www.cfa.harvard.edu/resources/software.html。
私は R でツールを作成して、ピクセルのマージ、ピクセルの分割、ソーベル & ハフ変換、脱色などを行い、大きな成功を収めました。最終的にどのアプリケーションを選択するかは、画像のサイズと必要な処理の種類によって異なります。