分割掩模 VS 掩膜

  • 掩膜 Mask
  • 分割掩模 Segmentation Mask
  • 总结
  • 示例

掩膜 Mask

“掩膜” 是指一种用于 标识或遮蔽图像中特定区域图像

在这里插入图片描述

在图像处理中,掩膜通常是一个 二值图像,其中的 像素值为 0 或 1binary Mask 叫做二元掩膜,如下图所示:

在这里插入图片描述

  • 这种二值图像 与原始图像具有相同的尺寸
  • 仅在目标区域的位置上有非零值

掩膜的目的是 突出或选择感兴趣的区域,以便进行进一步的处理或分析。

在这里插入图片描述

比如我想要好好研究椰子树,那我把 原始图像中椰子树 的部分对应着的 掩膜 的值设为 1,其余设为 0。

从图中可以看出,经过掩膜处理之后,除了 原始图像中椰子树 的部分对应着 掩膜 中的 1 值 而保持不变,其他的部分都被 掩膜 中的 0 值覆盖了,剩余的椰子树就是想要进一步分析或处理的部分。

分割掩模 Segmentation Mask

与掩膜相关的概念中,“分割掩模” 通常指的是一个用于 标识图像中不同物体或区域掩膜

分割掩模 是一种图像处理的技术,它 可以将图像中的不同对象分离出来生成对应的二值图或多值图,表示每个对象的位置和形状

在这里插入图片描述

分割掩模通常是一个 二值图像

  • 与原始图像有相同的大小和分辨率
  • 只有两种像素值,0或1。0 表示掩膜区域,1 表示非掩膜区域。
  • 通过 将分割掩模与原始图像相乘,就可以得到分割后的图像,其中 掩膜区域的像素值为 0,非掩膜区域的像素值保持不变

图像分割 任务中,每个目标对象 都可以 用一个独特的分割掩模 来表示。

  • 其中 像素值为 1 的区域表示 属于目标对象 的部分,
  • 像素值为 0 的区域表示 不属于目标对象 的部分。

总结

分割掩模和掩膜是两个相关但不完全相同的概念。

  • 分割掩模 是一种图像处理的技术,它可以 将图像中的不同对象分离出来,生成对应的二值图或多值图,表示每个对象的位置和形状
  • 掩膜 是一种用于 覆盖或遮挡图像的特定图像,它可以 控制图像处理的区域

分割掩模和掩膜的联系是,分割掩模可以作为掩膜的一种输入,用于提取或裁剪图像中的特定区域


例如,如果我们想要从一张图像中 提取出人脸 的部分,

  • 我们可以 先用分割掩模的方法识别出人脸的边界
  • 然后 用这个分割掩模作为掩膜对原始图像进行掩膜提取或裁剪

得到只包含人脸的图像。

如果你想用分割掩模的方法识别出人脸的边界,

  • 首先,需要用一个人脸检测的工具,如 dlib 或 opencv,来定位图像中的人脸区域,并得到人脸的坐标和大小。
  • 然后,需要用一个人脸关键点的工具,如 dlib 或 opencv,来检测人脸的特征点,如眼睛,鼻子,嘴巴等,并得到这些点的坐标。
  • 接着,需要用一个凸包的算法,如 opencv 的 convexHull,来根据人脸的特征点生成一个凸多边形,这个多边形就是人脸的边界。
  • 最后,需要用一个掩膜的技术,如 opencv 的 bitwise_and,来根据人脸的边界抠出人脸的部分,生成一个二值图或多值图,表示人脸的位置和形状。

这是一个简单的示例,也可以参考一些更高级的分割掩模的方法,如基于深度学习的语义分割或实例分割,来提高人脸边界的精度和鲁棒性。

示例

比如上图中的椰子树,我怎么知道掩膜该设成什么值才能提取出椰子树呢?

这需要用到一个叫做 目标检测 的技术,它可以 识别和定位图像中的不同对象,并 用边框标出它们的位置和类别

