KR20140125039A - 고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치 - Google Patents

고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치 Download PDF

Info

Publication number
KR20140125039A
KR20140125039A KR20130042620A KR20130042620A KR20140125039A KR 20140125039 A KR20140125039 A KR 20140125039A KR 20130042620 A KR20130042620 A KR 20130042620A KR 20130042620 A KR20130042620 A KR 20130042620A KR 20140125039 A KR20140125039 A KR 20140125039A
Authority
KR
South Korea
Prior art keywords
matching
cost function
stereo matching
clock
image
Prior art date
Application number
KR20130042620A
Other languages
English (en)
Other versions
KR101460699B1 (ko
Inventor
서영호
김동욱
Original Assignee
광운대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 광운대학교 산학협력단 filed Critical 광운대학교 산학협력단
Priority to KR1020130042620A priority Critical patent/KR101460699B1/ko
Publication of KR20140125039A publication Critical patent/KR20140125039A/ko
Application granted granted Critical
Publication of KR101460699B1 publication Critical patent/KR101460699B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)

Abstract

제1 및 제2 영상의 스테레오 정합을 위하여, K×K 크기의 정합 윈도우의 비용함수를 계산하는 병렬 스테레오 정합 연산 장치에 관한 것으로서, 적어도 K개의 수평 연산기를 포함하고, 상기 수평 연산기는 연속으로 병렬로 연결된 적어도 K개의 연산 유닛을 포함하고, 각 연산 유닛은 1×K 크기로 정합되는 제1 및 제2 영상 부분의 비용함수를 연산하되, 현재 클럭에서 i번째 연산 유닛이 연산하는 제1 및 제2 영상 부분(이하 현재클럭 정합 부분)은 현재 클럭의 이전 클럭에서 i-1번째 연산 유닛이 연산하는 제1 및 제2 부분(이하 이전 클럭 정합 부분)에 비하여 각각 한 화소만큼 이동한 부분이고, 현재 클럭에서 i번째 연산 유닛은 이전 클럭에서 연산된 i-1번째 연산 유닛의 연산 결과를 이용하여 연산하는 구성을 마련한다.
상기와 같은 병렬 스테레오 정합 연산 장치에 의하여, 낮은 클럭 주파수에서도 실시간 처리가 가능하고, 고화질(HD) 스테레오 영상을 빠르게 처리할 수 있다.

Description

