I tried to create dynamic ribbon button using jquery when I joined in the big project in the work. I will share this for everyone and practice my English. But I didn't use a css for styling the page. It just the hard code.
for demo, try it by your self!
Pages
▼
Tuesday, October 21, 2014
Thursday, September 18, 2014
Build Web Application Using Spring Java MVC - Hello World
Hello guys! How are you?
Okay, I am a beginner for Spring Web Application Development. I will share my knowledge and experience and also to practice my English Written skill.
What will you need to develop web application using spring? yeah, there are 4 elements that you must downloaded. those are:
Okay, I am a beginner for Spring Web Application Development. I will share my knowledge and experience and also to practice my English Written skill.
What will you need to develop web application using spring? yeah, there are 4 elements that you must downloaded. those are:
- Eclipse IDE for EE programming, eg: KEPLER, JUNO, LUNA, etc.
- Apache Tomcat jar (in this practice I use version 6.0.3)
- Spring Framework jar (in this practice I use version 3.1.1.RELEASE)
- Apache common logging jar (in this practice I use version 1.2)
The first time, you must understand about Model View and Controller programming concept, because Spring Framework is a Java Web Application framework which uses Model View and Controller programming Concept. Model includes service classes, Domain objects and all data access objects. View includes all data with *.jsp extension, and controller only need to be written in java class.
bellow are the simple example for developing MVC Web programming using Spring.
- please set up the server Runtime Environment in your Eclipse IDE using apache tomcat like bellow:
- create the new Dynamic Web Project using Apache Tomcat server
- create simple greeting sentence in index.jsp file
- set a welcome - file to be index.jsp file in the web.xml
- create servlet name inweb.xml
Friday, August 22, 2014
Sistem Operasi dan Jaringan
Assalamualaikum. Konnichiwa!
sorry guys, saya orangnya agak mood-mood-an nih soal nulis. Image processing belum beres, pengen ke Dasar-Dasar pemrograman. Belum beres lagi, pengen Simtem Operasi dan Jaringan. Ya sudah, bersabar saja. Siapa tahu penyakit ini segera sembuh.
Berikut ini saya sedikit bagikan ilmu Sistem Operasi dan jaringan. Sebelumnya saya mau mengucapkan terima kasih kepada dosen mata kuliah tersebut yang telah mengajar saya selama satu semester, Bpk. Setiadi Rachmat.
Untuk selanjutnya saya menyarankan beberapa referensi buku dibawah ini:
Operating System : William Stalling 6th Edition.
Computer Network : A System Approach, Larry L. Peterson and Bruce S. Davie
Sebelum belajar ke Sistem Operasinya, alangkah lebih baiknya kita tahu dulu bagaimana arsitektur komputer yang umum kita gunakan saat ini, yaitu:
User --> Aplikasi --> OS --> Hardware
OS+Hardware dapat dianggap sebagai komputer (dari sisi programmer).
Apa saja hardware tersebut?
Microprocessor, berfungsi untuk mengontrol operasi komputer dan menampilkan atau menunjukkan fungsi pemroses data.
Memory, berfungsi untuk menyimpan data dan program.
Input/Output Device, berfungsi sebagai media input ouput seperti keyboard, mouse dan network interface.
Bus, penghubung ketiga poin di atas.
Perhatikan sebuah ungkapan berikut:
"Ibu rumah tangga yang canggih adalah yang dapat mengerjakan beberapa hal secara bersamaan."
Misalnya seorang ibu rumah tangga harus mengerjakan dua buah pekerjaan yaitu menyapu dan memasak air. Seorang Ibu yang canggih akan mengerjakan kegiatan memasak air terlebih dahulu, dan selama air dimasak, selanjutnya ibu tersebut akan melakukan kegiatan kedua yaitu menyapu.
Dalam aplikasi terkadang banyak sekali yang dijalankan dalam waktu yang bersamaan. Namun, OS akan mengklasifikasi aplikasi-aplikasi mana yang harus dikerjakan terlebih dahulu, agar waktu yang digunakan sesingkat-singkatnya.
User sebenarnya tidak pernah berhubungan langsung dengan sistem operasi, tetapi hanya berhubungan dengan User Interface.
Semua alat yang menggunakan ECU (Electronic Control Unit) pasti menggunakan OS.
Apa yang diperlukan user menyebabkan perbedaan device dari user interface.
berikut merupakan susunan sistem interface:
User
Aplikasi
OS
Hardware
Di antara Aplikasi dan OS terdapat program Utilitas.
PRAKTIKUM
pada praktikum ini saya menyarankan anda menggunakan putty.exe saja karena sistem operasi yang akan dipelajari adalah UNIX.
sorry guys, saya orangnya agak mood-mood-an nih soal nulis. Image processing belum beres, pengen ke Dasar-Dasar pemrograman. Belum beres lagi, pengen Simtem Operasi dan Jaringan. Ya sudah, bersabar saja. Siapa tahu penyakit ini segera sembuh.
Berikut ini saya sedikit bagikan ilmu Sistem Operasi dan jaringan. Sebelumnya saya mau mengucapkan terima kasih kepada dosen mata kuliah tersebut yang telah mengajar saya selama satu semester, Bpk. Setiadi Rachmat.
Untuk selanjutnya saya menyarankan beberapa referensi buku dibawah ini:
Operating System : William Stalling 6th Edition.
Computer Network : A System Approach, Larry L. Peterson and Bruce S. Davie
Sebelum belajar ke Sistem Operasinya, alangkah lebih baiknya kita tahu dulu bagaimana arsitektur komputer yang umum kita gunakan saat ini, yaitu:
User --> Aplikasi --> OS --> Hardware
OS+Hardware dapat dianggap sebagai komputer (dari sisi programmer).
Apa saja hardware tersebut?
Microprocessor, berfungsi untuk mengontrol operasi komputer dan menampilkan atau menunjukkan fungsi pemroses data.
Memory, berfungsi untuk menyimpan data dan program.
Input/Output Device, berfungsi sebagai media input ouput seperti keyboard, mouse dan network interface.
Bus, penghubung ketiga poin di atas.
Perhatikan sebuah ungkapan berikut:
"Ibu rumah tangga yang canggih adalah yang dapat mengerjakan beberapa hal secara bersamaan."
Misalnya seorang ibu rumah tangga harus mengerjakan dua buah pekerjaan yaitu menyapu dan memasak air. Seorang Ibu yang canggih akan mengerjakan kegiatan memasak air terlebih dahulu, dan selama air dimasak, selanjutnya ibu tersebut akan melakukan kegiatan kedua yaitu menyapu.
Dalam aplikasi terkadang banyak sekali yang dijalankan dalam waktu yang bersamaan. Namun, OS akan mengklasifikasi aplikasi-aplikasi mana yang harus dikerjakan terlebih dahulu, agar waktu yang digunakan sesingkat-singkatnya.
User sebenarnya tidak pernah berhubungan langsung dengan sistem operasi, tetapi hanya berhubungan dengan User Interface.
Semua alat yang menggunakan ECU (Electronic Control Unit) pasti menggunakan OS.
Apa yang diperlukan user menyebabkan perbedaan device dari user interface.
berikut merupakan susunan sistem interface:
User
Aplikasi
OS
Hardware
Di antara Aplikasi dan OS terdapat program Utilitas.
PRAKTIKUM
pada praktikum ini saya menyarankan anda menggunakan putty.exe saja karena sistem operasi yang akan dipelajari adalah UNIX.
- Bukalah Putty.exe
- Masukkan IP Address : 10.10.194.5
- Pilih SSH
- Tekan Open
- Yes
- Login as: root
- password:
- ketik : passwd
- ketiklah password yang lama, enter
- ketiklah password yang baru, enter
- ketiklah kembali password yang baru
- pwd : untuk melihat direktori yang sedang work (print working directory)
- ls : list dalam direktori
- cd .. : pindah ke parent directory
- mkdir : making directory (membuat direktori)
Saturday, August 16, 2014
Dasar-Dasar Pemrograman II - Algoritma
Assalamualaikum warahmatullah, Konniciwa Mina! Bagaimana dengan pembahasan sebelumnya di Dasar-Dasar Pemrograman I? Mudah dipahami bukan? Dalam DDP kali ini kita akan bahas lebih detail tentang apa itu yang dimaksud dengan algoritma. Menurut KBBI alias Kamus Besar Bahasa Indonesia, Algoritma dalam matematika dan komputasi
Wednesday, August 13, 2014
Dasar - Dasar Pemrograman I
Assalamualaikum warahmatullah. Konnichiwa, mina!
Setelah mengerjakan TA kurang lebih satu tahun yang rasanya... super sekali :') akhirnya akan saya mulai kembali untuk sharing sedikit tentang keinformatikaan. Kali ini saya mencoba share pelajaran dasar untuk memulai pemrograman.
Kalau prinsip dari Jurusan tempat saya belajar selama 3 tahun ini adalah:
1. Belajar pemrograman tidak sama dengan belajar bahasa pemrograman
Ini berarti akan saya jelaskan bagaimana kita dapat mengerti pemrograman secara konsep, bukan berdasarkan bahasa pemrograman tertentu. Karena pada dasarnya ketika kita telah mengerti konsep penjumlahan bulat, kita akan dapat menjumlahkan segala jenis bilangan bulat. Lain halnya jika kita belajar 2+2, belum tentu dapat mempelajari 3x+4y :D
2. Lakukan secara rutin
Mau sebanyak apapun konsep yang anda kuasai pada suatu waktu, jika tidak anda ulang-ulangi, dijamin dalam waktu dua minggu konsep tersebut akan dilupakan.
3. Diskusi
Ini penting, demi pengembangan konsep yang telah ada sebelumnya untuk menciptakan konsep baru yang kita anggap benar untuk menyelesaikan suatu permasalahan tertentu. Terlalu teoritis? baik kita mulai belajarnya!
hal-hal yang haru diketahui pada awal belajar pemrograman adalah:
1. TIPE DATA
sesuai dengan jenisnya, tipe data berarti menjelaskan jenis untuk setiap data yang akan di olah di dalam komputer. Ada jenis, berarti tiap data memiliki perbedaan dengan data yang lain. Jika waktu SMP kita diajarkan notasi A={x|x>12, x E I}, dibaca : x sedemikian sehingga x lebih dari 12, x merupakan anggota bilangan bulat. artinya nilai x adalah ...,3,2,1,2,3...,12. Jika terdapat notasi B = {a,b,c,d,e} itu berarti himpunan B terdiri dari HURUF a,b,c,d dan e. Nah, mengapa 3,2,1 disebut sebagai angka? dan mengapa a,b,c,d, dan e disebut sebagai huruf? Ya, benar. Jawabannya karena mereka memiliki karakteristik yang berbeda, keperluan, kebutuhan dan operasi yang berbeda. angka dapat dijumlahkan, huruf tidak dapat dijumlahkan. hal-hal tersebut yang kemudian kita sebut sebagai tipe atau jenis suatu data atau lebih singkatnya adalah TIPE DATA. Lalu tipe data apa sajakah yang terdapat dalam ilmu pemrograman?
a. Tipe data Primitif, tipe data paling sederhana atau atomik atau tidak dapat diperkecil lagi.
Setelah mengerjakan TA kurang lebih satu tahun yang rasanya... super sekali :') akhirnya akan saya mulai kembali untuk sharing sedikit tentang keinformatikaan. Kali ini saya mencoba share pelajaran dasar untuk memulai pemrograman.
Kalau prinsip dari Jurusan tempat saya belajar selama 3 tahun ini adalah:
1. Belajar pemrograman tidak sama dengan belajar bahasa pemrograman
Ini berarti akan saya jelaskan bagaimana kita dapat mengerti pemrograman secara konsep, bukan berdasarkan bahasa pemrograman tertentu. Karena pada dasarnya ketika kita telah mengerti konsep penjumlahan bulat, kita akan dapat menjumlahkan segala jenis bilangan bulat. Lain halnya jika kita belajar 2+2, belum tentu dapat mempelajari 3x+4y :D
2. Lakukan secara rutin
Mau sebanyak apapun konsep yang anda kuasai pada suatu waktu, jika tidak anda ulang-ulangi, dijamin dalam waktu dua minggu konsep tersebut akan dilupakan.
3. Diskusi
Ini penting, demi pengembangan konsep yang telah ada sebelumnya untuk menciptakan konsep baru yang kita anggap benar untuk menyelesaikan suatu permasalahan tertentu. Terlalu teoritis? baik kita mulai belajarnya!
hal-hal yang haru diketahui pada awal belajar pemrograman adalah:
1. TIPE DATA
sesuai dengan jenisnya, tipe data berarti menjelaskan jenis untuk setiap data yang akan di olah di dalam komputer. Ada jenis, berarti tiap data memiliki perbedaan dengan data yang lain. Jika waktu SMP kita diajarkan notasi A={x|x>12, x E I}, dibaca : x sedemikian sehingga x lebih dari 12, x merupakan anggota bilangan bulat. artinya nilai x adalah ...,3,2,1,2,3...,12. Jika terdapat notasi B = {a,b,c,d,e} itu berarti himpunan B terdiri dari HURUF a,b,c,d dan e. Nah, mengapa 3,2,1 disebut sebagai angka? dan mengapa a,b,c,d, dan e disebut sebagai huruf? Ya, benar. Jawabannya karena mereka memiliki karakteristik yang berbeda, keperluan, kebutuhan dan operasi yang berbeda. angka dapat dijumlahkan, huruf tidak dapat dijumlahkan. hal-hal tersebut yang kemudian kita sebut sebagai tipe atau jenis suatu data atau lebih singkatnya adalah TIPE DATA. Lalu tipe data apa sajakah yang terdapat dalam ilmu pemrograman?
a. Tipe data Primitif, tipe data paling sederhana atau atomik atau tidak dapat diperkecil lagi.
- Integer, dalam bahasa Indonesia berarti bilangan bulat. Perhatikan angka 1, 2, 3, 10, 108, 999! masing-masing dapat disebut sebagai bilangan bulat karena tidak terdapat tanda desimal seperti titik (Internasional) atau koma (Indonesia). Utuh atau dengan kata lain bukan pecahan. Dalam ilmu pemrograman bilangan bulat terdiri dari 3 jenis yaitu decimal (basis 10), hexadecimal (basis 16) dan octal (basis 8). Angka yang kita pelajari pada umumnya di bangku sekolah adalah bilangan basis 10. Tidak perlu khawatir, dalam dasar-dasar pemrograman hal ini tidak perlu dikhawatirkan karena tidak perlu diperhatikan. Kita cukup akan mengambil contoh kasus dengan bilangan basis 10.
- Real, dalam bahasa Indonesia disebut sebagai desimal. Contoh: 1.25346, 567.12, 0.001.
- Character, dalam bahasa Indonesia berarti huruf. Namun, di dalam ilmu pemrograman sebuah huruf harus ditandai dengan tanda petik satu ('...') sebelum dan setelah penulisan huruf itu sendiri. Contoh: 'a','b','c','A','B'. 'a' tidak sama dengan 'A', begitu dengan 'b' dengan 'B' dan 'c' dengan 'C'. Lalu bagaimana dengan '1', '2', '3'? Apakah dapat disebut sebagai huruf? Ya. Semua jenis data yang diawali dan diakhiri tanda petik satu disebut sebagai character/karakter/huruf.
- String, merupakan kumpulan dari karakter dan ditandai dengan tanda petik dua ("...") sebelum dan sesudah penulisan huruf itu sendiri. Contoh: "Ayam","Bebek","085624742249","myAccount1234".
- Boolean, yang menunjukkan nilai kebenaran suatu data. Jadi, isinya hanya TRUE atau FALSE saja.
- Pointer, yang menunjuk suatu alamat tertentu pada memori komputer dan dinotasikan dengan bilangan hexadecimal. Contoh: FFF111
b. Tipe data Non-primitif, yaitu tipe data yang terdiri dari satu atau lebih jenis tipe data primitif.
- array, adalah tipe data yang terdiri dari banyak elemen data namun memiliki satu jenis tipe. Dinotasikan dengan tanda [10]. Misalnya adalah A : data array dengan tipe integer berelemen 10. Atau dapat ditulis dengan A : integer [10].
- record, adalah tipe data yang terdiri dari banyak elemen data dan memiliki satu atau lebih jenis tipe. Misalnya: mahasiswa : Record {nim : character[9], nama : string, jumlah adik : integer}
2. VARIABEL
variabel merupakan suati notasi yang digunakan untuk menampung sebuah data. Variabel dapat dianalogikan sebagai keranjang bola. Maka untuk mendefiniskan suatu bola, diperlukan keranjang untuk menampung bola tersebut. Masih ingat pelajaran tentang notasi aljabar ketika SMP? misalnya terdapat notasi 5x + 7. 5 disebut sebagai koefisien, x merupakan variabel dan 7 merupakan konstanta. Apa yang menjadi ciri-ciri dari masing-masing jenis data tersebut? Ya. koefisien adalah segala bentuk angka yang kedudukannya berdampingan dengan variabel yang fungsinya sebagai pengali dari variabel. Nah, jika x diganti dengan 2, maka hasil dari operasi tersebut adalah 17, jika x diganti dengan 3 maka hasil dari notasi tersebut adalah 22. Dapat kita simpulkan bahwa variabel adalah suatu elemen yang nilainya dapat diubah-ubah. Lalu, bagaimana dengan konstanta. Ya. sesuai dengan namanya, konstanta berarti suatu elemen yang konstan atau nilainya tidak dapat diubah-ubah. Cukup mudah bukan? Yap. Yang pernah SMP dan SMA tidak akan kesulitan untuk memahami konsep ini!
Variabel di dalam ilmu pemrograman memiliki aturan-aturan berikut ini yang tidak dapat dilanggar, yaitu:
- terdiri dari satu rangkaian huruf, angka, huruf dan angka. Contoh: a, b, temporary.
- pada variabel yang teridiri dari rangkaian huruf dan angka, tidak boleh didahului oleh angka. Contoh : 12boneka (Salah), account1234 (benar).
- Tidak boleh mengandung simbol atau tanda operasi, contohnya: '!@#$%^&*()++' (kecuali space, '-' dan '_')
- beberapa bahasa pemrograman bersifat case sensitive, artinya huruf kapital dan huruf kecil memiliki arti yang berbeda, namun ada pula yang non case sensitive.
3. ASSIGNMENT
assignment merupakan operasi yang dilakukan dalam suatu alur pemrograman. Assignment disebut SAHIH jika sesuai dengan prinsip variabel dan tipe data, sebaliknya disebut TIDAK SAHIH. Berikut ini merupakan sebuah potongan algoritma suatu pemrograman.
a,b : variabel tunggal (primitif) dengan tipe data integer
e : variabel tunggal dengan tipe data boolean
c,d : variabel tunggal dengan tipe data character
//contoh algoritma
// <-- dibaca 'diisi'
1. a <-- b (SAHIH, karena a bertipe data integer dan b juga integer)
2. a <-- e (TIDAK SAHIH, karena a bertipe data integer dan e bertipe data boolean)
3. a <-- b+c (TIDAK SAHIH, karena b tidak dapat dilakukan operasi penjumlahan dengan c yang bertipe data karakter)
4. a <-- 1 (SAHIH, karena a diisi dengan bilangan bulat 1)
5. a <-- True (TIDAK SAHIH, karena a bertipe data integer dan tidak bisa diisi dengan nilai Boolean)
6. c <-- 2*d (TIDAK SAHIH, perkalian (*) bukan operasi pada data karakter)
7. c <-- 'a' (SAHIH)
dst...
4. OPERASI
operasi merupakan suatu perlakuan yang diberikan kepada data sehingga menyebabkan perubahan kondisi atau state.
4. a <-- 1 (SAHIH, karena a diisi dengan bilangan bulat 1)
5. a <-- True (TIDAK SAHIH, karena a bertipe data integer dan tidak bisa diisi dengan nilai Boolean)
6. c <-- 2*d (TIDAK SAHIH, perkalian (*) bukan operasi pada data karakter)
7. c <-- 'a' (SAHIH)
dst...
4. OPERASI
operasi merupakan suatu perlakuan yang diberikan kepada data sehingga menyebabkan perubahan kondisi atau state.
- Operator aritmatika yang teridiri dari * (perkalian), / (pembagian), + (penjumlahan), - (pengurangan), sqrt() akar dan ^ (pangkat). Operator ini hanya dapat diberikan kepada data bertipe integer
- Operator Logika yang terdiri dari AND, OR, XOR. Operator ini hanya dapat diberikan kepada data bertipe Boolean
Baik, sudah cukup paham bukan dengan penjelasan sederhana di atas? Jika sudah, mari kita belajar tentang notasi penulisan program dalam bahasa manusia atau yang disebut sebagai PSEUDO CODE. berikut merupakan urutan yang harus diperhatikan pada setiap penulisan program dalam bahasa manusia, yaitu:
- Nama Program, menjelaskan nama program yang akan kita buat, contoh: Program penjumlahan dua buah angka
- Kamus Data, menjelaskan data apa saja yang dibutuhkan oleh program. Misalnya pada program penjumlahan dua buah angka berarti kita membutuhkan 3 buah variabel. satu variabel untuk menampung bilangan pertama, varibel ke dua untuk menampung bilangan kedua, dan variabel terakhir untuk menampung hasil penjumlahan dua buah bilangan tersebut. Maka Kamus data dapat dituliskan sebagai berikut: bil1,bil2,bil3 : variabel tunggal (primitif) dengan tipe data integer
- IS (Initial State), merupakan kondisi awal sebelum program dijalankan. Misalnya kondisi awal bil1 beriisi angka 1, bil2 beriisi angka 2, dan bil3 diisi 0. Maka, IS dapat dituliskan sebagai berikut:
bil1 <-- 1
bil2 <-- 2
bil3 <-- 0
- Algoritma, merupakan sejumlah urutan langkah-langkah yang harus dijalankan pada program dan dieksekusi oleh compiler pada komputer sesuai dengan urutan yang dituliskan pada algoritma itu sendiri. Contoh algoritma untuk menjumlahkan dua buah bilangan adalah:
bil3 <-- bil1+bil2
write (bil3)
artinya bil3 diisi dengan penjumlahan bil1 dan bil2 dan kemudian nilai pada bil3 ditampilkan pada layar monitor.
- FS(Final State), merupakan kondisi akhir setelah program/algoritma dijalankan. Misalkan pada kasus ini Final Statenya bil3 berisi nilai penjumlahan dua buah bilangan. Jadi FS ditulis dengan bil3 telah terisi dengan penjumlahan dua buah bilangan bil1 dan bil2.
Mudah bukan? Nah, mari mulai mengeksekusinya dengan bahasa pemrograman betulan!
Saya menyarankan untuk menggunakan Bahasa C dengan Compiler TCWIN45 atau Turbo C++. Anda bisa mendownloadnya secara gratis dengan mencarinya di Google (percaya saja sama mbah Google).
Langkah-langkahnya sebagai berikut:
- Buka Turbo C++ pada komputer
- Buka File, New
- Tuliskan rangkaian program berikut:
/* Ini baris Komentar */
/* Nama Program : Penjumlahan dua buah bilangan
Author : Novida Wayan Sari */
#include <stdio.h> //ini adalah baris pemanggilan library C yang menyediakan input output
int main(){ //Program utama
int bil1,bil2,bil3; //Kamus Data
bil1 = 1;
bil2 = 2;
bil3 = bil1+bil2;
printf("hasil penjumlahannya adalah %d",bil3);
return (0);
}
- simpan dengan nama penjumlahan.cpp
- compile program terlebih dahulu untuk memastikan tidak ada error yang disebabkan karena penulisan kode yang salah dengan menekan menu Project, Compile
- Jika tidak ada error, Run program dengan menekan Ctrl+F9 atau menu Debug, Run.
- Cobalah untuk mengganti nilai pada bil1 dan bil2 dengan bilangan yang lain
SELAMAT BEREKSPERIMEN!!!
Friday, June 13, 2014
Face Detection Using Haar Cascade Classifier Algorithm
Viola dan Jones
memperkenalkan metode yang akurat untuk mendeteksi wajah melalui sebuah citra.
teknik ini dapat diadaptasi untuk mendeteksi pula fitur dari wajah tersebut.
Bagian atau daerah wajah yang telah terdeteksi dianalisis kemungkinan untuk
ditemukan fitur sangat tinggi. Sebagai contoh dari fitur tersebut adalah fitur
mata dan mulut. Hal ini menyebabkan pemrosesan akan berjalan dengan lebih
cepat. Wajah manusia memiliki kompleksitas permasalahn pemrosesan karena wajah
manusia merupakan objek dinamis yang memiliki banyak macam dan warna. Oleh
karenanya facial detection memiliki banyak pengaruh. Walaupun terdapat banyak
algoritma untuk pemrosesan citra digital dan facial detection, tetapi banyak
diantaranya yang memiliki kekurangan dan kelebihan[1].
1.
Inisialisasi Kamera
Inisialisasi kamera dimulai dari menginisialisasi
video masukan sampai dengan pemrosesan citra. pada proses ini citra wajah
secara fisik ditangkap dari capture device berupa webcam dengan resolusi 320 x
240 piksel. Citra wajah diambil untuk citra training berdasarkan posisi wajah
yaitu posisi tegak lurus, rotasi sejajar 15* ke kanan, rotasi sejajar 15* ke
kiri, mengangkat dagu ke atas 15* ke atas dan menundukkan kepala 15* ke bawah
serta berdasarkan tiga jarak objek wajah, yaitu 100 cm, 150 cm dan 200 cm.
2.
Tahap Scalling
Scalling
merupakan proses mengubah ukuran digital, hal ini perlu dilakukan agar semua
citra digital memiliki ukuran yang sama. Untuk melakukan scaling di sistem ini
dapat memanfaatkan package displau object. Citra digital tersebut diperkecil
dengan menggunakan metode interpolasi. Metode ini menggunakan rata-rata suatu
daerah yang mewakili daerah yang lebih besar. Berikut ini merupakan citra hasil
interpolasi:
Gambar asli 320x240 piksel
Gambar dengan
ukuran tersebut discan dan dikonversi ke dalam bentuk matriks 320 x 240 yang
berisi nilai piksel dari masing-masing komponen piksel.
Proses
pengubahan resolusi dari gambar dengan ukuran m x n tersebut terlihat pada
tabel berikut, yaitu:
k
|
Resolusi-k
(m), diambil ukuran panjang (Rk/2k)
|
Nilai
Rata-rata
|
0
|
320
|
12 10 | 4 6
|13 59 |12 12 | ... |14 15|
|
1
|
160
|
11 8|36
12|...|14 15|
|
2
|
...
|
...
|
3
|
...
|
...
|
3.
Tahap Grayscaling
citra digital
yang telah melalui proses scaling kemudian diubah menjadi citra dua warna
dengan proses grayscaling. Masing-masing chanel piksel dengan komponen R,G dan
B diproses dengan rumus sebagai berikut:
W= 0.2989 R +
0.5870 G + 0.1140 B
Sehingga
diperoleh citra hasil grayscaling sebagai berikut:
Gambar hasil grascaling 20 x 20 piksel
4.
Pendeteksian dengan Haar Cascade Classifier
metode ini
menggunakan haar-like features dimana perlu dilakukan training terlebih dahulu
untuk mendapatkan suatu pohon keputusan dengan nama cascade classifier sebagai
penentu apakah ada obyek atau tidak dalam setiap frame yang di proses. Terdapat
3 jenis fitur berdasarkan jumlah persegi panjang yang terdapat di dalamnya
(Krishna & Srinivasulu, 2012), seperti yang dapat dilihat pada gambar di
bawah ini:
5.
Proses menghitung Integral Image
citra integral
adalah sebuah citra yang nilai setiap pikselnya merupakan akumulasi dari nilai
piksel atas dan kirinya. Sebagai contoh, piksel (a,b) memiliki nilai akumulatif
untuk semua piksel (x,y) dimana x<=a dan y <= b. Salah satu contoh
seperti perhitungan berikut:
Gambar sampel perhitungan citra integral
Nilai fitur = |total piksel hitam- total piksel
putih|
= |(6+0-(0+0))+(25+3-(15+0))-(15+1-(6+0))|
= |6+13-10|
= 9
Nilai Haar feature yang didapatkan di atas yaitu 9 adalah
nilai perbedaan antar kotak (fitur puih dan fitur hitam) yang biasa disebut
threshold. Threshold ini digunakan sebagai parameter klasifikasi objek yang
terdeteksi sebagai wajah atau tidak.
Kemudian dengan Eclipse dan bahasa pemrograman Java serta Library OpenCV, ketikkan program seperti di bawah ini:
package latihan;
import java.io.File;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;
public class FaceDetector {
public static String filename = "IMG_4936.png";
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.out.println("\nRunning FaceDetector");
CascadeClassifier faceDetector = new CascadeClassifier("xml/haarcascade_frontalface_alt.xml");
File file=new File("images/abc.JPG");
Mat image=null;
if(file.exists()){
image = Highgui.imread(file.getAbsolutePath());
}else{
System.out.println("Image doesn't exists!");
}
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);
System.out.println(String.format("Detected %d faces", faceDetections.toArray().length));
for (Rect rect : faceDetections.toArray()) {
Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
new Scalar(0, 255, 0));
}
System.out.println(String.format("Writing %s", filename));
Highgui.imwrite(filename, image);
}
}
Kode di atas digunakan untuk mendeteksi lebih dari
satu foto dengan ukuran yang beraneka ragam.
[1]. Ian, Philip Wilson, Fernandez John, Dr. 2006. Facial
Feature Detection Using Haar Classifier
[2]. Gunawan, Hendra. 1997. Matematika di balik Citra
Digital. Bandung :
[3].Viola, P. & Jones, M., 2001. Robust Realtime Object Detection. Second International Workshop On Statistical And Computational Theories Of Vision – Modeling, Learning, Computing And Sampling Vancouver, Canada, July 13, 2001.
[3].Viola, P. & Jones, M., 2001. Robust Realtime Object Detection. Second International Workshop On Statistical And Computational Theories Of Vision – Modeling, Learning, Computing And Sampling Vancouver, Canada, July 13, 2001.
Monday, April 14, 2014
Digital Image Processing Using Matlab - Menghitung jumlah gigi gir
Assalamualaikum warahmatullah.
Tahukah anda gambar dibawah ini?
Ya. Benar sekali! Ini adalah gambar sebuah gear, gir. Apakah anda terpikir untuk menghitung berapa jumlah gigi yang dimiliki gir tersebut dengan menggunakan software?
Sebelum membuat aplikasinya, mari sedikit memahami konsep matematika yang ada di dalam metode ini.
Metode ini dikenal dengan nama Mathmatical Morphology. Morphologi adalah teknik pengolahan citra digital dengan menggunakan bentuk (shape) sebagai pedoman dalam pengolahan(minkowski set operation). Nilai dari setiap pixel dalam citra digital hasil diperoleh melalui proses perbandingan antara pixel yang bersesuaian pada citra digital masukan dengan pixel tetangganya. Operasi morphologi bergantung pada urutan kemunculan dari pixel, tidak memperhatikan nilai numeric dari pixel sehingga teknik morphologi sesuai apabila digunakan untuk melakukan pengolahan binary image dan grayscale image.
Tulislah kode berikut di Matlab anda:
Hasil dari program di atas adalah:
numbObj adalah variabel yang menyimpan jumlah gigi gir yang sudah dihitung. Jika anda kurang yakin, hitunglah secara manual kemudian bandingkan dengan hasil di atas!
Selamat Bereksperimen!
Tahukah anda gambar dibawah ini?
Ya. Benar sekali! Ini adalah gambar sebuah gear, gir. Apakah anda terpikir untuk menghitung berapa jumlah gigi yang dimiliki gir tersebut dengan menggunakan software?
Sebelum membuat aplikasinya, mari sedikit memahami konsep matematika yang ada di dalam metode ini.
Metode ini dikenal dengan nama Mathmatical Morphology. Morphologi adalah teknik pengolahan citra digital dengan menggunakan bentuk (shape) sebagai pedoman dalam pengolahan(minkowski set operation). Nilai dari setiap pixel dalam citra digital hasil diperoleh melalui proses perbandingan antara pixel yang bersesuaian pada citra digital masukan dengan pixel tetangganya. Operasi morphologi bergantung pada urutan kemunculan dari pixel, tidak memperhatikan nilai numeric dari pixel sehingga teknik morphologi sesuai apabila digunakan untuk melakukan pengolahan binary image dan grayscale image.
Dengan mengatur atau memilih ukuran dan bentuk dari matrik kernel (structuring element) yang digunakan maka kita dapat mengatur sensitivitas operasi morphologi terhadap bentuk tertentu (spesifik) pada citra digital masukan. Operasi morphologi standar yang dilakukan adalah proses erosi dan dilatasi. Dilatasi adalah proses penambahan pixel pada batas dari suatu objek pada citra digital masukan, sedangkan erosi adalah proses pemindahan/pengurangan pixel pada batas dari suatu objek. Jumlah pixel yang ditambahkan atau yang dihilangkan dari batas objek pada citra digital masukan tergantung pada ukuran dan bentuk dari structuring element yang digunakan.
Beberapa operasi pada Morfologi:
Original Image
Structuring Element:
1. Dilasi
Dilasi adalah operasi morphologi yang akan menambahkan pixel pada batas antar objek dalam suatu citra digital. Atau secara rinci Dilasi merupakan suatu proses menambahkan piksel pada batasan dari objek dalam suatu image sehingga nantinya apabila dilakukan operasi ini maka image hasilnya lebih besar ukurannya dibandingkan dengan image aslinya.
Contoh:
Di bawah ini merupakan hasil image setelah dilakukan proses Dilasi dari Original Image dengan Stucturing Element yang telah ditentukan di atas. Warna hijau merupakan pixel tambahan setelah dilakukan Dilasi
2. Erosi
Erosi merupakan kebalikkan dari Dilasi. Proses ini akan membuat ukuran sebuah citra menjadi lebih kecil. Berbeda dengan dilatasi, apabila erosi dilakukan maka yang dikerjakan adalah memindahkan piksel pada batasan-batasan objek yang akan di erosi. Jumlah dari pikselyang ditambah atau dihilangkan bergantung pada ukuran dan bentuk dari structuring element yang digunakan untuk memproses image tersebut.
Contoh :
Di bawah ini merupakan hasil image setelah dilakukan proses Erosi dari Original Image dengan Stucturing Element yang telah ditentukan di atas. Warna hijau merupakan pixel dihilangkan setelah dilakukan proses Erosi, sehingga pixel hasilnya hanya yang berwarna hitam.
3. Opening
Opening merupakan kombinasi proses dimana suatu citra digital dikenai operasi erosi dilanjutkan dengan dilasi. Operasi opening pada citra mempunyai efek memperhalus batas-batas objek, memisahkan objek-objek yang sebelumnya bergandengan, dan menghilangkan objek-objek yang lebih kecil daripada ukuran structuring.
Contoh:
Di bawah ini merupakan hasil image setelah dilakukan proses Opening dari Original Image dengan Stucturing Element yang telah ditentukan di atas. Proses yang dilakukan untuk mendapatkan opening adalah dengan cara melakukan operasi erosi, lalu hasil erosi tersebut di dilasi lagi.
4. Closing
Closing merupakan kombinasi dimana suatu citra dikenai operasi dilasi dilanjutkan dengan erosi. Operasi closing juga cenderung akan memperhalus objek pada citra, namun dengan cara menyambung pecahan-pecahan (fuses narrow breaks and thin gulf) dan menghilangkan lubang-lubang kecil pada objek.
Contoh :
Di bawah ini merupakan hasil image setelah dilakukan proses Closing dari Original Image dengan Stucturing Element yang telah ditentukan di atas. Proses yang dilakukan untuk mendapatkan Closing adalah dengan cara melakukan operasi dilasi, lalu hasil dilasi tersebut dilakukan proses erosi lagi.
Mari membuat aplikasi penghitung gigi gir dengan menggunakan Matlab!Tulislah kode berikut di Matlab anda:
clc;
clear;
%properties of Morphology se
seHorizontal = [0 0 0; 1 1 1; 0 0 0];
seVertical = [0 1 0; 0 1 0; 0 1 0];
seFull = [1 1 1; 1 1 1; 1 1 1];
seCros = [1 0 1; 0 1 0; 1 0 1];
seSlash = [0 0 1; 0 1 0; 1 0 0];
seBakslash = [1 0 0; 0 1 0; 0 0 1];
sePlush = [0 1 0; 1 1 1; 0 1 0];
gearImage = imread('roue.bmp'); %open the
image
gearGray = rgb2gray(gearImage); %convert image to grayscale
gearBW = gearGray > 70;
gearBW = imerode(gearBW,seFull); %Erode the image with seFull kernel
for a = 1 : 2
gearBW =
imdilate(gearBW,seFull); %Opening--> dilate the image using seFull kernal
end
gearBW = imdilate(gearBW,seFull); %Opening --> dilate the
image using seFull kernel.
[r,c] = size(gearBW); %fill the array with object that
are detected
rp = regionprops(double(gearBW), 'all');
xy = rp.ConvexHull;
mask = poly2mask(xy(:,1),xy(:,2),r,c);
maskEroded = imerode(mask,ones(16));
teeth = gearBW;
teeth(maskEroded) = 0;
imshow(teeth) %The value
is showing a teeth of the gear
[l,numObj] = bwlabel(teeth,8); %labeling every object that are
detected
numObj
%showing
the number of teethHasil dari program di atas adalah:
numbObj adalah variabel yang menyimpan jumlah gigi gir yang sudah dihitung. Jika anda kurang yakin, hitunglah secara manual kemudian bandingkan dengan hasil di atas!
Selamat Bereksperimen!
Digital Image Processing Using Matlab - Latihan Matlab dan Image Processing Dasar
Assalamualaikum warahmatullah.
Punya Matlab yang terinstall tidak jelas di laptop? Daripada dianggurin, mending sejenak kita belajar tentang Pengolahan Citra Digital atau lebih kerennya disebut dengan Digital Image Processing. Apakah anda pernah menggunakan aplikasi pengolah foto seperti Adobe Photoshop, Photoscape dan Instagram? Wah, banyak sekali bukan fitur-fitur yang dimiliki aplikasi-aplikasi tersebut untuk memoles foto kita agar semakin indah dipandang? Kira-kira bagaimana sih cara kerjanya? Kok bisa foto yang kita capture dari device kita bisa berubah dan menjadi lebih indah? Ini nih gunanya Image Processing. Sebenarnya banyak sekali metode, teori, cara untuk mengolah gambar. Semua metode tersebut merupakan bagian dari pelajaran yang akan di dapat dari image processing ini. Tahukah anda, para pengembang teknologi mengolah gambar itu dengan memanfaatkan matematika yang sudah di dapat waktu SD, SMP, SMA, Kalkulus, Aljabar Linier, Statistika dan Komputasi Numerik untuk mengolah nilai piksel yang terkandung di dalam sebuah gambar.
Pernah melihat sebuah gambar yang di dalam komputer kita biasanya memiliki size tertentu? Itu dia merupakan hasil penjumlahan semua nilai piksel di dalam gambar tersebut.
Gambar itu secara umum terdiri dari 3 jenis, yaitu RGB, Grayscale dan Black&White. Sebenarnya Televisi jaman dulu menampilkan gambar dengan jenis Grayscale, hanya saja orang-orang salah kaprah mengartikan jenis gambar tersebut menjadi Black&White alias Hitam Putih.
Punya Matlab yang terinstall tidak jelas di laptop? Daripada dianggurin, mending sejenak kita belajar tentang Pengolahan Citra Digital atau lebih kerennya disebut dengan Digital Image Processing. Apakah anda pernah menggunakan aplikasi pengolah foto seperti Adobe Photoshop, Photoscape dan Instagram? Wah, banyak sekali bukan fitur-fitur yang dimiliki aplikasi-aplikasi tersebut untuk memoles foto kita agar semakin indah dipandang? Kira-kira bagaimana sih cara kerjanya? Kok bisa foto yang kita capture dari device kita bisa berubah dan menjadi lebih indah? Ini nih gunanya Image Processing. Sebenarnya banyak sekali metode, teori, cara untuk mengolah gambar. Semua metode tersebut merupakan bagian dari pelajaran yang akan di dapat dari image processing ini. Tahukah anda, para pengembang teknologi mengolah gambar itu dengan memanfaatkan matematika yang sudah di dapat waktu SD, SMP, SMA, Kalkulus, Aljabar Linier, Statistika dan Komputasi Numerik untuk mengolah nilai piksel yang terkandung di dalam sebuah gambar.
Pernah melihat sebuah gambar yang di dalam komputer kita biasanya memiliki size tertentu? Itu dia merupakan hasil penjumlahan semua nilai piksel di dalam gambar tersebut.
Gambar itu secara umum terdiri dari 3 jenis, yaitu RGB, Grayscale dan Black&White. Sebenarnya Televisi jaman dulu menampilkan gambar dengan jenis Grayscale, hanya saja orang-orang salah kaprah mengartikan jenis gambar tersebut menjadi Black&White alias Hitam Putih.
- Disebut RGB karena memiliki 3 chanel warna, yaitu Red (tingkat kemerahan), Green (tingkat kehijauan) dan Blue (tingkat kebiruan) dengan nilai maksimal 255 dan nilai minimal 0. Itu alasannya mengapa warna putih dikodekan dengan #FFF dan hitam #000.
- disebut Grayscale karena hanya memiliki 1 chanel warna yaitu tingkat keabuan dengan nilai minimal 0 dan nilai maksimal adalah 255
- disebut Grayscale karena hanya memiliki 2 kemungkinan warna yaitu 1 atau 0. Gambar dengan jenis ini juga sering disebut sebagai gambar biner.
Berikut adalah latihan dasar menggunakan Matlab sebelum nantinya menginjak materi Matlab lebih dalam, yaitu sebagai berikut:
- 1. Perintah B=[1 2 3;4 5 6;7 8 9];Kode tersebut akan menunjukkan matriks dengan ordo 3x3 sebagai berikut:1 2 34 5 67 8 92. Tampilkan nilai B posisi(2,3) dan Ganti B(1,3) dengan 0.Untuk menampilkan B posisi(2,3), maka pada matlab harus diketikkan kode sbb:B(2,3)Untuk mengganti nilai pada posisi(1,3), maka:B(1,3)=0;3. C=zeros(3);Kode tersebut menghasilkan matriks 0 berordo 3x3 sbb:0 0 00 0 00 0 04. D=ones(3);Kode tersebut menghasilkan matriks 1 berordo 3x3 sbb:1 1 11 1 11 1 15. E=B’;Kode tersebut akan mengisi E dengan matriks transpose dari B, yaitu:1 4 72 5 80 6 96. F=inv(B);Kode tersebut untuk menghitung nilai invers dari matriks B, yaitu:-0.3333 -2.0000 1.33330.6667 1.0000 -0.6667-0.3333 0.6667 -0.33337. G=[2 4 6;2 4 6;2 4 6]Kode tersebut menghasilkan berikut:G =2 4 62 4 62 4 68. H=BXGX merupakan simbol perkalian cross dua buah matriks, maka perintah yang digunakan adalah :H=cross(B,G);dan menghasilkan sebagai berikut:H =-6 -12 -1812 24 54-6 -12 -369. I= B.G. merupakan simbol perkalian dot untuk 2 buah matriks, maka perintah yang digunakan adalah:I=dot(B,G);dan menghasilkan berikut:I =24 60 9010. J = hasil pertambahan B dan G yang bersesuai posisinya(1 baris perintah)à J=B.+G;Perintah yang digunakan adalah:J=plus(B,G);Hasilnya sebagai berikut:J =3 6 66 9 129 12 1511. Perintah:If Nilai>= 80 && <=100àANilai>=65 &&<80àBElse Tidak lulus(harus pake editor)Dapat dilakukan dengan sintaks sebagai berikut:Nilai=input('Masukkan Nilai= ');if (Nilai>=80 && Nilai<=100)fprintf('A');elseif(Nilai>=65 && Nilai<80)fprintf('B');else fprintf('Tidak Lulus!soal');end12. Perintah:K= baris pertama Bà 1 baris perintahK2= kolom pertama B à 1 baris perintahK3 = baris kedua dan ketiga B à 1 baris perintahDapat dilakukan dengan sintaks:K=B(1,:);K2=B(:,1);K3=[B(2,:); B(3,:)];13. L=2 x Bàtanpa loopPerintahnya:L = B * 2;14. M=2 x B àdengan loopPerintahnya:for a = 1 : length(B)for b = 1 : length(B)M(a,b) = B(a,b) * 2;endend15. Kernel = [1/9 1/9 1/9;1/9 1/9 1/9;1/9 1/9 1/9]Hasilnya:kernel =0.1111 0.1111 0.11110.1111 0.1111 0.11110.1111 0.1111 0.111116. N =[0 0 0 0 0;0 100 100 100 0;0 100 100 100 0;0 0 0 0 0]Hasilnya:N =0 0 0 0 00 100 100 100 00 100 100 100 00 0 0 0 017. O=conv2(N,kernel)Hasilnya:O =0 0 0 0 0 0 00 11.1111 22.2222 33.3333 22.2222 11.1111 00 22.2222 44.4444 66.6667 44.4444 22.2222 00 22.2222 44.4444 66.6667 44.4444 22.2222 00 11.1111 22.2222 33.3333 22.2222 11.1111 00 0 0 0 0 0 018. img=imgread(‘Tulips.jpg’);imshow(img);19. imgR=img(1,:,1); imshow(imgR)imgR= img(:,:,1); imshow(imgR)
20. imgG=img(1,:,2); imshow(imgG)21. imgB=img(1,:,3); imshow(imgB)Notasi tersebut mengambil gambar sebesar (a,b,c). a adalah besar pixel yang digambil secara vertikal, b adalah besar pixel yang diambil secara horizontal, dan c adalah channel gambar.22. perintah untuk menggabungkan semua channel gambar adalah:imgGab=cat(3,imgR,imgG,imgB); imshow(imgGab);hasilnya:
23. P= hasil konvolusi kernel masingmasing channel IMG kemudiandigabungkan
24. Simpankedalam imgBlur.jpg25. imgGS=im2gray(img);imshow(imgGS);
26. IMGbw=im2bw(img);
ImgimgGSimgBWimgRimgGimgBPerintah:subplot(3, 3, 1), subimage(img)title('Img asli')subplot(3, 3, 2), subimage(imgR)title('Img R')subplot(3, 3, 3), subimage(imgG)title('Img G')subplot(3, 3, 4), subimage(imgB)title('Img B')subplot(3, 3, 5), subimage(imgGab)title('Img Gab')subplot(3, 3, 6), subimage(gray)title('Img GS')subplot(3, 3, 7), subimage(imbw)title('Img BW')subplot(3, 3, 8), subimage(hasil)
28. Buat Titletitle('Img konvolusi')29. Save gambar di plotsaveas(gcf, 'Plot of Image', 'jpg');


