22 Maret 2009

SEJARAH MATLAB

MATLAB adalah sebuah program untuk menganalisis dan mengkomputasi numerik dan merupakan suatu bahasa pemrograman matematika lanjutan yang dibentuk dengan dasar pemikiran menggunkan sifat dan bentuk matriks. Awalnya, program ini merupakan interface untuk koleksi rutin-rutin numerik dari proyek LINPACK dan EISPACK dikembangkan menggunkan bahasa FORTRAN namun sekarang merupakan produk komersial dari perusahaan Mathworks, Inc. yang dalam perkembangan selanjutnya dikembangkan menggunakan bahasa C++ dan assembler (utamanya untuk fungsi-fungsi dasar MATLAB).

MATLAB telah berkembang menjadi sebuah environment pemrograman yang canggih yang berisi fungsi-fungsi built-in untuk melakukan tugas pengolahan sinyal, aljabar linier, dan kalkulasi matematis lainnya. MATLAB juga berisi toolbox yang berisi fungsi- fungsi tambahan untuk aplikasi khusus . MATLAB bersifat extensible, dalam arti bahwa seorang pengguna dapat menulis fungsi baru untuk ditambahkan pada library ketika fungsi-fungsi built-in yang tersedia tidak dapat melakukan tugas tertentu. Kemampuan pemrograman yang dibutuhkan tidak terlalu sulit bila Anda telah memiliki pengalaman dalam pemrograman bahasa lain seperti C, PASCAL, atau FORTRAN. MATLAB merupakan merk software yang dikembangkan oleh Mathworks.Inc. merupakan software yang paling efisien untuk perhitungan numeric berbasis matriks. Dengan demikian jika di dalam perhitungan kita dapatmenformulasikan masalah ke dalam format matriks maka MATLAB merupakan software terbaik untuk penyelesaian numericnya. MATLAB (MATrix LABoratory) yang merupakan bahasa pemrograman tingkat tinggi berbasis pada matriks sering digunakan untuk teknik komputasi numerik,yang digunakan untuk menyelesaikan masalah-masalah yang melibatkan operasi matematika elemen, matrik, optimasi, aproksimasi dll. Sehingga Matlab banyak digunakan pada :


      • Matematika dan Komputansi


      • Pengembangan dan Algoritma


      • Pemrograman modeling, simulasi, dan pembuatan prototipe


      • Analisa Data , eksplorasi dan visualisasi


      • Analisis numerik dan statistik


      • Pengembangan aplikasi teknik


LISTING PROGRAM I


a = zeros(3)

i=1

j=1

for i=1:3

for j=1:3

a(i,j)=j

end;

end;


LOGIKA PROGRAM



Pada program kedua ini, kita akan merubah lagi elemen dari matrik tersebut. Perintah yang akan digunakan hampir sama dengan yang digunakan pada program yang pertama. Tetapi tiap elemen matriks tersebut akan diubah menjadi nilai 123 untuk matriks dimensi 3. Hanya saja untuk program ini, perintah untuk mencetak hasilnya diubah menjadi a(i,j)=j yang maksudnya adalah melakukan program perulangan untuk pengisian matriks yang dijalankan pertama akan di mencek perulangan yang ada pada kolom j. Maka pada kolom pertama akan dicetak 1, untuk kolom ke dua akan dicetak dua karena satu sudah diisi pada kolom ke satu dan seterusnya akan dilakukan perulangan sampai semua matriks terisi.



OUTPUT PROGRAM


a =


1 0 0

0 0 0

0 0 0


a =


1 2 0

0 0 0

0 0 0


a =


1 2 3

0 0 0

0 0 0






a =


1 2 3

1 0 0

0 0 0

a =


1 2 3

1 2 0

0 0 0


a =


1 2 3

1 2 3

0 0 0






a =


1 2 3

1 2 3

1 0 0






a =


1 2 3

1 2 3

1 2 0

a =


1 2 3

1 2 3

1 2 3



LISTING PROGRAM 2


a = zeros(3)

i=1

j=1

b=1

for i=1:3

for j=1:3

a(i,j)=b

b=b+1

end;

end;


LOGIKA PROGRAM


Pada praktikum pertama untuk mata praktikum Pengantar Kecerdasan Buatan ini, praktikum akan membuat sebuah matrik 3x3 dengan menggunakan MATLAB.

