我是靠谱客的博主 欣慰海燕,最近开发中收集的这篇文章主要介绍数字图像处理 高通滤波,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

import numpy as np
import cv2

def convert_2d(r):
    r_ext = np.zeros((r.shape[0] * 2, r.shape[1] * 2))
    for i in range(r.shape[0]):
        for j in range(r.shape[1]):
            r_ext[i][j] = r[i][j]
    # 傅里叶变换
    r_ext_fu = np.fft.fft2(r_ext)
    # 将低频信号移至中间,等效于在时域上对f(x,y)乘以(-1)^(m+n)
    r_ext_fu = np.fft.fftshift(r_ext_fu)

    # 截止频率
    d0 = 20
    n = 2
    # 频率域中心坐标
    center = (r_ext_fu.shape[0] // 2, r_ext_fu.shape[1] // 2)
    h = np.empty(r_ext_fu.shape)
    # 绘制滤波器
    for u in range(h.shape[0]):
        for v in range(h.shape[1]):
            duv = ((u - center[0]) ** 2 + (v - center[1]) ** 2) ** 0.5
            if duv == 0:
                h[u][v] = 0
            else:
                h[u][v] = 1/((1+(d0/duv))**(2*n))

    s_ext_fu = r_ext_fu * h
    s_ext = np.fft.ifft2(np.fft.ifftshift(s_ext_fu))
    s_ext = np.abs(s_ext)
    s = s_ext[0:r.shape[0], 0:r.shape[1]]

    for i in range(s.shape[0]):
        for j in range(s.shape[1]):
            s[i][j] = min(max(s[i][j], 0), 255)
    return s.astype(np.uint8)

def convert_3d(r):
    s_dsplit = []
    for d in range(r.shape[2]):
        rr = r[:, :, d]
        ss = convert_2d(rr)
        s_dsplit.append(ss)
    s = np.dstack(s_dsplit)
    return s

im = cv2.imread('tetet.jpg')
im_converted_mat = convert_3d(im)
cv2.imshow('ditong', im_converted_mat)
cv2.imwrite('ditong4.jpg', im_converted_mat)
cv2.waitKey()

在这里插入图片描述
在这里插入图片描述

最后

以上就是欣慰海燕为你收集整理的数字图像处理 高通滤波的全部内容,希望文章能够帮你解决数字图像处理 高通滤波所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部