我正在尝试验证雕刻机的黑白图像(更多的是剪贴画图像 - 不是照片)。
我需要考虑的主要事情之一是区域的大小(或线条的宽度),因为机器无法处理太细的线条 - 所以我需要找到比给定阈值更细的区域。
以此图为例:
竖琴的琴弦可能太细而无法雕刻。
我正在阅读有关 Matlab 和 OpenCV 的内容,但图像处理是我第一次学习的领域。
我是一名 Java / C# 开发人员,因此使用其中一种语言完成的实现对我来说是最好的,但任何方向都将不胜感激。
解决方案使用matlab /questions/tagged/matlab利用图像形态学运算 http://www.mathworks.com/help/images/morphology-fundamentals-dilation-and-erosion.html#f18-24720:
定义允许区域的最小厚度,例如,minThick=4
BW = imread('https://i.stack.imgur.com/oXKep.jpg');
BW = BW(:,:,1) < 128; %// convert image to binary mask
se = strel('disk', minTick/2, 0); %// define a disk element
eBW = imerode( BW, se ); %// "chop" half thickness from mask
deBW = imdilate( eBW, se ); %// dilate the eroded mask
腐蚀和膨胀应该留下比minThick
不变,但会去除薄区域
invalidArea = BW & ~deBW; %// pixels that are in BW but not in deBW
Resulting with:
您可以阅读更多有关imdilate http://www.mathworks.com/help/images/ref/imdilate.html and imerode http://www.mathworks.com/help/images/ref/imerode.html在链接的文档中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)