为什么下面的matlab程序老是 Subscripted assignment dimension mismatch.Error in ==> weilasi at 9%通过模拟水平运动模糊建立退化函数d=5;h=zeros(2*d+1,2*d+1);h(d+1,1:2*d+1)=1/(2*d);%模糊图像加入噪声fig1=imread('C:\Users\zh

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/26 07:50:24
为什么下面的matlab程序老是Subscriptedassignmentdimensionmismatch.Errorin==>weilasiat9%通过模拟水平运动模糊建立退化函数d=5;h=ze

为什么下面的matlab程序老是 Subscripted assignment dimension mismatch.Error in ==> weilasi at 9%通过模拟水平运动模糊建立退化函数d=5;h=zeros(2*d+1,2*d+1);h(d+1,1:2*d+1)=1/(2*d);%模糊图像加入噪声fig1=imread('C:\Users\zh
为什么下面的matlab程序老是 Subscripted assignment dimension mismatch.Error in ==> weilasi at 9
%通过模拟水平运动模糊建立退化函数
d=5;
h=zeros(2*d+1,2*d+1);
h(d+1,1:2*d+1)=1/(2*d);
%模糊图像加入噪声
fig1=imread('C:\Users\zhangtao\Desktop\维纳斯滤波器\camera.bmp');
[m n]=size(fig1);
fe=zeros(m+2*d,n+2*d);
fe(1:m,1:n)=fig1;
he=zeros(m+2*d,n+2*d);
he(1:2*d+1,1:2*d+1)=h;
F=fft2(fe);
H=fft2(he);
g=imnoise(unit8(ifft2(F.*H)),'gaussian',0,0.0001);
G=fft2(double(g));
% 恢复图像
K=0.1;
F_est=((abs(H).^2.)/(abs(H).^2+K)).*G./H;
fig_est=real(ifft2(F_est));
%原图像
subplot(1,3,1);
imshow(fig1);
title('原图像');
xlable('(a)');
%显示退化图像
subplot(1,3,2);
imshow(unit8(g(d+1:m+d,d+1:n+d)),[min(g(:)) max(g(:))]);
title('退化图像');
xlable('(b)');
%显示恢复图像
subplot(1,3,3);
imshow(unit8(fig_est(1:m,1:n)),[min(fig_est(:)) max(fig_est(:))]);
title('恢复后图像');
xlable('(c)');
这是图片

为什么下面的matlab程序老是 Subscripted assignment dimension mismatch.Error in ==> weilasi at 9%通过模拟水平运动模糊建立退化函数d=5;h=zeros(2*d+1,2*d+1);h(d+1,1:2*d+1)=1/(2*d);%模糊图像加入噪声fig1=imread('C:\Users\zh
fe(1:m,1:n)=fig1;这句明显有误.我估计你是想把fig1放到fe的前m行n列中,可是照你这么写,是把矩阵fe的前面这些元素都赋值为fig1,所以系统提示维度不匹配.