【图像处理】-1.图像二值化

1. 阈值概念

阈值:根据这个值将整张图像分割成不同的前后背景,在二值化处理中,有固定阈值和自适应阈值两种形式;

两种阈值使用情况区分:

  1. 当图像质量好,且目标和背景容易区分时,可以使用固定阈值;
  2. 当图像质量差,且阴影过度,虽然使用大津法和三角形法也可以自己寻找阈值,但整个图像阈值都是相同的,最终分割效果较差;
  3. 所以如果是将一整个图像分割成几行几列,对每个部分再运用大津法或三角形法,最后再将图像整合,这样每一个部分的阈值就不相同,分割效果也会越好。
2. opencv中的固定阈值二值化threshold()
cpp 复制代码
   double threshold(                  
                    InputArray src,
                    OutputArray dst,
                    double thresh,
                    double maxval,
                    int type 
                   )
3. 阈值类型

大津法和三角形法是两种常用于图像处理中自动确定阈值的方法。

cpp 复制代码
    type                            作用
THRESH_BINARY             灰度值高于阈值的为最大,其余为0
THRESH_BINARY_INV         灰度值高于阈值的为0,其余为最大
THRESH_TOZERO             高于阈值的值为0,低于阈值的保留
THRESH_TOZERO_INV         高于阈值的值保留,低于阈值的值为0
THRESH_TRUNC              高于阈值的为阈值,低于阈值的保留
THRESH_OTSU               大津法自动求阈值,可以配合其他阈值使用,适用于双波峰
THRESH_TRIANGLE           三角形法自动求阈值,根据直方图自行计算阈值,最适用于单个波峰,医                
                          学分割细胞等。
4. 大津法原理

一种基于直方图的自适应阈值确定方法,原理是寻找一个阈值,使得根据该阈值将图像分割成前景(目标) 和背景两部分后,目标与背景之间的类间方差最大。类间方差用于衡量目标和背景之间的差异度,方差越大表示目标和背景之间的差异越大,分割效果越好。

  1. 计算图像的灰度直方图;
  2. 对每一个可能的阈值,计算目标和背景的像素数目和像素值的平均值;
  3. 根据当前的阈值t,计算类间方差作为衡量指标:类间方差=目标像素数目*背景像素数目*(目标平均值-背景平均灰度)^2;
  4. 找到使得雷剑方差最大的阈值作为最终阈值。
5. 三角形法原理

同样是基于直方图的阈值选择方法,基本原理是找到直方图的峰值处对应的阈值,通过将直方图峰值对应的斜率定义为三角形的高,并找到使得该三角形面积最大的阈值作为最终阈值。

  1. 计算图像的灰度直方图;
  2. 找到直方图的峰值处,即直方图中像素数目最多的灰度级别;
  3. 以峰值处对应的灰度级别为基准,向两侧寻找直方图中像素数目小于峰值处像素数目的一半的两个灰度级别作为边界;
  4. 计算准基灰度级别和两个边界之间的直方图的斜率,斜率定义为三角形的高,在这种情况下,可以将这两个边界之间的距离作为三角形的底部;
  5. 找到三角形面积最大的斜率对应的阈值作为最终阈值。
6. 自适应阈值处理adaptiveThreshold()

主要功是边缘提取,并且参数C主要来控制边缘的类型和粗细;将blocksize选得大就是二值化,小就是提取边缘。

7. 二值化处理的经验:
  1. THRESH_BINARY:适用于对比度明显的图像,目标与背景之间有明显的灰度差异;
  2. THRESH_TRUNC:适用于保留目标灰度信息同时进行部分抑制的情况;
  3. THRESH_TOZERO:适用于保留亮度较高的区域的细节信息情况;
  4. THRESH_OTSU:适用于图像的目标与背景之间有明显的灰度分离,但具体阈值不确定的情况;
  5. THRESH_TRIANGLE:适用于图像目标与背景之间有明显的灰度分离,但具体阈值不确定的情况;
  6. ADAPTIVE_THRESH_MEAN_C:适用于图像中不同区域具有不同光照条件的情况,有明显噪声或者需要更好的平滑效果;
  7. ADAPTIVE_THRESH_GAUSSIAN_C:适用于图像中不同区域具有不同光照条件情况,简单是直接,更快的计算速度。
相关推荐
Jay Kay5 分钟前
ReLU 新生:从死亡困境到强势回归
人工智能·数据挖掘·回归
Blossom.11815 分钟前
使用Python和Flask构建简单的机器学习API
人工智能·python·深度学习·目标检测·机器学习·数据挖掘·flask
无声旅者1 小时前
AI 模型分类全解:特性与选择指南
人工智能·ai·ai大模型
Grassto1 小时前
Cursor Rules 使用
人工智能
MYH5161 小时前
深度学习在非线性场景中的核心应用领域及向量/张量数据处理案例,结合工业、金融等领域的实际落地场景分析
人工智能·深度学习
Lilith的AI学习日记1 小时前
什么是预训练?深入解读大模型AI的“高考集训”
开发语言·人工智能·深度学习·神经网络·机器学习·ai编程
聚客AI2 小时前
PyTorch玩转CNN:卷积操作可视化+五大经典网络复现+分类项目
人工智能·pytorch·神经网络
程序员岳焱2 小时前
深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?
java·人工智能·后端
柠檬味拥抱2 小时前
AI智能体在金融决策系统中的自主学习与行为建模方法探讨
人工智能
智驱力人工智能2 小时前
智慧零售管理中的客流统计与属性分析
人工智能·算法·边缘计算·零售·智慧零售·聚众识别·人员计数