lhs_5 发表于 2007-5-18 23:30

matlab高人帮帮小弟吧

这个是我毕设要用到的matlab程序 但是在运行中出现这样子的错误:
??? Index exceeds matrix dimensions.
Error in ==> super_noise_1 at 6
imagea=Iimage(1:1+223,1:1+223);
麻烦高人帮帮我怎么改这个程序,小弟在此谢谢了!
以下是成程序,是在matlab 7.1环境下运行的~~~

clear all;
%制作试验图像
Iimage=double(imread('lenna.bmp'));
imagea=zeros(224,224);
%原始高分辨率静态图像
imagea=Iimage(1:1+223,1:1+223);
%高斯滤波器的尺寸P×P
P=input('please input the dimension of the gauss block P as:\n');
%高斯滤波器的方差
del=input('please input del as:\n');
%高斯低通滤波器
gauss=fspecial('gaussian',,del);
%filter the input image
org=filter2(gauss,imagea);
%确定附加噪声的方差
V=input('please input the var of the noise V as:\n');
%参考帧的数目
K=input('please input the num of the reference frames K as:\n');
%给定每一幅图像的相对位移
tran=zeros(2,K);
imageb=zeros(224,224,K);
%第一行存储了行坐标位移,第二行存储了列坐标位移
tran=input('please input the 2*K matrix tran as:\n');
%对基准图像进行平移、滤波。
for k=1:K
    imageb(:,:,k)=Iimage(1+tran(1,k):1+223+tran(1,k),1+tran(2,k):1+223+tran(2,k));
    imageb(:,:,k)=filter2(gauss,imageb(:,:,k));
end
%对图像进行抽样
=size(imagea);%原始图像的尺寸
Q=input('please input the sample ratio Q as:\n');%Q为每一个方向上的尺寸缩小倍数
if mod(I1,Q)==0 & mod(I2,Q)==0%当象素数目为Q的整数
for k=1:K
    unsampled=imageb(:,:,k);
    L1=I1/Q;L2=I2/Q;
      sampled=zeros(L1,L2);
      for l1=1:L1
            for l2=1:L2
                for i1=(Q*(l1-1)+1):(Q*l1)
                  for i2=(Q*(l2-1)+1):(Q*l2)
                        sampled(l1,l2)=sampled(l1,l2)+unsampled(i1,i2);
                  end
                end
                sampled(l1,l2)=(1/Q^2)*sampled(l1,l2);
            end
      end
      % 给参考图像加方差为V的噪声
      sampled=imnoise(uint8(sampled),'gaussian',0,V);
      sampled=double(sampled);
    B(:,:,k)=sampled; % B存储了K幅参考帧的数据
end
       %if mod(I1,2)==0|MOD(I2,2)==0%当象素数为偶数时
       A=zeros(L1,L2);
       for l1=1:L1
            for l2=1:L2
                for i1=(Q*(l1-1)+1):(Q*l1)
                  for i2=(Q*(l2-1)+1):(Q*l2)
                        A(l1,l2)=A(l1,l2)+org(i1,i2);
                  end
                end
                A(l1,l2)=(1/Q^2)*A(l1,l2);
            end
      end
      %给基准图像加噪声,方差也是V
      A=imnoise(uint8(A),'gaussian',0,V);
      A=double(A);
    else
      disp('原始图像的尺寸不适当!');
    end
psf=zeros(P+Q-1,P+Q-1);
mat=zeros(P+Q-1,P+Q-1);
for x=1:Q
    for y=1:Q
      mat(x:P+x-1,y:P+y-1)=gauss;
      psf=psf+mat(:,:);
    end
end
psf=psf/Q^2; %计算每一点的模糊函数
h2=0;
for i=1:P+Q-1
    for j=1:P+Q-1
      h2=h2+psf(i,j)^2;%模糊函数的归一化参数
    end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% A 为基准帧
% B 为K维的参考帧图像
% tran 存储了位移矢量,两行K列,每一列分别为其行、列位移分量
% psf 为模糊函数,在这里是空域不变的(也可以是空域变换的)
% h2 为模糊函数归一化参数
% P 为高斯滤波器尺寸
% Q 为图像放大倍数(每一个尺度)
% K 为参考帧数目
% imagea 为原始高分辨率图像
% gauss 为使用的高斯滤波器
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
save super_noise_1A B tran psf h2 P Q K imagea gauss;

如果可以的话 希望能发到我邮箱:lhs_5@163.com谢谢了!

eight 发表于 2007-5-18 23:31

原帖由 lhs_5 于 2007-5-18 23:30 发表 http://www.chinavib.com/forum/images/common/back.gif
这个是我毕设要用到的matlab程序 但是在运行中出现这样子的错误:
??? Index exceeds matrix dimensions.
Error in ==> super_noise_1 at 6
imagea=Iimage(1:1+223,1:1+223);
麻烦高人帮帮我怎么改这个程序 ...


这几天类似的问题我回答过不下5次,自己先动手搜索一下版面,关键词: Index exceeds matrix dimensions

[ 本帖最后由 eight 于 2007-5-18 23:34 编辑 ]

lhs_5 发表于 2007-5-18 23:55

具体的能帮忙看看吗?我好像有些不理解啊~~
页: [1]
查看完整版本: matlab高人帮帮小弟吧