matlab图像傅里叶变换图像

合集下载

MATLAB图像处理

MATLAB图像处理
位图位图图像由基本显示单元像点构图像由基本显示单元像点构图像像点图像像点8bit256色色16bit161665536色色24bit242416m色色88位图像位图像1616位图像位图像2424位图像位图像二进制位与图像之间二进制位与图像之间存在严格的位映射关存在严格的位映射关像点由若干个二进制位进行描述像点由若干个二进制位进行描述二进制位代表图像颜色的数量二进制位代表图像颜色的数量具有位映射关系的图叫作位图具有位映射关系的图叫作位图位图特指图位图特指图像素像素是图片大小的基本单位图像的像素大小是指位图在高宽两个方向的像素数相乘的结果例如宽度和高度均为100像素的图片其象素数是10000像素我们经常用的数码相机像素数所描述的就是相机拍照出来的照片是多大尺寸300万像素的数码照片通常是20481536像素而500万像素数码照片则是25601920像素
附2
MATLAB的数字图像处理
●所谓数字图像处理(digital image processing),就是 利用计算机对图像进行去除噪声、增强、恢复、分割、
提取特征等的理论、方法和技术。
1 数字图像的基本概念
● 图像分辨率 清晰度 绝对清晰度 视觉效果
● Resolution (分辨率)单位
dpi (display pixels / inch)
汉王指纹考勤机
指纹识别系统
纹形(箕形、斗形、弓形) 模式区 全局特征(描述了 指纹的总体结构) 核心点 三角点
指纹的基本特征
纹数
局部特征(指指纹纹乱上的节点的特征,这 些特征提供了指纹唯一性的确认信息)
指纹识别系统
纹形可以分为箕形、弓形、斗形,如下图所示。其他的 指纹图案都是基于这三种基本图案
箕形纹

位图

第5章 图像变换技术 MATLAB 数字图像处理课件

第5章 图像变换技术 MATLAB 数字图像处理课件

5.6.2 Hough变换的MATLAB实现
hough函数用于实现Hough变换。其调用格式为: (1)[H, theta, rho]=hough(BW) (2)[H, theta, rho]=hough(BW, param1,
val1, param2, val2)
【例5-15】用hough函数检测图像中的直线。
(2)B = idct2(A,m,n)或B = idct2(A,[m n]):在对图 像A进行二维离散余弦逆变换前,先将图像A补零到m×n。 如果m和n比图像A的尺寸小,则在进行变换前,将图像A进 行剪切。
【例5-9】对图像进行二维离散余弦逆变换。
(a)原始图像
(b)逆DCT变换
3.dctmtx函数 在MATLAB图像处理工具箱中提供了dctmtx函数用
于计算二维离散DCT矩阵。 其调用格式为:D = dctmtx(n)。
返回n×n的DCT变换矩阵,如果矩阵A的大小为 n×n,D*A为A矩阵每一列的DCT变换值,A*D'为A 每一列的DCT变换值的转置(当A为n×n的方阵) 。
【例5-10】计算二维离散DCT矩阵。
(a)原始图像
(b)离散DCT矩阵
5.4 离散余弦变换
5.4.1 一维离散余弦变换 5.4.2 二维离散余弦变换 5.4.3 快速离散余弦变换
5.4.4 离散余弦变换的MATLAB实现
1.dct2函数 在MATLAB图像处理工具箱中提供了dct2函数用于实现二维
离散余弦变换。该函数常用于图像压缩,最常见的便是用 于JPEG图像压缩。其调用格式为: (1)B = dct2(A):返回图像A的二维离散余弦变换值,其 大小与A相同,且各元素为离散余弦变换的系数B(k1,k2)。 (2)B = dct2(A,m,n)或B = dct2(A,[m n]):在对图像A 进行二维离散余弦变换前,先将图像A补零到m×n。如果m 和n比图像A的尺寸小,则在进行变换前,将图像A进行剪切 。

matlab绘制方波傅里叶变换代码

matlab绘制方波傅里叶变换代码

一、引言Matlab是一款功能强大的数学软件,可以进行多种数学运算和数据可视化处理。

其中,绘制方波并进行傅里叶变换是其常用的功能之一。

本文将介绍如何使用Matlab绘制方波并进行傅里叶变换的代码。

二、绘制方波1. 打开Matlab软件,创建一个新的脚本文件。

2. 输入以下代码用于绘制方波:```matlabt = linspace(0, 1, 1000); 生成时间序列f = square(2*pi*5*t); 生成频率为5Hz的方波plot(t, f); 绘制方波图形xlabel('Time (s)'); X轴标签ylabel('Amplitude'); Y轴标签title('Square Wave'); 图形标题```3. 运行代码,即可在Matlab中看到绘制的方波图形。

三、进行傅里叶变换1. 接下来,我们将对绘制的方波进行傅里叶变换。

2. 输入以下代码进行傅里叶变换:```matlabL = length(t); 信号的长度N = 2^nextpow2(L); 计算最近的2的幂Y = fft(f, N)/L; 进行傅里叶变换frequencies = 1/(2*1)*linspace(0,1,N/2); 计算频率amplitude = 2*abs(Y(1:N/2)); 计算幅值plot(frequencies, amplitude); 绘制傅里叶变换图形xlabel('Frequency (Hz)'); X轴标签ylabel('Amplitude'); Y轴标签title('Fourier Transform of Square Wave'); 图形标题```3. 运行代码,即可在Matlab中看到绘制的傅里叶变换图形。

