Professional Documents
Culture Documents
2011
Artikel ini merupakan lanjutan dari artikel sebelumnya tentang segmentasi karakter pada citra digital (misalnya OCR) dengan menggunakan profile projection. Dalam artikel ini dihadirkan alternatif tanpa menggunakan teknik khusus, hanya dengan memanfaatkan toolbox regionprops yang terdapat dalam matlab. Metode segmentasi menggunakan profile projection memiliki banyak kelebihan, khususnya dalam fleksibilitas. Fleksibilitas ini tidak dimiliki oleh teknik yang akan saya hadirkan karena teknik ini tidak bisa melakukan segmentasi secara penuh jika tiap karakter memiliki ukuran yang berbeda. Sementara itu, profile projection mampu untuk melakukan segmentasi terhada karakter yang masingmasing ukurannya bisa berbeda. Tapi untuk kasus tertentu, kita bisa menggunakan alternatif ini. Anggap saja kita sudah bisa mengkondisikan citra digital tersebut. Bisa dibilang juga, bila keadaan dari citra digital ini memang sudah memiliki standar sehingga ukuran karakter sama. Seperti diketahui bahwa regionprops pada matlab memiliki properti yang banyak dan sangat bermanfaat. Salah satu properti yang paling sering digunakan adalah dalam menemukan centroids dan boundingbox. Berikut ini saya hadirkan properti yang terdapat di dalam toolbox ini yang saya ambil dari HELP Matlab.
Dalam artikel ini saya tidak akan menjelaskan per-item dari isi tabel di atas. Artikel lainnya akan saya tulis untuk menjelaskan tentang properti di atas dan penggunaannya. Langkah-langkah dalam membuat program alternatif ini adalah Import file citra ke dalam matlab Deteksi centroid dengan menggunakan regionprops dengan perintah
stats=regionprops(bw,{'centroid','boundingbox','extrema'});
Ada 3 measurement yang kita gunakan yakni centroid, boundingbox dan extrema. Nah extrema ini akan kita gunakan lebih lanjut.
[4
Oktober
2011]
Page 1
2011
Bila anda perhatikan, extrema memiliki 8 buah properti yang bisa dibaca nilainya menggunakan matlab. Fungsinya adalah untuk mengetahui bagian-bagian terluar dari sebuah objek yang terdeteksi. Ternyata dengan menggunakan properti ini kita bisa juga melakukan automatic segmentation untuk karakter pada citra digital. Anda bisa memperhatikan pada program yang telah dibuat, properti apa saja yang saya gunakan dalam menghasilkan segmentasi ini. Setelah terdeteksi extremanya, lalu kita melakukan pemotongan untuk tiap baris di mana karakter-karakter tersebut berada. Tiap baris yang telah terpotong, maka dilakukan pemotongan (cropping) tiap karakter dengan menggunakan centroid (regionprops) pada baris baru yang telah dipotong.
[4
Oktober
2011]
Page 2
[Jans Hendry / EE&IT UGM, INDONESIA] xkt=stats(k).Extrema; xx(k,:)=[xkt(1,1) xkt(6,1) xkt(7,1) xkt(8,1)]; yy(k,:)=[xkt(1,2) xkt(6,2) xkt(7,2) xkt(8,2)]; plot(cent(1),cent(2),'bo','MarkerSize',5,'MarkerFaceColor','g'); bx=[boks(1),boks(1),boks(1)+boks(3),boks(1)+boks(3),boks(1)]; by=[boks(2)+boks(4),boks(2),boks(2),boks(2)+boks(4),boks(2)+boks(4)]; line(bx,by,'color','r'); text(xkt(1,1),xkt(1,2)-5,sprintf('%d',k)); pause(.01); end % menemukan kolom dan baris untuk crop for k=1:2 xx_min(1,k)=min(xx(k,:)); yy_min(1,k)=min(yy(k,:)); yy_max(1,k)=max(yy(k,:)); end xx_min=min(xx_min)-3; yy_min=sort(yy_min); yy_max=sort(yy_max); clear boks cent xkt for k=1:length(yy_max) Ibb=imcrop(Ib,[xx_min yy_min(1,k)-5 col yy_max(1,k)-yy_min(1,k)+5]); stats=regionprops(Ibb,{'centroid','boundingbox'}); figure, for k=1:numel(stats) cent=stats(k).Centroid; boks=stats(k).BoundingBox; Icr=imcrop(Ibb,[boks(1) boks(2) boks(3) boks(4)]); subplot(1,numel(stats),k); imshow(Icr); pause(.1); end end %% % originale by jans hendry % EE of UGM, Indonesia
2011
Langkah-langkah yang telah saya uraikan, terimplementasi dengan baik pada program di atas. Bila program tersebut dijalankan maka akan dihasilkan
[4
Oktober
2011]
Page 3
2011
Citra original
Hasil pengolahan
Segmentasi - 1
Segmentasi - 2
Salah satu contoh kegagalan yang terjadi adalah apabila program ini digunakan untuk segmentasi citra berikut ini:
[4
Oktober
2011]
Page 4
2011
Ternyata program ini tidak bisa melakukan segmentasi dengan baik terhadap objek pada citra. Hasil eksekusinya adalah: Hasil - 1
Hasil - 2
Hasil - 3
Hasil - 4
Seharusnya untuk hasil ke 4 yang dihasilkan adalah karakter alphabet, tapi kenyataannya tidak begitu. Mungkin masih bisa dilakukan perbaikan, tetapi saya pesimis... Semoga program ini bisa bermanfaat dan memberikan penjelasan singkat tentang penggunaan properti dari regionprops pada matlab.
[4
Oktober
2011]
Page 5