11

私は現在、主成分分析を R の視覚データに適用することに取り組んでいます。

Matlab では、「im2double」や「mat2gray」などのコマンドを呼び出して、ビットマップを数値行列に変換し、再び画像に戻すことができます。

おそらく追加のパッケージを介して、これがRで達成できるかどうか疑問に思っていました。

4

4 に答える 4

7

バイオコンダクターで利用可能な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
于 2013-01-03T22:06:13.917 に答える
2

パッケージをインストールする 2 つの方法。

  1. RStudio などのエディターがない場合は、コマンド ラインからインストールします。
  2. bash で R コマンドを使用して R インタープリターに入り、コマンド ラインをインストールします。

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 を使用してイメージを読み取ります。ディスプレイは、グラフィカル ウィンドウで画像を表示するために使用されます。

于 2015-09-23T08:37:44.367 に答える
2

私はこれを試すのに十分興味がありました。明らかにパッケージの方が優れたソリューションですが、本当にベース 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 を使用してピクセルごとの値にアクセスできます。

于 2013-01-04T00:02:59.357 に答える
1

比較的新しいパッケージtiff は、TIF イメージの読み取りと書き込みを非常にうまく処理します。
それでも、比較的単純な画像操作以外の場合は、ハーバード・スミソニアン グループの ImageJ または SAOImage9 を使用することをお勧めします: http://www.cfa.harvard.edu/resources/software.html

私は R でツールを作成して、ピクセルのマージ、ピクセルの分割、ソーベル & ハフ変換、脱色などを行い、大きな成功を収めました。最終的にどのアプリケーションを選択するかは、画像のサイズと必要な処理の種類によって異なります。

于 2013-01-04T12:52:54.693 に答える