【发布时间】:2015-06-16 23:44:17
【问题描述】:
我有 1 位深度的图像:
A = 灰度强度图像:UINT8
B = 使用im2bw 和阈值 b 分割的图像 A:逻辑
C = 使用 im2bw 和阈值 c 分割的图像 A:逻辑
D = 使用im2bw 和阈值 d 分割的图像 A:逻辑
E = 结果图像:DOUBLE
我引入了一个循环,比较 B、C、D (if/else) 并根据结果 E 填充 A 或 B 的值。
在此之前我创建了E=ones(800,800);
我读到uint8 的值介于 0 和 255(8 位)之间,double 在 64 位上有浮点(我不知道这意味着什么)。
事实上,E 看起来并不像它应该的那样,如果我将 A 或 E 更改为 double 或 uint8,要么我有一个全白的图像,要么是一个非常奇怪的图像。
我猜我的图像格式有问题,但我不知道如何或在哪里。
谢谢,
莎拉
【问题讨论】:
-
在尝试任何东西之前,将图像显示为
imshow(img,[])。如果图像在 Matlab 上是双倍的,它期望图像在 0-1 范围内。因此,如果您想在图像中添加uint8值,请将其除以 255 来插入。 -
@AnderBiguri 感谢您的提示,但是将要插入的 A 的值除以 255 不会改变图像 E。图像 E 仍然是黑白 (0,1) 图像,而它应该包含来自 A 的灰度值。还有其他想法吗?
-
是的,我建议的那个......如果 E 是双倍的,那么它包含从 0-1 的灰度值(从 0-1 意味着它也包含 0.452!)。因此,如果您希望 E 为双倍,则需要在将 A 的值保存到 E 时对其进行缩放。例如:
E(4,5)= 145/255。这将使 Matlab 正确绘制它,因为如果 E 上的值高于 1,matlab 将始终将其“四舍五入”为 1。 -
是的,我明白了。我实际上找到了出路,我将 E 创建为 uint8 以便 A 可以轻松填充它,我创建了一个由 B 逻辑值组成的新图像 F uint8 以便我可以使用 F 来填充 E。
-
好!然后波兰语,关闭问题或回答您自己的问题;)
标签: image matlab image-processing