AWGN频谱分析
1. 高斯噪声的频谱
高斯白噪声
高斯白噪声, 百度百科上的解释是"幅度分布服从高斯分布, 功率谱密度服从均匀分布", 这两句话, 分别是从空域和频域的角度来描述高斯白噪声
所谓高斯, 就是图像上每个点的幅值都是随机高斯分布的, 不受其他点影响, 在均值点(一般设0点)附近分布的概率高, 离0点越远, 分布的概率越低, 和方差有关, 方差就表示随机点生成的range可以到多大
而白噪声, 如同白光一样, 是所有颜色叠加而成, 在功率谱上趋近为常值, 即噪声频率丰富, 在整个频谱上都有成分, 从高频到低频(所以所谓高斯白噪声是高频噪声的说法是不对的), 这也是高斯白噪声难以去除的原因
-
高斯噪声加在128水平的DC上
noise_img.png
-
频谱
sigma5_dc128.png
图像中中心白点就是DC, 而噪声在高频到低频基本是均匀分布, 并看不出来集中在哪个频段.怎么看图像的频谱?
2. 高斯Blur的频谱响应
-
ksize =3
gaussian_k3.png -
ksize =5
gaussian_k5.png -
ksize =11
gaussian_k11.png
可以看到, ksize越小, 通过的频带越窄, 实验过程中, 高斯核通过cv2.getGaussianKernel(ksize, -1)
得到, 第二个参数为-1
表示根据ksize计算sigma
Opencv Image Filtering
Gaussian standard deviation. If it is non-positive, it is computed from ksize as sigma = 0.3\*((ksize-1)\*0.5 - 1) + 0.8.
3. 去噪前后, 噪声的频谱
对于上文中的noise图像, 用Gaussian Blur进行平滑, 时域上的卷积等同于频域上相乘, 所以我们看到的去噪后的噪声频谱是这样的
-
ksize =3
noises5_gaussianf_k3.png -
ksize =5
noises5_gaussianf_k5.png -
ksize=11
noises5_gaussianf_k11.png
基本上就是noise频谱和blur kernel频谱想成的结果, 可以看到, ksize再大, 也不能完全去除Gaussian Noise, 只能去除掉Gaussian Noise的高频成分, 当ksize=77时, 基本上都在DC附近了, 这就是为什么ksize=77 flicker比较轻了, 因为高频的部分基本被干没了
noises5_gaussianf_k77.png
4. 真实图像频谱, 加噪声后频谱
-
真实图像
i0001.png -
未加噪声频谱
clear_fft.png
-
加噪声后
noisy_img.png -
noisy频谱
noisy_fft.png
影响较大的是高频区域(频谱图的四个角), 噪声的引入使图像有了更多的高频成分
5. 对真实图像Gaussian Blur
-
ksize =3
noisy_gaussianf_k3.png -
ksize =5
noisy_gaussianf_k5.png -
ksize =11
noisy_gaussianf_k11.png -
ksize =77
noisy_gaussianf_k77.png
理论上说, GaussianBlur之后应该就只有低频成分, 但是频谱图像十字交叉的白线说明了GaussianBlur有频率泄露, 这些出现在图像剧烈变化的边缘
频谱图中的亮线
如何快速设计FIR滤波器
窗函数在图像处理中的应用
窗函数在信号处理中的应用
"一个域(不论是时域还是频域)的不连续导致了另一个域的振荡,拖尾,泄漏"
时域周期对应频域离散, DFT(discrete Fourier Transformation)算的是傅立叶级数, 所以计算的时候隐含对时域信号的周期延拓, 一延拓图像边上就会出现不连续, 这就是为什么会有那么重的十字交叉白线, 因为在图像的边缘(比如上边缘和下边缘拼接)往往是最不连续的地方, 这些地方就会产生假的正南正北(上下拼接)或正东正西(左右拼接)的频率成分. 这些频率成分是图像中本来没有的, 要消除这些, 可以加个窗函数, 这些正南正北或正东正西的两线一下就没有了