计算图像清晰度

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的像素的矩阵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江鸟的坚持

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

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

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

打赏作者

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

抵扣说明:

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

余额充值