고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치 { A Parallel Hardware System for High-Performance Stereo Matching Calculation }
본 발명은 스테레오 정합 연산을 수행하되, 중간 연산 결과를 재사용함으로써 하드웨어의 연산량과 메모리 접근수를 최소화하는 스테레오 정합 연산 셀의 구조를 구성하고, 상기 셀 구조를 병렬적으로 확장하여 탐색 범위 내의 모든 비용함수를 동시에 연산할 수 있는 병렬 스테레오 정합 연산 장치에 관한 것이다.
스테레오 비전은 3차원 거리 정보를 획득하여 이용하기 위한 가장 전통적이면서 가장 효율적인 방법이다. 스테레오 비전은 최근 스마트카의 자동 운행, 지능형 로봇, 인간-컴퓨터간의 인터렉티브 기능, 혹은 국방 등에서 활발하게 이용되고 있다.
이러한 스테레오 비전에서 가장 중요한 요소 중의 하나는 실시간으로 신뢰할 수 있는 깊이정보를 획득하는 것이다. 깊이정보는 공간상에서 카메라 시점을 기준으로 대상 물체까지의 거리로 정의된다. 깊이정보 추출의 기본원리는 각각의 눈에서 따로 관찰되는 물체의 상을 대뇌에서 분석 및 종합하여 물체의 원근을 인지하는 인각 시각 시스템(Human Visual System, HVS)에 근거를 두고 있다. 망막에 맺힌 각각 다른 물체의 상을 공학적으로 해석한 것이 스테레오 영상(stereoscopic image)이다[비특허문헌 1-3].
최근 스테레오 비전은 다양한 연구가 수행되고 있다. 스테레오 영상으로부터 고품질의 변위의 획득, 객체 혹은 패턴 인식, 최적의 입체감 획득, 디스플레이, 스테레오 영상의 압축, 그리고 스테레오 정합의 고속화 등의 분야가 연구되고 있다. 여기에서는 스테레오 정합 연산의 고속화를 위한 분야를 다루고자 한다.
스테레오 정합은 영상의 모든 화소에 대해서 탐색 범위만큼의 비용함수 계산이 필요하기 때문에 연산량이 상당히 많은 과정이다[비특허문헌 4]. 알고리즘에 따라서 차이는 있지만 소프트웨어를 이용하여 구현할 경우에 초당 1 프레임의 변위 영상을 얻는 것도 힘들다[비특허문헌 5]. 따라서 실시간의 스테레오 비전 시스템을 구성하기 위해서는 스테레오 정합 과정을 하드웨어를 이용하여 구현해야 한다[비특허문헌 6-13].
스테레오 정합을 고속으로 수행하기 위해서 하드웨어를 이용하여 다양한 연구가 진행되었다[비특허문헌 6-10]. 최근에는 범용 그래픽 프로세싱 유닛(general purpose graphic processing unit, GPGPU)이 발달함에 따라서 GPGPU를 이용한 연구도 활발히 이루어지고 있다[비특허문헌 11-13]. 스테레오 비전을 위한 전용 칩을 구현하는 것은 ASIC(application specific integrated circuit) 방식과 FPGA 방식이 있다.
Kimura는 SAZAN()이라는 convolver-기반의 9시점 스테레오 머신을 제안하였다[비특허문헌 6]. SAZAN은 320×240 크기의 영상과 25 화소의 탐색범위인 경우에 20fps(frame per sec)의 성능을 보인다. Kuhn은 SSD(sum of squared differences)와 census 변환을 이용한 영역기반 방식과 폐색영역 검출 기법을 적용하여 고속의 면적 효율적인 ASIC 칩을 개발하였다[비특허문헌 7]. 개발된 칩은 256×192 크기의 영상에 대해서 25 화소의 탐색범위를 적용했을 경우에 약 50fps의 속도로 변위영상을 생성할 수 있다.
Darabiha는 local weighted phase-correlation이라는 multi-resolution, multi-orientation phase-기반의 알고리즘을 적용하여 깊이를 측정할 수 있는 Xilinx FPGA 기반의 하드웨어를 구현하였다[비특허문헌 8]. 이 하드웨어는 256×360 크기의 영상에 대해서 20 화소의 탐색을 수행할 경우에 30fps의 성능으로 깊이 영상을 생성할 수 있다. Jia는 3시점의 카메라를 이용하여 고해상도의 변위영상을 생성할 수 있는 MSVM(miniature stereovision machine)-III라는 전용 시스템을 개발하였다[비특허문헌 9]. MSVM-III은 640×480 크기의 영상에 대해서 64 화소의 탐색을 수행할 경우에 약 30fps의 성능으로 깊이 영상을 생성할 수 있다. 이 시스템은 FPGA를 기반으로 하고 있는 60MHz의 속도로 동작할 수 있고, 카메라와 일체형 모듈로 개발되었다.
Woodfill은 ASIC 형태의 DeepSea 프로세서를 이용하여 PCI 보드 형태의 DeepSea 스테레오 비전 시스템을 구현하였다[비특허문헌 10]. 대기지연시간과 전력소모가 낮으면서 높은 프레임율로 스테레오 영상을 동시에 처리하도록 하였다. 이 시스템은 512×480 크기의 영상에 대해서 52 화소의 탐색을 수행할 경우에 약 200fps의 성능으로 깊이 영상을 생성할 수 있다. Jin은 보정, 스테레오 정합, 및 후처리를 수행할 수 있는 스테레오 비전 시스템을 개발하였다[비특허문헌 11]. 이 시스템은 FPGA를 사용하고 있고 보드 형태이다. Census 변환을 이용하여 스테레오 정합을 수행하고, 부-화소 기반의 정밀도를 갖는다. 640×480 크기의 영상에 대해서 52 화소의 탐색을 수행할 경우에 약 230fps의 성능으로 깊이 영상을 생성할 수 있다.
이러한 칩셋을 구현하는 연구들과 함께 최근에는 GPU를 이용한 연구들도 많이 수행되고 있다. GPU를 이용한 방법은 전용 칩을 구현하는 방식에 비해 알고리즘의 수정과 구현이 용이하다. 따라서 개발기간이 짧고 개발 비용이 적은 장점을 갖는다. 그러나 전용 칩을 구현하는 방법에 비해서 입력 영상의 크기에 비해서 초당 처리율은 낮고, CPU의 도움이 필요한 단점이 있다[비특허문헌 12][비특허문헌 13].
따라서 스테레오 비전을 위해 전용 칩을 구현하기 위한 VLSI 구조가 절실하다. 특히, 사용자의 요구와 적용하는 알고리즘에 따라서 다양한 동작을 할 수 있는 고성능 프로세서가 필요하다.
[비특허문헌 1] D. Scharstein and R. Szeliski, "A taxonomy and evaluation of dense two-frame stereo correspondence algorithms," International Journal of Computer Vision, Vol. 47, Issue 1-3, pp. 7-42, April 2002. [비특허문헌 2] M. Z. Brown, D. Burschka, and G. D. Hager, "Advances in computational stereo," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 25, Issue 8, pp. 993-1008 Aug. 2003. Y. Wang, J. Ostermann, and Y. Q. Zhang, "Video Processing and Communications," Prentice hall, 2002. [비특허문헌 4] J. Woodfill, B. von Herzen, and R. Zabih, Frame-rate robust stereo on a PCI board: Available http://www.cs.cornell.edu/rdz/Papers/ Archive/fpga.pdf. [비특허문헌 5] J. Sun, N. N. Zheng, and H. Y. Shum,"Stereo matching using belief propagation," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 27, Issue 25, pp. 787-800, July 2003. [비특허문헌 6] S. Kimura, T. Shinbo, H. Yamaguchi, E. Kawamura, and K. Nakano, ""A convolver-based real-time stereo machine (SAZAN),"" in Proc. IEEE Comput. Soc. Conf. Comput. Vision Pattern Recognit., Fort Collins, CO, vol. 1. Jun. 1999, pp. 457-463. [비특허문헌 7] M. Kuhn, S. Moser, O. Isler, F. K. Gurkaynak, A. Burg, N. Felber, H. Kaeslin, and W. Fichtner, ""Efficient ASIC implementation of a real-time depth mapping stereo vision system,"" in Proc. IEEE Int. Circuits Syst. (MWSCAS '03), Cairo, Egypt, vol. 3. Dec. 2003, pp. 1478-481. [비특허문헌 8] A. Darabiha, J. Rose, and W. J. Maclean, "ideo-rate stereo depth measurement on programmable hardware,"in Proc. IEEE Comput. Soc. Conf. Comput. Vision Pattern Recognit., Madison, WI, vol. 1. Jun. 2003, pp. 203-10. [비특허문헌 9] Y. Jia, X. Zhang, M. Li, and L. An, "A miniature stereo vision machine (MSVM-III) for dense disparity mapping," in Proc. 17th Int. Conf. Pattern Recognit., Cambridge, U.K., vol. 1. Aug. 2004, pp. 728-731. [비특허문헌 10] J. I. Woodfill, G. Gordon, and R. Buck, ""Tyzx DeepSea high speed stereo vision system,"" in Proc. IEEE Comput. Soc. Workshop Real-Time 3-D Sensors Use Conf. Comput. Vision Pattern Recog., Washington D.C., Jun. 2004, pp. 41-46. [비특허문헌 11] S. Jin, J. Cho, X. D. Pham, K. M. Lee, S.-K. Park, M. Kim, and J. W. Jeon, "FPGA Design and Implementation of a Real-Time Stereo Vision System," IEEE Transactions on Circuits and Systems for Video Technology, Vol. 20, No. 1, pp. 15-26, Jan. 2010. [비특허문헌 12] Sang Hwa Lee and Siddharth Sharma, "Real-Time Disparity Estimation Algorithm for Stereo Camera Systems," IEEE Transactions on Consumer Electronics, Vol. 57, No. 3, pp.1018-1026, Aug. 2011. [비특허문헌 13] J˛edrzej Kowalczuk, Eric T. Psota, and Lance C. Pㅄerez, "Real-Time Stereo Matching on CUDA Using an Iterative Refinement Method for Adaptive Support-Weight Correspondences," IEEE Transactions on Circuit and Systems for Video Technology, Vol. 23, NO. 1, pp.94-104, Jan. 2013. [비특허문헌 14] R. C. Gonzales and R. E. Woods, "Digital image processing," Prentice Hall, 2nd edtion, 2001.
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 스테레오 정합 연산을 수행하되, 중간 연산 결과를 재사용함으로써 하드웨어의 연산량과 메모리 접근수를 최소화하는 스테레오 정합 연산 셀의 구조를 구성하고, 상기 셀 구조를 병렬적으로 확장하여 탐색 범위 내의 모든 비용함수를 동시에 연산할 수 있는 병렬 스테레오 정합 연산 장치를 제공하는 것이다.
특히, 본 발명의 목적은 비용함수로 SAD를 이용하여 하드웨어 구조를 가지고, 다양한 비용함수를 사용할 수 있는 병렬 스테레오 정합 연산 장치를 제공하는 것이다.
또한, 본 발명의 목적은 비용함수를 연산하는 단위 하드웨어(셀)를 구성하고, 이 셀을 단순히 확장하고 FIFO로 구성된 탐색범위의 크기를 갖는 라인 버퍼를 조합하면 다양한 크기의 스테레오 정합을 수행할 수 있는 병렬 스테레오 정합 연산 장치를 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명은 제1 및 제2 영상의 스테레오 정합을 위하여, K×K 크기의 정합 윈도우의 비용함수를 계산하는 병렬 스테레오 정합 연산 장치에 관한 것으로서, 적어도 K개의 수평 연산기를 포함하고, 상기 수평 연산기는 연속으로 병렬로 연결된 적어도 K개의 연산 유닛을 포함하고, 각 연산 유닛은 1×K 크기로 정합되는 제1 및 제2 영상 부분의 비용함수를 연산하되, 현재 클럭에서 i번째 연산 유닛이 연산하는 제1 및 제2 영상 부분(이하 현재클럭 정합 부분)은 현재 클럭의 이전 클럭에서 i-1번째 연산 유닛이 연산하는 제1 및 제2 부분(이하 이전 클럭 정합 부분)에 비하여 각각 한 화소만큼 이동한 부분이고, 현재 클럭에서 i번째 연산 유닛은 이전 클럭에서 연산된 i-1번째 연산 유닛의 연산 결과를 이용하여 연산하는 것을 특징으로 한다.
또, 본 발명은 병렬 스테레오 정합 연산 장치에 있어서, 상기 i번째 연산 유닛은 현재 클럭 정합 부분과 중복되는 이전 클럭 정합 부분의 화소 단위의 비용함수를 상기 i-1번째 연산 유닛으로부터 입력받고, 중복되지 않은 부분의 화소의 비용함수를 구하고, 구한 비용함수와 입력받은 비용함수들을 누적하여 현재 클럭 정합 부분의 비용함수를 구하는 것을 특징으로 한다.
또, 본 발명은 병렬 스테레오 정합 연산 장치에 있어서, 상기 i번째 연산 유닛은, j번째 클럭에서, Li+1, Rj+1 을 입력받고, i-1번째 연산 유닛으로부터 j-1번째 클럭에서 연산된 |Li-(K-2)-Rj-(K-2)|, |Li-(K-3)-Rj-(K-3)|, ..., |Li-1-Rj-1|, |Li-Rj|을 입력받아, |Li+1-Rj+1|와 |Li-(K-2)-Rj-(K-2)|+|Li-(K-3)-Rj-(K-3)| + ... + |Li-Rj|+|Li+1-Rj+1|을 연산하고, |Li-(K-2)-Rj-(K-2)|+|Li-(K-3)-Rj-(K-3)| + ... + |Li-Rj|+|Li+1-Rj+1|을 출력하고, i+1번째 연산 유닛으로, j+1 클럭에서 |Li-(K-3)-Rj-(K-3)|,|Li-(K-4)-Rj-(K-4)|, ... , |Li-Rj|, |Li+1-Rj+1|을 출력하는 것을 특징으로 한다.
또, 본 발명은 병렬 스테레오 정합 연산 장치에 있어서, 상기 연산 유닛은 1×K 보다 작은 크기의 정합되는 제1 및 제2 영상 부분의 비용함수도 연산하는 누적기를 추가적으로 포함하는 것을 특징으로 한다.
또, 본 발명은 병렬 스테레오 정합 연산 장치에 있어서, 상기 적어도 K개의 수평 연산기는 수직으로 병렬로 연결되어, 각 수평 연산기는 연산하는 정합 부분에서 x좌표는 동일하고 y좌표는 하나씩 증가하여 연산하는 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 병렬 스테레오 정합 연산 장치에 의하면, 낮은 클럭 주파수에서도 실시간 처리가 가능하고, 고화질(HD) 스테레오 영상을 빠르게 처리할 수 있는 효과가 얻어진다. 특히, 본 발명의 실험에 의하면, FPGA(field programmable gate array) 환경에서 최소 250Mhz의 클록 주파수에서 동작이 가능하고, HD 스테레오 영상을 120fps의 성능으로 처리할 수 있는 결과를 얻었다.
도 1은 본 발명의 스테레오 정합을 위하여, 비용함수를 이용한 유사성 판단을 설명하기 위한 예시도.
도 2는 본 발명의 스테레오 정합을 위한 비용함수의 수행시간 비교에 대한 표.
도 3은 본 발명의 스테레오 정합을 위한 비용함수의 오차율 비교에 대한 표.
도 4는 본 발명의 스테레오 정합을 위한 윈도우의 크기 변화에 대한 변이의 예시도.
도 5는 본 발명의 스테레오 정합을 위한 비용함수의 연산 과정에 대한 예시도.
도 6은 도 5의 비용함수 연산 과정을 순서대로 나타낸 표.
도 7은 도 6의 비용함수 연산 과정을 재배치하여, 중간 연산 결과를 공유하는 연산 과정을 순서대로 나타낸 표.
도 8은 본 발명의 제1 실시예에 따른 스테레오 정합을 위한 연산 유닛에 대한 구성도.
도 9는 본 발명의 제2 실시예에 따른 스테레오 정합을 위한 수평 연산기(stereo matching horizontal calculator, SMHC)의 대한 구성도.
도 10은 본 발명의 제2 실시예에 따른 다중 정합창에 대한 연산을 위한 확장된 수평 연산기(SMHC)의 대한 구성도.
도 11은 본 발명의 제3 실시예에 따른 2차원(2D) 영역의 스테레오 정합을 위한 스테레오 정합 연산기에 대한 구성도.
도 12는 본 발명의 제3 실시예에 따른 3×3 크기의 SAD 연산을 위한 화소 예시로서, (a) 왼쪽, (b) 오른쪽 영상의 화소를 나타낸 예시도.
도 13은 본 발명의 제3 실시예에 따른 3×3 정합창을 이용한 연산 순서의 예시를 나타낸 표.
도 14는 본 발명의 제3 실시예에 따른 3×3 정합창을 이용한 병렬 연산 순서의 예시를 나타낸 표.
도 15는 본 발명의 제3 실시예에 따른 2차원 비용 함수 연산을 위한 하드웨어 동작을 나타내는 도면.
도 16은 본 발명의 제4 실시예에 따른 스테레오 정합 프로세서에 대한 구성도.
도 17은 본 발명의 제4 실시예에 따른 탐색범위의 프로그래밍을 위한 라인 버퍼에 대한 구성도.
도 18은 본 발명의 제4 실시예에 따라 프로그래밍 가능한 정합창의 종류를 타나낸 표.
도 19는 본 발명의 실험에 따른 하드웨어 자원을 나타낸 표.
도 20은 본 발명의 실험에 따른 성능을 나타낸 표.
도 21은 본 발명의 실험에 따른 메모리 접근 수를 나타낸 표.
도 22는 본 발명의 실험에 따른 구현한 하드웨어의 시뮬레이션 파형에 대한 예시도
도 23은 본 발명의 실험에 따른 스테레오 정합 결과로서, (a) 원래 변위, (b) 계산한 변위의 영상.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
먼저, 본 발명에서 하드웨어로 구현하고자 하는 스테레오 정합에 대하여 설명한다.
스테레오 정합은 좌우의 두 영상 중에서 한 영상을 기준영상으로 정하고 다른 영상을 대상영상으로 정한 뒤 기준영상의 특정 화소 혹은 영역을 대상영상에서 찾는 과정이다. 도 1에는 우측 영상에서 정합 윈도우로 정의된 특정 영역과 유사한 영역을 좌측 영상에서 탐색하는 것을 나타냈다. 유사성을 찾기 위해서 최소화 비용함수를 이용한다. 탐색구간에서 각각의 비용을 구한 뒤 최소의 비용을 갖는 변위를 변이벡터로 정의한다. 스테레오 정합 기법을 소프트웨어로 구현하여 각 비용함수 및 정합 윈도우의 크기가 갖는 특성을 분석하였다.
이때, 두 영상에서 대응점을 찾는 과정은 한 영상에서 특정 화소를 기준으로 인접 화소들의 집합을 의미하는 정합 윈도우와 유사성이 높은 윈도우를 다른 영상에서 찾는 것이다. 이러한 기법을 블록 정합 알고리즘(Block Matching Algorithm, BMA)이라 한다.
유사성에 대한 정량적인 판단기준은 일반적으로 비용함수로 정의된다. 비용함수는 비용값에 대한 선택기준이 최소인지 최대인지에 따라서 SAD(sum of absolute differences), SSD, 및 MAD(minimization of absolute deviation) 등의 최소화 비용 함수와 NCC(normalized cross correlation) 및 MNCC(modified normalized cross correlation)와 같은 최대화 비용 함수로 구분된다[비특허문헌 14].
비용함수는 특성과 변이정보에 대한 효과가 상이하다. 일반적으로 상관도 기반의 비용함수가 높은 정확도를 갖지만 수행시간이 길다는 단점으로 인하여 선택적으로 사용된다.
도 2는 비용함수에 따라 수행시간을 측정한 결과를 나타내고 있다. 전체적으로 살펴보면 SAD 비용함수에 의한 연산이 가장 짧은 수행시간을 갖는다. 도 3은 비용함수에 따른 변이정보의 에러율이다. 변이정보의 에러율은 추출된 변이영상과 원래의 영상을 비교할 때 일치하지 않는 화소의 개수이다. 도 3의 수행시간은 S/W를 구동하는 PC의 환경에 따라서 변경될 수 있다.
한편, 정합 윈도우의 크기에 따른 정합 결과의 효과가 달라질 수 있다.
도 4는 3×3 크기와 9×9 크기의 정합 윈도우를 사용하여 실험영상의 190번째 주사선에 대한 비용을 누적한 그림이다. 흰 선으로 표시된 부분은 최소비용을 추적하여 표시한 것이고, 높이는 각 위치에서의 변이정보에 해당한다.
A 영역과 B 영역은 각기 다른 특성을 갖는다. A 영역은 텍스쳐가 균일하여 비용함수의 변화가 적기 때문에 작은 크기의 정합 윈도우를 사용할 경우에 변이정보가 제대로 추출되지 않는다.
B 영역은 물체의 윤곽부분에 대한 특성을 설명하고자 나타낸 영역이다. B 영역 경계는 물체의 경계부분이고, 배경과의 텍스쳐 변화가 심한 영역이다. 이러한 영역에서는 작은 크기의 정합 윈도우를 사용하는 경우에 비용값이 명확하게 변화하여 비용값에 대한 분포가 크다. 하지만 큰 크기의 정합 윈도우를 사용한다면 경계면에서 섬세한 비용값을 구하지 못하여 부정확한 변이정보를 추출한다.
따라서 영상 내부에서 텍스쳐의 국부적인 상황에 따라서 적절한 윈도우를 선택하는 것이 필요하다.
다음으로, 본 발명의 스테레오 정합 연산에서 중간 연산과정을 보다 구체적으로 분석하여 설명한다.
도 5에 3×3 정합창을 이용하여 10화소의 탐색거리 만큼 스테레오 정합을 수행하는 방법을 예시하였다. 도 5는 논의의 간략화를 위해서 하나의 가로줄에 대해서만 나타냈다. 도 5에서 RX와 LX는 각각 오른쪽 및 왼쪽 영상의 화소를 나타낸다. 도 5에서의 연산 과정을 도 6에 순서대로 나타냈다. 도 6의 두 번째, 세 번째, 및 네 번째 행은 각각 도 5(a), (b), 및 (c)에 해당한다.
도 5에서 보는 바와 같이, SAD(L1, L2, L3)에 대한 첫 번째 연산 t1에서 |R0-L1|+|R1-L2|+|R2-L3|의 연산이 수행된다. 여기에서 |R1-L2|와 |R2-L3| 연산은 t1뿐만 아니라 SAD(L2, L3, L4)의 t1에서도 사용된다. 또한 SAD(L2, L3, L4)의 첫 번째 연산 t1은 |R1-L2|+|R2-L3|+|R3-L4|와 같고, 이 연산 중에서 |R2-L3|와 |R3-L4|는 SAD(L3, L4, L5)에 대한 첫 번째 연산 t1에서 사용된다.
즉, 스테레오 정합을 구하는 중간 과정을 분석하면 중간 연산 결과들 사이에는 많은 연산의 중복성이 존재함을 확인할 수 있다. 이러한 중간 연산 과정의 중복성은 소프트웨어 방식으로 구현할 경우에 활용할 수 있는 방법이 없다. 중복성을 갖는 중간 연산 결과를 따로 처리하는 것과 매번 새로 계산하는 것 사이에 시간적인 차이가 없기 때문이다. 그러나 하드웨어로 구현할 경우에는 그러한 중간 연산 결과들은 레지스터, 버퍼, 혹은 메모리 등에 의해서 저장될 수 있고, 시간적으로 적절히 관리한다면 효율적인 연산을 수행할 수 있다.
따라서 본 발명은 스테레오 정합이 갖는 연산의 중복성을 제거하고 연산의 효율성을 높이기 위해서는 중간 연산 결과들을 재사용하는 방법을 적용한다. 중간 연산결과들을 재사용하기 위해 도 6의 연산 과정을 시간적으로 재배치한 결과를 도 7의 표에 나타냈다.
도 7의 표에서 굵은 글씨로 나타낸 항들은 다음 사이클로 넘겨줄 값이다. 예를 들어 SAD(L2, L3, L4)의 t4에 대한 연산을 살펴보면 SAD(L1, L2, L3)의 t3에서 |R3-L2|와 |R4-L3| 값을 넘겨받고, |R5-L4| 연산을 수행하여 |R3-L2|+|R4-L3|+|R5-L4|를 구한다. 그리고 SAD(L3, L4, L5)의 t5에서 |R4-L3|와 |R5-L4|의 값을 사용할 수 있도록 넘겨준다. 이러한 동작이 모든 위치에서 동일하게 발생한다는 점은 셀 기반의 하드웨어 구조를 만들 수 있는 좋은 단서를 제공한다.
이때, t1, t2, ..., t10 등을 하나의 연산 단위로 수행되는 시간을 말한다. 이런 의미에서 이 시간 단위를 하나의 클럭이라고 부르기로 한다. 이들 연산이 실제 CPU에서 수 클럭이 될 수 있으나, 여기서는 하나의 연산 단위에서 수행되는 시간으로서 클럭이라 부르기로 한다.
따라서 현재 클럭에서 i번째 비용함수가 연산되는 부분은 현재 클럭의 이전 클럭에서 i-1번째 비용함수가 연산되는 부분에 비하여 각각 한 화소만큼 이동한 부분이다. 즉, 도 7에서, 클럭 t4에서 2번째 비용함수의 정합되는 각각 영상 부분 [(L2, L3, L4), (R3, R4, R5)]는 클럭 t3에서 1번째 비용함수의 정합되는 각각 영상 부분 [(L1, L2, L3), (R2, R3, R4)] 보다 한 화소만큼 우측으로 이동한 부분이다. 따라서 중간에 겹치는 [(L2, L3), (R3, R4)] 부분의 연산을 그대로 이용할 수 있다.
다음으로, 본 발명의 제1 실시예에 따른 스테레오 정합 연산을 위한 스테레오 정합 연산 유닛(SMCU)의 구성을 도 8을 참조하여 설명한다.
도 7의 표에서 어느 한 칸에 대한 연산은 |Li-1-Rj-1|+|Li-Rj|+|Li+1-Rj+1|와 같고, |Li-1-Rj-1|와 |Li-Rj|는 이전 연산 단계에서 연산이 이루어져 넘어온 값이다. |Li+1-Rj+1|는 현재 단계에서 새롭게 연산하는 값이고, 이 값들 중에서 |Li-Rj|와 |Li+1-Rj+1|는 다음 연산 단계를 위해서 넘겨주어야 하는 값들이다.
하드웨어 셀(또는 연산 셀)의 구조를 결정하기 위해 이러한 동작을 정리하면 아래 수학식 1과 같다. 이때 정합창의 크기는 1×3이다.
[수학식 1]
입력 : |Li-1-Rj-1|, |Li-Rj|, Li+1, Rj+1
연산 : |Li+1-Rj+1|, |Li-1-Rj-1|+|Li-Rj|+|Li+1-Rj+1|
출력 : |Li-1-Rj-1|+|Li-Rj|+|Li+1-Rj+1|, |Li-Rj|, |Li+1-Rj+1|
이때, 인덱스의 j는 우 영상의 좌표를 의미하기도 하나, 클럭의 인덱스로도 사용될 수 있다. 즉, j 클럭시 |Li-1-Rj-1|, |Li-Rj|, Li+1, Rj+1 를 입력으로 받아들이면, j+1 클럭시에는 |Li-1-Rj|, |Li-Rj+1|, Li+1, Rj+2 을 입력으로 받아들여 연산한다. 한편, i는 좌영상의 좌표를 의미하나, 다수의 연산 유닛이 있을 경우 연산 유닛의 인덱스로 사용될 수 있다.
또한, 정합창의 크기가 1×K인 경우의 연산 셀의 구조는 다음 수학식 2와 같이 일반화될 수 있다.
[수학식 2]
입력 : |Li-(K-2)-Rj-(K-2)|, |Li-(K-3)-Rj-(K-3)|, ..., |Li-1-Rj-1|, |Li-Rj|, Li+1, Rj+1
연산 : |Li+1-Rj+1|,
|Li-(K-2)-Rj-(K-2)|+|Li-(K-3)-Rj-(K-3)| + ... + |Li-Rj|+|Li+1-Rj+1|
출력 : |Li-(K-2)-Rj-(K-2)|+|Li-(K-3)-Rj-(K-3)| + ... + |Li-Rj|+|Li+1-Rj+1|,
|Li-(K-3)-Rj-(K-3)|,|Li-(K-4)-Rj-(K-4)|, ... , |Li-Rj|, |Li+1-Rj+1|
상기와 같이 중간 연산결과를 임시적으로 저장했다가 다음 화소의 연산에서 사용할 수 있는 동작을 포함하는 하드웨어 셀의 구조를 도 8과 같다. 이 셀을 스테레오 정합을 위한 스테레오 정합 연산 유닛(stereo matching calculating unit, SMCU)이라 명명한다.
다음으로, 본 발명의 제2 실시예에 따른 수평방향의 스테레오 정합을 위한 스테레오 정합 수평 연산기(SMHC)의 구성을 도 9를 참조하여 설명한다.
도 7에서 t5의 시간에 |R4-L1|+|R5-L2|+|R6-L3|, |R4-L2|+|R5-L3|+|R6-L4|, 및 |R4-L3|+|R5-L4|+|R6-L5| 연산이 수행된다. 이 세 연산을 살펴보면 첫 번째 항은 R4, 두 번째 항은 R5, 그리고 세 번째 항은 R6이 포함된다.
도 8의 단위 셀을 도 9와 같이 확장한다면 도 5의 연산을 간단히 수행할 수 있다. 이 하드웨어를 스테레오 정합 수평 연산기(stereo matching horizontal calculator, SMHC)라 한다.
도 9에서 결과는 세 번째 셀(SMCU2)부터 출력되고, 처음 두 개의 결과는 무시한다. 각 셀별 입력을 살펴보면 참조영상의 화소에 해당하는 Ri는 모든 셀에 공통적으로 입력되고, 매 클록 단위로 순서대로 입력된다.
도 9의 예에서, 정합창의 크기는 1×3이다.
앞서 연산 유닛에서 설명한 바와 같이, 각 연산 유닛은 1×K 크기로 정합되는 좌우영상(또는 제1 및 제2 영상) 부분의 비용함수를 연산한다.
이때, 현재 클럭 j에서 i번째 연산 유닛이 연산하는 좌우 영상의 정합 부분은 현재 클럭의 이전 클럭 j-1에서 i-1번째 연산 유닛이 연산하는 정합 부분에 비하여 각각 한 화소만큼 이동한 부분이다. 그리고 현재 클럭 j에서 i번째 연산 유닛은 이전 클럭 j-1에서 연산된 i-1번째 연산 유닛의 출력을 입력으로 받아들여 연산한다.
즉, i번째 연산 유닛은 현재 클럭 정합 부분과 중복되는 이전 클럭 정합 부분의 화소 단위의 비용함수를 i-1번째 연산 유닛으로부터 입력받고, 중복되지 않은 부분의 화소의 비용함수를 구하고, 구한 비용함수와 입력받은 비용함수들을 누적하여 현재 클럭 정합 부분의 비용함수를 구한다.
이것은 수학식 2의 입출력 내용과 같다.
즉, 도 9에서 각 연산 유닛의 입력은 바로 위에 병렬로 연결된 연산 유닛으로부터 연산 결과값을 입력받아 이용하되, 그 결과값은 이전 클럭에서 연산된 결과값이다.
다음으로, 본 발명의 제3 실시예에 따른 수평방향의 스테레오 정합을 위한 다중 정합창의 스테레오 정합 수평 연산기(SMHC)의 구성을 도 10을 참조하여 설명한다.
SMHC의 구조를 확장하면 도 10과 같이 다중 정합창에 대한 연산을 병렬적으로 연산할 수 있다. 도 10은 3×3과 5×5의 정합창에 대한 예를 나타내고 있고, 5×5의 경우에는 다섯 번째 셀(SMCU4)부터 연산 결과가 출력된다.
정합창의 가로 길이와 같은 3번째 단계부터 유효한 결과가 출력된다. 도 10에서는 |Rj-Li|+|Rj-Li+1|+|Rj-Li+2|부터 정상적인 출력이다.
즉, 수평 연산기의 각 연산 유닛은 1×K 보다 작은 크기의 정합되는 제1 및 제2 영상 부분의 비용함수도 함께 연산할 수 있다. 이때, 추가적인 누적기가 포함된다.
SMHC를 살펴보면 정합창의 크기에 따라서 초기 SMCU의 개수와 이에 따른 대기 지연시간이 결정된다. 그리고 탐색 범위만큼의 SMCU 개수를 연결하면 완전한 병렬화가 가능하고, 탐색 범위에 상관없이 자동으로 동작이 연결된다.
SMHC는 SMCU의 단순한 직렬 연결로 구성되어 있기 때문에 탐색 범위를 쉽게 조절할 수 있고, SMHC 내의 SMCU를 그룹으로 나누고 탐색 범위를 줄이면 동시에 2개의 두 열에 대한 연산도 가능하다.
다음으로, 본 발명의 제4 실시예에 따른 2차원(2D) 영역을 위한 스테레오 정합 연산기의 구성을 도 11 내지 도 15를 참조하여 설명한다.
일반적으로 스테레오 정합에서 사용되는 정합창은 2차원 구조이다. 2차원 연산을 위해서 상기 제2 실시예의 SMHC를 정합창의 수직 크기만큼 사용하여 연산하는 것이 가장 쉬운 방법이다. 이를 도 11에 나타냈고 스테레오 정합 연산기(type1)라 명명한다.
도 11의 예에서, x, y는 어느 한 쪽(오른쪽) 영상의 인덱스이고 u, v는 다른 한 쪽(왼쪽) 영상의 인덱스이다. 도 10이 도 11의 하나의 SMHC에 해당된다. SMHC는 하나의 행에 대해 스테레오 정합을 수행한다. 따라서 x 좌포는 동일하지만 y 좌표는 하나씩 증가하게 되어 있다. 여기에서 N은 정합창의 가로 크기에 해당한다.
이 경우에 연산은 비교적 단순하고 하드웨어의 구조도 단순하며 구현이 용이하다. 그러나 동일한 화소를 계속 호출해야 하기 때문에 메모리 접근 횟수가 많고, 다수 개의 SMHC를 사용해야 하므로 하드웨어의 양이 과다하다. 또한 수직 방향으로 많이 중복되는 중간 연산 결과들을 이용할 수 없다.
메모리 접근 횟수와 하드웨어 양을 최소화하고, 중간 연산결과들을 수직 방향으로도 재사용하기 위한 스케쥴링 및 구조를 개선한다. 3×3 크기의 정합창을 이용하여 스테레오 정합을 수행하는 것을 예시로 설명한다.
도 12(a)는 왼쪽 영상의 화소들을 나타내고, 도 12(b)는 오른쪽 화소들을 나타낸다. 왼쪽 영상의 화소와 가장 유사한 오른쪽 영상에서의 위치를 찾는 과정을 수행하고 있다. 왼쪽 영상의 화소들은 이미 외부 메모리로부터 호출하여 보유하고 있고, 오른쪽 영상의 화소들을 순차적으로 호출하여 SAD 연산을 수행한다.
수직 방향의 연산을 포함한 2차원 정합창에 대한 SAD를 구하는 과정은 아래와 같이 3가지 단계(Step)로 구성된다.
Step1 : 수평 방향의 병렬 스테레오 정합 연산 과정 (도 7)
Step2 : 수평 방향의 비용 함수 결과들을 누적하는 과정
Step3 : 정합창에 포함되지 않는 수평방향의 열(row)을 누적된 비용 함수의 값에서 제거하는 과정
위의 3 단계를 시간 순서대로 하드웨어의 스케쥴링으로 나타내면 도 13과 같다. 도 13에서 Px,y는 한 열에 대한 SAD 결과들의 누적값이고, Sx,y는 Px,y를 누적한 결과이다. 도 13에는 이해를 돕기 위해서 도 12(b)의 회색 부분에 대한 연산 결과만을 나타내었다. 이러한 제약을 하지 않는다면 도 14와 같이 Step3에서 매 클록마다 3×3 크기의 정합창에 대한 SAD 누적 결과(SAD1,0~SAD4,4)가 출력될 수 있다. 출력된 누적 SAD 값들 중에서 최소의 값을 선택하면 그 것이 스테레오 정합의 결과인 변위(disparity)이다.
도 14에서 제안한 2차원 스테레오 정합 스케쥴링을 위한 하드웨어 구조는 도 15와 같다. 비용함수 결과 값을 보유하기 위해서 FIFO로 구성된 라인버퍼(Line Buffer, LB)를 사용한다. 정합창의 최대 크기가 17×17이므로 Px,y를 저장하기 위해 17개의 LB를 사용하고, Sx,y를 저장하기 위해서 1개의 LB가 사용된다. S는 탐색범위이고, M과 N은 각각 정합창의 가로 및 세로 크기를 나타낸다. W는 영상의 너비에 해당한다.
다음으로, 본 발명의 제5 실시예에 따른 스테레오 정합 프로세서의 하드웨어 구성을 도 16을 참조하여 설명한다.
앞서 설명한 SMHC와 라인 버퍼를 조합하여 두 영상의 2차원 영역에 대한 비용 함수를 구하는 방법을 설명하고, 이에 대한 하드웨어 구조를 자세히 나타내었다. 여기에 회로의 부가적인 기능들을 추가하여 스테레오 정합을 위한 프로세서(Stereo Matching Processor, SMP)를 구현하였고, 이를 도 16에 나타냈다. 바람직하게는, 본 발명은 시간 손실 없이 스테레오 정합을 위한 연산을 수행하기 위한 VLSI 구조를 나타내는 것이 목적이다.
SMP는 크게 1D 비용함수 계산기(1D Cost Function C)와 2D 비용함수 계산기로 구성된다. 전자는 주로 SMHC의 동작을 수행하고, 후자는 제3 실시예의 1D 연산을 효율적으로 2D로 확장하는 동작을 수행한다.
먼저 1D 비용함수 계산기에 대해서 살펴보자.
이는 영값 확장기(Zero Padding), 타이밍 버퍼(Timing Buffer), 그리고 SMHC로 구성된다. SMHC의 초기 동작 시에 올바른 출력이 나오기 전까지 더미 SMCU에서의 타이밍을 맞추기 위해서 영상의 모든 행에 대해서 앞과 뒤에 영값을 붙여야 한다. 영값 확장기는 이러한 동작을 수행한다. 타이밍 버퍼는 출력된 1D 비용함수 결과와 2D 비용함수 계산기의 FIFO를 거친 결과의 타이밍을 맞추는 동작을 수행한다. SMHC는 상기 제2 실시예에서 설명한 동작을 수행한다. 최대 17×17 크기의 정합창을 수용할 수 있도록 구현하였고, 17×15, 17×13, 17×11, 혹은 17×3과 같이 17이하의 크기로 동작이 가능하다.
다음으로, 2D 비용함수 계산기에 대해서 살펴보자.
2D 비용함수 계산기는 도 15의 동작을 수행하기 위한 하드웨어이고, 주로 FIFO로 구성된다. Line Select 신호에 의해서 선택된 FIFO는 새로운 연산 결과를 입력받으면서 저장된 데이터를 동시에 출력한다. 최대 17×17 크기의 정합창에 대한 연산을 수용할 수 있도록 17개의 FIFO를 보유하고 있다. FIFO를 FPGA로 구현할 경우에는 FPGA 내장 메모리 자원을 이용하고, ASIC(application specific integrated circuit)로 구현할 경우에는 해당 공정에서 제공하는 메모리 컴파일러를 이용하여 설계한 후에 메모리 셀 라이브러리를 이용한다.
연산된 비용함수 결과들은 변위 계산기(Disparity Calculator)에서 변위 값을 구하는데 이용된다. 본 발명에서는 비용함수로 SAD를 사용하고 있지만 제안한 하드웨어는 비용함수에 제한을 두지 않는다. 도 4, 5, 및 8에서 SAD 블록에 다른 비용함수를 사용할 수 있다. 이 경우에 변위 계산기는 변위를 선정하는 기준을 수정해야 한다. 이러한 수정은 간단한 프로그래밍으로 가능하다. 또한 다양한 비용함수 블록을 내장시킨 후에 프로그래밍을 통해 선택하고, 입력 영상에 따라 최적화된 비용연산을 수행할 수도 있다.
상기 제4 실시예의 스테레오 정합 프로세서(SMP)는 아래와 같은 특성을 갖는다.
셀 기반의 구조(cell-based architecture) - 스테레오 정합의 중간 연산 결과에 대한 중복성을 분석하여 연산을 최소화시켜서 성능을 극대화하고 메모리 참조 횟수를 최소화한다. 다수 개의 셀을 단순히 연결만 해주면 가로 방향의 비용함수 연산이 중간 결과가 중복되어 연산되지 않고 수행된다.
확장성(Extensibility) - 가로 방향의 연산을 담당하는 기본 하드웨어의 구조가 셀 단위로 되어 있고, 셀을 단순히 확장하면 그와 비례하여 성능을 향상시킬 수 있다. 셀의 확장은 단순히 추가하고자 하는 셀을 마지막 셀의 뒤에 연결하기만 하면 된다. 가로 방향의 연산 단위로 독립적인 하드웨어로 구성되므로 세로 방향의 연산은 가로 방향의 하드웨어를 병렬적으로 추가하기만 하면 쉽게 확장시킬 수 있는 구조를 갖는다. 또한 연산 순서를 분석하여 스테레오 정합을 위한 탐색 범위와 동일한 크기의 FIFO를 조합하면 하드웨어의 추가를 최소화하면서 2D 비용함수 계산을 할 수 있다.
단순한 제어(Very low control complexity) - 제안한 셀 기반의 스테레오 정합을 위한 연산기는 복잡한 제어가 필요 없고, 단순히 두 개의 영상에 대한 화소값을 순차적으로 입력시키면 약간의 대기 지연시간 이후부터 변위가 순서대로 출력된다. 1D 비용함수 계산기는 거의 제어가 필요하지 않고, 사용할 정합창을 선택하는 제어만 필요하다. 2D 비용함수 계산시는 FIFO의 선택을 위한 Line Select 신호의 제어 이외에 별다른 제어가 필요하지 않다.
프로그램성(Programmability) - 본 발명의 하드웨어는 탐색범위, 정합창의 크기, 그리고 영상크기와 같은 항목에 대해서 프로그래밍이 가능하고, 그에 따른 다양한 스테레오 정합 연산을 수행할 수 있다.
탐색범위는 최대 1,920 화소까지 가능하고, 도 17과 같이 128 화소의 단위로 프로그래밍이 가능하도록 하였다. FIFO를 더욱 작게 나눌 경우에는 더욱 세밀한 탐색 범위의 조절이 가능할 것이다. 탐색범위는 영상의 해상도 및 촬영 환경에 따라서 달라진다.
정합창은 최대 17×17 크기까지 가능하고, 도 18과 같은 조합이 가능하다. 영상크기에 대한 범위는 제한이 없으나 외부 메모리의 크기와 초당 성능에 따라서 응용분야에 따라 결정될 수 있다.
다음으로, 본 발명에 따른 실험 결과 및 효과를 구체적으로 설명한다.
구체적으로, 본 발명의 실험에 의해 구현한 하드웨어의 하드웨어 자원과 시뮬레이션에 대한 결과를 설명한다.
먼저, 실험을 수행한 하드웨어 자원에 대하여 설명한다.
본 발명의 하드웨어의 구조는 VHDL을 이용하여 설계하였고, Altera FPGA 환경에서 구현하였다. 사용한 FPGA는 Stratix III EP3SL340F이고, 구현한 SMP를 FPGA에 사상한 결과를 도 19에 정리하였다.
본 발명의 하드웨어는 아래의 항목에 대해서 프로그래밍이 가능하고, 그에 따른 다양한 스테레오 정합 연산을 수행할 수 있다. 두 번째 열(row)의 SMCU (bypass)는 유효한 출력이 나오기 전까지의 SMCU를 의미한다. 이 SMCU는 데이터를 다음 SMCU로 넘겨주는 역할만 수행하고 연산기는 포함하지 않는다. 다섯 번째 열의 DC는 변위 계산기를 나타내고 여섯 번째 열의 Logics는 여러 제어기들과 타이밍을 맞추기 위한 버퍼들, 그리고 데이터 버스 등을 포함한 회로를 의미한다. 일곱 번째 열의 SMP가 최종 구현 결과를 나타낸다. 여덟 번째 열의 Utilization은 Stratix III EP3SL340F의 전체 자원을 나타내고 아홉 번째 열은 사용한 FPGA의 전체 자원에 대한 구현한 하드웨어의 자원 사용률을 나타낸다. Combinational ALUT는 197,806개를 사용하여 73.15%의 사용률을 보였고, Memory ALUT는 3,840개를 사용하여 2.84%의 사용률을 보인다. 그리고 라인버퍼가 주로 사용하는 Memory Bit는 276,480비트를 사용하여 1.66%의 자원 사용률을 보였다.
구현된 하드웨어는 입력되는 영상의 속도와 동일한 속도로 변위가 출력되므로 거의 스테레오 정합이 가질 수 있는 거의 최대 성능을 갖는다. 구현된 하드웨어는 전체적으로 100% 파이프라인화되어 있고, 임계경로는 8비트 덧셈기에 위치하여 고속의 동작이 가능하다. 17×17 크기의 정합창을 이용하는 경우에 9개의 8비트 데이터를 더해야 한다. 그러나 이러한 동작은 모두 파이프라인화하여 클록에 따라 2개의 8비트 덧셈으로 나누어져 있기 때문에 동작 속도에 영향을 주지 않는다. 사용한 FPGA에서는 최소 250MHz 이상의 동작 주파수에서 동작할 수 있다. 250MHz에서 동작할 경우에 250Mbps(byte per sec)의 성능을 갖는다. 즉, 1,920×1,080의 영상에 대해서 120fps(frames per sec) 및 640×480의 영상에 대해서 약 795fps의 성능을 보인다.
도 20에는 이전 연구결과들과 구현된 결과들의 성능을 요약하여 비교하였다. [비특허문헌 11]과 비교할 때 640×480 크기의 영상에 대해서 약 4배 만큼 성능이 향상된 것을 볼 수 있다. 또한 GPU를 이용한 방법에 비해서 대체적으로 성능이 높다. 그러나 정합 방법이 다르고, 보정(Rectification) 과정이 없기 때문에 절대적으로 성능이 우수하다고 주장하기는 어렵다.
다음으로, 메모리 접근에 대한 실험 결과를 설명한다.
구체적으로, 메모리 접근 횟수가 얼마나 감소하는지 구체적으로 분석한다. 도 21에는 이러한 분석 결과를 요약하였다.
No Reuse는 탐색 영역 내의 모든 비용함수 연산에 대해서 필요한 데이터를 메모리로부터 호출하는 경우이다. Horizontal Reuse in Search Range는 수평방향으로 새롭게 필요한 데이터만 호출하고 이전의 데이터들을 재사용하는 방법이다. 예를 들어 3×3의 정합창인 경우에 9개의 데이터 중에서 6개는 재사용하고 3개는 새롭게 호출한 데이터에 해당한다. Horizontal and Vertical Reuse in Search Range는 수평과 수직 수평방향으로 데이터를 재사용하는 경우이다. 예를 들어 3×3의 정합창인 경우에 1개의 데이터만 새롭게 호출하고 나머지는 재사용한다. 이 방식의 경우에 재사용이 탐색영역 단위로 이루어지기 때문에 호출된 데이터가 반복적으로 호출된다. Proposed Reuse는 제안한 방식을 의미하고 모든 데이터는 오직 한번만 호출된다. 다른 화소에 대한 정합 연산을 수행하는 경우에 새로운 탐색영역이 설정된다고 할지라도 데이터가 모두 재사용되기 때문에 중복된 데이터의 호출은 없다. 따라서 재사용을 전혀 하지 않는 방식과 비교할 때 데이터 호출이 0.01~0.02%로 감소한다.
다음으로, 본 발명의 실험에 따른 시뮬레이션 결과를 설명한다.
도 16의 전체 하드웨어에 대한 시뮬레이션 결과를 도 22에 나타냈다. 도 22는 확인이 용이하도록 32×32 크기의 스테레오 영상에 대해서 10 크기의 탐색 범위와 3×3의 정합창 크기로 시뮬레이션을 수행한 결과이다. 스테레오 정합 하드웨어의 상태 신호 opr_rdy_sig 신호에 따라서 en_sig 신호와 함께 스테레오 영상을 image_left_sig와 image_right_sig 신호에 입력한다. 스테레오 영상의 화소값들을 순서대로 입력하면 일정 대기지연 시간 이후에 유효한 출력임을 나타내는 diaparity_valid_sig 신호에 맞추어 disparity_sig 신호에 변위가 출력된다. 도 22에서 확인할 수 있는 것과 같이 구현된 하드웨어는 영상을 입력율과 동일한 비율로 변위가 출력된다. 변위는 입력된 영상의 양보다 더 많이 계산될 수 없다. 즉, 구현한 하드웨어는 스테레오 정합 연산이 가질 수 있는 거의 최대의 성능을 갖고 있다.
SMP를 이용하여 스테레오 정합을 수행한 몇 가지 시뮬레이션 결과를 도 23에 나타냈다. 도 23(a)는 원래의 변위 영상(ground truth)이고, 도 23(b)는 시뮬레이션을 통해서 얻은 변위 영상이다. 본 시뮬레이션은 단순히 영상별로 정합창의 크기를 선택하여 비용함수를 계산한 것이다. 하나의 스테레오 정합 과정 내에서 영상의 국부적인 특성에 따른 정합창의 크기, 탐색 영역의 범위, 그리고 다른 여러 정보를 프로그래밍하여 비용함수를 연산하는데 이용할 수 있다. 스테레어 정합 결과인 변위의 성능에 대한 것은 사용자의 몫으로 남겨두고, 본 발명에서는 비용함수를 고속 및 고성능으로 연산할 수 있는 하드웨어의 구조를 제시하는 것으로 의미를 제한한다.
본 발명에서는 실시간으로 스테레오 정합을 수행하기 위한 고성능 하드웨어 구조를 설명하고 이를 구현하였다. 하드웨어의 동작과 구조에 적합하게 스테레오 정합의 연산을 분석하였고, 이를 바탕으로 중간 연산 결과를 재사용할 수 있는 셀 기반의 병렬 하드웨어 구조를 제안하였다. 먼저 스테레오 정합 연산 셀(stereo matching calculating unit, 느쳐)의 구조를 제안하고, 이를 열 방향으로 병렬적으로 확장하여 탐색 범위 내의 모든 비용함수를 동시에 연산할 수 있는 하드웨어(1D stereo matching calculator, 1DSMC)를 제안하였다. SMHC의 결과에 대해서 FIFO와 간단한 덧셈 및 뺄셈 연산기를 이용하여 2차원 영역에 대한 비용함수를 연산할 수 있는 하드웨어 구조(2D stereo matching calculator, 2DSMC). 이러한 하드웨어를 바탕으로 스테레오 정합 프로세서(stereo matching processor, SMP)를 제안하고 구현하였다. 구현한 하드웨어는 실시간으로 스테레오 정합 연산을 수행할 수 있어서 다양한 스테레오 비전 분야에서 이용될 수 있을 것이다.
이상, 본 발명자에 의해서 이루어진 발명을 상기 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
10 : 물체 20 :

