matlab 通过矩阵变换使图像旋转平移_光电图像处理 | 傅里叶变换(一)

7eb40abb29ab923107791e061cc587cf.png

傅里叶变换

Fourier transform

bdea80bdcc6cc091fbfd8248335f4606.png

7afecb1833f90be379996f5cf7b8056d.png

1 傅里叶变化基本知识

1.1 一维连续Fourier变换

对函数f(x)进行傅里叶变换得到F(u)

逆变换:从F(u)f(x)进行反傅里叶变换

一维连续函数f(x)的傅立叶变换F(u) 一般是虚数,可用复数形式表示为:

定义幅值为:

定义相位为:

幅值相位表示傅立叶变换

能量谱(或功率谱)

现在可以来复习一下傅里叶变换hui gu yi xia:

当然了,在信号与系统里面学到的最有用的应该就是sampling采样了,在离散傅里叶变换里面真的太重要了:对于连续函数,就假如说是三角函数sin(x),当以∆?时间(∆?越小越好)为间隔采样该函数,会得到sin(x)的一堆离散值,对该系列离散值做傅里叶变换,在频域上采样后的频谱相当于原函数频谱的频移,最后用滤波器滤掉就可以得到连续函数的频谱,在通过反傅里叶变换得到原连续函数。

1.2 一维离散Fourier变换

正变换:(DFT)

逆变换:(IDFT)

变换示意图如下:c222a85c24295ff2a0a423819615df67.png

将频率部分取出:18d8b72b7569a4a94593064d86927791.png

1.3 二维连续Fourier变换

正变换:

逆变换:

1.4 二维离散Fourier变换

正变换:

逆变换:

幅度 (频谱):

相位角/谱:

功率谱/能量谱

2 MATLAB示例

2.1 正变换和反变换

clc, close all;
I = imread('saturn.png');
J = rgb2gray(I);
K = fft2(J);
L = fftshift(K);
M = ifft2(K);
% M = ifft2(ifftshift(L)); % 这样也是可以的
figure,
subplot(121),imshow(uint8(abs(L/198))),title('傅里叶频谱');
subplot(122),imshow(uint8(uint8(M))),title('傅里叶反变换后的图像');

RESULT:46b65580ab5b6f4d432543a4c4b73701.png

2.2 傅里叶变换的幅度谱和相位谱

clc,close all;
I = imread('pout.tif');% MATLAB库里面有图源
% size(I)
% J = rgb2gray(I);
K = fft2(I);
L = fftshift(K);
fftr = real(L);
ffti = imag(L);
A = sqrt(fftr.^2 + ffti.^2);
A = (A - min(min(A)))/(max(max(A))-min(min(A)))*255;
B = angle(K);
figure,subplot(131),imshow(I),title('原图');
subplot(132),imshow(A),title('傅里叶幅度值');
subplot(133),imshow(B),title('傅里叶相位值');

RESULT:cf4b9cca0c42ff0dfe421d62687ebe3e.png

2.3 傅里叶变换性质:平移性质

空域坐标移动,频域只发生相位变化,幅值不变。同时频域坐标移动,空域中只发生相变,幅值不变。

clc,close all;
I1 = zeros(256,256); % 产生一个全零256×256矩阵(全为黑色)
I1(12:20,12:48) = 1; % 随便找个位置产生一个8×36的全1方块
I2 = zeros(256,256); % 产生一个全零256×256矩阵(全为黑色)
I2(210:218,100:136) = 1; % 实现空域平移功能
figure,
subplot(231),imshow(I1),xlabel('(a) 原始图像')
subplot(234),imshow(I2),xlabel('(b) 空域平移后图像')
I1 = im2double(I1); % FFT要求输入的矩阵为双精度浮点型,进行数据类型变换
F1 = fftshift(fft2(I1)); % 进行二维傅里叶变换
I2 = im2double(I2); % FFT要求输入的矩阵为双精度浮点型,进行数据类型变换
F2 = fftshift(fft2(I2)); % 进行二维傅里叶变换
subplot(232),imshow(log(1+abs(F1)),[]);xlabel('(c) 原始图像对应的傅里叶变化幅值'); % 使用log是便于展示
subplot(235),imshow(log(1+abs(F2)),[]);xlabel('(d) 空域平移后对应的傅里叶变化幅值') % 使用log是便于展示
subplot(233),imshow(angle(fft2(I1)),[]);xlabel('(e) 原始图像对应的傅里叶变化相位')
subplot(236),imshow(angle(fft2(I2)),[]);xlabel('(f) 空域平移后对应的傅里叶变化相位')

RESULT:57f2ac30ec46c5f402971771ebcc3959.png

2.4 傅里叶变换性质:旋转不变性

如果图像本身在空间域上旋转,则其二维离散傅里叶变换在频率域上也会旋转,而且旋转的角度相同。

clc,close all;
I1 = zeros(256,256); % 产生一个全零256×256矩阵(全为黑色)
I1(124:132,120:156) = 1; % 随便找个位置产生一个8×36的全1方块
subplot(221),imshow(I1),xlabel('(a) 原始图像');
subplot(222),imshow(log(1+abs(fftshift(fft2(im2double(I1))))),[]),xlabel('(b) 傅里叶变换');
I2 = imrotate(I1,-45,'bilinear','crop'); % 以图像中心为原点旋转45°
subplot(223),imshow(I2),xlabel('(c) 旋转后的图像');
subplot(224),imshow(log(1+abs(fftshift(fft2(im2double(I2))))),[]),xlabel('(d) 旋转后图像对应傅里叶变换');

RESULT:b354fd8c26835587d1e130133c483eb3.png

2.5 傅里叶变换性质:比例性

比例发生变化,不会影响频谱分布规律。

clc,close all;
I1 = zeros(255,255); % 产生一个全零256×256矩阵(全为黑色)
I1(125:132,125:132) = 1; % 随便找个位置产生一个7×7的全1方块
subplot(221),imshow(I1),xlabel('(a) 原始图像');
subplot(222),imshow(log(1+abs(fftshift(fft2(im2double(I1))))),[]),xlabel('(b) 傅里叶变换');
I2 = zeros(255,255); % 产生一个全零256×256矩阵(全为黑色)
I2(110:147,110:147) = 1; % 随便找个位置产生一个37×37的全1方块
subplot(223),imshow(I2),xlabel('(c) 旋转后的图像');
subplot(224),imshow(log(1+abs(fftshift(fft2(im2double(I2))))),[]),xlabel('(d) 放大后图像对应傅里叶变换');

RESULT:a0e068fe3e72c5b2fcea0094c78c9c4c.png

2.6 傅里叶变换性质:周期性和共轭对称性

2.7 傅里叶变换性质:统计特性(平均值)

0dca460e7d72531b4ea8b47897e264eb.png

2.8 傅里叶变换性质:可分离性

固定y方向,x方向每一行进行一维DFT;固定x方向,y方向每一列进行一维DFT。

即: 一个2D-DFT可用二次1D-DFT来实现。(上面的公式可以左右移动)

2.9 傅里叶变换性质:卷积/相关性

即: 空间域的卷积运算对应频率域的乘积运算;频率域的卷积运算对应空间域的乘积运算。

51bd1a07534dc79687dd89c9f0eb7cb5.png

915458fce9f3e6553dffc1131836f1f8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值