图像处理篇---掩膜获取

在图像处理中,"掩膜"(mask)就像给图像 "戴了个面具"------ 目标物区域是透明的(白色),背景是不透明的(黑色),用来精准分离目标和背景。用 LAB 或 HSV 颜色空间提取掩膜,核心是利用这两种颜色空间对 "颜色差异" 更敏感的特点,通过调节阈值(范围)把目标颜色 "圈" 出来。

先明确两个关键概念:

  • 颜色空间:把颜色拆成几个 "维度"(类似向量的维度),方便单独调节。比如 HSV 拆成 "色相(H)、饱和度(S)、明度(V)",LAB 拆成 "明度(L)、红绿(A)、黄蓝(B)"。
  • 阈值调节:设定一个范围(比如 H 通道的最小值和最大值),落在这个范围内的像素保留(变白),之外的排除(变黑)。

一、HSV 颜色空间提取掩膜(适合鲜艳颜色,如红、绿、蓝)

HSV 的三个通道含义:

  • H(色相):决定颜色种类(红、绿、蓝等),范围 0-180(OpenCV 中)。比如红色 H 约 0-10,绿色约 40-70,蓝色约 100-130。
  • S(饱和度):颜色的 "鲜艳程度",0-255。数值越高越鲜艳(纯红),越低越灰(粉红→灰色)。
  • V(明度):颜色的 "明暗程度",0-255。数值越高越亮(亮红),越低越暗(暗红→黑色)。
步骤(以提取红色苹果为例):
  1. 转换图像到 HSV 空间

    原始图像是 RGB 格式,先通过软件(如 Photoshop)或代码(如 OpenCV)转成 HSV,方便单独看 H、S、V 通道的图像。

  2. 观察目标在 H 通道的范围

    单独显示 H 通道图像:红色苹果在 H 通道中会是亮斑(因为 H 值在 0-10),背景(如绿色叶子、灰色桌面)是暗的。

    → 初步确定 H 的大致范围:比如 min_H=0,max_H=15(包含红色)。

  3. 调节 H 通道阈值,过滤非目标颜色

    • 用 "阈值工具" 设置 H 的最小值(min_H)和最大值(max_H):
      • 调大 min_H(比如从 0→5):会排除 H<5 的红色(比如最浅的红),苹果边缘可能被切掉一小块。
      • 调小 max_H(比如从 15→10):会排除 H>10 的红色(比如偏橙的红),苹果可能少一块。
      • 若范围太窄(如 0-5):苹果大部分会被排除,掩膜上只剩一小部分红色。
      • 若范围太宽(如 0-30):会包含橙色(H=15-30),掩膜上可能混入橙色物体(如橘子)。
        → 目标:让 H 通道的掩膜中,苹果区域尽量完整,背景(叶子、桌面)尽量少。
  4. 用 S 通道排除 "灰色 / 白色" 干扰

    红色苹果的 S 值较高(鲜艳),而灰色桌面 S 值低(接近 0)。

    • 单独看 S 通道:苹果是亮的(高 S),桌面是暗的(低 S)。
    • 设置 S 的阈值:比如 min_S=50(排除 S<50 的灰色),max_S=255(保留所有鲜艳的红)。
      • 调大 min_S(如 50→80):会排除较浅的红(如粉红,S=60),苹果可能变 "瘦"。
      • 调小 min_S(如 50→20):会包含更多灰色(如浅灰桌面),掩膜混入背景。
  5. 用 V 通道排除 "过亮 / 过暗" 干扰

    苹果亮度适中(V 不会太极端),但可能有强光(V 接近 255)或阴影(V 接近 0)。

    • 单独看 V 通道:苹果是中等亮度(亮),强光 / 阴影是极亮 / 极暗(暗)。
    • 设置 V 的阈值:比如 min_V=30(排除过暗的阴影),max_V=220(排除过亮的反光)。
      • 调大 min_V(如 30→50):会排除苹果上较暗的部分(如底部阴影),苹果可能缺一块。
      • 调小 max_V(如 220→200):会排除苹果上的高光(如反光点),掩膜上苹果的亮斑会消失。
  6. 合并三个通道的阈值,得到最终掩膜

    只有同时满足 H、S、V 范围的像素,才会在掩膜上显示为白色(目标),其他为黑色(背景)。

    → 反复微调三个通道的范围,直到掩膜中目标完整、背景干净。

二、LAB 颜色空间提取掩膜(适合光照变化大的场景,如明暗不均的目标)

LAB 的三个通道含义:

  • L(明度):只反映明暗,和颜色无关(0-255,0 是黑,255 是白)。
  • A(红绿):正值偏红,负值偏绿(范围 - 128 到 127)。
  • B(黄蓝):正值偏黄,负值偏蓝(范围 - 128 到 127)。
