图像的高频和低频
低频对应图像内变化缓慢的灰度分量。列如,在一副大草原上的图像中,低频对应着广袤的颜色趋于一致的草原
高频对应着图像内变化越来越快的灰度分量,是由灰度的尖锐过度造成的,列如,在一副大草原的图像中,其中狮子的边缘等信息
衰减高频而通过低频,低通滤波器,将模糊一幅图像
衰减低频而通过高频,高通滤波器,将增强尖锐的细节,但是会导致图像的对比度降低
滤波
接受(通过)或者拒绝一定频率的分量
通过低频的滤波器称为低通滤波器
通过高频的滤波器称为高通滤波器修改傅里叶变换以达到特殊的目的,然后计算IDFT返回到图像域
特殊目的:图像增强、图像去燥、边缘检测、特征提取、压缩、加密等
代码:高频滤波,中心部分设置成0
import numpy as np
import cv2 #opencv-python
import matplotlib.pyplot as plt
img = cv2.imread("../images/chenqiaoen.jpg",0)
#傅里叶变换
f = np.fft.fft2(img)
#得到左上角低频成分放到中间
fshift = np.fft.fftshift(f)
#得到图片的行列,也就是宽高
rows,cols = img.shape
#获取中心位置
crow,ccol = int(rows/2),int(cols/2)
#中心低频的区域,+-30都变为0
fshift[crow-30:crow+30,ccol-30:ccol+30] = 0
#低频中心位置移动到左上角
ishift = np.fft.ifftshift(fshift)
#傅里叶逆变换
iomage = np.fft.ifft2(ishift)
#取绝对值
iimg = np.abs(iomage)
#展示
plt.subplot(121)
plt.imshow(img,cmap = "gray")
plt.title("original")
plt.axis("off")
plt.subplot(122)
plt.imshow(iimg,cmap="gray")
plt.title("iimg")
plt.axis('off')
plt.show()
效果展示:左边是原始图像,右边是滤掉低频的图像
代码:低频滤波,中心部分设置成1
# -*- coding: utf-8 -*-
"""
create time:2023年4月1日17:37:22
@author: seer_HT
"""
import numpy as np
import cv2 #opencv-python
import matplotlib.pyplot as plt
img = cv2.imread("../images/chenqiaoen.jpg",0)
#傅里叶变换
dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT)
#低频左上角移动到中心位置
dftShift = np.fft.fftshift(dft)
#计算中心位置,行列
rows,cols = img.shape
crow,ccol=int(rows/2),int(cols/2)
#眼膜图像,2通道
mask = np.zeros((rows,cols,2),np.uint8)
#中心位置设置成1
mask[crow-30:crow+30,ccol-30:ccol+30]=1
#眼膜和频谱图像进行乘法,得到低通滤波
fShift = dftShift*mask
#低频移动到左上角
ishift = np.fft.ifftshift(fShift)
#傅里叶反变换
iImg = cv2.idft(ishift)
#将俩个通道的图像转换为灰度图像
Imgre = cv2.magnitude(iImg[:,:,0],iImg[:,:,1])
plt.subplot(121)
plt.imshow(img,cmap="gray")
plt.title("original")
plt.axis('off')
plt.subplot(122)
plt.imshow(Imgre,cmap='gray')
plt.title('inverse')
plt.axis('off')
plt.show()
效果展示:
转载自CSDN-专业IT技术社区
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/chehec2010/article/details/129897673