Thursday, July 26, 2007

Embedded teks ke dalam citra

Salah satu media yang sering dipakai untuk menyisipkan pesan/data adalah file image. Dalam contoh yang saya buat ini sengaja digunakan citra grayscale yang memiliki bentuk digital lebih sederhana jika dibandingkan dengan citra RGB. Pada citra grayscale, akan didapat sebuah matrik yang menunjukkan tingkat derajat keabuan dari masing-masing piksel. Sedangkan untuk citra RGB, akan didapat tiga buah matrik yakni matrik R, matrik G dan matrik B, tingkat R, G dan B dari citra. Metode penyisipan pesan yang dipakai adalah Least Significant Bit (LSB). Metode ini bekerja dengan cara mengganti bit terakhir dari masing-masing piksel dengan pesan yang akan disisipkan. LSB mempunyai kelebihan yakni ukuran gambar tidak akan berubah. Sedangkan kekurangannya adalah pesan/data yang akan disisipkan terbatas, sesuai dengan ukuran citra.
Citra sebelum disisipi pesan

Citra setelah disisipi pesan

Jika diperhatikan, penggantian bit terakhir tersebut tidak terlalu berpengaruh terhadap derajat keabuan citra. Maka dua gambar diatas gak beda kan..... Tapi kalo gambar yang bawah diekstrak, maka akan didapat pesan yang berbunyi : Rajin-rajinlah belajar# Tanda # digunakan buat mengakhiri pesan. Ada tiga kemungkinan yang terjadi setelah penggantian bit terakhir, yakni:
  1. Nilainya derajat keabuan tetap
  2. Nilai derajat keabuan berkurang 1
  3. Nilai derajat keabuan bertambah 1
Perubahan yang sedemikian kecil tersebut tidak mungkin akan dirasakan secara kasat mata, sehingga citra sebelum dan setelah disisipi pesan tidak akan nampak terjadi perubahan. Untuk sourcenya ditulis dengan MatLab tapi gak sempet upload.... habisnya ngeditnya lamaaaaa...... Tapi sementara baru aku buat untuk format BMP.

Thursday, June 7, 2007

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.






Update (4 Desember 2008)
Ternyata tulisan ini ada juga disini lho....

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