代码之家  ›  专栏  ›  技术社区  ›  Pierre-louis Stenger

在R中导入原始图像

  •  3
  • Pierre-louis Stenger  · 技术社区  · 6 年前

    我正在寻找一种将原始图像导入R的方法。

    事实上,有许多包装允许进口。bmp。png。jpeg或。tiff图像到R( ImageMagick ,则, EBImage ,则, imager ,则, bmp ,则, tiff ,则, TIFF ,则, pixmap ,则, Momocs 以及其他许多……)但这些文件格式有一个转换(白平衡、对比度、饱和度…)图片可以不同(饱和度、亮度……)即使拍照是标准化的,但物体的大小或颜色不同。原始图片没有这个问题。

    我知道根据相机的品牌不同,分机会有所不同,这会使事情变得复杂。

    但我想用一种更为精确和相关的方式来分析饱和度和亮度之间的差异。jpeg或。蒂芙

    尽管我做了研究,我还是阻止了第一步:原始图像的导入。。

    有人已经通过了吗? 是否存在用于导入此类文件的bash命令?
    我不想看到这幅图,而是想访问原始数据。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Richard Faucheron    6 年前

    您可以使用 readRaw() 来自的函数 hexView 包装:

    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\u高度和image\u宽度将以像素为单位。

    现在,您可以通过 as.raster :

    plot(as.raster(image_matrix))
    
        2
  •  2
  •   cole    5 年前

    请注意,如果您不想添加包依赖项 只有 需要读取原始数据, readBin 就足够了。

    示例:

    raw_data <- readBin("test.png", "raw")
    raw_data[1:10]
    # [1] 89 00 00 00 00 00 00 00 00 00
    

    您可以探索其他选项 读卡器 具有 ?readBin