Kamis, 24 Januari 2019

Motion Heatmap Detection


Motion Heatmap
What is Motion Heatmap?
Jika diartikan ke Bahasa Indonesia maka motion adalah gerakan .Sedangkan heatmap merupakan representasi  representasi grafis dari data di mana nilai-nilai individu yang terkandung direpresentasikan sebagai warna. Heatmap lebih dikenal sebagai shading matrices.
Jadi motion heatmap merupakan pewarnaan pada suatu gambar/peta yang nilainya diambil dari banyaknya gerakan pada suatu titik.Pengilustrasian warna  pada heatmap dapat berbeda beda. Tetapi biasanya warna yang digunakan adalah warna yang bewarna warni daripada warna abu abu karena manusia lebih suka untuk melihat warna yang berbeda beda dan juga dengan warna warni maka akan lebih banyak klasifikasi dari heatmap nya.Tetapi dengan rainbow colormap warna warna yang terang seperti kuning akan terlihat memiliki nilai yang lebih tinggi daripada yang warna yang gelap.Padahal warna gelap bisa jadi merupakan nilai yang lebih tinggi.


Contoh heatmap bedasarkan Suara manusia divisualisasikan dengan spektrogram. Spektrogram adalah representasi visual dari spektrum frekuensi sinyal karena bervariasi dengan waktu. Ketika diterapkan pada sinyal audio, spektogram kadang-kadang disebut sonographs, voiceprints, or voicegrams. Ketika data direpresentasikan dalam plot 3D disebut waterfall.

Open CV ,Module and Algorithm
Menggunakan module tambahan yaitu MOG background subtractor cara menginstallnya pada windows adalah menggunakan
pip install opencv-contrib-python

Background Subtractor teknik yang umum digunakan untuk memisahkan background dengan gambar milik object bergerak menggunakan kamera / cctv. Caranya adalah Background subtractor menghitung / mengkalkulasi gambar saat ini dikurangi gambar background maka itu disebut sebagai Foreground Mask.
Video yang diambil berasal dari  https://github.com/opencv/opencv/blob/master/samples/data/vtest.avi
Pada frame ke 200 gambar sebenarnya seperti :



Setelah di backgroundsubtractormog menjadi


Lalu menggunakan thresolding yang artinya menggantikan semua pixel pada gambar dengan warna jika nilainya kurang dari konstanta yang ditentukan dan mengganti menjadi warna putih jika lebih dari konstanta yang ditentukan. Tetapi pada Motion heatmap ini thresolding digunakan jika motion melebihi dari maxvalue atau gerakan banyak pada 1 tempat maka akan dirubah menjadi nilai maxvalue yaitu 2.

Setelah menggunakan thresolding gambar digabungkan atau di mix menggunakan  cv2.add().Kedua gambar harus memiliki kedalaman dan jenis yang sama, atau gambar kedua hanya bisa menjadi nilai skalar.Lalu hasilnya ditambahkan ke accum Image yang bernilai array 0 semua. Sehingga array accum_image menjadi hasil dari backgroundsubtractor. Dan akan berulang terus sehingga akan ada nilai nilai yang tinggi pada array accum_image karena ditambah terus dengan backgroundsubtractor

Lalu setelah semua dihitung kita menggunakan pewarnaan yaitu cv2.applyColorMap(array_yang_diberi_warna,warna_yang_digunakan) sehingga menghasilkan sebuah gambar dengan warna sesuai bobotnya. Yang digunakan di code adalah warna Colormap_hot



Sehingga sesuai dengan table diatas semakin tinggi nilainya maka akan bewarna kekiri.
Lalu terakhir digabungkan gambar yang sudah diberi warna tadi dengan gambar pada frame pertama dengan menggunakan cv2.addWeighted(first_frame, 0.7, color_image, 0.7, 0) dan hasilnya dicetak menjadi diff-overlay.jpg dengan gambar seperti :


Kesimpulan :
Jadi cara algoritma yang dipakai secara garis besar yaitu:
1.     Menentukan start awal image dari frame pertama untuk digabungkan dengan hasil
2.     Membuat image temporary sesuai dengan tinggi dan lebar start image
3.     Lalu melanjutkan ke frame selanjutnya dan melakukan background subtraction(menghilangkan latar belakang)
4.     Melakukan thresolding agar nilai yang lebih dari maxValue akan menjadi maxValue
5.     Menambahkan hasil dari background subtraction & thresolding ke dalam image temporary
6.     Lakukan step 3-5 sampai frame habis
7.     Membuat warna sesuai dengan bobot tiap pixel pada image temporary
8.     Menggabungkan image awal dengan hasil dari step 7
REFERENSI :




Tidak ada komentar:

Posting Komentar