[Computer Vision]图像分割技术

一、技术介绍

1.1  GrabCut 算法

1.1.1 算法原理

GrabCut 算法是一种交互式的图像分割方法,整体流程围绕着用户提供的少量先验信息(如用矩形框大致框选前景区域等),通过构建图模型、拟合高斯混合模型,利用图割算法不断迭代优化,实现了一种有效的交互式图像分割,最终将图像划分为前景和背景两部分。

1.1.2 技术路线

1.初始化阶段

用户实现交互式输入,用户可以通过简单的方式提供初始信息,常见的是在图像上绘制一个矩形框,框选大致包含前景物体的区域,除此以外,用户还可以使用画笔工具标记确定的前景和背景的信息,辅助算法进行更精确的初始化分。

2.构建图模型阶段

将图像中的每一个像素都看作是图中的一个节点,同时额外添加两个特殊的节点,即源节点(Source Node,常用来代表前景)和汇节点(Sink Node,常用来代表背景)。例如,对于一幅M*N像素大小的图像,构建的图中总共会有M*N+2个节点。

为每个像素节点与源节点、汇节点分别建立连接边,这些边的权重反映了对应像素属于前景或背景的可能性大小,而这个可能性的量化是通过前面初始化好的前景和背景 GMM 来计算。相邻的像素之间也会构建边,这类边的权重体现了相邻像素在特征上的相似性程度,通常基于像素的颜色差值以及空间距离等因素来确定。

3.迭代优化阶段

利用图论中的图割算法对构建好的图进行处理,找到一个最小割,将图划分为两部分,这两部分分别对应着前景和背景区域,从而确定每个像素在当前迭代下属于前景还是背景。

根据上一步图割算法得到的新的像素分类结果,重新收集前景和背景像素的数据,再重新拟合前景和背景的 GMM,因为像素分类发生了变化,所以需要更新模型参数来更好地反映当前前景和背景像素的实际特征分布情况,使得后续的边权重计算能够更加准确。

不断重复上述基于图割算法调整像素分类以及更新 GMM 的步骤,每次迭代都会使分割结果朝着更优的方向发展。在迭代过程中,会设置一些收敛条件来判断是否停止迭代。

4.输出分割结果

当满足收敛条件后,根据最终确定的像素分类情况,将图像中的像素划分为前景和背景两部分,生成最终的图像分割结果。

1.2 K-means 算法

1.2.1 算法原理

K-means 算法是一种经典的聚类算法,旨在通过不断迭代优化,将给定的数据集划分成事先指定数量的簇,即将数据集中的样本按照相似性划分为不同的簇(类别),使得同一簇内的数据样本尽可能相似,而不同簇之间的数据样本差异尽可能大。

1.2.2 技术路线

1.图像数据预处理

构建数据集合,把图像中的每一个像素点看作是一个待聚类的数据点,对于彩色图像,其特征向量就是该像素对应的 RGB 值(或者经过预处理后的对应值);对于灰度图像,特征向量就是其灰度值这一个维度的数据。

2.确定聚类簇数

预先设定要将图像分割成的区域数量,从图像所有像素对应的特征向量(即像素值向量)中随机选取K个作为初始的聚类中心。

3.迭代聚类过程

计算图像中每个像素(数据点)与K个聚类中心的距离,通常采用的距离度量方式有欧几里得距离(对于彩色图像像素的 RGB 值向量,按照欧几里得距离公式计算其在三维特征空间中的距离;灰度图像则是在一维特征空间计算距离)等。然后将每个像素分配到距离它最近的聚类中心所对应的簇中,这就相当于将图像中的像素初步划分到了K个不同的类别中,从图像分割角度来看,就是把图像先粗略地划分成了K个区域。

不断重复上述分配像素和更新聚类中心这两个步骤,每一次迭代都会使像素的分类以及聚类中心的位置更优化,让属于同一簇(即同一分割区域)的像素在特征空间上更加聚集,不同簇之间的差异更加明显,从而逐步细化图像分割的效果。

4.收敛判断

迭代过程直到满足收敛条件为止。常见的收敛条件如下:(1) 聚类中心不再发生明显变化,意味着聚类中

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

原型链与继承

#搞懂还是得自己动手# 原型链 function Person(name) { this.name name; } Person.prototype.sayName function() { console.log(this.name); };const p new Person("Alice"); 原型链关系图: 原型链:person->Person.prototype->O…

MagicDriveDiT:具有自适应控制的自动驾驶高分辨率长视频生成

24年11月来自香港中文大学、香港科技大学和华为公司的论文“MagicDriveDiT: High-Resolution Long Video Generation for Autonomous Driving with Adaptive Control”。 扩散模型的快速进步极大地改善视频合成,特别是可控视频生成,这对于自动驾驶等应用…

YOLOv8 自定义目标检测

一、引言 YOLOv8 不仅支持预训练模型的推理,还允许用户将其应用于自定义对象检测。本文将详细介绍如何使用 YOLOv8 训练一个新的模型,并在自定义数据集上进行对象检测。 二、数据集准备 1. 数据集格式 YOLOv8 支持多种数据集格式,包括 CO…

Node JS 调用模型Xenova_all-MiniLM-L6-v2实战

本篇通过将句子数组转换为句子的向量表示,并通过平均池化和归一化处理,生成适合机器学习或深度学习任务使用的特征向量为例,演示通过NodeJS 的方式调用Xenova/all-MiniLM-L6-v2 的过程。 关于 all-MiniLM-L6-v2 的介绍,可以参照上…

记录一次Spring事务失效导致的生产问题

