CV学习笔记(十二):二值化操作

2020-03-19 20:37:09 浏览数 (1)

在上一篇文章我们学习了模板匹配,在这一篇文章中,我们将会学习图像二值化

一:图像二值化的基本原理

图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

二:图像二值化的基本操作

我们使用OpenCV中的函数来进行图像二值化操作,在OpenCV中图像二值化分为普通图像二值化和局部阈值化。这两部分我们分别使用threshold和adaptiveThreshold函数来实现。

代码如下:

现在我们分析一下代码:

①:全局阈值

在这里我们使用的是threshold函数,函数原型为

threshold(src, thresh, maxval, type[, dst])

src参数表示输入图像(多通道,8位或32位浮点)。 thresh参数表示阈值。 maxval参数表示与THRESH_BINARY和THRESH_BINARY_INV阈值类型一起使用设置的最大值。 type参数表示阈值类型。 retval参数表示返回的阈值。若是全局固定阈值算法,则返回thresh参数值。若是全局自适应阈值算法,则返回自适应计算得出的合适阈值。 dst参数表示输出与src相同大小和类型以及相同通道数的图像。

关于type的分析借鉴网上的一篇博客,写的很好:

阈值类型图示:

②:局部阈值

OpenCV的adaptiveThreshold函数进行局部阈值。

函数原型为:adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst])

src参数表示输入图像(8位单通道图像)。 maxValue参数表示使用 THRESH_BINARY 和 THRESH_BINARY_INV 的最大值. adaptiveMethod参数表示自适应阈值算法,平均 (ADAPTIVE_THRESH_MEAN_C)或高斯(ADAPTIVE_THRESH_GAUSSIAN_C)。 thresholdType参数表示阈值类型,必须为THRESH_BINARY或THRESH_BINARY_INV的阈值类型。 blockSize参数表示块大小(奇数且大于1,比如3,5,7........ )。 C参数是常数,表示从平均值或加权平均值中减去的数。 通常情况下,这是正值,但也可能为零或负值。

三:运行结果

图为不同的阈值处理方式

四:引用资料

1:OpenCV—固定阈值门限分割cv::threshold

CSDN-专业IT技术社区-登录​blog.csdn.net

2:阈值化操作——cv::threshold()与cv::adaptiveThreshold()详解

CSDN-专业IT技术社区-登录​blog.csdn.net

0 人点赞