数字图像处理 第四章

文章介绍了频率域的概念,特别是针对图像处理中的傅里叶变换,阐述了如何用不同频率的正弦和余弦波表示图像特征。低通滤波器用于模糊图像和去除高频噪声,而高通滤波器则用于增强图像边缘和细节。文章还提供了Python代码示例,演示了如何实现低通和高通滤波。
摘要由CSDN通过智能技术生成

第四章

频率域中的频率是什么?

首先,任何信号都可以用不同频率、不同振幅的正弦和余弦波叠加而成,这就是傅里叶级数的基本思想。其次,图像实际上是由像素点组成的数字矩阵,因此也可以用傅里叶级数展开成不同频率的正弦和余弦波的线性组合。那么,图像中的边缘、纹理等特征都对应着不同的频率分量,频率较高的分量对应着图像中的细节和纹理,而频率较低的分量则对应着图像中的大致轮廓和颜色分布。

更进一步,在频率域中,频率是指信号在空间中波动的速率,通常以赫兹(Hz)为单位,表示每秒的波动次数。频率越高,波动越快,空间中的周期也越短。

对于图像而言,频率可以理解为图像中不同空间尺度下的变化速率,这种变化速率可以通过正弦和余弦波来表示。图像中低频分量变化缓慢,对应较大的波长,高频分量变化快,对应较短的波长。因此,在频率域中,图像可以看作是由不同频率的正弦和余弦波叠加而成的。

基本概念

傅里叶变换

假设 F(μ) 为f(t)的傅里叶变换,那么有
F ( μ ) = ∫ − ∞ + ∞ f ( t ) e − j 2 π μ x d x F(\mu) = \int_{-\infty}^{+\infty} f(t) e^{-j2\pi\mu x}dx F(μ)=+f(t)ej2πμxdx
同时有
f ( x ) = ∫ − ∞ + ∞ F ( μ ) e j 2 π μ x d u f(x) = \int_{-\infty}^{+\infty} F(\mu) e^{j2\pi \mu x}du f(x)=+F(μ)ej2πμxdu

这个函数对表明了,给定傅里叶变换可以得到原函数,反之亦然。
F(u)的值的范围覆盖的域(u的值)称为频率域,因为u决定了变换的频率成分。F(u)的M项中的每一个被称为变换的频率分量。

卷积

强烈推荐观看这个视频:https://www.bilibili.com/video/BV1Vd4y1e7pj
这里不再重复了,因为文章的信息展示远远没有这个视频中所展示的直观。总之,我们可以得到以下推论
f ( t ) ★ h ( t )    ⟺    H ( μ ) F ( μ ) f(t)★h(t) \iff H(\mu)F(\mu) f(t)h(t)H(μ)F(μ)
H ( μ ) ★ F ( μ )    ⟺    f ( t ) h ( t ) H(\mu)★F(\mu)\iff f(t)h(t) H(μ)F(μ)f(t)h(t)
其中,F、H分别为f、h的傅里叶变换

离散傅里叶变换

一维(M为大小):
请添加图片描述
请添加图片描述
二维(uv为频率变量,xy为空间变量,MN为大小):
请添加图片描述
请添加图片描述

低通滤波器与高通滤波器

低通滤波器

指使得低频信号通过的滤波器,上面提到,低频分量对应着图像中的大致轮廓与颜色分布,因此,使用低通滤波器可以模糊图像,去除噪声,平滑边缘,同时减少细节信息。低通滤波器通常用于去除高频噪声,如图像中的细节、小波动、图像采样时引入的高频噪声等。常见的低通滤波器有均值滤波器和高斯滤波器。

高通滤波器

高通滤波器可以让高频信号通过,而减少低频信号。在图像处理中,高通滤波器可以增强图像的细节和边缘信息,同时减少平滑的效果。高通滤波器通常用于增强图像的边缘特征,如图像锐化、轮廓检测等。

频率域滤波步骤

