Kamis, 28 Februari 2013

APLIKASI HUFFMAN pada MATLAB


                    Salah satu teori yang dapat digunakan untuk mengompresi data adalah dengan kode Huffman.  Kode ini dikemukakan oleh David A. Huffman,  seorang doktor teori informasi  (information  theory) lulusan MIT (Massachusets Institute of Technology) pada tahun 1952.

David A. Huffman (1925 - 1999)


           Dalam kompresi data, kode Huffman adalah kode-kode biner yang mengodekan suatu simbol  tertentu pada suatu data. Kode-kode tersebut dibentuk dengan memperhatikan frekuensi kemunculan simbol  tertentu pada data tersebut. Kode Huffman tidak  bersifat unik, kode untuk setiap simbol berbeda pada  setiap data berbeda yang dikompres. Dalam pembentukannya, Kode Huffman  menerapkan konsep kode awalan (prefix code), yang merupakan himpunan kode biner, sedemikian sehingga tidak ada anggota  himpunan yang merupakan  awalan dari anggota yang lain, supaya pada proses dekoding, tidak ada keambiguan antara satu simbol dengan simbol yang lain.  Kode awalan yang merepresentasikan  simbol  yang lebih sering muncul menggunakan rangkaian biner yang lebih pendek daripada kode yang digunakan untuk merepresentasikan  simbol  yang lebih jarang muncul. Dengan demikian jumlah bit yang digunakan untuk menyimpan informasi pada suatu data bisa lebih pendek. Urutan algoritma untuk membentuk kode Huffman adalah sebagai berikut:
  1. Mula-mula dihitung terlebih dahulu frekuensi kemunculan tiap simbol di dalam data
  2. Pembentukan kode Huffman dilakukan dengan membangun pohon biner dengan panjang lintasan berbobot minimum, (yang dinamakan pohon huffman) ;
    • Pertama-tama dipilih dua simbol dengan peluang kemunculan paling kecil (terdapat  dengan jumlah paling sedikit di dalam data).
    • Kedua simbol tadi digabungkan membentuk simpul orang tua dari kedua simbol itu sendiri, dengan peluang kemunculan sebesar jumlah dari peluang  kemunculan kedua simbol itu.
    • Simbol baru ini diperlakukan sebagai simpul baru dan diperhitungkan dalam mencari symbol selanjutnya yang memiliki peluang kemunculan terkecil.
    • Kemudian, dipilih dua simbol lainnya yang juga memiliki peluang kemunculan paling kecil (termasuk simbol yang baru dibuat).
    • Prosedur yang sama dilakukan pada dua simbol berikutnya yang mempunyai peluang kemunculan terkecil.
    • Langkah nomor 2 diluangi terus sampai semua simbol habis dibuat pohon biner.
     
  3. Daun pada pohon Huffman menyatakan simbol yang terdapat di dalam data yang dikompres.
  4. Setiap simbol dikodekan dengan memberi label 0 pada setiap cabang kiri pohon biner dan label 1 untuk setiap cabang kanannya.
  5. Dibuat lintasan dari akar ke daun, sambil membaca label 0 atau 1 yang terdapat pada setiap cabang.
  6. Kode Huffman untuk simbol pada suatu daun adalah rangkaian biner yang dibaca dari akar hingga daun yang bersangkutan.
berikut adalah koding yang digunakan pada Matlab :


function huff()
clc;
fid=fopen('Budianto.txt','r');
seq=fread(fid,'*char');
fclose(fid);
seq=reshape(seq,1,length(seq));
[alpha prob]=probmodel(seq);
if ~isempty(alpha)
[huf entropy avglength redundancy]=huffman(alpha,prob);
if ~isempty(huf)
    lp=length(prob);
   for i=1:lp
     str=huf(i).sym;
     str=strcat(str,' :');
     str=strcat(str,num2str(huf(i).prob));
     str=strcat(str,' :');
     str=strcat(str,huf(i).code);
     disp(str);
   end
   disp(strcat('Entropy = ',num2str(entropy)));
   disp(strcat('Average length = ',num2str(avglength)));
   disp(strcat('Redundancy = ',num2str(redundancy)));
   encseq=huffencode(huf,seq);
   disp('Sequence :');
   disp(seq);
   disp('Encoded Sequence :');
   disp(encseq);
   decseq=huffdecode(huf,encseq);
   disp('Decoded Sequence :');
   disp(decseq);
