python实现理想高通滤波器——数字图像处理

原理

理想高通滤波器(Ideal High-Pass Filter, HPF)是数字信号处理中的一种滤波器,用于允许高频信号通过同时阻断低频信号。其工作原理基于频率选择,即选择性地通过高于某个截止频率的信号,同时抑制低于这个截止频率的信号。

理想高通滤波器的特点是在截止频率处有一个突然的过渡。在截止频率以上,滤波器的增益(或者说对信号的放大程度)为1,即完全通过这些频率的信号;而在截止频率以下,增益为0,意味着完全阻断这些频率的信号。

在频率响应的表示中,理想高通滤波器呈现为一个矩形函数。截止频率定义了这个矩形的边界,在这个频率点,响应从0突变到1。然而,由于这种突变的特性,理想高通滤波器在实际应用中难以实现。实际的高通滤波器通常会有一个过渡带,即从完全阻断到完全通过的过渡是渐进的,而不是突然的。此外,理想高通滤波器在理论上会引入无限的延迟,这在实际应用中是不可接受的。因此,实际的高通滤波器设计会对理想模型进行一定的修改,以实现既有效又实用的滤波效果。

数学表达式

H(u, v) = {0, if D(u, v) < D0
1, if D(u, v) >= D0}

其中:
H(u, v) 是频域中的高通滤波器函数。D(u, v) 是频域坐标 (u, v) 与频域中心的欧几里得距离,即 D(u, v) = sqrt((u - M/2)^2 + (v - N/2)^2),这里 M 和 N 是图像的尺寸。D0 是截止频率,它是一个正的常数,用于决定滤波器的截止边界。
这个函数在截止频率 D0 之外允许频率成分通过,在截止频率之内则阻止频率成分。

python实现下图

python实现理想高通滤波器——数字图像处理_第1张图片
结果显示了理想高通滤波器截止频率分别为15,30,80时的滤波结果。

python代码

import cv2
import numpy as np
import matplotlib.pyplot as plt

img=cv2.imread("Fig0441.tif",0)

rows,cols=img.shape

DFT=np.fft.fft2(img)
center=np.fft.fftshift(DFT)
H=np.zeros((rows,cols))
img_list=[img]
img_name_list=["original"]

for n in [15,30,80]:
    for i in range(rows):
        for j in range(cols):
            D=np.sqrt(np.power((i-rows/2),2)+np.power(j-cols/2),2)
            if D<=n:
                H[i,j]=0
            else:
                H[i,j]=1
        G=np.multiply(H,center)
        no_center=np.fft.ifft2((G))
        g=np.abs(np.fft.ifft2(no_center))
        img_list.append(g)
        img_name_list.append("r="+str(n))
        
_,axs=plt.subplots(1,3)



for i in range(3):
    axs[i].imshow(img_list[i],cmap="gray")
    axs[i].set_title(img_name_list[i])
    axs[i].axis("off")

plt.show()
    

结果展示

python实现理想高通滤波器——数字图像处理_第2张图片

结果分析

python实现理想高通滤波器——数字图像处理_第3张图片
用这个滤波器对图像进行处理,可得到如下所示的结果。我们可以看到,与理想的低通滤波器一样,所得到的图像有很明显的振铃现象。结果图像从视觉上来看,有些偏暗,这是因为图像的直流分量被滤掉的原因。

你可能感兴趣的:(图像处理,python,开发语言,深度学习,opencv,计算机视觉,人工智能)