OpenCV图像阈值分割、二值化

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

OpenCV图像阈值分割、二值化

    • 一、图像二值化
      • 1、THRESH_BINARY
      • 2、THRESH_BINARY_INV
      • 3、THRESH_TRUNC
      • 4、THRESH_TOZERO
      • 5、THRESH_TOZERO_INV
    • 一、全局阈值
      • 1、均值法
      • 2、OTSU(直方图)
      • 3、三角法
    • 二、自适应阈值

一、图像二值化

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

 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、三角法

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

原理
计算图像的灰度直方图。
在直方图上,从最高峰(通常代表最频繁出现的灰度级)开始,分别向左右两侧搜索,直到找到一个谷值(局部最小值)为止。
将这两个谷值对应的灰度级作为阈值的候选范围。
在这个范围内选择一个阈值,通常选择两个谷值之间的灰度级的中点作为阈值。

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

二、自适应阈值

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

原理
对于图像中的每个像素,考虑其周围的一个邻域(如一个矩形窗口)。
计算该邻域内的像素灰度值的统计量(如均值、中值、高斯加权和等)。
根据这个统计量和预设的参数(如常数、系数等),计算出一个局部阈值。
将当前像素的灰度值与这个局部阈值进行比较,根据比较结果确定该像素的二值化输出。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA——DDR3的IP核

FPGA——DDR3的ip核 IP核配置基于MIG核代码基于AXI接口的DDR3 IP核配置 1 2 3 4 5 6 基于MIG核代码 控制MIG核的信号进行读写 module MIG_APP_Drive(input i_ui_clk ,input i_ui_rst ,input init_calib_…

Legacy|电脑Windows系统如何迁移到新安装的硬盘?系统迁移详细教程!

前言 前面讲了很多很多关于安装系统、重装系统的教程。但唯独没有讲到电脑换了新的硬盘之后&#xff0c;怎么把旧系统迁移到新的硬盘上。 今天小白就来跟各位小伙伴详细唠唠&#xff1a; 开始之前需要把系统迁移的条件准备好&#xff0c;意思就是在WinPE系统下&#xff0c;可…

AI赋能:加速MWORKS.Sysplorer仿真设计的新途径

近年来&#xff0c;人工智能技术的应用逐渐兴起&#xff0c;为仿真领域带来了新的机遇。随着现代工程系统的复杂性日益增加&#xff0c;MWORKS.Sysplorer作为一种广泛应用于系统仿真和设计的工具&#xff0c;面临着模型日益庞大和计算资源有限的挑战。为了解决这一问题&#xf…

【开发】SpringBoot 整合 Redis

目录 前言 1. Redis 的下载及安装 1.1 Redis 的下载 1.2 安装 Redis 1.3 启动 Redis 2. 创建 SpringBoot 项目整合 Redis 2.1 环境要求 2.2 SpringBoot项目构建 2.2.1 方式一 2.2.2 方式二 2.3 在 pom.xml 文件中导入依赖坐标 2.4 在 application.properties 中加…

编辑命令行提示符 prompt,支持显示 git 分支、标签等信息

实时在 Linhieng/current–Microsoft.PowerShell_profile.ps1 上更新 打开 $Profile 文件&#xff0c;将下面内容粘贴到其中即可&#xff1a; <# 负责打印 git 分支相关信息支持输出以下信息&#xff1a;当前分支&#xff0c;或者是 hash 值当前目录是否为 git 子目录当前…

定位线上最耗CPU的线程

定位线上最耗CPU的线程 准备工作 启动一个程序。 arthas-demo是一个简单的程序&#xff0c;每隔一秒生成一个随机数&#xff0c;再执行质因数分解&#xff0c;并打印出分解结果。 curl -O https://alibaba.github.io/arthas/arthas-demo.jar java -jar arthas-demo.jar[root…

计算机网络的组成

目录 <计算机网络的组成> 1.网络硬件 1)主机Host 2)终端Terminal 3)通信控制处理机 4)传输介质 5)网络连接设备 2.网络软件 1)网络操作系统 2)网络协议软件 3)网络管理软件 4)网络通信软件 5)网络应用软件 3通信子网和资源子网 <计算机网络的组成> 无…

组建公司办公网络

一 认识网络传输介质的分类 网络传输介质主要分为有线传输介质和无线传输介质两大类&#xff0c;它们在网络建设和数据传输中扮演着至关重要的角色。下面是这两类传输介质的详细分类&#xff1a; 有线传输介质 双绞线&#xff08;Twisted Pair&#xff09;&#xff1a;这是最…

PHP与Spring Boot在实现功能上的比较

