TEUS.me

 
 

 

이전 글을 통해 공개한 자유 변형 플러그인을 만들어가는 삽질기를 간략하게 정리해본다.

 

1. 플러그인 개발 환경

 

플러그인은 Paint.NET용 플러그인 개발의 영원한 지존 CodeLab으로 일단 틀을 잡고 시작한다.

CodeLab 하나만으로도 플러그인 전체를 완전하게 만들 수도 있을 정도로 파워풀한 도구이다.

 

 

게다가, CodeLab은 이 소스를 VS에서 개발 가능하도록 변경해주는 기능도 제공한다.

이렇게 할 때 가장 중요한 장점은 완벽한 수준의 디버깅이 가능하다는 점.

 

 

 

2. 수학적 배경: Homography

 

자유변형 알고리즘은 간단하게 말해 Homography 하나만 구현하면 된다.

 

참 쉽죠?

 

OpenCV에서도 이 내용을 상세하게 설명해뒀는데, 4개의 픽셀을 다른 4개의 픽셀로 변환할 수 있는 행렬을 만드는 것이 핵심이다.

이를 위해서는 고등학교 교과과정에서 사라져버린 행렬을 활용하면 되는데, 8x8의 역행렬을 풀면 간단하게 만들 수 있다.

 

 

3. 가장 빠른 역행렬 알고리즘은?

 

보통 컴퓨터로 역행렬을 계산할 때는 가우스 소거법을 사용한다.

하지만, 가우스 소거법은 복잡도가 \(n ^{3}\)이다.

이보다 더 연산량이 적은 방법을 찾아보니, Blockwise inversion(블록으로 나눠서 계산)이라는 방법이 있다.

 

 

큰 행렬을 네 개의 행렬 블록으로 나눠가며 계산하는 방식인데, 복잡도가 \(n ^{2} \log {n}\)이다.

그래서 더 빠를 것이라 생각했는데... 막상 해보니 새로운 행렬 블록의 생성 오버헤드가 커서 결국은 더 느렸다.

 

결론은 가우스님. 오늘도 당신이 이기셨습니다.

 

 

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드