스테레오 비전이 있는 3D-데이터

1. 요약

이 문서는 스테레오 카메라를 이용한 깊이 인식을 위한 주요 처리 단계들에 대한 개요를 제공합니다. 일반적인 기술을 설명한 후, Ensenso 스테레오 카메라의 세부 사항으로 이동하여 클래식 스테레오 비전 프로세스를 개선합니다.

2. 스테레오 비전의 원리

스테레오 비전의 깊이 인식은 삼각 측량 원리를 기반으로 합니다. 우리는 투영 광학이 있는 두 대의 카메라를 사용하고 이 카메라들을 나란히 배열하여, 원하는 물체 거리에서의 시야각이 겹치도록 합니다. 각 카메라로 사진을 찍어 두 개의 다른 시점에서 장면을 캡처합니다. 이 설정은 그림 1에 설명되어 있습니다.

두 이미지에서 볼 수 있는 각 표면점에 대해, 표면점을 각 카메라의 투영 중심과 연결하는 두 개의 광선들이 3D 공간에 있습니다. 캡처된 장면의 3D 위치를 얻으려면 주로 두 가지 작업을 수행해야 합니다 : 첫 번째로, 왼쪽 이미지에서 볼 수 있는 각 표면 점이 오른쪽 이미지에서 어디에 위치하는지 확인해야 합니다. 두 번째로, 왼쪽 및 오른쪽 카메라의 관련 픽셀에 대한 광선 교차점을 계산하기 위해 정확한 카메라 지오메트리를 알아야 합니다. 카메라들이 서로 단단히 부착되어 있다고 가정하므로, 지오메트리는 보정 프로세스 중에 한 번만 계산됩니다.

그림 1: 미들베리 스테레오 데이터 세트 '콘즈'(Middlebury Stereo Dataset ‘Cones’)의 예입니다. 페이퍼 콘이 있는 장면이 스테레오 카메라로 이미지화됩니다. 두 카메라 이미지에 대한 두 개의 콘 팁의 투영 광선이 예시적으로 표시됩니다.

3. 보정

두 대의 카메라 시스템의 지오메트리는 스테레오 보정 과정에 앞서 계산됩니다. 먼저, 보정 객체가 필요합니다. 일반적으로 이는 알려진 크기의 바둑판 또는 도트(dot) 패턴이 있는 평면 보정 플레이트입니다. 다음으로, 두 카메라에서 서로 다른 위치, 방향 및 거리 패턴을 보여주는 동기식 이미지 쌍을 캡처합니다. 다음으로, 각 이미지 쌍에서 패턴의 도트의 픽셀 위치와 보정 플레이트에서 알려진 위치를 사용하여 관찰된 모든 패턴의 3D 포즈 및 스테레오 카메라의 정확한 모델을 계산할 수 있습니다. 모델은 카메라의 초점 거리 및 왜곡과 같은 각 카메라의 고유 파라미터와 외부 파라미터 (즉, 왼쪽 및 오른쪽 카메라 사이의 3 차원 회전 및 이동)로 구성됩니다. 이 보정 데이터를 사용하여, 두 이미지에서 식별된 해당 포인트를 삼각 측량하고 카메라에 대한 메트릭 3D 좌표를 복구할 수 있습니다.

그림 2: 이미지 위치와 일치하는 검색 공간은 오직 1 차원입니다. 상단부: 에피폴라 라인(epipolar lines)은 왜곡된 원시 이미지에서 왜곡됩니다. 중앙부: 이미지 왜곡을 제거하면 직선 에피폴라 라인이 생성됩니다. 하단부: 정류는 에피폴라 라인을 이미지 축과 정렬시킵니다. 이미지 스캔 라인들을 따라 대응 검색을 수행할 수 있습니다.

4. 깊이 계산을 위한 처리 단계들

다음 세 개의 섹션에서, 이미지 쌍의 각 픽셀에 대한 3D 위치를 계산하는 데 필요한 처리 단계를 설명합니다. 이러한 단계들은 장면의 3D 포인트 클라우드 또는 표면을 얻기 위해 캡처된 각 스테레오 이미지에 대해 실시간으로 수행되어야 합니다.

4.1 교정(rectification)

이미지화 된 포인트를 삼각 측량하려면 왼쪽 및 오른쪽 이미지에서 해당 이미지 부분을 식별해야 합니다. 왼쪽 이미지의 작은 이미지 패치를 고려하여, 오른쪽 이미지 전체에서 충분히 일치하는 이미지를 간단히 검색할 수 있습니다. 이를 실시간으로 수행하기에는 너무 많은 시간이 소요됩니다. 왼쪽 이미지 상단에 콘 팁이 보이는 그림 3의 예제 이미지 쌍을 고려하십시오. 카메라들이 나란히 장착될 때, 직관적으로 오른쪽 이미지의 아래쪽 절반에서 콘 팁을 찾을 필요가 없어 보입니다. 실제로 두 대의 투영 카메라의 지오메트리는 검색을 오른쪽 이미지의 1 차원 선, 에피폴라 라인으로 제한할 수 있습니다.

