MATLAB实现图像变换和滤波

MATLAB实现图像变换和滤波方法对具有不同特征的灰度图像进行处理

图像变换方法包括:DFT及IDFT,DCT及IDCT

图像滤波方法包括低通滤波和高通滤波

图像变换

DFT/IDFT

图像一般是二维的,根据二维离散傅里叶变换公式DFT,可以将图片从空间域转换到频率域内,对其进行一些处理,再通过离散傅里叶反变换IDFT,转换回原空间域,达到一些特殊处理效果。

在这里插入图片描述

DCT/IDCT

离散余弦变换(Discrete Cosine Transform)本质上也是离散傅里叶变换(Discrete Fourier Transform),但是只有实数部分。有这样一个性质:如果信号x[n]在给定区间内满足狄利赫里条件,且为实对称函数,则可以展开成仅含有余弦项的傅里叶级数,即离散余弦变换。所以,我们在构造离散信号的周期函数的时候,要对其进行偶延拓。

在这里插入图片描述

图像滤波

图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。常见的滤波方法有低通滤波和高通滤波。

图像是一个二维的信号,其中像素点灰度值的高低代表信号的强弱。图像中的高频是指图像中灰度变化剧烈的点,一般是图像轮廓或者是噪声;图像中的低频是指图像中平坦的,灰度变化不大的点,图像中的大部分区域。

根据图像的高频与低频特征,我们可以设计相应的高通与低通滤波器,高通滤波可以检测图像中尖锐、变化明显的地方;低通滤波可以让图像变得光滑,滤除图像中的噪声。

MATLAB代码实现

% 1.读取图片
x=imread('.\BMP_images\lena256.BMP');
y=imread('.\BMP_images\cman256.BMP');% 2.将两图分别转换成灰度图像 
% x=rgb2gray(x);
% y=rgb2gray(y);% 3.FFT变换,并将中心平移
dftxchange = fftshift(fft2(x));   
dftychange = fftshift(fft2(y));% 4.将平移后矩阵取实部,显示频谱图在窗口中。使用angle函数求相位角,显示相位图
figure(1)
subplot(1,2,1);imshow(x);title('原图1');
subplot(1,2,2);imshow(y);title('原图2');
figure(2)
subplot(2,2,1);imshow(log(abs(dftxchange)),[8 10]);title('图1的DFT频谱图');
subplot(2,2,3);imshow(angle(dftxchange));title('图1的DFT相位图');
subplot(2,2,2);imshow(log(abs(dftychange)),[8 10]);title('图2的DFT频谱图');
subplot(2,2,4);imshow(angle(dftychange));title('图2的DFT相位图');% 5.DCT变换
dcta=dct2(x); 
dctb=dct2(y); % 6.显示频谱图和相位图
figure(3)
subplot(2,2,1);imshow(log(abs(dcta)),[]);title('图1的DCT变换幅度图');
subplot(2,2,2);imshow(angle(dcta),[]);title('图1的DCT变换相位图');
subplot(2,2,3);imshow(log(abs(dctb)),[]);title('图2的DCT变换幅度图'); 
subplot(2,2,4);imshow(angle(dctb),[]);title('图2的DCT变换相位图'); % 7.对图1和图2的频谱图和相位图分别进行IDFT重建,对图1(图2)的频谱图和图2(图1)的频谱图、相位图分别进行IDFT重建,显示重建后图片。
A=fft2(double(x)); B=fft2(double(y));
Af=abs(A); phaseA=angle(A);
Bf=abs(B); phaseB=angle(B);rA=Af.*cos(phaseA)+Af.*sin(phaseA).*1i;
rB=Bf.*cos(phaseB)+Bf.*sin(phaseB).*1i;
xchange=uint8(abs(ifft2(rA)));
ychange=uint8(abs(ifft2(rB)));
figure(4);
subplot(2,1,1);imshow(xchange,[]);title('图1的幅度和1相位DFT重建');
subplot(2,1,2);imshow(ychange,[]);title('图2的幅度和2相位DFT重建');% % 8.对图1和图2的频谱图和相位图分别进行IDFT重建,对图1(图2)的频谱图和图2(图1)的频谱图、相位图分别进行IDFT重建,显示重建后图片。
% rab0=Af.*cos(phaseB)+Af.*sin(phaseB).*1i;
% rab1=Bf.*cos(phaseA)+Bf.*sin(phaseA).*1i;
% xy=uint8(abs(ifft2(rab0)));
% xy1=uint8(abs(ifft2(rab1))); 
% subplot(2,2,2);imshow(xy,[]);title('图1幅谱与2相谱IDFT重建');
% subplot(2,2,4);imshow(xy1,[]);title('图2幅谱与1相谱IDFT重建');% 7.对图1和图2的频谱图和相位图分别进行IDCT重建,对图1(图2)的频谱图和图2(图1)的频谱图、相位图分别进行IDCT重建,显示重建后图片。
dctxchange1=abs(dcta);dctxap=angle(dcta);
dctyychange2=abs(dctb);dctybp=angle(dctb);
dctxxchange4=dctxchange1.*cos(dctxap)+dctxchange1.*sin(dctxap).*1i;
dctyychange5=dctyychange2.*cos(dctybp)+dctyychange2.*sin(dctybp).*1i; 
dctxxchange4=uint8(abs(idct2(dctxxchange4)));
dctyychange5=uint8(abs(idct2(dctyychange5)));
figure(5)
subplot(2,1,1);imshow(dctxxchange4,[]);title('图1幅度与1相位IDCT重建');
subplot(2,1,2);imshow(dctyychange5,[]);title('图2幅度与2相位IDCT重建');
% dctxxchange4=dctxchange1.*cos(dctybp)+dctxchange1.*sin(dctybp).*1i;
% dctyychange5=dctyychange2.*cos(dctxap)+dctyychange2.*sin(dctxap).*1i;
% dctxchanger1=uint8(abs(idct2(dctxxchange4)));
% dctychanger1=uint8(abs(idct2(dctyychange5)));
% subplot(2,2,2);imshow(dctxchanger1,[]);title('图1幅度与2相位IDCT重建'); 
% subplot(2,2,4);imshow(dctychanger1,[]);title('图2幅度与1相位IDCT重建');

