Abstract
SURF is an algorithm which extracts feature points and generates their descriptors from input images, and it is being used for many applications such as object recognition, tracking, and constructing panorama pictures. Although SURF is known to be robust to changes of scale, rotation, and view points, it is hard to implement it in real time due to its complex and repetitive computations. Using 3.3 GHz Pentium, in our experiment, it takes 240ms to extract feature points and create descriptors in a VGA image containing about 1,000 feature points, which means that software implementation cannot meet the real time requirement, especially in embedded systems. In this paper, we present a hardware architecture that can compute the SURF algorithm very fast while consuming minimum hardware resources. Two key concepts of our architecture are parallelism (for repetitive computations) and efficient line memory usage (obtained by analyzing memory access patterns). As a result of FPGA synthesis using Xilinx Virtex5LX330, it occupies 101,348 LUTs and 1,367 KB on-chip memory, giving performance of 30 frames per second at 100 MHz clock.
SURF는 영상의 특징점을 추출하고 서술자를 생성하는 알고리즘으로 객체인식 및 추적, 파노라마 이미지 생성 등 여러 영상처리 시스템에 응용되고 있다. SURF 알고리즘은 영상의 크기, 회전, 시점 등의 변화에 강인한 특징을 갖지만 복잡하고 반복적인 연산이 많아 실시간 처리가 어렵다. 실제 PC(Pentium, 3.3GHz) 환경에서 1000개 정도의 특징점이 추출되는 VGA($640{\times}480$) 해상도의 영상을 이용하여 실험한 결과 특징점 추출 및 서술자 생성에 총 240ms 이상이 걸려 약 4frame/sec로 실시간 처리가 불가능한 것을 확인하였다. 본 논문에서는 SURF 알고리즘의 메모리 접근 패턴을 분석하여 라인 메모리를 효율적으로 구성해 메모리 사용을 최소화하고 반복적으로 수행되는 연산을 병렬처리 하는 방법으로 하드웨어를 설계하였다. 하드웨어 설계 검증 결과 Xilinx사의 Virtex5LX330 FPGA를 타겟으로 합성 시 101,348LUTs(66%)와 1,367KB의 내부 메모리를 사용하고, 100MHz 동작 클록에서 30 frame/sec로 실시간 처리가 가능함을 볼 수 있었다.