1.图像的傅里叶变换一(平移性质)

傅里叶变换的平移性质表明了函数与一个指数项相乘等于将变换后的空域中心移到新的位置,并且平移不改变频谱的幅值。

I=imread('1.bmp');
figure(1)
imshow(real(I));
I=I(:,:,3);
fftI=fft2(I);
sfftI=fftshift(fftI); %求离散傅里叶频谱
%对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置
RRfdp1=real(sfftI);
IIfdp1=imag(sfftI);
a=sqrt(RRfdp1.^2+IIfdp1.^2);
a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
figure(2)
imshow(real(a));
I=imread('2.bmp');
figure(1)
imshow(real(I));
I=I(:,:,3);
fftI=fft2(I);
sfftI=fftshift(fftI); %求离散傅里叶频谱
%对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置
RRfdp1=real(sfftI);
IIfdp1=imag(sfftI);
a=sqrt(RRfdp1.^2+IIfdp1.^2);
a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
figure(2)
imshow(real(a));
I=imread('3.bmp');
figure(1)
imshow(real(I));
I=I(:,:,3);
fftI=fft2(I);
sfftI=fftshift(fftI); %求离散傅里叶频谱
%对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置
RRfdp1=real(sfftI);
IIfdp1=imag(sfftI);
a=sqrt(RRfdp1.^2+IIfdp1.^2);
a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
figure(2)
imshow(real(a));

实验结果符合傅里叶变换平移性质

2.图像的傅里叶变换二(旋转性质)

%构造原始图像
I=zeros(256,256);
I(88:168,124:132)=1; %图像范围是256*256,前一值是纵向比,后一值是横向比
imshow(I)
%求原始图像的傅里叶频谱
J=fft2(I);
F=abs(J);
J1=fftshift(F);figure
imshow(J1,[5 50])
%对原始图像进行旋转
J=imrotate(I,90,'bilinear','crop');
figure
imshow(J)
%求旋转后图像的傅里叶频谱
J=fft2(I);
F=abs(J);
J2=fftshift(F);figure
imshow(J2,[5 50])

3.图像的离散余弦变换一

%对cameraman.tif文件计算二维DCT变换
RGB=imread('cameraman.tif');
figure(1)
imshow(RGB)
I=rgb2gray(RGB);
%真彩色图像转换成灰度图像
J=dct2(I);
%计算二维DCT变换
figure(2)
imshow(log(abs(J)),[])
%图像大部分能量集中在左上角处
figure(3);
J(abs(J)<10)=0;
%把变换矩阵中小于10的值置换为0,然后用idct2重构图像
K=idct2(J)/255;
imshow(K)

4.图像的离散余弦变换二

% I=imread('1.bmp');
% figure(1)
% imshow(real(I));
% I=I(:,:,3);
% fftI=fft2(I);
% sfftI=fftshift(fftI); %求离散傅里叶频谱
% %对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置
% RRfdp1=real(sfftI);
% IIfdp1=imag(sfftI);
% a=sqrt(RRfdp1.^2+IIfdp1.^2);
% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
% figure(2)
% imshow(real(a));
% I=imread('2.bmp');
% figure(1)
% imshow(real(I));
% I=I(:,:,3);
% fftI=fft2(I);
% sfftI=fftshift(fftI); %求离散傅里叶频谱
% %对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置
% RRfdp1=real(sfftI);
% IIfdp1=imag(sfftI);
% a=sqrt(RRfdp1.^2+IIfdp1.^2);
% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
% figure(2)
% imshow(real(a));
% I=imread('3.bmp');
% figure(1)
% imshow(real(I));
% I=I(:,:,3);
% fftI=fft2(I);
% sfftI=fftshift(fftI); %求离散傅里叶频谱
% %对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置
% RRfdp1=real(sfftI);
% IIfdp1=imag(sfftI);
% a=sqrt(RRfdp1.^2+IIfdp1.^2);
% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
% figure(2)
% imshow(real(a));

% %构造原始图像
% I=zeros(256,256);
% I(88:168,124:132)=1; %图像范围是256*256,前一值是纵向比,后一值是横向比
% imshow(I)
% %求原始图像的傅里叶频谱
% J=fft2(I);
% F=abs(J);
% J1=fftshift(F);figure
% imshow(J1,[5 50])
% %对原始图像进行旋转
% J=imrotate(I,90,‘bilinear’,‘crop’);
% figure
% imshow(J)
% %求旋转后图像的傅里叶频谱
% J=fft2(I);
% F=abs(J);
% J2=fftshift(F);figure
% imshow(J2,[5 50])