Claims (5)

  1. 제1 및 제2 영상의 스테레오 정합을 위하여, K×K 크기의 정합 윈도우의 비용함수를 계산하는 병렬 스테레오 정합 연산 장치에 있어서,
    적어도 K개의 수평 연산기를 포함하고,
    상기 수평 연산기는 연속으로 병렬로 연결된 적어도 K개의 연산 유닛을 포함하고,
    각 연산 유닛은 1×K 크기로 정합되는 제1 및 제2 영상 부분의 비용함수를 연산하되,
    현재 클럭에서 i번째 연산 유닛이 연산하는 제1 및 제2 영상 부분(이하 현재클럭 정합 부분)은 현재 클럭의 이전 클럭에서 i-1번째 연산 유닛이 연산하는 제1 및 제2 부분(이하 이전 클럭 정합 부분)에 비하여 각각 한 화소만큼 이동한 부분이고,
    현재 클럭에서 i번째 연산 유닛은 이전 클럭에서 연산된 i-1번째 연산 유닛의 연산 결과를 이용하여 연산하는 것을 특징으로 하는 병렬 스테레오 정합 연산 장치.
  2. 제1항에 있어서,
    상기 i번째 연산 유닛은 현재 클럭 정합 부분과 중복되는 이전 클럭 정합 부분의 화소 단위의 비용함수를 상기 i-1번째 연산 유닛으로부터 입력받고, 중복되지 않은 부분의 화소의 비용함수를 구하고, 구한 비용함수와 입력받은 비용함수들을 누적하여 현재 클럭 정합 부분의 비용함수를 구하는 것을 특징으로 하는 병렬 스테레오 정합 연산 장치.
  3. 제1항에 있어서,
    상기 i번째 연산 유닛은, j번째 클럭에서,
    Li+1, Rj+1 을 입력받고,
    i-1번째 연산 유닛으로부터 j-1번째 클럭에서 연산된 |Li-(K-2)-Rj-(K-2)|, |Li-(K-3)-Rj-(K-3)|, ..., |Li-1-Rj-1|, |Li-Rj|을 입력받아,
    |Li+1-Rj+1|와 |Li-(K-2)-Rj-(K-2)|+|Li-(K-3)-Rj-(K-3)| + ... + |Li-Rj|+|Li+1-Rj+1|을 연산하고,
    |Li-(K-2)-Rj-(K-2)|+|Li-(K-3)-Rj-(K-3)| + ... + |Li-Rj|+|Li+1-Rj+1|을 출력하고,
    i+1번째 연산 유닛으로, j+1 클럭에서 |Li-(K-3)-Rj-(K-3)|,|Li-(K-4)-Rj-(K-4)|, ... , |Li-Rj|, |Li+1-Rj+1|을 출력하는 것을 특징으로 하는 병렬 스테레오 정합 연산 장치.
  4. 제1항에 있어서,
    상기 연산 유닛은 1×K 보다 작은 크기의 정합되는 제1 및 제2 영상 부분의 비용함수도 연산하는 누적기를 추가적으로 포함하는 것을 특징으로 하는 병렬 스테레오 정합 연산 장치.
  5. 제1항에 있어서,
    상기 적어도 K개의 수평 연산기는 수직으로 병렬로 연결되어, 각 수평 연산기는 연산하는 정합 부분에서 x좌표는 동일하고 y좌표는 하나씩 증가하여 연산하는 것을 특징으로 하는 병렬 스테레오 정합 연산 장치.
