视频质量检测(4)--图像亮度异常检测

本文主要介绍图像亮度异常的检测。
1、亮度异常的定义
视频画面中过亮或者过暗的区域超过一定比例。
2、算法思路
计算图片在灰度图上的均值和方差,如果存在亮度异常时,均值会偏离基准点(可以假设为128或者其他值),方差也会偏大;通过计算灰度图的均值和方差,就可评估图像是否存在过曝光或曝光不足。
但实际上,图像的均值就可以表征画面的亮暗度;考虑方差的因素,需要参考选择的基准点(不同基准点,方差误差较大),综合判断图像亮度的异常。
3、代码实现

void JudgeBright1(Mat src, float &da)
{
	Mat gray;
	cvtColor(src, gray, CV_BGR2GRAY);

	Mat means, stddev;
	meanStdDev(gray, means, stddev);
	da = means.at<double>(0);
}
void JudgeBright2(Mat src, float &da, float &k)
{
	Mat gray;
	cvtColor(src, gray, CV_BGR2GRAY);
	float Sum_a = 0;
	int Hist[256] = { 0 };
	double meanV = 0;
	for (int i = 0; i < gray.rows; i++)
	{
		uchar *ptr = gray.ptr<uchar>(i);
		for (int j = 0; j < gray.cols; j++)
		{
			Sum_a = Sum_a + (ptr[j] - 100);
			Hist[ptr[j]]++;
		}
	}
	da = Sum_a / (gray.rows*gray.cols);

	float D = abs(da);
	float ma = 0,sum_m =0;
	for (int i = 0; i < 256; i++)
	{
		sum_m = sum_m + abs((i - 100) - da)*Hist[i];
	}
	ma = sum_m / (gray.rows*gray.cols);
	float M = abs(ma);

	k = D / M;
}

方法一简单实现,只需根据实际需要中对正常、过亮、过暗的图像均值做好统计,选择合适的阈值即可;
方法二,原理上更为合理,但实际中基准点的选择会导致结果有很大误差。

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

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mirinda_cjy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值