Jumat, 03 Januari 2014

Pemampatan Citra


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).

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

Koding pad OpenCv

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

int main(int argc, char **argv)
{
    int p[3];
    IplImage *img = cvLoadImage("../images/tom.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);
}

Hasil Setelah dilakukan pemampatan citra

Gambar Asli (Ukuruan 189kb(.bmp))

Gambar kompres (Ukuran 142kb(.jpg))

Nama : Mohammad Rizqy Maulana (54410506)
             Rinoldi V Papasoka (55410998)


0 komentar:

Posting Komentar