1.用(-1)^(x+y)乘以输入图像来进行中心变换
2.由(1)计算图像的DFT,得到F(u,v)
3.用滤波器函数H(u, v)乘以F(u, v)
4.计算(3)中结果的反DFT
5.得到(4)中结果的实部
6.用(-1)^(x+y)乘以(5)中的结果

空间域与频率域滤波关系

变换关系:空间域滤波是在原始图像的像素值上进行操作,例如使用卷积或中值滤波器等。而频率域滤波是在图像的频率域中进行操作,通常是通过将图像进行傅里叶变换来实现。

处理效率:频率域滤波具有处理效率高的优点,因为它可以利用傅里叶变换的性质,在频率域中直接进行滤波操作。相反,空间域滤波需要对每个像素进行操作,因此处理速度可能较慢。

滤波效果:在图像处理中,频率域滤波通常用于去除频率上的噪声,例如周期性噪声、条纹噪声等。而空间域滤波更适合于去除图像上的空间噪声,例如椒盐噪声、高斯噪声等。

实际应用:在实际应用中,可以根据具体情况选择使用空间域滤波或频率域滤波。例如,在对图像进行去噪处理时,如果存在频率上的噪声,则可以使用频率域滤波方法;如果存在空间上的噪声,则可以使用空间域滤波方法。

代码实现

滤波

import cv2
import numpy as np


def lowPassFiltering(img, size):  # 传递参数为傅里叶变换后的频谱图和滤波尺寸
    h, w = img.shape[0:2]  # 获取图像属性
    h1, w1 = int(h / 2), int(w / 2)  # 找到傅里叶频谱图的中心点
    img2 = np.zeros((h, w), np.uint8)  # 定义空白黑色图像,和傅里叶变换传递的图尺寸一致
    img2[h1 - int(size / 2):h1 + int(size / 2),
    w1 - int(size / 2):w1 + int(size / 2)] = 1  # 中心点加减滤波尺寸的一半,刚好形成一个定义尺寸的滤波大小,然后设置为1,保留低频部分
    img3 = img2 * img  # 将定义的低通滤波与传入的傅里叶频谱图一一对应相乘,得到低通滤波
    return img3

def highPassFiltering(img,size):#传递参数为傅里叶变换后的频谱图和滤波尺寸
    h, w = img.shape[0:2]#获取图像属性
    h1,w1 = int(h/2), int(w/2)#找到傅里叶频谱图的中心点
    img[h1-int(size/2):h1+int(size/2), w1-int(size/2):w1+int(size/2)] = 0#中心点加减滤波尺寸的一半,刚好形成一个定义尺寸的滤波大小,然后设置为0
    return img



def cv2_imread(file_path, flag=1):
    # 读取图片数据
    return cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), flag)


gray = cv2_imread("images/lena_gray_512.tif", 1)
gray = cv2.cvtColor(gray, cv2.COLOR_BGR2GRAY)

h, w = gray.shape


# 傅里叶变换
img_dft = np.fft.fft2(gray)
dft_shift = np.fft.fftshift(img_dft)  # 将频域从左上角移动到中间

# 低通滤波
dft_shift_low = lowPassFiltering(dft_shift, 20)
res_low = np.log(np.abs(dft_shift))

# 高通滤波
dft_shift_high = highPassFiltering(dft_shift, 20)
res_high = np.log(np.abs(dft_shift_high))


# 傅里叶逆变换
idft_shift_low = np.fft.ifftshift(dft_shift_low)  # 将频域从中间移动到左上角
ifimg_low = np.fft.ifft2(idft_shift_low)  # 傅里叶库函数调用
ifimg_low = np.abs(ifimg_low)

idft_shift_high = np.fft.ifftshift(dft_shift_high)  # 将频域从中间移动到左上角
ifimg_high = np.fft.ifft2(idft_shift_high)  # 傅里叶库函数调用
ifimg_high = np.abs(ifimg_high)

cv2.imshow("ifimg_low", np.int8(ifimg_low))
cv2.imshow("ifimg_high", np.int8(ifimg_high))
cv2.imshow("gray", gray)




cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值