스테레오 비전 시스템 용 카메라를 선택하는 방법은 무엇입니까?


18

UGV에서 사용할 스테레오 비전 시스템을 구축하는 중입니다. 이 시스템은 넓은 야외 필드에서 비교적 작은 색의 암석을 찾기 위해 로봇을 원격 조작하는 경쟁에 사용될 로봇을위한 것입니다. 그러한 시스템을 교정하고 스테레오 비전 시스템의 데이터를 처리하는 방법을 이해합니다. 그러나 그러한 시스템에 카메라를 선택하는 방법을 모르겠습니다. 스테레오 비전 시스템을위한 카메라 선택에 대한 모범 사례는 무엇입니까?

답변:


11

내 머리 꼭대기에서 나는 다음 선택 기준으로 갈 것입니다.

  • 색상 / 흑백-스테레오 알고리즘은 어쨌든 하나의 채널 만 사용하므로 일반적으로 흑백이 더 좋습니다.
  • 기준선-이것은 실제로 장면에 따라 다릅니다. 기준선을 사용하면 거리에 따른 정확도를 제어 할 수 있습니다. 기준선이 넓을수록 시차 값이 높아져 거리 추정시 노이즈가 줄어 듭니다. 기준선이 높을수록 시야간에 겹치는 부분이 줄어 듭니다. 그러나 가장 중요한 것은 기준선이 넓을수록 두보기 간의 일치가 더 어려워집니다. 따라서 결과의 품질이 떨어집니다.
  • 셔터-항상 모바일 로봇의 컴퓨터 비전을 가진 모든 것에 글로벌 셔터를 사용하십시오
  • 해상도-대부분의 스테레오 알고리즘은 계산 비용이 많이 듭니다. 그리고 많은 3D 포인트가 필요하지 않을 것입니다. 근거리 장에서 샘플링 밀도는 일반적으로 충분하며, 낮은 시차로 인한 오차는 샘플링 밀도보다 더 큰 문제입니다. 대부분의 경우 640x480이 좋습니다. 일부 칩은 가로 세로 비율이 더 넓기 때문에 오버랩에 유리하지만 칩의 하위 창을 사용하면 동일하게 얻을 수 있습니다.
  • 목표 / 시야-모바일 실외 로봇의 경우 좁은 목표보다 넓은 시야를 선호합니다. 해상도와 같은 이유로 다소. 대물 렌즈가 딱딱하고 초점 거리 등의 움직이는 부분을 고정 할 수있는 수단이 있는지 확인하십시오. 기준선 선택에 의해 제한되기 때문에 대부분의 경우 고정 초점 거리는 괜찮습니다.
  • 트리거-자신의 스테레오 리그를 만들 때 카메라는 하드웨어 트리거를 지원해야하며 이상적으로는 다른 트리거를 트리거해야합니다.
  • framerate-제 생각에는 가장 중요한 고려 사항입니다. 처리 능력이 많지 않으면 어쨌든 5Hz 이상을 얻지 못할 것입니다. 따라서 알고리즘은 칩이나 연결이 아니라 병목 현상이 발생할 가능성이 훨씬 높습니다.
  • 인터페이스-대부분의 카메라에는 Firewire / USB2 / USB3 / Ethernet이 제공됩니다. USB2는 많은 CPU를 소비하므로 쓸모가 없습니다. Firewire는 포트가 있으면 좋지만 요즘 USB3에 유리한 것으로 보입니다. 아직 USB3에 대한 경험이 많지 않았습니다. 이더넷은 현재 USB3보다 GigEthernet을 사용하는 임베디드 시스템을 찾을 가능성이 높기 때문에 매우 좋습니다.
  • 하우징-가능한 한 단단합니다. 재 교정은 성가신 절차입니다.

6

초당 필요한 프레임 수와 해당 프레임 속도로 처리 할 수있는 카메라 해상도를 계산하여 시작해야합니다. 그렇지 않으면 과다 지출이나 필요에 맞지 않는 카메라를 구매할 수 없습니다.

그 외에도 선택을 더 어렵거나 흥미롭게 만드는 다양한 기능이 있습니다. 다른 카메라 (특히 Axis와 같은 네트워크 카메라)를 사용하면 이미지 품질을 변경하거나 이미지 스트림의 최대 비트 전송률을 지정할 수 있습니다. 일부 카메라에서는 셔터 속도를 선택할 수있어 이미지의 일정한 노출 시간 또는 일정한 평균 조명을 선호합니다. 일부 카메라는 다른 카메라보다 민감합니다 (마지막으로 작업 한 것은 2009 년이었으며 우리는 PS3 아이가 저조도 환경에서 실제로 잘 작동한다는 것을 알았습니다).

아마도 가장 좋은 방법은 DSLR을 사용하여 촬영 한 정적 이미지 몇 개에서 이미지 처리 알고리즘을 실행 한 다음 프레임 크기와 품질을 줄여서 작업이 시작되는 위치를 확인하는 것입니다.


6

경계해야 할 몇 가지 사항 :

  • 전역 셔터는 기본적으로 라인 스캔 방식으로 순차적으로 캡처되는 롤링 셔터와 달리 모든 픽셀이 동시에 캡처되는 것을 의미합니다. UGV가 캡처 한 이미지에 대해 이동하고 스테레오 알고리즘을 수행하므로 아래 그림 ( 위키 백과 에서 가져온 것)과 같이 카메라가 움직일 때 발생하는 수차를 피하는 것이 중요 할 수 있습니다 .

