在实现python代码时,二进制文件映像不会转换为清晰的图像

时间:2017-02-08 09:57:18

标签: python image matlab numpy matplotlib

我实现了一个python代码,它读取二进制图像文件以显示图像。图像不清楚,没有像我在MATLAB上实现类似代码时获得的那样。我在这里附上了两张图片:(img obtained using python; Original img using matlab code)。这是相同的python代码:

import numpy as np
from matplotlib import pylab as plt
from scipy import misc

A = np.fromfile('/home/shruthi/Desktop/1485999630.bin', dtype='int16', sep="")

A = A.reshape([1216, 1216])
imgplot = plt.imshow(A)
imgplot.set_cmap('gray')
plt.show()

我还附上了MATLAB代码供参考:

file= fid = fopen('1486445720.bin');
HDR = reshape(fread(fid,1216*1216,'uint16'),1216,1216);
fclose(fid);
HRGB = demosaic(uint32(HDR'),'rggb');                % Valid for Matlab 2016 and make sense only if HDR is double
RGB = tonemap(double(HRGB), 'AdjustLightness', [0.1 1],'AdjustSaturation', 8);

1 个答案:

答案 0 :(得分:0)

您可能想要尝试的第一件事是使用uint16代替int16

您的工作matlab代码表明您的原始数据以Bayer pattern编码,这意味着颜色通道以某种方式交错。 matlab demosaic函数分隔通道并返回更有用的表示。

你需要在你的python代码中做同样的事情。我没有找到一个“正式”的numpy函数,但你可以尝试使用/ adapt this