KR1020130042620A 2013-04-18 2013-04-18 고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치 KR101460699B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130042620A KR101460699B1 (ko) 2013-04-18 2013-04-18 고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130042620A KR101460699B1 (ko) 2013-04-18 2013-04-18 고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치

Publications (2)

Publication Number Publication Date
KR20140125039A true KR20140125039A (ko) 2014-10-28
KR101460699B1 KR101460699B1 (ko) 2014-11-12

Family

ID=51995004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130042620A KR101460699B1 (ko) 2013-04-18 2013-04-18 고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치

Country Status (1)

Country Link
KR (1) KR101460699B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210076851A (ko) * 2019-12-13 2021-06-24 넥스트브이피유 (상하이) 코포레이트 리미티드 시차 결정 방법, 전자 장치 및 컴퓨터 판독 가능한 저장 매체
US11127115B2 (en) 2019-12-13 2021-09-21 NextVPU (Shanghai) Co., Ltd. Determination of disparity

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100576942B1 (ko) * 2003-12-12 2006-05-10 한국전자통신연구원 방향 필터링을 이용한 스테레오 영상의 정합 시스템 및 그방법
KR20080068167A (ko) * 2007-01-18 2008-07-23 김준성 윈도우 행렬 분리 연산을 통한 에스에이디 정합 알고리즘기반 스테레오 비젼 시스템 설계 방법
KR101359351B1 (ko) * 2011-10-10 2014-02-12 전자부품연구원 연산 스킵 기법에 의한 고속 스테레오 영상 정합 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210076851A (ko) * 2019-12-13 2021-06-24 넥스트브이피유 (상하이) 코포레이트 리미티드 시차 결정 방법, 전자 장치 및 컴퓨터 판독 가능한 저장 매체
US11127115B2 (en) 2019-12-13 2021-09-21 NextVPU (Shanghai) Co., Ltd. Determination of disparity

