【发布时间】:2016-07-27 23:51:33
【问题描述】:
我正在尝试使用imfreehand 创建用户控制的二进制掩码。我试图允许用户选择多个区域而不是单个区域。在图像tophatImage 上绘制区域后,所选区域的二进制版本将出现在图像totalBinary 上。到目前为止一切顺利。
问题是,当需要绘制下一个区域时,tophatImage中之前绘制的区域消失了。这可能是一个问题,因为用户无法看到他/她绘制了哪些区域,也无法删除绘制的区域。 totalBinary 中先前绘制的区域的二进制版本保持不变,所以这不是问题。
我认为问题出在for-loop 内的subplot(1,2,1); imshow(tophatImage) 行。每次需要绘制新区域时,都会重置图像 tophatImage。正如您在下面的第一张图片中看到的那样,没有像第三张图片中那样剩余的绘制图像。
原始错误代码
subplot(1,2,1); imshow(tophatImage)
hFH = imfreehand();
binaryImage = createMask(hFH);
totalBinary = false(size(histogramEq));
for k = 1:5
totalBinary = totalBinary | binaryImage;
subplot(1,2,2); imshow(totalBinary); drawnow
subplot(1,2,1); imshow(tophatImage)
hFH = imfreehand();
binaryImage = createMask(hFH);
end
更正的代码
使用更正后的代码,我怎样才能使从tophatImage 中删除一个区域时,它会更新为totalBinary?
for k = 1:5
totalBinary = totalBinary | binaryImage;
subplot(1,2,2); imshow(totalBinary); drawnow
subplot(1,2,1); %imshow(tophatImage) % <-- Remove this
hFH = imfreehand();
binaryImage = createMask(hFH);
end
【问题讨论】:
标签: matlab image-processing binary drawing