四、总结通过以上步骤,我们成功地使用Matlab绘制了方波并进行了傅里叶变换。

matlab 灰度图像的傅里叶变换

matlab 灰度图像的傅里叶变换

一.实验题目:书上P274页,找两张图,求其一的二维傅里叶变换的图像:模,相位,模*0相位,1*相位,第一张的相位*第二张的模二.算法说明利用matlab,对图像进行fft2(),fftshift(),abs(),angle(),Ifftshift(),iff2t()等一系列函数变换,得到想要的答案并输出。

三.测试结果实验成绩:指导教师:四.附录:源代码a=imread('C:\Users\SH\Desktop\image.jpg');a=rgb2gray(a);%ת»»³É»Ò¶È转换成灰度figure,imshow(a),title('a');b=imread('C:\Users\SH\Desktop\image2.jpg');b=rgb2gray(b);%×¢ÒâÑ¡µÄÁ½ÕÅͼ³ß´çÒªÒ»ÖÂfigure,imshow(b),title('g');A=fft2(a);%¸µÀïÒ¶±ä»»二维FFT变换B=fft2(b);A1=fftshift(A);%ÖÐÐÄ»¯中心化B1=fftshift(B);l1=abs(A1);%È¡Ä£取模A2=log(l1);%È¡¶ÔÊý£¬¸üÃ÷ÏÔl2=abs(B1);B2=log(l2);A3=angle(A1);%È¡Ïàλ取相位B3=angle(B2);figure,imshow(A2,[]),title('b');%ÏÔʾͼ1µÄÄ£figure,imshow(A3),title('c');%ÏÔʾͼ1µÄÏàλBB=l1.*exp(1i*0);bb=ifftshift(BB);%·´ÖÐÐÄ»¯反中心化b2=ifft2(bb);%·´±ä»»反FFT figure,imshow(b2,[]),title('d');%Ä£*0ÏàλAA=1.*exp(1i*A3);aa=ifftshift(AA);%·´ÖÐÐÄ»¯a2=ifft2(aa);%·´±ä»»figure,imshow(a2,[]),title('e');%µ¥Î»Ä£*ÏàλCC=l2.*exp(1i*A3);%×¢Òâ¾ØÕóά¶Ècc=ifftshift(CC);%·´ÖÐÐÄ»¯c2=ifft2(cc);%·´±ä»»figure,imshow(c2,[]),title('f');%ͼ2Ä£*ͼ1ÏàλWelcome To Download !!!欢迎您的下载,资料仅供参考!。

Matlab 图像处理基本操作和付立叶变换

Matlab 图像处理基本操作和付立叶变换

翻转裁剪后二次采样原图I1=imread('D:\图像\LENA.BMP');imshow(I1);fp=I1(end:-1:1,:)%figure,imshow(fp);fc=I1(128:512,128:512)%figure,imshow(fc);fs=I1(4:2:end,4:2:end);%figure,imshow(fs);subplot(2,2,1),imshow(fp);title('翻转')subplot(2,2,2),imshow(fc);title('裁剪后')subplot(2,2,3),imshow(fs);title('二次采样')subplot(2,2,4),imshow(I1);title('原图')对图像进行傅立叶变换代码如下:a=zeros(128,128);a(63:66,63:66)=1;A=fft2(a);b=fftshift(A);for i=1:128for j=1:128B(i,j)=log(1+abs(A(i,j)));endendh=zeros(128,128);h(32:36,32:36)=1;H=fft2(h);h1=imrotate(h,30);H1=fft2(h1);i=zeros(128,128);i(60:68,60:68)=1;I=fft2(i);j=zeros(128);j(64:65,64:65)=1;J=fft2(j);figure;subplot(221),imshow(a);title('原图');subplot(222),imshow(A);title('FT');subplot(223),imshow(b);title('低中高角FT'); subplot(224),imshow(B);title('增强2DFT');figure;subplot(221);imshow(a);title('Step1原图'); subplot(222);imshow(A);title('Step1FT'); subplot(223);imshow(h);title('Step4原图'); subplot(224);imshow(H);title('Step4FT');figure;subplot(221),imshow(a);title('Step1原图'); subplot(222),imshow(A);title('Step1FT'); subplot(223),imshow(h1);title('Step5原图'); subplot(224),imshow(H1);title('Step5FT');figure;subplot(321);imshow(a);title('Step1原图'); subplot(322);imshow(A);title('Step1FT'); subplot(323),imshow(i);title('Step6原图1'); subplot(324),imshow(I);title('Step6原图1FT'); subplot(325),imshow(j);title('Step6原图2'); subplot(326),imshow(J);title('Step6原图2FT');运行结果如下:分析:图像傅立叶变换前后的对应关系:傅立叶变换以前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样得到一系列点的集合,习惯上用一个二维矩阵表示空间上各点,则图像可由z=f(x,y)来表示。

Matlab傅里叶变换和各种滤波处理