그림 3: 스테레오 이미지 쌍. 오른쪽 이미지에서 콘 팁을 어디에서 검색해야 할까요?

그림 2 (상단부)는 몇 개의 손으로 표시된 포인트 대응들과 에피폴라 라인을 보여줍니다. 원시 카메라 이미지에서 에피폴라 라인은 카메라 광학으로 인한 왜곡으로 인해 구부러집니다. 이러한 곡선을 따라 대응을 검색하는 것은 매우 느리고 복잡하지만 보정 과정에서 배운 왜곡을 역으로 적용하여 이미지 왜곡을 제거할 수 있습니다. 결과적으로 왜곡되지 않은 이미지는 그림 2 (중앙부)에 묘사된 직선 에피폴라 라인을 갖습니다.

직선이지만, 에피폴라 라인은 각 이미지의 다른 부분에서 다른 방향을 갖습니다. 이는 이미지 평면들 (즉, 카메라 센서들)이 완벽하게 동일 평면에 있지도 않고, 방향도 동일하지 않기 때문에 발생합니다. 대응 검색을 더욱 가속화하기 위해 보정에서 카메라 지오메트리를 사용하고 이미지에 추가 원근 변환을 적용하여 에피폴라 라인이 이미지 스캔 라인들 2(?)와 정렬되도록 할 수 있습니다. 이 단계를 교정이라고 합니다. 이제 오른쪽 이미지에서 동일한 스캔 라인을 보고 가장 일치하는 위치를 찾는 것만으로 흰색 콘의 팁을 검색할 수 있습니다. 모든 추가 처리는 수정된 이미지에서만 수행되며 결과 이미지는 그림 2 (하단부)에 나와 있습니다.

4.2 스테레오 매칭

이제 왼쪽 이미지의 각 픽셀에 대해 오른쪽 이미지의 동일한 스캔 라인에서 픽셀을 검색할 수 있고, 이것은 동일한 대상 지점을 캡처하게 됩니다. 단일 픽셀 값은 일반적으로 해당 픽셀을 안정적으로 찾을 수 있을 만큼 차이가 나지 않기 때문에 일반적으로 각 픽셀 주변의 작은 창들 (예 : 7x7 픽셀들)을 동일한 행의 오른쪽 이미지에 있는 모든 가능한 창들과 매칭시키려고 합니다. 추가 제한 사항으로, 전체 행을 검색 할 필요가 없지만 왼쪽 이미지 픽셀의 x-좌표 왼쪽까지 제한된 수의 픽셀들만 검색 할 필요가 있으며, 이는 가까운 물체에 초점을 맞추는 데 필요한 약간의 교차-눈 시선에 해당합니다. 이렇게 하면 매칭이 가속화되고 점을 삼각 측량할 수 있는 깊이 범위가 제한됩니다. 충분히 우수하고 고유한 매칭이 발견되면 왼쪽 이미지 픽셀을 해당 오른쪽 이미지 픽셀과 연관시킵니다. 연관성은 픽셀 x-위치 사이의 오프셋 형태로 디스패리티 맵(disparity map)에 저장됩니다 (그림 4 참조).

그림 4

이 매칭 기술은 각 픽셀 주변의 로컬 정보만 사용하므로 로컬 스테레오 매칭이라고 합니다. 분명히, 동일한 스캔 라인의 다른 이미지 부분과 충분히 구별되는 경우 왼쪽 이미지와 오른쪽 이미지 사이의 영역만 매칭시킬 수 있습니다. 따라서 로컬 스테레오 매칭은 텍스처가 좋지 않거나 반복적인 영역에서 실패합니다. 글로벌 스테레오 매칭으로 알려진 다른 방법도 주변 정보를 이용할 수 있습니다. 그들은 매칭 파트너(matching partner)를 검색하기 위해 각 픽셀 (또는 이미지 패치)을 개별적으로 고려하지 않고 모든 왼쪽 및 오른쪽 이미지 픽셀에 대한 할당을 한 번에 찾으려 합니다. 이 글로벌 할당은 표면이 대부분 매끄럽기 때문에 인접 픽셀들이 비슷한 깊이를 갖는 경우가 많다는 점도 고려합니다. 글로벌 방법은 로컬 접근 방식보다 더 복잡하고 더 많은 처리 능력이 필요하지만, 표면의 텍스처가 덜 필요하고 특히 객체 경계에서 더 정확한 결과를 제공합니다.

그림 4: 이미지 매칭의 결과. 디스패리티 맵은 왼쪽 이미지와 오른쪽 이미지 사이의 픽셀 이동 형태로 깊이 정보를 나타냅니다. 오른쪽 이미지에서 픽셀을 식별할 수 없음을 나타내기 위해 특수 값 (여기서는 검은색)이 사용됩니다. 이것은 가려진 영역이나 오브젝트의 반사에 대해 발생하며 두 카메라에서 다르게 나타납니다.

4.3 재투영

