菜单
  

                             //draw_2Points(pt,pre_pt,pt1,pt2,CV_RGB(230,255,0));
                            save_Points(pt,pre_pt,pt1,pt2,N_TYPE);
                            HasFoundedJoint = true ;
                        }
    检查角度范围 U型点 -200至-160
    N型点  150至 210
    3.3  无用干扰点的筛除
       由于本算法是先提取运动人体外部轮廓,然后分辨关键节点,如果轮廓提取时产生不符合人体形态的点,将会对后续操作产生判定干扰,所以需要对轮廓点进行筛选,简化无信息含量的细节,同时去除干扰点。
       在本算法中,关键在于记录U型点和N型点,也就是对四肢的关键节点提取,所以我们在得到的人体轮廓上不希望出现难以识别的正方形(事实上只有躯体部分是类正方形),于是需要将这种错误产生的正方形的干扰节点筛除,以防产生误判。这里用到了两种判定方法:
    ①    取两个矢量中心点连线,取连线与较大矢量的夹角,如果夹角在90度偏差20度内认为是正方形。
    HumanMotion::Is_Closed_Vectors(CvPoint pt1,CvPoint pt2,CvPoint pt3,CvPoint pt4)
    {
        
        CvPoint pt5,pt6;
        const float StandSqArc = 40;
        pt5.x= (pt1.x + pt2.x ) /2;
        pt5.y= (pt1.y + pt2.y ) /2;
        pt6.x= (pt3.x + pt4.x ) /2;
        pt6.y= (pt3.y + pt4.y ) /2;
        Vector3f vt1 = Vector3f (pt1.x-pt2.x,pt1.y-pt2.y,0);
        Vector3f vt2 = Vector3f (pt3.x-pt4.x,pt3.y-pt4.y,0);
        Vector3f vtc = Vector3f (pt6.x-pt5.x,pt6.y-pt5.y,0);
        Vector3f vtmax;
        if(Magnitude(vt1) > Magnitude(vt2))
            vtmax= vt1;
        else
            vtmax= vt2;
        double arc12 = AngleBetweenVectors(vtc,vtmax);
        double rarc12 = 180*arc12/pi;
        if (abs(abs(rarc12)-90)<StandSqArc)
            return true;
        else
            return false;
    }
        
    ②    两矢量长度不等,差距相差4倍时,认为无效;或者两矢量错位,不协调,即对角线长度大于两矢量长度的两倍。
    HumanMotion::Is_Apar_Vectors(CvPoint pt1,CvPoint pt2,CvPoint pt3,CvPoint pt4)
    {
        bool result = false;
        const float StandLenRatio = 4.0;  
        const float StandCrossLenRatio = 2.0;  
        Vector3f vt1 = Vector3f (pt1.x-pt2.x,pt1.y-pt2.y,0);
        Vector3f vt2 = Vector3f (pt3.x-pt4.x,pt3.y-pt4.y,0);
        //1.两矢量长度不等,差距相差4倍时,认为无效
        double lenvct1,lenvct2,raido12;
        lenvct1 = Magnitude(vt1);
        lenvct2 = Magnitude(vt2);
        raido12 = lenvct1/lenvct2;
        if( raido12<StandLenRatio && raido12 > 1/StandLenRatio )
            result = true ;
        //2.两矢量错位,不协调,即对角线长度大于两矢量长度的两倍。
        if(result)
        {
            Vector3f vtc1 = Vector3f (pt1.x-pt3.x,pt1.y-pt3.y,0); //对角线1
  1. 上一篇:车载“动中通”伺服系统的设计与研究
  2. 下一篇:机载SAR成像条带展宽技术初步研究+Matlab仿真
  1. 轴向扫描非球面干涉测量...

  2. 单片机控制的人体检测智能节能路灯系统设计

  3. ADS无接触人体生命体征检测雷达设计

  4. 扫频光源的人体血流高分辨率光学断层成像

  5. 红外运动目标检测算法研究

  6. 视频中运动目标的检测方法研究

  7. matlab视频图像序列中的运动目标检测算法研究

  8. g-C3N4光催化剂的制备和光催化性能研究

  9. C++最短路径算法研究和程序设计

  10. 高警觉工作人群的元情绪...

  11. 现代简约美式风格在室内家装中的运用

  12. 浅析中国古代宗法制度

  13. 上市公司股权结构对经营绩效的影响研究

  14. 中国传统元素在游戏角色...

  15. NFC协议物理层的软件实现+文献综述

  16. 江苏省某高中学生体质现状的调查研究

  17. 巴金《激流三部曲》高觉新的悲剧命运

  

About

优尔论文网手机版...

主页:http://www.youerw.com

关闭返回