Biến đổi đặc trưng bất biến theo tỷ lệ (SIFT) là gì?
Khám phá thuật toán SIFT. Tìm hiểu SIFT là gì và các tính năng mạnh mẽ của nó đối với thị giác máy tính bất biến theo tỷ lệ. Cải thiện quá trình xử lý ảnh của bạn.

Để hình dung trực quan các khái niệm được đề cập trong bài viết này, hãy xem video bên dưới.
Ngày nay, nhiều thiết bị thông minh mà chúng ta sử dụng, từ điện thoại và camera đến các hệ thống nhà thông minh, được tích hợp các giải pháp AI có thể nhận diện khuôn mặt, vật thể và thậm chí toàn bộ cảnh quan. Khả năng này đến từ computer vision, một lĩnh vực của trí tuệ nhân tạo cho phép máy móc hiểu và diễn giải hình ảnh, video.
Ví dụ, nếu bạn chụp một bức ảnh Tháp Eiffel từ bất kỳ góc độ hoặc khoảng cách nào, thiết bị của bạn thường vẫn có thể nhận diện tháp bằng computer vision và sắp xếp ảnh vào đúng thư mục trong thư viện. Dù nghe có vẻ đơn giản, việc nhận diện vật thể không phải lúc nào cũng dễ dàng. Hình ảnh có thể trông rất khác nhau tùy thuộc vào kích thước, góc chụp, scale hoặc điều kiện ánh sáng, khiến máy móc khó nhận diện chúng một cách nhất quán.
Để giải quyết vấn đề này, các nhà nghiên cứu đã phát triển một thuật toán computer vision có tên Scale Invariant Feature Transform, viết tắt là SIFT. Thuật toán này cho phép phát hiện vật thể trong nhiều điều kiện quan sát khác nhau. Do David Lowe tạo ra vào năm 1999, SIFT được thiết kế để tìm và mô tả các keypoint độc đáo trong ảnh, chẳng hạn như góc, cạnh hoặc mẫu hình vẫn có thể nhận diện được ngay cả khi ảnh được thay đổi kích thước, xoay hoặc chiếu sáng khác đi.
Trước khi các model computer vision dựa trên deep learning như Ultralytics YOLO11 trở nên phổ biến, SIFT là một kỹ thuật được sử dụng rộng rãi trong computer vision. Đây là phương pháp tiêu chuẩn cho các tác vụ như nhận diện vật thể, trong đó mục tiêu là xác định một vật thể cụ thể trong ảnh, và ghép ảnh, trong đó các ảnh được căn chỉnh bằng cách tìm những đặc trưng ảnh trùng lặp.
Trong bài viết này, chúng ta sẽ tìm hiểu SIFT qua phần tổng quan ngắn về khái niệm, cách hoạt động ở cấp độ cao và tầm quan trọng của nó trong quá trình phát triển của computer vision. Hãy bắt đầu!
Tại sao thuật toán SIFT thiết yếu đối với computer vision#
Trong một hình ảnh, một vật thể có thể xuất hiện theo nhiều cách khác nhau. Ví dụ, một chiếc cốc cà phê có thể được chụp từ trên xuống, từ bên cạnh, dưới ánh nắng mạnh hoặc dưới ánh đèn ấm. Cùng một chiếc cốc cũng có thể trông lớn hơn khi ở gần camera và nhỏ hơn khi ở xa.
Tất cả những khác biệt này khiến việc dạy máy tính nhận diện vật thể trở nên phức tạp. Tác vụ computer vision này, được gọi là object detection, yêu cầu các model Vision AI xác định và định vị vật thể chính xác, ngay cả khi kích thước, góc hoặc điều kiện ánh sáng của chúng thay đổi.
Để thực hiện điều này, computer vision dựa vào một quy trình gọi là feature extraction hoặc phát hiện đặc trưng. Thay vì cố gắng hiểu toàn bộ hình ảnh cùng lúc, một model sẽ tìm kiếm các đặc trưng ảnh khác biệt như góc sắc nét, mẫu hình độc đáo hoặc kết cấu vẫn có thể nhận diện được ở nhiều góc, scale và điều kiện ánh sáng.
Cụ thể, đó chính là mục đích của Scale Invariant Feature Transform, hay SIFT. SIFT là một thuật toán phát hiện và mô tả đặc trưng có thể xác định vật thể trong ảnh một cách đáng tin cậy, bất kể chúng được chụp như thế nào.
Đạt được scale invariance#
Thuật toán SIFT có một số thuộc tính quan trọng khiến nó hữu ích cho việc nhận diện vật thể. Một trong những thuộc tính chính được gọi là scale invariance. Điều này có nghĩa là SIFT có thể nhận diện nhiều phần khác nhau của vật thể, dù vật thể trông lớn và ở gần camera hay nhỏ và ở xa. Ngay cả khi vật thể không hiển thị đầy đủ, thuật toán vẫn có thể xác định những keypoint giống nhau.
SIFT thực hiện điều này bằng một khái niệm gọi là lý thuyết scale-space. Nói đơn giản, ảnh được làm mờ ở nhiều mức độ khác nhau để tạo ra nhiều phiên bản. Sau đó, SIFT xem xét các phiên bản này để tìm những mẫu hình và chi tiết không đổi, bất kể kích thước hoặc độ sắc nét của ảnh thay đổi như thế nào.
Ví dụ, một biển báo giao thông được chụp từ cách vài mét sẽ trông lớn hơn nhiều so với cùng biển báo đó được chụp từ xa, nhưng SIFT vẫn có thể phát hiện các đặc trưng khác biệt giống nhau. Nhờ vậy, hai ảnh có thể được ghép chính xác dù biển báo xuất hiện ở các scale rất khác nhau.
Đảm bảo rotation invariance#
Vật thể trong ảnh cũng có thể bị xoay, đôi khi còn bị lật ngược. SIFT xử lý điều này thông qua thuộc tính gọi là rotation invariance. Với mỗi keypoint được phát hiện, thuật toán gán một hướng nhất quán dựa trên các gradient cục bộ của ảnh. Nhờ đó, cùng một vật thể có thể được nhận diện bất kể bị xoay như thế nào.
Bạn có thể hình dung như việc đánh dấu mỗi keypoint bằng một mũi tên nhỏ cho biết hướng của nó. Bằng cách căn chỉnh các đặc trưng theo những hướng này, SIFT đảm bảo các keypoint được khớp chính xác ngay cả khi vật thể bị xoay. Ví dụ, một địa danh được chụp trong ảnh phong cảnh vẫn có thể được nhận diện chính xác ngay cả khi một ảnh khác của địa danh đó được chụp với camera nghiêng.
Khả năng chống chịu trước các biến đổi khác của ảnh#
Ngoài kích thước và phép xoay, hình ảnh còn có thể thay đổi theo những cách khác, chẳng hạn như thay đổi độ chiếu sáng. Ánh sáng trên vật thể có thể chuyển từ sáng sang tối, góc camera có thể dịch chuyển nhẹ hoặc ảnh có thể bị mờ hay nhiễu.
SIFT được xây dựng để xử lý những biến đổi này. Thuật toán tập trung vào các keypoint khác biệt và có độ tương phản cao, vì những đặc trưng này ít bị ảnh hưởng bởi thay đổi ánh sáng hoặc dịch chuyển nhỏ trong góc nhìn. Do đó, SIFT thường đáng tin cậy hơn các phương pháp phát hiện cạnh hoặc góc đơn giản, vốn thường thất bại khi điều kiện thay đổi.

