Uploaded by tkddn3

이기종 컴퓨팅 환경에서 스테레오 카메라를 위한 고속 영상처리 장치 구현

advertisement
2018년도 대한전기학회 하계학술대회 논문집 2018. 7. 11 - 13
이기종 컴퓨팅 환경에서 스테레오 카메라를 위한 고속 영상처리 장치 구현
박상우, 김성도, 김도윤
위드로봇(주)
Implementation of a High-Speed Vision Processor for Stereo Camera in a Heterogeneous
Computing Environment
Sang-Woo Park, Seung-Do Kim, Do-Yoon Kim
WITHROBOT Inc.
– FPGA, RPU 및 APU, GPU 등으로 구성된 이기
종 컴퓨팅 환경을 1 Chip으로 제공하는 Zynq 프로세서를 이용
하여, 스테레오 카메라의 영상처리를 위한 고속 영상처리 장치
를 구현하였다. OpenCV에서 제공하는 Stereo Calibration과
Block Matching 알고리즘을 FPGA로 구현하고, 영상획득과
Depth Map 생성 및 그 결과의 전송은 APU로 구현하였다.
APU와 FPGA를 활용하여 최대 640⨯480의 스테레오 영상 입력
을 받아 Depth Map을 계산하는데 소요되는 시간이 최대 20ms
이내임을 확인하였다.
Abstract
1. 서
론
자율주행 자동차, 드론 등과 같은 이동체가 주변환경을 인식
하기 위해 Deep Learning 알고리즘을 적용하거나, 대량의 센서
정보를 처리하고, 판단할 필요가 있으며 이를 위한 고속 연산
장치의 필요성도 점점 커지고 있다. 이를 구현하기 위한 방법으
로 CPU, GPU, DSP 등 계산 장치를 고성능화하거나 다중 CPU
를 이용하여 연산속도를 높이려는 방법 등이 시도되고 있다. 또
다른 흐름으로 CPU, GPU, FPGA등의 이기종 처리장치를 하나
의 시스템으로 구성하여 각 처리 장치의 장점을 활용하는 이기
종 컴퓨팅도 주목받고 있다.
고해상도 스테레오 영상을 처리하기 위한 방법으로, 다중 프로
세서를 사용하는 방식은 개발 시간이 가장 짧게 소요되지만, 고
해상도의 영상을 처리하기 위해서는 고성능의 CPU를 여러 개
사용하는 구조가 되므로 처리 장치의 가격이 높아진다. 비교적
프로그램하기 쉬운 GPU를 사용하는 영상 처리 장치가 최근 각
광을 받고 있지만 그 가격 역시 고성능 CPU에 버금간다.
따라서 본 논문에서는 궁극적으로 최소 가격으로 대량 생산이
가능한 방식인 ASIC 제작이 가능하도록 FPGA를 이용한 스테
레오 영상을 고속으로 처리하는 장치를 제작하는 것을 목표로
Zynq-MPSoc를 이용하여 스테레오 카메라를 위한 고속 영상처
리 장치를 제작하였다. Zynq-MPSoc는 상대적으로 가격이 저렴
한 대용량의 FPGA와 4개의 A53 CPU를 가지고 있어 이기종
컴퓨팅 환경을 Embedded 보드로 구현 가능하며 스테레오 영상
을 고속으로 처리할 수 있다. 본 논문에서는 고속 영상처리 장
치를 구현하고 그 성능을 평가하기 위해 스테레오 카메라의 영
상을 실시간 처리가 가능한 지 평가하였다.
2. 본
서 배치가 정렬되어 있지 않으므로, 렌즈 보정(Lens Correction)
과 Epipolar Line을 일치시키는 작업인 Rectification을 수행해야
한다. 렌즈 보정을 위해 Camera Calibration이 선행되어야 하며,
그 결과로 얻어지는 카메라 파라미터를 이용하여 렌즈 보정 알
고리즘을 통해 영상의 왜곡을 제거한다. 왜곡이 제거된 영상이
라도 좌우 영상이 약간 어긋나 있으므로 이를 보정하여야
Rectification이 완료된 영상이 얻어진다. Rectification이 끝난 영
상에서 Feature를 추출하고 Matching을 통해 동일한 특징점이
좌우 영상에서 얼마나 차이가 있는지를 나타내는 Disparity
Map을 생성하게 된다. 이 때 적용되는 알고리즘으로 Block
Matching 방법을 사용한다. Block Matching 알고리즘은 스테레
오 영상에서 Disparity Map을 생성하는 가장 간단한 알고리즘
이다. Disparity Map은 16bit의 해상도로 Pixel에 대한 차이를
나타내고 있어, 이를 다시 실제 거리로 바꾸는 과정이 Depth
Map을 생성하는 과정이다. 이 때 카메라의 Base Line정보와 카
메라 파라미터를 이용하여 카메라가 바라보는 실제 거리를 구하
게 된다.
이 Depth Map을 이용하여 Post-Processing 단계에서 장애물을
회피하거나, SLAM 알고리즘을 이용하여 자신의 위치를 계산할
수 있다.
2.2 고속영상처리 시스템의 구조
2.2.1 Zynq-MpSoC의 구조
고속 영상처리 시스템의 가장 중요한 요소는 Zynq-MPSoc
(이하, Zynq)이다. Zynq는 크게 Processing System(PS)과
Programmable Logic(PL)로 나누어지며, PS는 Cortex A53
Quad Core, Cortex R7 Dual Core, Mali 400 GPU 등을 가지고
있으며, PL는 FPGA Block을 가지고 있다. PS와 PL사이의 통신
을 위해 AXI-BUS를 12개 가지고 있고, 기타 외부장치 인터페
이스를 위한 Peripheral를 가지고 있다. 다음은 Zynq의 블록도이
다.
론
2.1 스테레오 영상 처리 프로세스
스테레오 카메라를 이용하여 Depth 정보를 계산하기 위한 과
정은 다음과 같다.
1) 영상획득
2) Rectification
3) Disparity Map 생성
4) Depth Map 생성
먼저 카메라를 이용하여 동기화된 스테레오 영상을 획득한다.
스테레오 카메라 영상의 해상도는 640⨯480이고 8bit의 해상도
를 갖는다. 스테레오 카메라로 획득된 영상은 렌즈의 왜곡과 센
- 1 -
<그림 1> Zynq UltraScale+ MPSoC: Block Diagram
2.2.2 고속 영상처리 시스템의 구조
스테레오 영상을 위한 고속 영상처리 시스템은 다음 그림 1과
같은 구조로 되어 있다. 본 연구에서 사용한 스테레오 카메라는
위드로봇(주)의 oCamS-1CGN-U이다. 이 스테레오 카메라는
Global Shutter를 지원하고 최대 1280⨯960의 스테레오 영상을
45fps로 제공할 수 있으며, USB 인터페이스를 통해 영상을 획
득할 수 있다. 출력 영상은 Bayer RGB 형태이므로 영상 포맷을
변경하는 과정이 필요하고 이는 PS에서 이루어진다.
PL에서는 OpenCV가 제공하는 Rectification과 Block Matching
알고리즘을 FPGA에서 하드웨어 블록을 이용하여 구현하였다.
최대 640⨯480의 스테레오 영상을 처리할 수 있고, 설정을 통해
카메라 파라미터를 변경할 수 있다. Disparity Map을 계산하는
데 최대 10ms의 시간이 걸린다.
PL에서 계산된 Disparity Map은 다시 PS로 전달되어 4개의
A53코어를 이용하여 Depth Map을 생성한다. 최종 결과물인
Depth Map을 이더넷을 통해 호스트로 전송하여 Visualization
하였다.
Visualization을 위해 Host에 ROS (Robot Operating System)을
사용하였고 ROS에서 제공하는 여러 가지 도구들을 이용하여
Postprocessing 하였다.
구분 Rectification
PS
23.4ms
PL
4.9ms
PC
3.2ms
Matching
110.2ms
5.2ms
22.7ms
기타
Quad Cortex A53
FPGA
Intel NUC i5
2.5 적용 사례
2.5.1 Disparity Map
아래 영상은 좌측의 Rectification 영상과 우측의 Disparity Map
영상이며, 이를 Ethernet으로 전송 받아 Host에서 보여지는 영
상이다. Visualization을 위해 ROS에서 제공하는 RVIZ 패키지를
사용하였다.
<그림 3> Disparity Map Display
2.5.2 Point Cloud
ROS의 RTABMAP 패키지를 이용하여 Ethernet으로 입력 받
은 영상을 Point Cloud 정보로 변환한 영상은 다음과 같다.
View Point를 조정하여 보면 앞쪽의 박스의 위치와 뒤쪽 배경
이 떨어져 있음을 확인할 수 있다.
<그림 2> Block Diagram
2.3 FPGA HW Block의 Utilization
640⨯480의 스테레오 영상에 대해 Rectification 과 Block
Matching을 구현하기 위해 사용한 Zynq의 HW 블록의 크기와
전체 HW 블록의 정보는 다음 표 1과 같다.
<표 1> Zynq FPGA Utilization
Resource
LUT
LUTRAM
FF
BRAM
DSP
BUFG
MMCM
Utilization
26658
3171
29842
124
102
5
1
Available Utilization %
47232
56.44
28800
11.01
<그림 4> Point Cloud Display
94464
31.59
3. 결
론
150
82.67 스테레오 카메라 영상을 고속으로
처리하기
위해 Zynq를 이용
240
42.50 하여 고속 영상처리 보드를 제작하였고, Zynq
FPGA HW
196
2.55
Block을
활용하여,
스테레오
카메라
640
⨯
480의
스테레오
영상
3
33.33
Zynq의 BRAM 영역을 83%를 사용하고 있는데, Rectification
과정에서 데이터의 저장 공간으로 BRAM이 사용되므로 더 큰
해상도의 스테레오 영상을 처리하려면 BRAM 용량이 더 많이
필요하게 된다.
2.4 Processing Time
영상이 입력된 후 Rectification 과 Block Matching에 걸린 처리
시간은 표2와 같다. PS의 A53 Quad Core에서 OpenMP를 이용
한 처리시간보다 FPGA에서 계산하는 것이 매우 빠름을 알 수
있다. 비교를 위해 Intel NUC i5에서 처리한 시간도 표에 나타
내었다. PC에서 계산은 OpenCL을 통하여 GPU를 활용하여 처
리시간을 단축시킨 결과이다.
영상입력부터 Depth Map을 생성하는 전체 과정의 처리시간은
약 20ms로 측정 되었다. 따라서 영상포맷을 바꾸고, Disparity
Map을 Depth Map으로 변환하는데 약5ms가 걸린다.
을 Rectification과 Disparity Map을 10.1ms로 생성할 수 있음을
보였다. 영상 입력부터 Depth Map의 출력까지의 처리 시간은
20ms이므로 640⨯480의 스테레오 영상으로부터 50fps로 Depth
Map을 생성할 수 있음을 확인하였다. 추후 연구에서 FPGA의
용량이 더 큰 HW를 선택하여 1280⨯960의 영상을 처리하고,
Depth Map의 계산 및 영상 변환도 PL영역에서 구현하고자 한
다.
감사의 글
이 연구는 국토교통부 교통물류연구 “고령자 자립지원 개인
교통수단 개발(1615008899)”의 지원을 받아 이루어졌으며,
관련된 모든 연구기관에 감사드립니다.
<표 2> 단계별 처리 시간
- 2 -
[참 고 문 헌]
[1] Xilinx, “Zynq UltrasScale+ MPSoc Product Tables and
Product Selection Guide”
[2] Xilinx, “UltraScale and UltraScale+ FPGAs Packaging and
Pinouts Product Specification User Guide”
[3] 표윤석 “ROS 로봇 프로그래밍”
[4] 나갑주, 백웅기, 정영준, “임베디드 기기를 위한 이기종 멀티
코어 프로세서 및 소프트웨어 기술 동향”, ETRI, 2013
[5] docs.opencv.org, “OpenCV”
- 3 -
Download