Scale-Invariant Feature Transform (SIFT)
Ölçekten Bağımsız Özellik Dönüşümü (SIFT), anahtar noktaları bulan ve ölçekleme ile döndürme karşısında kararlı 128 değerli tanımlayıcılar oluşturan klasik bir algoritmadır.
Ölçekten Bağımsız Özellik Dönüşümü (SIFT), görüntüdeki ayırt edici yerel anahtar noktaları bulan ve her birini, görüntü ölçeklendiğinde veya döndürüldüğünde büyük ölçüde aynı kalan 128 sayılık bir vektörle tanımlayan klasik bir bilgisayarlı görü algoritmasıdır. Bu tanımlayıcıları eşleştirmek, yazılımın farklı mesafe ve açılardan çekilmiş aynı sahneye ait iki fotoğrafı ilişkilendirmesini sağlar; örtüşen fotoğraflar bu şekilde bir panoramada birleştirilir. SIFT, öğrenilmiş bir özellik haritası kullanan bir evrişimli sinir ağından farklı olarak, elle tasarlanmış bir özellik çıkarımı yöntemidir.
Kökeni ve Temel Fikri#
British Columbia Üniversitesi'nden David Lowe, SIFT'i 1999 tarihli ICCV makalesi Yerel Ölçekten Bağımsız Özelliklerle Nesne Tanıma ile tanıttı ve yöntemi 2004'te International Journal of Computer Vision'da yayımlanan "Ölçekten Bağımsız Anahtar Noktalardan Ayırt Edici Görüntü Özellikleri" makalesinde ayrıntılı olarak ele aldı. SIFT özellikleri ölçek ve döndürmeye karşı değişmezdir; ayrıca kayda değer düzeydeki afin bozulmalara, 3D bakış açısı değişimlerine, gürültüye ve aydınlatma değişikliklerine rağmen sağlam biçimde eşleşir. Yöntemin patenti vardı ve patentin süresi 2020'de doldu. OpenCV, SIFT'i 4.4.0 sürümünde contrib deposundan ana kütüphaneye taşıdı.
Bir nesnenin fotoğrafta sabit bir boyutu yoktur; bu nedenle bir algılayıcı her boyuttaki yapıyı aramalıdır. SIFT, artan güçlerde Gauss bulanıklığı uygulayıp oktav adı verilen gruplar hâlinde alt örnekleme yaparak bir ölçek uzayı oluşturur.
SIFT Nasıl Çalışır#
Algoritma dört aşamada çalışır:
- Ölçek uzayı ekstremumlarının tespiti: Komşu bulanıklık düzeyleri arasındaki farklar (Gauss farkı), bir leke algılayıcısını yaklaşık olarak verir. Bir piksel, uzay ve ölçek boyunca 26 komşusu arasında maksimum ya da minimum değerliyse aday olur.
- Anahtar nokta konumlandırma: Adaylar alt piksel hassasiyetinde iyileştirilir. Kararsız oldukları için düşük kontrastlı noktalar ve kenarlar üzerinde bulunan noktalar elenir.
- Yön atama: Her anahtar noktanın çevresindeki yerel gradyan yönlerinin histogramı baskın bir yön belirler ve sonraki tüm ölçümler bu yöne göre yapılır. Böylece döndürmeye karşı değişmezlik sağlanır.
- Tanımlayıcı oluşturma: Komşuluk 4 x 4'lük bir ızgaraya bölünür ve her hücrede 8 bölmeli bir gradyan histogramı bulunur. Böylece aydınlatmaya duyarlılığı azaltmak için normalize edilen 4 x 4 x 8 = 128 değer elde edilir.
Eşleştirme, tanımlayıcıları Öklid uzaklığıyla karşılaştırır. Lowe'un oran testi, bir eşleşmeyi yalnızca en yakın komşu ikinci en yakın komşudan belirgin biçimde daha yakınsa tutar. k en yakın komşu araması, her iki uzaklığı da sağlamak için k = 2 değerini kullanır.
import cv2
from ultralytics.utils import ASSETS
# Load a sample image in grayscale and a half-size copy
img = cv2.imread(str(ASSETS / "bus.jpg"), cv2.IMREAD_GRAYSCALE)
small = cv2.resize(img, None, fx=0.5, fy=0.5)
# Detect keypoints and compute 128-dimensional descriptors
sift = cv2.SIFT_create()
kp1, des1 = sift.detectAndCompute(img, None)
kp2, des2 = sift.detectAndCompute(small, None)
# Match half-size descriptors to full-size ones, then apply Lowe's ratio test
pairs = cv2.BFMatcher().knnMatch(des2, des1, k=2)
good = [m for m, n in pairs if m.distance < 0.8 * n.distance]
print(f"{len(good)} of {len(kp2)} half-size keypoints matched at full size")Yazdırılan sayı, yarı boyutta bulunan kaç anahtar noktanın tam boyutlu görüntüde yeniden tanındığını gösterir; bu, ölçek değişmezliğinin iş başındaki hâlidir.
Uygulamalar#
SIFT, geometrik görü görevlerinde varsayılan yerel özellik hâline geldi:
- Panorama birleştirme: Brown ve Lowe'un otomatik panorama birleştirme yöntemi (IJCV 2007), örtüşen fotoğraflardaki SIFT özelliklerini eşleştirir ve fotoğrafları hizalamak için bir homografi kestirir; bu hizalama adımına görüntü eşleme denir.
- 3D yeniden yapılandırma: Photo Tourism (Snavely, Seitz ve Szeliski, 2006), turist fotoğraflarındaki SIFT özelliklerini eşleştirir ve kamera pozlarını ve seyrek 3D yapıyı çıkarmak için epipolar geometriden yararlanır.
- Robot konumlandırma: Se, Lowe ve Little (2001), mobil robotların konumlandırılması ve haritalanması için SIFT yer işaretlerini kullandı; bu yaklaşım modern görsel SLAM yöntemlerinin öncüllerindendir.
- Örnek tanıma: Lowe'un 2004 tarihli makalesinde, dağınık ve kısmen örtülü bir sahnede oyuncak tren ve kurbağa, yalnızca 3 eşleşen özellik kullanılarak tanınır.
Ultralytics YOLO nesne takibinde BoT-SORT, kareler arasındaki kamera hareketini telafi eder; izleyici yapılandırmasında gmc_method: sift ayarlandığında, bu kestirim için varsayılan seyrek optik akış yerine SIFT eşleşmeleri kullanılır.
SIFT'in İlgili Yöntemlerle Karşılaştırması#
SIFT, farklı görünümler arasında aynı fiziksel noktaları eşleştirir; bu nedenle eşleşme ve geometri görevlerine uygundur. Nesne algılama ise nesnelerin kategorisini ve konumunu tahmin eder. Şablon eşleştirme, sabit bir yamayı kaydırır ve ölçek ya da döndürme değiştiğinde başarısız olur.
SIFT, Rublee ve çalışma arkadaşlarının 2011'de SIFT ve SURF'e alternatif olarak tanıttığı ikili tanımlayıcı ORB'den daha yavaştır. Ayrıca dokusuz yüzeylerde ve çok büyük bakış açısı değişimlerinde zorlanır; kategori düzeyinde tanıma için yerini büyük ölçüde öğrenilmiş modellere bırakmıştır.
Lowe'un 2004 testlerinde, rastgele ölçek ve döndürme değişiklikleri, 30 derecelik derinlik döndürmesi ve %2 gürültü içeren görüntülerde, 40.000 anahtar noktayla eşleştirme yapıldığında uzaklık oranı 0.8'in üzerinde olan eşleşmelerin elenmesi yanlış eşleşmelerin %90'ını ortadan kaldırırken doğru eşleşmelerin %5'inden azını elledi.










