Opencv学习——图像阈值化
来源:互联网 发布:知妈妈乐疯狂 编辑:程序博客网 时间:2024/05/19 20:46
图像阈值化是最常用的图像处理方法,在很多领域应用广泛,机器视觉中产品的识别和定位中往往需要采用阈值处理使产品的特征更加明显,易于后续的处理。
一般阈值化可以分为两种:
- 全局阈值化
- 局部阈值化
全局阈值化
全局阈值化顾名思义就是对整个图像进行阈值处理,所以阈值的选取就显得格外的重要。一般可以借助图像的直方图来选择合适的阈值。全局阈值处理比较适合目标与背景有较明显像素值差别的图像。
Opencv中全局阈值化类型有以下几种:
需要说明的是还有一种阈值方式:
THRESH_OTSU 即大律法
大律法使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别来划分。
大律法可以找到图像中满足要求的全局阈值,然后再根据这个阈值使用上图所示的阈值类型进行阈值处理。
Opencv中阈值化的函数为:
double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)
其中type即为阈值类型。
局部阈值化
局部阈值化是一种图像自适应阈值处理方法,可以在图像的局部区域实现较好的阈值处理效果。
常用的局部自适应阈值有两种:
- 局部邻域块的均值
- 局部邻域块的高斯加权和
Opencv中局部自适应阈值处理函数为:
void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)
其中:
adaptiveMethod为自适应阈值方法,可选的方式有:
- ADAPTIVE_THRESH_MEAN_C
- ADAPTIVE_THRESH_GAUSSIAN_C
thresholdType为阈值类型,相比于全局阈值,自适应阈值化只有两种类型:
- THRESH_BINARY
- THRESH_BINARY_INV
blockSize为局部邻域块边长大小, C为从计算得到的均值或加权均值中减去的常量
示例代码
switch(type){ case 1: //全局二值化 threshold(img, dst_img, 100, 255, CV_THRESH_BINARY); break; case 2: //局部二值化(局部领域块均值) adaptiveThreshold(img, dst_img, 255, CV_ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, blocksize, constValue); break; case 3: //局部二值化(局部邻域块高斯加权和) adaptiveThreshold(img, dst_img, 255, CV_ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, blocksize, constValue); break; case 4: //大律法Otus threshvalue = threshold(img, dst_img, threshvalue, 255, CV_THRESH_OTSU); threshold(img, dst_img, threshvalue, 255, CV_THRESH_BINARY); break;}
结果如图:
全局阈值化
邻域均值局部阈值化
邻域高斯加权和局部阈值化
大律法
大律法得到的全局阈值为157。
- Opencv学习——图像阈值化
- Opencv学习笔记-----图像阈值化处理
- opencv学习之图像阈值化
- 【OpenCV学习笔记】十六、图像阈值化
- opencv-----图像阈值化
- openCV—Python(10)——图像阈值化处理
- openCV—Python(10)——图像阈值化处理
- OpenCV-Python——图像阈值
- OpenCV图像的阈值化
- OpenCV实现图像阈值化
- opencv(14)---图像阈值化
- 学习OpenCV---阈值化
- openCV学习笔记(8)-- 图像阈值化
- opencv学习笔记 第二篇 图像阈值化
- opencv——阈值化
- 有关opencv的学习(13)—使用固定阈值处理图像
- 有关opencv的学习(14)—使用自适应阈值处理图像
- opencv学习——简单阈值二值化
- leetcode解题报告19. Remove Nth Node From End of List
- 2017 山东理工第九届校赛 J LL
- Text Generation With LSTM Recurrent Neural Networks in Python with Keras
- 1.3总结
- JS原生数据类型检测
- Opencv学习——图像阈值化
- USCAO-Section 1.3 Ski Course Design
- C/C++中检查变量类型函数typeid()
- POJ 1735 A Game on the Chessboard 笔记
- 面试题30最小的k个数
- new Date() 之高考倒计时
- java核心技术第三章(笔记)
- cnpm安装
- ajax请求返回值(已解决)