010:传统计算机视觉之大津算法初探

本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。

合集完整版请参考这里。

上一节学习了利用 Canny 算法来完成一个图片的边缘检测,从而可以区分出图像的边缘。

本节再了解一个计算机视觉中更常见的应用,那就是把图片的前景和背景的分离,也叫做图像分割。

什么是图像的前景和背景

在图像处理和计算机视觉中,"前景"和"背景"是指图像中的两个主要部分。

前景:前景是图像中引起人们兴趣或希望被重点关注的区域,通常指图像中的主要目标,或者在图像处理中你想要从图像中提取或识别的对象。

背景:简单理解就是除了前景之外的其余图像区域,作为陪衬的、通常是图像中次要的区域。

在这里插入图片描述

举个例子,上述图片一只猫在一个花园中,那么照片中的猫就是前景,而周围的花园景色就是背景。

在一些图像处理任务中,准确地分割前景和背景非常关键,例如,在图像分割领域中,我们就很希望将图像中的不同对象分离开来,这肯定需要识别然后分割前景和背景。

如何区别前景和背景

在继续阅读之前,你可以先想一下,如果让你自己来完成这个前景和背景的分割,在已学习的知识框架下,如何来完成呢?

你可能会想到先用灰度图简化一张图像。没错,前面已经介绍了灰度图,灰度图丢失了颜色信息,转而将彩色图像转化为了只有一个通道(灰度)的照片,在这样的照片里,所有像素的灰度值都限制在了0-255的范围内。

如果想要区分前景和背景,就需要找到一个灰度阈值,比如100,大于100的所有像素,称之为前景(或背景),而小于等于100的所有像素称之为背景(或前景)。

基于此,就可以把一张图片的前景和背景分开了。那现在问题转化为,如何选择一个合适的阈值,来将灰度图分开?

大津算法

大津算法就是专门做这个事的一种算法,这里不写具体的公式了,如果你对大津算法感兴趣可以直接去百度查一下,有很多公式推导。

这里从一个最通俗易懂的角度来说明大津算法是如何将一个灰度图分为前景和背景的。

大津是个日本学者,他在研究这个算法的时候可能这么想过:假设我已经找到了一个阈值,并且已经利用这个阈值将图像划分为两块区域(一块是所有像素点小于阈值的,一块是所有像素点大于阈值的),那么这两个区域可以看做是两个集合或者两个类别。

如果让前景和背景分割的效果最好,那肯定就是这两个集合(两个类别)之间的灰度值相差最大,这样区别才明显。

于是,大津定义了一个指标为两类中所有像素点的类间方差,如果类间方差最大,那么划分这两类的阈值分割出来的图像肯定就是最明显的。

类间方差最大,这是大津算法的一个核心思想。

方差大意味着两个数据的差别大,从而可以最大限度、最精确的来完成图像的前景和背景的分割。

那还是回到这个问题,如何确定这个阈值,使得小于它和大于它的两类图像的像素点类间方差最大呢?

大津也想了很多办法,发现从数学上几乎很难解决这个问题,但是这个问题数学上解决不了,不代表工程上解决不了。

工程实践解决

我们知道,灰度图的全部像素的值也就0-255。假设先设置阈值为0,那么就可以利用这个阈值计算出一个类间方差,记为S0; 然后再设置阈值为1,再计算出一个类间方差S1,一直尝试到设置阈值为255, 总共计算出256个方差,分别为 S0、S1、…、S255。

找到这256个类间方差最大的那个值,对应的阈值就是希望得到的阈值了。

这就是大津算法在实现时的另一个核心思想:灰度值遍历。

所以,总结一下,大津算法的核心思想有两个。

  • 第一个是数学上的:是求大于阈值和小于阈值所有像素点的方差,以类间方差为标准来划分前景和背景;

  • 第二个是工程上的:利用遍历法来遍历所有像素值,最终获得类间方差最大时对应的阈值。

对于计算机而言,遍历一个从 0-255 的数组的性能是很快的。因此,大津算法在效果和性能上都还不错,成为了在图像前景和背景分离中一个常见的算法。

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

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

相关文章

【Redis】初识分布式系统

目录 单机架构 分布式系统 应用数据分离架构 应用服务集群架构 读写分离/主从分离架构 冷热分离架构 垂直分库 微服务架构 分布式名词概念 本篇博文,将根据分布式系统的演进一步一步介绍每一种架构的形式,最后为大家总结了一些分布式中常用的…

计算机网络 笔记 数据链路层3(局域网,广域网,网桥,交换机)

局域网: LAN:在某一区域内由多台计算机互联成的计算机组,使用广播信道 特点: 覆盖范围有限:通常局限在几千米范围内,比如一栋办公楼、一个校园或一个工厂等相对较小的地理区域。 数据传输速率高:一般能达到 10Mbps…

配置 One API + ChatGPT-Next-Web,以讯飞星火认知大模型为例

配置 One API ChatGPT-Next-Web,以讯飞星火认知大模型为例 1.0 One API 配置1.1 获取大模型 API1.2 配置 OneAPI 渠道1.3 配置OneAPI 令牌 2.0 ChatGPT-Next-Web 配置 同步发布在个人笔记配置 One API ChatGPT-Next-Web,以讯飞星火认知大模型为例 上一…

Leetcode - 147双周赛

