opencv 一种聚焦评价函数

来源:互联网 发布:linux shell命令 编辑:程序博客网 时间:2024/06/10 01:39

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

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

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

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;}

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

0 0
原创粉丝点击