コンピュータービジョンにおけるオプティカルフローの基礎を探求します。モーションベクトルがどのようにビデオ理解を推進し、Ultralytics YOLO26 における track を強化するかを学びましょう。
オプティカルフローは、観察者とシーン間の相対運動によって引き起こされる、視覚シーンにおけるオブジェクト、表面、エッジの見かけの動きのパターンです。コンピュータービジョンの分野において、この概念はビデオシーケンス内の時間的ダイナミクスを理解するための基礎となります。2つの連続するフレーム間のピクセルの変位を分析することで、オプティカルフローアルゴリズムは、各ベクトルが特定の点の動きの方向と大きさを表すベクトル場を生成します。この低レベルの視覚的キューにより、人工知能システムは画像に何があるかだけでなく、それがどのように動いているかを認識できるようになり、静止画分析と動的なビデオ理解の間のギャップを埋めます。
オプティカルフローの計算は一般的に輝度不変性の仮定に依存しており、これは物体上のピクセルの輝度が、たとえ移動していても、フレーム間で一定に保たれると仮定するものである。アルゴリズムはこの原理を利用して、主に二つのアプローチで運動ベクトルを解く:
しばしば併用されますが、オプティカルフローをオブジェクトトラッキングと区別することが不可欠です。オプティカルフローは瞬間的なピクセルの動きを記述する低レベルの操作であり、オブジェクトの同一性や永続性を本質的に理解するものではありません。
対照的に、object trackは、特定のエンティティを特定し、時間の経過とともに一貫したIDを割り当てる高レベルのタスクです。Ultralytics YOLO26に統合されているような高度なトラッカーは、通常、オブジェクトを見つけるためにobject detectを実行し、その後、光学フローから派生することもあるモーションキューを使用して、フレーム間のdetectを関連付けます。光学フローは「これらのピクセルは今どれくらいの速さで動いているか」に答え、trackは「5番の車はどこに行ったか」に答えます。
ピクセルレベルでの動き推定能力は、幅広い高度な技術を可能にします:
以下の例は、コンピュータビジョンエコシステムにおける標準ツールである OpenCV ライブラリ を使用して密なオプティカルフローを計算する方法を示しています。このスニペットは、Farnebackアルゴリズムを使用して2つの連続するフレーム間のフローマップを生成します。
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")
生のピクセルモーションではなく、物体の永続性を必要とする高レベルのアプリケーションの場合、ユーザーはUltralytics YOLO11およびYOLO26で利用可能なtrackモードを検討すべきです。これらのモデルは、モーション分析の複雑さを抽象化し、交通監視から小売分析に至るまでのタスクに対して、堅牢な物体IDと軌跡をすぐに提供します。

未来の機械学習で、新たな一歩を踏み出しましょう。