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

本文共 1770 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    nginx 常用配置记录
    查看>>
    nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    Nginx 结合 consul 实现动态负载均衡
    查看>>
    Nginx 负载均衡与权重配置解析
    查看>>
    Nginx 负载均衡详解
    查看>>
    nginx 配置 单页面应用的解决方案
    查看>>
    nginx 配置https(一)—— 自签名证书
    查看>>
    nginx 配置~~~本身就是一个静态资源的服务器
    查看>>
    Nginx 配置清单(一篇够用)
    查看>>
    Nginx 配置解析:从基础到高级应用指南
    查看>>
    nginx+php的搭建
    查看>>
    nginx+tomcat+memcached
    查看>>
    nginx+Tomcat性能监控
    查看>>
    nginx+uwsgi+django
    查看>>
    Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
    查看>>
    nginx-vts + prometheus 监控nginx
    查看>>
    Nginx下配置codeigniter框架方法
    查看>>