2011-09-30 50 views
6

tôi đang làm việc trên dòng quang học, và dựa trên the lecture notes here và một số mẫu trên Internet, I wrote this Python code.Lucas Kanade Optical Flow, Direction Vector

Tất cả mã và hình ảnh mẫu đều ở đó. Đối với chuyển vị nhỏ khoảng 4-5 pixel, hướng của vector tính toán có vẻ là tốt, nhưng độ lớn của vectơ quá nhỏ (đó là lý do tại sao tôi phải nhân u, v bằng 3 trước khi vẽ chúng).

Đây có phải là do giới hạn của thuật toán hoặc lỗi trong mã không? Bài giảng được chia sẻ ở trên cũng nói rằng chuyển động cần phải nhỏ "u, v nhỏ hơn 1 pixel", có thể đó là lý do tại sao. Lý do cho giới hạn này là gì?

+6

LK sử dụng ước lượng đơn hàng đầu tiên, và vì vậy (u, v) phải lý tưởng << 1, nếu không, các điều khoản bậc cao sẽ chi phối hành vi và bạn là bánh mì nướng. Để khắc phục vấn đề này, trong các trang 20 và 21, tác giả đề xuất sử dụng một chuỗi các bước hậu duệ, bắt đầu bằng độ phân giải rất thấp và sau đó tăng nó. Tuy nhiên, thuật toán chưa được giải thích đầy đủ trong nguồn của bạn. –

Trả lời

3

@belisarius nói "LK sử dụng ước lượng đơn hàng đầu tiên, và vì vậy (u, v) lý tưởng là < < 1, nếu không, các điều khoản bậc cao sẽ chi phối hành vi và bạn là bánh mì nướng.".

0

Một kết luận tiêu chuẩn từ phương trình ràng buộc dòng quang (OFCE, trang 5 của tham chiếu), là "chuyển động của bạn phải nhỏ hơn pixel, các thuật ngữ bậc cao ít hơn sẽ giết bạn". Mặc dù về mặt kỹ thuật, bạn có thể khắc phục điều này trong thực tế bằng cách sử dụng các cửa sổ trung bình lớn hơn. Điều này đòi hỏi bạn phải làm thống kê lành mạnh, nghĩa là không phải phương tiện tối thiểu thuần túy, như được đề xuất trong các trang chiếu. Tính toán nhanh chóng tương đương, và kết quả vượt trội hơn rất nhiều có thể đạt được bằng cách thường xuyên Tikhonov. Điều này đòi hỏi phải thiết lập một giá trị điều chỉnh (hằng số Tikhonov). Điều này có thể được thực hiện như một hằng số toàn cục, hoặc để nó được điều chỉnh theo thông tin địa phương trong hình ảnh (chẳng hạn như sự tự tin Shi-Tomasi, hay còn gọi là cấu trúc xác định tensor).

Lưu ý rằng điều này không thay thế nhu cầu về các phương pháp đa quy mô để đối phó với các chuyển động lớn hơn. Nó có thể mở rộng phạm vi một chút cho bất kỳ quy mô đơn lẻ nào có thể giải quyết được.

triển khai, trực quan và mã có sẵn trong định dạng hướng dẫn here, albeit in Matlab không Python.