end
else
    display('Empty Sequence....');
end
end



Outputnya :


    'B :0.125 :111'

    'u :0.125 :110'

    'd :0.125 :101'

    'i :0.125 :100'

    'a :0.125 :011'

    'n :0.125 :010'

    't :0.125 :001'

    'o :0.125 :000'

Entropy =3
Average length =3
Redundancy =0
Sequence :
Budianto
Encoded Sequence :
111110101100011010001000
Decoded Sequence :
Budianto







Terima Kasih


Salam
Budianto
Read More..

BERSYUKUR

KESAL, MENGELUH, MENYERAH ?...
CARA MENGATASINYA ADALAH BERSYUKUR KEPADA TUHAN DALAM KEADAAN APA PUN, JANGAN BERSUNGUT-SUNGUT !!

Hidup kadang kala diatas dan dibawah dan kebanyakkan manusia sering sekali membandingkan dirinya dengan orang lain
  • Seandainya saya sekaya dia, pastinya...
  • Coba saya hidup di keluarga orang kaya seperti dia...
  • Coba saya sepintar dia,,,
  • Jika saya bisa pintar bicara pasti sudah sukses seperti dia,,
  • dll.
Namun yang membedakan kita bisa terus bertahan dalam hidup ini adalah dengan cara BERSYUKUR.
Bersyukur adalah menggangap semua ciptaan Tuhan dalam Hidup ini Sempurna. dibawah ini merupakan gambar-gambar yang mungkin bisa kita renungkan kebaikkan Tuhan atas hidup kita ;
  1. Jika RENDAH GAJI-MU, coba lihat gambar dibawah ini..
      2. Jika HATI-MU lagi tidak bersukacita, Lihat gambar dibawah ini..

      3. Orang Tua mu lelah merawat mu, Merka tidak mempunyai orang Tua seperti gambar dibawah ini ..


      4. BOSAN MAIN GAME, Apa pilihan merka?..
 

      5. Kesal dengan sepatu Jelek atau Murah, Lihat merk sedal/sepatu mereka?..


      6. Tempat tidur kuran Empuk?.. coba lihat mereka..


      7. Jika kamu merasa kurang banyak temen, bagaimana dengan orang dibawah ini..

    
      8. Jika kamu merasa ingin MENYERAH, Lihat gambar dibawah ini..


      9. Jika Hati mu bersungut-sungut, Lihat gambar dibawah ini,,


     10. Jika Jalanan membuat kamu tidak merasa senang, Lihat gambar dibawah ini,,


     11. Jika kamu merasa diperlakukan dengan tidak adil, coba lihat gambar nenek dibawah ini..


     12. Pilih-pilih Makanan, Coba lihat merka..


     13. Malas Sekolah dan Belajar,, Bagaimana dengan Merka ..



"Bersyukurlah setiap saat, karna hidup kita Berharga di mata Tuhan, Dia punya rencana untuk hidup kita tergantung bagaimana kita menanggapinya,,
coba belajar katakan tiap bangun pagi saat baru buka mata dengan kata ; -Terima Kasih Tuhan atas Nafas, Karunia, Penyertaan Mu- "
"Semangat Temen, GOD IS GREAT"


GOD BLESS YOU.
Read More..

Rabu, 20 Februari 2013

Perbedaan Jaringan AD-HOC dengan Jaringan INFRASTRUKTUR