Hình 1. Các keypoint SIFT được trích xuất từ (a) ảnh mưa và (b) ảnh đầu vào sạch tương ứng. (Nguồn)
Hãy xét một bức tranh trong phòng trưng bày. Bức tranh vẫn có thể được nhận diện dù được chụp dưới ánh sáng ban ngày dịu, dưới đèn spotlight nhân tạo mạnh hoặc với hiện tượng nhòe chuyển động nhẹ do camera cầm tay. Các keypoint vẫn đủ ổn định để ghép chính xác bất chấp những khác biệt này.
Thuật toán Scale-Invariant Feature Transform (SIFT) hoạt động như thế nào#
Tiếp theo, hãy cùng xem thuật toán SIFT hoạt động như thế nào. Quy trình này có thể được chia thành bốn bước chính: phát hiện keypoint, định vị keypoint, gán hướng và mô tả keypoint.
Bước 1: Phát hiện cực trị trong scale-space#
Bước đầu tiên là tìm và phát hiện các keypoint, tức những điểm khác biệt trong ảnh, chẳng hạn như góc hoặc thay đổi đột ngột trong kết cấu, giúp theo dõi hoặc nhận diện vật thể.
Để đảm bảo các keypoint tiềm năng này có thể được nhận diện ở mọi kích thước, SIFT xây dựng một không gian gọi là scale-space. Đây là tập hợp các ảnh được tạo ra bằng cách dần làm mờ ảnh gốc với bộ lọc Gaussian, một kỹ thuật làm mượt, rồi nhóm kết quả thành các lớp gọi là octave. Mỗi octave chứa cùng một ảnh với mức độ mờ tăng dần, trong khi octave tiếp theo là phiên bản nhỏ hơn của ảnh.
Bằng cách lấy một ảnh đã làm mờ trừ đi một ảnh khác, SIFT tính Difference of Gaussians (DoG), làm nổi bật những vùng có thay đổi độ sáng mạnh. Các vùng này được chọn làm keypoint ứng viên vì chúng vẫn nhất quán khi ảnh được phóng to hoặc thu nhỏ.