一、背景介绍 公司做的是“聚合支付”业务,对接了微信、和包、数字人民币等等多家支付机构,我们提供统一的支付、退款、自动扣款签约、解约等能力给全国的省公司、机构、商户等。 同时,需要做对账功能,即支付机构将对账文件给到…

AORO P9000 PRO三防平板携手RTK高精度定位,电力巡检效率倍增

电网系统覆盖幅员辽阔,每年因设备故障导致的巡检耗时超过百万工日。传统巡检模式受限于定位误差、设备防护不足和作业效率低下三大核心痛点,亟需智能化工具的突破性革新。为了满足这一需求,遨游通讯推出AORO P9000 PRO三防平板,以…

开启AI短剧新纪元!SkyReels-V1/A1双剑合璧!昆仑万维开源首个面向AI短剧的视频生成模型

论文链接:https://arxiv.org/abs/2502.10841 项目链接:https://skyworkai.github.io/skyreels-a1.github.io/ Demo链接:https://www.skyreels.ai/ 开源地址:https://github.com/SkyworkAI/SkyReels-A1 https://github.com/Skywork…

CentOS 7中安装Dify

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。尤其是我们本地部署DeepSeek等大模型时,会需要用到Dify来帮我们快捷的开发和应用。 大家可以参考学习它的中…

【Day9】make/makeFile如何让项目构建自动化起飞

【Day9】make/makeFile如何让项目构建自动化起飞 使用make命令编写makefile文件依赖管理增量构建makefile注释:#makefile其他语法 make/makefile递归式工作过程 在Linux中,项目自动化构建是指使用一系列工具和脚本来自动执行软件项目的编译、测试、打包和…

svn 通过127.0.01能访问 但通过公网IP不能访问,这是什么原因?

连接失败的提示如下 1、SVN的启动方法 方法一: svnserve -d -r /mnt/svn 方法二: svnserve -d --listen-port 3690 -r /mnt/svn 方法三: svnserve -d -r /mnt/svn --listen-host 0.0.0.0 2、首先检查svn服务器是否启动 方法一&#x…

Unity实现在镜子间反射光柱

一、最终效果: 二、代码来源及思路 unity-raycast-reflection/Assets/RaycastReflection.cs at master Loafwad/unity-raycast-reflection GitHub 在GitHub找到了现成的,效果很好,稍微改了一点来满足我的需求,并加上了注释理解…

快速理清 Attention 注意力和 Encoder, Decoder 概念

之前一直以为 Attention 和 RNN 没关系是凭空蹦出来的新概念;以为 Transformer, Encoder, Decoder 这几个概念是绑在一起的。并不尽然。 Encoder 和 Decoder RNN 里就有 Encoder Decoder 的概念。其中,encoder 接受用户输入,写入 hidden stat…

达梦数据库系列之Mysql项目迁移为达梦项目

达梦数据库系列之Mysql项目迁移为达梦项目 1 达梦数据库安装及MySql数据迁移2 SpringBoot项目迁移2.1 驱动包引入2.2 驱动类配置2.3 数据源配置2.4 flowable迁移2.4.1 异常问题2.4.2 解决 3 迁移常见问题3.1 不是 GROUP BY 表达式3.1.1 dm.ini 开启Mysql兼容模式3.1.2 修改动态…

第5章 使用OSSEC进行监控(网络安全防御实战--蓝军武器库)

网络安全防御实战--蓝军武器库是2020年出版的,已经过去3年时间了,最近利用闲暇时间,抓紧吸收,总的来说,第5章开始进入主机安全(HIDS)领域了,2022年的时候有幸做过终端安全一段时间&a…

【文献阅读】The Efficiency Spectrum of Large Language Models: An Algorithmic Survey

这篇文章发表于2024年4月 摘要 大语言模型(LLMs)的快速发展推动了多个领域的变革,重塑了通用人工智能的格局。然而,这些模型不断增长的计算和内存需求带来了巨大挑战,阻碍了学术研究和实际应用。为解决这些问题&…

毕业项目推荐:基于yolov8/yolov5/yolo11的暴力行为检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

MySQL面试01

MySQL 索引的最左原则 🍰 最左原则本质 ͟͟͞͞( •̀д•́) 想象复合索引是电话号码簿! 索引 (a,b,c) 的排列顺序: 先按a排序 → a相同按b排序 → 最后按c排序 生效场景三连: 1️⃣ WHERE a1 ✅ 2️⃣ WHERE a1 AND b2 ✅ 3️…

【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(未成功版)

【Linux】【网络】UDP打洞–>不同子网下的客户端和服务器通信(未成功版) 上次说基于UDP的打洞程序改了五版一直没有成功,要写一下问题所在,但是我后续又查询了一些资料,成功实现了,这次先写一下未成功的…

unity学习63,第2个小游戏:用fungus做一个简单对话游戏

目录 1 目标用fungus做一个简单的剧情对话游戏 1.1 先创建一个新的3D项目 1.2 fungus是什么 1.2.1 怎么获得 1.2 在AssetStore里搜索fungus (插件类)--千万别买收费的错的! 1.3 fungus的官网 1.3.1 官网给的3个下载链接,unity的果然已经失效了 …

前后分离文件上传案例,前端HTML,后端Net6开发的webapi(完整源代码)下载

文件上传功能在项目开发中非常实用,本案例前端用HTML页面的form表单实现,后端用Net6实现。 前后分离文件上传案例,前端HTML,后端Net6(完整源代码) 下载链接https://download.csdn.net/download/luckyext/9…