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