Matlab傅里叶变换和各种滤波处理

Matlab傅里叶变换模和相位和各种滤波处理傅里叶变换模和相位img=imread('h:\img.png');f=fft2(img); %傅里叶变换f=fftshift(f); %使图像对称r=real(f); %图像频域实部i=imag(f); %图像频域虚部margin=log(abs(f)); %图像幅度谱,加log便于显示phase=log(angle(f)*180/pi); %图像相位谱l=log(f);subplot(2,2,1),imshow(img),title('源图像');subplot(2,2,2),imshow(l,[]),title('图像频谱');subplot(2,2,3),imshow(margin,[]),title('图像幅度谱');subplot(2,2,4),imshow(phase,[]),title('图像相位谱');添加高斯噪声、四阶巴特沃斯低通滤波I=imread('h:\img.png');x=rgb2gray(I);y1=imnoise(x,'gaussian',0,0.02);f=double(y1); % 数据类型转换,MATLAB不支持图像的无符号整型的计算g=fft2(f); % 傅立叶变换g=fftshift(g); % 转换数据矩阵[M,N]=size(g);nn=4; % 四阶巴特沃斯(Butterworth)低通滤波器d0=50; %截止频率为50m=fix(M/2); n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数result(i,j)=h*g(i,j);endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));subplot(1,2,1),imshow(y1),title('添加高斯噪声后的图像'); subplot(1,2,2),imshow(y3),title('四阶巴特沃斯低通滤波图像');维纳滤波I=imread('h:\img.png');x=rgb2gray(I);J1=imnoise(x,'gaussian',0,0.02); %给图像添加高斯噪声J2=imnoise(x,'salt & pepper',0.02);%给图像添加椒盐噪声J3=imnoise(x,'speckle',0.02); %给图像添加乘性噪声Y1=wiener2(J1,[5 5]); %维纳滤波Y2=wiener2(J2,[5 5]);Y3=wiener2(J3,[5 5]);subplot(2,2,1),imshow(x),title('灰度图');subplot(2,2,2),imshow(Y1),title('高斯噪声维纳滤波'); subplot(2,2,3),imshow(Y2),title('椒盐噪声维纳滤波');subplot(2,2,4),imshow(Y3),title('乘性噪声维纳滤波');中值滤波I=imread('h:\img.png');x=rgb2gray(I);J1=imnoise(x,'gaussian',0,0.02); %给图像添加高斯噪声J2=imnoise(x,'salt & pepper',0.02);%给图像添加椒盐噪声J3=imnoise(x,'speckle',0.02); %给图像添加乘性噪声Y1=medfilt2(J1);%在默认3×3的邻域窗中进展中值滤波Y2=medfilt2(J2);%在默认3×3的邻域窗中进展中值滤波Y3=medfilt2(J3);%在默认3×3的邻域窗中进展中值滤波subplot(2,2,1),imshow(x),title('灰度图');subplot(2,2,2),imshow(Y1),title('高斯噪声中值滤波'); subplot(2,2,3),imshow(Y2),title('椒盐噪声中值滤波'); subplot(2,2,4),imshow(Y3),title('乘性噪声中值滤波');低通滤波器在频率域实现低通滤波I=imread('h:\img.png');I=rgb2gray(I);figure(1),imshow(I);title('原图像');s=fftshift(fft2(I));figure(2);imshow(abs(s),[]);title('图像傅里叶变换所得频谱');[a,b]=size(s);a0=round(a/2);b0=round(b/2);d=10; for i=1:a for j=1:bdistance=sqrt((i-a0)^2+(j-b0)^2);if distance<=d h=1;else h=0;end;s(i,j)=h*s(i,j);end; end;s=uint8(real(ifft2(ifftshift(s))));figure(3); imshow(s);title('低通滤波所得图像');高通滤波器在频率域实现高频增强I=imread('h:\img.png');I=rgb2gray(I);figure(1),imshow(I);title('原图像');s=fftshift(fft2(I));figure(2);imshow(abs(s),[]);title('图像傅里叶变换所得频谱');figure(3); imshow(log(abs(s)),[]);title('图像傅里叶变换取对数所得频谱'); [a,b]=size(s); a0=round(a/2); b0=round(b/2);d=10; p=0.2;q=0.5; for i=1:afor j=1:bdistance=sqrt((i-a0)^2+(j-b0)^2);if distance<=d h=0;else h=1; end;s(i,j)=(p+q*h)*s(i,j); end; end; s=uint8(real(ifft2(ifftshift(s)))); figure(4); imshow(s);title('高通滤波所得图像');figure(5); imshow(s+I);title('高通滤波所得高频增强图像');其他函数滤波I=imread('h:\img.png');J = imnoise(I,'gaussian', 0.001 , 0.01);%高斯噪声定义A = fspecial('average', [3 3]);%定义average滤波器B = fspecial('gaussian', [3 3] , 0.5);%定义gaussian滤波器C = fspecial('motion', 9 , 0);%定义motion滤波器D = fspecial('unsharp', 0.2);%定义unsharp滤波器subplot(2,3,1);imshow(I);title('〔a〕原始图像');%为图像叠加高斯噪声subplot(2,3,2);imshow(J);title('〔b〕叠加高斯噪声图'); h1 = imfilter(J,A);%对图像进展average 滤波subplot(2,3,3);imshow(h1);title('〔c〕average滤波图');h2 = imfilter(J,B);%对图像进展gaussian 滤波subplot(2,3,4);imshow(h2);title('〔d〕gaussian滤波图');h3 = imfilter(J,C);%对图像进展motion 滤波subplot(2,3,5);imshow(h3);title('〔e〕motion滤波图');h4 = imfilter(J,D);%对图像进展unsharp 滤波subplot(2,3,6);imshow(h4);title('〔f〕unsharp滤波图');figure;%新建图像窗口K = imnoise(I,'salt & pepper',0.1);%定义椒盐噪声subplot(2,3,1);imshow(I);title('〔a〕原始图像');%为图像叠加椒盐噪声subplot(2,3,2);imshow(J);title('〔b〕叠加椒盐噪声图');l1 = imfilter(K,A);%对图像进展average 滤波subplot(2,3,3);imshow(l1);title('〔c〕average滤波图');l2 = imfilter(K,B);%对图像进展gaussian 滤波subplot(2,3,4);imshow(l2);title('〔d〕gaussion滤波图');l3 = imfilter(K,B);%对图像进展motion 滤波subplot(2,3,5);imshow(l3);title('〔e〕motion滤波图');l4 = imfilter(K,B);%对图像进展unsharp 滤波subplot(2,3,6);imshow(l4);title('〔f〕unsharp滤波图');。

