在R中将数组转换为Image(EBImage)

时间:2016-08-02 11:49:48

标签: arrays r image-processing matrix

display有一个Image功能,可以显示imagematrix个对象,但matrixarraycombine是输入时,也可以显示(作为栅格)。

现在,当我尝试Image多个图片时,只能合并imagematrix个对象,因为我的初始图片是matrixcombine格式,不能使用此Image功能,然后显示多个图像。

所以我的问题是:如何将矩阵转换为@EnableGlobalAuthentication对象(EBImage)? (如果您有另一个功能可以将多个矩阵显示为光栅图像,也会有所帮助。)

1 个答案:

答案 0 :(得分:1)

TL; DR:使用Image()构造函数将矩阵或数组转换为Image个对象。

您可以在Image访问者和imageData()构造函数的帮助下轻松地在纯矩阵/数组和Image()对象之间切换。将像素强度矩阵强制转换为Image的另一种方法是使用as.Image()。有关在单通道灰度图像上显示此方法的信息,请参阅以下示例。

library(EBImage)

## sample grayscale image
f <- system.file("images", "sample.png", package="EBImage")
x <- readImage(f)

## extract pixel intensity matrix from the Image object
m <- imageData(x)

## convert matrix to Image
img <- Image(m)

## combine and display the result
img2 <- combine(img, img)

display(img2, method="raster", all=TRUE)

enter image description here

如果您的像素强度数组包含红色,绿色和蓝色分量的单独颜色通道,您还需要为colormode=Color指定Image()参数。

## get sample pixel intensity RGB array
x <- readImage(system.file("images", "sample-color.png", package="EBImage"))
a <- imageData(x)

## convert back to Image
img <- Image(a, colormode=Color)

## combine and display the result
img2 <- combine(img, img)

display(img2, method="raster", all=TRUE)

enter image description here

如果您将颜色通道作为单独的矩阵,则可以在Image的帮助下将它们组合成颜色rgbImage()

## matrices corresponding to red, green and blue color channels
r <- a[,,1]
g <- a[,,2]
b <- a[,,3]

## construct an color Image object 
img <- rgbImage(r, g, b)