《数字图像处理》实验报告四
一、实验任务与要求
- 对 Fig0403.tif 进行傅里叶变换并显示其频谱图像;fft2(x)
- 对 Fig0405.tif 图像进行填充和非填充的高斯滤波,并观察其不同;paddedsize,fft2(x,m,n)
- 由 sobel 空间滤波算子生成相应的频率域滤波算子并比较各自对 Fig0409.tif 的滤波效果;fspecial( 'sobel' )
- 任意设计一个频域的低通或高通滤波器,并对 Fig0413.tif 进行处理
二、实验报告
(一)对 Fig0403.tif 进行傅里叶变换并显示其频谱图像
1、转换图像类型为 double
f=imread('E:\Ex_4\Fig0403.tif');
f_d=im2double(f);
2、使用 fft2 进行傅里叶变换
f2=fft2(f_d);
f2=fftshift(f2); %将零频点移到频谱中间
f2=abs(f2); %取绝对值
F2=log(abs(f2)+1); %取模并进行缩放
3、效果
(二)对 Fig0405.tif 图像进行填充和非填充的高斯滤波,并观察其不同
1、转换图像类型为 double
f=imread('E:\Ex_4\Fig0405.tif');
f=im2double(f);
subplot(1,3,1)
imshow(f);title('原图');
2、填充的高斯滤波
(1)使用 paddedsize 获得填充参数
PQ=paddedsize(size(f));
(2)得到有填充图像的傅里叶变换
F=fft2(f,PQ(1),PQ(2));
(3)使用 freqz2 生成一个大小为 PQ(1)*PQ(2) 的高斯频率域滤波器
h=fspecial('gaussian',[PQ(1),PQ(2)],5);
H=freqz2(h,PQ(1),PQ(2));
(4)使用 ifftshift 进行反变换
H=ifftshift(H);
(5)滤波器乘以傅里叶变换,并使用 ifft2 进行傅里叶反变换
G=H.*F;
g=ifft2(G);
(6)将左上部的矩形修剪为原始大小,并转换回 uint8 类型
g=g(1:size(f,1),1:size(f,2));
g=im2uint8(g);
subplot(1,3,2)
imshow(g);title('填充');
3、不填充的高斯滤波
[r,c]=size(f);
F2=fft2(f); %无填充的傅里叶变换
h=fspecial('gaussian',[r,c],5);
H2=freqz2(h,r,c);
H2=ifftshift(H2);
G2=H2.*F2;
g2=ifft2(G2);
g2=im2uint8(g2);
subplot(1,3,3)
imshow(g2);title('无填充');
4、效果
可以看出,填充的高斯滤波处理图像四周边缘有都有黑边,而不填充的高斯滤波处理只有上边缘有黑边。
(三)由 sobel 空间滤波算子生成相应的频率域滤波算子并比较各自对 Fig0409.tif 的滤波效果
1、转换图像类型为 double 进行傅里叶变化
f=imread('E:\Ex_4\Fig0409.tif');
subplot(1,3,1)
imshow(f);title('原图');
f_d=im2double(f);
f2=fft2(f_d);
2、 sobel 空间域滤波器
h=fspecial('sobel'); %sobel空间滤波器
f1=imfilter(f,h);
subplot(1,3,2);
imshow(f1);title('空间域滤波算子处理');
3、sobel 频率域滤波器
(1)使用 paddedsize 获得填充参数
PQ=paddedsize(size(f));
(2)得到有填充图像的傅里叶变换
f3=fft2(f_d,PQ(1),PQ(2));
(3)使用 freqz2 转换为频率域滤波器,并进行反变换
H=freqz2(h,PQ(1),PQ(2));
H=ifftshift(H);
(4)滤波器乘以傅里叶变换,并使用 ifft2 进行傅里叶反变换
G=H.*f3;
g=ifft2(G);
g=g(1:size(f,1),1:size(f,2));
g=im2uint8(g);
subplot(1,3,3);
imshow(g);title('sobel频率域滤波算子');
4、效果
可以看出,空间域滤波和频域滤波对图像的滤波效果并无明显区别。
(四)任意设计一个频域的低通或高通滤波器,并对 Fig0413.tif 进行处理
1、对图像进行傅里叶变化并将分量移到频谱中心
f=imread('E:\Ex_4\Fig0413.tif');
subplot(1,2,1);imshow(f);title('原图');
f=im2double(f); %转换为double类型
f2=fft2(f); %傅里叶变换
f2=fftshift(f2); %将变换的原点移到频率矩形的中心
2、设计滤波器的传递函数
[R,C]=size(f2);
nn=2;
d0=50;
r=fix(R/2);
c=fix(C/2);
result=ones(R,C); %创建一个R*C的全一矩阵
for i=1:Rfor j=1:Cd=sqrt((i-r)^2+(j-c)^2);h=1/(1+0.414*(d/d0)^(2*nn));result(i,j)=h*f2(i,j);end
end
result=ifftshift(result);
f3=ifft2(result);
f4=im2uint8(real(f3));
subplot(1,2,2)
imshow(f4);title('频域滤波器处理');
3、处理效果
可以看出,产生了模糊效果
相关文章:

《数字图像处理》实验报告四
一、实验任务与要求 对 Fig0403.tif 进行傅里叶变换并显示其频谱图像;fft2(x) 对 Fig0405.tif 图像进行填充和非填充的高斯滤波,并观察其不同;paddedsize,fft2(x,m,n) 由 sobel 空间滤波算子生成相应的频率…...

算法04 模拟算法之一维数组相关内容详解【C++实现】
大家好,我是bigbigli,模拟算法我们将分为几个章节来讲,今天我们只看一维数组相关的题目 目录 模拟的概念 训练:开关灯 解析 参考代码 训练:数组变化 解析 参考代码 训练:折叠游戏 解析 参考代码 …...

【技术解码】百数SRM:如何助力企业快速优化供应链管理?
SRM应用是企业优化供应链管理的重要工具,它帮助企业全面管理供应商关系,从评估、选择到协同合作和绩效监控,确保供应链的稳定性和效率。 对于企业来说,通过全面管理供应商关系,可以降低采购风险,提升产品质…...

想要用tween实现相机的移动,three.js渲染的canvas画布上相机位置一点没动,如何解决??
🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…...

SQL连接与筛选:解析left join on和where的区别及典型案例分析
文章目录 前言数据库在运行时的执行顺序一、left join on和where条件的定义和作用left join on条件where条件 二、left join on和where条件的区别原理不同left join原理:where原理: 应用场景不同执行顺序不同(作用阶段不同)结果集…...
oliva-bruteforce-luks
olivaeasyLUKS v2破解、bruteforce-luks工具使用、cryptsetup使用、cap_dac_read_searcheip、mysql使用 主机发现 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo netdiscover -i eth0 -r 192.168.44.148/24服务扫描 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo nmap -sV -…...

图像超分辨率重建
一、什么是图像超分辨 图像超分辨是一种技术,旨在通过硬件或软件的方法提高原有图像的分辨率。这一过程涉及从一系列低分辨率的图像中获取一幅高分辨率的图像,实现了时间分辨率向空间分辨率的转换。超分辨率重建的核心思想是利用多帧图像序列的时间带宽来…...