matlab图像的傅里叶变换图像的

matlab图像的傅里叶变换图像的

电子1004 黄佳卿201081163图像傅里叶变换代码如下:I = imread('C:\Users\jiaqing\Desktop\matlab homework\zhen.jpg'); % 读入图像subplot(2,2,1),imshow(I);title('zhen');FI = abs((fft2(I)));NFI = 255*mat2gray(FI); %归一化SFI = fftshift(NFI);imgray = rgb2gray(SFI); %灰阶subplot(2,2,2),imshow(imgray);title('fft of zhen');I = imread('C:\Users\jiaqing\Desktop\matlab homework\cat.jpg'); % 读入图像subplot(2,2,3),imshow(I);title('cat');FI = abs((fft2(I)));NFI = 255*mat2gray(FI); %归一化SFI = fftshift(NFI);imgray = rgb2gray(SFI); %灰阶subplot(2,2,4),imshow(imgray);title('fft of cat');运行结果如下:图像添加高斯噪声与去除代码如下:I = imread('C:\Users\jiaqing\Desktop\matlab homework\zhen.jpg'); % 读入图像%给图像添加噪声grayI = rgb2gray(I);nI=imnoise(grayI,'gaussian',0.05);subplot(2,2,1);imshow(nI);title('加入高斯噪声后的图像');%加入噪声后图像的傅立叶变换FI = abs((fft2(nI)));NFI = 255*mat2gray(FI); %归一化SFI = fftshift(NFI);subplot(2,2,2),imshow(SFI);title('加入噪声后的傅里叶变换');xd=wiener2(nI,[3 3]);subplot(2,2,3);imshow(xd);%去除噪声后图像的傅立叶变换FI = abs((fft2(xd)));NFI = 255*mat2gray(FI); %归一化SFI = fftshift(NFI);subplot(2,2,4),imshow(SFI);title('去除噪声后的傅里叶变换');处理结果:。

如何进行MATLAB图像处理

如何进行MATLAB图像处理

如何进行MATLAB图像处理一、引言图像处理是计算机视觉和图像分析领域中的重要任务之一。

而MATLAB是一种强大的数学计算软件,也被广泛应用于图像处理。

本文将介绍如何使用MATLAB进行图像处理,并探讨一些常见的图像处理技术。

二、图像处理基础在开始使用MATLAB进行图像处理之前,我们需要了解一些基础知识。

一个图像通常由像素组成,每个像素都有一个灰度值或者RGB(红绿蓝)三个通道的值。

图像的处理可以分为两个主要方面:空间域处理和频域处理。

1. 空间域处理空间域图像处理是指直接对图像的像素进行操作,常见的处理方法包括亮度调整、对比度增强和图像滤波等。

MATLAB提供了一系列函数和工具箱来进行这些处理。

例如,要调整图像的亮度,可以使用imadjust函数。

该函数可以通过调整输入图像的灰度值范围,实现亮度的增强或者降低。

下面是一个简单的例子:```matlabI = imread('image.jpg'); % 读取图像J = imadjust(I,[0.2 0.8],[0 1]); % 调整亮度范围imshow(J); % 显示图像```2. 频域处理频域图像处理是指将图像从空间域转换到频域进行处理,常见的处理方法包括傅里叶变换和滤波等。

MATLAB提供了fft和ifft等函数来进行频域处理。

例如,要对图像进行傅里叶变换,可以使用fft2函数。

该函数将图像转换为频率域表示,可以进一步进行滤波等处理。

下面是一个简单的例子:```matlabI = imread('image.jpg'); % 读取图像F = fft2(I); % 傅里叶变换F = fftshift(F); % 频率域中心化imshow(log(1 + abs(F)),[]); % 显示频率域图像```三、图像处理技术了解了图像处理的基础知识后,我们可以探索一些常见的图像处理技术。

