我想在R中进行一些图像特征提取。目前我正在使用EBImage包。我可以使用hist函数获得RGB直方图,但是我还可以获得Lab-Histogramm吗?此外,我还想存储直方图的数据(像素强度的分布)。这怎么可能?是否可以在R中提取图像的颜色相关图?如果是,我该怎么做? 非常感谢! 这是我到目前为止所做的代码(带注释):
source("http://bioconductor.org/biocLite.R")
biocLite()
biocLite("EBImage")
library(EBImage)
image1 <- readImage('C:/Users/Inalei/Pictures/Image1.JPG')
image2 <- readImage('C:/Users/Inalei/Pictures/Image2.JPG')
image3 <- readImage('C:/Users/Inalei/Pictures/Image3.JPG')
hist1 <- hist(image1) #hist1 is empty
hist2 <- hist(image2) #hist2 is empty
hist3 <- hist(image3) #hist3 is empty
library(corrgram)
corrgram(image1) #Error in slot(x, ".Data")[, sapply(x, is.numeric), drop = FALSE] : incorrect number of dimensions
答案 0 :(得分:1)
我刚刚更新了EBImage开发版本,以便于提取图像直方图数据。现在hist
方法无形地返回对应于红色,绿色和蓝色通道的类“直方图”的对象的命名列表。例如,要访问绿色像素强度的分布,您可以使用
hist1 <- hist(image1)
hist1$green
要使用此功能,请从源
安装EBImagelibrary(devtools)
install_github("Bioconductor-mirror/EBImage")
或等到EBImage版本4.13.5的二进制文件可从https://www.bioconductor.org/packages/3.3/bioc/html/EBImage.html的软件包登录页面获得。
关于Lab色彩空间的问题:不幸的是,目前我们不支持它。
要在颜色通道之间制作相关图,首先构建一个包含每个通道像素值列的数据框
channels = sapply(c("red", "green", "blue"),
function(ch) as.vector(channel(x, ch)),
simplify = FALSE)
channels = as.data.frame(channels)
然后传递给corrgram
函数
corrgram(channels)