Praktikan akan membuat matrik berdimensi 3 dimana nilai dari tiap elemen dari matriknya adalah 1. Pertama-tama praktikan mendeklarasikan sebuah matriks dengan elemen-elemen awalnya adalah nol dengan menggunakan perintah a = zeros(3), kemudian praktikan akan mengganti tiap elemen matrik tersebut dengan nilai 1 dengan menggunakan perulangan for bersarang dengan menggunakan 2 buah statement dan dengan 2 buah variable yaitu I dan J, kemudian deklarasikan variable-variabel tersebut dengan nilai 1. Berikut adalah potongan perintah yang digunakan :

for i=1:3

for j=1:3

perintah tersebut berfungsi untuk mengisi tiap elemen matrik dengan dimensi 3 dengan nilai 1 dengan menggunakan bentuk perulangan for I dan for j.dan dalam perulangan mencetak nilai b yang akan terus bertambah sehingga tercetak nilai 1 sampai 9.

dan perintah End berarti akhir dari program tersebut.





OUTPUT PROGRAM


a=1 2 3

  1. 5 6

  1. 8 9

b=10

17 Desember 2008

Kompresi Citra Grayscale dengan Algoritma RLE (Run Length Encoding)

Sebelumnya sudah pernah dibahas, metode kompresi dengan algoritma kuantisasi. Algoritma kuantisasi merupakan teknik kompresi yang lossy, artinya banyak informasi dari citra yang hilang, sehingga akan sulit untuk didekompresi kembali.
Nah kalau Algoritma RLE ini merupakan teknik kompresi yang lossless, sehingga kita dengan mudah dapat melakukan dekompresi citra kembali.
Bagaimana algoritma RLE bekerja? Kita coba implementasikan dengan citra grayscale ukuran 6x6 bit (8 derajat keabuan) sebagai berikut:

1 1 1 7 1 3
4 4 6 1 2 2
7 7 7 5 5 5
6 4 4 2 2 2
5 5 2 2 2 1
2 3 3 3 0 0

Kode RLE merupakan pasangan intensitas warna dan banyaknya intensitas warna yang muncul berurutan. Sehingga di dapat kode RLE nya adalah sebagai berikut:
1 3 7 1 1 1 3 1 4 2 6 1 1 1 2 2 7 3 5 3 6 1 4 2 2 3 5 2 2
3 1 1 2 1 3 3 0 2

Cara membaca kode diatas adalah : intensi
tas warna 1 muncul 3 kali, intensitas warna 7 muncul 1 kali, intensitas warna 1 muncul 1 kali, intensitas warna 3 muncul 1 kali,...... dan seterusnya. Cocokkan dengan citra aslinya.
Berikutnya ini adalah source untuk mebuat kod
e RLE tersebut. Seperti biasa dibikinnya pake Matlab.
g adalah citra grayscale yang kita punya. Hasilnya akan ditampung dalam array yang diberi nama rle. Nah karena dapam array rle kita juga menyimpan berapa kali intensitas warna tersebut muncul, maka untuk mendekompresi kembali tentu merupakan perkara yang mudah.

12 November 2008

Membaca file teks di Matlab

Jika kita melakukan programing dengam Matlab seringkali kita menggunakan data berupa matrik yang ukurannya besar pada saat mengetes program yang kita buat. Kalau data ini harus diinputkan dari keyboard satu persatu, bayangkan betapa lamanya proses untuk itu. Akan lebih sederhana jika matrik tersebut kita simpan dalam sebuah file teks, yang nantinya dapat kita load sewaktu-waktu.
Contoh:
Buat file text (dengan notepad misalnya) dengan data sebagai berikut:
25 26 67 68 89 79 28
27 24 16 28 29 16 29
23 35 27 28 29 11 12
87 23 56 79 25 67 25
Untuk mengidentifikasi data satu dengan yang lain, dipisah dengan minimal satu spasi. Simpan file dengan nama data1.txt
Untuk mendapatkan data tersebut ketikkan instruksi LOAD dengan format berikut di command window Matlab dan hasilnya dapat dilihat bahwa matrik yang kita punya akan menjadi nilai suatu variabel (misalnya x).
>> x=load('data1.txt')
x =
25 26 67 68 89 79 28
27 24 16 28 29 16 29
23 35 27 28 29 11 12
87 23 56 79 25 67 25
Instruksi diatas kita gunakan jika datanya numerik. Bagaimana jika yang kita simpan dalam file teks adalah berupa string. Jangan kuatir, Matlab menyediakan juga instruksi untuk itu. Salah satunya dapat kita gunakan TEXTREAD.
Contoh:
Buat file teks dengan data string berikut:
Ini adalah contoh pesan yang dituliskan dalam file teks. Akan dicoba untuk membaca file ini dengan Matlab
Simpan dengan nama pesan.txt
Untuk mendapatkan kembali data tersebut ketikkan instruksi TEXTREAD dengan format berikut, melalui command window di Matlab.
>> n=textread('pesan.txt','%s')
n =
'Ini'
'adalah'
'contoh'
'pesan'
'yang'
'dituliskan'
'dalam'
'file'
'teks.'
'Akan'
'dicoba'
'untuk'
'membaca'
'file'
'ini'
'dengan'
'Matlab'