目录 一、3407. 子字符串匹配模式二、3408. 设计任务管理器三、3409. 最长相邻绝对差递减子序列四、3410. 删除所有值为某个元素后的最大子数组和 一、3407. 子字符串匹配模式 题目链接 字符串匹配问题,把字符串 p 分成两段 、,i 是 ’ * ’ 的下标&am…

SqlSugar连接达梦数据库集群超时或异常缓慢

《SqlSugar配置连接达梦数据库集群》文章中介绍SqlSugar连接达梦数据库集群,只需按下图所示位置添加dm_svc.conf文件,并在SqlSugar的连接字符串中指定服务名即可。   但在使用过程中发现,基于.net 6开发的WebApi,编译为ANYCPU&…

探秘 JMeter (Interleave Controller)交错控制器:解锁性能测试的隐藏密码

嘿,小伙伴们!今天咱们要把 JMeter 里超厉害的 Interleave Controller(交错控制器)研究个透,让你从新手直接进阶成高手,轻松拿捏各种性能测试难题! 一、Interleave Controller 深度剖析 所属家族…

C++内存泄露排查

内存泄漏是指程序动态分配的内存未能及时释放,导致系统内存逐渐耗尽,最终可能造成程序崩溃或性能下降。在C中,内存泄漏通常发生在使用new或malloc等分配内存的操作时,但没有正确地使用delete或free来释放这块内存。 在日常开发过程…

服务器/电脑与代码仓gitlab/github免密连接

git config --global user.name "xxxx" git config --global user.email "xxxxxx163.com" #使用注册GitHub的邮箱 生成对应邮箱的密码对 ssh-keygen -t rsa -b 4096 -C "xxxxxx163.com" 把公钥id_rsa.pub拷贝到github中 Setting----->…

Rubyer-WPF:打造优雅、精致的 WPF 用户界面

在桌面应用开发领域,WPF(Windows Presentation Foundation)凭借其强大的 UI 设计能力和丰富的功能,始终是开发者们青睐的工具之一。今天,我将为大家介绍一款专注于 WPF UI 设计的优秀项目——Rubyer-WPF,它…

蓝耘:GPU算力云服务的技术探索与AIGC应用支持

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 一、蓝耘的核心优势 1. 行业领先的基础设施 …

《Spring Framework实战》15:4.1.4.6.方法注入

欢迎观看《Spring Framework实战》视频教程 方法注入 在大多数应用场景中,容器中的大多数bean都是单例(singletons)的。当单例bean需要与另一个单例bean协作或非单例bean需与另一非单例bean协作时,通常通过将一个bean定义为另一个…

【ROS2】☆ launch之Python

☆重点 ROS1和ROS2其中一个很大区别之一就是launch的编写方式。在ROS1中采用xml格式编写launch,而ROS2保留了XML 格式launch,还另外引入了Python和YAML 编写方式。选择哪种编写取决于每位开发人员的爱好,但是ROS2官方推荐使用Python方式编写…

了解 Ansys Mechanical 中的网格方法:综合指南

网格是每个有限元分析 (FEA) 仿真的支柱。它将几何图形划分为离散单元,使 Ansys Mechanical 能够近似模型在各种条件下的行为。结构良好的网格可确保准确、可靠和计算高效的结果,而结构不佳的网格可能会导致错误、收敛问题或不必要…

学习threejs,使用TrackballControls相机控制器

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.TrackballControls 相…

云集电商:数据库的分布式升级实践|OceanBase案例

电商行业对数据库有哪些需求 云集电商作为一家传统电商企业,业务涵盖了美妆个护、服饰、水果生鲜、健康保健等多个领域,在创立四年后在纳斯达克上市(股票代码:YJ)。与京东、淘宝、拼多多等电商平台不同,云…

智能租赁系统提升效率与服务质量的全新解决方案

内容概要 智能租赁系统的崛起就像一场春雨,滋润着租赁行业的每一个角落。它通过先进的技术架构,结合数据管理,优化了以往繁琐的租赁流程,让整个过程如同顺畅的流水。比如,通过智能算法自动计算费用,使得用…

苹果手机(IOS系统)出现安全延迟进行中如何关闭?

苹果手机(IOS系统)出现安全延迟进行中如何关闭? 一、设置二、隐私与安全性三、失窃设备保护关闭 一、设置 二、隐私与安全性 三、失窃设备保护关闭

VxWorks [安装workbench之修改虚拟机Mac]

问题: 一、安装VMware 下载链接 [VMware 15 pro](https://segmentfault.com/a/1190000022562275)二、修改VMnet1的Mac ** 打开注册表 ** ctrl f 搜索VMnet1 增加字符串值 NetWorkAddress 00D6196C32 三、重启VMnet1 修改完成 四、重启 workbench

Redis十大数据类型详解

Redis(一) 十大数据类型 redis字符串(String) string是redis最基本的类型,一个key对应一个value string类型是二进制安全的,意思是redis的string可以包含任何数据。例如说是jpg图片或者序列化对象 一个re…

【从零开始使用系列】StyleGAN2:开源图像生成网络——环境搭建与基础使用篇(附大量测试图)

StyleGAN2 是英伟达团队 NVIDIA 提出的生成对抗网络(GAN)的一种改进版本。 它通过创新的网络架构,能够生成细节丰富、逼真的图像,特别在高频细节(如皮肤纹理、光照等)的表现上表现卓越。与传统 GAN 相比&am…