如何以矩阵或数据框的形式将灰度图像转换为相应的像素值(0-1)?

时间:2016-09-26 03:16:11

标签: r excel image image-processing matrix

在R编程中我想将灰度图像转换为矩阵或数据框形式的相应像素值,如果需要,我也希望将数据存储在excel文件中。这个转换过程将帮助我实现和以每个像素的强度形式分析图像上的聚类方法。许多建议将biOps封装用于此灰度图像到像素矩阵转换,但不幸的是这个包不再受R支持(链接:cran.r-project.org/web/packages/biOps/index.html)。当我使用" imageData()"从摘要中提取灰度图像的像素值时,我也尝试使用EBImage包。但是值存储为值的3D数组,但我想制作矩阵或数据帧,其中每个像素对应于0到1的相应值。可以建议R中的任何方法。供参考我共享MRI扫描图像的excel文件。MRI scan Image:this is how I want my image to be converted

您可以在此处下载excel文件https://d37djvu3ytnwxt.cloudfront.net/assets/courseware/v1/e4d303da53c93dfaca745ad1236e7d53/asset-v1:MITx+15.071x_3+1T2016+type@asset+block/tumor.csv

1 个答案:

答案 0 :(得分:1)

您的灰度图像文件作为3D阵列而不是2D矩阵加载到R中的原因是其像素强度在RGB颜色通道中复制。解决方法是使用函数channel将数据转换为灰度表示。这将为您提供[0:1]范围内的像素强度的二维矩阵。然后,您可以使用常规write.csv函数将图像数据保存到.csv文件中。您可能希望进行转置以将R使用的列主要顺序表示转换为行主顺序。

library("EBImage")

img <- readImage("sample.jpg")    
img <- channel(img, "grey")
write.csv(t(img), "sample.csv", row.names = FALSE)