Incorrect FFT of Gaussian kernel(高斯核的FFT错误)
本文介绍了高斯核的FFT错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试生成高斯内核的FFT,以便在以后的过滤中使用。我的理解是,高斯核的FFT应该产生一个在视觉上与原始强度图像相似的量级。这是我得到的,
这里有一段应该会重现此图像的代码段。
import numpy as np
import cv2
from matplotlib import pyplot as plt
ksize = 50
ksize = ksize*2+1
sigma = 15
fil = cv2.getGaussianKernel(ksize,0)
fil = fil * fil.T
fil_fft = cv2.dft(np.float32(fil),flags = cv2.DFT_COMPLEX_OUTPUT)
fil_shift = np.fft.fftshift(fil_fft)
magnitude_fil = 20*np.log(cv2.magnitude(fil_shift[:,:,0],fil_shift[:,:,1]))
plt.subplot(131),plt.imshow(fil)
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(magnitude_fil)
plt.title('FFT (Magnitude)'), plt.xticks([]), plt.yticks([])
plt.show()
任何关于我为什么会收到这种T型回复的想法都将是很棒的。
推荐答案
您正在正确计算高斯的傅里叶变换,并重新得到高斯。但是你显示的是震级的对数。这种对数变换使高斯看起来像一条抛物线,并增强了结果中非常低强度的噪声(由于数值精度问题)。
输出上的大十字是由混叠造成的:此图中几乎没有混叠,但高斯非常大,因此将始终被截断,即使缺少的部分强度非常低-对数拉伸正好将其带出来。
如果我重复您的实验,并显示没有(左)和有对数拉伸(右)的FFT,您将看到不同之处:
我使用的软件不同,所以我右边的图形看起来与您的不同,噪音较小。
请注意,高斯的傅里叶变换是高斯的,但大小会有所不同,如explained by Mick in his answer。
这篇关于高斯核的FFT错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:高斯核的FFT错误
猜你喜欢
- python-m http.server 443--使用SSL? 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 沿轴计算直方图 2022-01-01