정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

openCV 활용 차선인식 질문드립니다.
전봉석 | 2015-05-20

카메라로 영상을 받아서 차선을 인식하여 Serial 통신으로 아두이노에 명령을 내려서 조향을 하는것을 만들려고 합니다.

아두이노부분은 교재를 활용한 프로그래밍이 쉬우나, 

openCV + processing 프로그램을 통한 프로그래밍이 어렵습니다.

 

컴퓨터공학 전공이 아니라서 완전 백지 상태에서 openCV를 처음 접했습니다.

처음에는 c++을 통해 시작하려했으나 디버깅에서 너무나 많이 걸려서 찾던중

processing과 기존예제를 활용하면더 쉬울거라 생각해서 이쪽으로 알아보고 있는 중입니다.

 

차선인식부분에 있어서는 엣지 디텍션, 하프변환 이라는 난이도 있는 기술이 들어가는 것으로 알고 있습니다.

 

 

저는 조금더 쉽게 시작하려고해서, 차선을 직선이 아닌 원으로 이어나가서, (차선을 직접 제작함, rc카가 주행함)

원을 detection 한 다음, 그 원의 중점의 좌표를 구해서, x 좌표가 영상크기의 절반 이상이면 차선이 우측에 있으므로

Serial 통신으로 미리 입력된 신호를 보내서 우측으로 꺽도록 하는것을 생각했습니다.

 

가장 어려운 부분이 원을 디택팅하고, 원의 중점 좌표를 구하는 명령어를 찾는것인데 이와 관련된 예제가 있나요?

 

 

 

프로필사진

수박쨈 2015-05-20 09:28:19

processing내에서 OpenCV를 사용할 경우 이때 OpenCV버전은 1.0버전(초창기 버전)만을 사용하는 것으로 알고 있습니다. 그래서 어느 기술까지 지원해줄 수 있는지는 모르겠습니다.

영상인식쪽은 컴퓨터공학전공쪽에서도 상위 난이도에 속해 많이들 어려워하는 분야이기도 합니다. 그나마 OpenCV가 널리 사용되고 있기는 하지만 그 기술 하나하나를 비전공자가 이해하고 사용하기에는 많은 어려움이 있습니다.(저도 컴퓨터 공학을 전공하였고 OpenCV를 사용해서 해봤지만 난이도 있는 기술이 많이 들어가 전부 다 이해하고 사용하기에는 무리가 있습니다.)

 

일단 질문에 대해 답을 드리면 원의 모양만을 이용해서 Detecting하는 기술은 아직 제가 알지 못하는 건지 없는건지는 모르겠습니다만 아직까지는 찾지 못했습니다. 다만 원의 모양이 아닌 원의 색과 주변의 색 차이를 이용하여 원의 모양을 검출하는 기술은 있습니다.

Pocessing의 OpenCV를 사용하면 볼 수 있는 예제인 blob detection이라는 기술과 비슷한 기술이라고 보시면 됩니다.

http://yurhyur1.blog.me/50172647486  이 링크처럼 검출이 가능합니다.

원하는 모양을 검출이 가능하면 중심은 쉽게 구할 수 있습니다. 검출하게 되면 보통 검출한 모양의 바깥 사각형 테두리의 길이와 좌측 상단의 좌표값을 구할 수 있습니다.(지원해 주는 멤버함수가 있던것으로 기억합니다....) 테두리를 구하면 /2를 통해 반지름을 구할 수 있고 좌표값에 값을 대입하면 원의 중점은 쉽게 구할 수 있습니다.

 

원을 검출 가능하다면 원의 중점을 구하는 일은 생각보다 쉽게 해결하실 수 있습니다. 

프로필사진

수박쨈 2015-05-20 09:33:08

http://kocoafab.cc/make/156

예전에 올린 얼굴을 인식하여 얼굴을 추적하는 카메라를 만들어본 프로젝트입니다. 이 기술은 haarcascade를 이용하여 얼굴을 검출하는데

 

여기의 소스를 보시면

  for(int i = 0; i < faces.length; i++) {
    rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height); 
  }

위와 같은 부분이 있습니다, faces.length는 검출된 부분의 테두리의 길이값이고

faces[i].x는 각각의 좌표값을 의미합니다. faces[0].x라고 할 경우에는 제일 좌측 상단의 x좌표값이고 faces[faces.length].x라고 할 경우에는 우측 하단의 좌표값을 반환하겠죠.

이 소스를 참고하면 원의 중점을 구하는 방법은 쉽게 이해할 수 있으실 겁니다.

이전글   |    아두이노 + 지문인식 + MySQL 연동 질문 2015-05-19
다음글   |    if 구문과 조건하나 질문드립니다 2015-05-20