基于matlab实现数字图像处理之图像变换

一、实验目的

(1)了解图像变换的意义和手段。

(2)熟悉傅立叶变换的基本性质。

(3)通过实验了解二维频谱的分布特点。

二、实验仪器(软件平台)

Matlab 软件

三、实验原理

1、傅里叶变换

傅里叶变换是一种函数在空间域和频率域的变换,从空间域到频率域的变换是傅里叶变换,而从频率域到空间域是傅里叶的反变换。傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、卷积滤波器、噪声等等。针对许多空间难处理的图像问题,可以通过傅里叶变换在频域中解决大多数的图像处理问题,所以傅里叶变换对于图像处理是各重要存在。

傅里叶变换的定义:

基于matlab实现数字图像处理之图像变换

图 1 傅里叶变换的定义

频谱图像中低频能量越大,幅值越大,区域也就越亮。图像进行傅里叶变换后得到的频谱是低频能量(即有用信号)集中在四个边角,那么得到的频谱特征显示不明显,想要清晰显示频谱特征则需要频谱中心化。

1、任意选择一幅图像,对其进行傅立叶变换,观察图像的频谱特征;

2、对傅里叶频谱图进行中心化移位,并观察移位前后的傅里叶频谱图的特点

clc;clear;
%% 1、任意选择一幅图像,对其进行傅立叶变换,观察图像的频谱特征;
R = imread('B_and_W.jpg');
R=rgb2gray(R);%变换前需要将图像转换为灰值图像
F1=fft2(R);
F2=fftshift(abs(F1));%频谱中心化%fftshift(abs(F1))---直流分量移到频谱中心
x=1:64;y=1:64;
figure(1)
subplot(2,2,1),imshow(R);title('原始图像');
subplot(2,2,2),imshow(log(abs(F1)+1),[]);title('图像傅里叶变换');
subplot(2,2,3),imshow(log(abs(F2)+1),[]);title('图像中心化傅里叶变换');
%进行傅里叶变换(频移)后的结果为复数,需要使用abs求其模,而模的值范围较大需要用log进行缩放。
%imshow(T)只会显示[0,1]的值,而imshow(T,[]) 会根据灰度图的数值范围来显示图像
figure(2)
subplot(2,1,1),title('三维图像');
mesh(abs(real(F1)),'FaceColor','white');
subplot(2,1,2),title('FFT变换');
mesh(x,y,F2(x,y),'FaceColor','red');

1、任意选择两幅图像,对其进行傅里叶变换,并获得其傅里叶变换的幅值谱和相位谱图

2、由幅值谱和相位谱逆变换,获得重建图像图;

%% 1、任意选择两幅图像,对其进行傅里叶变换,并获得其傅里叶变换的幅值谱和相位谱图
I=imread('x.jpg');
J=imread('y.jpg');
I = rgb2gray(I);J = rgb2gray(J);%转灰度图像
[M,N]=size(I)
J=imresize(J,[M,N]);%限制图像大小,相位交换需要两个图像大小一致
IF1 = fft2(I);JF1 = fft2(J);%图像进行傅里叶变换
IF2 = fftshift(abs(IF1));JF2 = fftshift(abs(JF1));%图像频谱中心化
IABS = abs(IF1);IAG = angle(IF1);%幅度谱,相位谱
JABS = abs(JF1);JAG = angle(JF1);
I2=fftshift(abs(IABS));%log(abs(I2)+1)等于log(abs(IF2)+1)
J2=fftshift(abs(JABS));
figure(3)
subplot(241);imshow(I);title('原始图像1');
subplot(242);imshow(log(IABS+1),[]);title('图像1的幅度谱');
subplot(243);imshow(IAG,[]);title('图像1的相位谱');
subplot(245);imshow(J);title('原始图像2');
subplot(246);imshow(log(JABS),[]);title('图像2的幅度谱');
subplot(247);imshow(JAG,[]);title('图像2的相位谱');
subplot(244);imshow(log(abs(I2)+1),[]);title('图像1的频谱中心化');
subplot(248);imshow(log(abs(J2)+1),[]);title('图像2的频谱中心化');
%% 2、由幅值谱和相位谱逆变换,获得重建图像图;
IFD1=ifftshift(abs(ifft2(log(IABS))));
IXW1=ifftshift(abs(ifft2(IAG)));
IFD2=ifftshift(abs(ifft2(log(JABS))));
IXW2=ifftshift(abs(ifft2(JAG)));
II=ifft2(IF1);JJ=ifft2(JF1);
figure(4)
subplot(2,3,1),imshow(abs(IFD1),[]);title('图像1傅里叶幅度谱逆变换');
subplot(2,3,2),imshow(abs(IXW1),[]);title('图像1傅里叶相位谱逆变换');
subplot(2,3,4),imshow(abs(IFD2),[]);title('图像2傅里叶幅度谱逆变换');
subplot(2,3,5),imshow(abs(IXW2),[]);title('图像2傅里叶相位谱逆变换');
subplot(2,3,3);imshow(abs(II),[]);title('图像1逆变换');
subplot(2,3,6);imshow(abs(JJ),[]);title('图像2逆变换');
%相位交换,注意i,两图像一定要大小一样
ii=IABS.*cos(JAG)+IABS.*sin(JAG).*i;
jj=JABS.*cos(IAG)+JABS.*sin(IAG).*i;
iI=abs(ifft2(ii));
jJ=abs(ifft2(jj));
figure(5)
subplot(2,2,1),imshow(iI,[]);title('图像1 幅度谱 与 图像2相位谱');
subplot(2,2,2),imshow(jJ,[]);title('图像2 幅度谱 与 图像1相位谱');

实验结果

基于matlab实现数字图像处理之图像变换

图 5 傅里叶变换的结果

基于matlab实现数字图像处理之图像变换

图 6 中心位移前后频谱对比

基于matlab实现数字图像处理之图像变换

图 7 幅度谱和相位谱

基于matlab实现数字图像处理之图像变换

图 8 逆变换重建图像

基于matlab实现数字图像处理之图像变换

图 9 两图像相位交换的结果

由图5可知,傅里叶变换后的频谱与原图像的轮廓呈垂直关系,由图6看出中心位移后,集中在四个角落的频谱变成所有低频信号集中在一起。图7与图8看出图像重建后,与原图像相同。图9是经过两幅图像的相位交换后得到的效果。

Original: https://blog.csdn.net/qq_45840242/article/details/125127084
Author: 鸭鸭吖P
Title: 基于matlab实现数字图像处理之图像变换

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/644655/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球