欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

计算图像清晰度

发布时间:2023/12/8 64 豆豆
生活随笔 收集整理的这篇文章主要介绍了 计算图像清晰度 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、方差

在相机拍照时,通常会看到相机由模糊至清晰的自动对焦过程,逐渐形成清晰度比较高的图像。其实这是非常简单的处理,,并不需要非常特殊的算法,方法各式各样好多种,而且效率极其高。

表示样品离散程度的知识:方差和标准差。仅仅利用本知识加以变化,就足够了。

当完全聚焦时,图像最清晰,图像中的高频分量也最多,突变像素与相邻像素的差值也会变大,基于这个原理,对每一个像素水平右侧邻域的两个灰度值相减再相乘,再逐个像素累加,计算相邻两个像素灰度差的平方,如下:

其中:f(x,y) 表示图像f对应像素点(x,y)的灰度值,D(f)为图像清晰度。本方法效率非常高,1280*1024大小的图片10张同时计算能在70毫秒以内完成,而且结果精准。

当然不限于是上面这一种,比如对每一个像素右侧和下侧邻域两个灰度差相乘,再逐个像素累加,也可以,比如:

也可以方差定义里说的样本点与平均值比较的方式,比如如下:

当然按公式做的话,如果是针对灰度图,背景全白而拍摄主体是黑,或背景全黑而拍摄主体全白,D(f)值结果大小会相反,所以此法还不如前面那两种方法。再比如,用下和右相邻点与自己差值平方累加。如下:

也是可以很好的放大差异,越清晰则结果值越大,越模糊则值越小。

说到这里,你会发现上面提到的,其实都是相邻像素差用乘积放大从而鉴定出谁更清晰。

      当然你可以自己改进:比如用上下左右的4个点或者8个点也可以,比如用N个点以中心点差值相乘再求和,等于是以一个小块(模板)的形式去比较计算。

      但是执行效率不如上面几种,如果觉得上面算法效率还是不能满足你的要求,也很简单,采用隔行扫描,或间隔多行的方式,瞬间效率提升几倍。

2、通过拉普拉斯算子求梯度

拉普拉斯算子模块是利用拉普拉斯算子求梯度的模块,拉普拉斯算子是一种二阶导数算子,对于一个连续函数f(x,y),它的位置(x,y)的拉普拉斯值定义为:

在数字图像中,计算函数的拉普拉斯值也可以借助各种模板实现,这里对模板的基本要求是对应中心像素系数为正,面对应中心像素邻近像素的系数为负,面它们的和等于零。选择如下的拉普照拉斯算子模板,

-1

-1

-1

-1

8

-1

-1

-1

-1

则计算过程为:

E=8I(x,y)-I(x-1,y-1)-I(x-1,y)-I(x-1,y+1)-I(x,y-1)-I(x,y+1)-I(x+1,y-1)-I(x+1,y)-I(x+1,y+1);

对于一幅模糊的图像,在每一像素附近的灰度值变化小,则E值小,对于清晰的图像,图像的轮廓鲜明,E值会大,最清晰则E值(即梯度值)最大。

拉普拉斯算子模块内的实现为使用fifo缓存出如图3所示的一个3x3的矩阵,对整帧图像求E的和,相当于对整帧图像做卷积再求和,得到图像的梯度值,输出给聚焦模块进行判断。

3  fifo缓存出一个3x3的像素的矩阵

总结

以上是生活随笔为你收集整理的计算图像清晰度的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。