图像频域滤波(理想低通滤波)

news2024/11/18 17:44:03

   图像变换是对图像信息进行变换,是能量保持但重新分配,利于加工处理。这里主要介绍傅里叶变换的图像频域滤波。

  

  图像从空间域变换到频域后,其低频分量对应图像中灰度值变化较为缓慢的区域,高频分量表征图像中物体的边缘和随机噪声等信息。

  低通滤波是指保留低频分量,而通过滤波器函数H(u,v)减弱或抑制高频分量在频域进行的滤波。可以消除图像中随机噪声,减弱边缘效应,起到平滑图像的作用。

    阶段频率D_{0}是一个非负整数,D(u,v)是点(u,v)到频率平面原点的距离,既D(u,v)=\sqrt{u^{2}+v^{2}}。理想低通滤波器的含义是小于小于截断频率,即在半径圆之内的频率分量可以完全无损的通过,而大于阶段频率的分量被滤除。理想低通滤波器平滑作用很明显,但由于变换有一个陡峭的波形,它的逆变换有强烈的振铃效果,使得滤波后的图像产生模糊效果。

 

中文显示函数:

def set_ch():
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['FangSong']
    mpl.rcParams['axes.unicode_minus'] = False


set_ch()

实现低通滤波:

import numpy as np

from skimage import io
import matplotlib.pyplot as plt
from skimage.color import rgb2gray


# 设置中文
def set_ch():
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['FangSong']
    mpl.rcParams['axes.unicode_minus'] = False


set_ch()

D = 25
# 读入图像
Img = io.imread('I.jpg')
I = rgb2gray(Img)
# 傅里叶变换
f1 = np.fft.fft2(I)
f1_shift = np.fft.fftshift(f1)
# fftshift实现平移,让直流分量输出图像重心
# 理想低通滤波
rows, cols = I.shape
crow, ccol = int(rows / 2), int(cols / 2)  # 计算频谱中心
mask = np.zeros((rows, cols), np.uint8)
for i in range(rows):
    for j in range(cols):  # 将频谱中心小于D部分低通信息设为1,属于低通滤波
        mask[crow - D:crow + D, ccol - D:ccol + D] = 1
f1_shift = f1_shift * mask
# 傅里叶逆变换
f_ishift = np.fft.ifftshift(f1_shift)
I_back = np.fft.ifft2(f_ishift)
I_back = np.abs(I_back)
I_back = (I_back - np.amin(I_back)) / (np.amax(I_back) - np.amin(I_back))
plt.figure()
plt.subplot(121)
plt.imshow(I, cmap='gray')
plt.title("原图")
plt.subplot(122)
plt.imshow(I_back, cmap='gray')
plt.title("滤波后的图像")
plt.show()

I_back = (I_back - np.amin(I_back)) / (np.amax(I_back) - np.amin(I_back))

这一句的作用是将反演得到的图像矩阵I_back的像素值缩放到0~1之间。

首先,(I_back-np.amin(I_back))将I_back的每个像素值减去最小像素值,这样可以使得I_back的最小像素值为0。

然后,(np.amax(I_back)-np.amin(I_back))是I_back的最大像素值减去最小像素值,这样得到的值就是I_back的像素值的数值范围,即最大值与最小值之差。

最后,将I_back的每个像素值除以像素值的数值范围,就可以将I_back的像素值缩放到0~1之间。

 在上述代码后追加上直方图:

plt.figure()
plt.subplot(121)
arr=I.flatten()
plt.axis([0,1,0,20000])
plt.hist(arr, bins=256, edgecolor='None', facecolor='red')
plt.title("原图")
plt.subplot(122)
arr1=I_back.flatten()
plt.axis([0,1,0,20000])
plt.hist(arr1, bins=256, edgecolor='None', facecolor='red')
plt.title("滤波后的图像")
plt.show()

观察发现部分频率较高的灰度值被滤除,但产生了些许杂质。

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

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

相关文章

基于yolov5的钢材表面缺陷识别(pycharm连接远程服务器,老版本yolov5运行遇到的问题)

时间:2023年1月 1 pycharm远程连接服务器 提示:需要下载pycharm专业版。 参考文献: [1] [2] [3] [4] 设置解释器的界面有一些不同,在此截图记录一下。 (这是已经弄好了之后回头截图的,假设它不存在哈) …

【寒假每日一题】洛谷 P6206 [USACO06OCT] Another Cow Number Game G

题目链接:P6206 [USACO06OCT] Another Cow Number Game G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 奶牛们在玩一种数字游戏,Bessie 想让你帮她预测一下结果。游戏开始时,Bessie 将得到一个正整数 N。此时她的分数为 0。 奶…

C 程序设计教程(07)—— 数据类型转换

C 程序设计教程(07)—— 数据类型转换 该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用户阅读。 目录C 程序设计教程(07&#xff…

mysql学习总结(一)

总结一下近期学习的mysql内容:这里主要总结一下mysql的底层数据结构索引的本质是什么?索引的本质就是排好序的一种数据结构,通过索引我们能干什么呢?,快速的去定位到我们想要查找的数据,就像是你看书&#…

Ansible 介绍与实战操作演示

文章目录一、概述二、Ansible 架构三、Ansible 工作原理四、Ansible 安装与基础配置1)开启记录日志2)去掉第一次连接ssh ask确认五、Ansible 的七个命令1)ansible2)ansible-doc3)ansible-playbook4)ansible…

