Search
Duplicate

AI/ Hough Transform

Hough Transform

Hough Transform은 voting을 통해 이미지 내의 점에 선을 fitting하는 기법이다.
아래 그림 왼쪽과 같이 이미지 공간에서 점의 시리즈 {(xi,yi)}i=1N\{(x_i, y_i)\}_{i=1}^Ny=mx+ny = m'x + n' 형식의 선을 fit하기를 원한다고 하자. 이 선을 찾기 위해 아래 그림 오른쪽에 나온 dual parameter 또는 Hough space를 고려한다. 선 yi=mxi+ny_i = mx_i + n 상에 존재하는 이미지 공간의 점 (xi,yi)(x_i, y_i)은 파라미터 공간에서 선 n=xim+yin = -x_im + y_i이 된다. 역으로 파라미터 공간에서 점 (m,n)(m, n)은 이미지 공간에서 y=mx+ny = mx + n으로 주어지는 선이 된다.
파라미터 공간의 선 n=xim+yin = -x_im + y_i는 이미지 공간의 점 (xi,yi)(x_i, y_i)를 통과하는 이미지 공간의 모든 선을 나타낸다. 따라서 이미지 공간의 점 (x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2)를 모두 지나는 선을 찾으려면 두 점을 Hough space의 선과 연관시켜서 교차점 (m,n)(m',n')을 찾으면 된다. 이 Hough space의 점은 이미지 공간의 두 점을 모두 지나는 선을 나타낸다.
실제로는 파라미터 공간에 대해 width ww인 정사각형 셀로 이루어진 이산 grid로 Hough space를 나눈다. 초기에 모든 (m,n)(m, n)에 대해 (m,n)(m, n)을 중심으로 하는 w×ww \times w 셀의 갯수 격자 A(m,n)=0A(m, n) = 0을 유지한다. 이미지 공간의 모든 데이터 포인트 (xi,yi)(x_i, y_i)에 대해 n=xim+yin = -x_im + y_i를 만족하는 모든 (m,n)(m, n)을 찾아 갯수를 1 증가시킨다. 모든 데이터 포인트에 대해 이 작업을 수행하면 Hough space에서 가장 높은 갯수를 가진 점 (m,n)(m, n)이 이미지 공간의 fit 된 선을 나타낸다. 이제 왜 이것이 voting 절차인지 알 수 있다. 각 데이터 요소 (xi,yi)(x_i, y_i)는 이미지 공간 각 후보 line (m,n)(m, n)에 대해 최대 1표를 투표할 수 있다.
그러나 이미지 공간에서 선의 기울기는 <m<-\infty < m < \infty로 unbounded이다. 이로 인해 Hough voting이 계산과 메모리 집약 알고리즘이 된다. 이를 해결하기 위해 아래 그림과 같이 polar 파라미터화를 사용한다.
xcos(θ)+ysin(θ)=ρx \cos(\theta) + y \sin(\theta) = \rho
위 그림 왼쪽에서 ρ\rho는 원점에서 선까지의 최소 거리(이미지 크기 또는 데이터셋에서 임의의 두 점 사이의 최대 거리로 bound 됨)이고, θ\theta는 x축과 선의 normal vector 사이의 각도(0과 π\pi사이로 bound 됨)이다. 이전과 동일한 Hough voting 절차를 사용하지만 Cartesian space에서 특정한 (xi,yi)(x_i, y_i)를 지나는 모든 가능한 선은 이제 통해 Hough space에서 sinusoidal profile에 해당한다. 위 그림 오른쪽 참조.
실제로 noisy 데이터 점은 이미지 공간에서 동일한 선 상의 점들에 해당하는 Hough space의 sinusoidal profile이 Hough space에서 반드시 동일한 점에서 교차하지 않을 수 있다. 이것을 해결하기 위해 아래 그림에 나온 것처럼 grid cell의 width ww를 증가시켜서 불완전한 교차점에 대한 허용 오차를 증가시킬 수 있다.
이렇게 하면 noisy 데이터를 다루는데 도움이 되지만 조정해야 하는 또 다른 파라미터가 생긴다. 작은 grid 크기는 noise 때문에 이미지 공간의 선을 놓칠 수 있는 반면, 큰 grid 크기는 모든 ρ,θ\rho, \theta 내의 셀이 가능한 선이기 때문에 다른 선을 병합하고 추정 정확도를 낮출 수 있다.
또한 이미지 공간에 uniform noise가 존재하면, Hough space에 spurious(허위) peak가 존재할 수 있고 적절한 모델에 대한 명확한 consensus가 없게 된다.

참고