zoukankan      html  css  js  c++  java
  • 机器学习初探(手写数字识别)HOG图片

    这里我们讲一下使用HOG的方法进行手写数字识别:

    首先把

    代码分享出来:

    hog1.m

    function B = hog1(A)
    %A是28*28的
    B=[];
    [x,y] = size(A);
    %外圈补0
    A(:,y+1) = 0;
    A(x+1,:) = 0;
    for i=1:x
        deltax(:,i)=A(:,i+1)-A(:,i);
    end
    for i=1:y
        deltay(i,:)=A(i+1,:)-A(i,:);
    end
    for i = 1:13
        for j = 1:13
            Px=deltax(i*2-1:i*2+2,j*2-1:j*2+2);
            Py=deltay(i*2-1:i*2+2,j*2-1:j*2+2);
            B=[B;hog2(Py,Px)];
        end
    end

    hog2.m

    function res = hog2(Px,Py);
    %这里Px和Py是x方向和Y方向的偏导矩阵
    %返回是一个7*1的矩阵
    res=zeros(7,1);
    [pxx,pxy]=size(Px);
    for k=1:pxx*pxy
        len = sqrt(Px(k)^2+Py(k)^2);
        if atan2(Py(k),Px(k))>=-pi && atan2(Py(k),Px(k))<2*pi/7-pi
            res(1)=res(1)+len;
        elseif atan2(Py(k),Px(k))>=2*pi/7-pi && atan2(Py(k),Px(k))<4*pi/7-pi
            res(2)=res(2)+len;
        elseif atan2(Py(k),Px(k))>=4*pi/7-pi && atan2(Py(k),Px(k))<6*pi/7-pi
            res(3)=res(3)+len;
        elseif atan2(Py(k),Px(k))>=6*pi/7-pi && atan2(Py(k),Px(k))<8*pi/7-pi
            res(4)=res(4)+len;
        elseif atan2(Py(k),Px(k))>=8*pi/7-pi && atan2(Py(k),Px(k))<10*pi/7-pi
            res(5)=res(5)+len;
        elseif atan2(Py(k),Px(k))>=10*pi/7-pi && atan2(Py(k),Px(k))<12*pi/7-pi
            res(6)=res(6)+len;
        elseif atan2(Py(k),Px(k))>=12*pi/7-pi && atan2(Py(k),Px(k))<14*pi/7-pi
            res(7)=res(7)+len;
        end
    end

    hog1得到的是一个1183*1的矩阵。

    http://blog.csdn.net/hqh45/article/details/44228715

  • 相关阅读:
    Network in Network
    cord-in-a-box 2.0 安装指南
    L2 约束的最小二乘学习法
    点估计
    递归简介
    向量的L2范数求导
    优雅的线性代数系列三
    ansible批量部署nginx
    ansible批量部署mysql
    ansible批量部署tomcat
  • 原文地址:https://www.cnblogs.com/LoganChen/p/7833413.html
Copyright © 2011-2022 走看看