开发者都在使用的OpenCV FFT傅里叶检测上传到服务器上的模糊图片

FFT 快速傅里叶变换

傅里叶变换

快速傅里叶变换(Fast Fourier Transform,FFT)是一种可在 O(nlogn)

时间内完成的离散傅里叶变换(Discrete Fourier transform,DFT)算法。具体什么是傅里叶变换,这里不再讲述,有兴趣的小伙伴们可以自行百度。

在计算机视觉方面,我们经常将FFT视为代表两个域中的图像的图像处理工具:

  1. 傅立叶(即频域)域
  2. 空间域

因此,FFT以实部和虚部表示图像。

通过分析这些值,我们可以执行图像处理例程,例如模糊,边缘检测,阈值化,纹理分析,甚至可以进行模

利用opencv傅里叶变换检测模糊图片

import numpy as np
import cv2
def detect_blur_fft(image, size=60, thresh=10):
      (h, w) = image.shape
      (cX, cY) = (int(w / 2.0), int(h / 2.0))
      fft = np.fft.fft2(image)
      fftShift = np.fft.fftshift(fft)
      fftShift[cY - size:cY + size, cX - size:cX + size] = 0
      fftShift = np.fft.ifftshift(fftShift)
      recon = np.fft.ifft2(fftShift)
      magnitude = 20 * np.log(np.abs(recon))
      mean = np.mean(magnitude)
      return (mean, mean <= thresh)

首先我们建立一个利用opencv快速傅里叶变换检测模糊照片的函数,函数接受:

image:我们用于模糊检测的输入图像

size:围绕图像中心点的半径大小,我们将使FFT偏移为零

thresh:阀值,该值将与幅值的平均值进行比较,以确定图像是否被认为是模糊

模糊图片检测

这里,我们使用NumPy的内置算法,计算图片的FFT

然后,我们将结果的零频率分量(DC分量)移到中心,以便于后期数据分析。

通过fftShift[cY - size:cY + size, cX - size:cX + size] = 0行将FFT移位的中心归零(即去除低频)

应用反向移位将直流分量放回top-left

应用逆变换FFT

已经将中心DC值归零后,再次对重构图像进行频谱分析magnitude = 20 * np.log(np.abs(recon))。

计算幅度的平均值mean = np.mean(magnitude)。

返回2元组 :幅度的平均值以及指示输入图像是否模糊的布尔值

代码截图

以上函数便是完整的图片模糊检测的全部代码,中间的FFT变换,若感兴趣的可以好好学习一下高等数学的基础知识,有了此函数,我们传入需要检测的图片,便可以进行图片的检测了。

模糊图片检测

opencv模糊图片检测

orig = cv2.imread("2.jpg")
orig = cv2.resize(orig, (600,500))
gray = cv2.cvtColor(orig, cv2.COLOR_BGR2GRAY)
(mean, blurry) = detect_blur_fft(gray, size=60,thresh=10)
image = np.dstack([gray] * 3)
color = (0, 0, 255) if blurry else (0, 255, 0)
text = "Blurry ({:.4f})" if blurry else "Not Blurry ({:.4f})"
text = text.format(mean)
cv2.putText(image, text, (10, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.7,color, 2)
cv2.imshow("Output", image)
cv2.waitKey(0)

首先我们传入需要进行检测的图片,进行图片的resize,然后cv2.cvtColor把图片转入灰度空间,便于计算,使用先前建立的函数,进行图片的检测,等待返回结果。

代码截图

模糊图片检测

小伙伴们可以根据自己领域内的图片,对检测图片的阈值进行设置来适应不同平台,不同领域的图片模糊检测

当然根据以上的FFT技术,我们也可以进行视频的模糊实时检测,这里小编不再介绍,前期也介绍了很多关于视频检测方面的方法,其实是把视频帧提取出来,每帧图片进行处理,跟图片检测一样的机制。

更多transformer,VIT,swin tranformer
参考头条号:人工智能研究所
v号:启示AI科技
微信中复制如下链接,打开,免费使用chatgpt
 
https://wx2.expostar.cn/qz/pages/manor/index?id=1137&share_from_id=79482&sid=24

 动画详解transformer  在线使用教程

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能研究所

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值