MATLAB 16位图问题

我读取一副16unit的灰度图像(基本为黑色),将之进行切割存入另一文件名中,可是却只能存为double类型的8位图,而且新图像所有像素点都为值为255的亮点。我想问一下可有高手知道原因?

如果不知道,可不可以告诉我如果设定用imwrite将图像存成16位的灰度图?

最后还有一个问题,图像是16位的灰度图,为什么MATLAB用imread打开后矩阵中每个像素还是0-255?不应该是0-65536么?

非常感谢!好的再加分!

关于这个问题,我觉得非常好。因为在上个学期学习《图像处理》这门课时,我也觉得这是个非常恼人的问题,我的回答希望对你有帮助:

关于你的问题不知道理解的对不对,简单而言,就是对于取值为0~65536的矩阵,当作为图像处理是如何存取。首先看第二个问题:

2,imwrite 可以存为uint16,也可以存为uint8,这取决于你的矩阵元素是哪种类型的值。并且当存储时,并不是任何格式的图像都可以使uint16,即取值为0~6536.例如,bmp就不行;jpg,png,tiff好像可以。下面是一个简单例子:
————————————————————
a = rand(32,32)*65536;
b = uint16(round(a));
imshow(b)
imwrite(b,'yy1.png');
————————————————————

这时第三个问题就好解决了。

3,如果图像真是16位的,则可以直接imread,例如:

————————————————————
c = imread('yy1.png');
c
————————————————————

关于第一个问题我觉得有点模糊,我想应该是uint16和uint8格式的问题,只要格式变换正确,应该没问题。
温馨提示:答案为网友推荐,仅供参考
相似回答