2 November 2008

Metode Cramer untuk penyelesaian SPL dengan Matlab

Sebenarnya kalo mau menyelesaikan SPL dengan Matlab, gampang sih....tingal ketikkan tik tik tik...enter... ketemu penyelesaiannya. Beres. Tapi inget kan...dulu kita pernah pelajari Metode Crammer, yang rumusannya seperti ini:
Nah...dari sini dapat kita buat algoritmanya:

Pertama : Masukkan matrik A dan B.

Kedua : Cek dulu ukuran matrik A dan B, matrik A haris bujur sangkar dan B harus matrik kolom yang jumlah barisnya sama dengan A.

Ketiga : Musti dicek juga, determinan matrik A, Karena jika determina matrik A = 0, ya kita gak bisa dapatkan satu penyelesaian dong. Karena bisa jadi ada banyak penyelesaian, dan bisa jadi juga nggak ada penyelesaian.

Keempat: Kita cari matrik A1 sampai dengan Aj berikut determinannya. Setelah itu masing-masing matrik dicari determinannya.

Kelima : Penyelesaian didapat dengan membegi determinan matrik A1 s.d Aj dengan determinan matrik A.


28 Oktober 2008

Noise

Noise pada Citra

Ada banyak jenis noise yang dapat mempengaruhi kualitas citra, diantaranya adalah salt and pepper, gaussian, speckle, localvar dan poisson. Efek masing-masing noise tentunya berbeda-beda. Ada yang efeknya sangat mempengaruhi tampilan citra, tapi ada juga yang tidak begitu berpengaruh terhadap citra.

Salt & Peper

Seperti namanya noise jenis ini terlihat seperti salt and pepper. Pada citra akan nampak seperti titik-titik. Untuk citra RGB titik-titik muncul dalam tiga warna yakni merah (red), hijau (green) dan biru (blue), sedangkan pada citra GRAY noise akan muncul dalam dua warna yakni hitam (black) dan putih (white). Noise ini memberikan efek ”on dan off” pada pixel. Pada MatLab kita dapat mengatur ”konstanta” noise. Konstanta berupa angka numerik non negatif dengan range 0 sampai dengan 1. Makin besar konstantanya citra akan semakin kabur, sebaliknya makin kecil konstantanya efek pada citra makin tidak terlihat. Nilai default untuk konstanta noise adalah 0.05.


Gaussian

Disebut juga Gaussian White Noise. Untuk menambahkan noise ini pada MatLab memerlukan input tambahan berupa rata-rata dan variasi. Rata-rata dan variasi merupakan suatu konstanta real. Nilainya bisa positif maupun negative. Makin besar rata-rata dan variasinya maka
citra akan semakin kabur, sebaliknya makin kecil konstantanya efek pada citra makin tidak terlihat. Nilai default adalah 0 untuk mean dan 0.01 untuk variance. Disebut white noise karena pada saat nilai rata-rata dan variasinya besar maka citra seolah-olah hanya terlihat seperti citra putih saja.

Poisson
Poisson noise bukan merupakan noise buatan. Poisson merupakan noise yang ditambahkan langsung pada citra tanpa kita menambahkan parameter apapun, sehingga efeknya pada citra pun tetap, berbeda dengan tipe noise yang sudah dijelaskan sebelumnya. Pada MatLab, jika matrik citra adalah double precision, maka nilai piksel inputnya dianggap sebagai mean dari distribusi Poisson dengan skala 10^12. Sebagai contoh jika piksel inputnya mempunyai nilai 5.5 10^-12, maka piksel output akan dibangkitkan dari distribusi Poisson dengan mean 5.5 di kembalikan lagi ke skala 10^12. Jika matrik citra adalah single precision, maka factor skalanya menggunakan 10^6. Jika matrik citra adalah uint8 atau uint16, maka nilai input piksel digunakan langsung tanpa factor skala. Sebagai contoh jika input piksel uint8 mempunyai nilai 10, maka piksel output akan dibangkitkan dari distribusi Poisson dengan mean 10.


