1

我有一个返回grayscale图像的程序。但是,当我尝试编写图像时,它看起来完全是black. 这是为什么?如何编写图像并获得预期结果?

谢谢。

4

3 回答 3

3

首先检查您的数据类型。您可以通过例如double()uint16()等来转换数据的类型。(查看类型转换的帮助)。这是一个示例,您如何将值重新调整为 uint16 的强度范围,无符号整数具有 ~65k 可能的不同值。铸造当然会导致强度值的精度降低。

new_img(:,:) = uint16((new_img(:,:)./max(max(new_img(:,:),[],1)))*65536);

之后,您应该能够将数据写入文件。

于 2013-11-13T09:05:30.137 回答
1

确保您的灰度图像属于正确的类别。此外检查生成图像中的值。如果它们太低,所有东西都会显示为黑色。如果您可以提供更具体的信息,则可能会给出更详细的答案。

于 2013-11-13T08:49:53.477 回答
0

如果您正在处理二值图像(在转换为灰度之前)并且您将其转换为灰度,那么您会突然将像素范围从 [0, 1] 更改为 [0, 255]。所以二进制图像中的值'1'是完全白色的,但在灰度图像中几乎是黑色的。

尝试这个:

img = imread('image_name.jpg');
imshow(img*50)

它可以确保您的图像是黑色的,或者只是它的像素值不合适。

于 2013-11-13T11:01:38.240 回答