1

我计算了一个值在 0 到 255 之间的图像。当我使用 imageview() 时,图像以灰度级正确显示,但是当我想保存此图像或使用 imshow 显示它时,我有一个白色图像,或者有时会出现一些黑色像素:

带有 imshow() 的图像,当我保存时它看起来一样

而使用 imageview():

在此处输入图像描述

有人能帮我吗?

4

2 回答 2

6

我认为您应该imshow(uint8(image));在显示图像之前使用它。

于 2014-03-15T19:54:53.063 回答
4

Matlab 期望图像类型double在 0..1 范围内,图像uint8在 0..255 范围内。您可以自己转换范围(但在此过程中更改值),进行显式转换(并可能降低精度)或指示 Matlab 使用在图像矩阵中找到的最小值和最大值作为白色和黑色值以缩放到何时可视化。

请参见以下示例,其中包含uint8Matlab 中的图像:

im = imread('moon.tif');
figure; imshow(im);
figure; imshow(double(im));
figure; imshow(double(im), []);
figure; imshow(im2double(im));
于 2014-03-15T22:20:50.013 回答