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

    你可能感兴趣的文章
    POJ 基础数据结构
    查看>>
    POJ 题目3020 Antenna Placement(二分图)
    查看>>
    Poj(1797) Dijkstra对松弛条件的变形
    查看>>
    POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
    查看>>
    Qt笔记——SQLite初探QSqlDatabase QSqlQuery
    查看>>
    POJ-1163-The Triangle
    查看>>
    POJ-Fence Repair 哈夫曼树
    查看>>
    poj1061 - 同余方程,二元一次不定方程
    查看>>
    Qt笔记——SQLite再探
    查看>>
    poj1068Parencodings
    查看>>
    poj1182(带权并查集)
    查看>>
    POJ1182(带权并查集)
    查看>>
    Qt笔记——Qt初探、PyQt5和Qt5
    查看>>
    poj1190生日蛋糕
    查看>>
    POJ1218 HDU1337 ZOJ1350 UVALive2557 THE DRUNK JAILER
    查看>>
    poj1222 EXTENDED LIGHTS OUT(gauss)
    查看>>
    POJ1240 m叉树
    查看>>
    Poj1328--Radar Installation(区间选点)
    查看>>
    POJ1384Piggy-Bank(DP)
    查看>>
    POJ1417 True Liars —— 并查集 + DP
    查看>>