Selasa, 19 Februari 2013

Membuat Aplikasi Counting Object dengan Matlab


Perhitungan karakter

    Perhitungan karakter ini cukup penting ketika kita berurusan dengan projek untuk mengklasifikasikan karakter yang terdapat dalam citra. Sebagai mana contoh ; mengartikan tulisan yang ada di dalam citra hasil scan. Dengan menghitung jumlah karakter yang ada di dalamnya, dan dengan program ini maka prosesnya akan menjadi otomatis tidak lagi hitung manual. kali ini saya mencoba dengan gambar dan isi gambar tersebut berisi karakter yang saya buat.


Langkah - Langkah Penjelasannya :

  1. Membaca citra digital
  2. Cek apakah citra berupa RGB atau grayscale atau biner.  Jika citra dalam bentuk RGB atau Grayscale maka kita jadikan biner terlebih dahulu.
  3. Mencari centroid atau titik massa untuk tiap objek.
  4. Untuk tiap centroid yang ditemukan, kita berikan kotak yang menandakan bahwa dia telah terklasifikasi.
  5. Output
Berikut adalah Programnya :

clear all
clc;
filename='Budianto.png';
I=imread(filename);

[bar,kol,z]=size(I);
if z==3
    bw=im2bw(I,.5);
else
    bw=I;
end
bw=~bw;

bw=bwconncomp(bw,4);
bw=labelmatrix(bw);

stats=regionprops(bw,{'centroid','boundingbox'});
imshow(I);
title('INILAH HASILNYA.. ^-^','fontsize',14);
hold on;

for k=1:length(stats);
    cent=stats(k).Centroid;
    boks=stats(k).BoundingBox;
    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');
    pause(.01);
end
xlabel(sprintf('There is %d characters detection counted',length(stats)));
hold off;

Penjelasan Program :



  • Untuk membaca citra digital //

filename='font4.png';
I=imread(filename);

  • Jika citra dalam bentuk RGB atau Grayscale maka kita jadikan biner//

[bar,kol,z]=size(I);
if z==3
bw=im2bw(I,.5);
else
bw=I;
end
bw=~bw;

  •         Untuk mencari centroid atau titik massa (proses) //

                                                          bw=bwconncomp(bw,4);
                                                              bw=labelmatrix(bw);
                                     stats=regionprops(bw,{'centroid','boundingbox'});

  • Untuk menampilkan gambar hasil//

imshow(I);
title('How to count characters in an image','fontsize',14);
hold on;

  • Untuk proses perhitungan dengan menghitung centroid yang ada//

for k=1:length(stats);
cent=stats(k).Centroid;
boks=stats(k).BoundingBox;
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');
pause(.01);
end


  • untuk menampilkan gambar hasil//

xlabel(sprintf('There is %d characters counted',length(stats)));
hold off;


Ini adalah gambar sebelum di proses : (Gambarnya bisa file ektensi apa saja ; jpg,png,bmp,, saya memakai png) ::




Hasilnya setelah di jalankan ::






Terima kasih

Salam
Budianto






1 komentar:

  1. kok error:
    Undefined function or method 'bwconncomp' for input arguments of type 'double'.

    BalasHapus