Ⅰ. 서 론
컴퓨터 비전 기술은 최근 의료, 재활, 상업, 엔터테인먼트, 교육, 군사, 보안, 자동차등의 생활 전 분야에 걸쳐 폭넓게 활용되고 있다. 영상처리 기반의 컴퓨터 비전 기술 분야에서 깊이 영상을 활용한 연구는 종래에도 활발히 진행 되어 왔으나 깊이 영상의 획득이 쉽지 않아 한정된 분야에서만 사용해 왔다. 그러나 Microsoft Kinect의 등장으로 깊이 영상에 대한 접근성이 용이해졌으며 다양한 영상처리 분야에서 보다 쉽게 적용할 수 있게 되었다. 특히, 컴퓨터 비전 기술의 핵심 요소로서 사람의 행동 및 고유 특성을 인식하는 모션 인식 분야에서는 깊이 영상을 이용한 연구가 활발하게 이루어지고 있다[1-3].
그러나 깊이 측정 센서는 적외선 패턴 투사 방식을 사용하여 깊이 영상을 획득하기 때문에 같은 영역을 고정된 위치에서 촬영 한다 할지라도 측정된 모든 프레임의 데이터가 동일하지 않다. 또한, 깊이 측정 센서의 위치와 각도에 따라 깊이 측정 정보가 급격히 변한다. 이러한 깊이 영상의 노이즈 성분은 모션 인식 시스템의 성능저하의 가장 큰 원인이 된다[4]. 모션 인식 시스템에서 움직이는 객체 검출 과정이나 로봇 네비게이션의 바닥면 검출 등에 깊이 영상을 효율적으로 적용하기 위해서는 깊이 영상 기반 시스템의 전처리 과정으로 깊이 영상 안정화 과정이 필수적이다.
기존의 깊이 영상 안정화를 위한 방법에서는 시간 및 공간 영역에서 다양한 필터를 적용하였다[5,6]. 하지만 APU(Application Processing Unit)만을 사용함에 따라 다기능을 동시에 수행하는 것이 불가능 하고 순차적인 연산으로 인하여 처리 시간이 오래 걸리는 단점이 있다. 따라서 본 논문에서는 고성능이면서 연산 복잡도가 낮은 형태의 깊이 영상 안정화 방법을 하드웨어로 구현하고 APU와 FPGA(Field Programmable Gate Array)를 연동한 환경에서 검증 하고자 한다. 하드웨어 IP는 고속화와 저전력, 고성능의 시스템 구현이 가능하게 한다.
본 논문의 Ⅱ장에서는 시간 및 공간 영역에서의 깊이 영상의 안정화 방법에 대해 논하고 Ⅲ장에서는 본 논문에서 제안하는 시스템의 하드웨어 설계에 대해 기술하고 합성결과와 FPGA를 이용한 실시간동작에 대하여 논한다. IV장에서는 제안된 시스템의 시뮬레이션 결과에 대하여 논하고 V장에서는 결론을 도출한다.
Ⅱ. 깊이 영상 안정화 방법[7]
그림 1은 깊이 측정 센서를 이용하여 촬영한 영상이다. 그림 1의 (a)는 컬러영상이고, 그림 1의 (b)는 깊이 영상이다. 그림 1의 (b)에 그레이 스케일로 표현된 영역은 깊이 정보로써 깊이 센서의 측정 가능 영역인 1~4m 범위 내의 데이터가 12bit로 표현된 정보이다. 검은색으로 표현된 영역은 측정 불가능한 영역으로 측정 가능범위를 벗어난 영역이다. 본 논문에서는 깊이 영상의 안정화를 위하여 윈도우 마스크를 이용한 공간 영역 안정화를 수행한 후 이전 프레임 정보와 현재 프레임 정보를 이용한 시간 영역 안정화 방법을 사용하였다.
그림 1.컬러 영상과 깊이 영상 (a) 컬러 영상 (b) 깊이 영상 Fig. 1 Color image and depth image (a) Color image (b) Depth image
2.1. 공간 영역 안정화
깊이 측정 센서의 위치와 각도에 따른 노이즈 성분을 제거하기 위하여 공간 영역 안정화가 적용 되었다. 그림 2에는 공간 영역 안정화를 위한 3×3 윈도우 마스크를 나타내었다. an은 해당 픽셀에 적용되는 계수를 의미한다. 센터 픽셀 P0(x,y)의 깊이 영상은 수식 (1)을 사용하여 연산한다.
그림 2.공간 영역 안정화 마스크 Fig. 2 Spatial domain stabilization mask
2.2. 시간 영역 안정화
시간 영역 안정화는 이전 프레임과 현재 프레임의 깊이 영상을 비교하여 깊이 영상의 변화 속도를 감소시킨다. 시간 영역 안정화는 수식 (2)를 사용한다. Pi(x,y)는 프레임의 깊이 영상을 의미하며 Pi-1(x,y)는 이전 프레임의 깊이 영상을 의미한다. 두 가중치 α와 β의 합이 1이다.
Ⅲ. 하드웨어 구현
그림 3은 제안하는 하드웨어의 블록도이다. 깊이 안정화 하드웨어는 공간 영역 안정화 모듈과 시간 영역 안정화 모듈로 나누어진다. 공간 영역 안정화 모듈은 12bit의 깊이 영상을 입력으로 받는데 이는 깊이 측정센서의 측정 범위가 1~4m의 범위를 mm단위의 정수 형태로 표현하기 때문에 12bit를 사용한다. 공간 영역 안정화 모듈에서는 3×3 마스크 연산을 수행하기 때문에 라인 메모리가 필요하다. 필요한 라인 메모리의 크기는 640×12bit×2EA가 되는데 읽기와 쓰기를 동시에 수행할 수 있도록 하기 위해 320×24bit×2EA의 SRAM을 사용하였다.
그림 3.제안한 하드웨어 블록 다이어그램 Fig. 3 Proposed hardware block diagram
공간 영역 안정화에서 출력되는 깊이 영상은 마스크 연산으로 인해 1라인의 지연이 발생한다. 그림 4는 SRAM1 Controller의 동작을 나타낸 것이다. 두 픽셀의 깊이 영상 정보를 하나의 주소 값에 할당하여 쓰기와 읽기 동작을 수행한다.
그림 4.메모리 컨트롤러 파형 Fig. 4 Simulation waveform of the memory controller
시간 영역 안정화 모듈에서는 이전 프레임과 현재 프레임의 깊이 영상 정보가 필요하기 때문에 프레임 메모리를 필요로 한다. 본 논문에서는 하드웨어의 자원을 절약하기 위해 국소적인 영역의 후보군에 대해서만 시간 영역 안정화를 수행하기 때문에 라인 메모리를 사용하였다. 이는 깊이 영상 기반 시스템에서 관심 영역의 특징을 추정하기 위한 시스템에 효율적으로 적용 가능하다[8]. 시간 영역 안정화 모듈에서 입력으로 사용하는 신호 start_x_pos와 start_y_pos가 바닥 후보군이 시작하는 위치이고 delta_x와 delta_y는 바닥 후보군간의 간격을 위한 파라미터이다. point_gap은 후보군의 거리 조정을 위한 값이고 num_of_candidate는 사용할 후보군의 수를 조절하는 파라미터로 최소 16개에서 최대 128개의 후보군을 사용할 수 있다. 하나의 후보군은 3개의 포인트로 구성된다. temporal_alpha는 수식 (1)에서 사용하는 가중치 α를 의미한다. SRAM2에 저장되는 데이터의 형태는 해당 픽셀의 좌표와 깊이 영상을 함께 저장하는데 픽셀의 좌표 x, y가 각각 10bit, 9bit이다. 입력되는 12bit의 깊이 영상은 수식 (1)를 거치면서 소수점을 포함하게 되므로 소수점 4bit를 포함하여 16bit의 깊이 영상을 저장한다. 따라서 시간 영역 안정화 모듈에 필요한 메모리는 128개의 후보군이 존재하고 각 후보군이 세 개의 포인트로 구성이 되며 저장되는 정보가 35bit이기 때문에 128×35bit×3EA가 된다. 그림 5는 시간 영역 안정화와 공간 영역 안정화 모듈의 시뮬레이션 동작을 나타낸 것이다.
그림 5.깊이 영상 안정화 하드웨어 시뮬레이션 파형 Fig. 5 Simulation waveform of the depth image stabilization
그림 6은 설계한 하드웨어를 실시간으로 검증하기 위한 실시간 검증 시스템을 도시화 한 것이다. 깊이 센서에서 PC로 입력되는 깊이 영상을 USB 2.0 프로토콜을 사용하여 DDR3 Memory에 쓰게 되고 전송이 완료되면 APU가 FPGA를 동작시킨다. FPGA의 동작이 완료되면 인터럽트 신호를 발생시키고 APU가 인터럽트에 반응하여 PC로 처리 완료 신호를 전달한다. PC는 처리 신호를 받으면 DDR3 Memory에 저장된 출력 영상을 가져와서 디스플레이 한다.
그림 6.제안한 시스템을 검증하기 위한 FPGA Board Fig. 6 FPGA Board for the Proposed System Verification
표 1은 본 논문에서 제안한 깊이 영상 안정화 하드웨어를 Xilinx Design Analyzer로 XC7Z45FFG900-1 보드를 타겟으로 합성한 결과이다. Slice Registers는 1,570개가 소모되어 전체 사용 가능한 용량의 0.36%를 사용하였다. Slice LUTs는 1,514개가 소모되어 전체 사용가능한 용량의 0.69%가 사용되었다. BUFG/BUFCTRLs는 1개를 사용하여 3.13%를 사용하였으며 DSP48-E1s는 4개를 사용하여 0.44%를 사용하였다. 하드웨어의 동작에 필요한 최소 시간은 4.946ns측정되어 최대 202.184MHz까지 동작할 수 있으며 총 소모 클럭은 654클럭을 소모한다.
표 1.*IDEC의 EDA Tool을 제공받아 수행하였음.
Ⅳ. 시뮬레이션 결과
본 논문에서 제안한 시스템은 Microsoft Kinect 거리측정 센서로부터 640×480 크기의 깊이 영상을 입력으로 하여 Microsoft Visual Studio 2010과 OpenCV를 이용한 검증 프로그램을 통하여 성능을 검증하였다. 또한, Verilog로 구현한 제안된 하드웨어 시스템은 FPGA와 APU를 연동하여 확인 가능한 Zynq-7000 FPGA Board를 이용하여 실시간 처리를 검증 하였다.
그림 7은 공간 영역 안정화 모듈에 대한 시뮬레이션 결과이다. 그림 7의 (a)는 입력 깊이 영상이고 영상에 도시된 Start Point (height=450)와 End Point (height=350)는 수직 방향의 깊이 정보 변화를 측정하기 위한 영역이다 . 그림 7의 (b)는 입력되는 깊이 영상의 수직 방향깊이 정보이고 그림 7의 (c)는 공간 영역 안정화의 수직방향 깊이 정보를 나타낸 그래프이다. 그래프의 x축은 깊이 영상의 Height를 나타내고 y축은 깊이 정보이다. 그림 7의 (b)에 나타난 수직 방향 깊이 정보의 증가 폭은 크게 나타나지만 그림 7의 (c)는 상대적으로 증가폭이 감소 한 것을 알 수 있다. 따라서 공간 영역 안정화는 동일 프레임 내에서 발생하는 노이즈를 효과적으로 제거 가능한 것을 확인 할 수 있다.
그림 7.공간 영역 안정화 시뮬레이션 결과 (a) 입력 깊이 영상(b) 원본 깊이 정보 (c) 공간 영역 안정화된 수직 방향 깊이 정보 Fig. 7 Simulation result of spatial domain stabilization (a) Input depth image (b) Original depth data (c) Spatial domain stabilization depth data
그림 8은 시간 영역 안정화 시뮬레이션 결과이다. 시간 영역 안정화의 성능 비교를 위하여 100프레임의 연속된 깊이 영상에서 동일한 한 지점의 깊이 정보 변화를 측정한 것이다. 깊이 정보 변화 그래프의 x축은 프레임을 나타낸 것이고, y축은 깊이 정보를 나타낸 것이다. 그림 8의 (a)는 입력 깊이 영상의 정보이고 그림 8의 (b)는 공간 영역 안정화만 적용한 깊이 정보의 변화이다.
그림 8.시간 영역 안정화 시뮬레이션 결과 (a) 입력 깊이 정보 (b) 공간 영역 안정화를 적용한 깊이 정보 (c) 공간 및 시간 영역 안정화를 적용한 깊이 정보 Fig. 8 Simulation result of temporal domain stabilization (a) Input depth data (b) Temporal domain stabilization data (c) Spatial and temporal domain stabilization data
그림 8의 (c)는 공간 영역 안정화와 시간 영역 안정화를 적용한 깊이 정보 변화를 나타낸 결과이다. 그림 8의 (a)의 평균 깊이 정보 변화폭은 9.3이고 그림 8의 (b)의 평균 깊이 정보 변화 폭은 7.2이다. 그림 8의 (c)에서는 평균 깊이 정보 변화 폭이 1.8로써 연속된 프레임 간의 깊이 영상의 차이가 효과적으로 감소하였다.
그림 9는 깊이 영상의 안정화 성능 판단을 위하여 모션인식을 위한 바닥 제거 시스템[6]에 적용한 결과이다. 그림 9의 (a)는 컬러 영상이고 그림 9의 (b)는 입력 깊이 영상이다. 그림 9의 (c)는 깊이 영상 안정화를 적용하지 않은 결과 영상이고 그림 9의 (d)는 제안한 깊이 영상 안정화 하드웨어를 적용한 결과 영상이다. 깊이 영상을 안정화를 수행하지 않았을 때 에는 바닥면의 일부분이 가능 영역의 최대지점까지 바닥면이 제거 되었다. 이를 통해 공간 필터와 시간필터를 직렬로 연결함으로써 깊이 영상을 안정화 시키고 시스템의 신뢰성이 향상됨을 알 수 있다.
그림 9.시뮬레이션 결과 (a) 컬러 영상 (b) 입력 깊이 영상 (c) 깊이 영상 안정화를 적용하지 않은 결과 영상 (d) 제안한 방법 결과 영상 Fig. 9 Simulation result (a) Color image (b) Input depth image (c) Original algorithm output image (d) Proposed stabilization output image
Ⅴ. 결 론
본 논문에서는 깊이 측정 센서에서 발생하는 노이즈를 억제하고 깊이 영상 기반의 시스템의 성능 향상을 위한 깊이 영상 안정화 하드웨어 구현방법을 제안하였다. 제안한 방법은 공간 영역과 시간 영역에서 안정화를 수행함으로써 깊이 영상의 노이즈를 효과적으로 제거 가능함을 시뮬레이션 결과를 통하여 확인 할 수 있다. 또한 Verilog를 이용하여 설계한 하드웨어 시스템은 CPU와 FPGA를 연동하여 검증 가능한 환경에서 실제 동작을 확인하였다. 본 논문에서 제안한 하드웨어 구조는 메모리와 연산 로직을 효율적으로 구현하여 1% 미만의 하드웨어 자원을 소모 하였고 Zynq-7000 FPGA Board로 합성 시 최대 동작주파수가 202.184MHz로 실시간 처리가 가능 한 것을 확인 하였다.
References
- Jungong Han, Ling Shao, Dong Xu and Shotton., “Enhanced computer vision with microsoft kinect sensor: A Review,” IEEE Transactions on Cybernetics, Vol. 43, no. 5, pp. 1318-1334, Oct. 2013. https://doi.org/10.1109/TCYB.2013.2265378
- Jichan Lee, S. Lim, J. Kim and B. Kim, "Moving object detection using background subtraction and motion depth detectionin depth image sequences," in proceeding of the IEEE International Symposium on Consumer Electronics, Jeju, pp.1-2, June. 2014.
- Chenyang Zhang, YingLi Tian, "Edge Enhanced Depth Motion map for Dynamic Hand Gesture Recognition," in proceeding of the IEEE Conference on Computer Vision and Pattern Recognition Workshops, Portland, pp.500-505, June. 2013.
- Mallick, T, Das, P.P and Majumdar, A.K,, “Characterizations of noise in Kinect depth images: A Review,” IEEE Sensors journal, Vol 14, no. 6, pp. 1731-1740, Nov. 2014. https://doi.org/10.1109/JSEN.2014.2309987
- Tatong Xu, Xin Jin and Qionghai Dai, "Spatial-temporal depth de-noising for Kinect based on texture edge-assisted depth classification," in proceeding of the 19th International Conference on Digital Signal Processing, Hong Kong, pp. 327-332, Aug. 2014.
- Matyunin, S, Vatolin, D, Berdnikov, Y and Smirnov, M, "Temporal filtering for depth maps generated by Kinect depth camera," in proceeding of the 3DTV Conference, Antalya, pp. 1-4, May. 2011.
- Geun-Jun Kim, Gippeum Jo, Hosang Cho, Bongsoon Kang, "Depth data smoothing method for the motion recognition pre-processing system," in proceeding of the Information and Control Symposium, Seoul, pp. 22-23, April. 2014.
- Kyounghoon Jang, Hosang Cho, Geun-Jun Kim and Bongsoon Kang, "A Floor Plane Removal System Using Depth Information for Motion Recognition System," in proceeding of the International Conference on Information Technology Convergence and Services, Taiwan, pp. 33-38, Oct. 2014.