Saya perlu mendeteksi seberapa cepat panning kamera (baik horisontal / vertikal) untuk memberikan peringatan kepada operator untuk memperlambat.
Seluruh gambar bergerak sebagai blok, saya tidak perlu arah yang sebenarnya (meskipun H atau V akan menjadi bonus) dan saya hanya perlu perkiraan besarnya - yaitu. memicu jika lebih dari 'N' piksel bergeser di antara frame.
Gambar besar dan umumnya adegan kontras rendah seragam, saya tidak memiliki highlight yang jelas untuk dilacak. Saya perlu melakukannya secara realtime (60fps) dan tanpa menggunakan semua CPU.
Solusi Niave adalah memilih RoI di tengah, menemukan tepi, menghitung kesamaan antara pasangan frame, menggeser salah satu frame ke kiri / kanan / atas / bawah dengan piksel, ulangi - temukan minima.
Saya bertanya-tanya apakah ada solusi yang lebih cerdas?
sumber
Ini mungkin merupakan solusi mengerikan yang lambat, tetapi Anda bisa melakukan korelasi silang berbasis FFT dari frame-frame berikutnya dan kemudian menemukan puncaknya untuk mengidentifikasi offset antar frame. Mungkin hanya melakukannya pada bagian kecil dari gambar untuk menghemat siklus prosesor.
Itu tidak akan bekerja dengan rotasi atau perubahan adegan drastis dari satu frame ke yang berikutnya, dan mungkin ada metode yang lebih baik. Ini semacam "Saya punya palu sehingga semuanya tampak seperti paku" solusi. Saya kira ini sama seperti solusi naif Anda, kecuali tidak perlu deteksi tepi dan FFT membuatnya jauh lebih cepat daripada secara eksplisit menggeser satu piksel pada satu waktu.
Pertanyaan ini serupa, dan tidak ada yang menyarankan selain korelasi silang, jadi mungkin tidak terlalu buruk: Menggunakan MATLAB untuk menghitung offset antara gambar yang berurutan
sumber
Salah satu cara Anda dapat memperkirakan kecepatan dan arahnya adalah dengan membuat estimasi aliran "lokal" dari misalnya empat jendela di tengah gambar. Metode diferensial Lucas-Kanade mengasumsikan perpindahan kira-kira konstan dan oleh karena itu dimungkinkan untuk diselesaikan sebagai persamaan.
Jadi panduan langkah demi langkah saya adalah:
Ini menentukan arah dan kecepatan, namun Anda bisa menggunakan jendela tertimbang untuk membuatnya lebih kuat. Lihatlah metode Lucas-Kanade untuk ekstensinya.
sumber
Saya pikir korelasi silang adalah pendekatan yang baik untuk menemukan offset, tetapi jika Anda ingin melakukannya dengan sangat cepat maka Anda dapat mencoba untuk membatasi hanya pada scanline vertikal tunggal dan horizontal tunggal (yaitu melalui pusat gambar). Menghitung korelasi silang antara garis pemindaian di kedua frame akan memberi Anda perkiraan offset horizontal dan vertikal.
sumber