图像频域中的周期性噪声检测
信息处理
图像处理
fft
噪音
2022-02-11 03:59:09
2个回答
您应该先从一个更简单的一维案例开始,然后再逐步扩展到二维。
如果你切出一行方格纸:
from matplotlib import image
import matplotlib.pyplot as plt
# load image as pixel array
image = image.imread('7ocEX.jpg')
image = 255-image # Invert
plt.plot(image[42])
你可以看到它是一个(间歇性的)脉冲列车:
第一个在像素 23.5,最后一个在像素 672,所以你知道火车的周期是 (672-23.5)/11 = 58.9545 像素/周期,所以频率是:
700 像素/图像 / 58.9545 像素/周期 = 11.8736 周期/图像
如果绘制傅里叶变换:
F = fft.rfft(image[42])
plt.plot(abs(F))
正如预期的那样,您会在 11.9 像素的谐波处看到峰值:
如果您随后从频谱和逆变换中移除这些峰值,则脉冲序列也将被移除。您知道它们的频率,并且您知道谐波是基波的整数倍,因此您可以从频谱中消除它们而无需任何峰值查找。