步骤(以提取蓝色玩具为例):

蓝色在 LAB 中特点:A 通道接近 0(不红不绿),B 通道为负值(偏蓝),L 通道中等(不太亮不太暗)。

  1. 转换图像到 LAB 空间

    同样先把 RGB 图转成 LAB,分离出 L、A、B 三个通道。

  2. 用 B 通道锁定蓝色范围

    单独看 B 通道:蓝色玩具是亮斑(因为 B 为负值,在图像中可能显示为亮),红色 / 黄色物体是暗的(B 正值)。

    • 设置 B 的阈值:比如 min_B=-100(更蓝),max_B=-20(不太蓝)。
      • 调大 min_B(如 - 100→-50):会排除更蓝的部分(比如深蓝),玩具边缘可能被切掉。
      • 调小 max_B(如 - 20→-60):会排除偏浅的蓝(比如浅蓝),玩具可能少一块。
      • 范围太窄:蓝色玩具被截成碎片;范围太宽:会包含紫色(B 接近 - 20,A 偏红)。
  3. 用 A 通道排除 "红 / 绿" 干扰

    蓝色玩具的 A 值接近 0(不红不绿),而红色物体 A 为正,绿色物体 A 为负。

    • 设置 A 的阈值:比如 min_A=-30(不太绿),max_A=30(不太红)。
      • 调大 min_A(如 - 30→0):会排除偏绿的蓝(如蓝绿色),玩具可能少一块。
      • 调小 max_A(如 30→0):会排除偏红的蓝(如蓝紫色),可能过滤掉玩具上的紫色条纹。
  4. 用 L 通道排除 "过亮 / 过暗" 干扰

    蓝色玩具 L 值中等,而阴影 L 低,强光 L 高。

    • 设置 L 的阈值:比如 min_L=40(排除过暗阴影),max_L=200(排除过亮反光)。
      • 调大 min_L:排除玩具的暗部;调小 max_L:排除玩具的高光。
  5. 合并三个通道的阈值,得到掩膜

    同时满足 L、A、B 范围的像素为白色(目标),其他为黑色(背景)。

关键规律:阈值调节的 "因果关系"

  • 调大某个通道的最小值(min):会 "切掉" 该通道中数值比新 min 小的像素→掩膜中目标可能变小(排除了更 "极端" 的目标部分)。
  • 调小某个通道的最大值(max):会 "切掉" 该通道中数值比新 max 大的像素→掩膜中目标可能变小(排除了另一方向的极端部分)。
  • 扩大范围(min 减小 + max 增大):掩膜会包含更多像素(可能更完整),但容易混入背景噪声。
  • 缩小范围(min 增大 + max 减小):掩膜更 "干净"(排除噪声),但可能切掉目标的边缘或细节。

总结

  • HSV:适合提取颜色鲜艳、光照稳定的目标(如交通灯、彩色标记),调节 H 锁定颜色,S 排除灰色,V 排除明暗干扰。
  • LAB:适合光照不均的场景(如逆光的目标),L 通道单独控制明暗,A/B 精准区分红绿 / 黄蓝,抗光照干扰更强。

实际操作时,建议用工具(如 OpenCV 的inRange函数、Photoshop 的颜色范围工具)实时预览调节效果,边调边看掩膜变化,直到目标 "完整且干净" 为止~

相关推荐
神码小Z2 分钟前
NewsNow搭建喂饭级教程
人工智能·业界资讯
Dante但丁9 分钟前
手扒Github项目文档级知识图谱构建框架RAKG(保姆级)Day5
人工智能
肖书婷10 分钟前
人工智能 -- 循环神经网络day1 -- 自然语言基础、NLP基础概率、NLP基本流程、NLP特征工程、NLP特征输入
人工智能
Struart_R11 分钟前
LLaVA-3D,Video-3D LLM,VG-LLM,SPAR论文解读
人工智能·深度学习·计算机视觉·3d·大语言模型·多模态
人工智能训练师14 分钟前
openEuler系统中如何将docker安装在指定目录
linux·运维·服务器·人工智能·ubuntu
格林威18 分钟前
Baumer高防护相机如何通过YoloV8深度学习模型实现网球运动员和网球速度的检测分析(C#代码UI界面版)
人工智能·深度学习·数码相机·yolo·ui·c#·视觉检测
西维1 小时前
高效使用AI从了解 Prompt / Agent / MCP 开始
前端·人工智能·后端
柠檬味拥抱1 小时前
基于Ray与Dask的AI Agent大规模数据并行计算优化
人工智能
聚客AI2 小时前
📚LangChain框架下的检索增强:5步构建高效智能体系统
人工智能·langchain·llm
Fine姐2 小时前
自然语言处理NLP L4: 高级语言模型——四种泛化平滑方式
人工智能·语言模型·自然语言处理