OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。

原文链接:OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测

关于模糊检测,也可以参考OpenCV与AI深度学习 | 实用技巧 | 使用OpenCV进行模糊检测_opencv ai-优快云博客

翻译自【OpenCV Fast Fourier Transform (FFT) for blur detection in images and video streams】,原文链接:

https://www.pyimagesearch.com/2020/06/15/opencv-fast-fourier-transform-fft-for-blur-detection-in-images-and-video-streams/

在本教程中,您将学习如何使用OpenCV和快速傅里叶变换(FFT)在图像和实时视流中执行模糊检测。

今天的教程是我上一篇关于OpenCV模糊检测的博客文章的扩展

(https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/)。

原始模糊检测方法:

  • 依赖于计算图像Laplacian算子的方差

  • 可以仅用一行代码实现

  • 使用起来非常简单

缺点是,Laplacian方法需要大量手动调整用于定义图像是否模糊的”阈值“。如果你能控制你的光线条件,环境和图像捕捉过程,这个方法工作得很好,但如果不是,那你很可能得到杂乱不堪的效果。

我们今天要讲的方法依赖于计算图像的快速傅里叶变换。它仍然需要一些手动调整,但正如我们将发现的,FFT模糊检测器比Laplacian方差更加可靠与稳定。

在本教程结束时,你将拥有一个可以应用于图像和视频流,且功能齐全的FFT模糊检测器。

OpenCV快速傅里叶变换(FFT)模糊检测

在本教程的第一部分,我们将简要讨论:

  • 什么是模糊检测

  • 为什么我们想检测图像/视频流中的模糊

  • 快速傅里叶变换如何让我们检测模糊

什么是模糊检测,什么时候我们需要检测模糊?

图1:如何使用OpenCV和快速傅里叶变换(FFT)算法自动检测照片是否模糊?(图片来源:https://www.cs.unm.edu/~brayer/vision/fourier.html)

模糊检测,顾名思义,是检测图像是否模糊的算法。

模糊检测可能的应用包括:

  • 图像质量的自动分级

  • 帮助专业摄影师在100到1000张的照片拍摄过程中自动丢弃模糊/低质量的照片

  • 将OCR应用于实时视频流,但仅对非模糊帧应用昂贵的OCR计算

这里的关键要点是,为在理想条件下捕获的图像编写计算机视觉代码总是比较容易的。

与其尝试处理质量非常差的图像的边缘情况,不如检测并丢弃质量差的图像(比如有明显模糊的图像)。

这种模糊检测程序既可以自动丢弃质量差的图像,也可以简单地告诉终端用户:”嘿,老兄,再试一次,让我们在这里捕捉一个更好的画面”。

请记住,计算机视觉应用程序应该是智能的,因此有了“人工智能”这个术语——有时候,“智能”可以只是检测输入数据的质量是否太差,而不是试图弄懂它。

什么是快速傅立叶变换(FFT)?

图2:在本教程中,我们将使用OpenCV和NumPy的组合在图像和视流中进行基于快速傅立叶变换(FFT)的模糊检测。

快速傅里叶变换是计算离散傅里叶变换的一种方便的数学算法。它用于将信号从一个域转换为另一个域。

FFT在许多学科中都很有用,包括音乐、数学、科学和工程。例如,电气工程师,特别是那些与无线、电源和音频信号打交道的工程师,需要FFT计算来将时间序列信号转换到频域,因为有些计算在频域更容易进行。相反,使用FFT可以将频域信号转换回时域。

在计算机视觉方面,我们通常认为FFT是一种图像处理工具,它可以将图片在两个图像域内转换:

  • 傅里叶(即频率)域

  • 空间域

此外,FFT同时用实分量和虚分量来表示图像。

通过分析这些值,我们可以执行图像处理程序,如模糊,边缘检测,阈值,纹理分析,以及模糊检测。

回顾快速傅里叶变换的数学细节超出了这篇博客文章的范围,所以如果你有兴趣学习更多关于它的知识,我建议你阅读这篇关于FFT及其与图像处理的关系的文章。

https://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm

对于有学术倾向的读者,可以看看Aaron Bobick在佐治亚理工学院计算机视觉课程上的精彩幻灯片。

https://www.cc.gatech.edu/~afb/classes/CS4495-Fall2014/slides/CS4495-Frequency.pdf

最后,维基百科关于傅里叶变换的页面更详细地介绍了数学,包括它在非图像处理任务中的应用。

项目结构

首先使用本教程的“下载”部分下载源代码和示例图像。一旦你解压缩文件,你将有一个目录组织如下:

$ tree --dirsfirst.├── images│   ├── adrian_01.png│   ├── adrian_02.png│   ├── jemma.png│   └── resume.png├── pyimagesearch│   ├── __init__.py│   └── blur_detector.py├── blur_detector_image.py└── blur_detector_video.py2 directories, 8 files

我们基于FFT的模糊检测算法位于blur_detector.py文件中的pyimagesearch模块中。内部实现了一个函数detect_blur_fft。

我们在两个Python驱动程序脚本中使用detect_blur_fft方法:

  • blur_detector_image:对静态图像进行模糊检测。我在images/目录中为我们提供了一些测试图像,您也应该在自己的图像(模糊的和不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值