我需要从图像中提取一个大小的窗口,可以m*n
,但窗口大小随帧的每个图像而变化。它可能更大或更小,问题是我必须将最后一帧添加到当前,只有相同大小的矩阵可以加在一起。
这是我尝试过的。我所做的是我考虑了四种可能性,但我得不到的结果并不令人满意。
你有什么建议吗?
[f1, f2]=size(hscf);
[f11, f22]=size(Hstcf);
if( f1> f11 && f2>f22)
C=zeros(f1,f2);
for i=1:1:f11
for j=1:1:f22
C(i,j)=Hstcf(i,j);
end
end
Hstcf=C;
elseif(f1<f11 &&f2<f22)
C=zeros(f1,f2);
for i=1:1:f1
for j=1:1:f2
C(i,j)=Hstcf(i,j);
end
end
Hstcf=C;
elseif(f1>f11 && f2<f22)
C=zeros(f1,f2);
for i=1:1:f11
for j=1:1:f2
C(i,j)=Hstcf(i,j)
end
end
Hstcf=C;
elseif(f1<f11 && f2>f22)
C=zeros(f1,f2);
for i=1:1: f1
for j=1:1:f22
C(i,j)=Hstcf(i,j);
end
end
Hstcf=C;
elseif(f1<f11 && f2==f22)
C=zeros(f1,f2);
for i=1:1: f1
for j=1:1:f22
C(i,j)=Hstcf(i,j);
end
end
Hstcf=C;
elseif(f1>f11 && f2==f22)
C=zeros(f1,f2);
for i=1:1: f11
for j=1:1:f22
C(i,j)=Hstcf(i,j);
end
end
Hstcf=C;
elseif(f1==f11 && f2>f22)
C=zeros(f1,f2);
for i=1:1: f1
for j=1:1:f22
C(i,j)=Hstcf(i,j);
end
end
Hstcf=C;
elseif(f1==f11 && f2<f22)
C=zeros(f1,f2);
for i=1:1: f1
for j=1:1:f2
C(i,j)=Hstcf(i,j);
end
end
Hstcf=C;
end
答案 0 :(得分:0)
据我所知,您正在尝试将小图像复制到大图像,从大图像的左上角开始。如果是这样,则错误是由于以下原因。您首先将小图像正确复制到名为C
的空矩阵。但是在迭代之后,您已将修改后的C
直接复制到原始大图像(Hstcf=C
)。请检查以下代码段。
hscf = imread('cameraman.tif');
subplot(1,3,1); imshow(hscf);
title(strcat(num2str(size(hscf,1)), 'x', num2str(size(hscf,2))));
Hstcf = imresize(imread('coins.png'), .5);
subplot(1,3,2); imshow(Hstcf);
title(strcat(num2str(size(Hstcf,1)), 'x', num2str(size(Hstcf,2))));
[f1, f2]=size(hscf);
[f11, f22]=size(Hstcf);
if (f1>f11 && f2>f22)
for i=1:f11
for j=1:f22
hscf(i,j)=Hstcf(i,j);
end
end
end
subplot(1,3,3); imshow(hscf);
title(strcat(num2str(size(hscf,1)), 'x', num2str(size(hscf,2))));
此代码的输出如下所示,