R-无法正确显示二进制文件中的灰度图像

时间:2018-10-22 12:49:04

标签: r image binaryfiles

我想显示存储为二进制文件的灰度图像。我尝试了image和RasterImage函数,但是输出的质量比原始的要差。这是我的代码示例:

finfo=file.info("image_file")

toread= file("image_file","rb")

image_data = readBin(toread, integer(), size=1, n = finfo$size, endian="little")

img_m<-matrix(image_data,nrow=480,ncol=640)

image(data_m,axes=FALSE,col=grey(seq(0,1,length=256)))

上面代码的输出看起来像这样:

enter image description here

但是,原始图像如下:

enter image description here

我使用Image.frombytes函数对Python进行了尝试,它可以正确显示图像。我无法使用R做同样的事情。

更新:我将前150,000个像素设置为0,只是为了查看它是否会正确影响显示,而不是黑色像素,而是灰色像素。这是图片:

enter image description here

有人知道正确显示功能的正确方法,还是我的代码中缺少获得正确图像的功能?

我对此表示感谢。

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我做了两件事。第一个是在integer()中使用what作为readBin()参数会导致二进制文件被读取为带符号整数的向量。因此,获得的矢量包含负值,这会影响灰度。为了解决这个问题,我使用raw()作为what参数,然后使用as.integer()将向量转换为整数。

第二个变化是我使用rasterImage()函数而不是image()函数显示图像,因为前一个函数输出的图像对比度比原始图像高。