Hình 2. DoG làm nổi bật các cấu trúc chính bằng cách lấy các ảnh được làm mờ ở những mức khác nhau để trừ cho nhau. (Nguồn)
Bước 2: Định vị keypoint#
Không phải mọi keypoint ứng viên đều hữu ích vì một số điểm có thể yếu hoặc không ổn định. Để tinh chỉnh chúng, SIFT sử dụng một phương pháp toán học gọi là khai triển Taylor Series, giúp ước tính vị trí chính xác của keypoint với độ chính xác cao hơn.
Trong bước này, các điểm không đáng tin cậy sẽ bị loại bỏ. Các keypoint có độ tương phản thấp, bị hòa lẫn vào môi trường xung quanh, sẽ bị loại bỏ, cũng như những keypoint nằm trực tiếp trên các cạnh vì chúng có thể dịch chuyển quá dễ dàng. Bước lọc này chỉ giữ lại những keypoint ổn định và khác biệt nhất.
Bước 3: Gán hướng#
Sau khi xác định các keypoint ổn định, SIFT làm cho chúng có rotation invariance, nghĩa là chúng vẫn có thể được ghép ngay cả khi ảnh bị xoay ngang hoặc lật ngược. Để thực hiện điều này, SIFT phân tích cách độ sáng thay đổi xung quanh mỗi keypoint, được gọi là gradient. Gradient thể hiện cả hướng và cường độ thay đổi của intensity pixel, đồng thời cùng nhau mô tả cấu trúc cục bộ xung quanh điểm đó.
Với mỗi keypoint, SIFT xem xét các gradient trong một vùng xung quanh và nhóm chúng vào histogram hướng. Đỉnh cao nhất trong histogram này cho biết hướng chi phối của thay đổi intensity, sau đó được gán làm hướng của keypoint. Cả hướng gradient, cho biết intensity đang thay đổi về phía nào, và độ lớn gradient, cho biết mức độ mạnh của thay đổi, đều được sử dụng để xây dựng histogram này.
Nếu có các đỉnh khác gần mạnh bằng đỉnh chính, SIFT sẽ gán nhiều hướng cho cùng một keypoint. Điều này ngăn các đặc trưng quan trọng bị mất khi vật thể xuất hiện ở những góc bất thường. Bằng cách căn chỉnh mỗi keypoint theo hướng của nó, SIFT đảm bảo các descriptor được tạo ở bước tiếp theo vẫn nhất quán.
Nói cách khác, ngay cả khi hai ảnh của cùng một vật thể bị xoay khác nhau, các keypoint đã được căn chỉnh theo hướng vẫn sẽ khớp chính xác. Đây là bước mang lại cho SIFT khả năng xử lý phép xoay mạnh mẽ và khiến nó robust hơn nhiều so với các phương pháp phát hiện đặc trưng trước đây.