% %对cameraman.tif文件计算二维DCT变换
% RGB=imread(‘cameraman.tif’);
% figure(1)
% imshow(RGB)
% I=rgb2gray(RGB);
% %真彩色图像转换成灰度图像
% J=dct2(I);
% %计算二维DCT变换
% figure(2)
% imshow(log(abs(J)),[])
% %图像大部分能量集中在左上角处
% figure(3);
% J(abs(J)<10)=0;
% %把变换矩阵中小于10的值置换为0,然后用idct2重构图像
% K=idct2(J)/255;
% imshow(K)

RGB=imread(‘cameraman.tif’);
I=rgb2gray(RGB);
I=im2double(I); %转换图像矩阵为双精度型
T=dctmtx(8); %产生二维DCT变换矩阵
%矩阵T及其转置T’是DCT函数P1XP2的参数
B=blkproc(I,[8 8],‘P1xP2’,T,T’);
maxk1=[ 1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 ]; %二值掩模,用来压缩DCT系数
B2=blkproc(B,[8 8],‘P1.x’,mask1); %只保留DCT变换的10个系数
I2=blkproc(B2,[8 8],'P1x*P2’,T’,T); %重构图像
figure,imshow(T);
figure,imshow(B2);
figure,imshow(I2);

RGB=imread(‘cameraman.tif’);
I=rgb2gray(RGB);
I=im2double(I); %转换图像矩阵为双精度型
T=dctmtx(8); %产生二维DCT变换矩阵
%矩阵T及其转置T’是DCT函数P1XP2的参数
B=blkproc(I,[8 8],‘P1xP2’,T,T’);
maxk1=[ 1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 ]; %二值掩模,用来压缩DCT系数
B2=blkproc(B,[8 8],‘P1.x’,mask1); %只保留DCT变换的10个系数
I2=blkproc(B2,[8 8],'P1x*P2’,T’,T); %重构图像
figure,imshow(T);
figure,imshow(B2);
figure,imshow(I2);

5.图像的哈达玛变换

cr=0.5;I=imread('cameraman.tif');I=im2double(I)/255; %将读入的unit8类型的RGB图像I转换为double类型的数据figure(1),imshow(I);%显示                    %求图像大小[m_I,n_I]=size(I);  %提取矩阵I的行列数,m_I为I的行数,n_I为I的列数sizi=8;snum=64;%分块处理t=hadamard(sizi) %生成8*8的哈达码矩阵hdcoe=blkproc(I,[sizi sizi],'P1*x*P2',t,t');                 %将图片分成8*8像素块进行哈达码变换                 %重新排列系数CE=im2col(hdcoe,[sizi,sizi],'distinct');    %将矩阵hdcode分为8*8互不重叠的子矩阵,再将每个子矩阵作为CE的一列[Y Ind]=sort(CE); %对CE进行升序排序                  %舍去方差较小的系数,保留原系数的二分之一,即32个系数[m,n]=size(CE);%提取矩阵CE的行列数,m为CE的行数,n为CE的列数snum=snum-snum*cr;for i=1:nCE(Ind(1:snum),i)=0;end%重建图像re_hdcoe=col2im(CE,[sizi,sizi],[m_I,n_I],'distinct');                  %将矩阵的列重新组织到块中re_I=blkproc(re_hdcoe,[sizi sizi],'P1*x*P2',t',t);                  %进行反哈达码变换,得到压缩后的图像re_I=double(re_I)/64; %转换为double类型的数据figure(2);imshow(re_I);

%计算原始图像和压缩后图像的误差error=I.^2-re_I.^2;MSE=sum(error(:))/prod(size(re_I));

转载于:https://www.cnblogs.com/zhying99/p/10766446.html

数字图像处理及MATLAB实现实验四——图像变换相关推荐

  1. 数字图像处理及MATLAB实现实验五——图像增强

    1.模糊增强代码 %模糊增强代码 function img=FuzzyHE_original(I) %对图像作基于模糊估计和直方图的增强变换 m=size(I,1); n=size(I,2); I1= ...

  2. 数字图像处理及MATLAB实现实验二——数字图像处理基础

    1.像素的4连通和8连通 bw=[1 0 0 1 0;1 0 1 0 1;0 0 1 0 1;1 0 0 0 1] X8=bwlabel(bw,8) X4=bwlabel(bw,4) 2.对lena图 ...

  3. 【基于MATLAB的数字图像处理】第三章·基本图像变换

    系列文章 ·[基于MATLAB的数字图像处理]第一章·绪论 ·[基于MATLAB的数字图像处理]第二章·视觉系统与图像处理系统 ·[基于MATLAB的数字图像处理]第三章·基本图像变换 ·[基于MAT ...

  4. 数字图像处理之matlab实验(六):图像分割

    在图像处理领域,我们更关注的是一些关于目标的分析或者描述信息,比如图片里面是否有猫,以及是什么品种的猫?在在做这一步之前,我们需要先把图像中的猫分割出来.可以说图像分割是最基础也是最重要的一步操作,会 ...

  5. 领域平均法matlab代码实验,数字图像处理邻域平均法滤波实验报告matlab实现.doc...

    数字图像处理邻域平均法滤波实验报告matlab实现 数字图像处理 实验报告 实验三 邻域平均法滤波 学号 姓名 实验三 邻域平均法滤波 一.实验内容 选取噪声较明显的图像,分别采用3*3.5*5.7* ...

  6. 数字图像处理之matlab大作业:自制图像处理小工具

    学习的过程向来不是容易的,创造一个作品的过程更是不容易的.因此,在文章的最后,提供了两个现成的示例代码,大家直接可以拿来运行.在完成大作业的时候,大家可以在已有作品的基础上,按照自己的需求进行修改,添 ...

  7. 数字图像处理(MATLAB)(第二版) 冈萨雷斯 学习笔记

    数字图像处理(MATLAB)(第二版) 冈萨雷斯 主要用来记录自己的学习过程,相关实验内容,便于日后查找相关知识点及复习所用 第二章 灰度变换和空间滤波 本章重点讨论两类空间域处理方法:亮度(或灰度) ...

  8. 数字图像处理课程(作业+实验+大作业)相关文章 传送门

    数字图像处理课程(作业+实验+大作业)相关文章 传送门 博文说明 本文所使用代码或多或少参考了以往博文的同类or相似文章的代码,并非纯原创 本文仅用于记录并提供一种代码思路,供大家参考 文章目录 数字 ...

  9. 数字图像几何变化matlab,【新书推荐】数字图像处理——使用MATLAB分析与实现

    原标题:[新书推荐]数字图像处理--使用MATLAB分析与实现 数字图像处理是现代信息处理的研究热点.教材基于大学教学特点.目的编写,介绍数字图像处理的基本原理.算法分析和实现.章节内容由浅入深,层次 ...

  10. 数字图像处理领域的二十四个典型算法及vc实现、第一章

    数字图像处理领域的二十四个典型算法及vc实现.第一章 作者:July   二零一一年二月二十六日. 参考:百度百科.维基百科.vc数字图像处理. --------------------------- ...

最新文章

  1. DOS下读取4GB内存
  2. C#.NET通用权限管理在DB2数据库上运行的脚本参考 - 序列创建脚本参考
  3. laravel的composer require报错:Installation failed, reverting ./composer.json to its original content.
  4. javascript的ES6学习总结(第三部分)
  5. shiro的用户认证
  6. Ajax:如何运用updatepanle进行局部刷新
  7. 旧项目适配iphone6和iphone plus
  8. 好代码是管出来的——使用Jenkins搭建CI服务器
  9. Java 8和Java 14之间的新功能
  10. android 进度条_Android仿水波纹流球进度条控制器,实现高端大气的主流特效
  11. 第七章:清楚简洁的英文 --《英语科技写作(文法与修辞原则)》by 方克涛
  12. android surfaceflinger 代码,android surfaceflinger测试程序
  13. maven学习- 私服nexus搭建
  14. python 判断是否连接wifi_python操作 linux连接wifi,查看wifi连接状态方法
  15. java 多环境 虚拟环境_Spring profile通过多种方法实现多环境支持
  16. ubnt路由器虚拟服务器,UBNT UAP系列 Wi-Fi设置教程 装修必看
  17. Java集合练习:模拟斗地主
  18. 计算机算log的原理,一位业余爱好者的研究,原本是第一台机械计算器,就这么胎死腹中...
  19. vue使用pdf.js预览pdf文件加水印,下载pdf文件
  20. outlook邮箱撤回邮件

热门文章

  1. MongoDB以Windows服务安装
  2. Android进阶(二) Activity调用Service 通过AIDL实现
  3. Express框架学习笔记-get请求中参数的获取
  4. vmware桥接模式、NAT网络地址转换、仅主机模式
  5. 还没有合并再请求pull_代码被revert,你pull了master代码没了咋找回来
  6. python接口测试_【Python自学】Python接口自动化测试的学习 - 伊凡Ivan
  7. 10打印机用户干预怎么办_专业分析:爱普生喷墨打印机为什么是行业标杆?
  8. java jsonobject_Java调用groovy及如何使用springBean
  9. oracle触发器无效且未通过重新验证_更改过程或触发器中的SET选项将导致重新编译...
  10. 求和函数计算机语言,在 Excel 中,计算求和的函数是 ____。