目标检测之HOG特征

模式识别的一般步骤是:

(1)特征提取

(2)根据特征和正负样本训练分类器

(3)利用分类器识别

HOG就是一个描述图像信息的特征。Histogram of Oriented Gradient, 既方向梯度直方图,在特定梯度方向上的梯度值总和。概念性的东西不说了,下面通过代码详细讲解。

HOG特征对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。其次,在粗的空域抽样、精细 的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响 检测效果。因此HOG特征是特别适合于做图像中的人体检测的。


M代码如下:

function H = HOG(Im)
nwin_x = 3;%set here the number of HOG windows per bound box
nwin_y = 3;%这里暂时定为3x3,根据需要可以自己定义,standalone或者over-lap类型的都可以直接设
B = 9;%set here the number of histogram bins
[L,C] = size(Im); % L num of lines ; C num of columns
H = zeros(nwin_x*nwin_y*B,1); % column vector with zeros
Im = double(Im);
step_x = floor(C/(nwin_x+1));
step_y = floor(L/(nwin_y+1));
cont = 0;
hx = [-1,0,1];
hy = -hx';
grad_xr = imfilter(double(Im),hx); %x方向上的梯度
grad_yu = imfilter(double(Im),hy); %y方向上的梯度
angles = atan2(grad_yu,grad_xr);   % 获取梯度方向
magnit = ((grad_yu.^2)+(grad_xr.^2)).^.5; %获取梯度值
for n = 0:nwin_y-1
    for m = 0:nwin_x-1
        cont = cont+1;
        angles2 = angles(n*step_y+1:(n+2)*step_y,m*step_x+1:(m+2)*step_x); 
        magnit2 = magnit(n*step_y+1:(n+2)*step_y,m*step_x+1:(m+2)*step_x);
        v_angles = angles2(:);    
        v_magnit = magnit2(:);
        K = max(size(v_angles));
        %assembling the histogram with 9 bins (range of 20 degrees per bin)
        bin = 0;
        H2 = zeros(B,1);
        for ang_lim = -pi+2*pi/B:2*pi/B:pi
            bin = bin+1;
            for k = 1:K
                if v_angles(k)<ang_lim
                    v_angles(k) = 100;
                    H2(bin) = H2(bin)+v_magnit(k); %将梯度值累加
                end
            end
        end
                
        H2 = H2/(norm(H2)+0.01); %归一化,其中norm = sqrt(sum(xi^2))
        H((cont-1)*B+1:cont*B,1) = H2;
    end
end


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值