博客
关于我
阴影消除研究
阅读量: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/

    你可能感兴趣的文章
    NoSQL介绍
    查看>>
    Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Notepad++在线和离线安装JSON格式化插件
    查看>>
    notepad++最详情汇总
    查看>>
    notepad如何自动对齐_notepad++怎么自动排版
    查看>>
    Notification 使用详解(很全
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    Now trying to drop the old temporary tablespace, the session hangs.
    查看>>
    nowcoder—Beauty of Trees
    查看>>
    np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?
    查看>>
    npm error Missing script: “server“npm errornpm error Did you mean this?npm error npm run serve
    查看>>
    npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
    查看>>
    npm install digital envelope routines::unsupported解决方法
    查看>>
    npm install 卡着不动的解决方法
    查看>>
    npm install 报错 EEXIST File exists 的解决方法
    查看>>
    npm install 报错 ERR_SOCKET_TIMEOUT 的解决方法
    查看>>
    npm install 报错 fatal: unable to connect to github.com 的解决方法
    查看>>
    npm install 报错 no such file or directory 的解决方法
    查看>>
    npm install报错,证书验证失败unable to get local issuer certificate
    查看>>
    npm install无法生成node_modules的解决方法
    查看>>