[filename, pathname] = uigetfile('*.tif;*.jpg;*.bmp', '选原始图像');
if isequal(filename,0) || isequal(pathname,0) % User pressed cancel
return;
end
fn=[pathname filename];
rgb=imread(fn);
%读入比较图像
[filename, pathname] = uigetfile('*.tif;*.jpg;*.bmp', '选修改图像');
if isequal(filename,0) || isequal(pathname,0) % User pressed cancel
return;
end
fnp=[pathname filename];
rgb_mod=imread(fnp);
Y_ComponentMatrix=0.299*rgb(:,:,1)+0.587*rgb(:,:,2)+0.114*rgb(:,:,3);
Cb_ComponentMatrix=0.564*(rgb(:,:,3)-Y_ComponentMatrix);
Cr_ComponentMatrix=0.713*(rgb(:,:,1)-Y_ComponentMatrix);
Y_ComponentMatrix=double(Y_ComponentMatrix);
Cb_ComponentMatrix=double(Cb_ComponentMatrix);
Cr_ComponentMatrix=double(Cr_ComponentMatrix);
Y_ComponentMatrix_mod=0.299*rgb_mod(:,:,1)+0.587*rgb_mod(:,:,2)+0.114*rgb_mod(:,:,3);
Cb_ComponentMatrix_mod=0.564*(rgb_mod(:,:,3)-Y_ComponentMatrix_mod);
Cr_ComponentMatrix_mod=0.713*(rgb_mod(:,:,1)-Y_ComponentMatrix_mod);
Y_ComponentMatrix_mod=double(Y_ComponentMatrix_mod);
Cb_ComponentMatrix_mod=double(Cb_ComponentMatrix_mod);
Cr_ComponentMatrix_mod=double(Cr_ComponentMatrix_mod);
x1=Y_ComponentMatrix;
x2=Cb_ComponentMatrix;
x3=Cr_ComponentMatrix;
y1=Y_ComponentMatrix_mod;
y2=Cb_ComponentMatrix_mod;
y3=Cr_ComponentMatrix_mod;
d = mean( mean( (x1(:)-y1(:)).^2 ) );
d1= mean( mean( (x2(:)-y2(:)).^2 ) );
d2= mean( mean( (x3(:)-y3(:)).^2 ) );
m=255;
p1=10*log10( m^2/d );
p2=10*log10( m^2/d1);
p3=10*log10( m^2/d2);
p=[p1,p2,p3];
这段程序运行后说:
??? Index exceeds matrix dimensions.
我是新手 实在不懂如何解决 求高手指点!