原文地址&#xff1a;PHP与Spring Boot在实现功能上的比较 - Pleasure的博客 下面是正文内容&#xff1a; 前言 最近在学Spring Boot后端框架&#xff0c;在功能实现上发现了与PHP存在着一定的可比性。 这篇就单独拎出来进行比较一下。 正文 就例举一些功能上的重叠以及大致的…

【Web】浅聊Hessian反序列化之打Spring AOP——JNDI

目录 前言 简单分析 EXP 前言 前文&#xff1a;【Web】浅聊Java反序列化之Rome——关于其他利用链-CSDN博客 前文里最后给到一条HotSwappableTargetSource利用链&#xff0c;就是我们今天PartiallyComparableAdvisorHolder链子的前半段(触发恶意类的toString方法)&#xf…

Redis中的String编码转换底层原理及6.0新特性

String编码转换底层原理 String对象为什么把大于39字节或者44字节的字符串编码为raw&#xff0c;小于的时候编码为embstr? 在Redis3.2以前的版本中,SDS作为字符串类型中存储字符串内容的结构&#xff0c;源码如下&#xff1a; 3.2版本SDS结构 struct sdshdr {// 记录buf数…

华岳M9制造企业管理软件业务流程 2/4

华岳M9制造企业管理软件业务流程 2/4 步骤3 初始一、应收账款初始余额二、应付账款初始余额三、出纳账项初始余额四、会计账项初始余额五、盘点入库六、存货细目七、存货属性设置八、存货存量控制九、存货价格管理十、月末处理 步骤4 技术一、存货目录二、存货细目三、仓库绑定…

nginx代理服务器配置

nginx代理服务器配置 需要配置环境需求 1、一台1.1.1.1服务器&#xff0c;一台2.2.2.2服务器 前端包路径在1.1.1.1 /etc/dist 下 后端服务在2.2.2.2 上 暴露端口为9999 2、需求 现在需要访问 1.1.1.1:80访问到2.2.2.2 上面的9999后端服务 3、配置nginx ①&#xff1a;在…

【深度学习实践】面部表情识别,深度学习分类模型,mmpretrain用于分类的实用教程,多任务网络头

文章目录 数据集数据集的进一步处理转换training.csv转换validation.csv 剔除无法使用的图片数据选择mmpretrain框架来训练配置四个文件改写base model改写base datasetsschedulesdefault_runtime 总配置开始训练训练分析考虑在网络上增加facial_landmarks回归head考虑是否可以…

B树B+树,字典树详解,哈夫曼树博弈树

目录 B树&#xff1a;B-Tree B树 字典树&#xff1a;Trie Tree 哈夫曼树 博弈树 B树&#xff1a;B-Tree 多路平衡搜索树 1.M阶B树&#xff0c;就是M叉&#xff08;M个指针&#xff09;。 2.每个节点内记录个数<M-1。 3.根节点记录个数>1。 4.其余节点内记录个数&…

人工智能技术的不当利用与风险

目录 前言1 视频篡改技术的滥用1.1 虚假信息传播与社会动荡1.2 对公众信任的破坏与舆论混乱 2 隐私泄露与监视风险2.1 个人信息安全与数据滥用风险2.2 社会稳定与个人自由权利的平衡 3 虚假评论与信息传播3.1 舆论操纵与社会意识形态的影响3.2 对信息可信度与公众信任的威胁 结…

Mysql迁移至达梦所遇问题汇总

问题与解决&#xff1a; 1: 建表语句中不允许出现类似如下语句&#xff1a; create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPKEY member_id (member_id) USING BTREE 2: SQL 错误 [22000]: 仅当指定列列表&#xff0c;且SET IDENTIT…

红与黑(bfs, acwing)

题目描述&#xff1a; 有一间长方形的房子&#xff0c;地上铺了红色、黑色两种颜色的正方形瓷砖。 你站在其中一块黑色的瓷砖上&#xff0c;只能向相邻&#xff08;上下左右四个方向&#xff09;的黑色瓷砖移动。 请写一个程序&#xff0c;计算你总共能够到达多少块黑色的瓷…

03 龙芯平台openstack部署搭建-keystone部署

#!/bin/bash #创建keystone数据库并授权&#xff0c;可通过mysql -ukeystone -ploongson验证授权登录 mysql -uroot -e “set password for rootlocalhost password(‘loongson’);” mysql -uroot -ploongson -e ‘CREATE DATABASE keystone;’ #本地登录 mysql -uroot -ploo…

【Linux】进程---概念---进程---优先级

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.操作系统(Operator System) 1.1 概念 1.2 设计OS的目的 1.3 定位 1.4 如何理解 "管理" 1.5 总结 1.6 系统调用和…