Hình 3. Cận cảnh bước 3 của thuật toán SIFT (Nguồn)
Bước 4: Descriptor của keypoint#
Bước cuối cùng trong SIFT là tạo mô tả cho mỗi keypoint để có thể nhận diện nó trong các ảnh khác.
SIFT thực hiện điều này bằng cách xem xét một vùng ảnh vuông nhỏ xung quanh mỗi keypoint, có kích thước khoảng 16 x 16 pixel. Vùng này trước tiên được căn chỉnh theo hướng của keypoint để phép xoay không ảnh hưởng đến nó. Sau đó, vùng ảnh được chia thành lưới gồm các ô vuông nhỏ 4 x 4.
Trong mỗi ô vuông nhỏ, SIFT đo cách độ sáng thay đổi theo các hướng khác nhau. Những thay đổi này được lưu trong một cấu trúc gọi là histogram, tương tự biểu đồ cho biết những hướng nào phổ biến nhất. Mỗi ô vuông có histogram riêng, và 16 ô vuông cùng tạo ra 16 histogram.
Cuối cùng, các histogram này được kết hợp thành một danh sách duy nhất gồm tổng cộng 128 số. Danh sách này được gọi là feature vector và hoạt động như dấu vân tay của keypoint. Vì nắm bắt được kết cấu và cấu trúc độc đáo xung quanh điểm đó, dấu vân tay này cho phép ghép cùng một keypoint giữa các ảnh khác nhau, ngay cả khi chúng được thay đổi kích thước, xoay hoặc chiếu sáng khác nhau.

Hình 4. Tổng quan về cách SIFT hoạt động (Nguồn)
Các ứng dụng chính của SIFT trong computer vision#
Giờ đây, khi đã hiểu rõ hơn SIFT là gì và hoạt động như thế nào, hãy cùng khám phá một số ứng dụng thực tế của nó trong computer vision.
Nhận diện và phát hiện vật thể#
Một trong những ứng dụng chính của SIFT là nhận diện và phát hiện vật thể. Công việc này bao gồm dạy máy tính nhận diện và định vị vật thể trong ảnh, ngay cả khi vật thể không phải lúc nào cũng trông giống nhau. Ví dụ, SIFT có thể phát hiện một cuốn sách bất kể sách ở gần camera, ở xa hơn hay bị xoay theo một góc.
Lý do phương pháp này hiệu quả là SIFT trích xuất các keypoint có tính khác biệt và ổn định cao. Khi được kết hợp với các descriptor SIFT, các keypoint này tạo thành các đặc trưng SIFT, cung cấp phương thức đáng tin cậy để ghép cùng một vật thể giữa các ảnh khác nhau. Những đặc trưng này nắm bắt các chi tiết độc đáo của vật thể vẫn nhất quán, cho phép ghép đặc trưng đáng tin cậy giữa các ảnh ngay cả khi kích thước, vị trí hoặc hướng của vật thể thay đổi.

