时间:2021-05-22
理想高通滤波实现 python opencv
import numpy as np import cv2 from matplotlib import pyplot as pltplt.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()效果:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
主要讲解Python调用OpenCV实现图像平滑,包括四个算法:均值滤波、方框滤波、高斯滤波和中值滤波.给图像增加噪声:importcv2importnumpy
本文实例为大家分享了python+opencv实现霍夫变换检测直线的具体代码,供大家参考,具体内容如下python+opencv实现高斯平滑滤波python+o
本文实例为大家分享了opencv+python实现均值滤波的具体代码,供大家参考,具体内容如下原理均值滤波其实就是对目标像素及周边像素取平均值后再填回目标像素来
图像滤波在opencv中可以有多种实现形式自定义滤波如使用3×3的掩模:对图像进行处理.使用函数filter2D()实现#includeusingnamespa
基于OpenCV2.4.8和python2.7实现简单的手势识别。以下为基本步骤1.去除背景,提取手的轮廓2.RGB->YUV,同时计算直方图3.进行形态学滤波