我正在嘗試使用imfreehand
創建一個用戶控制的二進制掩碼。我試圖讓用戶選擇多個區域而不是單個區域。一旦在圖像tophatImage
上繪製區域,所選區域的二進制版本將出現在圖像totalBinary
上。到現在爲止還挺好。如何使用imfreehand繪製多個二進制區域
問題是,當需要繪製下一個區域時,先前繪製的區域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
現在是工作,但是當我刪除一個區域,它似乎並沒有被更新到'totalBinary'出於某種原因並給出錯誤。 – Senyokbalgul
我在我的最後嘗試了它,它工作。輪廓和麪具都會更新。 – rayryeng
您的代碼不會刪除區域。它只附加。請使用此代碼更新您的帖子以刪除區域,我會看看我能做些什麼。 – rayryeng