Scale-Invariant Feature Transform (SIFT) là lời giải trong nghành Computer Vision, dùng để làm nhận dạng và diễn tả những điểm đặc trưng(local features) trong ảnh. Giải thuật lần đầu được trình làng bởi David Lowe năm 1999. Lời giải này(cùng cùng với giải thuật anh em là SURF) được ứng dụng rộng thoải mái trong nhận dạng đối tượng(object recognition), mô hình hóa 3D(3D modeling),...

Bạn đang xem: Sift là gì

Điểm quan trọng đặc biệt của SIFT nằm ngay trong cái brand name của nó Scale-Invariant, có nghĩa là nó sẽ giới thiệu các công dụng ổn định với đông đảo scale của ảnh khác nhau, trong khi cũng nói theo một cách khác giải thuật này có tính rotation-invariant.

Trong bài xích báo khoa học "Distinctive Image Features from Scale-Invariant Keypoints", SIFT được đặc tả rõ nét dưới tư giai đoạn(stages) chủ yếu sau:

Scale-space extrema detection.

Keypoint localization.

Orientation assignment.

Keypoint descriptor.

Sau đây, tôi sẽ trình diễn tư tưởng bình thường của từng giai đoạn:

1. Scale-space extrema detection

Chúng ta cùng cẩn thận ví dụ bên dưới đây:

*

Note: trong computer vision, họ thường định nghĩa form size các cửa sổ(window) rồi quét ảnh với các cửa sổ đó để tìm hầu hết đặc tính(feature) của ảnh.

Phía mặt trái bọn họ có 1 góc(corner) với size nhỏ, và cửa ngõ sổ(window) bao gồm kích thước hợp lý để nhận biết các keypoint, tuy nhiên với cùng kích thước cửa sổ và một góc có size lớn thì đã trở buộc phải bất hợp lý. Do đó, scale-space filtering được áp dụng để xử lý vấn đề này. SIFT tính DoG (Difference of Gaussians) trên từng pixel bằng cách lấy diff của Gaussian Blur với 2 sigma khác nhau. Sau khoản thời gian tính được DoG của toàn ảnh, xét bên trên từng pixel so sánh với 8 neighbors cùng 9 pixels tương ứng của scale ảnh ngay trên và 9 pixels tương ứng ở scale dưới, nếu px đó là local extrema (lớn nhất) thì nó sẽ được coi như là một keypoint sống scale đó. (potiental keypoint).

2. Keypoint localization

Khi đã mang được tất cả những potential keypoints của ảnh, việc cần làm tiếp sau là lọc để ra hồ hết kết quả đúng mực hơn, SIFT sử dụng chuỗi Taylor mở rộng để lấy vị trí của extrema đúng chuẩn hơn, rồi tiếp nối xét xem nếu như intensity của extrema đó nhỏ dại hơn giá trị ngưỡng (0.03) thì sẽ một số loại keypoint đó.

Bên cạnh đó, DoG khôn cùng nhạy cảm với edge(đường), để sa thải edge keypoint, SIFT dùng concept kiểu như Haris corner detector, nó dùng ma trận Hessian 2x2 để tính ra các đường cong chính. Lúc eigen value to hơn threshold nào kia thì keypoint đó sẽ ảnh hưởng loại.

Như trên, SIFT hoàn toàn có thể loại được keypoints gồm tương phản bội thấp, edge keypoint và giữ lại phần đa keypoint phải chăng hơn.

3. Orientation assignment

Một hoặc nhiều orientation (hướng) sẽ được gắn mang lại từng vị trí keypoint dựa trên image gradient. Các phép tính tiếp nối trên hình ảnh sẽ khớp ứng với từng orientation, scale cùng vị trí từng feature.

4. Keypoint descriptor

SIFT và tính Keypoint descriptor bằng phương pháp lấy 16x16 neighborhood(điểm ngay thức thì kề) của keypoint đó, rồi tạo thành 16 sub-blocks với form size 4x4. Với từng sub-block, ta sẽ tạo được 8 bin oritation (như hình dưới). Vì vậy tất cả sẽ sở hữu được 128 bin giá trị tương ứng với một vector bộc lộ cho keypoint descriptor.

*

SIFT trong OpenCV

Trong OpenCV có hỗ trợ của SIFT và SURF (một lời giải có mục tiêu giống SIFT, hiệu năng tốt hơn),

SIFT::operator()(InputArray img, InputArray mask, vector& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false)

Parameters:

img – đầu vào 8-bit grayscale image

mask – Optional input đầu vào mask that marks the regions where we should detect features.

keypoints – The input/output vector of keypoints

descriptors – The output matrix of descriptors. Pass cv::noArray() if you vày not need them.

Xem thêm: Từ Điển Anh Việt " Work Up Là Gì Và Cấu Trúc Cụm Từ Work Up Trong Câu Tiếng Anh

useProvidedKeypoints – Boolean flag. If it is true, the keypoint detector is not run. Instead, the provided vector of keypoints is used & the algorithm just computes their descriptors.

References

Distinctive Image Features from Scale-Invariant Keypoints

** Trong bài report lần tới, tôi sẽ tạo ứng dụng thực tế sử dụng SIFT/SURF ra mắt đến hồ hết người.**