Kamis, 27 September 2012

JST untuk Pengenalan Karakter (I)

Teman-teman, pada kesempatan ini saya akan mencoba menulis penggunaan Jaringan Saraf Tiruan (JST) untuk dapat digunakan sebagai pengenalan karakter, baik berupa huruf atau angka. Yang saya tulis hanya salah satu saja dari berbagai metode yang telah banyak digunakan oleh penulis lainnya. Namun paling tidak apa yang akan saya uraikan menjadi salah satu ide dasar penggunaan JST untuk pengenalan karakter. Selanjutnya, teman-teman dapat mengembangkan kreatifitas teman-teman sendiri.

Seperti biasa, saya akan menggunakan MATLAB. Ada tiga toolbox yang digunakan, yaitu sebagai berikut:
  • Image Processing Toolbox
  • Image Acquisition Toolbox
  • Neural Network Toolbox
Image Processing Toolbox akan digunakan untuk melakukan pengolahan citra digital, Image Acquisition Toolbox untuk dapat mengaktifkan webcam dan Neural Network Toolbox untuk melakukan desain JST.
Idenya seperti berikut. Saya akan menggunakan webcam untuk merekam gambar yang akan dikenali. Untuk saat ini, saya hanya akan membedakan angka 1, 2 dan 3. Selama proses perekaman, webcam akan menangkap 1 frame yang selanjutnya akan menjadi sebuah citra digital. Selanjutnya, akan dilakukan pengolahan citra digital dan hasil akhir pengolahan ini akan menjadi input untuk JST. Untuk dasar pengolahan citra dan mengaktifkan webcam pada MATLAB, teman-teman bisa merujuk di sini, sedangkan dasar-dasar JST bisa teman-teman pelajari di sini.

Mari kita bahas satu persatu.
1) Koneksikan webcam, buka MATLAB dan tuliskan perintah berikut:
vid = videoinput('winvideo');

2) Preview hasil rekaman webcam:
preview(vid);

Contoh rekaman webcam sebagai berikut. Saya sengaja menampilkan angka 2 yg 'tertidur', untuk menghandle webcam saya yang tampilannya landscape.

 
3) Kita snapshot untuk mendapatkan 1 frame dari video:
I = getsnapshot(vid);
imshow(I);...........


4) Lakukan rotasi:
y = imrotate (I, -90);
figure, imshow(y);....


5) Ubah gambar menjadi hitam-putih:
bw = im2bw(y, 0.45);
figure, imshow (bw);


Pada tahap ini, perintah im2bw mengubah gambar menjadi format hitam-putih dengan treshold 0,45. Teman-teman dapat mengatur threshold ini, sesuai dengan karakter webcam dan kesesuaian dengan pengolahan citra yang akan kita bahas pada sesi ini.

6) Lakukan block-processing
fun = @(x) std2(x)*ones(size(x));
a = blockproc(bw,[10 10],fun);...
figure, imshow(a)................



Perintah blockproc akan melakukan pengolahan terhadap beberapa blok pixel (dalam hal ini 10 x 10 pixel), sesuai dengan fungsi yang diberikan oleh fun.
Pada jendela preview video terlihat bahwa resolusi webcam adalah sebesar 320x240. Karena kita telah merotasinya, maka ukurannya menjadi 240x320. Dengan perintah blockproc, sebanyak 10x10 pixel akan mempunyai nilai yang sama. Ini berguna untuk mereduksi jumlah input data untuk JST kita.

* untuk edisi MATLAB yang lebih lama, perintah blockproc dikenal sebagai blkproc

7) Lakukan block-processing kedua
a2 = blockproc(a,[40 40],fun);
figure, imshow(a2)............



Selanjutnya, dilakukan pengolahan lagi menggunakan ukuran 40x40. Pixel-pixel yang seragam akan memiliki ukuran yang lebih besar. Sehingga input JST kita sekarang seolah olah menjadi matriks 6x8 (ukuran awal 240x320 masing-masing dibagi 40).

8) Selanjutnya kita ubah lagi menjadi hitam-putih
b = im2bw(a2,0.05);
figure, imshow(b)..


9) Selanjutnya kita dapat menentukan bahwa hitam = 0 dan putih = 1

 

Nah, kita sudah siap menjadikan gambar kita sebagai input untuk JST. Setiap 40x40 pixel dijadikan 1 nilai saja (0 atau 1). Selanjutnya matriks berukuran 6x8 ini akan diubah menjadi matriks 48x1. Inilah yang akan menjadi input untuk JST.

-Bersambung-

