느린번개

Canny Edge와 Hough Transform을 이용한 차선 검출(1)

By  | 2017년 8월 10일 | 
Canny Edge와 Hough Transform을 이용한 차선 검출(1)
지금까지 알아본 영상분석 기법 중 Canny Edge와 Hough Transform을 이용해 간단한 차선검출 기능을 구현해 보겠습니다. 현재까지 알려진 차선검출 알고리즘은 여러가지가 있지만 우리는 소실점을 이용하는 방법을 기본으로 해서 몇가지 개선사항을 적용해볼 계획입니다.가능하면 블랙박스로 촬영한 이미지 중에서 처음에는 차선검출이 쉬운 이미지를 시작으로 점점 난이도가 높은(노이즈가 많은) 이미지에 도전해서 최종 목표는 동영상의 차선검출까지 도전해 보겠습니다.아래는 이번 첫시간에 사용할 이미지입니다. 차선은 결국 경계선의 일종이니까 우선 Canny Edge Detection으로 이미지의 경계선을 검출해야 합니다.그런데 그 전에 먼저 곰곰히 생각해보니 이미지 전체를 모두 분석할 필요가 있을까라는 의문이

Canny Edge와 Hough Transform을 이용한 차선 검출(3)

By  | 2017년 8월 24일 | 
Canny Edge와 Hough Transform을 이용한 차선 검출(3)
지난 글에서는 아래 이미지까지 진행했습니다. 지금까지는 왼쪽 차선, 오른쪽 차선을 구할 때 Hough Transform의 Threshold 값을 직선이 검출될 때까지 점차 감소시키다가,직선이 검출되는 순간 검출된 직선을 모두 그리도록 처리했습니다.실제로는 검출된 직선 중에서 왼쪽 차선 1개, 오른쪽 차선 1개만 선택해야합니다. 선택의 기준은 직선의 기울기입니다.검출된 왼쪽 직선 중 기울기가 가장 큰 직선, 오른쪽 직선 중 기울기가 가장 큰 직선만 골라내서 그리도록 하겠습니다. 왼쪽 차선의 경우는 Theta 값이 작을수록 기울기가 크고, 오른쪽 차선의 경우는 Theta 값이 클수록 기울기가 큽니다.참고로 아래 그림은 Theta 값에 따라 실제 직선이 어떻게 그려지는 나타낸 그림입니다. Theta

Canny Edge와 Hough Transform을 이용한 차선 검출(2)

By  | 2017년 8월 24일 | 
Canny Edge와 Hough Transform을 이용한 차선 검출(2)
지난 포스팅에서 단순 직선 추출로 아래와 같은 결과가 나왔습니다. 이미지에서 붉은 색 선이 직선성이 가장 강한, 다시 말하면 Hough Transform의 Threshold를 높게 잡았을 때 직선으로 판명된 선입니다. 직선성이 강하다고 해서 그 직선이 반드시 차선이라고 단정할 수는 없습니다.어디까지나 차선일 가능성이 높다라고 판단되는 것이죠.위 이미지에서는 운좋게도 검출된 2개의 직선이 모두 차선의 일부이지만 상황에 따라서는 방금 내 차를 앞질러간 다른 차량의 범퍼가 가장 직선성이 강하게 나타날 가능성도 충분히 있습니다.이런 경우는 이전에 검출된 차선과 비교를 하는 등의 방법으로 오검출을 걸러내는 알고리즘이 필요하겠지만 이 부분은 나중에 동영상에서 차선검출을 할 때 함께 고민해보기로 하겠습니다. 이

Canny Edge와 Hough Transform을 이용한 차선 검출(4)

By  | 2017년 8월 25일 | 
Canny Edge와 Hough Transform을 이용한 차선 검출(4)
이번 시간에 도전할 이미지는 아래 이미지입니다. 지난 시간까지 우리가 작성한 코드에 위 이미지를 넣어보면... 어라? 에러가 뜨네요.디버깅을 해보니 Canny Edge Detect의 결과가 아래처럼 아무 것도 나오지 않는군요. Canny Edge Detect의 Threshold를 너무 높게 잡아서 발생한 문제입니다. Canny(imageROI, cannyImg, (grayImg.rows + grayImg.cols) / 4, (grayImg.rows + grayImg.cols) / 2); 지난 시간에 사용한 이미지는 아주 선명해서 위의 Threshold로도 경계선을 검출해냈지만 이번에 사용한 이미지는 약간 흐려서 경계선 검출이 안되는군요.날씨가 안 좋거나 어두운 경우, 혹은 카메라의 포커스가

OpenCV 직선 검출 - 허프 변환(Hough transform)

By  | 2017년 2월 10일 | 
OpenCV 직선 검출 - 허프 변환(Hough transform)
이번 포스팅은 이미지에서 직선을 검출하기 위한 허프 변환에 대해서 알아 보겠습니다. 허프 변환으로 직선을 검출하기 위해서는 먼저 이미지의 경계선을 검출해야 합니다. 이미지의 경계선을 검출하는 방법에 대해서는 Canny Edge Detector 포스팅을 참조하기 바랍니다. 우선 중학교 수학시간에 배운 x, y 좌표축에서 직선의 방정식을 기억해봅시다. y = ax + b a : 직선의 기울기, b : y 절편 x, y 좌표평면 위에 임의의 점 p1(1, 1) 이 있다고 가정해보겠습니다.점 p1(1, 1)을 지나는 직선은 무수히 많이 존재하고 각각의 직선은 모두 다른 기울기와 y 절편을 가지게 됩니다.직선의 방정식에 x = 1, y = 1 을 대입해서 b에 관해서 풀어보면 아래처럼 직선의 기울기 a와