非线性系统辨识:非线性 ARX 和 Hammerstein-Wiener

1. 系统辨识 系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。现代控制理论中的一个分支。通过辨识建立数学模型的目的是估计表征系统行为的重要参数,建立一个能模仿真实系统行为的模型,用当前可测量的系统的输入和输出预测系统输出…

Js逆向教程25-BOM DOM过检测

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 Js逆向教程25-BOM DOM过检测 一、JS BOM 检测 它是一种浏览器环境,脱离了浏览器在外部不能直接调用的就是BOM 在浏览器中…

SAP工作流对象类

目录 1. 实现IF_WORKFLOW接口 2. 创建流程属性 3. 接口方法参考 4. 定义事件 5. 工作流触发(事件抛出) 业务对象作为工作流的数据内核,也是联系业务流程和工作流的重要核心,体现形式一般为BOR或者业务对象类,用来标识不…

SpringCloud从入门到精通(六)

Hystrix-熔断器 Hystrix-概述 • Hystix 是Netflix 开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败(雪崩)。• 雪崩:一个服务失败,导致整条链路的服务都失败的情形 Hystix 主要功…

【Neo4j构建知识图谱】:cypher操作语言加载 CSV电影人数据集链接文件

这目录 数据链接来源1、创建约束2、从 CSV 文件添加节点3、从 CSV 文件添加关系4、运行cypher查询5、清理数据库参考CSV 文件可以使用LOAD CSV密码条款。出于安全原因,无法加载本地CSV文件,这些文件必须在HTTP或HTTPS服务器(如GitHub,Google Drive和Dropbox)上公开访问。使…

Python 中将列表中的每个元素除以一个数字

Python 中将列表中的每个元素除以一个数字: 使用列表理解来遍历列表。在每次迭代中,将当前列表元素除以数字。新列表将包含除法结果。 my_list [8, 12, 20]# ✅ divide each element in list by number new_list [item / 2 for item in my_list] pri…

雪花算法笔记

SnowFlake 雪花算法 SnowFlake 中文意思为雪花,故称为雪花算法。最早是 Twitter 公司在其内部用于分布式环境下生成唯一 ID。在2014年开源 scala 语言版本。 实现原理 雪花算法原理就是生成一个的64位比特位的 long 类型的唯一 id。 最高1位固定值0,因…

React Context 完美替代品 Jotai

1. 前言 React 的属性透传场景 虽然有很多方式可以实现,但能做到代码写的少、re-render 轻松处理的方式并不多。 而状态管理工具 Jotai 却可以很好的解决这些问题。 最近的业务和组件场景里 也在用此方式实现。 2. React Context 的不足 常规解决数据透传通常使…

BUUCTF 之 [ACTF2020 新生赛]Exec(命令执行漏洞)

BUUCTF 之 [ACTF2020 新生赛]Exec(命令执行漏洞)相关观察进攻相关 项目内容难度简单类型WEB靶场BUUCTF坐标Exec观察 这界面和这网页标题结合起来,相信给位都能猜到这个靶场中很有可能存在命令执行漏洞。 进攻 构造如下语句显示当前路径中的…

Learning Monocular Visual Odometry via Self-Supervised Long-Term Modeling

Paper name Learning Monocular Visual Odometry via Self-Supervised Long-Term Modeling Paper Reading Note URL: https://arxiv.org/pdf/2007.10983.pdf TL;DR ECCV 2020 文章,该文章认为在短时间序列上训练无法在长时间序列上良好泛华,所以受到…

从Web3视角审视茅台的“元宇宙”APP,这或是中国版的“星巴克奥德赛”

图片来源:由无界 AI 绘画工具生成2023年1月1日,一款名为《巽风数字世界》的APP登录App Store,这是由茅台和网易联合推出的虚拟世界APP。因而,有媒体称,茅台要进军元宇宙了!简单讲,这是一款虚拟世…

Spring核心与设计思想 -- IoC与DI

Spring核心与设计思想 -- IoC与DI一、Spring 是什么?1.1 什么是容器?1.2 什么是 IoC?二、理解 IoC2.1 传统程序开发的问题2.2 分析2.3 控制反转式程序开发2.4 对比总结规律2.5 理解 Spring IoC三、DI 概念说明一、Spring 是什么? …

k8s集群部署springboot项目

一、前言 本篇,我们将基于k8s集群,模拟一个比较接近实际业务的使用场景,使用k8s集群部署一个springboot的项目,我们的需求是: 部署SpringBoot项目到阿里云服务器 ;基于容器打包,推送私有镜像仓库 ;采用K8S集群部署,对外暴露服务,pod副本扩容,公网可以访问 ;二、完…

【案例教程】GEE遥感云大数据在林业中的应用

以Earth Engine(GEE)为代表全球尺度地球科学数据(尤其是卫星遥感数据)在线可视化计算和分析云平台应用越来越广泛。该平台存储和同步遥感领域目前常用的MODIS、Landsat和Sentinel等卫星影像、气候与天气、地球物理等方面的数据集超…

禅道的部署与使用

文章目录1、禅道介绍2、下载安装3、使用3.1、创建项目3.2、添加用户3.3、团队管理3.4、测试人员提Bug3.5、开发人员修复Bug4、总结1、禅道介绍 官网地址:https://www.zentao.net禅道是专业的研发项目管理软件,有如下特点: 细分需求、任务、缺…