어떤 매칭 기술을 사용하든 결과는 항상 디스패리티 맵에 저장된 왼쪽 및 오른쪽 이미지의 픽셀 간의 연관입니다. 디스패리티 맵의 값은 오프셋을 픽셀 단위로 인코딩하며, 여기서 해당 위치가 오른쪽 이미지에서 발견됩니다. 그림 4는 디스패리티 개념을 보여줍니다. 다음으로, 보정 중에 얻은 카메라 지오메트리를 다시 사용하여 픽셀 기반 디스패리티 값을 모든 픽셀의 실제 메트릭 X, Y 및 Z 좌표로 변환할 수 있습니다. 이 변환을 "재투영"이라고 합니다. 그림 1의 앞부분에서 설명한 것처럼, 각각의 관련 왼쪽 및 오른쪽 이미지 픽셀의 두 광선들을 간단히 교차시킬 수 있습니다. 결과 XYZ 데이터를 "포인트 클라우드"라고 합니다. 이미지의 픽셀 그리드에서 포인트의 인접 정보를 유지하기 위해 종종 3 채널 이미지로 저장됩니다. 포인트 클라우드의 시각화는 그림 5에 나와 있습니다.

그림 5: 디스패리티 맵과 카메라 보정 데이터에서 생성된 3D 표면 보기. 표면은 왼쪽 카메라 이미지 (여기서는 회색조로 변환 됨)와 함께 텍스처가 있습니다.

5. 어플리케이션 별 처리

설명된 세 가지 처리 단계는 장면의 전체 3D 포인트 클라우드를 얻기 위해 스테레오 이미지 쌍에서 수행되어야 합니다. 그런 다음 특정 어플리케이션을 실현하기 위해 포인트 클라우드를 추가로 처리해야 합니다. 이는 이전 포인트 클라우드 또는 CAD 모델에서 학습한 알려진 객체에 대하여 장면의 표면을 매칭시키는 데 사용할 수 있습니다. 일부가 캡처된 장면 표면에서 고유하게 위치할 수 있는 경우, 개체의 전체 위치와 회전을 계산할 수 있으며, 예를 들어 로봇이 이를 선택할 수 있습니다.

6. Ensenso 스테레오 카메라

앞에서 언급했듯이, 모든 스테레오 매칭 기술은 왼쪽 이미지와 오른쪽 이미지 사이의 대응 관계를 안정적으로 결정하기 위해 텍스처가 있는 개체가 필요합니다. 텍스처 인식은 조명 조건과 장면에 있는 오브젝트의 표면 텍스처에 직접적으로 의존하기 때문에, 텍스처가 좋지 않거나 반사되는 표면은 결과적으로 3D 포인트 클라우드의 품질에 직접적인 영향을 줍니다 Ensenso 카메라는 특수 기술을 사용하여 기존 스테레오 비전 프로세스를 개선하여 더 높은 품질의 깊이 정보와 더 정확한 측정 결과를 제공합니다

텍스처 투영

따라서 Ensenso 스테레오 카메라는 추가 텍스처 투영 유닛을 통합합니다. 이미지를 캡처하는 동안 텍스처 투영 장치는 고도로 구조화된 패턴으로 객체 자체의 텍스처를 보강하여 스테레오 매칭 단계에서 모호함을 제거합니다. 이를 통해 단색 또는 모호한 텍스처 표면에서도 조밀한 3D 포인트 클라우드를 보장합니다. 이것이 우리가 "투영된 텍스처 스테레오 비전"을 말하는 이유입니다. 프로젝터와 카메라는 움직이는 물체를 캡처할 때 일관된 이미지 쌍을 보장하기 위해 하드웨어 트리거 신호에 의해 동기화됩니다.

플렉스 뷰

투영 광선에서 패턴 마스크의 위치는 압전 구동 소자를 사용하여 매우 작은 단계들에서 선형으로 이동할 수도 있습니다. 그 결과, 장면 객체의 객체 표면에 투사된 텍스처 또한 이동하여, 빛나는, 어두운 또는 밝은 산란 표면에 대한 추가적이고 다양한 정보를 생성합니다. 정적 장면에서 이 플렉스 뷰 기술을 사용하면 텍스처가 다른 여러 이미지 쌍을 캡처할 수 있으므로 픽셀 수가 훨씬 더 많아집니다. 해상도가 높을수록 훨씬 더 상세한 디스패리티 이미지와 포인트 클라우드를 계산할 수 있으며, 이는 어려운 표면에서 3D 데이터의 더 높은 견고성에도 반영됩니다.

NxLib 스테레오 프로세싱 라이브러리

NxLib 라이브러리는 카메라를 인터페이스하고 보정을 포함한 전체 스테레오 처리 파이프 라인을 구현합니다. 텍스처 투영과 글로벌 매칭 기술을 결합하고 고밀도의 고품질 포인트 클라우드를 제공합니다. 엄격하게 병렬화된 글로벌 매칭 알고리즘은 모든 프로세서 코어를 사용하여 실시간 성능을 달성할 수 있습니다.