数字图像处理与Python实现-图像降噪-理想高通滤波

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/wujuxKkoolerter/article/details/102759087

理想高通滤波

H ( u , v ) = { 0 , D ( u , v ) D 0 1 , D ( u , v ) > D 0 (14-1) H(u,v) = \begin{cases} 0 &, D(u,v) \leq D_0 \\ 1 &, D(u,v) \gt D_0 \end{cases} \tag{14-1}

式中的 D ( u , v ) D(u,v) 表达为:

D ( u , v ) = ( u P 2 ) 2 + ( v Q 2 ) 2 (14-2) D(u,v) = \sqrt{(u - \frac{P}{2})^2+(v - \frac{Q}{2})^2} \tag{14-2}

Python语言实现如下:

def high_pass_kernel(img,cut_off):
   
    assert img.ndim == 2
    r,c = img.shape[1],img.shape[0]
    u = np.arange(r)
    v = np.arange(c)
    u, v = np.meshgrid(u, v)
    low_pass = np.sqrt( (u-r/2)**2 + (v-c/2)**2 )

    low_pass[low_pass <= cut_off] = 1
    low_pass[low_pass > cut_off] = 0

    return low_pass

def high_pass(src,D0=5):
    assert src.ndim == 2
    kernel = high_pass_kernel(src,D0)
    gray = np.float64(src)
    gray_fft = np.fft.fft2(gray)
    gray_fftshift = np.fft.fftshift(gray_fft)
    dst = np.zeros_like(gray_fftshift)
    dst_filtered = kernel * gray_fftshift
    dst_ifftshift = np.fft.ifftshift(dst_filtered)
    dst_ifft = np.fft.ifft2(dst_ifftshift)
    dst = np.abs(np.real(dst_ifft))
    dst = np.clip(dst,0,255)
    return np.uint8(dst)

程序运行结果如下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wujuxKkoolerter/article/details/102759087
今日推荐