- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章图像频域滤波;频域滤波;;6.1;傅里叶变换;6.1.1 Numpy中的傅里叶变换; 在Numpy库中有FFT(快速傅里叶变换)函数来实现傅立叶变换。二维的傅里叶变换函数语法格式为:
np.fft.fft2(src, n=None, axis=-1, norm=None)
其中第一个参数是输入图像,即灰度图像。第二个参数是可选的,它决定输出数组的大小。如果它大于输入图像的尺寸,则在计算FFT之前用零填充输入图像。如果小于输入图像,将裁切输入图像。如果未传递任何参数,则输出数组的大小将与输入的大小相同。其余参数选择默认值即可。;例6.1 利用python的numpy库实现图像傅里叶变换及反变换。;6.1.2 OpenCV中的傅里叶变换;表6-1 flags标识符列表;例6.2 利用OpenCV提供了函数cv2.dft()和函数cv2.idft实现傅里叶变换和逆变换。;6.2;低通滤波;6.2.1 理想低通滤波器;例6.3 对一幅图像进行不同范围频域的理想低通滤波,观察效果。;程序运行结果如图所示。从结果看,图中左边为原图像,中间图像为在傅里叶变换频域上截取40ⅹ40正方形的低通区域,逆变换后的得到的图像,可以看出图像变得模糊、丢失了许多细节、有振铃现象,这也是理想低通滤波的特点。右边图像为在傅里叶变换频域上截取100ⅹ100正方形的低通区域,逆变换后的得到的图像,这时图像看起来与原图像基本差不多了,这也是对图像进行有损压缩的原理。;6.2.2 巴特沃斯低通滤波(Butterworth filter);例6.4 对一幅图像进行巴特沃斯低通滤波,观察结果。;def BWfilter(rows, cols, d0, n): #巴特沃斯低通滤波
duv = fft_distances(*fft_mat.shape[:2])
filter_mat = 1 / (1 + np.power(duv / d0, 2 * n))
filter_mat = cv2.merge((filter_mat, filter_mat))
return filter_mat
def do_filter(_=None):
d0 = cv2.getTrackbarPos(D0, filter_win)
n = cv2.getTrackbarPos(n, filter_win)
filter_mat = BWfilter(fft_mat.shape[0], fft_mat.shape[1], d0, n)
filtered_mat = filter_mat * fft_mat
img_back = ifft(filtered_mat)
cv2.imshow(image_win, combine_images([img_back, fft_image(filter_mat)]))
;当D0=30、n=2时程序运行结果如图6-4所示。可以通过调整滤波器参数D0和n,看到滤波器参数D0和n的变换对图像滤波的影响效果。当滤波半径D0越大,滤波效果越好,图像越清晰;当滤波器阶数越???,图像变得越模糊。因为巴特沃斯低通滤波器在高、低频间的过渡平滑,因此没有出现明显的振铃效应。;6.3 高斯低通滤波(Gaussian Low Pass Filter);例6.5 对一幅图像进行高斯低通滤波,观察结果。;def glpfilter(rows, cols, d0, n): #高斯低通滤波
duv = fft_distances(*fft_mat.shape[:2])
filter_mat = np.exp(-(duv * duv) / (2 * d0 * d0))
filter_mat = cv2.merge((filter_mat, filter_mat))
return filter_mat
def do_filter(_=None):
d0 = cv2.getTrackbarPos(D0, filter_win)
n = cv2.getTrackbarPos(n, filter_win)
filter_mat = glpfilter(fft_mat.shape[0], fft_mat.shape[1], d0, n)
filtered_mat = filter_mat * fft_mat
img_back = ifft(filtered_mat)
cv2.imshow(image_win, combine_images([img_back, fft_image(filter_mat)]));当D0=30、n
您可能关注的文档
- 工程管理学 01工程概述.pptx
- 工程管理学 02工程管理概述.pptx
- 工程管理学 03工程决策.pptx
- 工程管理学 04工程设计.pptx
- 工程管理学 05工程施工.ppt
- 工程管理学 06工程验收.ppt
- 工程管理学 07工程招投标.ppt
- 工程管理学 08工程投资.ppt
- 工程管理学 09工程融资.ppt
- 工程管理学 10工程经济评估.pptx
- 智能图像处理:Python和OpenCV实现第七章 图像退化和复原.pptx
- 智能图像处理:Python和OpenCV实现第三章 数字图像的几何运算.pptx
- 智能图像处理:Python和OpenCV实现第十二章 图像特征的提取与分析.pptx
- 智能图像处理:Python和OpenCV实现第十二章 图像特征的提取与分析1.pptx
- 智能图像处理:Python和OpenCV实现第十一章 彩色图像处理.pptx
- 智能图像处理:Python和OpenCV实现第十章 图像分割.pptx
- 智能图像处理:Python和OpenCV实现第四章 图像空域增强.pptx
- 智能图像处理:Python和OpenCV实现第五章 图像空域滤波.pptx
- 智能图像处理:Python和OpenCV实现第一章 python入门基础.pptx
- 智能图像处理:Python和OpenCV实现第一章 数字图像处理课件-opencv简介.pptx
文档评论(0)