如何在滑动窗口上进行多种尺寸的检测?

时间:2014-07-03 06:50:50

标签: matlab image-processing matrix feature-selection sliding-window

我正在研究使用HOG和LBP进行人体检测。我想在图像上检测多个大小的人。我正在使用规模的循环来检测窗口大小,然后通过滑动窗口检测来检测图像上的匹配特征。但是,由于矩阵的不同维度,我的代码显示错误。这是我的代码:

win_size = [32, 32];  %the window size of detection

%loop on scale of window size
for s=0.8:0.2:1

    X=win_size(1)*s;
    Y=win_size(2)*s;

    %loop on column of image
    for y = 1:X/4:lastRightCol-Y

        %loop on row of image
        for x   = 1:Y/4:lastRightRow-X

            p1  = [x,y];
            p2  = [x+(X-1), y+(Y-1)];
            po  = [p1; p2] ;


            % CROPPED IMAGE
            crop_px    = [po(1,1) po(2,1)];
            crop_py    = [po(1,2) po(2,2)];

            topLeftRow = ceil(min(crop_px));
            topLeftCol = ceil(min(crop_py));

            bottomRightRow = ceil(max(crop_px));
            bottomRightCol = ceil(max(crop_py));

            cropedImage    = im(topLeftCol:bottomRightCol,topLeftRow:bottomRightRow,:);

            %Get the feature vector from croped image
            HOGfeatureVector{counter}= getHOG(double(cropedImage));
            LBPfeatureVector{counter}= getLBP(cropedImage);
            LBPfeatureVector{counter}= LBPfeatureVector{counter}';
            boxPoint{counter} = [x,y,X,Y];
            counter = counter+1;
            x = x+2;

        end
    end
end

我注意到问题出现在HOGfeatureVector{counter}上,因为我使用不同的窗口大小,我从HOG获得的功能也有不同的维度。例如,我的窗口大小的原始比例是32x32,然后它会在从HOG中提取特征<6256x324>后给出维度。然后,如果我将比例放在窗口大小上,例如:0.8:0.2:1,它会给我不同的维度,因为比例为0.8,它会给我<6256x144>,比例为32,{{ 1}}。我注意到,通过使用简单的连接来组合这两个不同的矩阵维度是不可能的。

任何人都知道如何解决我的问题?至少,如何组合两个不同维度的矩阵?

谢谢

1 个答案:

答案 0 :(得分:2)

您需要保持检测窗口的大小相同,HOG经过培训才能在32X32中找到对象。 如果要以多尺度查找对象,则需要重新缩放图像,而不是检测窗口。

更改此行:

X=win_size(1)*s;
Y=win_size(2)*s;

对此:

X=win_size(1);
Y=win_size(2);

它应该有用。