Các ứng dụng của SIFT/SURF
Ở bài trước, tôi đã giới thiệu với các bạn lý thuyết của giải thuật Scale Invariant Feature Transform(SIFT) https://viblo.asia/dzung.votuan/posts/z3NVRkoLR9xn . Trong bài viết lần này, tôi xin giới thiệu một giải thuật nữa là Speeded up robust features(SURF), cũng nhằm mục đích để tìm những feature ...
Ở bài trước, tôi đã giới thiệu với các bạn lý thuyết của giải thuật Scale Invariant Feature Transform(SIFT) https://viblo.asia/dzung.votuan/posts/z3NVRkoLR9xn . Trong bài viết lần này, tôi xin giới thiệu một giải thuật nữa là Speeded up robust features(SURF), cũng nhằm mục đích để tìm những feature point của ảnh nhưng đúng với cái tên "Speeded up", tốc độ xử lý của SURF nhanh gấp nhiều lần so với SIFT.
Giới thiệu về SURF
Bạn đang làm một dự án về Augmented Reality(AR)? Có bao giờ bạn tự hỏi làm thế nào chương trình có thể detect được đối tượng (đã được train từ trước đó)? SURF chính là một cách tiếp cận với bài toán Object Recognition này.
SURF cũng gồm các bước như ở SIFT:
- Scale-space extrema detection.
- Keypoint localization.
- Orientation assignment.
- Keypoint descriptor.
Nhưng, ở từng bước SURF sẽ có những sự cải thiện để cải thiện tốc độ xử lý mà vẫn đảm bảo độ chính xác trong việc detection.
Ở SIFT, việc tìm Scale-space dựa trên việc tính gần đúng LoG (Laplace of Gaussian) dùng DoG (Difference of Gaussian), trong khi đó SURF sử dụng Box Filter, tốc độ xử lý sẽ được cải thiện đáng kể với việc dùng ảnh tích phân (integral image)
Ở bước Orientation Assignment, SURF sử dụng wavelet response theo 2 chiều dọc và ngang, sau đó tính hướng chính bằng cách tính tổng các response đó, có một điều đáng chú ý là wavelet response cũng dễ dàng tính được với ảnh tích phân (integral image)
SURF trong OpenCV
C++: SURF::SURF(double hessianThreshold, int nOctaves=4, int nOctaveLayers=2, bool extended=true, bool upright=false )
_Parameters: _
hessianThreshold – Threshold for hessian keypoint detector used in SURF.
nOctaves – Number of pyramid octaves the keypoint detector will use.
nOctaveLayers – Number of octave layers within each octave.
extended – Extended descriptor flag (true - use extended 128-element descriptors; false - use 64-element descriptors).
upright – Up-right or rotated features flag (true - do not compute orientation of features; false - compute orientation).
Demo SURF
Sau đây tôi xin giới thiệu một ứng dụng một ứng dụng của SURF, đó là Object Recognition and Tracking.
Chương trình sẽ được train trước ảnh object cần track, lấy từng frame từ VideoCapture, nhận dạng object và track object theo từng framge.
References
- http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_surf_intro/py_surf_intro.html
- http://www.vision.ee.ethz.ch/~surf/eccv06.pdf