Image process ----butterworth high pass 滤波器

news2024/12/27 3:31:35



import numpy as np
import matplotlib.pyplot as plt
import cv2

def Butterworth_Filter_Image():
    img = cv2.imread(r'/Users/PycharmProjects/ImageProcess/Butterworth Filter Image/Pasted Graphic 31.png',0)
    plt.imshow(img)
    # ——————————————————————————————————————————————————————————————————————————————————
    F_domain = np.fft.fft2(img)
    F_shift = np.fft.fftshift(F_domain)
    # ——————————————————————————————————————————————————————————————————————————————————
    plt.figure(figsize=(8,10))

    # plot loss

    plt.subplot(2,2,1)
    plt.imshow(np.log1p(np.abs(F_shift)), cmap='gray')
    # plt.axis('off')
    # plt.show()

    M_shape, N_shape = img.shape
    H = np.zeros((M_shape, N_shape), dtype=np.float32)
    D0 = 40  # cut-off frequency
    n = 2 # It is order for butterworth
    for u in range(M_shape):
        for v in range(N_shape):
            D = np.sqrt((u - M_shape / 2) ** 2 + (v - N_shape / 2) ** 2)
            # H[u, v] = 1-1 / (1 + (D / D0) ** n)
            H[u, v] = 1 / (1 + (D0 / D) ** n)


    # __————————————————————————————————————————————————————————————————————
    # plt.figure(figsize=(8,10))

    # plot loss

    plt.subplot(2,2,2)

    plt.imshow(H, cmap='gray')
    # plt.axis('off')
    # plt.show()


    # ——————————————————————————————————————————————————————————————————————————————————

    G_shift = F_shift * H
    G = np.fft.ifftshift(G_shift)
    g = np.abs(np.fft.ifft2(G))
    # mean_img.mean()

    print(g.shape)
    plt.subplot(2,2,3)

    # plt.imshow(g, cmap='gray',vmin=g.mean()-3*g.std(),vmax=g.mean()+3*g.std())
    # plt.imshow(10*g+img, cmap='gray')
    plt.imshow(10*g+img, cmap='gray',vmin=20,vmax=250)

    # plt.axis('off')




    # plt.show()



#     ————————————————————————————————————————————————————————
    plt.subplot(2,2,4)

    plt.hist(g.ravel(), 256, [1, 100])  # numpy的ravel函数功能是将多维数组降为一维数组

    # plt.axis('off')
    plt.savefig('/Users/PycharmProjects/ImageProcess/2d_scatterplot_1.3_n=2.png')

    # plt.show()


if __name__ == '__main__':
    Butterworth_Filter_Image()



 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/820273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sublime操作技巧笔记

同时选中2个文件:自动切换成左右2个界面 格式化代码ctrlshifth: 使用快捷键ctrl shift p调出控制台,输入install package,然后输入html-css-js prettify,进行下载。具体的快捷键在preference > package setting &g…

P1542 包裹快递 (二分答案)(内附封面)

包裹快递 题目描述 小 K 成功地破解了密文。但是乘车到 X 国的时候,发现钱包被偷了,于是无奈之下只好作快递员来攒足路费去 Orz 教主…… 一个快递公司要将 n n n 个包裹分别送到 n n n 个地方,并分配给邮递员小 K 一个事先设定好的路线…

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

在前不久,PoseiSwap 曾以1000万美元的估值,获得了来自于ZebecLabs基金会的150万美元的融资。此后 PoseiSwap 又以2500万美元的估值,从GateLabs、EmurgoVentures、Republic以及CipholioVentures等行业顶级投资机构中,获得了新一轮未…

QMessageBox类

QMessageBox类 静态方法例子 静态方法 调用这一些静态成员函数&#xff0c;就可以得到模态提示框 枚举值为&#xff1a; 例子 头文件&#xff1a; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QMessageBox>QT_BEGIN_NAMESPACE…

ORB算法在opencv中实现方法

在OPenCV中实现ORB算法&#xff0c;使用的是&#xff1a; 1.实例化ORB orb cv.xfeatures2d.orb_create(nfeatures)参数&#xff1a; nfeatures: 特征点的最大数量 2.利用orb.detectAndCompute()检测关键点并计算 kp,des orb.detectAndCompute(gray,None)参数&#xff1a…

跟踪项目进度,项目经理可以通过这三个方面进行

项目实施过程中&#xff0c;常常会出现一些不确定性因素&#xff0c;如未确定项目的轻重缓急、优先级变化、任务不明确、团队成员对具体内容和实施流程不清楚等。 此外&#xff0c;对项目资源的使用情况不明确也是导致项目延期的因素之一。因此&#xff0c;在项目实施前&…

Linux之 centos、Ubuntu 安装常见程序 (-) Mysql 5.7 版本和8.0版本

