通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2014-1-14
跳转到指定楼层
1#
发表于 2014-3-9 16:06:25 |只看该作者 |倒序浏览
    《MATLAB 7.0从入门到精通》(求是科技  编著)是一本MATLAB学习的入门书籍,全篇通俗易懂。最近学习到222-223页,关于使用fft2()函数处理图像。其中的示例如下:

%fft2_example.m
%分析图像的频谱
img = imread(’coins.png’); %读图像文件
f_img = fft2(double(img)); %二维fft变换
f_img = fftshift(f_img); %把直流成分移动频谱的中间
imshow(img); %显示图像
figure;
f_img_abs = abs(f_img);  %得到频谱幅度
f_img_abs = (f_img_abs-min(min(f_img_abs)))./ ..  . %把频谱幅度变换到[0,255]范围内
    (max(max(f_img_abs))-min(min(f_img_abs)))*255;

imshow(f_img_abs); %显示频谱幅度
title(’图像的幅频分布’);



在运行到

f_img_abs = (f_img_abs-min(min(f_img_abs)))./  (max(max(f_img_abs))-min(min(f_img_abs)))*255;



出现如下错误:


Array dimensions must match for binary array op
发现是f_img_abs-min(min(f_img_abs))中维度的匹配问题。于是,对代码做出如下修改:%fft2_example.m %分析图像的频谱img = imread('C:\Users\ljj\Desktop\coin.jpg'); %读图像文件f_img = fft2(double(img)); %二维fft变换f_img = fftshift(f_img); %把直流成分移动频谱的中间imshow(img); %显示图像figure; f_img_abs = abs(f_img);  %得到频谱幅度f_min=min(min(f_img_abs));f_max=max(max(f_img_abs));for i=1:3%把频谱幅度变换到[0,255]范围内    f_img_abs(:,:,i) = (f_img_abs(:,:,i)-f_min(i))./(f_max(i)-f_min(i))*255;end;imshow(f_img_abs); %显示频谱幅度title('图像的幅频分布'); 运行之后正常,如下是运行结果:
图一 原始图片
图二 图片的幅频分布


举报本楼

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

手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-6-5 20:28 , Processed in 0.113250 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部