CMOS 카메라 폰으로 찍은 움직이는 자동차가 기울어 짐 부분 노출을 나타내는 사진.  사진의 상단과 하단 노출 사이에서 조명 조건이 변경되었습니다. 터보 프로펠러 프로펠러

  • 하드웨어에서 카메라 동기화 는 일부 카메라, 특히 파이어 와이어 카메라 AFAIK에 의해 달성 될 수 있습니다. 그것은 사물이 움직일 때 스테레오에 대한 결과를 크게 향상시킬 수 있습니다.

  • 스테레오 쌍에 대한 외부 파라미터 (카메라 간 상대 포즈)의 변경이 보정 후에 변경되지 않는 방식으로 장착 해야합니다. UGV가 실외에서 고르지 않은 지형에 직면하고 사물이 진동하기 때문에 장비에서 더 중요 할 수 있습니다.

  • 전용 스테레오 하드웨어를 사용하면 스테레오 비전 시스템의 출력으로 디스 패리티 이미지를 직접 획득 할 수있어 내장 컴퓨팅의 부담을 덜어줍니다. 또한 소프트웨어에서 동일한 알고리즘을 실행하는 것보다 훨씬 빠른 경향이 있습니다.

평소와 같이 지불하고자하는 금액이 많을수록 더 나은 결과를 얻을 수 있습니다. 솔직히 말해서, Bumblebee2 와 같은 본격적인 스테레오 카메라를 구입할 수 있다면 그게 내가 할 것입니다. 그렇지 않으면, 더 싼 편이라면 Kinect 를 사용하면됩니다. 같은 가격으로 성능을 능가하는 시스템을 얻을 수 없을 것입니다.


문제는 실외 시스템이었습니다. 이것은 Kinect를 효과적으로 배제합니다. 또한 Bumblebee와 함께 제공되는 알고리즘은 최적과 거리가 멀습니다.
Jakob

Kinect 의견에 당신과 함께 있지만 Bumblebee와 함께 제공되는 스테레오 알고리즘을 자신의 코드로 대체 할 수 없습니까? 내가 지적한 가장 큰 장점은 번들로 제공되는 소프트웨어가 아니라 실제 하드웨어에 있다는 것입니다.
georgebrindeiro

응 그것은 사실이야. 두 대의 일반 카메라처럼 사용할 수 있으며 견고한 하우징이라는 장점이 있습니다.
Jakob

뿐만 아니라하지만, 글로벌 셔터, 좋은 렌즈 및 기타 케이크
georgebrindeiro

4

그것은 흥미로운 주제이며 첫 번째 시도에서 바로 잡기가 쉽지 않습니다. 이것에 대한 경험을 통해 가장 중요한 것이 있습니다.

  • 동기화 . 카메라는 100 % 동기화되어야합니다. 예를 들어, UGV가 적당한 36Km / hr (10m / s)로 구동하고 초당 30 프레임으로 프레임을 기록한다고 가정 해보십시오. 즉, 모든 프레임에서 UGV는 3m를 커버합니다. 이제 동기화가 1ms 해제되었다고 가정하면 카메라 중 하나가 ~ 0.3m 정도 꺼질 것입니다. 동기화 문제는 감지하기가 매우 어렵습니다.

  • δ=2에프δδ에프δδδ1/2δ

  • 겹침 . 스테레오를 얻기 위해 카메라간에 겹 치려고합니다. 따라서 응용 프로그램에 충분한 오버랩을 갖도록 렌즈 초점 거리 (시야)와 기준선을 조합해야합니다. 기본적으로 삼각법은 보드 또는 빠른 matlab / python 스크립트에서 작동합니다.

UGV의 경우 스테레오에는 두 가지 용도가 있습니다.

  1. 탐색 및 포즈 추정 이 경우에는 아마도 큰 기준선 + 긴 초점 거리가 필요할 것입니다. 이를 통해 스테레오로 깊이를 더 잘보고 더 멀리 볼 수 있습니다.

  2. 장애물 감지 및 회피 가까운 거리에 초점을 맞출 수 있도록 더 짧은베이스 라인과 더 넓은 렌즈 (초점 거리)가 필요할 것입니다.

일부 UGV에는 스테레오 설정, 탐색을위한 넓은 기본 좁은 시야, 장애물 회피를위한 하나 또는 두 가지 모두가 있습니다.

당신이 사는 것을 매우 조심하십시오. 일부 회사는 이미 구축 된 스테레오 설정을 제공합니다. 이것들은 사물의 견고성 측면에서 뛰어나며, 쉽게 교정을 풀지 않으며 항상 동기화됩니다. 문제는 상업적으로 이용 가능한 것들이 작은 기준을 가지고 있다는 것입니다. 자신의 것을 만들고 싶다면. 나는 당신이 그렇게 할 것이라고 추측합니다 . 카메라가 동기화 가능한지 확인하십시오 . Firewire는이를 위해 유용합니다. 동일한 버스에있는 두 대의 카메라가 125 마이크로 초의 정확도로 즉시 동기화됩니다! USB 및 Gige 캠은 동기화하기가 어렵습니다. 모든 것을 정리할 때 렌즈가 전혀 움직이지 않도록하고 기준선이 튼튼하고 응용 분야에 매우 견고해야합니다.

렌즈 선택에도주의하십시오. 모든 렌즈가 모든 카메라에서 작동하는 것은 아닙니다. 렌즈도 해상도가 있습니다. 이것은 또 다른 주제입니다. 여기 http://www.qualitymag.com/articles/90642-qa--selecting-lenses-for-machine-vision-systems 에 대한 짧은 기사가 있습니다 .


4
동기화 계산이 잘못되었습니다. 10m / s에서 30FPS는 프레임 당 33cm (3m 아님)의 거리를 제공합니다. 또한이 속도에서 1ms는 1cm의 거리를 의미합니다 (FPS에 관계없이). 따라서 ms 수준의 동기화는 실제로 이러한 속도에 대한 최상의 결과입니다!
Kozuch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.