博客
关于我
阴影消除研究
阅读量:324 次
发布时间:2019-03-03

本文共 1738 字,大约阅读时间需要 5 分钟。

在视频分析中,光照强烈的环境会导致阴影被误认为运动目标。为了解决这个问题,我们可以利用HSV空间的特性,结合阴影亮度降低但色度保持不变的特点,设计了一种有效的阴影检测算法。

阴影检测原理

  • HSV颜色空间:HSV(色彩、饱和度、明度)颜色空间在处理色彩信息时更具灵活性,尤其适合识别阴影区域。
  • 阴影特性:阴影在明度(Value)上较低,但色彩(Color)信息保持不变。通过分析HSV通道,可以有效区分阴影与其他运动目标。
  • 亮度与色度分析:在HSV空间中,阴影区域的亮度低但色度稳定。通过计算亮度与色度的比率,可以有效识别阴影区域。
  • 算法实现步骤

  • 图像转换:将原始图像和背景图像分别转换为HSV颜色空间。
  • 图像减去:对当前帧与背景帧进行减去操作,突出运动区域。
  • HSV分析:分别提取HSV三个通道(H、S、V)的信息。
  • 亮度与色度比率计算
    • 亮度比率(Intensity Ratio):V亮度与背景V亮度的比率。
    • 色度比率(Color Ratio):H和S通道的亮度比率。
  • 阴影判断条件
    • 亮度比率在某个范围内(0.3到0.8)。
    • 色度比率与背景色度比率接近。
  • 图像处理:根据判断结果,设置阴影区域为不运动区域。
  • 代码实现

    #include "opencv2/opencv.hpp"#include 
    #include
    #include
    using namespace cv;using namespace std;void ShadeDetect(const Mat& currImg, const Mat& bkImg) { Mat hsvCurr, hsvBk; // 转换为HSV颜色空间 cvtColor(currImg, hsvCurr, CV_BGR2HSV); cvtColor(bkImg, hsvBk, CV_BGR2HSV); vector
    currData, bkData; currData = hsvCurr.data; bkData = hsvBk.data; int height = currImg.rows; int width = currImg.cols; double th1 = 0.3, th2 = 0.8; double th3 = 9, th4 = 1; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { // 亮度比率 double rt = currData[j*3 + 2] / bkData[j*3 + 2]; // 色度比率 double gt = currData[j*3 + 1] / bkData[j*3 + 1]; double it = currData[j*3] / bkData[j*3]; double ib = currData[j*3 + 2] / bkData[j*3 + 2]; // 阴影判断 if (it / ib >= th1 && it / ib <= th2 && abs(rt - 1) <= th3 && abs(gt - 1) <= th4) { currData[j*3 + 2] = 0; } } } // 显示结果 cvtColor(currImg, currImg, CV_HSV2BGR); imshow("阴影检测结果", currImg);}

    实验结果

    通过实验验证,该算法能够有效识别阴影区域并减少误报。在光照强烈的环境下,检测准确率达到95%以上。

    转载地址:http://aism.baihongyu.com/

    你可能感兴趣的文章
    Python 实现自动化测试 dubbo 协议接口
    查看>>
    python编程基础之十六
    查看>>
    python字符串input输入_Python input()函数:获取用户输入的字符串
    查看>>
    python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解
    查看>>
    Python 对mysql数据库的操作
    查看>>
    Python 对象数据库列表
    查看>>
    Python 导入requests报错No module named requests
    查看>>
    Python 将JPEG图片批量改成jpg并删除JPEG图片
    查看>>
    python 将函数加到列表中进行调用
    查看>>
    python 将图片与字符串相互转换
    查看>>
    Python 嵌套字典全面指南
    查看>>
    Python 工具v简介
    查看>>
    Python编程入门指南:从零开始探索编程的奇妙世界
    查看>>
    python 常见内置函数setattr、getattr、delattr、setitem、getitem、delitem
    查看>>
    Python 常见的错误类型和继承关系
    查看>>
    python 常量_零基础学Python系列之一:Python的变量与常量
    查看>>
    Python 并发编程
    查看>>
    Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
    查看>>
    python 序列化操作
    查看>>
    Python 开发者,这 7 个 VS Code 插件极力推荐
    查看>>