Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

Luồng quang học

Khám phá những nguyên lý cơ bản của luồng quang học trong thị giác máy tính. Tìm hiểu cách các vectơ chuyển động thúc đẩy khả năng hiểu video và tăng cường khả năng theo dõi trong Ultralytics YOLO26.

Luồng quang học là mô hình chuyển động biểu kiến ​​của các vật thể, bề mặt và cạnh trong một cảnh hình ảnh do chuyển động tương đối giữa người quan sát và cảnh đó gây ra. Trong lĩnh vực thị giác máy tính , khái niệm này rất quan trọng để hiểu động lực học theo thời gian trong các chuỗi video. Bằng cách phân tích sự dịch chuyển của các pixel giữa hai khung hình liên tiếp, các thuật toán luồng quang học tạo ra một trường vectơ, trong đó mỗi vectơ biểu thị hướng và độ lớn của chuyển động tại một điểm cụ thể. Tín hiệu hình ảnh cấp thấp này cho phép các hệ thống trí tuệ nhân tạo không chỉ nhận biết được những gì có trong hình ảnh, mà còn cả cách nó chuyển động, thu hẹp khoảng cách giữa phân tích hình ảnh tĩnh và hiểu video động.

Cơ chế cốt lõi của dòng chảy quang học

Việc tính toán luồng quang học thường dựa trên giả định về sự ổn định độ sáng, cho rằng cường độ của một pixel trên một vật thể vẫn không đổi từ khung hình này sang khung hình khác, ngay cả khi nó di chuyển. Các thuật toán sử dụng nguyên tắc này để giải các vectơ chuyển động bằng hai phương pháp chính:

  • Luồng quang học thưa (Sparse Optical Flow ): Phương pháp này tính toán vectơ chuyển động cho một tập hợp con cụ thể các đặc điểm riêng biệt, chẳng hạn như các góc hoặc cạnh, được phát hiện thông qua trích xuất đặc điểm . Các thuật toán như phương pháp Lucas-Kanade có hiệu quả tính toán cao và lý tưởng cho các tác vụ suy luận thời gian thực , nơi việc theo dõi các điểm quan tâm cụ thể là đủ.
  • Luồng quang học dày đặc : Phương pháp này tính toán vectơ chuyển động cho từng pixel trong khung hình. Mặc dù tốn nhiều tài nguyên tính toán hơn đáng kể, nhưng nó cung cấp bản đồ chuyển động toàn diện, rất cần thiết cho các tác vụ chi tiết như phân đoạn ảnh và phân tích cấu trúc. Các kiến ​​trúc học sâu hiện đại thường vượt trội hơn các phương pháp toán học truyền thống trong ước lượng luồng dày đặc bằng cách học các mẫu chuyển động phức tạp từ các tập dữ liệu lớn.

Luồng quang học so với Theo dõi đối tượng

Mặc dù thường được sử dụng cùng nhau, điều quan trọng là phải phân biệt giữa luồng quang học và theo dõi đối tượng . Luồng quang học là một thao tác cấp thấp mô tả chuyển động tức thời của pixel; nó không tự hiểu được danh tính hoặc tính bền vững của đối tượng.

Ngược lại, theo dõi đối tượng là một tác vụ cấp cao giúp định vị các thực thể cụ thể và gán cho chúng một ID nhất quán theo thời gian. Các trình theo dõi tiên tiến, chẳng hạn như những trình được tích hợp trong Ultralytics YOLO26 , thường thực hiện phát hiện đối tượng để tìm đối tượng và sau đó sử dụng các tín hiệu chuyển động—đôi khi được lấy từ luồng quang học—để liên kết các phát hiện trên các khung hình. Luồng quang học trả lời câu hỏi "các pixel này đang di chuyển nhanh như thế nào ngay bây giờ?", trong khi theo dõi trả lời câu hỏi "Xe số 5 đã đi đâu?".

Các Ứng dụng Thực tế

Khả năng ước tính chuyển động ở cấp độ pixel là nền tảng cho rất nhiều công nghệ tiên tiến:

  • Xe tự hành và robot: Luồng quang học được sử dụng để đo lường quãng đường di chuyển bằng hình ảnh, cho phép robot hoặc ô tô ước tính chuyển động của chính nó so với môi trường xung quanh. Nó cũng hỗ trợ ước tính độ sâu và tránh chướng ngại vật bằng cách phân tích tốc độ mở rộng hoặc di chuyển của các vật thể trong tầm nhìn.
  • Ổn định video: Máy quay phim và phần mềm chỉnh sửa sử dụng vectơ dòng chảy để detect Hiện tượng rung lắc máy quay không chủ ý. Bằng cách bù trừ chuyển động tổng thể này, các hệ thống có thể ổn định cảnh quay kỹ thuật số. Đây là một tính năng tiêu chuẩn trong các thiết bị điện tử tiêu dùng hiện đại như điện thoại thông minh và camera hành trình.
  • Nhận diện hành động : Trong phân tích thể thao và an ninh, việc phân tích dòng chảy thời gian của các điểm ảnh giúp hệ thống xác định các hành động phức tạp của con người. Ví dụ, các mô hình ước tính tư thế có thể được bổ sung dữ liệu dòng chảy để phân biệt giữa người đi bộ và người chạy dựa trên tốc độ chuyển động của các chi.
  • Nén video: Các tiêu chuẩn như mã hóa video MPEG dựa rất nhiều vào ước lượng chuyển động. Thay vì lưu trữ toàn bộ từng khung hình, codec lưu trữ luồng quang học (vectơ chuyển động) và sự khác biệt (phần dư) giữa các khung hình, giúp giảm đáng kể kích thước tệp khi phát trực tuyến và lưu trữ.

Ví dụ triển khai

Ví dụ sau đây minh họa cách tính toán luồng quang học dày đặc bằng thư viện OpenCV , một công cụ tiêu chuẩn trong hệ sinh thái thị giác máy tính. Đoạn mã này sử dụng thuật toán Farneback để tạo ra bản đồ luồng giữa hai khung hình liên tiếp.

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")

Đối với các ứng dụng cấp cao yêu cầu theo dõi sự tồn tại của đối tượng thay vì chỉ theo dõi chuyển động pixel thô, người dùng nên xem xét các chế độ theo dõi có sẵn trong Ultralytics YOLO11YOLO26 . Các mô hình này đơn giản hóa sự phức tạp của phân tích chuyển động, cung cấp ID đối tượng và quỹ đạo mạnh mẽ ngay từ đầu cho các tác vụ từ giám sát giao thông đến phân tích bán lẻ .

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay