*图像阈值化 可以根据灰度差异来分割图像不同的部分
*阈值化处理的图像一般为单通道图像(灰度图)
*阈值化参数的设置可以使用滑动条来debug
*阈值化处理容易受到光照处理,处理时应注意
固定阈值:threshold()
自适应阈值:adaptiveThreshold()
1)固定阈值————threshold()
给定阈值进行阈值操作得到二值图(0,1两类值),可以过滤掉灰度值过大或过小的点
double threshold(InputArray src,OutputArray dst,double thresh,double maxval,int type);
**src:单通道图像(灰度图或者二值图)
**dst:输出图像要求和src一样的尺寸和类型
**thresh :给定的阈值
**maxval:第五个参数设置为CV_THRESH_BINARY或CV_THRESH_BINARY_INV
阈值类型的最大值
第五个参数阈值类型取值如下
CV_THRESH_BINARY=0;
CV_THRESH_BINARY_INV=1;
CV_THRESH_TRUNC=2;
CV_THRESH_TOZERO=3;
CV_THRESH_TOZERO_INV=4;
2)自适应阈值—-adaptiveThreshold()
对矩阵采用自适应阈值操作,自适应阈值是根据像素的领域块的像素值分布来确定该像素位置上的二值化阈值
void adaptiveThreshold(InputArray src,OutputArray dst,double maxValue,int adaptiveMethod,int thresholdType,int blockSize,double C);
**src:单通道图像(灰度图或二值图)
**dst:输出图像要求和src一样的尺寸和类型
**maxValue使用CV_THRESH_BINARY 和CV_THRESH_BINARY_INV的最大值
**adaptiveMathod :指定自适应阈值算法,可取值为CV_ADAPTIVE_THRESH_MEAN_C或者CV_ADAPTIVE_THRESH_GAUSSIAN_C
**thresholdType:取阈值类型取值必须是CV_THRESH_BINARY,CV_THRESH_BINARY_INV二者之一
blockSize:用来计算阈值的邻域大小,3,5,7,9,
C:减去平均或加权平均后的常数值
thresholdType=CV_THRESH_BINARY
dst(x,y)={
maxValue ,if(src(x,y)>T(x,y)
0 otherwise
}
thresholdType=CV_THRESH_BINARY_INV:
dst(x,y)={
0 if(src(x,y)>T(x,y))
macValue otherwize
}
其中T(x,y)为分别计算每个单独像素的阈值 ,取值如下:
^^对方法CV_ADAPTIVE_THRESH_MEAN_C,先求出块中的均值,再减去C
^^对方法CV_ADAPTIVE_THRESH_GAUSSIAN_C,先求出块中的加权和(gaussian ),再减去C