OpenCV图像阈值分割、二值化

在OpenCV中图像总共有5种图像二值化的方法,而在进行图像二值化时最重要的就是确定分割的阈值,阈值确定的方法主要有两类:全局阈值和自适应阈值。而在全局阈值和自适应阈值下面又有很多方法,本文将对这些方法进行详细讲解.

OpenCV图像阈值分割、二值化

一、图像二值化

THRESH_BINARY和THRESH_BINARY_INV是最常用的两种阈值类型,它们分别用于生成标准的二值图像和反转的二值图像。其他类型在某些特定场景下可能也会有用,但使用频率相对较低。

cpp 复制代码
 double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );

1、THRESH_BINARY

这是最基本的阈值类型。如果像素值高于阈值,则将其设置为maxval,否则设置为0。

公式:dst(x, y) = maxval if src(x, y) > thresh else 0

2、THRESH_BINARY_INV

与THRESH_BINARY相反。如果像素值低于阈值,则将其设置为maxval,否则设置为0。

公式:dst(x, y) = maxval if src(x, y) <= thresh else 0

3、THRESH_TRUNC

如果像素值高于阈值,则将其截断为阈值,否则保持不变。

公式:dst(x, y) = thresh if src(x, y) > thresh else src(x, y)

4、THRESH_TOZERO

如果像素值高于阈值,则将其截断为阈值,否则保持不变。

公式:dst(x, y) = thresh if src(x, y) > thresh else src(x, y)

5、THRESH_TOZERO_INV

如果像素值低于阈值,则保持不变,否则设置为0。

公式:dst(x, y) = src(x, y) if src(x, y) <= thresh else 0

一、全局阈值

1、均值法

很多时候不会使用均值法确定的阈值,因为均值并不能真实的反应出图像的像素分布情况。由此我们将使用下面的OTSU(直方图统计)方法确定阈值。

2、OTSU(直方图)

OTSU 阈值法是由日本学者大津于1979年提出的一种确定图像二值化分割阈值的优化算法。它的基本思想是通过最大化前景和背景之间的类间方差来确定最佳阈值。

原理

假设图像有 L 个灰度级(0到L-1),n_i 表示灰度级为 i 的像素数,N 是图像中总的像素数。

灰度级 i 的概率 p_i = n_i / N。

选择一个阈值 T,将图像分为两组 C0(0到T)和 C1(T+1到L-1)。

计算两组的权重 w0 和 w1,以及平均灰度级 μ0 和 μ1。

计算类间方差 σ^2 = w0 * w1 * (μ0 - μ1)^2。

遍历所有可能的阈值 T,找到使 σ^2 最大的那个 T,即为最佳阈值。

优点 :算法简单,当目标和背景的大小相差不大时,能够有效地对图像进行二值化。
缺点:对于直方图有双峰或多峰的图像,或者目标和背景大小相差悬殊时,效果可能不佳。

3、三角法

三角法阈值是一种基于图像灰度直方图的简单阈值选择方法。

原理

计算图像的灰度直方图。

在直方图上,从最高峰(通常代表最频繁出现的灰度级)开始,分别向左右两侧搜索,直到找到一个谷值(局部最小值)为止。

将这两个谷值对应的灰度级作为阈值的候选范围。

在这个范围内选择一个阈值,通常选择两个谷值之间的灰度级的中点作为阈值。

优点 :算法简单快速,适用于直方图具有明显双峰且谷值较深的图像。
缺点:对于直方图不具有明显双峰或谷值不深的图像,效果可能不佳。

二、自适应阈值

自适应阈值法是一种根据图像的局部特性动态调整阈值的方法。

原理

对于图像中的每个像素,考虑其周围的一个邻域(如一个矩形窗口)。

计算该邻域内的像素灰度值的统计量(如均值、中值、高斯加权和等)。

根据这个统计量和预设的参数(如常数、系数等),计算出一个局部阈值。

将当前像素的灰度值与这个局部阈值进行比较,根据比较结果确定该像素的二值化输出。

优点 :能够处理光照不均或背景变化的图像,提高二值化的鲁棒性。
缺点:计算量相对较大,可能不适用于实时性要求很高的场景。另外,对于噪声较多的图像,可能需要额外的滤波处理。

相关推荐
qwerasda12385218 小时前
基于cornernet_hourglass104的纸杯检测与识别模型训练与优化详解
人工智能·计算机视觉·目标跟踪
jay神20 小时前
指纹识别考勤打卡系统 - 完整源码项目
人工智能·深度学习·机器学习·计算机视觉·毕业设计
罗兰Yolanda21 小时前
影视后期全流程的核心软件及工作站配置方案推荐
计算机视觉·音视频
AI即插即用21 小时前
即插即用系列 | CVPR 2025 MK-UNet: 多核深度可分离卷积,重新定义轻量级医学图像分割
图像处理·人工智能·深度学习·神经网络·计算机视觉·视觉检测
Struart_R21 小时前
VideoLLM相关论文(二)
计算机视觉·大语言模型·强化学习·多模态·r1
2501_9361460421 小时前
柿子目标检测实战:YOLO11-HSFPN网络优化与性能分析
人工智能·目标检测·计算机视觉
_codemonster21 小时前
手语识别及翻译项目实战系列(一)环境准备
人工智能·python·计算机视觉
AAD5558889921 小时前
【YOLO13项目实战】(5)镰刀目标检测与识别_C3k2_MBRConv3改进版
人工智能·目标检测·计算机视觉
wfeqhfxz25887821 天前
柿子与桃子目标检测识别-YOLO11-seg-HGNetV2改进实现
人工智能·目标检测·计算机视觉
ASD123asfadxv1 天前
【医疗影像检测】VFNet模型在医疗器械目标检测中的应用与优化
人工智能·目标检测·计算机视觉