阈值分割图像

阈值分割概念
阈值处理是指剔除图像内像素值高于一定值或者低于一定值的像素点。从而将一幅灰度图像处理为一幅二值图像,有效的实现前景和背景的分离。

二值化,顾名思义,就是将某张图像的像素改成只有两个值,其操作的图像也必须是灰度图。
阈值分割的常用技术

  1. 全局阈值分割

  2. 自适应局部阈值分割
    阈值分割的目的
    1、突出目标对象
    2、简化形态分析

3、增强对比
threshold函数
double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type);
src:输入图像。
dst:输出图像,与输入图像具有相同的大小和类型。
thresh:设定的阈值。
maxval:当 type 参数为 THRESH_BINARY 或 THRESH_BINARY_INV 时需要设定的最大值。
type:阈值分割的类型


**阈值法(**THRESH_BINARY)
阈值法就是通过设置一个阈值,将灰度图中的每一个像素值与该阈值进行比较,小于等于阈值的像素就 被设置为0(黑),大于阈值的像素就被设置为maxval,将原始图像处理为仅有两个值的二值图像。


反阈值法(THRESH_BINARY_INV)


**截断阈值法(**THRESH_TRUNC)
截断阈值法,指将灰度图中的所有像素与阈值进行比较,像素值大于阈值的部分将会被修改为阈值,小 于等于阈值的部分不变。换句话说,经过截断阈值法处理过的二值化图中的最大像素值就是阈值。


低阈值零处理(THRESH_TOZERO)
低阈值零处理,字面意思,就是像素值小于等于阈值的部分被置为0(也就是黑色),大于阈值的部分不变。


超阈值零处理(THRESH_TOZERO_INV)
超阈值零处理就是将灰度图中的每个像素与阈值进行比较,像素值大于阈值的部分置为0(也就是黑色),像素值小于等于阈值的部分不变。


OTSU****阈值法
OTSU算法是通过一个值将这张图分前景色和背景色(也就是灰度图中小于这个值的是一类,大于这个值的是一类)。
该方法使用的是聚类的思想,它把图像中所有像素点的像素值按灰度级分为两组。原则:
两组之间,灰度值差异最大。
每组之内,灰度值差异最小。
OTSU 阈值法通过以下步骤找到最佳阈值:

  1. 计算直方图:计算图像的灰度直方图。
  2. 计算类内方差和类间方差:对于每一个可能的阈值,计算分割后的两个类的方差。
  3. 选择最佳阈值:选择使类内方差最小(即类间方差最大)的阈值。
    参数type增加"cv2.THRESH_OTSU"参数。
    返回值ret是使用OTSU方法计算并得到的最优阈值。
    通过OTSU算法得到阈值之后,就可以结合上面的方法根据该阈值进行二值化,即使在计算出阈值后结合了阈值法和反阈值法。

注意:使用OTSU算法计算阈值时,组件中的thresh参数将不再有任何作用。


自适应局部阈值分割
与全局阈值法相比,自适应二值化更加适合处理亮度分布不均的图像。自适应二值化法能够根据图像的不同区域计算不同的阈值,从而更好地处理亮度不均匀的图像。这种方法的主要优势包括:

  1. 局部适应:自适应二值化法通过对每个小区域分别计算阈值,从而保留更多的细节。

  2. 细节保留:自适应二值化法通过计算局部区域的阈值,可以更好地保留图像中的细节。

  3. 灵活性:自适应二值化法提供了多种计算局部阈值的方法,例如均值法和高斯加权平均法等。
    adaptiveThreshold 函数
    adaptiveThreshold(src, dst, maxValue, adaptiveMethod, thresholdType, blockSize, C);
    src:输入图像,必须是单通道灰度图像。
    dst:输出图像,与输入图像 src 具有相同大小和类型。
    maxValue:阈值处理后最大值。
    adaptiveMethod:自适应阈值方法。可选择以下两种方法:
    ADAPTIVE_THRESH_MEAN_C`:在小区域内计算平均值作为阈值。
    ADAPTIVE_THRESH_GAUSSIAN_C :在小区域内计算高斯加权和作为阈值。
    thresholdType:阈值类型.
    THRESH_BINARY :大于阈值的像素值设置为 maxValue ,其余设置为 0。
    THRESH_BINARY_INV :大于阈值的像素值设置为 0,其余设置为 maxValue 。
    blockSize:指定计算阈值的邻域大小。

C:从计算得到的阈值中减去的常数值。用于微调二值化结果。
取均值**(ADAPTIVE_THRESH_MEAN_C)**
我们所用到的不断滑动的小区域被称之为核,比如3X3的小区域叫做3X3的核,并且核的大小都是奇数个,也就是3X3、5X5、7X7等。
加权求和**(ADAPTIVE_THRESH_GAUSSIAN_C)**
对小区域内的像素进行加权求和得到新的阈值,其权重值来自于高斯分布。
而在opencv里,当kernel(小区域)的尺寸为1、3、5、7并且用户没有设置sigma的时候(sigma <= 0),核值就会取固定的系数,这是一种默认的值是高斯函数的近似。

相关推荐
AI的探索之旅3 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
LaughingZhu3 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
猎头南楼3 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
高洁013 天前
未来三年,AI 落地的五个确定性判断一
人工智能·深度学习·机器学习·transformer·知识图谱
拉你进_教堂3 天前
小龙虾技能之【Parkinson‘s & Epileptic Behavior Recognition Skill | 帕金森癫痫行为识别技能】简介
人工智能·计算机视觉·多模态大模型·openclaw小龙虾技能
PascalXie3 天前
人形机器人的“眼睛“:多目视觉方案怎么选?
计算机视觉·机器人
`流年づ3 天前
人工智能学习笔记 - 补充
人工智能·笔记·深度学习·学习
普密斯科技3 天前
替代传统影像仪,摄像头磨切片测量新方案实测
计算机视觉·集成测试·测量
成为深度学习高手3 天前
CrossLinear:即插即用的跨相关嵌入,让线性模型也能用好外生变量
人工智能·python·深度学习·数据挖掘