以下将介绍几个常用的技术,并给出相应的MATLAB代码示例。

matlab 曲线傅里叶变换

matlab 曲线傅里叶变换

matlab 曲线傅里叶变换MATLAB是一种常用的数学软件,能够进行数学分析、图形绘制、算法开发等多种功能。

其中之一就是进行傅里叶变换,下面将分步骤阐述如何在MATLAB中进行曲线的傅里叶变换。

第一步:准备曲线数据在MATLAB中进行傅里叶变换需要有一组曲线数据,可以通过手动输入或者导入外部数据两种方式获得。

以手动输入为例,我们新建一个脚本文件,输入以下语句:t = linspace(0, 2*pi, 1000); % 产生一组时间序列y = 5*sin(2*pi*10*t) + 3*sin(2*pi*20*t); % 产生一组曲线数据其中,t是时间序列,y是曲线数据,这里我们生成了一个由两个正弦波组成的曲线。

第二步:进行傅里叶变换在MATLAB中,可以使用fft()函数进行傅里叶变换,代码如下:y_fft = fft(y);其中,y_fft即为进行傅里叶变换后得到的数据,可以将其视为由若干个频率分量组成的向量。

如果要在MATLAB中绘制变换后的频谱图,可以使用如下代码:f = linspace(-500, 499, 1000); % 产生一组频率序列y_fftshift = fftshift(y_fft); % 进行频率对称处理plot(f, abs(y_fftshift)); % 绘制频谱图其中,f是频率序列,y_fftshift是对y_fft的频率对称处理后得到的向量,abs()函数求出了y_fftshift的模值,在图形上表现为频谱图。

第三步:绘制原始曲线与傅里叶变换结果的图形最后,我们可以使用如下代码将原始曲线与傅里叶变换的结果绘制在同一张图中:subplot(2, 1, 1); % 将图形分成两部分,第一部分绘制原始曲线plot(t, y); % 绘制原始曲线title('Original Signal');subplot(2, 1, 2); % 第二部分绘制傅里叶变换结果plot(f, abs(y_fftshift)); % 绘制频谱图xlim([-100, 100]); % 设置x轴范围title('FFT of the Signal');运行以上代码后,即可得到同时包含原始曲线及其傅里叶变换结果的图形。

基于傅里叶变换的MATLAB图像处理

基于傅里叶变换的MATLAB图像处理

基于傅里叶变换的MATLAB图像处理作者:任鸿鹏来源:《科技资讯》2019年第16期摘 ;要:作为一项重要的技术手段,数字图像处理已经广泛地应用于当今社会的众多领域,其中最常用到的方法就是傅里叶变换。

该文在MATLAB的软件环境下,简要阐述了基于傅里叶变换的图像处理原理,并给出了相关图像的处理结果。

这些将有助于增加初学者对傅里叶变换的理解,提升其处理实际问题的能力。

关键词:图像变换 ;傅里叶变换 ;MATLAB中图分类号:TP391 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 文献标识码:A ; ; ; ; ; ; ; ; ; ; ; ; 文章编号:1672-3791(2019)06(a)-0011-03图像是世界万物的直观反映,是人类认识世界的重要源泉。

当今世界,人类不仅可以通过特定的手段观测世界来获取图像,更可以在计算机的帮助下制造出各式各样的图像,因此,图像的制作、变换等成为了热门研究方向。

图像的变换,就是在计算机的支撑下,对图像进行有目的的处理的过程。

现代社会,随着科技水平的提高,人们对图像的要求也越来越高,二维码的扫描、人脸识别、网络连接以及医学界的X光[1]技术等无一不体现了对图像的高度要求,因此掌握图像变换技术也变得越来越重要。

在图像变换的诸多方法中,傅里叶变换是最为常见的一种方法。

傅里叶变换是由法国数学家傅里叶提出的一种线性积分变换,其核心思想是任何连续的周期函数都可以由一组相应的正弦函数叠加而成[2]。

傅里叶变换的物理效果是将图像从空间域转化到频率域,逆变换是将图像从频率域转化到空间域。

而图像的频率决定了图像的基本灰度等级、基本结构与边缘细节,正是傅里叶变换与图像频率之间的密切关系,因此被广泛应用于图像变换操作中。

利用傅里叶变换对图像进行相关操作时,最常用的就是MATLAB软件。

MATLAB软件是由美国MathWorks公司出品的商業数学软件,在图像处理、工程计算、信号检测、金融分析等方面有着十分广泛的应用。

MATLAB数字图像处理几何变换傅里叶变换

MATLAB数字图像处理几何变换傅里叶变换

Matlab数字图像处理实验指导实验目的:通过实验,深入理解和掌握图像处理的基本技术,提高动手实践能力。

实验环境:Matlab变成实验一图像的几何变换实验内容:设计一个程序,能够实现图像的各种几何变换。

实验要求:读入图像,打开图像,实现图像的平移变换、比例缩放、转置变换、镜像变换、旋转变换等操作。

实验原理:图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。

学习几何变换的关键就是要确定这种空间映射关系,以及映射过程中的变化参数。

几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。

一个几何变换需要两部分运算:首先是空间变换所需的运算,如平移、镜像和旋转等,需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。

