我正在尝试使用imfreehand
创建用户控制的二进制掩码。我试图允许用户选择多个区域而不是单个区域。在图像tophatImage
上绘制区域后,所选区域的二进制版本将显示在图像totalBinary
上。到目前为止一切都很好。
问题在于,当需要绘制下一个区域时,tophatImage
中先前绘制的区域消失。这可能是一个问题,因为用户无法看到他/她绘制的区域并且无法删除绘制的区域。 <{1}}中先前绘制的区域的二进制版本保持不变,因此这不是问题。
我认为问题源于totalBinary
内的行subplot(1,2,1); imshow(tophatImage)
。每次需要绘制新区域时,图像for-loop
都会重置。正如您在下面的第一张图片中看到的那样,没有像第三张图像中那样保留绘制的图像。
原始错误代码
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
答案 0 :(得分:1)
非常简单的错误。在您的循环中,在您致电f.input
后,请移除对subplot(1,2,1);
的呼叫。这样可以删除图形内容并仅显示图像本身。如果您希望保留imshow(tophatImage);
时由您绘制的轮廓,请不要拨打imfreehand
。使用imshow
时,轮廓应保留,直到您关闭图形或更改此imfreehand
中的内容。
绝对确定你知道我在说什么:
subplot