고속영상처리 애플리케이션을 위한 FPGA 프로그래밍
최근 머신비전 시장은 실시간 고속 애플리케이션을 위한 수요가 계속 증가 하고 있고
고속 처리를 위해 일반적인 CPU 방식, 병렬 처리 GPU 방식,
실시간 FPGA pre-processing 방식 등이 많이 사용되고 있다. PC 기반 내에서의 처리는
이미 한계에 도달해 이에 따른 솔루션 준비가 필요한 시점이다. ‘VisualApplets’은
이런 요구에 대응할 수 있는 하나의 솔루션으로 활용이 가능한 제품이다.
머신비전 세미나(Machine Vision Seminar)에서 다트비전 기술연구소 김상래 부장이 발표한 ‘VisualApplets’ 제품을 살펴본다.
▲ 김상래 부장
FPGA(Field Programmable Gate Array)는 비메모리 반도체의 일종이며, 회로변경이 가능해 사용자가 직접 프로그램을 썼다, 지웠다를 반복 할 수 있다. 현재 머신비전에서 다양하게 활용 중이고 카메라에도 기본 탑재돼 있다. 실시간 고속 애플리케이션을 위해서는 FPGA가 필수다. 이미지 프로세싱에서 FPGA를 사용하는 목적은 CPU의 Charging(충전)없이 연속적인 연산을 수행 할 수 있으며 또한, 실시간 처리 구현이 가능하기 때문이다.
▲ SmartApplets Example(Adaptive binarization)
실시간 고속 애플리케이션을 위해서는 FPGA가 필수
VisualApplets은 기존 VHDL(디지털 회로 및 혼합 신호를 표현하는 하드웨어 기술 언어) 또는 베릴로그(전자 회로 및 시스템에 사용되는 하드웨어 기술 언어)언어를 기반으로 하는 프로그래밍 방식이 아닌, 차세대 FPGA 프로그래밍 소프트웨어라 할 수 있는 고급 이미지 프로세싱 라이브러리와 하이레벨 디자인 엔트리, 실제 이미지 영상을 이용한 시뮬레이션 툴(tool)을 제공해 사용자가 FPGA 프로그래밍을 빠르고 효율적으로 접근하면서, 바로 결과를 확인할 수 있다.
이와 함께, 전기회로(Circuitry)나 타이밍(timing), FPGA 프로그래밍에 대한 기본 지식이 없어도 FPGA 프로그래밍 접근이 가능해 애플리케이션 엔지니어, 소프트웨어 엔지니어, 머신 비전 전문가라면 누구나 손쉽게 툴(tool)을 사용할 수 있다.
▲ VisualApplets DEMO
‘VisualApplets’ 툴 특징
VisualApplets 툴(tool)의 주요 특징은 사용자 편의 기반의 GUI(Grap-hical user interface)환경에서 200여 가지의 오페레이터(operator)를 조합해 FPGA 프로그램을 설계하고, 설계한 디자인은 실제 이미지 파일을 통한 시뮬레이션으로 보다 빠르게 결과를 예측할 수 있다.
embedded VisualApplets은 자일링스 칩(Xilinx chip)을 사용한 모든 제품에 적용이 가능한다. 특히 스마트 카메라 제작에 큰 이점이 있어 유용하게 접근할 수 있고 사용자가 직접 유지보수할 수 있다.
VisualApplets을 통해 만들어진 파일인 SmartApplets은 Visual Applets과 자일링스(Xilinx)ISE 소프트웨어가 필요 없고 사용자는 파라미터(매개변수)조절만으로도 FPGA 도움을 받아 실시간 고속 처리를 할 수 있다. 대표적인 SmartApplets은 Adaptive binarization, Blob, 3D Laser Triangulation 등이 있다. 일반적인 Threshold(임계)값 변경으로는 좋은 영상을 표현하기 어렵지만, Adaptive binarization을 적용하면 좀 더 좋은 영상을 표현할 수 있다. 머신비전에서 많이 사용되는 기능 중 하나인 blob의 경우도 FPGA에서 처리가 가능해 검출된 object(대상물)의 특징을 토대로 패턴 매칭에 응용이 가능하다. 3D 애플리케이션(appl-ication)에 여러 가지 방식이 있지만 그중 레이저 프로필(Laser pro-file)을 이용한 방식도 많이 이용되고 있다. 레이저(laser)영상의 peak(정점)좌표를 토대로 3D 애플리케이션(application)에 적용할 수 있다.
VisualApplets DEMO
GigE Bayer color 카메라로부터 Raw Data(원 데이터)영상을 받아 3x3 de-bayering 변환후, 이 영상에서 다시 HSI컬러 영상을 축출한다. 축출된 HSI 영상을 통해 찾고자 하는 컬러(color)값을 비교해 특정 색상만을 축출한다. 이를 실무에 응용하면, 여러 개의 동일 색상 제품 중 다른 색상의 제품을 찾아 검출 하는 애플리케이션(application)에 적용이 가능하다. 이런 일련의 과정을 CPU에서 할 경우, CPU 부담은 증가될 수 밖에 없고, CPU 자원을 다른 곳에 활용하는데 제한적일 수 밖에 없다.
FPGA에서 이런 과정을 수행 한다면, 남는 CPU 자원을 보다 많은 곳에 활용할 수 있다.
정리 최천욱 기자 (atided@hellot.net)