5. SIFT part 3: Local Description SIFT

 Mở đầu

Tiếp sau bài viết về Corner Detection tại:

 https://hoanglong187.blogspot.com/2022/09/sift-part-1-corner-detection.html

Và bài viết về Image Processing Pyramid và Scale-Invariant Interest point dectector tại: https://hoanglong187.blogspot.com/2022/09/4-sift-part-2-scale-invariant-interest.html

Ta tiếp tục nghiên cứu về SIFT và làm sao áp dụng Corner Detection và những kiến thức khác


Scale-Invariant feature transform SIFT ( chuyển đổi feature theo đối tượng bất biến về kích thước) là 1 algorithm dùng để detect local features trong ảnh số (Lowe-2004). Nó xác định các key points (image region) và các thông tin định lượng cho object recognition

Local Features: SIFT descriptor vector
Ta đã có:
    - Harris corner detector đại diện cho phép quay (rotation)
    - Scale invariant interest points đại diện cho phép biến đổi tỉ lệ (scale)
    - Translation (tịnh tiến) invariant dựa vào window tiệm cận của điểm
Với invariances của 3 transformation trên, ta xây dựng SIFT Desctiptor
1. Scale invariant interest point detector cho ta mỗi scale p hợp lí nhất cho mỗi ketpoint
2. Từ đó, với mỗi keypoint, ta lấy Gaussian-blurred image tương ứng scale p
3. Tính gradient magnitude and orientation (độ lớn gradient và hướng vector) với neighborhood của mỗi keypoint
4. Tính dominant orientation của mỗi keypoint

    - Tính histogram (biểu đồ) of gradient orientations , chia theo các tập 10o để

giảm bớt khối lượng tính toán không cần thiết

    - Ta thấy rằng những điểm càng gần keypoint càng nên được chú ý hơn, nên ta thêm vào bảng weight (trọng lượng)
Từ đó ta chọn dominant orientation là highest peak trong histogram
5. Để cân bằng độ chính xác và độ phức tạp, ta cần tính 128 dimensional descriptor: trong 4x4 grid cell mỗi cell lại tính histogram của 8 tập hướng dựa trên dominant orientation (tính bước 4 128 lần)
    - Tính orientations relative to dominant orientation

     - Từ 4x4 grid cell. Mỗi grid cell tính histogram của 8 tập hướng
    
    - Thêm weight vào, ta có 1 vector cho 128D feature
Kết quả của 128 non-negative values này là raw version của SIFT descriptor vector
6. Ta có thể giảm thiểu ảnh hưởng của biến số bằng cách normalize: 
Hoặc làm tròn đến 0.2 rồi renormalize cho nhwungx bài toán lớn hơn như photometric variations

Có 2 biến thể thường dùng là:
    - PCA-SIFT: dùng PCA (hoặc linear dimensionality reduction khác) giảm 128D còn 10D   
    - Gradient location-orientation histogram (GLOH)

Image Features: Matching the Local Descriptors
Cách đơn giản: Compare them all (bởi Euclidean distance). Tìm closest match (match gần nhất) (min distance) và cặp gần thứ 2 (second closest match). Nếu cặp đầu nhỏ hơn nhiều cặp thứ 2 thì là match reliable ( có thể so sánh bằng tính tỉ lệ)
Để tránh quá nhiều, ta bỏ bớt false positives (incorrect matches being returned)false negatives (correct matches being missed) bằng cách sử dụng threshold

    Nếu backgrough 2 ảnh là 1 màu hoàn toàn (ví dụ đen) thì cũng sẽ không bị match điểm thuộc nền, vì grad = 0
Matching Planar Objects In New Viewpoints
Đầu tiên ta nhìn lại tính chất các phép 2D Linear Transformations (Affine space):
Còn với Transformation: 


Vậy về mặt toán học, để chuyển hình A từ (xi, yi ) thành (xi', yi'):

Hay có thể viết dạng simple linear system là:
Dù có rất nhiều dạng này, nhưng tổng hợp lại, ta chỉ cần 3 matches (từ 6 parameters) như thế
Vậy các bước làm là:
    - Tính image features cho I và J
    -  Match features giữa I và J
    - Tính affine transformation A giữa I và J bằng cách dùng least square trong tập matches

Vấn đề thêm: Robustness
Có các match inliers và outliers


==> RANSAC (RAndom SAmple Consensus)
Ý tưởng gần giống Linear Regression

Mục tiêu: 


Tóm tắt 
Implement
Ta thử implement SIFT algorithm với library OpenCV với hướng dẫn từ: https://www.analyticsvidhya.com/blog/2019/10/detailed-guide-powerful-sift-technique-image-matching-python/



Notebook tại:

Tham khảo

https://www.i2tutorials.com/what-are-sift-and-surf/

http://www.cs.toronto.edu/~fidler/slides/2021Winter/CSC420/lecture8.pdf

https://www.cs.utoronto.ca/~fidler/teaching/2021/CSC420.html

- https://www.analyticsvidhya.com/blog/2019/10/detailed-guide-powerful-sift-technique-image-matching-python/

Nhận xét