python高通滤波_理想高通滤波实现Python opencv示例

理想高通滤波实现 python opencv

import numpy as np

import cv2

from matplotlib import pyplot as plt

plt.rcparams[‘font.sans-serif']=[‘simhei']

plt.rcparams[‘axes.unicode_minus'] = false

i = cv2.imread(‘capture3.png')

cv2.imshow(‘original',i)

(r,g,b) = cv2.split(i)

i = cv2.merge([b,g,r])

j = np.double(cv2.cvtcolor(i,cv2.color_rgb2gray))

d1 = 30

d2 = 60

d3 = 160

fuv = np.fft.fftshift(np.fft.fft2(j))

print(‘fuv',fuv)

print(i.shape)

m,n = i.shape[0],i.shape[1]

xo = np.floor(m/2)

yo = np.floor(n/2)

h1 = np.zeros((m,n))

h2 = np.zeros((m,n))

h3 = np.zeros((m,n))

for i in range(m):

for j in range(n):

d = np.sqrt((i-xo)**2+(j-yo)**2)

if d>=d1:

h1[i,j]=1

else:

h1[i,j]=0

if d>=d2:

h2[i,j]=1

else:

h2[i,j]=0

if d>=d3:

h3[i,j]=1

else:

h3[i,j]=0

guv1 = h1*fuv

guv2 = h2*fuv

guv3 = h3*fuv

g1 = np.fft.ifftshift(guv1)

g1 = np.uint8(np.real(np.fft.ifft2(g1)))

print(‘g1',g1)

g2 = np.fft.ifftshift(guv2)

g2 = np.uint8(np.real(np.fft.ifft2(g2)))

print(‘g2',g2)

g3 = np.fft.ifftshift(guv3)

g3 = np.uint8(np.real(np.fft.ifft2(g3)))

print(‘g3',g3)

plt.subplot(2,2,1),plt.imshow(i),plt.title(‘原图像')

plt.subplot(2,2,2),plt.imshow(g1),plt.title(‘d0=30')

plt.subplot(2,2,3),plt.imshow(g2),plt.title(‘d0=60')

plt.subplot(2,2,4),plt.imshow(g3),plt.title(‘d0=160')

plt.show()

效果:

8c57a800ba080abcf3efd885657fe093.png

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对萬仟网的支持。如果你想了解更多相关内容请查看下面相关链接

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值