【问题标题】:Image format issue MATLAB图片格式问题MATLAB
【发布时间】: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 更改为 doubleuint8,要么我有一个全白的图像,要么是一个非常奇怪的图像。

我猜我的图像格式有问题,但我不知道如何或在哪里。

谢谢,

莎拉

【问题讨论】:

  • 在尝试任何东西之前,将图像显示为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


【解决方案1】:

我实际上找到了出路,我将 E 创建为 uint8,以便 A 可以轻松填充它。 我还创建了一个由 B logical 值组成的新图像“F”uint8,因此我可以使用 F(来自 B)来填充 E。

【讨论】:

    猜你喜欢
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多