1. 서 론
최근 자율 주행 자동차에 대한 연구와 더불어 로봇 네비게이션에 관한 기술도 많은 관심을 받고 있다. 특히 안전과 관련된 로봇의 경우 보다 정밀한 네비게이션 기술을 필요로 한다. 로봇 네비게이션 기술의 핵심은 주변의 정보를 효과적으로 이용하는 것이다[1]. 무인 자동차 기술을 예로 들면 구글에서는 주변의 환경을 효과적으로 파악하기 위해 차량 위에 3차원 LiDAR를 부착하여 주변 정보를 획득한다. 도로를 주행하는 차량은 주변의 많은 변수가 존재하기에 이러한 3차원 LiDAR가 효율적인 시스템이다. 하지만 상대적으로 간단한 실내를 주행하는 모바일 로봇의 경우 많은 정보를 요구하지 않는다. 모바일 로봇이 향하는 방향의 3차원 정보만으로도 충분히 제어가 가능하다. 3차원 LiDAR는 비용적인 측면에서 고가일 뿐만 아니라, 소형 시스템에서 부착이 용이하지도 않다.
3차원 LiDAR를 대체할 수 있는 센서로는 카메라나 초음파, 적외선과 같은 센서들이 존재한다. 이러한 센서들은 크기가 작고 비용 또한 저렴하여 소형시스템을 구성하는데 용이하다. 초음파나 적외선의 경우 한 줄에 대한 3차원 정보를 얻게 되지만, 카메라의 경우 면에 대한 3차원 정보를 획득할 수 있기에 다수의 시스템에서 활용되고 있다[2, 3]. 두 대의 카메라를 이용하여 3차원 정보를 획득하는 방법을 스테레오 비전이라고 하며, 카메라 사이의 거리와 카메라와 대상체까지의 거리에 따라 성능이 결정된다. 이러한 스테레오 비전은 인간의 눈과 같이 두 카메라에서 얻어진 시차 정보를 바탕으로 깊이 정보를 추정하는 방법이다.
스테레오 비전은 크게 수동적 방법과 능동적 방법으로 나눌 수 있다. 수동적 방법은 왼쪽 영상과 오른쪽 영상에서 대응점을 찾아 두 대응점간의 시차를 찾아 깊이를 추정하는 방법이다. 대응점을 찾는 대표적인 방법으로 마스크 기반의 정합 알고리즘이 있으며 SSD(Sum of Squared Difference), SAD(Sum of Absolute Difference), MAE(Mean Absolute Error)와 같은 비용 함수를 통해 최적의 시차를 찾는다[4]. 하지만 이러한 방법은 획득된 영상의 질감도가 높아야 정밀한 깊이 정보를 추정할 수 있고, 질감도가 낮을 경우 대응점을 찾는 것이 어려워 오정합률이 높아진다.
능동적 방법은 두 대의 카메라 이외에 추가적인 광원을 배치하여 대응점을 찾기 쉽도록 하는 방법이다. 이러한 능동적 방법은 능동적 스테레오 비전(Active Stereo Vision, ASV)이라고 하며[5], 추가적인 광원을 이용해 구조광을 투영시키고 투영된 구조광을 이용해 정합을 수행하는 방법이다. 구조광을 이용하기에 질감도가 낮은 영역에서 정합이 용이하다는 장점이 있지만, 구조광으로 정의된 패턴을 추출하기 어려운 경우 정합률이 떨어지게 된다. 특히 대상체의 색상이나 주변 조명으로 인한 패턴 왜곡[6]이발생하는 경우 정합률이 떨어지는 문제가 현저하게 나타난다. 또한 광원 자체의 밝기가 고르지 못한 경우 구간 별 밝기 분포도를 작성하여 밝기를 조절할 필요가 있다[7].
최근에는 앞서의 스테레오 비전 방법이 아닌 딥러닝 기반의 깊이 추정 방법이 활발히 연구되고 있다[8,9]. 이러한 방법의 장점은 충분한 학습이 이루어진다면, 단일 영상으로도 깊이를 추정할 수 있다는 점이다. 하지만 이러한 방법은 단일 영상 정보의 밝기 정보를 이용해 학습한 정보에 기반하고 있기에 제안하는 방법인 1mm 수준의 정밀도를 확보하기 어렵다. 예를 들어 컵 영상을 통해 컵의 3차원적인 형상을 개략적으로 얻을 수는 있지만 다양한 크기를 가지는 컵에 대하여 수 mm 수준의 정확한 3차원 정보를 얻는 것은 근원적으로 불가능하다. 또한 딥러닝에 필요한 1 mm 수준으로 정밀하게 가공된 다수의 학습 데이터셋을 확보하는 것 또한 매우 어려운 과정이다. 따라서 본 연구에서는 1 mm 수준의 정밀도를 보장하기 위해서 딥러닝 기반이 아닌 전통적인 스테레오비전을 이용한다.
본 연구에서는 기존의 능동적 스테레오 정합이 가지는 패턴 획득의 어려움을 보완할 수 있는 보조 패턴을 이용한 새로운 정합 기법을 제안한다. 제안한 방법은 백색 보조 띠를 통해 정합에 사용되는 패턴의 추출을 용이하게 하고, 적응적 임계값 적용을 통해 광원의 밝기 보정 없이도 패턴을 잘 추출하여 기존방법보다 성능을 향상시켰다. 논문의 구성은 2장에서 카메라 기하기반의 스테레오 정합 방법과 기존의 능동적 스테레오 정합 방법에 대해 소개한다. 3장에서는 제안하는 알고리즘의 개요 및 구체적인 내용에 대해 설명한다. 4장에서는 기존의 스테레오 정합 기법과 제안한 방법의 성능을 평가하기 위해 시편의 단차를 측정한다. 끝으로 5장에서 결론을 맺고, 향후연구 주제에 대해 제시한다.
2. 기존의 스테레오 정합 기법
2.1 스테레오 정합
스테레오 정합은 두 대의 카메라를 이용해 시차정보를 획득하고, 이를 이용해 깊이 정보를 추정한다. 스테레오 정합은 간단한 카메라 기하에 의해 구성된다. 두 대의 카메라가 평행 광축을 가지는 스테레오 카메라 모델[10]은 Fig. 1과 같다. 여기서 각 카메라 모델은 핀홀 카메라를 이용한다. \(C_l\)과 \(C_r\)은 각각 왼쪽과 오른쪽 카메라의 중심이고, \(M\)과 \(N\)은 각각 왼쪽 카메라와 오른쪽 카메라의 광축을 나타낸다. \(L\)과 \(R \)은 각각 왼쪽과 오른쪽 카메라의 주점을 나타내며, \(b\)는 카메라 사이의 거리인 베이스 라인(base line)이다. \(P\)는 외부의 한 점이고, \(P_l\)과 \(P_r\)은 \(P\)를 각각 왼쪽과 오른쪽 이미지 평면에 투영시킨 점이다.
Fig. 1. Stereo camera model.
외부의 한 점 \(P\)와 영상내의 점 \(P_l\)과 \(P_r\)의 관계를 파악하기 위해 간단한 삼각형의 닮음비를 이용한다. \(P\)와 \(P_l\)의 관계는 \(\triangle P M C_l\)와 \(\triangle P_l L C_l\)의 닮음비를 이용하여 나타내면 식 (1)과 같고, \(P\)와 \(P_r\)의 관계는 \(\triangle P N C_{r}\)과 \(\triangle P_{r} R C_{r}\)의 닮음비를 이용하여 나타내면 식 (2)와 같다.
\(\frac{X}{Z}=\frac{x_{l}}{f}\) (1)
\(\frac{X-b}{Z}=\frac{x_{r}}{f}\) (2)
앞서 식 (1)과 (2)를 연립하여 \(Z\)에 대해 나타내면 식 (3)과 같다. \(x_{l}-x_{r}\)은 두 영상을 이용해 획득된 시차 정보이다. 베이스 라인과 초점거리는 주어진 값이므로, 깊이 정보 \(Z\)의 추정 과정에서 시차 정보를 정확하게 획득하는 것이 중요하다.
\(Z=\frac{b f}{\left(x_{l}-x_{r}\right)}\) (3)
시차 정보를 구하기 위해서는 왼쪽 영상과 오른쪽영상의 \(x_l\)과 \(x_r\)과 같은 대응점을 찾아야 한다. 대응점을 정확하게 찾는 것이 시차 정보를 더 정확하게 찾는 것이고, 최종적으로 깊이 정보도 정확하게 구하는 것이다. 하지만 낮은 질감도 영역(Low texture region)에서는 대응점을 찾기가 어려워 깊이 정보의 정확도가 떨어진다[11].
질감도가 낮은 영역에서 정합률을 높이기 위해 추가적인 광원을 이용하는 스테레오 정합 방법이 능동적 방법이다. 능동적 방법은 미리 정의된 패턴(구조광, Structured light)을 투영시켜 정합을 수행하는 방법이다. 수동적 방법과는 달리 질감도가 낮은 영역에서 정합이 잘 이루어지지만, 상대적으로 구성이 복잡하여 처리 시간이 많이 소요된다. 또한 패턴 정보를 이용하기에 올바른 패턴 정보를 얻지 못할 경우 정합이 어려운 점이 존재한다. 능동적 방법은 패턴구성에 따라 크게 시간 변조(Time-multiplexing)와 공간 변조(Spatial-multiplexing)로 나눌 수 있다[12]. 이어지는 절에서는 시간 변조의 대표적인 방법 중 하나인 이진 코드(Binary code)를 이용한 정합과 공간 변조의 대표적인 방법 중 하나인 드 브루인 수열(De bruijn sequence)을 이용한 정합[13, 14]을 소개한다.
2.2 이진 코드(Binary code)를 이용한 정합
앞서 2.1절에서 언급한 바와 같이 능동적 방법은 패턴의 종류에 따라 구분된다. 시간 변조는 모양이 다른 다수의 패턴을 투영시켜, 유일한 코드를 만들어내는 기법으로 이진 코드가 대표적이다. 이진 코드는 0과 1로 구성된 흑백 패턴이다[15]. 예를 들어 가로해상도가 16인 이진 코드의 구성은 Fig. 2와 같다. 첫 번째 패턴은 1칸씩 흑과 백이 반복되는 패턴이고, 두 번째 패턴은 2칸씩, 세 번째 패턴은 4칸씩, 네 번째 패턴은 8칸씩 흑과 백이 반복되는 패턴이다. 패턴 밑에는 각 패턴이 가지는 코드를 나타낸 것으로, 첫 번째 패턴은 0과 1의 코드 값을 가진다. 두 번째 패턴은 0과 2의 코드 값, 세 번째 패턴은 0과 4의 코드 값,네 번째 패턴은 0과 8의 코드 값을 가진다. 각 패턴이 가지는 코드 값을 다 더하게 되면 Fig. 2의 가장 아래와 같이 고유한 코드 값을 갖게 된다.
Fig. 2. Binary code.
고유한 코드 값을 갖게 되면, 왼쪽 영상과 오른쪽영상에서 코드 값이 동일한 대응점을 찾아 정합을 수행한다. 예를 들어 Fig. 3과 같이 코드 값이 주어지면 왼쪽 영상과 오른쪽 영상에서 동일한 코드 값을 갖는 대응점을 구해 시차 정보를 구한다.
Fig. 3. Stereo matching using binary code.
하지만 Fig. 2에서 보는 것처럼 해상도에 따라 패턴의 수가 결정되므로, 높은 해상도를 가질수록 많은 수의 패턴을 필요로 한다. 해상도와 패턴의 수는 식(4)와 같은 관계를 가진다. \(res\)는 영상의 가로 해상도를 의미하고, \(n\)은 \(res\)의 가로 해상도를 처리하는 데 필요한 영상의 수를 의미한다. 즉, 가로 해상도가 1024인 영상을 처리하기 위해서는 10장의 이진 코드 영상이 필요하다.
\(res =2^{n}\) (4)
2.3 드 브루인 수열(De bruijn sequence)을 이용한정합
앞서 이진 코드 패턴은 시간 변조 기반의 패턴 구성이었다. 드 브루인 수열 패턴은 공간 변조 기반의 패턴 구성으로 하나의 패턴을 투영시켜 공간상의 코드 조합으로 유일한 코드를 만들어내는 기법이다. 드브루인 수열은 각 원소들이 부분 수열(Subsequence)로 구성된 순환하는 수열이다[16, 17]. Fig.4는 0과 1을 원소로 가지면서 3개의 부분 수열로 이루어진 드 브루인 수열이다. 즉, 0과 1로 구성할 수 있는 3자리의 순열 000, 001, 010, 011, 100, 101, 110, 111을 원소로 가지는 수열이다. 드 브루인 수열은 00011101로 표현되며 Fig. 4의 아래와 같이 세 자리씩 끊어서 해석한다.
Fig. 4. De bruijn sequence.
드 브루인 수열의 크기는 식 (5)에 의해 결정된다. \(B(k, n)_{s i z e}\)는 드 브루인 수열의 크기를 의미하고, \(k\)와 \(n\)은 각각 원소의 개수와 부분 수열의 크기를 의미한다. 앞서 Fig. 4의 경우 드 브루인 수열은 00011101이므로 크기는 8이고, 원소의 개수는 0과 1로 2개이며 부분 수열의 크기는 3이다.
\(B(k, n)_{s i z e}=k^{n}\) (5)
앞서의 드 브루인 수열을 이용해 원소가 RGB 채널이고, 부분 수열의 크기가 3인 수열을 이용해 패턴을 구성하면 Fig. 5와 같다. 부분 수열의 크기가 3이므로 3개씩 묶어 수열을 해석하면, BBB(0), BBG(1), BGG(2), ... , GBR(24), BRB(25), RBB(26)로 이루어진 수열이며, 총 27개의 코드 값을 할당할 수 있다[18].
Fig. 5. De bruijn sequence for color component.
영상 해상도만큼 코드를 할당하기 위해서는 부분수열의 크기를 늘리거나 드 브루인 수열을 반복하는 형태로 패턴을 구성한다. 본 논문에서는 앞서의 27개짜리 드 브루인 수열을 반복하는 형태로 구성하였다. 드 브루인 수열을 반복하면 한 패턴에서 중복된 코드 값이 다수 존재하게 된다. 중복된 코드 값이 아닌 고유한 코드 값을 할당하기 위해서는 언래핑(Unwrapping) 과정을 수행한다. Fig. 6은 언래핑 전과 후를 나타낸 것이다. (a)와 같이 언래핑 전에는 고유 코드가 0∼26이 반복되는 형태이다. 언래핑은 반복되는 주기에 따라 코드를 누적함으로써 각 픽셀마다 고유 코드를 할당할 수 있다. 즉, (b)와 같이 26 다음에 오는 0번 코드는 27로 설정하여 각 픽셀마다 고유 코드를 할당하게 된다. 여기서는 0∼53까지의 고유 코드를 할당받는다. 언래핑을 통해 모든 픽셀에서 고유한 코드 값을 갖게 되면, 이진 코드에서처럼 왼쪽 영상과 오른쪽 영상 에서 코드 값이 동일한 대응점을 찾아 정합을 수행한다.
Fig. 6. De bruijn sequence unwrapping result. (a) Before unwrapping. (b) After unwrapping.
2.4 기존 능동적 정합 방법의 문제점
앞서 2.2와 2.3절에 소개된 패턴 기반의 정합 방법은 미리 정의된 패턴을 잘 획득해야 오정합률이 낮아진다. 이때 프로젝터의 비선형적인 특성은 정합률을 낮추는 요소 중 하나이다. 특히 프로젝터의 램프가 중앙부에 위치하기에 중앙 부분이 가장 밝고, 가장자리는 어둡게 관측되는 Fig. 7과 같은 문제가 발생한다. 이러한 문제를 해결하기 위해서는 카메라와 프로젝터간의 상관관계를 파악하여 보정 작업을 수행해야한다[7]. 보정 작업은 패턴이 투영되는 대상체의 특성이 변하거나 주변의 조명 성분이 변하면 보정을 다시 수행해야한다는 불편함이 존재한다. 한편 공간변조 기반의 패턴과 같이 색상을 이용한 패턴의 경우 대상체의 색이 다양할 경우 제대로 된 패턴 획득이 어렵다. 본 논문에서는 앞서의 문제들을 해결하기 위해 백색 보조 띠를 이용한 정합 방법을 제안한다.
Fig. 7. Illumination problem.
3. 백색 보조 띠 기반의 정합
3.1 제안한 알고리즘의 개요
제안하는 알고리즘은 백색 보조 띠라는 보조적인 패턴을 정의하고, 이를 이용해 컬러 코드 기반의 정합을 용이하게 하는 방법이다. 제안하는 방법은 Fig.8의 순서로 진행된다. 프로젝션을 하지 않은 상태에서 획득한 영상을 원영상(Original image), 백색광(White solid) 투영 후 획득한 영상을 백색 영상(Whitesolid image)으로 정의한다. 원영상과 백색 영상의 영상 빼기를 통해 프로세싱 관심영역(Processing ROI)을 설정한다. 이후 백색 보조 띠(White auxiliary stripe)를 이용해 시차 관심영역(Disparity ROI)을 설정한다. 이는 컬러 코드를 용이하게 추출하기 위해서 설정하는 것으로 뒤에서 자세히 설명한다. 컬러 코드를 추출할 때는 미리 정의된 시차 관심 영역 내에서만 추출하기에 잘못 추출되는 경우가 적다. 본 논문에서 컬러 코드는 앞서 2.3절에서 소개한 드 브루인 수열기반의 패턴을 이용하였다. 컬러 코드 추출 후에는 2.3절에서 소개한 고유한 코드 값을 할당하는 디코딩 작업과 언래핑 작업을 거친 후 정합을 수행한다.
Fig. 8. Flowchart of the proposed algorithm.
3.2 백색 보조 띠의 구성과 적응적 임계값 적용 기반의 추출
백색 보조 띠는 컬러로 구성된 패턴의 획득을 용이하기 위해 추가적으로 투영되는 패턴이다. 백색 보조 띠의 구성은 컬러 코드의 패턴과 동일한 위치와 너비를 가지는 백색의 줄무늬로 구성된 패턴이다. Fig. 9의 (a)는 RGB를 원소로 가지는 드 브루인 수열이고, (b)는 제안한 백색 보조 띠이다.
Fig. 9. Structure of white auxiliary stripe. (a) De bruijn sequence. (b) White auxiliary stripe.
백색 보조 띠는 시차 관심영역을 설정하는데 이용된다. Fig. 9의 (a)와 같은 컬러 패턴을 여러 색상을 포함하는 대상체에 투영하고, 그 패턴 내에서 red 라인, blue 라인, green 라인의 정확한 위치를 구분하기는 어려운 문제이다. 이러한 문제를 단순하게 하는 것이 백색 보조 띠이다. 백색 보조 띠는 색상이 아닌 밝기로만 라인을 구분하여 패턴 획득이 상대적으로 용이하다.
프로젝터와 카메라 사이의 별도의 밝기 보정 없이 효율적으로 패턴을 백색 보조 띠를 추출하기 위해 적응적 임계값 적용(Adaptive threshold)을 이용한다. 적응적 임계값 적용은 하나의 임계값이 아닌 다수의 임계값을 이용하는 방법이다. 하나의 임계값을 이용할 경우 Fig. 10과 같은 문제가 발생한다. 이러한 문제는 앞서도 언급한 프로젝터가 가지는 밝기의 비선형성에 의해 발생한다. 임계값을 낮게 설정하면, 중앙 부분의 블룸(bloom) 때문에 제대로 된 라인을 추출하기가 어렵다. 반대로 임계값을 높게 설정하면, 중앙 부분은 상대적으로 잘 추출이 되지만, 가장자리의 라인은 획득이 어려워진다. 이러한 문제를 해결하기 위해 본 논문에서는 적응적 임계값 적용을 이용한다.
Fig. 10. Problem of one threshold value.
적응적 임계값 적용은 구역을 나누어 임계값을 설정하는 방법으로 Fig. 11과 같은 순서로 진행된다. 3.1절에서 언급한 프로세싱 관심 영역을 적당한 크기의 구역들로 나눈다. 이 구역들을 기반으로 임계값이 설정된다. 본 연구에서는 25픽셀씩 구역을 나누었다. 주어진 구역 내에서 평균을 구하고, 편의상 전체 평균이라고 명명한다. 주어진 구역 내에서 전체 평균보다 큰 값들을 하이 그룹(High group)과 로우 그룹(Low group)으로 구분한다. 하이 그룹과 로우 그룹의 각각의 평균을 \(m(H G), m(L G)\)라고 한다. 이 두 값의 차가 일정 \(T H_{f a r}\)보다 큰 지 작은 지에 따라 구역 내 임계값\(\left(T H_{ {adaptive}}\right)\)이 설정된다. \(T H_{f a r}\)는 미리 정의된 상수이다. \(m(HG)\)와 \(m(LG)\)의 차가 \(T H_{f a r}\)보다 크면 전체 평균을 \(T H_{ {adaptive}}\)값으로 이용하고, \(m(HG)\)와 \(m(LG)\)의 차가 \(T H_{f a r}\)보다 작으면 주변 구역에 있는\(T H_{ {adaptive}}\)값을 이용한다. 이 과정을 개의 구역만큼 수행하게 된다.
Fig. 11. Adaptive threshold flow chart.
이와 같이 적응적 임계값을 설정하는 이유는 Fig.12와 같다. 특정 구역 내 픽셀의 대부분이 라인으로 구성되거나 라인이 아닌 성분으로 구성되는 경우 그 밝기 값에 대한 빈도는 Fig. 12의 (a)에서와 같이 단봉의 형태로 나타난다. 만약 라인으로만 구성되어 있다면 구역 내의 전체 픽셀이 라인으로 임계값이 적용되어야 하고, 라인이 아닌 것으로 구성되어 있다면 전체 픽셀이 라인이 아닌 것으로 임계값 적용이 되어야 한다. 하지만 해당 구역의 전체 평균값은 이러한 임계값 적용을 수행하기 위한 적절한 기준값이 될 수 없다. 반면 라인과 라인이 아닌 픽셀이 적절히 섞여 있는 구역에 대해서는 Fig. 12의 (b)에서와 같이하이 그룹과 로우 그룹이 확연히 구분되는 쌍봉의 형태가 나타난다. 이러한 구역에서는 전체 평균을 통해 라인과 라인이 아닌 영역을 효율적으로 구분할 수 있다. 적응적 임계값 적용에서는 특정 구역이 단봉인지 쌍봉인지의 구분을 위해 하이 그룹과 로우그룹 각각의 평균에 대한 차를 이용한다. 즉, 하이그룹과 로우 그룹 각각의 평균에 대한 차는 Fig. 12(a)와 같은 단봉의 경우보다 (b)와 같은 쌍봉의 경우 더 크게 나타난다.
Fig. 12. Reason for using high group and low group concept. (a) Area of line or non line. (b) Area of line and non line.
Fig. 13은 적응적 임계값 적용의 결과이다. (a)는 입력 영상이고, (b)는 단일의 임계값을 이용한 결과, (c)는 적응적 임계값 적용을 이용한 결과이다. Fig.13에서와 같이 (b)에서는 가장자리와 가운데 부분에서 라인 추출이 어렵지만, (c)에서는 전체 영역에서 적절히 라인이 추출되었다.
Fig. 13. Adaptive threshold result. (a) Input image. (b) Normal threshold result. (c) Adaptive threshold result.
추출된 라인이 단일 픽셀 폭을 가지지 않을 경우 같은 코드를 가지는 영역이 많아져 정확한 정합이 어려워진다. 이상적인 경우 프로젝터에서 단일 픽셀로 투영시켰을 때 영상에서도 단일 픽셀 폭을 가지는 라인으로 획득되어야 하지만, 실제로는 여러 픽셀로 획득된다. 따라서 단일 픽셀 폭의 라인을 추출하기위해 세선화를 수행한다. 세선화를 통해 단일 픽셀의 라인을 추출하면 최종적으로 Fig. 14와 같이 시차 관심영역을 획득하게 된다.
Fig. 14. Disparity ROI.
3.3 컬러 코드 획득
컬러 코드의 획득은 간단히 시차 관심영역에 해당하는 픽셀 위치만을 컬러 코드로 획득하고 이외의 위치의 컬러 코드는 무시한다. Fig. 15는 컬러 코드를 추출한 결과를 확대한 것이다. (a)는 추출하기 전 컬러 코드이고, (b)는 시차 관심영역을 기반으로 추출한 컬러 코드로 실제 정합에 사용되는 영역이다. 이 영역을 이용해 앞서 2.3절에서 설명한 것처럼 고유코드를 부여하고, 정합을 수행한다. 제안하는 백색보조 띠를 이용할 경우 기존의 방법에 비해 컬러 코드 획득이 용이하다. 이는 백색 보조 띠를 이용해 시차 관심 영역으로 설정된 영역 내에서 red, blue, green을 분류하는 문제이기 때문이다.
Fig. 15. Color code extraction. (a) Color code. (b) Extraction result
4. 실험 결과 및 고찰
4.1 실험 환경 및 평가
제안한 정합 방법의 성능을 평가하기 위해 무색 시편의 단차 측정과 컬러 시편의 단차 측정, 가면의 형상 측정에 대한 실험을 수행하였다. 전체적인 실험의 구성은 Fig. 16과 같이 카메라 2대와 프로젝터 1대로 구성되어 있다.
Fig. 16. Experimental environment.
시편의 자세한 형태는 Fig. 17과 같다. 상대적으로 앞으로 나와 초록색으로 표시된 부분은 프론트 평면(Front plane)이고, 상대적으로 뒤에 있어 빨간색으로 표시된 부분은 베이스 평면(Base plane)이다. 프론트 평면과 베이스 평면 사이의 거리는 1 mm이고, 두 평면 사이의 거리를 측정하는 실험을 수행한다. 거리를 측정하는 방법은 얻어진 3차원 정보들을 두개의 평면으로 근사시키고, 이 두 평면 사이의 거리를 측정하는 방식이다. 여기서 하나의 평면은 프론트 평면의 점들을 이용해 평면 근사 시키고, 또 다른 하나의 평면은 베이스 평면의 점들을 이용해 평면 근사시킨다.
Fig. 17. Sample for depth evaluation.
4.2 무색 시편 단차 측정 실험
시편을 이용해 두 평면 사이의 거리를 측정하는 실험을 수행하였다. Fig. 18은 각 실험 결과의 시차정보를 이용하여 3차원 복원(3D reconstruction)한 결과이다. 빨간 색 점군은 베이스 평면에 해당하는 점군이고, 초록색 점군은 프론트 평면에 해당하는 점군이다. (a)는 수동적 스테레오 정합 기법 중 하나인 신뢰전파기법을 이용한 결과이다. 수동적 스테레오정합의 특성상 질감도가 없는 영역에서는 오정합이 빈번하게 발생되어 복원 결과가 좋지 않은 것을 확인할 수 있다. (b)-(d)는 능동적 스테레오 정합 기법으로 각각 이진 코드, 드 브루인 수열, 제안한 방법이다. 드 브루인 수열을 이용한 방법은 평면이 불균일하게 근사된 것을 확인할 수 있다. 반면 이진 코드와 제안된 방법은 드 브루인과 달리 정확한 복원 결과를 보인다.
Fig. 18. 3D reconstruction results. (a) Belief Propagation. (b) Binary code. (c) De bruijn. (d) Proposedmethod.
Table 1은 기존의 방법과 제안된 방법을 이용하여 Fig. 18의 두 평면 사이의 거리를 측정한 것이다. 신뢰전파기법을 이용한 경우, 시편의 질감도가 없기 때문에 대응점이 찾는 것이 어려워 오차가 가장 크게 발생하였다. 1 mm 단차를 측정한 것이지만 63.768 mm이라는 깊이가 측정되었다. 이진 코드를 이용한 경우, 2.601 mm의 깊이가 측정되었다. 이진 코드에서 1 mm를 정확히 측정하지 못하는 이유는, 프로젝터에서 투영시키는 Fig. 2와 같은 이진 패턴이 여러 픽셀로 구성되어 오차를 발생시킨다. 또한 프로젝터와 카메라간의 밝기 보정을 하지 않아 추가적인 오차가 발생한다. 드 브루인 수열을 이용한 경우, 12.161 mm로 측정되었다. 대상체에 투영되면서 발생하는 패턴의 색상적인 오차와 라인이 여러 픽셀로 획득되는 오차 등으로 인해 이진 코드보다 큰 오차가 발생하였다. 제안한 방법은 백색 보조 띠를 이용하여 시차 관심 영역을 정의하고 그 내에서 정확한 정합을 수행하였기에 앞서의 문제들을 극복하고 정확한 깊이 정보를 추정할 수 있다. 따라서 제안한 방법에서 1 mm에 가장 근사한 수치인 0.982 mm를 측정할 수 있다.
Table 1. Comparison of depth for proposed method and conventional method
4.3 컬러 시편 단차 측정 실험
컬러 패턴을 이용한 정합에 있어 대상체의 색상은 패턴 획득을 어렵게 해 오정합을 발생시킨다. 제안하는 방법의 색변화에 따른 정합 성능을 평가하기 위해, 여러 색상이 섞여있는 대상체에 대한 측정 실험을 수행하였다. 시편의 형태는 Fig. 19와 같이 기존시편에 RGB 세가지 색상을 대각선 방향으로 배치하였다.
Fig. 19. Sample for color change.
컬러를 사용하는 기존의 드 브루인 수열과 제안하는 방법의 성능을 비교하였다. Fig. 20은 각 방법으로 3차원 복원을 수행한 결과이다. (a)는 드 브루인 수열을 이용한 방법으로 프론트 평면과 베이스 평면이 교차하는 형태로 근사 되었다. 이는 오정합된 점들이 많아 평면 근사가 잘못 이루어진 경우이다. 반면 (b)의 경우 프론트 평면과 베이스 평면이 상대적으로 정확하게 획득되었다.
Fig. 20. 3D reconstruction results. (a) De bruijn. (b) Proposed method.
Table 2는 단차를 측정 결과이다. 기존 드 브루인 수열의 경우 11.526 mm가 측정되었다. 반면 제안한 방법은 백색 보조 띠를 이용하기에 라인을 찾는데 어려움이 없고, 찾아진 라인에서 RGB 중 하나의 컬러 코드를 할당하기에 코드가 훼손될 확률이 적다. 따라서 1mm에 근사한 1.1527 mm를 측정할 수 있었다.
Table 2. Comparison of De bruijn and proposed method with color change
4.4 가면 형상 복원 실험
앞서의 실험을 통하여 제안하는 방법의 단차 측정정밀도를 확인하였다. 평면이 아닌 물체에 대한 3차원 형상 복원 실험을 수행한다. Fig. 21의 (a)는 형상복원에 사용된 가면이고, (b)는 프로젝터가 투영되는 관심영역이다. (c)와 (d)는 기존의 드 브루인 수열을 이용한 방법이고, (e)와 (f)는 제안한 방법을 이용한 3차원 복원 결과이다. 가면의 정면인 (c)와 (e)를 비교하면 드 브루인 수열을 이용한 방법에서도 형상이 적절히 복원된 것으로 나타난다. 하지만 측면인 (d)와 (f)를 비교하면 드 브루인 방법은 코 부분이 튀어나오지 않고, 다소 평평하게 복원된 것을 확인할 수 있다. 반면 제안하는 방법에서는 코 부분이 튀어나오게 복원된 것을 확인할 수 있다.
Fig. 21. 3D reconstruction results of mask. (a) Mask. (b) Processing ROI. (c) De brujin of front view. (d) De brujin of side view. (e) Proposed method of front view. (f) Proposed method of side view.
5. 결 론
본 논문에서는 기존의 스테레오 정합 방법이 가지는 문제를 해결하고자 백색 보조 띠를 이용한 정합방법을 제안하였다. 기존 능동적 방법의 경우 수동적 방법에 비해 질감도를 높여 정합 정확도가 향상될 수 있지만, 프로젝터로 형성되는 구조광 패턴이 이상적이지 않아 발생하는 오차에 의해 정확도가 저하되는 단점이 있다. 제안하는 방법의 경우 백색 보조 띠를 이용하여 시차 관심 영역을 설정해 컬러 코드 추출을 용이하게 한다. 또한 백색 보조 띠 추출 시 적응적 임계값 적용을 이용하여 프로젝터의 밝기 보정을 필요로 하지 않는다. 실제 1 mm 단차를 가지는 시편의 두께를 측정하기 위해 시편의 프론트 평면과 베이스 평면을 평면 근사하여 그 사이의 거리를 측정하는 방법으로 성능을 평가하였다. 기존 방법들은 오차가 큰 반면 제안하는 방법은 1 mm에 가장 근사한 추정을 하였다. 평면이 아닌 가면 형상 복원 실험에 대해서도 제안하는 방법이 기존 드브루인 방법에 비해 좀 더 세밀한 표현이 가능해진 것을 확인하였다. 추후 연구 방향으로는 제안한 방법에 동적 프로그래밍(Dynamic programming, DP)이나 GPGPU 기반의 병렬화를 적용하여 고정된 대상체가 아닌 움직이는 물체에 대한 실시간 연산을 수행할 수 있을 것으로 예상한다.
References
- S.J. Kim, J.W. Kang, Y.G. Choe, S.U. Park, I.W. Shim, S.U. Ahn, et al., “The Development of Sensor System and 3D World Modeling for Autonomous Vehicle,” Journal of Institute of Control, Robotics and Systems, Vol. 17, No. 6, pp. 531-538, 2011. https://doi.org/10.5302/J.ICROS.2011.17.6.531
- J.H. Kim and Y.H. Ko, “Multibaseline based Stereo Matching Using Texture Adaptive Belief Propagation Technique,” Journal of the Institute of Electronics and Information Engineers, Vol. 50, No. 1, pp. 75-85, 2013. https://doi.org/10.5573/ieek.2013.50.1.075
- H.H. Jeon and Y.H. Ko, “LiDAR Data Interpolation Algorithm for 3D-2D Motion Estimation,” Journal of Korea Multimedia Society, Vol. 20, No. 12, pp. 1865-1873, 2017. https://doi.org/10.9717/KMMS.2017.20.12.1865
- J.H. Kim and Y.H. Ko, “Belief Propagation Stereo Matching Technique Using 2D Laser Range Finder,” Journal of Korea Multimedia Society, Vol. 17, No. 2, pp. 132-142, 2014. https://doi.org/10.9717/kmms.2014.17.2.132
- W.K. Jang, C.S. Je, Y.D. Seo, and S.W Lee, “Structured-light Stereo: Comparative Analysis and Integration of Structured-light and Active Stereo for Measuring Dynamic Shape,” Optics and Lasers in Engineering, Vol. 51, No. 11, pp. 1255-1264, 2013. https://doi.org/10.1016/j.optlaseng.2013.05.001
- R. Jain, R. Kastrui, and B.G. Schunck, Machine vision, McGraw-Hill, New York, USA, 1995.
- J. Geng, “Structured-light 3D Surface Imaging: A Tutorial,” Advances in Optics and Photonics, Vol. 3, No. 2, pp. 128-160, 2011. https://doi.org/10.1364/AOP.3.000128
- D. Eigen, C. Puhrsch, and R Fergus, "Depth Map Prediction from a Single Image Using a Multi-scale Deep Network," Proceedings of Advances in Neural Information Processing Systems, pp. 2366-2374, 2014.
- A.C.S. Kumar, S.M. Bhandarkar, and M. Prasad, "Monocular Depth Prediction Using Generative Adversarial Networks," Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops, pp. 300-308, 2018.
- R. Hartley and A. Zisserman, Multiple View Geometry in Computer Vision, Cambridge University Press, Cambridge, UK, 2003.
- J. Sun, N.N. Zheng, and H.Y. Shum, “Stereo Matching Using Belief Propagation,” Pattern Analysis and Machine Intelligence IEEE Transactions on, Vol. 25, No. 7, pp. 787-800, 2003. https://doi.org/10.1109/TPAMI.2003.1206509
- G.G. Park, S.H. Baek, and S.Y. Park, "Enhancement of 3D Scanning Performance by Correcting the Photometric Distortion of a Micro Projector-Camera System," Journal of Institute of Control, Robotics and Systems, No. 19, Vol. 3, pp. 219-226, 2013. https://doi.org/10.5302/J.ICROS.2013.12.1780
- L. Zhang, B. Curless, and S.M. Seitz, "Rapid Shape Acquisition Using Color Structured Light and Multi-pass Dynamic Programming," Proceeding of 3D Data Processing Visualization and Transmission First International Symposium on, pp. 24-37, 2002.
- L. Zhang, B. Curless, and S.M. Seitz, "Spacetime Stereo: Shape Recovery for Dynamic Scenes," Proceeding of Computer Vision and Pattern Recognition, IEEE Computer Society Conference on, Vol. 2, 2003.
- J.L. Posdamer and M.D. Altschuler, “Surface Measurement by Space-encoded Projected Beam Systems,” Computer Graphics and Image Processing, Vol. 18, No. 1, pp. 1-17, 1982. https://doi.org/10.1016/0146-664X(82)90096-X
- F.J. MacWilliams and N.J.A. Sloane, “Pseudorandom Sequences and Arrays,” Proceedings of the IEEE, Vol. 64, No. 12, pp. 1715-1729, 1976. https://doi.org/10.1109/PROC.1976.10411
- H. Fredricksen, “A Survey of Full Length Nonlinear Shift Register Cycle Algorithms,” Society for Industrial and Applied Mathematics Review, Vol. 24, No. 2, pp. 195-221, 1982.
- H.J. Lee, The Structured Color Light Based Range Sensing Robust to Object Color, Master's Thesis of Sogang University, 2005.