Jaringan Wireless umumnya bekerja berdasarkan salah satu topology konfigurasi baik jaringan Ad-Hoc ataupun jaringan Infrastruktur. gambar dibawah merupakan perbedaan diantara kedua jaringan ;


  •  TOPOLOGI JARINGAN AD-HOC

    • Jaringan wireless Ad hoc adalah kumpulan node (atau router) wireless mobile yang secara dinamis keberadaannya tanpa menggunakan jaringan infrastruktur yang ada atau administrasi yang terpusat.
    • Jaringan wireless Ad Hoc dapat juga dikatakan sebagai desentraslisasi jaringan wireless.
    • Jaringan ad-hoc merupakan bentuk komunikasi jaringan wireless yang paling sederhana.
    • Pada jaringan Ad Hoc, router dapat dengan bebas melakukan organiasi jaringan yang berakibat topologi akan berubah dengan cepat dan sulit untuk diprediksi. Dengan fitur ini, jaringan Ad Hoc mengalami beberapa tantangan antara lain,
      • Multihop
      • Mobility
      • Kombinasi jaringan yang besar dengan berbagai peralatan yang berbeda
      • Bandwidth
      • Keterbatasan konsumsi battery
       
    • Jaringan Ad Hoc juga memerlukan protokol routing karena setiap node memerlukan pertukaran data.
    • Berbeda dengan jaringan infrastruktur, jaringan ad-hoc tidak membutuhkan sebuah wireless lan untuk menghubungkan masing-masing komputer dan topologi jaringan yang terbentuk adalah jaringan mesh.


    • Keuntungan pada Jaringan ADHOC :
      • Jaringan wireless Ad-Hoc sangat sederhana dalam men-setup nya. Tancapkan adapter wireless ke pada komputer kalau untuk laptop langsung hidupkan wifi, konfigurasi softwarenya pada PC, dan andapun sudah bisa melakukan komunikasi antar laptop.
      • Jaringan Ad-Hoc adalah murah karena anda tidak memerlukan sebuah perangkat wireless Access Point.
      • Jaringan Ad-Hoc adalah cepat. Rate throughputnya antar adapter dua kali lebih cepat daripada anda menggunakan wireless Access Point dalam topology infrastruktur.
       
     
  •  TOPOLOGI JARINGAN INFRASTRUKTUR

    • Konsep jaringan infrastruktur dimana untu membangun jaringan ini diperlukan wireless lan sebagai pusat.
    • Wireless lan memiliki SSID sebagai nama jaringan wireless tersebut, dengan adanya SSID maka wireless lan itu dapat dikenali. Pada saat beberapa komputer terhubung dengan SSID yang sama, maka terbentuklah sebuah jaringan infrastruktur.
    • Terlihat bahwa beberapa komuputer dihubungkan oleh satu wireless lan, disini toplogi jaringan yang terbentuk adalah topologi star.
    • Anda bisa memperluas jangkauan jaringan wireless dengan menambahkan sebuah Access Point.


    •  Keuntungan pada Jaringan INFRASTRUKTUR ;
      • Terhubung kepada jaringan kabel LAN. Sebuah wireless Access Point memungkinkan anda memperluas jaringan LAN anda dengan kemampuan koneksi secara wireless. Komputer pada jaringan kabel dan komputer dengan koneksi wireless bisa saling berkomunikasi satu sama lain. Hal ini lah yang menjadi kekuatan utama dari topologi wireless infrastruktur.
      • Memperluas jangkauan wireless anda. Dengan jalan meletakkan sebuah wireless Access Point diantara dua wireless adapters memperpanjang jangkauan menjadi dua kali lipat.
      • Menggunakan kemampuan roaming. Jika anda menggunakan beberapa wireless Access Point seperti halnya dalam sebuah kantor yang besar atau rumah yang sangat luas, user bisa melakukan roaming antara dua cell Access Point yang saling terikat, tanpa harus kehilangan koneksi kepada jaringan walau melompat dari satu Access Point ke Access Point lainnya. Modus dari wireless access point dengan kemampuan roaming seperti ini disebut WDS (wireless distribution system).
      • Dengan infrastruktur topologi, anda bisa berbagi sambungan internet. Mungkin perangkat yang sangat praktis untuk berbagi sambungan internet broadband dari sambungan ADSL adalah wireless modem-router yaitu wireless router / gateway yang mempunyai built-in modem ADSL.




Terima Kasih



Salam,
Budianto
Read More..

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






Read More..