在 R 中导入原始图像
Posted
技术标签:
【中文标题】在 R 中导入原始图像【英文标题】:Import Raw image in R 【发布时间】:2018-05-16 00:57:25 【问题描述】:我正在寻找一种将原始图像导入 R 的方法。
确实,有许多软件包允许将 .bmp、.png、.jpeg 或 .tiff 图像导入 R(ImageMagick
、EBImage
、imager
、bmp
、tiff
、@987654326 @、pixmap
、Momocs
和许多其他文件格式。拍照是标准化的,但物体有不同的大小或颜色。 Raw图片没有这个问题。
我知道扩展名因相机品牌而异,这使事情变得复杂。
但我想以比 .jpeg 或 .tiff 更精确和相关的方式分析饱和度、亮度之间的差异。
尽管我进行了研究,但我还是阻止了第一步:原始图像导入..
有人已经通过了这个通行证吗? 是否存在 bash 命令来导入这种文件? 我不是要看图片,而是要访问原始数据。
【问题讨论】:
不确定要对数据做什么,但 ImageMagick 可以导入原始数据。我认为 Rmagick 也可以做到。例如:convert -size 512x512 -depth 8 image.rgb image.png
。 ImageMagick 使用 dcraw 或 ufraw 作为委托来完成工作。
【参考方案1】:
您可以使用hexView
包中的readRaw()
函数:
library(hexView)
raw_image <- readRaw("image_path")
然后数据在raw_image$fileRaw
中。它被存储为“raw”类的向量。
你可以简单地把它变成一个矩阵:
image_matrix <- matrix(raw_image$fileRaw, nrow = image_height, ncol = image_width, byrow = TRUE)
它应该重新创建原始文件中的内容。
注意:image_height 和 image_width 将以像素为单位。
现在您可以通过as.raster
轻松绘制图像:
plot(as.raster(image_matrix))
【讨论】:
【参考方案2】:请注意,如果您不想添加包依赖项并且只需要读入原始数据,readBin
就足够了。
例子:
raw_data <- readBin("test.png", "raw")
raw_data[1:10]
# [1] 89 00 00 00 00 00 00 00 00 00
您可以使用?readBin
探索readBin
的其他选项
【讨论】:
以上是关于在 R 中导入原始图像的主要内容,如果未能解决你的问题,请参考以下文章