프로그래밍/openCV

허프 변환 ( Hough Transform )

갑자기 내리는 비 2021. 4. 21. 19:25

차선을 검출하기 위해서는 차선의 선들을 연결해 하나의 직선으로 만들어줘야 합니다. 여러개의 짧은 선들을 어떻게 같은 차선으로 인식하느냐의 문제를 해결해주는 방법이 허프변환입니다.

 

 

허프변환은 이미지에 나온 선을 새로운 좌표계의 점으로 변환합니다. ( y = mx+b의 직선을 (m,b)라는 허프공간의 점으로 바꿔줍니다. )

 

다르게 표현하자면 x, y좌표계의 한 점을 지나는 무수히 많은 직선을 허프공간에서 한 직선으로 표현할 수 있습니다.( 허프공간의 직선의 방정식은 b = -mx + y 이므로)

 

즉, 이미지의 x, y좌표계의 점들을 지나는 허프공간의 직선들의 교점을 구한다면 해당하는 점들을 모두 지나는 직선의 방정식을 구할 수 있습니다.

 

그런데 여기서 문제가 발생합니다. 

 

y = 3 같은 직선의 방정식에 대해선 허프공간에 표현할 수가 없습니다. 그래서 허프공간에 사용할 절편을 바꿉니다.

 

원점에서 직선에 수직으로 도달하는 거리(r)와, 그어진 수직의 직선과 x절편과의 각도(θ)를 이용해 극좌표계로 허프공간을 생성합니다.

이 위에서 만든 허프공간의 특성은 똑같기 때문에 허프공간의 직선의 교점은 기존 이미지의 x, y로 이루어진 좌표계에서 두 점을 지나는 직선을 알 수 있습니다.

 

이 허프변환을 이용해 차선의 직선을 검출할 수 있습니다.