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 :