频域滤波-高斯低通

导入一些必要的库
并读取图片,将其灰度化

from matplotlib.pyplot import *
from numpy import *
from scipy import signal,misc
from PIL import Image,ImageFilter
%matplotlib inline
im=Image.open('/home/zach/Study/code/3.jpg').convert('L')
x,y=shape(im)
imshow(im,'gray')
show()

对图像进行傅里叶变换,并将位移,显示log后的fft图像

im_fft=fft.fftshift(fft.fft2(im))
imshow(log(abs(im_fft)),'gray')
show()

根据图像大小生成相对应的高斯低通核.

k1=signal.gaussian(x,x/10)
k2=signal.gaussian(y,y/10)
plot(k1)
show()
plot(k2)
show()
s1,s2=meshgrid(k2,k1)
kernel=s1*s2
imshow(kernel,'gray')
show()

将fft图像与高斯核相乘,如图所示,高频成分已经被去除.

为了在取log时不会出现log(0)的情况,将去除高频的fft图像加1

im_fftlow=im_fft*kernel
imshow(log(abs(im_fftlow)+1),'gray')
show()
进行反傅里叶变换,并保存图像.
im_conj=conj(im_fftlow)
im_new=uint8(real(fft.fft2(fft.fftshift(im_conj)/(x*y))))
imshow(im_new,'gray')
show()
imsave('smooth.jpg',im_new,cmap=cm.gray)
smooth.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://blog.csdn.net/x454045816/article/details/52153250 ...
    G风阅读 11,997评论 0 1
  • 这篇文章总结比较全面:http://blog.csdn.net/timidsmile/article/detail...
    rogerwu1228阅读 5,919评论 0 3
  • 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘...
    大川无敌阅读 14,736评论 0 29
  • 一、傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚...
    constant007阅读 10,013评论 1 10
  • 理论 傅里叶变换用来分析多种过滤器的频率特征。对于图片,2D离散傅里叶变换(DFT)用来找频率范围。一个快速算法叫...
    xxxss阅读 11,667评论 0 52

友情链接更多精彩内容