2015년 12월 30일 수요일

12.30 lane-detection 프로젝트 공개


우리의 목표는 안드로이드폰과 아두이노를 통해 길을 찾아가는 자동차(실제크기는 아니에요 ㅠㅠ)를 만드는 것이다.

1.Lane Detection 알고리즘

-사진으로 설명을 하자

이게 안드로이드 핸드폰으로 들어온 사진이라고 하자.

우리는 이 사진을 Gray로 변환시키고 Gaussian Blur를 사용하여 경계를 최대한 없앤 후,
Canny Edge를 통해 경계를 찾아 이를 HoughLines로 경계를 찾아 이를 통해 길을 찾고, 얻은 데이터를 이용하여 Arduino를 Control 하는 것 이다.

Gray Conversion



Gaussian Blur


 Gaussian Blur 5*5
Gaussian Blur 11*11













Gray이미지와 Gaussian Blur 두 이미지의 차이가 육안으로 보기엔 거의 차이가 없어보인다.
하지만 각각의 이미지들에 Canny edges를 적용하면

Canny Edges

Gray에 바로 Canny입힌것
 Gaussian Blur 5*5에 Canny 입힌것
Gaussian Blur 11*11에 Canny입힌것













이처럼 눈에 보이지 않는 차이가 나는 것을 알 수 있다.
그리고 절반 아래의 부분에서의 데이터만 이용해도 길을 찾을 수 있다는 것을 알 수 있다.
이를 기반으로 11*11Blur를 이용하여 HoughLines를 사용하면

HoughLines

이처럼 길을 찾을 수 있다.







2.Android Studio에 적용하기

우선 개발환경은:
Ubuntu 15.10
Android studio 1.5.1
OpenCV 3.1.0

Android studio에서 주로 사용하는 언어가 Java임은 자명하지만 OpenCV는 C++기반의 오픈소스이므로 NDK를 이용하여 개발하는 것이 효율적 이다.
물론 Java의 Class를 사용하는것도 나쁘지 않지만, 알려진 Sample들이 모두 C++기반인 점과 Java의 Class들도 기본적으로 NDK가 적용됨을 고려하면 코드를 NDK로 작성하는게 효율적으로 보인다.

이정도를 참고해서 활용하자

3.시연 동영상

4.개선점

동영상을 보면 알겠지만 카메라가 왼쪽으로 치우쳐 있어서 오른쪽으로 쏠린채로 움직인다
이 점을 개선해야 하고 급한 커브를 돌 수 없는 점을 개선해야한다.


소스코드 GitHub

댓글 없음:

댓글 쓰기

Node.js 입문 - (5) post 방식을 이용한 간단한 로그인

GET방식은 주소창에 모든 parameter의 값이 뜨는 방식이므로 로그인에는 적합하지 않다 따라서 주소창에 뜨지않는 POST 방식을 이용해 보자 우선 main.js 파일을 module.exports = function(app){ a...