운동하는 공대생
[Computer Vision] 컴퓨터 비전과 딥러닝 4장- 직선 검출 본문
이제 이전까지는 에지를 더욱 잘 표현하기 위한 여러 가지 방법을 이용하였다. 그렇다면 이제 원래의 영상에서 에지를 검출한 영상으로 변환을 했다면 이제 그 에지를 통해서 물체에 대한 경계를 어떻게 에지들의 연결을 통해서 표현하는지 그 연결 방식에 대하여 말을 하겠다.
1. 허프 변환
먼저 이론에 대하여 설명을 하겠다.
위의 그림처럼 두 점을 지나는 y=ax+b라는 방정식이 존재할 때 기울기 a , y절편 b를 식에서 표현한다. 이것을 다시 a, b라는 공간으로 변환을 하면 빨간색 선은 원래 x, y 공간에서 빨간 점을 지나는 모든 직선들의 조합들을 표시한 것이고 a, b 공간에서의 주황선은 원래의 공간 x, y에서의 주황색 점을 지나는 모든 선의 조합들이다.
즉, 각 점을 지나는 모든 직선 중 두 점을 모
두 지나는 직선은 하나라는 정의 때문에 x, y 공간에서 두 점을 지나는 방정식은 a(기울기), b(y 절편) 공간의 한 점으로 표현이 가능하다. 그렇게 하여서 에지들의 연결된 직선을 찾는 게 목적이다.
2. 구현
2.1 축적 배열
허프 변환 에서는 축적 배열을 통해서 표현이 가능한데 먼저 이전 설명처럼 x, y의 공간에서의 에지들이 있다고 했을 때. 점 하나를 지나는 한 개의 직선을 위에서 설명한 기울기와 y절편의 관계의 그래프의 직선으로 표현이 가능하다. 그렇게 된다면 그 직선이 지나가는 위치의 좌표에 1씩 더해주게 된다. 최종적으로 3개의 점을 모두 지나 나는 기울기와 절편값이 matrix위에 표현이 될 것이다.
여기서 내가 이해한 장점은 항상 x, y 좌표에서 위의 그림처럼 완벽하게 1 직선에 오는 점들이 아니더라고 matrix로 좌표를 분할하여 오른쪽 그림처럼 표현하면 특정 좌표를 지정하는 게 가능하다.
이것을 이제 실제 작동 방식을 시각화 한다면 이미지 공간에서는 그림에 대하여 에지들의 점들이 표현된다면 parameter space에서 이런 점들을 지나는 직선들의 선으로 이루어진다. 그래서 겹치는 한 직선을 특정하는 parameter space점이 찍히게 되고 이것을 다시 이미지에서 경계선으로 활용한다.
2.2 직선 방정식의 문제점
이전처럼 기울기와 y절편의 matrix좌표로 표현을 하였다면 y=ax+b라는 방정식에서 문제는 축과 평행한 상황에서 문제가 된다. 축적 배열 (accumulator matrix)에서 원래 이미지에서 축과 평행한 상황이라면 matrix의 크기가 무한으로 커지는 문제가 있다. 예를 들어 x축과 평행한 점이라면 기울기의 특정하는 범위고 무한대의 범위가 되고 이것은 matrix상에서 표현하기 어렵다는 문제가 발생한다.
그래서 이것을 해결하기 위해서 극좌표(polar coordinate) 도입했다.
위의 사진들처럼 직선에 대한 직을 극좌표를 통해서 표현을 한다면 최대 각도 범위가 파이값을 넘어가지 않는 장점이 있어서 이전에 말했던 문제점을 해결하여 표현이 가능해진다.
위의 사진처럼 원도 분류하는 게 가능하다.
3 RANSAC
RANSAC 알고리즘은 허프코드 outlier 문제를 해결하기 위한 알고리즘이다. 축적 배열 방식을 통해서 점에 대한 투표를 진행을 하다 보면 모든 점 즉 노이즈에서도 투표를 진행을 함으로 원래 분류를 해야 하는 선분이 아닌 outlier를 포함한 직선을 분류하는 문제가 발생한다. 그래서 이것을 해결하기 위해서는 최소평균제곱오차(LMSE) 방식을 여러 번 수행하여서 점들의 평균치에 맞춰서 선을 수정한다.