【发布时间】:2013-09-20 17:42:23
【问题描述】:
我有一张噪声很大的图像 (256x256 uint8),所以我制作了一个包含值 0 和 1 的 roi,真实图像标记为 1,噪声标记为 0。
如何使用我制作的 roi 提取真实图像?
应该是这样的:如果坐标x,y根据roi为1,则保留它,如果不是,则不要将其添加到新图像中。
提前致谢。
【问题讨论】:
标签: matlab
我有一张噪声很大的图像 (256x256 uint8),所以我制作了一个包含值 0 和 1 的 roi,真实图像标记为 1,噪声标记为 0。
如何使用我制作的 roi 提取真实图像?
应该是这样的:如果坐标x,y根据roi为1,则保留它,如果不是,则不要将其添加到新图像中。
提前致谢。
【问题讨论】:
标签: matlab
我认为这可能很简单
yourImage(roi)
或
newImage = NaN(size(yourImage)); %Or perhaps zeros instead of NaN
newImage(roi>0) = yourImage(roi>0)
如果这不起作用,请提供您的可变尺寸。
以下是它应该如何工作的示例:
% Suppose this is your image
yourImage = uint8(round(255*rand(256)));
% Suppose this is the mask of zeros and ones you created
roi = uint8(yourImage < 10);
newImage = NaN(size(yourImage));
newImage(roi>0) = yourImage(roi>0);
【讨论】:
uint8,尝试使用 roi>0 而不是 roi 是否有帮助(将其转换为 logical 的紧凑方式)
dbstop if error 查找发生错误的行以及当时的变量。另请参阅我的更新答案,了解如何完成此操作的示例。