使用OpenCV进行二值图像中的细线消除

4
我目前在使用OpenCV来检测二进制图像中的斑点。我想删除小线条,而不改变大对象。
以下是一个例子:原始图像为: Original image 我想将其转换为以下图像: Transformed image “Opening”方法不起作用,因为应用它时三角形的边缘被切断了。是否有其他方法可以去除线条,而不丢失大三角形的信息?
1个回答

4

使用腐蚀算法来去除这种噪声,

代码如下:

 Mat src;//load source
 Mat dst;//destination image
 Mat element = getStructuringElement(  MORPH_RECT,Size(5,5), Point( -1, -1 ) ); // kernel performing drode 
 erode( src, dst, element );

编辑

在这里添加@Bull的评论,因为它是更合适的方法,建议使用腐蚀后再膨胀可以让你接近你想要的结果

输入图片描述


“Erode”也会减小三角形的大小,有没有一种方法可以去除线条并保留三角形的原始大小? - Bernhard Heinzelreiter
请查看Morphology Transformations - Haris
2
是的,但是先腐蚀再膨胀会让您非常接近您想要的结果。 - Bull

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接