关键字:blur detection
Function:图像的清晰度检测英文表达为 image blue detection; 以此为关键字可以找到很多有关清晰度检测的demo和算法。
图像的清晰度检测方法主要分为两种情况:
一种是根据已有的图像,来判断现在的图像是否模糊;
另一种是在无参考图像的情况下,判断图像是否模糊;
我们目前解决的问题属于 无参考图像的质量评价
根据参考文献[8,9]可以得知在无参考图像下的,比较好的方法有:Brenner梯度函数、Tenengrad梯度函数、Laplacian梯度函数等;相关代码实现在github
实验环境
Python3
OpenCV3.2
Window 10
算法描述
注意:在实际的操作中,还需要对图片进行预处理操作(检测出人脸区域、设置相同大小的图片、图片灰度化等等)
只有这样才不会受到图像大小以及除去人脸以外的因素的影响。
在此假设人脸区域已经识别
本文初步对以上几种方法进行了实现。
(1)拉普拉斯算子
这个方法最简便,根据参考文献[3]可以,opencv中提供了对laplace的封装方法,直接调用即可,得到拉普拉斯算子边缘检测的图片:
deflapulase(dir,name):""":param dir: 操作目