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

1. 阈值概念

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

        两种阈值使用情况区分:

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

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

    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:适用于图像中不同区域具有不同光照条件情况,简单是直接,更快的计算速度。

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

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

相关文章

ardupilot开发 --- 机载(边缘)计算机-VISP-附录 篇

我要这铁棒有何用 1. 源码附录1.1 tutorial-grabber-opencv-hyl.cpp 1. 源码附录 1.1 tutorial-grabber-opencv-hyl.cpp /*! \example tutorial-grabber-opencv.cpp */ #include <stdlib.h> #include <visp3/core/vpImageConvert.h> #include <visp3/gui/vpDi…

MySQL的安装(Linux版)

1.所需要的文件 MySQL.zip 2. 卸载自带的Mysql-libs # 查看是否存在 rpm -qa | grep mariadb# 如果存在则执行命令进行卸载 rpm -e --nodeps mariadb-libs3.在/opt目录下创建MySQL目录并上传所需要的安装包 cd /optmkdir MySQL4.按照编号顺序安装&#xff08;压缩包在解压完…

springboot多模块

一、demo 1、创建父项目 首先使用 Spring Initializr 来快速创建好一个Maven工程。然后删除无关的文件&#xff0c;只需保留pom.xml 文件。 &#xff08;1&#xff09;new Project -> spring initializr快速构建SpringBoot&#xff0c;artifactId为springbootmodules&…

nginx 正向代理 https

问题背景 因为网络环境受限&#xff0c;应用服务器无法直接访问外网&#xff0c;需要前置机上中转一下&#xff0c;这种情况可在应用服务器修改/etc/hosts文件指向前置机&#xff0c;在前置机上的nginx设置四层代理&#xff0c;从而出站。 方案 根据How to Use NGINX as an …

手把手教你 - JMeter压力测试

前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试&#xff0c;他可以帮助我们发现系统中的瓶颈问题&#xff0c;减少发布到生产环境后出问题的几率&#xff1b;预估系统的承载能力&#xff0c;使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤&…

文案转化率低?快看看这两个坑你踩没踩

对于很多中小企业来说&#xff0c;无论是来拓市场还是获客&#xff0c;软文营销都会成为他们的主要营销方式&#xff0c;比较软文营销的成本较低&#xff0c;同时门槛也不高。但是也有品牌发现&#xff0c;自己和团队辛苦构思了几周写出的文案&#xff0c;但是效果不是很好。今…

数学分析复习:一元函数的极限

文章目录 函数极限定义和性质函数极限的另一种定义Cauchy收敛准则 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 函数极限 定义和性质 定义&#xff1a;函数极限 设函数 f ( x ) f(x) f(x) 若 ∀ ε > 0 , ∃ δ > 0 , ∀ x ∈ O o ( x 0 , δ ) , s . t …

QT5.14.2 码上热浪,用Qt5狂暴轰入多媒体狂潮

在这个视觉化、移动化的时代&#xff0c;多媒体应用无疑成为了现代计算机程序的香饽饽。无论是摄像头录像、视频播放器&#xff0c;还是音频可视化、GIF动画浏览&#xff0c;都让用户体验达到了前所未有的层次。而要想在这片热土上百战百胜&#xff0c;我们的祭旗就是Qt5这一跨…

了解微信小程序开发流程

前言&#xff1a;本文只适合初学者了解大致开发流程&#xff0c;好让后续学习胸有成竹&#xff0c;有条不紊 1、开发准备 ① 在微信公众平台 (qq.com)完成微信小程序账号注册 ②下载安装微信小程序开发者工具 2、创建项目 新建 新建时需要的appid&#xff0c;在微信公众平…

Python学习:函数

函数定义 在Python中&#xff0c;函数&#xff08;Function&#xff09;是一组用于完成特定任务或计算的语句块。定义函数可以让我们将一段代码重用多次&#xff0c;提高代码的可读性和可维护性。以下是定义函数的基本语法和结构&#xff1a; def function_name(parameters):&…

运动规划_碰撞检测算法之分离轴定理

运动规划:碰撞检测算法之分离轴定理 附赠自动驾驶全套学习资料和量产经验&#xff1a;链接 如上文所述&#xff0c;基于包围形的方法是一种粗略的碰撞检测方法&#xff0c;基于外接圆形的方法运算速度很快&#xff0c;但精度很差&#xff1b;基于轴对齐包围矩形&#xff08;AA…

0.96寸OLED屏调试 ----(二)

所需设备&#xff1a; 1、USB 转 SPI I2C 适配器&#xff1b;内附链接 2、0.96寸OLED显示模块&#xff1b; 备注&#xff1a;专业版、升级版都适用&#xff1b; 读写控制 SSD1306通过 D/C# 和 R/W# 两位来确定&#xff1a;读/写数据&#xff0c;写命令和读状态四种通信行为。…

从凑零钱问题理解动态规划

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示例…

【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT

【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT 文章目录 【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPTAbstractI. INTRODUCTIONII. RELATED WORK1. LLMs for Robotics2. Robot Learning III. METHODOLOGY1. ChatGPT Prompts for Robot …

【MySQL】9. 内置函数

函数 1. 日期函数 获得年月日&#xff1a; mysql> select current_date(); ---------------- | current_date() | ---------------- | 2024-03-23 | ---------------- 1 row in set (0.00 sec)获得时分秒&#xff1a; mysql> select current_time(); ------------…

vue3+Pinia的使用 - 封装

目录&#xff1a; persist.ts 可存储到本地 import { PersistedStateOptions } from "pinia-plugin-persistedstate";/*** description pinia 持久化参数配置* param {String} key 存储到持久化的 name* param {Array} paths 需要持久化的 state name* return per…

测试缺陷定位的基本方法

前后端bug特征 后端&#xff1a; 业务逻辑问题&#xff1a;如任务状态未扭转成功&#xff0c;创建任务失败等数据类问题&#xff1a;如新增的任务在页面没有展示出来等性能类问题&#xff1a;提交任务一直显示创建中、批量操作等待耗时长超时等 前端&#xff1a; 页面显示类…

基于人类反馈的强化学习:最核心的5个步骤

基于人类反馈的强化学习&#xff08; Reinforcement Learning with Human Feedback&#xff09;工作原理 强化学习正在彻底改变技术和商业世界中复杂问题的处理方式。这是一种强大的工具。通过该工具&#xff0c;机器能够从环境中学习并根据奖惩做出明智的决策。 但是&#x…

约克中央空调YES-will系列,舒适冷暖与高品质家居的优选

漫漫寒冬,室内一片寒意,开启空调多久才能享受到暖意?如果冬季气温较低,空调能否保持正常的制热运行? 炎炎夏季,即便在室内也同样是“暴汗”不断,身上黏糊糊,什么样的家用中央空调才能快速制冷,让全家人感受到舒适,同时又能避免传统空调直吹带来的一系列问题? 遇上梅雨季节…

面试题 之 webpack

1.说说你对webpack理解&#xff1f;解决什么问题&#xff1f; Webpack 是实现前端项目的模块化&#xff0c;用于现代 JavaScript 应用程序的静态模块打包工具&#xff0c;被webpack 直接引用的资源打包进 bunde.js的资源&#xff0c;当webpack 处理应用程序时,它会在内部构建一…