opencv 一种聚焦评价函数

本文介绍了一种用于评估图像清晰度的聚焦评价函数。该函数通过计算图像中像素间的灰度差来判断图像是否已正确聚焦。清晰度越高,函数返回的值越大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

聚焦评价函数,对于自动聚焦的实现,具有重要的意义。

聚焦评价函数有很多,每种方法都有其优点和缺点,本文所记录的,只是其中一种方法,个人觉得是简单实用的。

原理很简单,越是清晰的照片,每个像素与其周围像素的差距越大,当聚焦不对时,会发现,整个图像糊成一团,即像素值都在某一小范围内。

int calculateGrayDifference(Mat image)//传入单通道图像
{
	Mat temImage;
	temImage = Mat::zeros(image.size(), CV_32FC1);
	//long int result = 0;
	for (int i = 1; i < image.rows; i++)
	{
		for (int j = 1; j < image.cols; j++)
		{
			int num = image.at<uchar>(i, j);
			int num1 = image.at<uchar>(i-1, j);
			int num2 = image.at<uchar>(i, j-1);
			int num3 = abs((num - num1)*(num - num2));
			temImage.at<float>(i, j) = num3;
			//result = result + num3;
		}
	}
	Scalar total = sum(temImage);
	return cvRound(total[0]);
	//return result;
}

返回值越大,表明图像越清晰。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值