2008. 10. 3. 22:06

블로그 업데이트 후~~좌절

기존 블로그에서 그냥 마구잡이로 붙여쓰다가...막상 보니..거의 모든 사진이 엑박으로 뜨네요...ㅜㅁㅜ;;;;

익스플로어가 그냥 꺼질때도 있고.헐..ㅡㅡ;

이런 좌절이!!!!!!!!!!!!!!!

하나하나..다시 붙이기 너무 빡실듯...

일단 이 카테고리는 나중에 다시 수정하도록 하겠습니다..ㅡㅡ;;;;;;;;;;

설마하니...ㅋㅋㅋ 혹시나...궁금하신거 있으면 메일이나 방명록 글 남겨주세요~
2008. 10. 3. 21:55

5.25 프로그램 베타버젼 작업 완료





 




인터페이스는 95프로 완성되었다..컬러코드 바꾸는 수정함수만 만들면 된다..

그외에도..각 방의 컬러코드들을 인쇄하는 기능을 넣을까 말까..고민중이다...

대충..인터페이스..버그도 수정되었고.... 

2008. 10. 3. 21:53

전체 ROOM컬러코드와 xml완성파일


방코드와_xml파일-tkss8329.zip
총 50개의 방에 대한 컬러코드와...그 방좌표 정보를 넣은 xml파일..
2008. 10. 3. 21:50

2,3,4,5층 1차수정그림 - 랜더링


 





.max파일은 3D-MAX폴더에...
                                                                BMP파일-6268-tkss8329.alz
2008. 10. 3. 21:49

UI 작성 계획


일단 2,3층은 만들었고...2개의 층을 더 만들어 4개의 층을 만들겠다..

후에 너무 많은 손이 가면 총3개로 줄일수도 있지만...

그리고..기존의 랜더링그림에서..계단을 수정하고...모두 수평으로 맞추어 놓는다..

그림이 뜰때 서서히 조금은 빨리 서서히 뜨게 하면 좋을꺼 같고..방향은 발자국으로 나타낼 것이다...

 

xml을 이용하여 정보를 넣어둘 것이고...

컬러코드에 해당하는 발자국을 어디에서 어디까지 찍을것인가에..대한 좌표 정보를

넣어야 하고...그 후에...각 문마다..저장되어있는 화살표를 찾아.해당 화살표를 실행하면..될 거 같다...

그리고 발자국은 여러 갈래가 아니여야 좌표정보를 다루기가 쉬울꺼 같다...

또한 각 층마다..동일한 발자국을 쓸 수 있도록 하는게 나을꺼 같고...

추가적으로...다른 방을 클릭하면 그방의 주인이나..기본정보를 볼수 있게 하는 건 어떨까?

클릭하는 부분은 컬러코드나..그림자체를 클릭하게 하는방법이 있을꺼고...

그럼..층간에도..이동할수 있도록 만들어야 되나?? 그럼 탭버튼을 이용해야 하나??

아..그리고 각 방마다..번호가 있어야 한다...1001호..501호 같은 방번호..

2008. 10. 3. 21:47

외곽 추출을 위한 그레이화 수정2