Hình 5. Sử dụng SIFT để nhận diện bìa sách trong một ảnh mới được chụp ở hướng khác so với ảnh gốc. Ảnh do tác giả thực hiện.
Trước khi deep learning trở nên phổ biến, SIFT là một trong những phương pháp đáng tin cậy nhất để xây dựng hệ thống nhận diện vật thể. Nó được sử dụng rộng rãi trong nghiên cứu và các ứng dụng yêu cầu ghép vật thể giữa những dataset ảnh lớn, dù thường đòi hỏi tài nguyên tính toán đáng kể.
Ghép ảnh và tạo ảnh panorama#
SIFT cũng có thể được sử dụng để tạo ảnh panorama, tức những ảnh rộng được tạo bằng cách ghép nhiều ảnh lại với nhau. Với SIFT, các keypoint khác biệt được tìm thấy trong những phần chồng lấn của các ảnh khác nhau rồi ghép với nhau. Những điểm ghép này hoạt động như các mốc neo, hướng dẫn quy trình ghép cách căn chỉnh các ảnh.
Sau khi hoàn tất việc ghép, các thuật toán ghép ảnh có thể được sử dụng để tính toán căn chỉnh chính xác, thường bằng các phép biến đổi hình học ánh xạ ảnh này lên ảnh khác. Sau đó, các ảnh được trộn để các đường nối biến mất. Kết quả cuối cùng là một ảnh panorama liền mạch trông như một bức ảnh rộng duy nhất, dù được tạo từ nhiều lần chụp.
Tái tạo 3D và robotics#
Một ứng dụng thú vị khác của SIFT là tái tạo 3D, trong đó nhiều ảnh 2D được chụp từ các góc khác nhau được kết hợp để xây dựng một model ba chiều. SIFT hoạt động bằng cách tìm và ghép cùng một điểm giữa các ảnh này.
Sau khi tạo các điểm ghép, vị trí 3D của những điểm đó có thể được ước tính bằng phép tam giác đạc, một phương pháp tính độ sâu từ các góc nhìn khác nhau. Quy trình này là một phần của structure from motion (SfM), một kỹ thuật sử dụng nhiều ảnh chồng lấn để ước tính hình dạng 3D của cảnh cùng vị trí của các camera đã chụp ảnh.
Kết quả thường là một đám mây điểm 3D, một tập hợp các điểm trong không gian phác họa vật thể hoặc môi trường. SIFT là một trong những công cụ đầu tiên giúp structure-from-motion trở nên khả thi trong thực tế. Dù các kỹ thuật mới nhanh hơn và phổ biến hơn ngày nay, SIFT vẫn được áp dụng khi độ chính xác quan trọng hơn tốc độ.
SIFT cũng được sử dụng trong robotics, đặc biệt là visual SLAM (Simultaneous Localization and Mapping). SLAM cho phép robot xác định vị trí của mình đồng thời xây dựng bản đồ môi trường xung quanh.
Các keypoint SIFT hoạt động như những mốc đáng tin cậy mà robot có thể nhận diện giữa các frame, ngay cả khi ánh sáng hoặc góc nhìn thay đổi. Bằng cách theo dõi các mốc này, robot có thể ước tính vị trí của mình và cập nhật bản đồ theo thời gian thực. Mặc dù các bộ phát hiện đặc trưng nhanh hơn được sử dụng thường xuyên hơn trong robotics ngày nay, SIFT đóng vai trò quan trọng trong các hệ thống SLAM đầu tiên và vẫn có giá trị trong những trường hợp độ robust quan trọng hơn tốc độ.
Ưu điểm và các yếu tố cần cân nhắc của SIFT#
Mặc dù thuật toán SIFT được sử dụng rộng rãi trong computer vision và nổi tiếng là một phương pháp đáng tin cậy, nó cũng đi kèm một số đánh đổi. Vì vậy, cần cân nhắc ưu và nhược điểm trước khi quyết định liệu SIFT có phù hợp với dự án hay không. Tiếp theo, hãy cùng xem xét các điểm mạnh và hạn chế chính của thuật toán.
Các ưu điểm cốt lõi của SIFT#
Dưới đây là một số ưu điểm khi sử dụng thuật toán SIFT:
- Scale invariance và rotation invariance: SIFT cung cấp các keypoint bất biến theo scale, tương đối ổn định khi vật thể xuất hiện ở những kích thước hoặc hướng khác nhau, đại diện cho một bước tiến đáng kể so với các bộ phát hiện đặc trưng trước đây.
- Độ robust vừa phải trước thay đổi ánh sáng và góc nhìn: SIFT có thể xử lý thay đổi về độ sáng, độ tương phản hoặc những dịch chuyển nhỏ trong góc nhìn, dù kém đáng tin cậy hơn trong các điều kiện cực đoan.
- Khả năng hoạt động trong cảnh có nhiều vật thể hoặc bị che khuất một phần: Vì SIFT phát hiện nhiều keypoint cục bộ, thuật toán thường vẫn có thể xác định vật thể ngay cả khi một phần vật thể bị che hoặc nền ảnh phức tạp.
Các yếu tố về hiệu năng và lựa chọn thay thế#
Dưới đây là một số nhược điểm khi sử dụng thuật toán SIFT:
- Tốn nhiều tài nguyên tính toán: Quy trình nhiều bước và các descriptor chi tiết của SIFT khiến thuật toán chậm hơn và tiêu tốn nhiều tài nguyên hơn so với các bộ phát hiện đặc trưng hiện đại. Để cải thiện vấn đề này, các nhà nghiên cứu đã phát triển thuật toán SURF (Speeded-Up Robust Features), sử dụng các phép tính nhanh hơn để tìm và mô tả đặc trưng. SURF kém chính xác hơn SIFT trong một số trường hợp, nhưng chạy nhanh hơn nhiều, khiến nó thực tế hơn cho các tác vụ nhạy cảm về thời gian.
- Không lý tưởng cho việc sử dụng theo thời gian thực: Do chi phí tính toán cao, SIFT gặp khó khăn trong các ứng dụng yêu cầu tốc độ, chẳng hạn như theo dõi theo thời gian thực hoặc robotics di động.
- Tính linh hoạt hạn chế: Dù robust trong nhiều trường hợp, SIFT kém hiệu quả hơn khi ánh sáng thay đổi cực đoan, góc nhìn dịch chuyển lớn hoặc trong các cảnh có tính động cao, nơi các thuật toán mới hoặc phương pháp machine learning cho kết quả tốt hơn.
Khi xem xét ưu và nhược điểm của SIFT, bạn có thể nhận thấy nhiều hạn chế của nó đã mở đường cho các kỹ thuật tiên tiến hơn. Cụ thể, convolutional neural network (CNN) đã nổi lên như một giải pháp thay thế mạnh mẽ.
CNN là một loại model deep learning lấy cảm hứng từ cách hệ thống thị giác của con người hoạt động. CNN xử lý hình ảnh theo từng lớp, bắt đầu từ các mẫu đơn giản như cạnh và kết cấu, rồi dần xây dựng thành những hình dạng và vật thể phức tạp hơn. Không giống các quy tắc đặc trưng được thiết kế thủ công của SIFT, CNN học trực tiếp các biểu diễn đặc trưng từ dữ liệu.
Cách học dựa trên dữ liệu này giúp CNN có thể vượt qua SIFT trong các tác vụ ghép descriptor và classification. CNN cũng có khả năng biểu đạt và độ robust cao hơn, thích ứng tốt hơn với tính biến thiên và độ phức tạp của dữ liệu hình ảnh.
Ví dụ, các model dựa trên CNN đã đạt được những kết quả đột phá trên ImageNet, một dataset benchmark khổng lồ chứa hàng triệu ảnh được gán nhãn thuộc hàng nghìn danh mục. Được thiết kế để kiểm tra khả năng nhận diện và phân loại vật thể của các thuật toán, ImageNet làm nổi bật khoảng cách giữa các phương pháp dựa trên đặc trưng trước đây và deep learning.
CNN nhanh chóng vượt qua SIFT bằng cách học các biểu diễn phong phú và linh hoạt hơn nhiều, cho phép chúng nhận diện vật thể trong điều kiện ánh sáng thay đổi, từ các góc nhìn khác nhau và ngay cả khi vật thể bị che khuất một phần—những tình huống mà SIFT thường gặp khó khăn.
Những điểm chính#
Thuật toán Scale Invariant Feature Transform giữ một vị trí quan trọng trong lịch sử computer vision. Thuật toán cung cấp phương thức đáng tin cậy để phát hiện đặc trưng ngay cả trong môi trường biến đổi và ảnh hưởng đến nhiều phương pháp được sử dụng ngày nay.
Dù các kỹ thuật mới nhanh hơn và hiệu quả hơn, SIFT đã đặt nền móng cho chúng. SIFT cho thấy tiến bộ của computer vision ngày nay bắt đầu từ đâu và làm nổi bật chặng đường mà các hệ thống AI tiên tiến đã đi được.
Tham gia cộng đồng toàn cầu của chúng tôi và xem repository GitHub để tìm hiểu thêm về computer vision. Khám phá các trang giải pháp của chúng tôi để tìm hiểu những đổi mới như AI trong nông nghiệp và computer vision trong bán lẻ. Xem các tùy chọn cấp phép và bắt đầu xây dựng model computer vision của riêng bạn.









