用matlab做高斯滤波图像处理,.*时为什么出现Matrix dimensions must agree的错误。怎么改?谢谢

??? Error using ==> times
Matrix dimensions must agree.

Error in ==> gaosigaotong at 15
Ya=Y.*Hd;
代码是巴特沃斯高通滤波
IA=imread('D:\我的文档\桌面\10096009_076264.jpg');
[f1,f2]=freqspace(size(IA),'meshgrid');
D=0.3;
r=f1.^2+f2.^2;
n=4;
for i=1:size(IA,1)
for j=1:size(IA,2)
t=(D*D)/r(i,j);
Hd(i,j)=1/(t^n+1);
end
end
Y=fft2(double(IA));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia=real(ifft2(Ya));
figure
subplot(2,2,1),imshow(uint8(IA));
subplot(2,2,2),imshow(uint8(Ia));
figure
surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');

%%%这段代码好像可以执行你的东西了。。。试试看吧。
clc;clear all;close all;
IA=imread('1.jpg');
IA=rgb2gray(IA);%%%图像要灰度化的;不然彩色的图像是一个三维的矩阵;你再想想看;
% imshow(IA)
[f1,f2]=freqspace(size(IA),'meshgrid');
D=0.3;
r=f1.^2+f2.^2;
n=4;
for i=1:size(IA,1)
for j=1:size(IA,2)
t=(D*D)/r(i,j);
Hd(i,j)=1/(t^n+1);
end
end
Y=fft2(double(IA));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia=real(ifft2(Ya));
figure
subplot(2,2,1),imshow(uint8(IA));
subplot(2,2,2),imshow(uint8(Ia));
figure
surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');追问

嗯,麻烦您能帮我看一下这段程序么?谢谢您了http://zhidao.baidu.com/question/334529023.html

追答

rgb2hsi这个函数没有定义。。。不是像abs()一样是matlab自带的函数。。。rgb2hsi这个需要自己定义function的。。。我不知道你要实现什么东西。。。你还是自己再看看吧。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-26
两个矩阵不同形
第2个回答  2011-10-26
代码贴出来啊
大家正在搜