Chapeter2-1. Lane Detection

이진한·2025년 12월 23일

모빌리티 지능

목록 보기
4/11
post-thumbnail

Lane Detection이란 Image가 주어지면 차선을 검출하는 기법이다.
먼저, Lane Detection을 진행하기 위해서는 다음과 같은 Preprocessing 과정이 필요하다.

1. RoI(Region of Interest) 설정하기
먼저 관심이 있는 영역만을 설정하여 특정 영역 내에서만 원하는 정보를 추출할 수 있도록 하는 것이다. 현재 해당 포스트에서 다루고 있는 Lane Detection의 경우 차도만 필요할 것이다.

2. BEV(Bird's Eye view)로 변환하기
RoI로 관심영역을 설정한 부분을 이전에 배웠던 Homography 기법을 활용한다면 다음과 같이 차량의 올라운드 뷰와 같은 모습의 형태로 변환할 수가 있다.

  • Original Image
  • BEV

3. 차선 영역의 Pixel만 남기고 나머지는 제거
차선 영역의 부분만을 강조하기 위해서 차선 영역의 Pixel만 남기면 된다. 1-1에서 다루었던 Edge filter를 활용하거나, 도로는 회색이고, 차선은 노랑색 혹은 하얀색임을 활용하여 도로가 아닌 부분은 제거하는 방식들로 전처리 할 수 있을 것이다.

4. 차선형태 추출(직선 검출, Curve fitting 등)
차선 부분만 제외하고 나머지 영역은 제거하였을 경우, 차선 영역에 찍혀있는 점들을 모아서 부드럽게 연결하여 Curve를 찾는 방식ㅇ르 Curve fitting이라고 한다. 해당 포스트에서는 Curve fitting 보다는 직선을 검출하는 Hough Transform을 집중적으로 다루려고 한다.

Hough Transform

Hough Transform은 직선을 검출하는 대표적인 방식이다. 직선을 검출하는 핵심 아이디어는 다음과 같다.

우선 하나의 점을 지나는 직선은 무수히 많다. 하지만, 차선을 직선이라고 생각했을 때 모든 점을 지나는 직선은 단 1개만 존재할 것이다. 하지만 한 점을 지나는 무수히 많은 직선을 그린다면 해당 직선이 다른 점을 지나는지 지나지 않는지 판단하기 어려울 것이다. 따라서 아래 그림과 같이 일반적인 Image Space에서 Parameter Space로 변환시켜준다.

Parameter Space : 하나의 직선을 이루는 Parameter로 Axis를 만든 좌표


Parameter Space로 좌표계를 바꿀 경우에 하나의 직선을 점으로 표현할 수 있다는 장점이 있다. 일반적으로 Hough Transform은 각 직선을 θ\theta, ρ\rho로 표현한다. 즉, 다음과 같은 좌표계에서 일반적으로 나타낸다.
xcosθ+ysinθ=ρx\cos\theta + y\sin\theta = \rho

기울기를 사용한 Parameterization의 경우 범위가 -\infty~\infty가 되기 때문이다. 하지만 각도를 사용한 좌표계의 경우에는 범위가 한정된다.(0θ2π,0ρρmax)(0 \le \theta \le 2\pi, 0 \le \rho \le \rho_{max})

이제 하나의 점을 지나는 모든 직선을 Hough Space로 옮기면 하나의 곡선이 된다. 이때, Hough Space에서 두 곡선이 하나의 점에서 만난다면, 실제 이미지에서는 두 점을 동시에 지나는 직선이 존재한다고 생각할 수 있다. 모든 점에 대해서 Hough Transform을 수행하면, Houg Space에서 아래의 그림과 같이 여러 개의 교점이 나타나고 많은 수의 곡선에 의해 만들어진 교점이 실제 이미지에서 직선 영역일 가능성이 높다.

그렇다면 전처리 과정은 왜 필요한 것일까?
만약 Hough Transform을 일반 이미지에서 모든 Pixel에 대해 Hough Transform을 수행하려면 연산량이 많이 요구된다. 따라서 Edge Filter와 함께 사용하여 RoI에 대한 Pixel에만 Hough 변환을 수행하는 것이다. 이외에도 연산량을 줄이는 방법으로써 Probablistic Hough Transform 등을 통해 일부 무작위로 선택한 Pixel에 대해서만 변환을 수행한다. 즉, 모든 지점에 대해서 Hough 변환을 적용하지 않고 확률적으로 선택한 점에 대해서만 Hough 변환을 수행함으로써 연산속도를 높일 수 있는 것이다. 아래에서는 위의 설명을 바탕으로 OpenCV를 활용하여 Probablistic Hough Transform을 직접 한 결과이다.

물론 BEV로 만드는 과정에서 깔끔하게 나오지는 않았지만, 어느정도 Lane Detection을 잘 수행했음을 확인할 수 있다.

다음 Post에서는 Object Detection의 기법인 Template Matching, Bag of Words,HOG에 관하여 간략하게 쓸 예정이다.

profile
Department of Robotics(Kyungpook national univercity)

0개의 댓글