目标检测的原理是,

  • 首先用一个 深度神经网络来提取图像中的特征,这些特征可以描述图像中的纹理、形状、颜色等信息。
  • 然后用一个 分类器来判断每个特征是否属于某个对象,例如椰子树、汽车、人等。分类器可以是一个全连接层,也可以是一个卷积层,或者是一个更复杂的结构,如注意力机制、图神经网络等。
  • 最后用一个 回归器来调整边框的大小和位置,使其更准确地覆盖对象。回归器可以是一个全连接层,也可以是一个卷积层,或者是一个更复杂的结构,如锚框、特征金字塔等。

目标检测的工具和方法有很多,例如:

  • 基于 区域提议 的方法,如 R-CNN、Faster R-CNN、Mask R-CNN 等,它们先用一个网络或者一个算法 生成一些候选的区域,然后 对每个区域进行分类和回归,得到最终的检测结果。
  • 基于 回归 的方法,如 YOLO、SSD、RetinaNet 等,它们直接 从图像中心点预测对象的类别和边框,一次性完成检测任务,速度更快,但精度稍低。
  • 基于 分割 的方法,如 FCOS、SOLO、DETR 等,它们不使用锚框或者区域提议,而是用一个全卷积网络或者一个 Transformer 网络来 生成一个密集的分割掩码,表示每个像素属于哪个对象,然后根据掩码得到对象的类别和边框。

例如,下图是一个目标检测的结果,它用不同颜色的边框标出了图像中的狗和车,并用文字标注了它们的类别和置信度。

在这里插入图片描述

有了目标检测的结果,就可以根据用户的需求来 生成相应的分割掩模

例如,想要 提取图像中的狗狗

  • 就可以先用一个 全为 0 的分割掩模 来覆盖图像中的所有区域,
  • 然后 根据狗狗的边框的位置和大小,将 分割掩模中对应的区域的像素值设为 1

这样就可以得到一个只包含狗狗的分割掩模。

-> 一个在线的分割掩模工具(在线抠图)
-> 如何用 opencv 的 grabCut 算法来生成一个分割掩模,然后用它来提取图像中的前景对象

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

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

相关文章

Airtest进阶使用篇!提高脚本稳定性 + 批量运行脚本!

一、背景 今天彭于晏为大家分享Airtest进阶使用篇,主要包含两块的内容: 提高脚本稳定性批量运行脚本生成测试报告 二、提高脚本稳定性 1、添加全局配置: #全局设置 ST.FIND_TIMEOUT10 #设置隐式等待时长,默认识别图片时间是30秒,可改为…

[黑皮系列] 计算机网络:自顶向下方法(第8版)

文章目录 《计算机网络:自顶向下方法(第8版)》简介作者目录前言配套公开课 《计算机网络:自顶向下方法(第8版)》 出版信息: 原作名: Computer Networking: A Top-Down Approach 作者: [美] Jame…

运维知识点-SQLServer/mssql

