网站最新上线:http://www.hslogic.com/

基于MATLAB的HOG特征提取实现

上一篇 / 下一篇  2017-08-13 14:20:36

function HOGvector=HOG(Img)
Img=imresize(Img,[24 80]);
% figure (1), subplot(2,2,1), imshow(Img)
Img=im2single(Img);
gh = imfilter(Img,fspecial('sobel') /8,'replicate');
gv = imfilter(Img,fspecial('sobel')'/8,'replicate');
% figure (1), subplot(2,2,2), imshow(gv)
% figure (1), subplot(2,2,3), imshow(gh)
[theta rho]=cart2pol(gh,gv);
% figure (1), subplot(2,2,4), imshow(rho)
HOGvector=zeros(16,18);
n=0;
m=0;
for i=1:16
    if(mod(i,4)==1)
        m=m+1;
        n=0;
    end
    n=n+1;
    for j=1:20
        for k=1:6
            if(theta(((m-1)*6+k),((n-1)*20+j))<(-8*pi/9))
                HOGvector(i,1)=HOGvector(i,1)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(-7*pi/9))
                HOGvector(i,2)=HOGvector(i,2)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(-6*pi/9))
                HOGvector(i,3)=HOGvector(i,3)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(-5*pi/9))
                HOGvector(i,4)=HOGvector(i,4)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(-4*pi/9))
                HOGvector(i,5)=HOGvector(i,5)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(-3*pi/9))
                HOGvector(i,6)=HOGvector(i,6)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(-2*pi/9))
                HOGvector(i,7)=HOGvector(i,7)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(-1*pi/9))
                HOGvector(i,8)=HOGvector(i,8)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<0)
                HOGvector(i,9)=HOGvector(i,9)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(pi/9))
                HOGvector(i,10)=HOGvector(i,10)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(2*pi/9))
                HOGvector(i,11)=HOGvector(i,11)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(3*pi/9))
                HOGvector(i,12)=HOGvector(i,12)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(4*pi/9))
                HOGvector(i,13)=HOGvector(i,13)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(5*pi/9))
                HOGvector(i,14)=HOGvector(i,14)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(6*pi/9))
                HOGvector(i,15)=HOGvector(i,15)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(7*pi/9))
                HOGvector(i,16)=HOGvector(i,16)+rho(((m-1)*6+k),((n-1)*20+j));
            elseif(theta(((m-1)*6+k),((n-1)*20+j))<(8*pi/9))
                HOGvector(i,17)=HOGvector(i,17)+rho(((m-1)*6+k),((n-1)*20+j));
            else%if(theta(((m-1)*6+k),((n-1)*20+j))<pi)
                HOGvector(i,18)=HOGvector(i,18)+rho(((m-1)*6+k),((n-1)*20+j));
            end
        end
   end
end
end


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar
博评网