【思考】opencv python图像清晰度的检测算法靠谱吗?要认真思考一下

很多应用场景会对图片的质量有要求,因相机抖动或者物体处于运动时容易造成图片模糊。

那么模糊的照片怎么去衡量呢?根据参考大量的方案-对图像进行梯度求解然后求方差,以方差的值作为评价图像的清晰程度。

最为常用的或者说最为经典的是拉普拉斯算子进行的梯度计算。

图像-》灰度-》拉普拉斯-》方差。

import cv2
imagePath ='./ai_hellohello.jpg'
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
result = cv2.Laplacian(gray, cv2.CV_64F).var()
print('ai_hellohello.jpg blur:',result )

通过以上代码可以计算得到一个值,可能是几百可能是几千,模糊的就是几十。

但有个问题比较值得深思的时候,阈值怎么设置来区分?

同样的尺寸,不同的清晰度直接比较还是会出现一定的区分度。

但是不同尺寸的比较就不能用一个阈值来设置了。

对于人脸识别中,对人脸的清晰度的检测就是会遇到这个问题。

一个像素尺寸比较大的模糊人脸在进行resize到一个小的尺寸的时候,拉普拉斯方差值同样是会提升的,而且有可能提升很多倍。

 

也就是,让我们比较两个不一样高的人,看看谁更重,看身材还是大致准确的评估出来,

但是 俩个身高不高的人,仅仅看身材是无法评估出来的。

 

所以,我建议是自己分析图片尺寸的区间划分出来,对每个区间去做分析,在每个区间上设置一个合适的阈值来对图片进行模糊和清晰度的评判。

当然,更为有效的方式就是神经网络CNN去训练,如果对人脸的分析 那就要先检测图像中的人脸区域再去做判断。

不要拿一个包含背景的图片整图去分析。

 

参考:https://www.jianshu.com/p/60ac53013be4

如果你有好的想法,或者希望探讨,欢迎加我微信号:ai_hellohello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值