CentOS 安装 MySql 注意 需要有root权限 安装5.7版本 – 由于MySql并不在CentOS的官方仓库中&#xff0c;所以需要通过rmp命令&#xff1a; 导入MySQL仓库密钥 1、配置MySQL的yum仓库 配置yum仓库 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 安装…

Windows 环境Kubernetes安装

目录 前言 安装 Docker 安装 Kubernetes Windows 安装 kubectl 介绍 安装 开启 Kubernetes 前言 Docker作为当前最流行的容器化平台&#xff0c;为Kubernetes提供了强大的容器化技术基础。Kubernetes与Docker的结合&#xff0c;使得容器化应用程序在大规模集群中得以简…

C. Ski Resort (逐步累加滑动求连续子序列)

题目&#xff1a;Problem - C - Codeforces 总结&#xff1a; 对于样例1 3 1 5 -5 0 -10 转化 n3 //天数 k1 //最小天数 q5 //最适温度 设最后输出值为num;(num最初为0) 操作一&#xff1a; 从-5统计 -5 小于最适温度5 可取 可取…

简单的python有趣小程序,有趣的代码大全python

这篇文章主要介绍了python简单有趣的程序源代码&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。

服务器中了360后缀勒索病毒怎么解决,360后缀勒索病毒解密数据恢复

某医药公司是一家小型企业&#xff0c;拥有自己的服务器存储重要数据和文件。某天早上&#xff0c;IT管理员发现企业服务器中了360后缀的勒索病毒&#xff0c;所有数据文件都被加密了。这个病毒的入侵让公司业务受到严重影响&#xff0c;企业立即启动了勒索病毒解密数据恢复的措…

HCIP-datacom-821题库真题和机构资料

HCIP-Datacom-Core Technology考试内容 HCIP-Datacom-Core Technology V1.0考试覆盖数据通信领域各场景通用核心知识&#xff0c;包括路由基础、OSPF、IS-IS、BGP、路由和流量控制、以太网交换技术、组播、IPv6、网络安全、网络可靠性、网络服务与管理、WLAN、网络解决方案。 机…

QDialog类

QDialog类 QDialog类api 使用方式调用exec()槽函数调用accept槽函数调用reject槽函数调用done槽函数 例子 QDialog类 QWedget类中的函数&#xff0c;在QDialog中都可以使用 api // 构造函数 QDialog::QDialog(QWidget *parent nullptr, Qt::WindowFlags f Qt::WindowFlags()…

Numpy基础操作:数组之间形状相互转换

ndarray对象提供了一些可以便捷地改变数组基础形状的属性和方法&#xff0c;例如&#xff0c;将一个3行4列的二维数组转换成6行2列的二维数组&#xff0c;关于这些属性和方法的具体说明如表9-3所示。 上述这些方法都能够改变数组的形状&#xff0c;但是&#xff0c;reshape()、…

JDK1.8 切换版本之TLS协议导致项目链接数据库报错

JDK1.8 切换版本之TLS协议导致项目链接数据库报错_jdk1.8 不支持的tls1.2 吗_Lim0816的博客-CSDN博客

为什么MySQL单表不能超过2000万行?

最近看到一篇《我说MySQL每张表最好不要超过2000万数据&#xff0c;面试官让我回去等通知》的文章&#xff0c;非常有趣。 文中提到&#xff0c;他朋友在面试的过程中说&#xff0c;自己的工作就是把用户操作信息存到MySQL里&#xff0c;因为数据量超大&#xff08;5000万条左…

新版塔罗占卜网站源码八字合婚风水起名附带搭建视频

新版塔罗占卜网站源码八字合婚风水起名PHP源码附带搭建视频,附带文本教学及视频教程安装方法以linux为例: 1、建议在服务器上面安装宝塔面板,以便操作,高逼格技术员可以忽略这步操作。 2、把安装包文件解压到根目录,同时建立数据库,把数据文件导入数据库 3、修改核心文件…

博客园自定义样式美化

<script type"text/javascript">window.cnblogsConfig {info: {name: XXXXXX, // 用户名startDate: XXXXXX, // 入园时间&#xff0c;年-月-日。入园时间查看方法&#xff1a;鼠标停留园龄时间上&#xff0c;会显示入园时间blogIcon: https://images.cnblogs.…

SQL-每日一题【1084. 销售分析III】

题目 Table: Product Table: Sales 编写一个SQL查询&#xff0c;报告2019年春季才售出的产品。即仅在2019-01-01至2019-03-31&#xff08;含&#xff09;之间出售的商品。 以 任意顺序 返回结果表。 查询结果格式如下所示。 示例 1: 解题思路 前置知识 between and between…

GifGun for Mac插件,帮你输出GIF动画格式

GifGun for Mac是一款安装在After Effects中使用的AE快速输出GIF动图格式插件&#xff0c;你可以使用gifgun插件直接输出GIF动画格式&#xff0c;支持自定义GIF文件的大小、帧数率等各种属性&#xff01; AE插件下载-GifGun for Mac(AE快速输出GIF动图格式插件)支持AE 2022- Ma…