实战 | 教你自动查找拍糊的图

2019 年 9 月 15 日 计算机视觉life

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货


本文转载自AI算法与图像处理

不知道大家有没有注意到,手机的垃圾清理软件一般都有一个功能,可以检测出拍摄质量不好的照片,然后提示你是否需要删除。

那么我们能否通过自己所学的技术来实现这一个功能呢?


答案当然是可以的。



1


什么是模糊的图像


首先我们看一幅对比图像(为了保护他人隐私,我在脸部和水印都打码了)


对模糊图像的直观感受

有一种若隐若现的赶脚,隐隐约约能看清楚一些事物,但是给人感觉并不是很舒服,不是非常的清晰。

正常的图像经过滤波处理也能产生模糊的效果,那么,例如一张图片使用均值滤波器处理后变模糊了,从其本质上去分析,像素的值发生了什么变化。


假设采用3x3的均值滤波,计算过程是,利用周围的9个点取平均当做这点的像素值(灰度值),很明显,与原图像中相邻点间像素值的梯度和方差相比都会有一定程度降低。



高斯滤波

什么原因导致拍摄图像模糊?

(1)抖动造成模糊

抖动又可分为手抖,相机抖动,三脚架抖动等

(2)快门速度太慢

快门,简单来说,就是控制曝光的一个进光量的闸门。快门速度指的是控制曝光时间的长短,快门越快,曝光时间越短。

详细的技巧可以自行百度。

(3)对焦问题

由于手动对焦或后键对焦时没合焦就按下快门

(4)拍摄对象速度过快

如果拍摄对象比快门速度还快也会导致模糊。

(5)其他原因

如镜头积灰,有划痕等等。

上述内容,仅仅当做科普,下面我们来具体研究和实现一下如何检测模糊图像


2


检测模糊图像的原理


常见的类型


一种是根据已有的图像,来判断现在的图像是否模糊

另一种是在无参考图像的情况下,判断图像是否模糊


今天我们研究比较常见的情况,即无参考图像的情况下对其质量进行评价(是否模糊)


主要思想:(1)先对原图像进行灰度化(2)然后用3x3的拉普拉斯算子进行滤波处理(3)在计算处理后图像的均值和方差,将方差当做模糊检测的阈值选定标准即可。
从上面的分析可知,假如是一张模糊图片其方差会低于清晰的图片,因此,我们设置一个合理的 方差阈值 ,即可判断是否是模糊图像

关键代码

def variance_of_laplacian(image):  # 对图像进行拉普拉斯变换,并返回拉普拉斯的方差  return cv2.Laplacian(image, cv2.CV_64F).var()
# 设置需要输入的参数,-i 输入图像的路径(文件夹名), -t 设置阈值的大小ap = argparse.ArgumentParser()ap.add_argument("-i", "--images", required=True, help="path to input directory of images")ap.add_argument("-t", "--threshold", type=float, default=100.0, help="focus measures that fall below this value will be considered 'blurry'")args = vars(ap.parse_args())
# 循环输入图片for imagePath in paths.list_images(args["images"]): # 导入图像并转换为灰度图,计算我们关注的拉普拉斯变换后的方差 image = cv2.imread(imagePath) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) fm = variance_of_laplacian(gray) text = "Not Blurry"
# 当方差小于阈值时,显示为模糊 if fm < args["threshold"]: text = "Blurry"
# 显示图片 cv2.putText(image, "{}: {:.2f}".format(text, fm), (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 3) cv2.imshow("Image", image) key = cv2.waitKey(0)



效果演示:

3


总结


上述的采用计算 拉普拉斯算子处理后的图像的方差,并设定方差阈值进行判断是否模糊,基本上能满足我们的要求。

存在的不足之处:

(1)阈值的设定需要靠人去决定,所以阈值设置不合理,会严重影响结果

(2)对于背景模糊或背景虚化,很容易出现误判



详细代码链接:

https://github.com/DWCTOD/AI_study/tree/master/%E5%90%88%E6%A0%BC%E7%9A%84CV%E5%B7%A5%E7%A8%8B%E5%B8%88/%E5%AE%9E%E6%88%98%E7%AF%87/opencv/%EF%BC%88%E4%BA%8C%EF%BC%89%E6%A8%A1%E7%B3%8A%E5%9B%BE%E5%83%8F%E6%A3%80%E6%B5%8B

其他资料和参考资料图像清晰度评价15种方法对比

https://blog.csdn.net/weixin_38285131/article/details/80890109

https://www.cnblogs.com/greentomlee/p/9379471.html

https://blog.csdn.net/qq_42238397/article/details/81745600

https://github.com/17S051031/detecting-blur


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、算法竞赛、图像检测分割、人脸人体、医学影像、自动驾驶、综合等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


从零开始学习三维视觉核心技术,扫描查看介绍,3天内无条件退款

学习切忌单打独斗,一个良好的学习圈子能够帮助你快速入门,交流讨论才能少走弯路,快速进步!

推荐阅读

实战 | 相机标定

实战 | 图像矫正技术

实战 | Unity下ARKit与OpenCV的结晶

实战 | 基于SegNet和U-Net的遥感图像语义分割

实战 | 文字定位与切割

实战 | 源码入门之Faster RCNN

我用MATLAB撸了一个2D LiDAR SLAM

实战 | 哪个瞬间让你突然觉得CV技术真有用?

干货 | 史上最全 OpenCV 活体检测教程

解决方案 | 如何用普通手机准确测量物体体积?


最新AI干货,我在看  

登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
332+阅读 · 2020年3月17日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
136+阅读 · 2020年2月16日
 图像内容自动描述技术综述
专知会员服务
84+阅读 · 2019年11月17日
实战 | 图像矫正技术
计算机视觉life
4+阅读 · 2019年2月28日
实战 | 相机标定
计算机视觉life
15+阅读 · 2019年1月15日
人脸识别入门实战
人工智能头条
4+阅读 · 2018年12月12日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
实战 | 40行代码实现人脸识别
七月在线实验室
3+阅读 · 2018年3月7日
Arxiv
4+阅读 · 2019年1月14日
Arxiv
7+阅读 · 2018年5月23日
Arxiv
5+阅读 · 2018年4月22日
Arxiv
5+阅读 · 2015年9月14日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
332+阅读 · 2020年3月17日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
136+阅读 · 2020年2月16日
 图像内容自动描述技术综述
专知会员服务
84+阅读 · 2019年11月17日
相关资讯
实战 | 图像矫正技术
计算机视觉life
4+阅读 · 2019年2月28日
实战 | 相机标定
计算机视觉life
15+阅读 · 2019年1月15日
人脸识别入门实战
人工智能头条
4+阅读 · 2018年12月12日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
实战 | 40行代码实现人脸识别
七月在线实验室
3+阅读 · 2018年3月7日
Top
微信扫码咨询专知VIP会员