代码之家  ›  专栏  ›  技术社区  ›  onavarro

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

  •  0
  • onavarro  · 技术社区  · 6 年前

    我想显示存储为二进制文件的灰度图像。我尝试了图像和光栅图像功能,但输出的质量比原始的差。下面是我的代码示例:

    finfo=file.info(“image_file”)。
    
    toread=file(“image_file”,“rb”)。
    
    image_data=readbin(toread,integer(),size=1,n=finfo$size,endian=“little”)。
    
    img_m<-矩阵(图像数据,nrow=480,ncol=640)
    
    图像(数据_m,轴=假,col=灰色(seq(0,1,length=256)))
    < /代码> 
    
    

    上面代码的输出如下所示:

    但是,原始图像如下所示:

    我使用image.frombytes函数对python进行了同样的尝试,它正确地显示了图像。我没能和R做同样的事。

    更新:我将前150000像素设置为0,只是为了看看它是否会正确地影响显示,而不是黑色像素,我得到了灰色像素。图片如下:

    有人知道正确显示它的正确函数吗,或者我的代码中缺少什么来获得正确的图像?

    我很感激你对这件事有任何的见解。原始的。下面是我的代码示例:

    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做同样的事。

    更新:我将前150000像素设置为0,只是为了看看它是否会正确地影响显示,而不是黑色像素,我得到了灰色像素。图片如下:

    enter image description here

    有人知道正确显示它的正确函数吗,或者我的代码中缺少什么来获得正确的图像?

    我很欣赏你对此的任何见解。

    1 回复  |  直到 6 年前
        1
  •  0
  •   onavarro    6 年前

    我改变了两件主要的事情来解决这个问题。第一个是使用 integer() 作为 what 中的参数 readBin() 使二进制文件作为有符号整数的向量读取。因此,得到的向量包含负值,这会影响灰度。为了解决这个问题,我用 raw() 作为 什么 参数,然后将向量转换为整数 as.integer() .

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