设原图像f(x0,y0)经过几何变换产生的目标图像为g(x1,y1),则该空间变换(映射)关系可表示为:x1=s(x0,y0)y1=t(x0,y0)其中,s(x0,y0)和t(x0,y0)为由f(x0,y0)到g(x1,y1)的坐标换变换函数。

一、图像平移图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。

二、图像镜像镜像变换又分为水平镜像和垂直镜像。

水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行对换;而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中心轴进行对换。

三、图像转置图像转置是将图像像素的x坐标和y坐标呼唤。

图像的大小会随之改变——高度和宽度将呼唤。

四、图像的缩放图像缩放是指将图像大小按照指定的比率放大或者缩小。

图像缩放函数imresize();调用格式如下:B=imresize(A,Scale,method);参数A为要进行缩放的原始图像。

Scale为统一的缩放比例。

如果希望在x和y方向上以不同比例进行缩放,可用如下调用形式。

图像的正交变换matlab

图像的正交变换matlab

《数字图像处理》课程实验报告实验名1:图像的正交变换实验院系:自动化测试与控制系班级:1201132姓名:李丹阳学号:1120110113哈尔滨工业大学电气工程及自动化学院光电信息工程2015年12月13日一、实验原理二、实验内容三、实验结果与分析1、傅立叶变换A)绘制一个二值图像矩阵,并将其傅立叶函数可视化。

(傅里叶变换A)的实验结果B)利用傅立叶变换分析两幅图像的相关性,定位图像特征。

读入图像‘cameraman.tif’,抽取其中的字母‘a’。

(傅里叶变换B )的实验结果离散余弦变换(DCT)使用dct2对图像‘linyichen.jpg ’进行DCT变换。

-505(离散余弦变换A )的实验结果将上述DCT 变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。

离散余弦变换附主要程序代码:f=zeros(30,30);f(5:24,13:17)=1;imshow(f,'notruesize')F=fft2(f);F2=log(abs(F));figure,imshow(F2,[-15],'notruesize');colormap(jet);F=fft2(f,256,256);figure,imshow(log(abs(F)),[-15],'notruesize');colormap(jet);F2=fftshift(F);figure,imshow(log(abs(F2)),[-15],'notruesize');colormap(jet);B)利用傅立叶变换分析两幅图像的相关性,定位图像特征。

读入图像‘cameraman.tif’,抽取其中的字母‘a’。

bw=imread('cameraman.tif');a=bw(59:71,81:91);imshow(bw);figure,imshow(a);C=real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256)));%求相关性figure,imshow(C,[]);thresh=max(C(:));figure,imshow(C>thresh-10)figure,imshow(C>thresh-15)1.离散余弦变换(DCT)A)使用dct2对图像‘linyichen.jpg’进行DCT变换。

matlab《数字图像处理》第8章 傅立叶变换

matlab《数字图像处理》第8章 傅立叶变换

下图给出了一维傅立叶变换原频谱 |F(u)| 图 形 和 D(u) 图 形 的 差 别 。 原 |F(u)|图形只有中间几个峰可见,图(b) 为处理后D(u)的图形。
39
2)频谱的频域移中 常用的傅里叶正反变换公式都是以零点为中心 的公式,其结果中心最亮点却在图像的左上角, 作为周期性函数其中心最亮点将分布在四角, 这和我们正常的习惯不同,因此,需要把这个 图像的零点移到显示的中心。例如把F(u,v)的 原零点从左上角移到显示屏的中心。
正变换:
反变换:
f ( x, y) F (u, v) exp[ j 2ux / M vy / N ]
u 0 v 0
M 1 N 1
20
8.3 二维傅立叶变换的性质
1) 可分离性:正反变换都具有分离性
21
1) 可分离性:正反变换都具有分离性
利用二维傅立叶变换的可分离性,可将二维DFT转化 成一维DFT计算。即,先在x(或y)方向进行一维DFT, 再在y(或x)方向进行一维DFT
16
简单函数的傅里叶谱M 点离散函数及其傅里叶频 谱(M=1024, A=1, K=8); 对应的傅里叶频谱
曲线下面积:当x 域 加倍时,频率谱的高度 也加倍;当函数长度加 倍时,相同间隔下频谱 中零点的数量也加倍。
17
8.2 二维傅立叶变换
1) 二维连续函数傅立叶变换(2DFT)
定义: 若f(x,y)是连续图像函数
36
相关性匹配举例
延拓图像f(x,y)
相关函数图像
37
离散傅立叶变换应用中的问题 1) 频谱的图像显示 谱图像就是把 |F(u,v)| 作为亮度显示在屏幕 上。 由于在傅立叶变换中 F(u,v) 随 u , v 衰减太快, 直接显示高频项只能看到一两个峰,其余都 不清楚。为了符合图像处理中常用图像来显 示结果的惯例,通常用D(u,v) 来代替,以弥 补只显示|F(u,v)|不够清楚这一缺陷。D(u,v) D(u, v) log(1 | F (u, v) |) 定义为:

太原理工大学matlab课程设计报告图像的傅里叶变换及其应用doc

太原理工大学matlab课程设计报告图像的傅里叶变换及其应用doc

