如何对滑动窗口进行多种尺寸的检测



我正在做一项利用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,<6256x324>。我注意到,通过使用简单的连接来组合这两个不同的矩阵维度是不可能的。

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

谢谢

您需要保持检测窗口的大小相同,HOG被训练为在32X32中找到对象。如果你想在多尺度中找到目标,那么你需要重新缩放图像,但不需要重新缩放检测窗口。

改变这一行:

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

:

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

应该能行

相关内容

  • 没有找到相关文章

最新更新