《Opencv计算机视觉实战》笔记_10:傅里叶变换

傅里叶变换

cv2.dft(src[, dst[, flags]]) 傅里叶变换
  • src:输入(必须先转换成np.float32格式)
  • dst:输出
  • flags:转换标志
numpy.fft.fftshift(x, axes=None) 将频率为0的部分转换到频谱的中心

将在左上角频率为0的部分转换到中心位置(一般会将低频部分置于频谱中心,高频部分由中心向四周发散,越远离中心,频率越高)

  • x:输入(经过傅里叶变换(cv2.dft))
cv2.magnitude(x, y[, magnitude]) 计算2D向量的大小
  • x:经过傅里叶变换(cv2.dft)和频谱转换(numpy.fft.fftshift)后的某一通道
  • y:经过傅里叶变换(cv2.dft)和频谱转换(numpy.fft.fftshift)后的某一通道(必须和x有相同的size)
  • 把结果映射到0~255:20*np.log(cv2.magnitude())
cv2.idft(src[, dst[, flags]]) 傅里叶逆变换
  • src:输入(必须先转换成np.float32格式)
  • dst:输出
  • flags:转换标志
cv2.fft.ifftshift(x, axes=None) 'fftshift’的逆变换

将在中心区域的低频部分重新转换到左上角


高频:变化剧烈的灰度分量

低频:变化缓慢的灰度分量

体现在滤波方面:

高通滤波器:只保留高频,会使图像细节增强

1、制作高通滤波器的掩膜(保留频谱高频部分,即除去中心区域的低频部分):声明一个和原始图像大小相同numpy.zeros,将中心区域置为0
2、将经过傅里叶变换(cv2.dft)和频谱转换(numpy.fft.fftshift)后的频谱乘以高通滤波器的掩膜,得到图像中的高频部分
3、利用cv2.fft.ifftshift将上述高频部分进行频谱位置还原
4、利用傅里叶逆变换(cv2.idft)以及cv2.magnitude处理上述结果,得到经过高通滤波器处理后的图像

低通滤波器:只保留低频,会使图像模糊

1、制作低通滤波器的掩膜(只保留中心区域的低频部分):声明一个和原始图像大小相同numpy.zeros,将中心区域置为1
2、将经过傅里叶变换(cv2.dft)和频谱转换(numpy.fft.fftshift)后的频谱乘以低通滤波器的掩膜,得到图像中的低频部分
3、利用cv2.fft.ifftshift将上述低频部分进行频谱位置还原
4、利用傅里叶逆变换(cv2.idft)以及cv2.magnitude处理上述结果,得到经过低通滤波器处理后的图像

发布了10 篇原创文章 · 获赞 0 · 访问量 86

猜你喜欢

转载自blog.csdn.net/qq_36379548/article/details/104568836