更多详细代码发布在https://github.com/JeremyChou28/digital_image_processing/tree/main/project1

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

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

相关文章

如何使用Docker将.Net6项目部署到Linux服务器(一)

目录 配置服务器环境 配置yum 配置docker 安装.NetCore SDK6.0 发布Net6 添加Dockerfile。 发布文件。 编辑DockerFile文件 ​编辑 上传文件 安装MySql 配置服务器环境 配置yum 在配置yum之前,我们需要先了解yum是什么,yum,是Yellow…

力扣日记12.13-【二叉树篇】从中序与后序遍历序列构造二叉树

力扣日记:【二叉树篇】从中序与后序遍历序列构造二叉树 日期:2023.12.13 参考:代码随想录、力扣 106. 从中序与后序遍历序列构造二叉树 题目描述 难度:中等 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二…

基于vue实现的疫情数据可视化分析及预测系统-计算机毕业设计推荐 django

本疫情数据可视化分析及预测系统 开发,用小巧灵活的MySQL数据库做完后台存储解释。本系统不仅主要实现了注册登录,系统首页,个人中心,用户管理,全国实时数据管理,每日实时数据管理,国内实时动态…

@Scheduled任务调度/定时任务-非分布式

1、功能概述 任务调度就是在规定的时间内执行的任务或者按照固定的频率执行的任务。是非常常见的功能之一。常见的有JDK原生的Timer, ScheduledThreadPoolExecutor以及springboot提供的Schduled。分布式调度框架如QuartZ、Elasticjob、XXL-JOB、SchedulerX、PowerJob等。 本文…

SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析

. # 📑前言 本文主要是SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风…

医保电子凭证在项目中的集成应用

随着医保电子凭证使用普及,医疗行业的各个场景都要求支持医保码一码通办,在此分享一下,在C#和js中集成医保电子凭证的demo 供有需要的小伙伴参考。 一、项目效果图 在c#中集成医保电子凭证效果 在js中集成医保电子凭证效果 二、主要代码 c#…

EasyRecovery2024功能强大且专业的mac电脑数据恢复程序

EasyRecovery15是一款功能强大且专业的IOS数据恢复程序,专为在iPhone,iPad和iPod touch上检索丢失的照片,消息,音乐等而设计。无论您是错误删除还是意外丢失了对您来说重要的任何内容,EasyRecovery都会帮助您找回它们。…