小米上架遇到的隐私协议问题
1. 找到【APP权限设置】,点击详情,一一对照,删除没用的,新增小米商家必须要有的内容 2. APP 存在未经用户同意读取“OAID”的行为 uniapp官方文档对应内容处...
【区分vue2和vue3下的element UI Message 消息提示组件,分别详细介绍属性,事件,方法如何使用,并举例】
在 Vue 2 中,我们通常使用 Element UI 的 this.$message 方法来显示消息提示,而不是作为一个组件直接在模板中使用。然而,在 Vue 3 的 Element Plus 中,虽然 this.$message 的使用方式仍然保留,但官方文档可能更倾向于…...
架构设计 - Nginx Lua 缓存配置
摘要: web 应用业务缓存通常3级: 一级缓存:JVM 本地缓存 二级缓存:Redis集中式缓存 三级缓存:Nginx Proxy Cache 缓存 或 Nginx Lua 缓存 四级缓存:静态资源CDN缓存 页面静态化 本文主要分享 Nginx Lua 缓存配置开发 鉴于 Nginx Proxy Cache 缓存的劣势,在生产项目…...
lua的GC
关于lua的gc云风大佬在 Lua GC 的源码剖析 系列文章中讲得很清楚,这里做一下简单的记录。 分步gc lua使用的是一种三色标记清除算法(tri-color incremental mark & sweep),大体步骤如下: 初始阶段,所…...
基于python爬虫对豆瓣影评分析系统的设计与实现
基于python爬虫对豆瓣影评分析系统的设计与实现 Design and Implementation of a Python-based Web Crawler for Analyzing Douban Movie Reviews 完整下载链接:基于python爬虫对豆瓣影评分析系统的设计与实现 文章目录 基于python爬虫对豆瓣影评分析系统的设计与实现摘要第一…...

想让梦想照进现实?六西格玛绿带培训为你架起桥梁
六西格玛,这个源自摩托罗拉的质量管理方法论,如今已成为全球众多企业追求卓越的秘诀。它强调以数据为基础,通过减少变异和浪费,提高流程效率和质量,进而提升企业整体绩效。而六西格玛绿带培训,则是这个强大…...
大数据面试题之HDFS
目录 HDFS文件写入和读取流程 HDFS组成架构 介绍下HDFS,说下HDFS优缺点,以及使用场景 HDFS作用 HDFS的容错机制 HDFS的存储机制 HDFS的副本机制 HDFS的常见数据格式,列式存储格式和行存储格式异同点,列式存储优点有哪些? …...

(9)农作物喷雾器
文章目录 前言 1 必要的硬件 2 启用喷雾器 3 配置水泵 4 参数说明 前言 Copter 包括对农作物喷雾器的支持。该功能允许自动驾驶仪连接到一个 PWM 操作的泵和(可选)旋转器,根据飞行器速度控制液体肥料的流动速度。 稍微过时的视频显示了…...

智慧互联:Vatee万腾平台展现科技魅力
随着科技的迅猛发展,我们的生活正逐渐变得智能化、互联化。在这个信息爆炸的时代,一个名为Vatee万腾的平台正以其独特的魅力,引领我们走向一个更加智能的未来。 Vatee万腾,这个名字本身就充满了对科技未来的憧憬与期待。作为一家专…...

Charles抓包工具系列文章(四)-- Rewrite 重写工具
一、背景 这是一款比Map Local/Remote 还强大的工具,更加灵活,体现在以下几点: 重写request报文重写response报文header 字段的增删改query param 字段的增删改重写 body 字段改写http 响应状态status重写host/url/path 从这也可以看出其强…...

【PB案例学习笔记】-24创建一个窗口图形菜单
写在前面 这是PB案例学习笔记系列文章的第24篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…...
环境配置的相关问题
一、shap安装踩坑 遇到错误: A module that was compiled using NumPy 1.x cannot be run in NumPy 2.0.0 as it may crash. To support both 1.x and 2.x versions of NumPy, modules must be compiled with NumPy 2.0. Some module may need to rebuild instead…...

github配置可拉取项目到本地
首先配置用户名和邮箱: git config --global user.name 自己的名字git config --global user.email 自己的邮箱配置完之后检查一下: git config --global user.namegit config --global user.email如果提示的是自己配置好的名字和邮箱就Ok 然后拉取githu…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
标注工具核心架构分析——主窗口的图像显示
🏗️ 标注工具核心架构分析 📋 系统概述 主要有两个核心类,采用经典的 Scene-View 架构模式: 🎯 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 🔧 关键函数&…...