Welcome to my Blog. All you can read here. Have fun, enjoy, and thanks!

Tuesday, December 3, 2013

Pemampatan Citra dan Aplikasinya pada OpenC

Pendahuluan

Pemampatan citra atau image compression merupakan operasi pengolahan citra yang bertujuan untuk memampatkan citra sehingga memori yang dibutuhkan untuk menyimpan citra lebih kecil, tetapi hasil citra yang telah dimampatkan tetap memiliki kualitas gambar yang bagus (misal dari .BMP menjadi .JPG).

Pada umumnya, representasi citra digital membutuhkan memori yang besar. Sebagai contoh, citra Lena dalam format bitmap yang berukuran 512 • 512 pixel membutuhkan memori sebesar 32 KB (1  pixel = 1  byte) untuk representasinya. Semakin besar ukuran citra tentu semakin besar pula memori yang dibutuhkannya.  Pada sisi lain, kebanyakan  citra  mengandung duplikasi data. Duplikasi data pada citra dapat berarti dua hal. Pertama, besar kemungkinan suatu pixel dengan pixel tetanggganya memiliki initensitas yang sama, sehingga penyimpanan setiap  pixel memboroskan tempat. Kedua,  citra banyak mengandung bagian (region) yang sama, sehingga bagian yang sama ini tidak perlu dikodekan berulang kali karena mubazir atau redundan.

Saat ini, kebanyakan aplikasi menginginkan representasi citra dengan kebutuhan memori yang sesedikit mungkin. Pemampatan citra atau kompresi citra (image compression) bertujuan meminimalkan kebutuhan memori untuk merepresentasikan citra digital. Prinsip umum yang digunakan pada proses pemampatan citra adalah mengurangi duplikasi data di dalam citra sehingga memori yang dibutuhkan untuk merepresentasikan citra menjadi lebih sedikit daripada  representasi citra semula.

Kebanyakan citra mengandung duplikasi data yg dapat berarti:
  1. Besar kemungkinan suatu pixel dengan pixel tetangganya memiliki intensitas yang sama, sehingga penyimpanan setiap pixel memboroskan tempat.
  2. Citra banyak mengandung bagian yang sama, sehingga tidak perlu dikodekan berulang.

Ada 2 proses utama dalam pemampatan citra:

  1.  Pemampatan citra (image compression) contoh citra belum dimampatkan dalam format bitmap dan yang sudah dimampatkan disimpan dalam format JPG dan GIF
  2. Penirmampatan citra (image decompression) Mengembalikan citra yang termampatkan menjadi data bitmap

Aplikasi Pemampatan Citra

  1. Data transmission, waktu pengiriman data lebih cepat. contoh: pengiriman gambar lewat fax, videoconferencing, download gambar dr internet
  2. Data storing, butuh memori lebih kecil Contoh: aplikasi basis data gambar, video storage sprti VCD dll.

Kriteria pemampatan citra:

  1. Waktu compression dan decompression sebaiknya cepat
  2. Kebutuhan memori: Memori yang dibutuhkan untuk merepresentasikan citra seharusnya berkurang secara berarti. Pada beberapa metode ukuran memori hasil pemampatan bergtung pd citra itu sendiri. Citra dengan elemen duplikasi yang banyak, misal langit cerah tanpa awan, lantai keramik, umumnya dapat dimampatkan dengan memori lebih sedikit dibanding citra yang mengandung objek, misal pemandangan alam.
  3. Kualitas: Informasi yang hilang akibat pemampatan seminimal mungkin agar kualitas tetap dipertahankan. kualitas citra bersifat subyektif dan relatif, tergantung penilaian seseorang. Ukuran kualitas hasil pemampatan citra menjadi ukuran kuantitatif menggunakan PSNR, mengukur perbedaan citra semula dengan hasil pemampatan
  4. Format keluaran: Format citra hasil pemampatan sebaiknya cocok u pengiriman dan penyimpanan data. Pembacaan citra bergantung pd bagaimana citra tsb direpresentasikan atau disimpan.

Jenis Pemampatan Citra:
Ada 4 pendekatan:

  1. Pendekatan statistik, yang didasarkan pd frek kemunculan derajat keabuan pixel pada seluruh bagian gambar, contoh metode Huffman Coding
  2. Pendekatan ruang, didasarkan pd hub spasial antara pixel-pixel dalam suatu kelompok yang memiliki derajat keabuan yang sama di dalam suatu daerah di dalam gambar, contoh metode Run-Length Encoding
  3. Pendekatan kuantisasi, pemampatan citra dilakukan dengan mengurangi jumlah derajat keabuan yang tersedia, contoh metode pemampatan kuantisasi
  4. Pendekatan fraktal, didasarkan pada kenyataan bahwa kemiripan bagian-bagian dalam citra dapat dieksploitasi dengan suatu matriks transformasi, contoh metode Fractal Image Compression

Metode Pemampatan Huffman
Menggunakan prinsip nilai atau derajat keabuan yang sering muncul dikodekan dengan jml bit Lebih sedikit dan yang frek kemunculannya sedikit dikodekan dengan jlh bit yang lebih panjang.
Algoritma metode Huffman:

  1. Urutkan secara ascending nilai-nilai keabuan berdasarkan frek kemunculan atau peluang kemunculan, Pk yaitu frek kemunculan nk dibagi dengan jlh pixel dalam citra (n). Setiap nilai keabuan dinyatakan sebagai pohon bersimpul tunggal. Setiap simpul ditandai dengan frek kemunculan nilai keabuan tsb.
  2. Gabung 2 buah pohon yang mempyai frek kemunculan paling kecil pd sebuah akar. Akar mempyai frek yang merupakan jlh dr frek 2 buah pohon penyusunnya
  3. Ulangi langkah 2 sampai tersisa hy satu pohon biner.
  4. Beri label setiap sisi pohon biner. Sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli 1.
  5. Telusuri pohon biner dr akar ke daun. Barisan label2 sisi dr akar ke daun menyatakan kode Huffman u derajat keabuan yang bersesuain
Program dengan Metode Compressing

Kodingan
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int main(int argc, char **argv)
{
int p[3];
Ip1Image *img = cvLoadImage("../images/jessica.bmp");
p[0] = CV_IMWRITE_JPEG_QUALITY;
p[1] = 5;
p[2] = 0;
cvSaveImage("a_worse.jpg", img, p);
p[0] = CV_IMWRITE_JPEG_QUALITY;
p[1] = 100;
p[2] = 0;
cvSaveImage("a_better.jpg", img, p);
exit(0);
}


Sebelum di Debug pada OpenCV
Gambar Asli (Size: 1,37mb (.bmp))
(jessica.bmp)


Setelah di Debug pada OpenCV
Gambar Kualitas Rendah (Size: 10kb (.jpg))
(a_worse.jpg)
Gambar Kualitas Bagus (Size: 142kb (.jpg))
(a_better.jpg)




















Penyusun:
Bacharudin Abdur Rosyid Farisi (4IA03)
Yudha Prasetia (4IA03)

No comments:

Post a Comment