Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 683|回复: 3

Matlab进行快速傅里叶变换和反变换

[复制链接]

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2023-12-11 14:35:05 | 显示全部楼层 |阅读模式
  1. % 读取图片
  2. image = imread('image.jpg');

  3. % 将图像转换为灰度图像(如果需要)
  4. grayImage = rgb2gray(image);

  5. % 进行二维快速傅里叶变换
  6. fftImage = fft2(grayImage);

  7. % 频谱中心化
  8. fftImageShifted = fftshift(fftImage);

  9. % 进行反变换
  10. ifftImageShifted = ifftshift(fftImageShifted);
  11. ifftImage = ifft2(ifftImageShifted);

  12. % 显示原始图像、频谱图和反变换后的图像
  13. figure;
  14. subplot(1, 3, 1), imshow(grayImage), title('原始图像');
  15. subplot(1, 3, 2), imshow(log(1 + abs(fftImageShifted)), []), title('中心化频谱图');
  16. subplot(1, 3, 3), imshow(abs(ifftImage), []), title('反变换图像');
复制代码
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
 楼主| 发表于 2023-12-11 14:52:06 | 显示全部楼层
  1. % 读取图片
  2. image = imread('image.png');
  3. image1 = image(50:280,50:300,:)
  4. image2 = image(50:280,400:650,:)
  5. % 将图像转换为灰度图像(如果需要)
  6. grayImage1 = rgb2gray(image1);
  7. grayImage2 = rgb2gray(image2);
  8. % 进行二维快速傅里叶变换
  9. fftImage1 = fft2(grayImage1);
  10. fftImage2 = fft2(grayImage2);
  11. % 频谱中心化
  12. fftImageShifted1 = fftshift(fftImage1);
  13. fftImageShifted2 = fftshift(fftImage2);

  14. % 进行反变换
  15. ifftImageShifted1 = ifftshift(fftImageShifted1);
  16. ifftImage1 = ifft2(ifftImageShifted1);
  17. ifftImageShifted2 = ifftshift(fftImageShifted2);
  18. ifftImage2 = ifft2(ifftImageShifted2);

  19. % 显示原始图像、频谱图和反变换后的图像
  20. figure;
  21. subplot(2, 3, 1), imshow(grayImage1), title('原始图像');
  22. subplot(2, 3, 2), imshow(log(1 + abs(fftImageShifted1)), []), title('中心化频谱图');
  23. subplot(2, 3, 3), imshow(abs(ifftImage1), []), title('反变换图像');
  24. subplot(2, 3, 4), imshow(grayImage2), title('原始图像');
  25. subplot(2, 3, 5), imshow(log(1 + abs(fftImageShifted2)), []), title('中心化频谱图');
  26. subplot(2, 3, 6), imshow(abs(ifftImage2), []), title('反变换图像');
复制代码
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
 楼主| 发表于 2023-12-11 14:52:20 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
 楼主| 发表于 2023-12-13 14:39:25 | 显示全部楼层
  1. % 读取图片
  2. image = imread('aaa.jpg');

  3. % 将图像转换为灰度图像(如果需要)
  4. grayImage = rgb2gray(image);

  5. % 进行二维快速傅里叶变换
  6. fftImage = fft2(grayImage);

  7. % 频谱中心化
  8. fftImageShifted = fftshift(fftImage);
  9. %加入噪声点

  10. fftImageShifted(220:222,330:331)=2e6;
  11. %fftImageShifted(180:222,428:end)=0;
  12. % 进行反变换
  13. ifftImageShifted = ifftshift(fftImageShifted);
  14. ifftImage = ifft2(ifftImageShifted);

  15. % 显示原始图像、频谱图和反变换后的图像
  16. figure;
  17. subplot(1, 3, 1), imshow(grayImage), title('原始图像');
  18. %imwrite(grayImage,'image_noise.jpg');
  19. subplot(1, 3, 2), imshow(log(1 + abs(fftImageShifted)), []), title('中心化频谱图');
  20. img =double(abs(ifftImage));
  21. img = uint8(img/max(max(img))*255);
  22. subplot(1, 3, 3), imshow(img), title('反变换图像');
  23. imwrite(img,'image_noise.jpg');
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2024-11-23 13:44 , Processed in 0.069065 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表