阈值分割方法总结_阈值计算公式

(3) 2024-08-13 13:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
阈值分割方法总结_阈值计算公式,希望能够帮助你!!!。

阈值是界限的意思,阈值分割就是以一个合适的像素值作为界限将图像处理成高对比度、容易识别的图像的一种方法。
threshold()

double cv::threshold( cv::InputArray src, // 输入图像 cv::OutputArray dst, // 输出图像 double thresh, // 阈值 double maxValue, // 向上最大值 int thresholdType // 阈值化操作的类型 ) 

阈值分割方法总结_阈值计算公式_https://bianchenghao6.com/blog__第1张
举个例子理解下thresholdType,拿第一种方法为例。像素值如果大于阈值,则把像素值变成255,否则,变成0.这样以来,就把原图变成黑白两色,对比度明显。

threshold(image, t_image,120, 255,CV_THRESH_BINARY); 

自适应阈值分割

void cv::adaptiveThreshold( cv::InputArray src, // 输入图像 cv::OutputArray dst, // 输出图像 double maxValue, // 向上最大值 int adaptiveMethod, // 自适应方法,平均或高斯 int thresholdType // 阈值化类型 int blockSize, // 块大小 double C // 常量 ); 

adaptiveThreshold()支持两种自适应方法,cv::ADAPTIVE_THRESH_MEAN_C(平均)和cv::ADAPTIVE_THRESH_GAUSSIAN_C(高斯)。

 adaptiveThreshold(image, src, 255, ADAPTIVE_THRESH_GAUSSIAN_C,THRESH_BINARY,5,20); 

自适应阈值不用自己选择,该函数根据图像情况自己设定。
阈值分割方法总结_阈值计算公式_https://bianchenghao6.com/blog__第2张
该图是经canny检测之后的阈值分割图。

阈值分割还有一种方法,直接说明:

Mat image = imread("D:\\program\\bu1.png",0);//读入模板图 imshow("原图",image); waitKey(0); Mat dstImg(image.size(), CV_8UC3, Scalar::all(0));//纯黑图像 int u1 = image.rows;//阈值化处理 int u2 = image.cols; for (int i = 0; i < image.rows; i++) { for (int j = 0; j < image.cols; j++) { sum = sum + image.at<uchar>(i, j); } } int u = u1*u2; int average = (int)sum/u*2; threshold(image, t_image, average, 255,CV_THRESH_BINARY); Canny(src,t_image,50,50); imshow("阈值分割图",t_image); waitKey(0); 

该方法简单明了,阈值取值适中,不错。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复