群晖(Synology)新建存储池使用 Home 服务

每一个用户都可以有一个自己的 Home 服务。 这个在群晖存储新建存储池后可以自动启用这个服务。 启用后,可以看到你的文件系统中有一个 homes 的文件了。 群晖(Synology)新建存储池使用 Home 服务 - 系统容器 - iSharkFly每一个用户都可以有…

flutter调试器查看不了副页面(非主页面/子页面)

刚接触flutter,写了两个页面,通过按钮,可以从主页面跳转到副页面,副页面我自己写的一个独立的dart文件,在主页面的代码中导入使用。但是当我运行代码后,点击跳转的时候,却发现查看不到对应的副页…

nodejs微信小程序+python+PHP沧州地区空气质量数据分析系统-计算机毕业设计推荐django

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

linux(centos7)离线安装mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar

1. 卸载mariadb相关rpm # 查找 rpm -qa|grep mariadb rpm -qa|grep mysql# 卸载 rpm -e --nodeps mariadb... rpm -e --nodeps mysql...2. 删除mysql相关文件 # 查找 find / -name mysql# 删除 rm -rf /var/lib/mysql...3. 查看是否有相关依赖,没有需安装 rpm -q…

Android Studio的代码笔记--Adapter+GridView学习

AdapterGridView学习 AdapterGridViewSimpleAdapterGridViewactivity_main.xmlappicon.xmlMainActivity 自定义BaseAdapterGridView已下载应用PackageInfoAppAdapterMainActivity2 其他获取已下载应用信息函数获取所有应用信息函数ImageView产生圆角的方法背景设置很渐变设置选…

Hadoop学习总结(Hive的安装)

Hive的安装模式分为3种,分别是嵌入模式、本地模式、远程模式。 (1)嵌入模式:使用内嵌的 Derby 数据库存储元数据,这种方式是 Hive 的默认安装方式,配置简单,但是一次只能连接一个客户端&#xf…

模块一——双指针:18.四数之和

文章目录 题目描述算法原理排序双指针 代码实现排序双指针复杂度分析时间复杂度:O(N^3^)空间复杂度:O(log⁡N)或者O(N) 题目描述 题目链接:18.四数之和 算法原理 排序双指针 依次固定⼀个数a ;在这个数a 的后⾯区间上&#x…

C#实现支付宝转账功能

环境 .net 6 AlipaySDKNet.OpenAPI 2.4.0 申请证书 登录支付宝开放平台https://open.alipay.com/ 进入控制台 授权回调地址也设置一下,加密方式AES 新建.net 6空白的web项目 证书除了java都需要自己生成一下pkcs1的密钥 privatekey.txt就是根据应用私钥生成…

玩转大数据16:大数据存储与文件格式优化

随着大数据时代的到来,存储和处理海量数据成为了一个重要的挑战。在大数据存储中,选择合适的文件格式对数据的压缩率、读写性能和扩展性起着关键作用。本文将介绍大数据存储的挑战,探讨常见的文件格式,并深入讨论文件格式优化的策…

小新Air-14 Plus 2021款AMD ACN版(82L7)原装出厂Win11系统镜像

LENOVO联想笔记本开箱状态原厂Windows11系统包 链接:https://pan.baidu.com/s/1D_sYCJAtOeUu9RbTIXgI3A?pwd96af 提取码:96af 联想小新AIR14笔记本电脑原厂系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具&am…

Mapreduce小试牛刀(1)

1.与hdfs一样,mapreduce基于hadoop框架,所以我们首先要启动hadoop服务器 --------------------------------------------------------------------------------------------------------------------------------- 2.修改hadoop-env.sh位置JAVA_HOME配…

MBR30300FCT-ASEMI高耐压肖特基MBR30300FCT

编辑:ll MBR30300FCT-ASEMI高耐压肖特基MBR30300FCT 型号:MBR30200FCT 品牌:ASEMI 封装:TO-220F 最大平均正向电流:30A 最大重复峰值反向电压:300V 产品引线数量:3 产品内部芯片个数&…

***Cpolar配置外网访问和Dashy

Dashy是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航页。一款功能超强大,颜值爆表的可定制专属导航页工具 结合cpolar内网工具,我们实现无需部署到公网服务器…