课程名称: MATLAB 及在电子信息课程中的应用 实验名称: 图像的傅里叶变换及其应用设计四 图像的傅里叶变换及其应用一、设计目的通过该设计,掌握傅里叶变换的定义及含义。

二、设计容及主要的MATLAB 函数1、图像的离散傅里叶变换假设),(n m f 是一个离散空间中的二维函数,那么该函数的二维傅里叶变换定义为其中21ωω和是频域变量,单位是弧度/采样单元。

函数),(21ωωf 为函数),(n m f 的频谱。

二维傅里叶反变换的定义为21212121),(),(ωωωωωωππωππωd d e e f n m f n j m j ⎰⎰-=-==因此,函数),(n m f 可以用无数个不同频率的复指数信号的和表示,在频率),(21ωω处复指数信号的幅度和相位为),(21ωωfMATLAB 提供的快速傅里叶变换函数1〕fft2:用于计算二维快速傅里叶变换,其语法格式为b=fft2(I),返回图像I 的二维傅里叶变换矩阵,输入图像I 和输出图像B 大小一样;b=fft2(I,m,n),通过对图像I 剪切或补零,按用户指定的点数计算二维傅里叶变换,返回矩阵B 的大小为m ⨯n 。

很多MATLAB 图像显示函数无法显示复数图像,为了观察图像傅里叶变换后的结果,应对变换后的结果求模,方法是对变换结果使用abs 函数。

2〕fftn:用于计算n维快速傅里叶变换,其语法格式为b=fftn(I),计算图像的n维傅里叶变换,输出图像B和输入图像I大小一样;b=fftn(I,size),通过对图像I剪切或补零,按size指定的点数计算n维傅里叶变换,返回矩阵B的大小为size。

3)fftshift:用于将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,其语法格式为b=fftshift(I),将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。

2、快速傅里叶变换的应用1〕滤波器频率响应滤波器冲击响应的傅里叶变换就是该滤波器的频率响应MATLAB提供的freqz2函数可以同时计算和显示滤波器的频率响应,其语法格式为freqz2(h),可同时计算和显示滤波器的频率响应。

数字图像处理及MATLAB实现实验四——图像变换

数字图像处理及MATLAB实现实验四——图像变换

数字图像处理及MATLAB实现实验四——图像变换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);figureimshow(J1,[550])%对原始图像进⾏旋转J=imrotate(I,90,'bilinear','crop');figureimshow(J)%求旋转后图像的傅⾥叶频谱J=fft2(I);F=abs(J);J2=fftshift(F);figureimshow(J2,[550])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,[550])% %对原始图像进⾏旋转% J=imrotate(I,90,'bilinear','crop');% figure% imshow(J)% %求旋转后图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J2=fftshift(F);figure% imshow(J2,[550])% %对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函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000110000001000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*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函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000100000000000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*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));。

Matlab中的常用图像变换函数

Matlab中的常用图像变换函数

Matlab中的常用图像变换函数1. 离散傅立叶变换的 Matlab实现Matlab 函数fft、fft2 和fftn 分别可以实现一维、二维和N 维DFT 算法;而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT 。

这些函数的调用格式如下:A=fft(X,N,DIM)其中,X 表示输入图像;N 表示采样间隔点,如果 X 小于该数值,那么 Matlab 将会对 X 进行零填充,否则将进行截取,使之长度为 N ;DIM 表示要进行离散傅立叶变换。

A=fft2(X,MROWS,NCOLS)其中,MROWS 和 NCOLS 指定对 X 进行零填充后的 X 大小。

A=fftn(X,SIZE)其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度。

函数 ifft、ifft2 和 ifftn的调用格式于对应的离散傅立叶变换函数一致。

例子:图像的二维傅立叶频谱% 读入原始图像I=imread('lena.bmp');imshow(I)% 求离散傅立叶频谱J=fftshift(fft2(I));figure;imshow(log(abs(J)),[8,10])2. 离散余弦变换的 Matlab 实现2.1. dct2 函数功能:二维 DCT 变换格式:B=dct2(A)B=dct2(A,m,n)B=dct2(A,[m,n])说明:B=dct2(A) 计算 A 的 DCT 变换 B ,A 与 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为m×n。

2.2. dict2 函数功能:DCT 反变换格式:B=idct2(A)B=idct2(A,m,n)B=idct2(A,[m,n])说明:B=idct2(A) 计算 A 的 DCT 反变换 B ,A 与 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通过对 A 补 0 或剪裁,使B 的大小为m×n。

matlab图像傅里叶变换

matlab图像傅里叶变换

学号:111204510 姓名:邹龙1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。

