分割掩模 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 算法来生成一个分割掩模,然后用它来提取图像中的前景对象

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

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

相关文章

Ubuntu上的常用软件配置

《立冬》——李白 〔唐代〕 冻笔新诗懒写,寒炉美酒时温。 醉看墨花月白,恍疑雪满前村。 对于Android开发者而言,折腾Android源码那是其乐无穷啊。但是有时候在Linux系统下会很不方便,这里特此记录一下常用的软件配置,希…

图面试专题

一、概念 和二叉树的区别:图可能有环 常见概念 顶点(Vertex): 图中的节点或点。边(Edge): 顶点之间的连接线,描述节点之间的关系。有向图(Directed Graph)&…

BUUCTF-pwn-ciscn_2019_ne_51

简单查看保护: 32为程序没有canary没有PIE,应该是简单的栈溢出。我们照着这个思路去找溢出点在哪,运行下程序看看什么情况: 程序上来是输入一个密码验证。随便输入下错误直接退出。因此我们需要到IDA中看看怎么回事: 主…

Linux详解——安装JDK

目录 一、下载jdk 二、tar包安装 三、rpm包安装 一、下载jdk 1.下载jdk https://www.oracle.com/technetwork/java/javase/downloads/index.html 2.通过CRT|WinSCP工具将jdk上传到linux系统中 二、tar包安装 # 1.将JDK解压缩到指定目录 tar -zxvf jdk-8u171-linux…

报错解决:You may need an additional loader to handle the result of these loaders.

报错信息如下 vue 项目 Module parse failed: Unexpected token (1:9) File was processed with these loaders:* ./node_modules/vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js* ./node_modules/babel-loader/lib/index.js* ./node_modules/eslint-loader/in…

【R语言】——相关性分析和热图绘制

本期介绍了利用R语言进行相关性分析和数据的可视化的方法。 一、什么是相关性分析? 相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。…

矩阵代数与MATLAB实现(特征值、广义特征值、酋矩阵、)

矩阵代数的相关知识 目录 一、特征值与特征向量 1、特征值与特征向量 2、MATLAB计算 二、广义特征值与广义特征向量 1、广义特征值与广义特征向量 2、MATLAB计算 三、酋矩阵 1、酋矩阵 2、MATLAB计算 四、未完待续 总结 提示:以下是本篇文章正文内容&…

网工内推 | 中高级网工,IE认证优先,带薪年假,五险一金

01 敏于行(北京)科技有限公司 招聘岗位:高级网络开发工程师 职责描述: 1、负责设计、参与数字身份安全中网络安全模块相关项目(零信任SDP、VPN等); 2、深入研究和理解网络底层协议和通信机制&…

Aruba无线控制器新增加AP

1、将网线连接上AP的Eth端口,console线也连接上console口 2、在console后台可以看到AP获取到的IP地址 3、确认网络可以联通,通过https访问web界面 AP205默认账号密码:admin AP505账号为admin,密码为设备SN 4、右上角点击"维…

手势识别4:C/C++实现手部检测和手势识别(含源码下载)

手势识别4:C/C实现手部检测和手势识别(含源码下载) 目录 手势识别4:C/C实现手部检测和手势识别(含源码下载) 1. 前言 2. 手势识别模型(YOLOv5) (1)手势识别模型训练 (2)将Pyto…

Mac单独修改应用语言

方法1: 方法2: defaults write com.microsoft.Excel AppleLanguages ("zh-cn") defaults write com.microsoft.Word AppleLanguages ("zh-cn")参考:https://www.zhihu.com/question/24976020

Python中对数组连续赋值的问题

问题描述 在python中,首先用两个等号对两个数组进行初始化并赋值。之后,对任何一个数组进行赋值,都会将其赋予相同值。 import numpy as np Array1 Array2 np.empty(2) Array1[0],Array2[0]70,80 print(Array1[0],Array2[0])80.0 80.0 …