IplImage* changecolor(IplImage* img2)
{
 
  unsigned char r, g, b, gray ;

  for(int i=0; i<img2->height-1; i++){
  for(int j=0; j<img2->width-1; j++){
   
       Map2[i][j].r = img2->imageData[i*img2->widthStep + j*img2->nChannels + 2];
       Map2[i][j].g = img2->imageData[i*img2->widthStep + j*img2->nChannels + 1];
       Map2[i][j].b = img2->imageData[i*img2->widthStep + j*img2->nChannels + 0];

                gray=255;
    r = Map2[i][j].r;
       g = Map2[i][j].g;
          b = Map2[i][j].b;

     //    if(r>80 && g<r && b<r){        // 빨강
    if(r>=100 && g<=140 && b<=140 || r>=100 && b>=100 && g<=130 || r<=240 && g<=150 && b<=90 && (b+60)<=g || r>=51 && g<=20 && b>=51){
     gray=155;
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 0] = (char)gray; // Blue
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 1] = (char)gray; // Green
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 2] = (char)gray; // Red
                 }

                if(r>=50 && g>=50 && b>=50){
                    gray=155;
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 0] = (char)gray; // Blue
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 1] = (char)gray; // Green
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 2] = (char)gray; // Red

    }
    if(gray==255){
     if(r<=50 && g>=51 && b>=51 || r>=51 && g>=51 && b<=50 || r<=50 && g>=51 && b<=50){
        gray=155;
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 0] = (char)gray; // Blue
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 1] = (char)gray; // Green
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 2] = (char)gray; // Red   

     }else if(gray==255){
      CString qwq;
      qwq.Format("%d %d %d",r,g,b);
    //  AfxMessageBox(qwq);
     }
    
    }
   }
  }
 return img2;
}

 

 

 

거의 대부분의 노이즈가 제거 되었다..

2008. 10. 3. 21:45

외곽 추출을 위한 그레이화 수정



 

 

 

 

IplImage* changecolor(IplImage* img2)
{
 
  unsigned char r, g, b, gray ;

  for(int i=0; i<img2->height-1; i++){
  for(int j=0; j<img2->width-1; j++){
   
       Map2[i][j].r = img2->imageData[i*img2->widthStep + j*img2->nChannels + 2];
       Map2[i][j].g = img2->imageData[i*img2->widthStep + j*img2->nChannels + 1];
       Map2[i][j].b = img2->imageData[i*img2->widthStep + j*img2->nChannels + 0];


       gray=255;
       r = Map2[i][j].r;
       g = Map2[i][j].g;
       b = Map2[i][j].b;

    

// 빨강


    if(r>=100 && g<=140 && b<=140 || r>=100 && b>=100 && g<=130

       || r<=240 && g<=150 && b<=90 && (b+60)<=g || r>=51 && g<=20 && b>=51){
        gray=155;
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 0] = (char)gray; // Blue
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 1] = (char)gray; // Green
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 2] = (char)gray; // Red
    }

    if(r>=50 && g>=50 && b>=50){
        gray=155;
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 0] = (char)gray; // Blue
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 1] = (char)gray; // Green
        img2->imageData[i*img2->widthStep + j*img2->nChannels + 2] = (char)gray; // Red

    }


     if(gray==255){
      CString qwq;
      qwq.Format("%d %d %d",r,g,b);
      AfxMessageBox(qwq);
     }
     
   }
  }
 return img2;
}

 

그냥 rgb값이 50이 넘는 것은 무조건 그레이 시킴...

ps. 미완성임 - 별로 참고 할건 못됨

2008. 10. 3. 21:44

컬러코드 샘플

2008. 10. 3. 21:43

새로운 버그



 

 

위에 보는 것과 같이 중심점으로 부터 첫 시작점을 찾기 위해 위로 올라가는 중 만나는 노이즈의

 

흰 점이 있는데..그점을 주위를 보면

 

9개의 픽셀영역중에 a지점만 흰 영역이 되기 때문에...분류기에 없는 상황이 되어...

 

분류기의 기능을 잃게 된다...그래서..이 경우는 아예 인식하는 소스 자체에서 나와..

 

컬러코드인식변수는 FALSE로 한 후 다음 프레임부터는 인식을 하지 않게 하여

 

디버그에러가 나지 않게 하였다.. 

2008. 10. 3. 21:42

인터페이스 수정및 색정렬



 

Release-tkss8329.zip


 

 

 

녹색을 기준으로 하여 색을 정렬 하였다..

 

만약 녹색 정보가 없으면 색을 아예 다 날려 검은 색으로 나오게 하였다..

 

녹색주위에 노이즈가 꽤 많아서..하나만 쓰는 녹색으로 기준을 잡았다..