SQLServer/mssql Microsoft structed query language常见注入提权 技术点:0x00 打点前提 0x01 上线CS0x02 提权0x03 转场msf0x04 抓取Hash0x05 清理痕迹 Microsoft structed query language 常见注入 基于联合查询注入 order by 判断列数(对应数据类型…

从0开始学习JavaScript--JavaScript 单例模式

单例模式是一种常见的设计模式,它保证一个类仅有一个实例,并提供一个全局访问点。在 JavaScript 中,单例模式通常用于创建唯一的对象,以确保全局只有一个实例。本文将深入探讨单例模式的基本概念、实现方式,以及在实际…

const 和 constexpr 深入学习

在 C 中,const 和 constexpr 都可以用来修饰对象和函数。修饰对象时,const 表示它是常量,而 constexpr 表示它是一个常量表达式。常量表达式必须在编译时期被计算1。修饰函数时,const 只能用于非静态成员的函数,而 con…

Secure Software Lifecycle Management (SSLM)安全软件生命周期管理

文章目录 前言一、现代理念二、安全的软件生命周期管理总结 前言 The concept of integrating security into the software development process is not new. While I cannot definitively assert that Microsoft was the pioneer of this concept, the Secure Development Li…

清理docker Build Cache缓存文件

使用docker构建镜像,发现docker的overlay2文件会越来越大。 使用命令查看docker系统占用资源: docker system df 可以看到已经占用了26.7GB,清理这个缓存 docker builder prune 再次查看,已经没有缓存了,清理成功。 …

【UE】中文字体 发光描边材质

效果 步骤 1. 先将我们电脑中存放在“C:\Windows\Fonts”路径下的字体导入UE 点击“全部选是” 导入成功后如下 2. 打开导入的“SIMSUN_Font”,将字体缓存类型设置为“离线” 点击“是” 这里我选择:宋体-常规-20 展开细节面板中的导入选项 勾选“使用距…

Redis缓存淘汰策略

Redis缓存淘汰策略 1、各种面试题 生产上你们的redis内存设置多少?如何配置、修改redis的内存大小如果内存满了你怎么办?redis清理内存的方式?定期删除和惰性删除了解过吗?redis缓存淘汰策略有哪些?分别是什么?你用哪个?redis的LRU了解过吗?请手…

FastApi接收不到Apifox发送的from-data字符串_解决方法

接收不到Apifox发送的from-data字符串_解决方法 问题描述解决方法弯路总结弯路描述纵观全局小结 问题描述 这里写了一个接口,功能是上传文件,接口参数是file文件和一个id字符串 gpt_router.post("/uploadfiles") async def create_upload_fi…

基于ora2pg迁移Oracle19C到postgreSQL14

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

linux socket套接字

文章目录 socket流socket(TCP)数据报socket(UDP) 讨论 socket 所谓套接字,就是对网络中不同主机上的应用程序之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,套接字提供了应用层进程利…

AI - FlowField(流场寻路)

FlowField流场寻路,利用网格存储每个点对目标点的推力,网格上的单位根据对于推力进行移动。用于大量单位进行寻路对于同一目的地的寻路,常用于rts游戏等。 对应一张网格地图(图中黑块是不可行走区域) 生成热度图 计算所有网格对于目标点(…

【Flutter】graphic图表实现tooltip一段时间后自动隐藏

概述 graphic图表中提供了自定义tooltip的事件,可通过selections中on和clear配置手势选项和可识别设备,默认情况下tooltip需要双击隐藏,但这并不符合我们的需求。通过调研发现,若想实现tooltip隔几秒后隐藏,可通过Str…

西工大网络空间安全学院计算机系统基础实验一(9, 10, 11, 12, 13)

还是那句话,专心做好你自己的,老老实实把基础打好,不要被其他人带跑节奏,不要跟他打,跟着这系列博客,稳扎稳打一步一步来。即使你VMware workstation没下载好,即使你Ubuntu虚拟机没配好&#xf…

【数据挖掘】国科大刘莹老师数据挖掘课程作业 —— 第三次作业

Written Part 1. 基于表 1 1 1 回答下列问题(min_sup40%, min_conf75%): Transaction IDItems Bought0001{a, d, e}0024{a, b, c, e}0012{a, b, d, e}0031{a, c, d, e}0015{b, c, e}0022{b, d, e}0029{c, d}0040{a, b, c}0033{a, d, e}0038…

【计算机网络笔记】交换机

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

Vue3依赖注入

适用场景 尤其针对一个变量需要从顶层组件开始透传,途径很多个子组件最后在第n代子组件使用的时候。对于这些途经的子组件而言,它们不但不使用而且完全不关心该变量具体是什么,只是作为一个传递工具罢了。这种情况下,使用依赖注入…

asla四大开源组件应用示例(alsa-lib、alsa-utils、alsa-tools、alsa-plugins)

文章目录 alsa设备文件/dev/snd//sys/class/sound/proc/asoundalsa-lib示例1alsa-utilsalsa-toolsalsa-plugins参考alsa设备文件 /dev/snd/ alsa设备文件目录位于,/dev/snd,如下所示 root@xboard:~#ls /dev/snd -l total 0 drwxr-xr-x 2 root root 60 Nov 6 2023 …