matlab基于fft的图像平移代码
时间: 2023-11-04 22:10:12 浏览: 95
利用matlab编写的图像平移程序
5星 · 资源好评率100%
以下是MATLAB基于FFT的图像平移代码:
```
function shifted_image = fft_translate(image, shift_x, shift_y)
% image: 输入图像
% shift_x: 沿x轴平移的距离
% shift_y: 沿y轴平移的距离
[M, N] = size(image);
% 构造平移矩阵
u = 0:M-1;
v = 0:N-1;
[U, V] = meshgrid(u, v);
D = exp(-1j * 2 * pi * (shift_x * U/M + shift_y * V/N));
% 应用平移矩阵
shifted_image = ifft2(D .* fft2(image));
% 取实部
shifted_image = real(shifted_image);
end
```
使用方法:
```
% 读取图像
image = imread('lena.png');
image = im2double(rgb2gray(image));
% 平移图像
shifted_image = fft_translate(image, 50, 100);
% 显示图像
subplot(1, 2, 1);
imshow(image);
title('Original Image');
subplot(1, 2, 2);
imshow(shifted_image);
title('Shifted Image');
```
其中 `image` 为输入图像,`shift_x` 和 `shift_y` 分别为沿x轴和y轴平移的距离。函数返回经过平移后的图像 `shifted_image`。代码中使用了FFT进行频域平移,具体实现可以参考注释。
阅读全文