OpenCV에서 쉽게 TopView

갑자기 Raspberry Pi Zero W를 받았습니다.



Switch Science 씨로부터, 운 좋게 발매일에 주문할 수 있어, 곧바로 입수할 수 있었습니다!
이것을 조속히 프라레일에 탑재, 잘 가동시키는 것에 성공했습니다.
프라레일에 탑재하는 방법과 Wifi로 원격 제어하기 위한 코드를 아래의 Git에 공개했습니다.
htps : // 기주 b. 코 m / 쿠마파파 2012 / 등

Top View 정보



본제의 Top View에 대해.
Top View란 카메라의 시야의 영상을 마치 바로 위에서 내려다보는 것처럼 보이는 기술입니다. 모사의 자동차에도 탑재되고 있네요.

프라레일에 한정하지 않고, 무언가 움직이는 것에 카메라를 붙여 자율주행 등을 생각하는 경우, 단안 카메라로 어떻게 하면 좋을지, 상당히 고민한다고 생각합니다. 예를 들어, 자신의 진행 방향이나 속도 등은 어떻게 판별해야 하는가? 어느 시점의 프레임과 그로부터 일정 시간 후의 프레임 사이에서 특징점을 찾아 이동 위치, 확대 축소율 등에서 자신의 움직임을 추측하면 좋을까? 등등. . .
그 중 Top View에서 문제를 쉽게 만들 수 있다는 기사를 발견했습니다. 1

절차는 간단합니다.

1. 적당한 정사각형 또는 직사각형을 화면의 하단과 좌우 중심에 맞추어 촬영하여 화면상의 정점 좌표를 취득. 다음과 같은 이미지입니다.

이 이미지는 4cm 사각형에 "아"문자가 있는 상태를 촬영하고 있습니다.
이 경우, 좌상, 우상, 우하, 좌하의 순서로 이하의 좌표가 됩니다.
T_L=(168,260)
T_R=(344,260)
B_R=(408,360)
B_L=(72,360)

2.TopView화했을 때의 화상 사이즈와, 그 화상에 정사각형 또는 직사각형이 어떻게 표시되는지 결정, 정점 좌표를 결정. 이것은 원래의 "A"이미지의 가장 긴 가장자리 또는 바닥 가장자리를 사용하고 모든 것이 동일한 길이의 사각형이되도록 좌표를 계산합니다. 자세한 내용은 내 Notebook 2을 참조하십시오.

3. 각각의 정점 좌표를 이용해, cv2.getPerspectiveTransform()로 변환 행렬 취득. 이 변환 행렬은 카메라의 사다리꼴 'A'를 위에서 본 사각형의 'A'로 변환합니다.
아마도이 변환 행렬은 상수 항으로 한 번 계산해야합니다.

4.cv2.warpPerspective() 카메라 이미지에 3.에서 구한 변환 행렬을 적용.

이것으로 Top View를 얻을 수 있습니다.

Youtube에 실제 동작 모습의 Video를 올렸습니다.
이 비디오는 "Canny"알고리즘으로 가장자리를 추출한 카메라 이미지에 Top View 효과를 적용합니다. 조금 왜곡되어 있습니다만 「아」가 대체로 정사각형으로 나와 있습니다.
※클릭하여 재생

또한 Notebook의 동영상 사이에 지연이 발생했지만 아마도 Notebook에 무리한 동영상을 표시했기 때문일 수 있습니다.

아직 조정이 필요하지만 Top View를 사용하면 환경 인식 문제가 3차원에서 2차원 문제가 되고 식별자 요구 사항도 매우 간단해질 것입니다.
Top View 에서 레일을 식별할 수 있고 트랙을 할 수 있다면 예를 들어 장애물 감지와 정지라면 쉽게 할 수 있습니다.

참고문헌



Line detection autopilot using Python + OpenCV.
Canny Edge Detection
Jupyter에서 OpenCV 이미지를 인라인으로 표시



h tps : // w 로s 이래. 기주 b. 이오 / 코 m 뽀 d 에이 ぇ 아우토 ぉ t. HTML 

htps : // 기주 b. 코 m / 쿠마 파파 2012 / ぇ 아 rn g 마치 네 ぇ 아 r 마인 g / b ぉ b / 뭐 r / 노보오 ks / 니 네 _ MJPG_ ゔ ぃぃえw. 이 pyn b 

좋은 웹페이지 즐겨찾기