码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV二值化cvThreshold和自适应二值化cvAdaptiveThreshold及Otsu

时间:2015-04-03 13:33:52      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:opencv   二值化   otsu   

阈值化函数:

double cvThreshold(constCvArr* src, CvArr* dst, double threshold, double max_value,int threshold_type)

参数:  

src –原始数组 (单通道 , 8-bit of 32-bit 浮点数)。

dst –输出数组,必须与 src 的类型一致,或者为 8-bit。

thresh –阈值。

max_value –使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值。

threshold_type –对图像取阈值的方法。

threshold_type=CV_THRESH_BINARY:

dst(x,y) = max_value, ifsrc(x,y)>threshold

0, otherwise.

threshold_type=CV_THRESH_BINARY_INV:

dst(x,y) = 0, ifsrc(x,y)>threshold;

dst(x,y) = max_value, otherwise.

threshold_type=CV_THRESH_TRUNC:

dst(x,y) = threshold, ifsrc(x,y)>threshold;  

dst(x,y) = src(x,y), otherwise.

threshold_type=CV_THRESH_TOZERO:

dst(x,y) = src(x,y), if(x,y)>threshold ; 

dst(x,y) = 0, otherwise.

threshold_type=CV_THRESH_TOZERO_INV:

dst(x,y) = 0, ifsrc(x,y)>threshold ; 

dst(x,y) = src(x,y), otherwise.

threshold_type可以使用CV_THRESH_OTSU类型,这样该函数就会使用大律法OTSU得到的全局自适应阈值来进行二值化图片,而参数中的threshold不再起作用。

如:cvThreshold(workImg,workImg,0, 255, CV_THRESH_OTSU|CV_THRESH_BINARY)

 

自适应阈值函数:

voidcvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value,
                          intadaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,
                          intthreshold_type=CV_THRESH_BINARY,
                          int block_size=3, double param1=5 );

voidcvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value,

                          intadaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,

                          intthreshold_type=CV_THRESH_BINARY,

                          int block_size=3, double param1=5 );

参数:

src-输入图像.

dst-输出图像.

max_value-使用 CV_THRESH_BINARY 和CV_THRESH_BINARY_INV 的最大值.

adaptive_method-自适应阈值算法使用:CV_ADAPTIVE_THRESH_MEAN_C 或 CV_ADAPTIVE_THRESH_GAUSSIAN_C .

threshold_type-取阈值类型:必须是CV_THRESH_BINARY或者CV_THRESH_BINARY_INV.

block_size-用来计算阈值的象素邻域大小: 3, 5, 7, ...

param1-与方法有关的参数。对方法 CV_ADAPTIVE_THRESH_MEAN_C 和 CV_ADAPTIVE_THRESH_GAUSSIAN_C, 

它是一个从均值或加权均值提取的常数,尽管它可以是负数。

对方法 CV_ADAPTIVE_THRESH_MEAN_C,先求出块中的均值,再减掉param1。

对方法 CV_ADAPTIVE_THRESH_GAUSSIAN_C ,先求出块中的加权和(gaussian),再减掉param1。

block_size比较小的时候,相当于提取边缘。

 

结果对比:

技术分享


阈值化结果如下:

技术分享

Otsu结果如下:

技术分享

自适应阈值结果如下:

技术分享



OpenCV二值化cvThreshold和自适应二值化cvAdaptiveThreshold及Otsu

标签:opencv   二值化   otsu   

原文地址:http://blog.csdn.net/lsh_2013/article/details/44853393

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!