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

您所在的位置:网站首页 python做图像检测 【思考】opencv python图像清晰度的检测算法靠谱吗?要认真思考一下

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

2023-08-11 03:38| 来源: 网络整理| 查看: 265

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

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

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

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3