OPENCV学习笔记-利用快速傅里叶变换实现高通滤波
发布日期:2022-01-31 02:37:39 浏览次数:41 分类:技术文章

本文共 1105 字,大约阅读时间需要 3 分钟。

OPENCV学习笔记-利用快速傅里叶变换实现高通滤波

代码

(跟着官方教程敲的↓)

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('leopard.jpg', 0)f = np.fft.fft2(img)# 频率为 0 的部分(直流分量)在输出图像的左上角# 如果想让它(直流分量)在输出图像的中心,我们还需要将结果沿两个方向平移fshift = np.fft.fftshift(f)# 构建振幅图magnitude_spectrum = 20*np.log(np.abs(fshift))rows, cols = img.shapecrow, ccol = int(rows/2), int(cols/2)# 将低频的信号设置为0# 一般不使用矩阵窗口,而是使用高斯窗口fshift[crow-100:crow+100, ccol-100:ccol+100] = 0# 将频域偏移,转化为时域f_ishift = np.fft.ifftshift(fshift)img_back = np.fft.ifft2(f_ishift)img_back = np.abs(img_back)plt.subplot(221), plt.imshow(img, cmap='gray')plt.title('input image'), plt.xticks([]), plt.yticks([])plt.subplot(222), plt.imshow(magnitude_spectrum, cmap='gray')plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.subplot(223), plt.imshow(img_back, cmap='gray')plt.title('Result Image'), plt.xticks([]), plt.yticks([])plt.subplot(224), plt.imshow(img_back)plt.title('Result in JET'), plt.xticks([]), plt.yticks([])plt.show()img_back_int = img_back.astype(np.int8)cv2.imshow('JET', img_back_int)cv2.waitKey(0)cv2.destroyAllWindows()

代码逻辑

在这里插入图片描述

结果

在这里插入图片描述

转载地址:https://blog.csdn.net/qq_20474257/article/details/90210630 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2019/5/6 线性最小均方误差LLMS
下一篇:CI框架cli命令行

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月07日 07时57分51秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章