视频质量检测(5)--视频遮挡诊断

本文探讨了视频遮挡的诊断方法,包括亮度异常的定义、算法思路和代码实现。算法通过检测图像边缘和像素方差变化来识别遮挡,将图像划分为小块进行分析,旨在提高遮挡诊断的准确性。
摘要由CSDN通过智能技术生成

本文主要介绍视频遮挡的诊断。
1、亮度异常的定义
视频画面中由于人为或非人为因素导致设置的监控区域画面上有大面积的遮挡。
2、算法思路
图像发生遮挡时:(1)对应的区域必然会模糊,边缘信息减少;(2)该区域的像素方差也减小。基于此,对图像做边缘检测,分别对边缘图和原图求方差。
为了提高诊断准确率,可将图分成N*N块,分别对小块进行诊断,满足条件认为该帧图像遮挡。
3、代码实现
话不多说,直接上代码。

bool Cover2(Mat src)
{
	bool IsCovered = false;
	Mat gray;
	cvtColor(src, gray, CV_BGR2GRAY);

	Mat lapImg;
	Laplacian(gray, lapImg, gray.depth());

	int CoverBlock = 0;
	for (int i = 0; i < gray.rows; i = i + gray.rows / 3)
	{
		for (int j = 0; j < gray.cols; j = j + gray.cols / 3)
		{
			float sigma_g = 0;
			float sigma_l = 0;
			Rect r = Rect(j, i, gray.cols / 3, gray.rows / 3);
			Mat subImg = gray(r);
			Mat subLap = lapImg(r);
			Mat means, stddev_g, stddev_l;
			meanStdDev(subImg, means, stddev_g);
			meanStdDev(subLap, means, stddev_l);

			sigma_g = stddev_g.at<double>(0);
			sigma_l = stddev_l.at<double>(0);

			if (sigma_g < 25 && sigma_l < 10)
				CoverBlock++;
		}
	}
	IsCovered = CoverBlock > 0 ? true : false; 

	return IsCovered;
}

学习使我快乐!本人希望在分享过程中与各位共同学习、共同提高!

5.27更
该方法有个缺陷:遮挡必须覆盖一个定义的格子范围,否则原图的像素差异会变大,对应的方差也会变大,反而起不到遮挡预警的作用。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mirinda_cjy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值