Lưu lượng hình ảnh / dịch chuyển hình ảnh gần đúng nhanh


9

Tôi cần phát hiện camera quay nhanh như thế nào (ngang / dọc) để đưa ra cảnh báo cho người điều khiển giảm tốc độ.

Toàn bộ hình ảnh đang chuyển động như một khối, tôi không cần một hướng thực tế (mặc dù H hoặc V sẽ là một phần thưởng) và tôi chỉ cần một cường độ gần đúng - tức là. kích hoạt nếu nhiều hơn 'N' pixel thay đổi giữa các khung.

Hình ảnh lớn và nhìn chung là các cảnh tương phản thấp, tôi không có bất kỳ điểm nổi bật rõ ràng nào để theo dõi. Tôi cần phải làm điều đó trong thời gian thực (60fps) và không sử dụng tất cả CPU.

Giải pháp Niave là chọn một RoI ở trung tâm, tìm các cạnh, tính toán độ tương tự giữa các cặp khung, dịch chuyển một trong các khung sang trái / phải / lên / xuống theo pixel, lặp lại - tìm cực tiểu.

Tôi tự hỏi nếu có một giải pháp thông minh hơn?

Câu trả lời:


3

Có lẽ nếu bạn đang tìm kiếm một phương thức đơn giản , đó là áp dụng các thuật toán Ước tính Chuyển động tiêu chuẩn đã được hoàn thiện rất nhiều trong lớp codec nén MPEG. Chúng rất dễ hiểu và tôi đoán bạn sẽ nhận được rất nhiều mã sẵn sàng để sử dụng. Thuật toán này tạo ra vectơ chuyển động trên khối theo cơ sở khối - và sau đó bạn có thể tìm thấy cụm nổi bật nhất và lấy hướng và độ lớn của vectơ chuyển động trung bình.

MPEG4 - có một khái niệm quan trọng khác gọi là " bù chuyển động toàn cầu ", một kỹ thuật nhằm ước tính đầu tiên và bù chuyển động và lia máy ảnh. Vẻ đẹp là các phương pháp như vậy có thể đơn giản hơn hoặc toàn diện tùy thuộc vào độ phức tạp. Đây là một ví dụ giấy và một giấy khác cho cùng.

Nhìn chung, panning camera và ước tính chuyển động là một lĩnh vực nghiên cứu đã được thiết lập. đây là một tài liệu tham khảo: giấygiấy khác .

Về chủ đề này. Bạn sẽ tìm thấy cả thuật toán nghiêm ngặt và chính xác cũng như các thuật toán đơn giản và nhanh chóng.


Nếu tôi có thể thuận tiện móc vào một lib lib sẽ tốt, tôi nhớ rằng GMC trong Mpeg có những lời chỉ trích. Tôi nghĩ rằng đó sẽ là một khu vực chung vì các thuật toán ổn định máy ảnh
Martin Beckett

Bạn chắc chắn có thể móc (hoặc giải nén) thuật toán MPEG. Bạn có thể sử dụng FFMPEG làm thư viện và giải nén nó - nhưng có thể gặp khó khăn. Ngoài ra, bạn có thể đọc mã gọn gàng của MSSG để giải nén.
Dipan Mehta

Liên quan đến những lời chỉ trích về GMC - nhiều hơn là hứa hẹn sẽ giảm đáng kể tốc độ bit và tạo mã hóa dựa trên đối tượng . Tuy nhiên, thực sự không khó để ước tính các thông số chuyển động của máy ảnh.
Dipan Mehta

cảm ơn, tôi sẽ xem MSSG. Tôi sử dụng ffmpeg nhưng nó không phải là một thư viện dễ dàng để lấy mọi thứ ra!
Martin Beckett

3

Đây có thể là một giải pháp khủng khiếp chậm, nhưng bạn có thể thực hiện tương quan chéo dựa trên FFT của các khung tiếp theo và sau đó tìm đỉnh để xác định độ lệch giữa các khung. Có lẽ chỉ làm điều đó trên một tập hợp con nhỏ của hình ảnh để lưu chu kỳ bộ xử lý.

Nó sẽ không hoạt động với các thay đổi cảnh quay hoặc thay đổi mạnh mẽ từ khung hình này sang khung hình khác và có thể có các phương pháp tốt hơn. Đây là một loại giải pháp "Tôi có một cái búa để mọi thứ trông giống như một cái đinh". Tôi đoán đây giống như giải pháp ngây thơ của bạn, ngoại trừ không cần phát hiện cạnh và FFT làm cho nó nhanh hơn rất nhiều so với việc dịch chuyển rõ ràng một pixel mỗi lần.

Câu hỏi này tương tự nhau và không ai đề xuất bất cứ điều gì ngoài tương quan chéo, vì vậy có lẽ nó không quá tệ: Sử dụng MATLAB để tính toán bù giữa các hình ảnh liên tiếp


Cảm ơn, thật dễ dàng để giả sử FFT chậm, nhưng tôi có thể làm một cửa sổ nhỏ 2 ^ n. ps. Chỉ dành cho stackoverflow.com/questions/1100100/
Martin Beckett

3

Một cách bạn có thể ước tính vận tốc và hướng sẽ là ước tính lưu lượng "cục bộ", ví dụ như bốn cửa sổ ở giữa hình ảnh. Phương pháp vi phân Lucasade Kanade giả định độ dịch chuyển xấp xỉ không đổi và do đó có thể giải như một phương trình.

Vì vậy, hướng dẫn từng bước của tôi sẽ là:

  1. Nhận một cửa sổ pixel ở giữa hình ảnh, ví dụ 20x20
  2. Tính toán độ dốc Ix và Iy.
  3. Chia cửa sổ gradient thành bốn mảnh, ví dụ 4x10x10.
  4. Giải bốn phương trình bình phương tối thiểu tuyến tính với khung tiếp theo.
  5. Trung bình bốn vectơ vận tốc.

Điều này xác định hướng và vận tốc, tuy nhiên bạn có thể sử dụng cửa sổ có trọng số để làm cho nó mạnh hơn. Nhìn vào phương pháp Lucas-Kanade cho các phần mở rộng của nó.


0

Tôi nghĩ rằng tương quan chéo là một cách tiếp cận tốt để tìm độ lệch, nhưng nếu bạn muốn thực hiện nhanh thì bạn có thể cố gắng hạn chế nó chỉ ở một đường quét dọc và một đường ngang duy nhất (tức là qua trung tâm của hình ảnh.) Việc tính toán mối tương quan chéo giữa các đường quét trong cả hai khung sẽ cho bạn một xấp xỉ của phần bù ngang và dọc.


Điều này có thể hoạt động, nhưng nếu nó xoay theo đường chéo, nó sẽ không hoạt động tốt, ngay cả khi nó chỉ hơi lộn xộn lên xuống trong khi xoay sang một bên. Tôi nghĩ rằng một tiểu vùng hình chữ nhật ở trung tâm của hình ảnh sẽ tốt hơn.
endolith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.