2008. 10. 3. 21:08

Rotation 핵심 코드



 rotation-tkss8329.zip


  

○ 원래는 빨간영역부분만 기준점으로 쓸려고 했으나...

   그러면..만약 다른 모서리부분이 또한 빨간색을 뛰게 되면

   기준점을 알수가 없다..

   그래서..레드, 블랙, 그린을 3가지의 모서리 기준점을 두었다..

 

 

○ 양쪽 모서리 부분의 위치를 정확히 알아내는것이 너무

    난해하여...로테이션작업후에도..좀 삐뚤어져 있는 현상도

    있었으며...코드자체도 상당히 길었다...

 

 

○ 맨위의 그림처럼 모서리가 빨간 부분을 위쪽..그리고 왼쪽이라

    정하고...나머리..2개의 모서리에 있는 색을 구분하여..

    +90,+180,+270를 더해주어 정확한 칼라코드의 모양을 나타내었다..

 

 

○ 로테이션 각도는 tanΘ=dy/dx를 이용하여...기울어진 Θ를

    구하였고...dx 와 dy 값은 인식한 원본 칼라코드의

    각각 변들의 끝점을 칼라인식하여..배열에 넣어둔 뒤에..

    결정된 칼러가 가지고 있는 배열안의 위치좌표를

    뽑아내었다..

    그 칼라가 위치하는 좌표를 를 전체변의 길이와 뺀 값을 이용이 dx와 dy이다.

 

문제점 : 앞에서 말한 것과 같이 dx와 dy의 정확한 위치를

             잘 못잡아내어..로테이션후의 처리된 컬러코드도

             많이 삐뚤거나..아예 다이아몬드처럼 나온경우도

             있었다...

 

            물론 내가 실험에 쓴 컬러코드를 대충그린 것도

            원인이 되겠지만..인식률을 높이기 위해서..

            이런 것들과 다 극복해 낼 필요가 있다.. 

 

참고 : 로테이션 함수인 GetQuadrangeSubPix()는 카페에서

         제공한 라이브러리에는 포함되어있지 않은 것 같아..

         다른 라이브러리를 가져다 썼다.