OPENCV之自适应阈值分割:OTSU法和TRIANGLE法

OPENCV之自适应阈值分割:OTSU法和TRIANGLE法

在用opencv做机器视觉项目过程中用到了自适应阈值分割,起初是用一张背景为暗,目标为亮的图片(如下面左图)进行自适应阈值分割,后来用的是一张背景为亮,目标为暗的图片(如下面右图)进行自适应阈值分割。

                          

对这两张图片用同一种自适应阈值分割方法却得到了不同的分割效果:

1、OTSU法

OTSU法叫做大律法,其定义以及实现过程原理网上有许多总结,感兴趣可自行查看。下面展示一下使用OTSU方法对两个图像分割的结果:

代码:

	Mat img_1 = imread("C:\\Users\\SUNSONG\\Desktop\\图片\\Image_2.BMP");
	Mat img_2 = imread("C:\\Users\\SUNSONG\\Desktop\\图片\\Image_13.BMP");
	Mat gray_img1, thresh_img1,gray_img2, thresh_img2;
	cvtColor(img_1, gray_img1, COLOR_BGR2GRAY);
	cvtColor(img_2, gray_img2, COLOR_BGR2GRAY);
	threshold(gray_img1, thresh_img1, 0, 255, THRESH_OTSU);
	threshold(gray_img2, thresh_img2, 0, 255, THRESH_OTSU);
	imshow("测试图1", thresh_img1);
	imshow("测试图2", thresh_img2);

结果:

注:OTSU法可以与其它二值化一起使用,如:threshold(img, 0, 255, THRESH_OTSU + THRESH_BINARY),代表先用OTSU算法计算出阈值后再根据THRESH_BINARY规则进行分割。

2、TRIANGLE法

TRIANGLE法叫做三角法,具体解释可参考此文章:图像处理之三角法图像二值化

代码:

实现代码如OTSU法中所示,只不过把阈值分割方法由THRESH_OTSU改为THRESH_TRIANGLE即可

结果:

3、总结

在背景中提取亮目标,TRIANGLE法优于OTSU法,而在亮背景中提取暗目标,OTSU法优于TRIANGLE法,至于如何使用还要按照具体使用情况来定。

由于刚刚接触OPENCV,了解的还不算透彻,只能做出上述浅显的总结。

猜你喜欢

转载自blog.csdn.net/Kevin_Sun777/article/details/111193589