Also Published As

Publication number Publication date
KR101460699B1 (ko) 2014-11-12

Similar Documents

Publication Publication Date Title
Ttofis et al. A low-cost real-time embedded stereo vision system for accurate disparity estimation based on guided image filtering
EP2959456B1 (en) Real time stereo matching
Fife et al. Improved census transforms for resource-optimized stereo vision
AU716654B2 (en) Data processing system and method
Ttofis et al. Edge-directed hardware architecture for real-time disparity map computation
Ttofis et al. High-quality real-time hardware stereo matching based on guided image filtering
Shan et al. Hardware acceleration for an accurate stereo vision system using mini-census adaptive support region
Ttofis et al. Towards accurate hardware stereo correspondence: A real-time fpga implementation of a segmentation-based adaptive support weight algorithm
CN102509071B (zh) 光流计算系统和方法
Cambuim et al. An FPGA-based real-time occlusion robust stereo vision system using semi-global matching
Ding et al. Real-time stereo vision system using adaptive weight cost aggregation approach
Li et al. High throughput hardware architecture for accurate semi-global matching
Zhang et al. NIPM-sWMF: Toward efficient FPGA design for high-definition large-disparity stereo matching
Michailidis et al. High performance stereo system for dense 3-D reconstruction
Akin et al. Dynamically adaptive real-time disparity estimation hardware using iterative refinement
KR101460699B1 (ko) 고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치
Ding et al. Improved real-time correlation-based FPGA stereo vision system
Seo et al. A new parallel hardware architecture for high-performance stereo matching calculation
Kalomiros et al. Design and hardware implementation of a stereo-matching system based on dynamic programming
Shen et al. ImLiDAR: cross-sensor dynamic message propagation network for 3D object detection
Qasaimeh et al. A parallel hardware architecture for Scale Invariant Feature Transform (SIFT)
Kalomiros et al. Comparative study of local SAD and dynamic programming for stereo processing using dedicated hardware
Tan et al. Resource minimization in a real-time depth-map processing system on FPGA
Morris et al. Intelligent vision: A first step–real time stereovision
Morris et al. Breaking the ‘Ton’: achieving 1% depth accuracy from stereo in real time

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171106

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191104

Year of fee payment: 6