2012-12-17 4 views
7

우리는 특정 신호와 지시를 따르고 지시 된 경로를 통과하는 자율 로봇을 만듭니다 (대학 행사에서). 로봇은 머리에 카메라가 장착됩니다. 그것은 앞이나 도로 위에 그려진 표지판을 따라갈 것이고 벽에 따라서 결정을 내릴 것입니다. 표지판은 GREEN ARROWS (GO 신호용) 또는 RED T의 정지 신호로 사용됩니다. 로봇은이 기호를 실시간으로 스캔하여 필요한 작업을 수행합니다. 이 표지판은 벽 앞에 직접 붙일 수도 있고 앞으로 나아갈 수도 있습니다.OpenCV에서 개체 감지 및 실시간 비교

필자는 필요한 이미지 변환 알고리즘이나 방법을 찾으려고 노력했지만이 분야에 새로운 것이 있습니다. 이 문제가 어떻게 해결 될 수 있는지, 그리고 우리를 도울 수있는 필요한 코드에 도움을 요청합니다 (우리가 처음 시작할 것이라고 가정 할 때).

나는 다음 스레드로 보았다하지만 난 혼란 스러워요 : - OpenCV Object Detection - Center Point - How to recognize rectangles in this image? - http://www.chrisevansdev.com/computer-vision-opensurf.html 이벤트가 우리 것이 었 주어진 힌트

하나 (내가 그것을 사용할 수 아니에요) 화살표를 직사각형과 삼각형으로 모델링 할 수 있습니다. 삼각형의 중심이 사각형의 오른쪽에 있는지 (그렇지 않으면 오른쪽으로 이동하는지) 아니면 다른 점인지를 찾습니다. T와 비슷합니다.

감사합니다. :)

+0

환경에서 빨간색과 녹색 색상이 상대적으로 고유하다는 것을 보장 할 수 있다면 문제는 훨씬 간단 해집니다. 그 색상을 찾기 만하면 표지판을 찾을 수 있습니다. – Hammer

+1

이 이벤트의 범위를 더 잘 지정해야합니다 . 환경에 다른 마크가 없습니까? 카메라의 신호 및 샘플 입력 예를 보여줄 수 있습니까? 이 로봇이 가능한 한 빨리 가길 원하거나 원하는 정지 기호를 때리고 싶니? 전자의 경우 적용 할 수있는 알고리즘이 줄어 듭니다. – mmgp

+0

예, 다른 산만 한 색이나 이미지가없는 환경입니다. 이 단순한 비행기는 아마도이 숫자로 흰 벽을 칠 것입니다. 그러나 경로는 다른 색을 가질 수도 있지만, 그것도 같은 패턴으로 가정합니다. –

답변

8

도움 바랍니다.

생각

당신이 기호 (화살표 또는 T)의 사진을 가지고있다 다음과 같은 교육 단계, 오프라인 수행

1 - 기능 FAST 감지 (SURF를 사용하여,,. ..)

2 - 기술자 추출 (특징)에서

등 SIFT, 괴물, ...

를 사용하여이 그런 다음 실시간 부분은 온다. 모든 프레임에 대해 기능 탐지 및 설명자 추출을 수행해야하지만, 어떤 객체가 있는지 확인하려면 학습 이미지와 일치시켜야합니다.실시간으로 작동합니다 예 :

cv::FAST detector; 
cv::FREAK descriptor; 
BFMatcher matcher = BFMatcher(NORM_HAMMING,false); 

detector.detect(frame,keypoints_frame); 
descriptor.compute(frame, keypoints_frame,descriptors_frame); 
matcher.match(descriptors_trainning, descriptors_frame); 

일치를위한 첫 번째 방법이 될 것입니다, 당신은 수정하고 이상 값을 제거해야합니다. 일부 기술은

  • 비율 테스트입니다

  • 크로스 체크

  • RANSAC + 호모 그래피

다음

당신이 완전한 example을 얻었다.

3

나는 이벤트 전에 표지판을 얻을 수 있다고 가정합니다 : 화살표 기호를 가져 와서 "descriptor"를 선택하고 로봇에 저장하십시오.

로봇이 기호의 색을 찾도록 각 프레임에서 기호와 비슷한 것을 볼 때 설명자를 가려 내고 저장된 설명 자와 새로운자를 등록하려고합니다. 성공하면 원래 저장된 기호와 이미지에서 찾은 기호 사이의 회전 및 변환 행렬을 계산합니다. 읽으려면

에 대한이 사이트에 추천, 선별 : 당신은 SIFT의 기초를 이해 한 후 http://aishack.in/tutorials/sift-scale-invariant-feature-transform-introduction/ , 난 스스로를 구현하는 대신 일부 구현을 다운로드하는 것이 좋습니다, 그것은 매우 지루한 일이다 많은 함정이있다

BTW sift는 "Scale Invariant Feature Transform"이지만 "Perspective Transform"을 사용하더라도 사용자의 경우에도 작동합니다.

는 징후가 이전에이 방법을 사용 "기능을 감지하여 물체를 인식"할 수 알려진 경우

+3

SIFT 디스크립터가 매우 강력하기 때문에 아이디어가 좋다. 문제는 실시간으로 적용하는 것이다. 로봇에 좋은 프로세서가 있다면 아무런 문제가 없지만 대학 행사의 경우 캠이 통합 된 태블릿을 사용하고있을 것입니다. 그런 다음 SIFT는 실시간으로 처리하지 않습니다. –

+0

SIFT가 너무 느리면 SURF, ORB, BRIEF 등이 있습니다. –