Speckle
Speckle merupakan noise ganda. Noise ini ditambahkan pada citra menggunakan persamaan
J=I+n*I, dimana n terdistribusi random seragam dengan mean 0 dan variance V. V adalah konstanta non negative yang besarnya dapat berubah-ubah. Default nilai untuk V adalah 0.04. Makin besar nilai V maka citra akan semakiin kabur.

Localvar

Pada MatLab kita harus mengunakan dua parameter untuk menambahkan noise ini pada citra. Dua parameter tersebut berupa vector yang ukurannya sama, dan grafik kedua parameter tersebut menggambarkan relasi fungsional antara varians noise dan intensitas citra. Vektor intensitas citra harus bernilai antara 0 dan 1 (normal). Localvar merupakan Gaussian noise dengan mean 0, dengan variance noise adalah fungsi dari intensitas citra yang nilainya berada dalam matrik citra. Vektor intensitas citra tidak boleh bernilai sama karena citra akan nampak sebagai layar putih (Gaussian White Noise).

18 Oktober 2008

Histogram

Histogram Modelling dengan MatLab

Histogram citra menyatakan frekuensi kemunculan berbagai derajat keabuan dalam citra. Teknik pemodelan histogram mengubah citra hingga memiliki histogram sesuai keinginan. Teknik pemodelan yang sering dipakai adalah ekualisasi histogram. Ekualisasi histogram bertujuan untuk mendapatkan histogram citra dengan distribusi seragam.
Langkah-langkah melakukan ekualisasi histogram:
  1. Baca image dan dapatkan nilai tingkat keabuan dari setiap pixel penyusunnya, dan simpan dalam array. Gunakan fungsi imread().
  2. Cari nilai maksimum tingkat keabuan citra tersebut. Nilai ini nantinya akan dipakai untuk menentukan histogram ekualisasinya. Gunakan fungsi max()
  3. Buat histogram citra asal. Simpan frekuensi kemunculan derajat keabuan tersebut dalam array(vector). Mula-mula kita siapkan array(vector) kosong yang ukurannya mengacu kepada nilai maksimum derajat keabuan citra dibulatkan ke 2n. Untuk selajutnya hitung frekuensi kemunculan derajat keabuan pada masing-masing posisi vector.
  4. Buat histogram ekualisasinya. Histogram ekualisasi dicari dengan menghitung prosentase kemunculan derajat keabuan yang ada dikalikan dengan derajat keabuan maksimum dari citra asal.
  5. Cari nilai tingkat keabuan dari citra bari hasil ekualisasi dengan menggunakan histogram ekualisasinya.
  6. Untuk memetakan histogram ekualisasi menjadi citra baru, kita siapkan array (matrik) kosong yang ukurannya sama dengan citra asal. Selanjutnya masing-masing nilai matrik baru dihitung dari nilai histogram ekualisasi bedasarkan nilai matrik gambar lama.
  7. Petakan ke citra baru.
Dengan menggunakan MatLab algoritma tersebut dapat diimplementasikan sebagai berikut:























Atau juga dapat dituliskan sebagai berikut:










Berikut ini adalah perbandingan image sebelum dan setelah
dilakukan ekualisasi.








Pustaka
Departmen Teknik Elektro, Modul Praktikum Pengolahan Citra dan Pengenalan Pola, Institut Teknologi Bandung.

Paul Wintz, 2000, Digital Image Processing, Prentice-Hall.

MatLab 6 Help.

William J Palm, 2004, Introduction to MatLab 6 for Engineers, The McGraw-Hill Companies, Inc.

www.iprg.ee.itb.ac.id/lectures.html

www.datacompression.info/Quantization.shtml

www.cbloom.com/src/index_im.html
www.belajar-share.blogspot.com

Pengenalan

Pengolahan Citra
Pengolahan Citra adalah kegiatan memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia/mesin (komputer). Inputannya adalah citra dan keluarannya juga citra tapi dengan kualitas lebih baik daripada citra masukan. Misal citra warnanya kurang tajam, kabur (blurring), mengandung noise (misal bintik-bintik putih), dll sehingga perlu ada pemrosesan untuk memperbaiki citra karena citra tersebut menjadi sulit diinterpretasikan sebab informasi yang disampaikan menjadi berkurang.