zoukankan      html  css  js  c++  java
  • 多目标识别

    writen by wqj1212@yahoo.com.cn

    思路
    1.先对图像标记。给每个目标一个标号。
    2.然后计算每个被标号目标的NMI特征值,
    3.然后这些NMI特征值与已知要识别目标NMI特征值比较。
    如果差值小于某个阈值,就说明该目标就是要识别的目标。

    BOOL Cbiaoji1::ObjectionExtrationNMI(IplImage *src)
    {
        DWORD t3,t4;
    bool status=false;
        t3
    =::GetTickCount();
        IplImage 
    *imgOb=NULL;
        IplImage 
    *obImageNMI[255];
        
    float M[255];
        
    float J[255];
        
    float cx[255];
        
    float cy[255];
        
    for(int i=0;i<255;i++)
        
    {
            M[i]
    =0.0;
            J[i]
    =0.0;
            cx[i]
    =0.0;
            cy[i]
    =0.0;
        obImageNMI[i]
    =cvCreateImage(cvSize(src->width,src->height),8,1);
        cvZero(obImageNMI[i]);
        }

        imgOb
    =cvCreateImage(cvSize(src->width,src->height),8,1);
    cvZero(imgOb);
            
    biaoji(src);
        
    for(int t=0;t<=x_sign;t++)
        
    {
            
    if(flag[t]>0)
            
    {
                
    for(int m=0;m<src->height;m++)
                
    for(int n=0;n<src->width;n++)
                
    {
                    
    if(CV_IMAGE_ELEM(temp,uchar,m,n)==t)
                    
    {
                        CV_IMAGE_ELEM(obImageNMI[t],uchar,m,n)
    =255;
                    }

                }

                
    for(int j=0;j<src->height;j++)
        
            
    for(i=0;i<src->width;i++)
            
    {

                
                M[t]
    +=(int)CV_IMAGE_ELEM(obImageNMI[t],uchar,j,i );
                cx[t]
    +=j*(int)CV_IMAGE_ELEM(obImageNMI[t],uchar,j,i);
                cy[t]
    +=i*(int)CV_IMAGE_ELEM(obImageNMI[t],uchar,j,i);
        
                
            }

            
                
         cx[t]
    /=M[t];
         cy[t]
    /=M[t];

         
    for(j=0;j<src->height;j++)
             
    for( i=0;i<src->width;i++)
             
    {
                 J[t]
    +=((j-cx[t])*(j-cx[t])+(i-cy[t])*(i-cy[t]))*(int)(CV_IMAGE_ELEM(obImageNMI[t],uchar,j,i));
                 
             }

        J[t]
    =sqrt(J[t])/M[t];
            }

        }

        
    for(t=0;t<=x_sign;t++)
        
    {
            
    if(J[t]!=0)
            
    {        cout<<"连通区"<<t<<"的NMI特征值"<<J[t]<<endl;
            
    if((fabs(J[t]-ModelNMIFeature)/J[t])<=1-PiPei/100)
            
    {
             
    for(int m=0;m<src->height;m++)
                
    for(int n=0;n<src->width;n++)
                
    {
                    
    if(CV_IMAGE_ELEM(temp,uchar,m,n)==t)
                        CV_IMAGE_ELEM(imgOb,uchar,m,n)
    =255;
              status
    =true;
                }

            
            }
    }

        
        }

        
    for( i=0;i<255;i++)
        
    {
        
    cvReleaseImage(
    &obImageNMI[i]);
        
        }

        cvCopy(imgOb,src);
            cvReleaseImage(
    &imgOb);
                cvReleaseImage(
    &temp);
                t4
    =::GetTickCount();
                cout
    <<"t4-t3="<<t4-t3<<endl;
                
    if(status)
                
    return true;
                
    else
                    
    return false;
    }

  • 相关阅读:
    【转】backtrack5工具之SQLMAP使用笔记(SQL注入用)
    httpd.conf配置详解
    【转】CodeBlocks+wxWidgets安装教程
    Windows下的Photoshop CS6快捷键
    backtrack常用渗透命令
    Codeforces Round #137 (Div. 2)
    Fedora 17 上安装 AMP 服务(Apache MySQL PHP)
    这几天用linux的体验
    EVO 4G 相机 照相 黑屏
    转载:qsort细节用法,double型的排序我竟然一直用错了~~~
  • 原文地址:https://www.cnblogs.com/wqj1212/p/1009665.html
Copyright © 2011-2022 走看看