원형정합(Template Matching) 중에서 형태묘사언어(Description Language) Parser

인공지능중에서 시각처리(Vision Processing) 에서 원형정합(Template Matching) 이란,
어떠한 사물의 표준모델(Standard Model) 을 하나 만들고 판단중인 사물과 미리 준비된
표준모델의 비교를 통해 사물을 판단하는 일종의 패턴 인식.

원형(표준모델)을 준비하는 방법은 여러가지가 있다. 첫번째로 해당 사물을 일반화(Normalize)
해서 이미지로 만드는 방법이다. 두번째로, 내가 제시한 이론은 해당 사물의 모양을 묘사하는
형태묘사언어(Model Description Language)를 사용하는 방법이다.

형태묘사언어는 다음과 같은 장점을 가지고 있다.
* 준비된 원형이 없더라도 그 형태를 사용자가 직접 기술할 수 있다.
* 언어의 기술 정밀도에 따라 복잡한 형태를 묘사할 수 있다.
* 데이터베이스화 시키기 어려운 이미지를 데이터베이스화 시킬수 있다.
반면에 단점도 가지고 있다.
* 모든 모델에 대해서 형태묘사언어를 사용해야한다.
* 복잡한 모델일 수록 형태 언어 파싱 오버헤드가 크다.

개발
Java 언어의 특징(클래스 중심)을 이용하여 전반적인 프로그램은 Java 로 작성한다.
프로젝트는 여러 클래스로 구성된다.

Parser 클래스
Parser 클래스를 요약하자면 사용자로 부터 입력받은 형태언어를 번역하고
형태언어에서 묘사하는 이미지를 Java 의 BufferedImage 로 만들어주는 역할을 한다.

Parser 에서 지원하는 모델은 다음과 같다.
LINE
CIRCLE
ARC

위 세가지로 거의 모든 문자를 묘사할수 있다.

Image+= LINE(int sx, int sy, int ex, int ey);
sx : 시작점 x 좌표, sy : 시작점 y 좌표, ex : 종료점 x 좌표, ey : 종료점 y 좌표
* 모든 좌표점은 생성되는 이미지 크기에 비례해서 적용가능하다.
* 예) LINE(1/2 * x, y, 0, y);

Image+= CIRCLE(int x, int y, int r);
x : 중심점의 x 좌표, y : 중심점의 y 좌표, 원의 반지름

Image+= ARC(int x, int y, int r, int sd, int ed);
x : 중심점의 x 좌표, y : 중심점의 y 좌표, r : 원의 반지름, sd : 시작 각도 라디언 값, ed : 시작각도 라디언값

Parsing 과정

답글 남기기