Bilgisayar görüşünde optik akışın temellerini keşfedin. Ultralytics hareket vektörlerinin video anlayışını nasıl yönlendirdiğini ve izlemeyi nasıl geliştirdiğini öğrenin.
Optik akış, bir gözlemci ile sahne arasındaki göreceli hareketin neden olduğu, görsel bir sahnedeki nesnelerin, yüzeylerin ve kenarların görünür hareket modelidir. Bilgisayar görme alanında, bu kavram video dizilerindeki zamansal dinamikleri anlamak için temel öneme sahiptir. İki ardışık kare arasındaki piksellerin yer değiştirmesini analiz ederek optik akış algoritmaları, her vektörün belirli bir noktanın hareket yönünü ve büyüklüğünü temsil ettiği bir vektör alanı oluşturur. Bu düşük seviyeli görsel ipucu, yapay zeka sistemlerinin sadece görüntüdeki nesneleri değil, bunların nasıl hareket ettiğini de algılamasını sağlayarak statik görüntü analizi ile dinamik video anlayışı arasındaki boşluğu doldurur.
Optik akışın hesaplanması genellikle parlaklık sabitliği varsayımına dayanır. Bu varsayım, bir nesne üzerindeki pikselin yoğunluğunun, hareket etse bile bir kareden diğerine sabit kaldığını varsayar. Algoritmalar, bu prensibi kullanarak iki temel yaklaşımla hareket vektörlerini çözer:
Genellikle birlikte kullanılmasına rağmen, optik akışı nesne izlemeyle ayırmak çok önemlidir. Optik akış, anlık piksel hareketini tanımlayan düşük seviyeli bir işlemdir; nesnenin kimliğini veya kalıcılığını doğası gereği anlamaz.
Buna karşılık, nesne izleme, belirli varlıkları bulup onlara zaman içinde tutarlı bir kimlik atayan üst düzey bir görevdir. Ultralytics entegre edilenler gibi gelişmiş izleyiciler, genellikle nesneyi bulmak için nesne algılama gerçekleştirir ve ardından bazen optik akıştan elde edilen hareket ipuçlarını kullanarak kareler arasında algılamaları ilişkilendirir. Optik akış "bu pikseller şu anda ne kadar hızlı hareket ediyor" sorusuna cevap verirken, izleme "5 numaralı araba nereye gitti" sorusuna cevap verir.
Piksel düzeyinde hareketi tahmin etme yeteneği, çok çeşitli sofistike teknolojilere güç sağlar:
Aşağıdaki örnek, bilgisayar görme ekosisteminde standart bir araç olan OpenCV kullanarak yoğun optik akışı hesaplamayı göstermektedir. Bu kod parçacığı, Farneback algoritmasını kullanarak iki ardışık kare arasında bir akış haritası oluşturur.
import cv2
import numpy as np
# Simulate two consecutive frames (replace with actual image paths)
frame1 = np.zeros((100, 100, 3), dtype=np.uint8)
frame2 = np.zeros((100, 100, 3), dtype=np.uint8)
cv2.rectangle(frame1, (20, 20), (40, 40), (255, 255, 255), -1) # Object at pos 1
cv2.rectangle(frame2, (25, 25), (45, 45), (255, 255, 255), -1) # Object moved
# Convert to grayscale for flow calculation
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
# Calculate dense optical flow
flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
# Compute magnitude and angle of 2D vectors
mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])
print(f"Max motion detected: {np.max(mag):.2f} pixels")
Ham piksel hareketi yerine nesne kalıcılığı gerektiren üst düzey uygulamalar için, kullanıcılar Ultralytics'te Ultralytics YOLO11 ve YOLO26'da bulunan izleme modlarını dikkate almalıdır. Bu modeller, hareket analizinin karmaşıklığını soyutlayarak, trafik izlemeden perakende analizine kadar çeşitli görevler için kullanıma hazır sağlam nesne kimlikleri ve yörüngeler sağlar.