Eisserer, C. (2013). Embedded real-time 3D stereo vision on multicore digital signal processors [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/159718
stereo vision; digital signal processing; mobile computing; parallel computing; OpenMP; embedded development; energy efficiency
en
Abstract:
Computer Stereo Vision, die Bestimmung von Tiefeninformation durch das Lösen des Korrespondenzproblems, ist eine vielseitige Technik welche ein breites Anwendungsspektrum in der Industrie aufweist. Sie wird beispielsweise in der Robotik oder zur Qualitätssicherung eingesetzt. Aufgrund des üblicherweise hohen Rechenaufwands von Computer-Stereo-Vision-Algorithmen wird oft auf spezialisierte Hardware wie Application Specific Integrated Circuits (ASIC) (teuer in Entwickung und Wartung) oder Graphics Processing Units (GPU) (hohe Leistungsaufnahme) zurückgegriffen, um Echtzeitverarbeitungsgeschwindigkeit bei hohen Auflösungen zu erreichen.<br />Für den industriellen Einsatz spielen geringe Größe, Langzeitverfügbarkeit, Robustheit und garantierte Echtzeitfähigkeit eine große Rolle, die von PC-Hardware nicht vollständig erfüllt werden kann.<br />Weiters besteht für viele Anwendungen, wie beispielsweise in mobilen Geräten, der Bedarf an kompakten und energiesparenden, jedoch trotzdem leistungsfähigen Stereo Vision Systemen.<br />In dieser Diplomarbeit wird ein echtzeitfähiges 3D Vision System vorgestellt, welches auf dem Texas Instruments C6678 Signalprozessor basiert. Der C6678 stellt einen Mittelweg zwischen universeller PC-Hardware und hoch spezialisierten Hardwarelösungen dar. Er beinhaltet 8 DSP-Kerne, welche auf einer Very Large Instruction Word (VLIW) Architektur basieren. Dabei kann jeder Kern pro Takt bis zu 8 Befehle verarbeiten und verfügt über lokale Speicherbereiche.<br />Im Zuge dieser Arbeit haben wir S3E, eine auf der nicht-parametrischen Census Transformation basierende Stereo Engine, auf die C6678-Platform portiert. Um die Architektur der C6678-Kerne bestmöglich zu nutzen, haben wir rechenintensive Routinen in Assembler handoptimiert. Für die Parallelisierung von S3E haben wir das OpenMP-Framework verwendet.<br />Weiters wurde die Bildgrößenlimitierung, die auch viele hardwarebasierte Stereo Engines aufweisen, aufgehoben. Diese Limitierung ergibt sich im Fall von S3E aus dem beschränkten internen Speicher des C6678 und wurde mittels einer mehrstufigen Verarbeitung gelöst. Bei den durchgeführen Performancemessungen erreicht die vorgestellte Implementierung bei 456x375 Pixel großen Eingabebildern eine Bildrate von 112 Bildern pro Sekunde, wobei durch die Verwendung von 8 Kernen die Verarbeitungsgeschwindigkeit um den Faktor 6,725 gesteigert wurde. Diese Ergebnisse sind vergleichbar mit kommerziellen Stereo Vision Systemen, die auf spezialisierter Hardware aufbauen sowie mit softwarebasierten Lösungen, die mittels high-performance Hardware (GPUs) realisiert wurden.<br />
de
Computer stereo vision, the extraction of depth information from images by solving the correspondence problem, is a versatile technique that is used in many industrial domains such as robotics and quality conformance tests. Because stereo vision algorithms are computationally intensive, they are often executed on powerful multicore PCs (low power efciency), specialized hardware like Application Specific Integrated Circuits (ASIC) (costly in development and maintenance) or Graphics Processing Units (GPU) (high power consumption, no guaranteed long-term availability) to achieve high throughput required for real-time processing. For industrial use, compact size, long-term availability, robustness and guaranteed real-time capabilities play a critical role.<br />For mobile application, a compact and low-power but nevertheless, high performance stereo vision implementation is required.<br />In this diploma thesis we present a real-time capable 3D stereo vision implementation targeted at the Texas Instruments C6678 Digital Signal Processor (DSP). The C6678 architecture represents a middle-ground between general purpose commodity hardware and highly specialized FPGA or ASIC solutions. It features eight processing cores, each core providing instruction level parallelism with an 8-unit Very Large Instruction Word (VLIW) based architecture and core-local memory regions.<br />We have ported the S3E stereo engine that is based on the local, non-parametric Census transform-based to the C6678 platform.<br />Computationally-intensive image processing functions were hand-optimized to fully exploit the processing capabilities of the DSP. To take advantage of the eight processing cores provided by C6678, we have used the OpenMP framework. We also show that the high overhead of OpenMP on C6678 does not negatively affect the achieved throughput for our use case. Furthermore, we have removed size limitations regarding input images also typically found in logic-based stereo implementations. These limitations were imposed by the limited amount of fast, core-local memory on C6678, which we solved by introducing a slice-based processing approach. For the presented implementation, when processing is performed in parallel using eight DSP cores, an absolute speedup of 6.725 is achieved. Parallel processing allows for a frame rate up to 112 Frames per Second (fps) for 456x375 pixel input images with a disparity search range of 60 pixels, which corresponds to 1156 million disparity evaluations per second. These results are on par with commercial stereo vision systems implemented in specialized hardware and stereo engines implemented in software running on high-performance GPUs with relatively high power consumption.<br />Therefore, by building on the TMS320C6678 8-core digital signal processor, the DSP version of S3E is able to advance to performance and efficiency levels that have been previously reserved to custom logic or programmable hardware-based stereo engine implementations.<br />