Tuesday, March 13, 2012

Reading Digest::SURF

I am reading SURF feature detector/descriptor/match these days. A major paper is by Herbert Bay and et al, called SURF: Speeded Up Robust Features[1].

Speeded Up Robust Features(SURF) is a kind of scale-invariant and rotation-invariant features based on Hessian Matrix. Compared with SIFT and other approach to point features, it approximates or even outperforms repeatability, distinctiveness and robustness, yet can be computed and compared much faster[1].

The SURF method could be applied to sequential frames sampled by the Kinect RGB camera as well as the structured IR depth camera for global map registration and pose estimation. The scale-invariant and rotation-invariant properties fit the requirement of 3D reconstruction.

According to the paper[1], I found a couple of potential implementations could be done on CUDA to improve performance of real-time processing. So far they are
Detector
(1) Integral image: SURF uses integral image for convolution, which means an image point is represented as the sum of all pixels in the input image of a rectangular region formed by the point and the origin. This could be optimized by using multiple threads with CUDA.
(2) Filter parallelism: The approximation of 2nd order Gaussian derivatives with integral image are independent of size, which enable parallelism in applying filters of different scales to images.
(3) Point-wise calculation: Convolution and other operation may involve point-wise operations, which could be optimized by well-designed kernel function with techniques such as coalescing, tiling. This idea should work with the rest of the steps.

Descriptor
more to read...

Matching
more to read...

Reference
[1] Herbert Bay, Tinne Tuytelaars, Luc Van Gool, SURF: Speeded Up Robust Features, 

No comments:

Post a Comment