Saya ingin menggunakan telepon saya sebagai sistem CCTV untuk mengontrol ruangan di rumah saya, dan menampilkan peringatan ketika ada sesuatu yang bergerak.
Untuk saat ini, apa yang berhasil saya lakukan adalah mengambil gambar setiap menit dan mengunggahnya melalui skrip PHP ke server saya. Sekarang, saya ingin membandingkan gambar saat ini dan gambar 1 menit yang lalu dan mendeteksi jika seseorang memasuki ruangan. Jadi pada dasarnya, saya perlu membandingkan perbedaan piksel pada gambar (tetapi juga memperhitungkan bahwa cloud mungkin hanya menyapa dan mengubah kecerahan selama satu menit)
Adakah yang punya petunjuk tentang cara mencapainya atau membaca beberapa dokumen?
Jawaban:
Menurut saya apa yang Anda cari adalah teknik pengurangan latar belakang. Dengan gambar yang bising dan perubahan kondisi pencahayaan, bisa jadi tidak penting. Keadaan saat ini teknik seni untuk ini adalah representasi matriks peringkat rendah, tetapi tidak memerlukan dua tetapi banyak (~ lusin) gambar. Beberapa matematika tugas berat mengikuti: Setiap gambar dianggap sebagai vektor piksel, vektor digabungkan ke dalam matriks dan matriks ini didekomposisi menjadi matriks peringkat rendah dan sisa. Kolom matriks peringkat rendah adalah latar belakang dan sisanya adalah objek bergerak. Ada beberapa implementasi open-source, tetapi hanya untuk faktorisasi itu sendiri, tidak menyelesaikan pipa gambar IIRC
Berikut ini adalah kertas dan kode untuk faktorisasi matriks http://www.ece.rice.edu/~aew2/sparcs.html
Berikut ini ikhtisar dari blog CS dan tautan ke kode lain:
https://sites.google.com/site/igorcarron2/matrixfactorizations
http://nuit-blanche.blogspot.com/search/label/MF
Survei beberapa teknik lain: http://www.vis.uni-stuttgart.de/uploads/tx_vispublications/Brutzer2011-2.pdf
sumber
Ingat: Ada bayangan (bukan hanya kecerahan).
Saya tidak terlalu menyukai ide dari James Webster, karena pada dasarnya menurunkan resolusi di setiap dimensi dan membandingkan gambar yang diperkecil (juga saya tidak suka ambang - mereka harus berubah-ubah, Anda harus menguji dan mengubah mereka sampai Anda mendapatkan nilai yang baik dan pada hari berikutnya nilai-nilai ini dapat usang karena cuaca yang berbeda atau efek lingkungan lainnya)
Tapi jujur saja, saya juga tidak punya solusi yang benar-benar bagus. Ide pertama saya adalah untuk meng-diff setiap gambar ke gambar referensi dari ruang kosong dan menjalankan deteksi tepi pada gambar diff. Tetapi ini juga akan mendeteksi bayangan. Tapi saya kira Anda tidak dapat membedakan antara bayangan dan objek lainnya ... setidaknya saya tidak tahu caranya. Tapi mungkin Anda bisa membandingkan hasilnya setelah deteksi Tepi antara 2 frame, karena bayangan sebagian besar bergerak lambat (masih akan ada masalah ketika mobil melintas atau ketika awan melaju)
sumber
Teknik "faktorisasi matriks" TIDAK akan membantu Anda melakukan pekerjaan Anda! Makalah dimaksud oleh @ mirror2image adalah tentang pengurangan latar belakang tetapi TIDAK berdasarkan "faktorisasi matriks".
Menggunakan video yang berjalan untuk mendeteksi objek bergerak (baik manusia atau kendaraan) adalah bidang penelitian aktif.
Sebagai prinsip dasar, sistem memperkirakan latar belakang statis tipikal dengan mengambil sampel lebih dari beberapa gambar dan mengambil perbedaan energi antara gambar yang masuk ke latar belakang. Jika energinya signifikan, piksel tersebut diklasifikasikan sebagai latar depan. Kumpulan foreground seperti itu memberi tahu Anda jika ada entri objek dalam sistem.
Referensi terbaik untuk makalah penelitian Anda (dan juga relatif lebih sederhana jika Anda ingin benar-benar menerapkan) adalah - Sistem W4 temukan di sini dan lihat makalah Picardi di sini sebagai survei yang lebih rinci untuk teknik lain dalam sistem.
Ada banyak tantangan yang berlaku untuk masalah ini:
Kehadiran kebisingan menciptakan masalah ambiguitas utama. Pendekatan di sini adalah menerapkan penyaringan temporal yang efisien dan mempertimbangkan variasi kebisingan untuk membuatnya kebal terhadap ambang batas.
Kehadiran bayangan menciptakan ambiguitas baik sebagai latar depan maupun. Ada kertas yang memodelkan perbedaan warna vs intensitas untuk membedakan bayangan vs latar depan nyata.
Latar belakangnya bisa kompleks seperti melambaikan pohon atau laut, dll.
Latar belakang dapat memiliki variasi pencahayaan yang lambat atau tiba-tiba di mana latar belakang yang "dipelajari" sebelumnya kemudian disesuaikan dengan yang baru.
Salah satu kertas tengara yang paling disebut disebut Algoritma Wall flower menunjukkan cara terbaik untuk menggabungkan berbagai skenario untuk menghasilkan deteksi objek bergerak yang kuat.
sumber
Saya tidak tahu solusi pasti, tetapi Anda harus membuat semacam hash dari gambar; satu set data yang lebih kecil diekstraksi dari gambar, yang sebanding lebih baik dari keseluruhan gambar.
Saya pikir, histogram warna adalah pilihan yang baik untuk itu.
Jika Anda membagi gambar ke area dan membuat histogram terpisah untuk area ini, Anda dapat menentukan posisi / jalur penyusup.
sumber
Mengambil perbedaan dua kali yaitu perbedaan perbedaan dapat membantu .. jadi jika turunan ganda piksel lebih besar dari ambang batas di beberapa wilayah, maka Anda dapat menyebutnya sebagai seseorang memasuki ruangan. Perubahan kecerahan akan memberikan gradien yang konstan di seluruh gambar, tetapi mengambil Hessian atau turunan ganda akan memberikan indikasi gerakan yang baik atau perubahan besar dalam ruangan.
sumber