【发布时间】:2015-06-01 01:36:01
【问题描述】:
您好,我得到了如下蒙版,我尝试分割左侧面板。
我使用了分水岭方法,所以希望它会为左侧面板返回一个值。
D = bwdist(~mask);
imshow(D,[],'InitialMagnification','fit');
Di = -D;
Di(~mask) = -Inf;
L = watershed(Di);
Lrgb = label2rgb(L,'jet');
imshow(Lrgb);
但是我得到了这个,任何人都可以帮助我,或者你在细分方面有更好的建议。
【问题讨论】:
-
你试过eroding图片吗?我认为这应该可以让您将它们充分分开,以便
bwconncomp实际上会返回 2 个对象。 -
@ABC 我在回答中这样做了。开口是先腐蚀后膨胀。
-
是的,但是添加组件“line”只会添加更多不需要的处理,而直接在此图像上腐蚀是一种不太复杂的方法,应该可以得到所需的答案。此外,根据应用程序,可能不需要膨胀。不管怎样,给猫剥皮的方法有很多:)
-
@ABC 你会用什么来腐蚀图像?同意有很多方法可以做到这一点。如果您确实有更好的主意,我希望看到您发布答案。如果没有,不用担心。万事如意!
-
@rayryeng,我为您发布了答案。您基本上创建自己的自定义结构元素,而不是 matlab 的默认元素(ei、'disk'、'line' 等)并用它来腐蚀。这很简单。使用相同的蒙版分隔对象后,您可以向后扩展,并且页面将保持分离状态。我更喜欢这种方法,因为您对操作有更多的控制权,并且您对如何侵蚀或扩张有更直观的感觉,但在这种情况下,它并没有太大的区别——而且您的解决方案只执行以及:)