차선을 검출하기 위해서는 차선의 선들을 연결해 하나의 직선으로 만들어줘야 합니다. 여러개의 짧은 선들을 어떻게 같은 차선으로 인식하느냐의 문제를 해결해주는 방법이 허프변환입니다.
허프변환은 이미지에 나온 선을 새로운 좌표계의 점으로 변환합니다. ( y = mx+b의 직선을 (m,b)라는 허프공간의 점으로 바꿔줍니다. )
다르게 표현하자면 x, y좌표계의 한 점을 지나는 무수히 많은 직선을 허프공간에서 한 직선으로 표현할 수 있습니다.( 허프공간의 직선의 방정식은 b = -mx + y 이므로)
즉, 이미지의 x, y좌표계의 점들을 지나는 허프공간의 직선들의 교점을 구한다면 해당하는 점들을 모두 지나는 직선의 방정식을 구할 수 있습니다.
그런데 여기서 문제가 발생합니다.
y = 3 같은 직선의 방정식에 대해선 허프공간에 표현할 수가 없습니다. 그래서 허프공간에 사용할 절편을 바꿉니다.
원점에서 직선에 수직으로 도달하는 거리(r)와, 그어진 수직의 직선과 x절편과의 각도(θ)를 이용해 극좌표계로 허프공간을 생성합니다.
이 위에서 만든 허프공간의 특성은 똑같기 때문에 허프공간의 직선의 교점은 기존 이미지의 x, y로 이루어진 좌표계에서 두 점을 지나는 직선을 알 수 있습니다.
이 허프변환을 이용해 차선의 직선을 검출할 수 있습니다.
'프로그래밍 > openCV' 카테고리의 다른 글
차선 검출하기 (0) | 2021.04.22 |
---|---|
엣지 검출하기 (feat. sobel, Laplacian, Canny) (0) | 2021.04.20 |
OpenCV를 이용해 이미지 모양 변환하기( Homography ) (0) | 2021.04.18 |
OpenCV 시작하기( feat. visual studio code ) (0) | 2021.04.17 |