• ||
    시각화 작업(과정) - 3. 이미지 벡터화 ( 한글한글 )
  • 이경민(19기) 2010/02/11
  •  

  •  
    ① 글립 이미지 추출
    사각형 검색 알고리즘을 이용하여 관심 사각형들을 찾아내고 2차례의 합병정렬(안정정렬)을 이용하여 행과 열로 정렬한다. 정렬하면 코드의 순서와 사각형의 순서가 같아 지게 되므로 추 후 코드와 글립의 매칭이 수월하다. 각 글립의 영역을 사각형으로 알아낸 뒤 해당 영역을 그림에서 ROI를 이용하여 추출하여 512,512로 확대한다.(일반적인 TTF포맷의 글립이 1024*1024에서 작업되나 해당 크기와 품질 면에서 차이가 적고 속도를 개선하기 위하여 512*512로 선정하였다.) 크기를 크게 한 뒤 검은 색을 제외한 색을 지운다. RGB값을 검사하여 각 색깔 바이트에 200보다 큰값이 들어있는 픽셀을 지웠다. U8을 사용하여 255가 최대 값이므로 200이 한 바이트에라도 들어있다면 밝은 색으로 간주되기 때문이다. 너무 값을 작게 주면 글립까지 지워지는 경우가 있어 글립을 지우지 않는 한에서 가장 작은 값을 채택하였다.
     
    ② 글립 이미지 보정
    각 글립의 영역을 모폴로지 연산을 이용한 확대 축소를 하여 거친 것을 부드럽게 해준다. 전체 글립을 작은 상태에서 모폴로지 연산으로 보정결과 얇은 글씨는 외곡 되는 현상이 많아 확대한 후 각각의 글립을 따로 보정하는 방식을 취하였다. 
        모폴로지의 element 값은 아래와 같이 설정하였으며
    IplConvKernel element = Cv.CreateStructuringElementEx(2,2, 1, 1, ElementShape.Ellipse, null)
        Dilate, Erode연산을 수행하여 팽창, 침식 연산을 하여 볼펜이나 흑연의 필요이    상의 거침이나 우둘투둘한 표면을 매끄럽게 하였다.
     
    ③ 글립 이미지 외곽선추출
    매끄러워진 각 글립에 Canny Edge메소드를 이용하여 외곽 선을 추출해 내었다. 이때 각 외곽선은 완전 한 폐곡선이 되며 단선으로 이루어지도록 하였다.
     
    ④ 글립 이미지 외곽선 트레이싱
     
    추출된 단선 / 완전 폐곡선의 이미지에서 흰색으로 된 선을 트레이싱 하면서 각 점이 방향을 가진 벡터로서의 의미를 가지도록 하였다. 위 그림과 같이 바깥 선과 안쪽 선은 방향이 다르게 트레이싱 하도록 하였다. 이는 트루타입 폰트 표준에서 사용하는 벡터 방식에 부합하기 위함이다. 트레이싱 알고리즘은 위부터 아래까지 보면서 처음에 흰점을 발견하면 그점을 첫점으로 주고 다음 점의 순서를 정해줌으로 써 계속해서 인점한 점으로 방향이 나아가게 하였다. 한점을 지날 때마다 이미지를 지움으로써 뒤돌아가는 일이 없도록 하였다. 한 외곽선을 다돌고 나면 해당 외곽선 내부를 제외한 나머지 이미지에서 흰점을 찾아 같은 방식으로 외곽선을 찾고 같은 방향으로 회전한뒤 다시 이미지를 확인하여 남아있는 폐곡선은 반대방향으로 회전하며 순서를 부여하고 해당 작업을 모든 흰점이 없어질 때까지 계속 진행하여 모든 점을 벡터화 하였다.

  •  
  • TRACKBACK : http://www.swssm.org/trackback.php?id=377
  •  
  •  
  • [prev] ... 1 ... [next]
 
삼성전자 소프트웨어 멤버십
과제 Tech Note 입니다.

최근 글