从每个帧中的图像中提取窗口

时间:2015-04-01 02:25:32

标签: matlab image-processing video

我需要从图像中提取一个大小的窗口,可以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 

1 个答案:

答案 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))));

此代码的输出如下所示,

enter image description here