Rabu, 26 September 2012

Pengenalan Image Processing dan Image Acquisition Toolbox pada MATLAB (I)

Hai teman-teman.... Kali ini saya akan berbagi sedikit tentang Image Processing Toolbox dan Image Acquisition Toolbox pada MATLAB. Kedua toolbox ini saling terkait. Image processing digunakan untuk melakukan pengolahan citra digital, sedangkan Image Acquisition digunakan jika teman-teman menggunakan media (sebagai contoh webcam) untuk merekam dan meng-capture gambar. Nah, pada kesempatan ini saya hanya akan menjelaskan dasar-dasar command yang sering digunakan pada kedua toolbox tersebut. Selanjutnya teman-teman dapat mempelajari lebih lanjut pada MATLAB help.

Pastikan teman-teman menginstal MATLAB lengkap dengan kedua toolbox ini, dan tentunya teman-teman harus memiliki webcam jika ingin menggunakan Image Acquisition toolbox.

Image Processing Toolbox
Berikut beberapa contoh dasar command pada Image Processing Toolbox:



























Image Acquisition Toolbox
Untuk menggunakan toolbox ini, pastikan teman-teman menghubungkan webcam dengan komputer dan selanjutnya menjalankan MATLAB ya :)

Teman-teman dapat mengikuti langkah-langkah berikut:


 
Contoh hasil preview pada MATLAB (saya sengaja merekam angka 2 pada posisi 'tertidur')


 



Demikian teman-teman dari saya. Semoga bermanfaat :)


Referensi
[1] Wardana, K., Penerapan Jaringan Saraf Tiruan untuk Pengenalan Karakter, Slide Kuliah Kecerdasan Buatan Jurusan Teknik Fisika UGM, 2010
[2] MATLAB Help



Kamis, 14 Juni 2012

Logika Fuzzy - Pengenalan FIS Editor (II)

Baiklah.. kita sambung pembahasan kita dari sesi Logika Fuzzy - Pengenalan FIS Editor (I).

Pada sesi ini, kita akan melanjutkan pembahasan mengenai pembentukan aturan-aturan yang menyatakan relasi antara input-output fuzzy.
Masih pada jendela Membership Function Editor, kita klik Edit - Rules... , maka akan tampil jendela Rule Editor sebagai berikut :



Aturan-aturan yang akan kita bentuk adalah sebagai berikut :

Pada jendela Rule Editor, kita melihat membership function (MF) Pelayanan (Jelek, Sedang, dan Bagus), Makanan (Tenguk, dan Lezat) dan Tip (Murah, Standar dan Mahal). Kita dapat merangkai aturan dengan memilih MF Input-Output serta mengaitkannya dengan Connection (or dan and). Pola kalimatnya adalah : 


Tulisan berwarna hijau pada kotak di atas merupakan options yang dapat dipilih pada jendela Rule Editor. Delete rule, Add rule dan Change rule masing-masing berfungsi untuk menghapus, menambahkan dan mengubah aturan-aturan yang telah kita buat. Bila kita selesai menyusun aturan, maka hasilnya tampak sebagai berikut :

Pada gambar di atas, kita sorot contoh pemilihan untuk aturan kedua.

Nah, pembahasan kita hampir selesai...
Masih pada Rule Editor di atas, jika kita klik View - Rules, kita akan melihat jendela Rule Viewer, sebagai berikut : 
Terlihat bahwa jika Pelayanan = 5 dan Makanan = 5, maka besarnya Tip yang Romi harus berikan adalah sebesar 15%. Masuk akal bukan? 

Sekarang kita kembali ke kasus kita. Dengan menggeser garis vertikal merah atau memasukkan nilai pada kolom Input pada posisi Pelayanan = 7 dan Makanan = 8, maka besarnya Tip adalah 20.3, seperti ditunjukkan pada gambar berikut :

Hal ini sesuai dengan apa yang terlihat pada sesi Logika Fuzzy (IV).
Sebelum mengakhiri pembahasan ini, sebaiknya kita simpan apa yang telah kita buat dengan cara  File - Export - To File ...

Yuuup teman-teman.. demikian akhir sesi Pengenalan FIS Editor. Semoga bermanfaat. Selamat belajar ^^


Referensi:

[1] MATLAB Help Tutorial
     http://www.mathworks.it/help/toolbox/fuzzy/
[2] Kusuma, Wardana. 2010. Matematika Logika Fuzzy, Slide Kuliah Kontrol Cerdas, Jurusan Teknik Fisika UGM. Yogyakarta.