HSV颜色空间过滤

在计算机视觉领域,"颜色" 是最直观的特征之一,无论是车道线检测、物体识别还是图像分割,精准的颜色过滤都是核心基础。但直接使用日常熟知的 RGB 空间做颜色筛选,往往会被光照、阴影、反光等因素干扰,而 HSV、LAB 等色彩空间则能完美解决这一痛点。

适合过滤的颜色空间:HSV

HSV(色相 Hue、饱和度 Saturation、明度 Value)是为 "人类视觉感知" 设计的颜色空间,它将颜色拆分为三个独立维度,完美解决了 RGB 的耦合问题。

通道 取值范围 通俗理解 过滤作用
H(色相) 0-179 颜色的 "种类"(如红、黄、绿) 锁定目标颜色的固定区间(如黄色 = 20-30)
S(饱和度) 0-255 颜色的 "鲜艳程度"(0 = 灰度,255 = 纯彩色) 区分 "彩色目标" 和 "灰度背景"(如白色车道线 S≈0)
V(明度) 0-255 颜色的 "亮度"(0 = 纯黑,255 = 纯白) 过滤阴影(低 V)、过曝(高 V),只保留有效亮度区域

HSV 的核心优势:解耦

过滤的本质是 "维度解耦":将耦合的 RGB 拆分为独立的颜色 / 亮度维度,降低阈值筛选难度;

RGB转成HSV

python 复制代码
# 转换到HSV的颜色空间
hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)

举个例子:

  • 黄色车道线:无论晴天还是阴天,H 值始终在 20-30 之间,只需调整 V 值即可适配亮度;
  • 白色车道线:无需限制 H 值,只需锁定 "S<30(低饱和度)+ V>180(高亮度)",就能避开所有彩色干扰。

示例代码(以 "提取黄色 / 白色车道线" 为例)

python 复制代码
import cv2
import numpy as np

def color_based_filtering(image):
    # HSV空间过滤(识别黄色/白色车道线)
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

    # 白色区域
    lower_white = np.array([0, 0, 180])
    upper_white = np.array([180, 30, 255])
    white_mask = cv2.inRange(hsv, lower_white, upper_white)

    # 黄色区域
    lower_yellow = np.array([20, 100, 100])
    upper_yellow = np.array([30, 255, 255])
    yellow_mask = cv2.inRange(hsv, lower_yellow, upper_yellow)

    # 合并车道线颜色掩码
    lane_color_mask = cv2.bitwise_or(white_mask, yellow_mask)

    return lane_color_mask

if __name__ == "__main__":
    # 读取测试图片(替换为你的车道图片路径)
    img = cv2.imread("1.png")
    # 缩放图片(可选,适配显示)
    img = cv2.resize(img, (640, 480))
    lane_color_mask = color_based_filtering(img)
    cv2.imshow("lane_color_mask", lane_color_mask)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  • cv2.inRange:核心过滤函数,筛选出 HSV 值在指定区间内的像素,生成二值掩码(255 = 目标颜色,0 = 背景);

  • 掩码合并 :通过cv2.bitwise_or合并多颜色掩码,支持扩展到红色、绿色等其他颜色;

运行效果

原图

过滤后掩码图(除了车道线还有白云、建筑也是白的被保留下来)

总结

易受相似颜色背景干扰:颜色过滤仅关注 "颜色特征",无法区分 "目标物体" 和 "背景中相似颜色的干扰物":

  • 车道线检测中:黄色路牌、白色车辆、灰色路面反光都会触发黄 / 白色阈值,导致掩码中混入大量噪点;
  • 其他场景:用 HSV 过滤红色苹果时,红色广告牌、花瓣会被误判为目标。

颜色空间过滤的核心缺点是对动态光照敏感、易受相似颜色干扰、特征单一,本质是 "单一维度筛选无法适配复杂场景"。

相关推荐
比奥利奥还傲.28 分钟前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节
FII工业富联科技服务1 小时前
从人机共舞到工业精密操作:机器人如何突破动作控制与场景适应?
人工智能·机器人·机器翻译模型
serdes212 小时前
56G PAM4 SerDes RX 32 路时间交织 SAR ADC 顶层与采样前端
人工智能
小和尚同志7 小时前
小黑插图 Skill:从 11.7k star 的 Codex 专属,到 Claude Code 能用的平替
人工智能·aigc
高洁017 小时前
孪生不止在工厂:能源、医疗与农业
人工智能·深度学习·transformer·知识图谱·tornado
外域速览7 小时前
智谱50亿美元押注AI自训练
大数据·人工智能
人工智能培训7 小时前
孪生不止在工厂:能源、医疗与农业
大数据·人工智能
米小虾7 小时前
让模型说"我不知道",比让它答对更难:放弃文本生成能换来什么
人工智能
新新学长搞科研7 小时前
【SPIE出版】2026年人工智能、新材料与新能源国际学术会议(AINMNE 2026)
人工智能·新能源·新材料
野生技术架构师8 小时前
2026 Java 面试全套总结,八股 + 场景 + AI 相关面试考点
java·人工智能·面试