Hello guys, Selamat datang di A.R.T setelah tutorial sebelumnya kita belajar Instalasi JMRyon dan belajar Manipulasi Pixel. sekarang kita coba belajar membangun Motion Detection dengan JMRyon. kedengarannya memang sedikit rumit, tapi sebenarnya mudah.
konsep dari Motion Detection ini adalah dengan melakukan pelacakan terhadap GLOB Processing, yang merupakan library untuk melakukan pencocokan terhadap pola. pada kasus kita sekarang, kita ingin melakukan pencocokan terhadap pixel warna, dengan menganalisis satu pixel ke pixel lainnya, kelihatannya memang sulit, tapi sebenarnya mudah.
yang cukup kita lakukan adalah, mengaktifkan library JMyron.findGlobs dan menyempurnakan pencarian dengan JMyron.minDensity (int val) dan JMyron.maxDensity (int val) (yang keduanya mengambil piksel-dianggap sebagai input).
oke, daripada kelaamaan di teory, silahkan ngeCoding dengan Source Code dibawah ini:
import JMyron.*;
JMyron theMov;
int[][] globArray;
void setup() {
size(640, 480);
theMov = new JMyron();
theMov.start(width, height);
theMov.findGlobs(1);
theMov.trackColor(255, 255, 255, 255);
stroke(255, 0, 0); // red outline
}
void draw() {
theMov.update();
int[] currFrame = theMov.image();
// draw each pixel to the screen
loadPixels();
for (int i = 0; i < width*height; i++) {
pixels[i] = currFrame[i];
}
updatePixels();
// draw the glob bounding boxes
globArray = theMov.globBoxes();
for(int i = 0; i < globArray.length; i++) {
int[] boxArray = globArray[i];
// set the fill colour to the average of all colours in the bounding box
int currColor = theMov.average(
boxArray[0],
boxArray[1],
boxArray[0] + boxArray[2],
boxArray[1] + boxArray[3]);
fill(red(currColor), green(currColor), blue(currColor));
rect(boxArray[0], boxArray[1], boxArray[2], boxArray[3]);
}
}
public void stop() {
theMov.stop();
super.stop();
}
dari contoh diatas, kita membuat sebuah Bounding Box (Satu Kesatuan Box) diantara banyak Globs. anda bisa melihatnya diantara box yang besar dengan box yang kecil. warna utama dari Bounding Box, dalam hal ini warna abu-abu, akan menjadi warna keseluruhan untuk Pixel. coba anda arahkan tangan anda seperti gambar dibawah, maka pixel terpecah dan rata-rata warna masih tetap sama dengan Bounding Box.
bagaimana bisa terjadi? kita menggunakan tehnik JMyron.trackColor(int red, int green, int blue, int tolerance) untuk melakukan determinasi warna mana yang harus dicocokan oleh Globs. makanya saat anda mengarahkan tangan anda ke Bounding Box, Globs langsung memecah menjadi beberapa pixel, dan menyesuaikan dengan warna baru. bisa dilihat, ada pixel globs yang berwarna abu-abu tua. itulah konsep dasar dari Motion Detection JMRyon. silahkan dipelajari Source Code diatas, selamat belajar dan semoga berhasil.
Komentar