2008. 10. 3. 21:13

외곽선 추출 알고리즘 - 분류기



 
Rotations()-tkss8329.zip

인식은 되는거 같은데...흠...



BOOL curer=TRUE;// 양삼면이 막힌 부분의 분류기 처림후 다음 분류기가 실행되지 않도록 하고..다시 벗어나면 TRUE로 돌림


 if(b==1 && d==1 && f==1 && h==0){
  if(i==0){            //  ↘
          x_move=x_move+1;
    y_move=y_move-1;
    h_r=TRUE;
    curer=FALSE;

    change_num="g01";
    if(afxmess){
    AfxMessageBox("g01");
   
    }
  }else if(i==1){      //  ↓
          y_move=y_move-1;
          h_r=TRUE;
    curer=FALSE;

    change_num="g02";
    if(afxmess){
    AfxMessageBox("g02");
   
    }
  }
 }else if(b==0 && d==1 && f==1 && h==1){
  if(a==0){            //  ↖
          x_move=x_move-1;
    y_move=y_move+1;
    h_r=FALSE;
    curer=FALSE;

    change_num="g03";
    if(afxmess){
    AfxMessageBox("g03");
   
    }
  }else if(a==1){      //  ↑
          y_move=y_move+1;
    h_r=FALSE;
    curer=FALSE;

    change_num="g04";
    if(afxmess){
    AfxMessageBox("g04"); 
    }
  }
 }else if(b==1 && d==1 && h==1 && f==0){
  if(c==0){            //  ↗
          x_move=x_move+1;
    y_move=y_move+1;
    h_r=TRUE;
    curer=FALSE;

     change_num="g05";
    if(afxmess){
    AfxMessageBox("g05");
  
    }
  }else if(c==1){      //  →
          x_move=x_move+1;
    h_r=TRUE;
    curer=FALSE;

    change_num="g06";
    if(afxmess){
    AfxMessageBox("g06");
   
    }
  }
 }else if(b==1 && d==0 && h==1 && f==1){
  if(g==0){            //  ↙
          x_move=x_move-1;
    y_move=y_move-1;
    h_r=FALSE;
    curer=FALSE;

    change_num="g07";
    if(afxmess){
    AfxMessageBox("g07");
   
    }
  }else if(g==1){      //  ←
          x_move=x_move-1;
    h_r=FALSE;
    curer=FALSE;

    change_num="g08";
    if(afxmess){
    AfxMessageBox("g08");
   
    }
  }
 }


 if(curer){

 if(b==1 && c==0 && f==0){
  if(h==0){           //  ↗
          x_move=x_move+1;
    y_move=y_move+1;
    h_r=TRUE;

    change_num="g09";
    if(afxmess){
    AfxMessageBox("g09");
   
    }
  }else if(h==1){
   if(h_r){        //  ↗
              x_move=x_move+1;
        y_move=y_move+1;
        h_r=TRUE;

     change_num="g10";
     if(afxmess){
     AfxMessageBox("g10");
    
     }
   }else if(!h_r){
    if(g==0){   //  ↙
                  x_move=x_move-1;
            y_move=y_move-1;
            h_r=FALSE;

      change_num="g11";
         if(afxmess){
      AfxMessageBox("g11");
     
      }
    }else if(g==1){  //  ←
                  x_move=x_move-1;
            h_r=FALSE;

      change_num="g12";
      if(afxmess){
      AfxMessageBox("g12");
     
      }
    }
   }
  }
 }else if(b==1 && c==1 && f==0){
  if(h==0){           //  →
          x_move=x_move+1;
    h_r=TRUE;

     change_num="g13";
    if(afxmess){
    AfxMessageBox("g13");
  
    }
  }else if(h==1){     //  →
   if(h_r){
              x_move=x_move+1;
        h_r=TRUE;

     change_num="g14";
     if(afxmess){
     AfxMessageBox("g14");
    
     }
   }else if(!h_r){ //  ↙
    if(g==0){
                  x_move=x_move-1;
            y_move=y_move-1;
            h_r=FALSE;

      change_num="g15";
      if(afxmess){
      AfxMessageBox("g15");
     
      }
    }else if(g==1){  //  ←
                  x_move=x_move-1;
            h_r=FALSE;

      change_num="g17";
      if(afxmess){
      AfxMessageBox("g17");
     
      }
    }
   }
  }
 }


 if(f==1 && h==0 && i==0){
  if(d==0){               //  ↘
          x_move=x_move+1;
    y_move=y_move-1;
    h_r=TRUE;

    change_num="g18";
    if(afxmess){
    AfxMessageBox("g18");
   
    }
  }else if(d==1){
   if(h_r){            //  ↘
              x_move=x_move+1;
        y_move=y_move-1;
        h_r=TRUE;

     change_num="g19";
     if(afxmess){
     AfxMessageBox("g19");
    
     }
   }else if(!h_r){
    if(a==0){       //  ↖
                  x_move=x_move-1;
            y_move=y_move+1;
            h_r=FALSE;

      change_num="g20";
      if(afxmess){
      AfxMessageBox("g20");
     
      }
    }else if(a==1){ //  ↑
                  y_move=y_move+1;
            h_r=FALSE;

      change_num="g21";
      if(afxmess){
                 AfxMessageBox("g21");
    
      }
    }
   }
  }
 }else if(f==1 && h==0 && i==1){
  if(d==0){            //  ↓
          y_move=y_move-1;
          h_r=TRUE;

    change_num="g22";
    if(afxmess){
    AfxMessageBox("g22");
   
    }
  }else if(d==1){
   if(h_r){         //  ↓
              y_move=y_move-1;
              h_r=TRUE;
    
     change_num="g23";
     if(afxmess){
     AfxMessageBox("g23");
    
     }
   }else if(!h_r){
    if(a==0){    //  ↖
                  x_move=x_move-1;
            y_move=y_move+1;
            h_r=FALSE;

      change_num="g24";
         if(afxmess){
      AfxMessageBox("g24");
     
      }
    }else if(a==1){ //  ↑
                  y_move=y_move+1;
            h_r=FALSE;

      change_num="g25";
      if(afxmess){
      AfxMessageBox("g25");
     
      }
    }
   }
  }
 }


 if(h==1 && g==0 && d==0){
  if(b==0){            //  ↙
          x_move=x_move-1;
    y_move=y_move-1;
    h_r=FALSE;

    change_num="g26";
    if(afxmess){
    AfxMessageBox("g26");
   
    }
  }
 }else if(h==1 && g==1 && d==0){
  if(b==0){            //  ←
          x_move=x_move-1;
    h_r=FALSE;

    change_num="g27";
    if(afxmess){
    AfxMessageBox("g27");
   
    }
  }
 }


 if(d==1 && a==0 && b==0){
  if(f==0){             //  ↖
          x_move=x_move-1;
    y_move=y_move+1;
    h_r=FALSE;

    change_num="g28";
    if(afxmess){
    AfxMessageBox("g28");
   
    }
  }
 }else if(d==1 && a==1 && b==0){
  if(f==0){            //  ↑
          y_move=y_move+1;
    h_r=FALSE;

     change_num="g29";
    if(afxmess){
    AfxMessageBox("g29");
  
    }
  }
 }
 }



ps. 헐...소스 꼬라지 하고는..ㅡㅡ;;(2008.10월 블로그 옮기는 도중...)