马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
这个是我毕设要用到的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',[P P],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
%对图像进行抽样
[I1,I2]=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_1 A B tran psf h2 P Q K imagea gauss;
如果可以的话 希望能发到我邮箱:lhs_5@163.com 谢谢了! |