s=imread('d:\1.jpg');%读入原图像i=rgb2gray(s)i=double(i)j=fft2(i); %傅里叶变换k=fftshift(j); % 直流分量移到频谱中心l=log(abs(k)); %对数变换m=fftshift(j); %直流分量移到频谱中心RR=real(m); %取傅里叶变换的实部II=imag(m); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2); %计算频谱府幅值A=(A-min(min(A)))/(max(max(A)))*255; % 归一化b=circshift(s,[800 450]); %对图像矩阵im中的数据进行移位操作b=rgb2gray(b)b=double(b)c=fft2(b); %傅里叶变换e=fftshift(c); % 直流分量移到频谱中心l=log(abs(e)); %对数变换f=fftshift(c); %直流分量移到频谱中心WW=real(f); %取傅里叶变换的实部BZZ=imag(f); %取傅里叶变换的虚部B=sqrt(WW.^2+ZZ.^2); %计算频谱府幅值B=(B-min(min(B)))/(max(max(B)))*255; % 归一化subplot(2,2,1);imshow(s);title('原图像')subplot(2,2,2);imshow(uint8(b));;title('平移图像')subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱')2、对图像进行除法运算moon=imread('moon.tif');subplot(1,2,1);imshow(moon);I=double(moon);J=I*0.43+80; moon2=uint8(J); Ip=imdivide(moon,moon2); subplot(1,2,2);imshow(Ip,[]);。

matlab编程实现傅里叶变换

matlab编程实现傅里叶变换

傅里叶变换是信号处理和图像处理中的重要数学工具,可以将一个信号或图像从时域转换到频域。

MATLAB作为一款强大的数学软件,可以方便地实现傅里叶变换并进行相应的分析和处理。

本文将介绍如何使用MATLAB编程实现傅里叶变换,并探讨其在信号处理和图像处理中的应用。

一、MATLAB中的傅里叶变换函数在MATLAB中,可以使用fft函数来进行一维离散傅里叶变换(DFT)的计算,使用fft2函数进行二维离散傅里叶变换(DFT)的计算。

这两个函数的基本语法如下:1. 一维离散傅里叶变换Y = fft(X)其中,X是输入的一维信号(向量),Y是输出的一维频谱(向量)。

2. 二维离散傅里叶变换Y = fft2(X)其中,X是输入的二维图像(矩阵),Y是输出的二维频谱(矩阵)。

除了fft和fft2函数外,MATLAB还提供了ifft和ifft2函数用于进行离散傅里叶逆变换。

通过这些函数,我们可以方便地实现傅里叶变换和逆变换的计算。

二、MATLAB中的傅里叶变换实例为了更好地理解MATLAB中的傅里叶变换实现,我们可以通过一个具体的实例来进行演示。

假设我们有一个包含两个正弦波的信号,我们首先可以使用MATLAB生成这个信号,并对其进行傅里叶变换。

生成信号fs = 1000; 采样频率为1000Hzt = 0:1/fs:1-1/fs; 时间范围为1秒f1 = 50; 第一个正弦波的频率为50Hzf2 = 120; 第二个正弦波的频率为120Hzx = 0.7*sin(2*pi*f1*t) + sin(2*pi*f2*t); 生成包含两个正弦波的信号进行傅里叶变换N = length(x); 信号的长度X = fft(x)/N; 进行离散傅里叶变换,并进行归一化处理f = (0:N-1)*(fs/N); 计算频率轴figure;subplot(2,1,1);plot(f,abs(X)); 绘制频谱幅度title('单边频谱');xlabel('频率/Hz');ylabel('幅度');subplot(2,1,2);plot(f,angle(X)); 绘制频谱相位title('频谱相位');xlabel('频率/Hz');ylabel('相位');通过上面的实例,我们可以看到,MATLAB可以很方便地实现最常见的傅里叶变换,并且提供了丰富的绘图功能来呈现变换结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子1004 黄佳卿201081163
图像傅里叶变换代码如下:
I = imread('C:\Users\jiaqing\Desktop\matlab homework\zhen.jpg'); % 读入图像
subplot(2,2,1),imshow(I);
title('zhen');
FI = abs((fft2(I)));
NFI = 255*mat2gray(FI); %归一化
SFI = fftshift(NFI);
imgray = rgb2gray(SFI); %灰阶
subplot(2,2,2),imshow(imgray);
title('fft of zhen');
I = imread('C:\Users\jiaqing\Desktop\matlab homework\cat.jpg'); % 读入图像
subplot(2,2,3),imshow(I);
title('cat');
FI = abs((fft2(I)));
NFI = 255*mat2gray(FI); %归一化
SFI = fftshift(NFI);
imgray = rgb2gray(SFI); %灰阶
subplot(2,2,4),imshow(imgray);
title('fft of cat');
运行结果如下:
图像添加高斯噪声与去除代码如下:
I = imread('C:\Users\jiaqing\Desktop\matlab homework\zhen.jpg'); % 读入图像
%给图像添加噪声
grayI = rgb2gray(I);
nI=imnoise(grayI,'gaussian',0.05);
subplot(2,2,1);imshow(nI);
title('加入高斯噪声后的图像');
%加入噪声后图像的傅立叶变换
FI = abs((fft2(nI)));
NFI = 255*mat2gray(FI); %归一化
SFI = fftshift(NFI);
subplot(2,2,2),imshow(SFI);
title('加入噪声后的傅里叶变换');
xd=wiener2(nI,[3 3]);
subplot(2,2,3);imshow(xd);
%去除噪声后图像的傅立叶变换
FI = abs((fft2(xd)));
NFI = 255*mat2gray(FI); %归一化SFI = fftshift(NFI);
subplot(2,2,4),imshow(SFI);
title('去除噪声后的傅里叶变换');
处理结果:。

相关文档
最新文档