Learn JPEG Compression
Sejarahnya JPEG tuh panjang. Dikembanginnya tuh awal tahun 1980 oleh Joint Photographic Expert Grup (JPEG). Pada tahun 1992 JPEG mulai perkenalkan sebagai standard pengkodean gambar digital.
Kenapa sih JPEG dijadiin standar gambar digital?
Karena kompresi JPEG menghasilkan kompresi gambar 10:1 yang dimana kecilnya kehilangan kualitas gambar yang dihasilkan.
Jadi JPEG kompresi itu melibatkan :
Masih belum kebanyang ya,....
kalo dikasih teorinya lagi yakin masih kuat?
Jadi Gambar yang awalnya 1 layer, lalu dibagi menjadi 3 layer RGB lalu diubah ke warna YIQ, YIQ (luminance - inphase - quadrature) itu model warna yang biasanya untuk video NTSC dan sebagainya.
Setelah itu setiap layer diubah menjadi pixel lalu dijadikan blok-blok yang setiap blok berisi 8x8 grup pixel.
Setelah buat grup, setiap grup dilakukanlah Discrete Cosine Transform (DCT). Jadi DCT tuh membantu memisahkan gambar menjadi bebrapa bagian. dengan kepentingan yang berbeda (mengenai kualitas visual gambar). DCT sendiri minrip dengan trsformasi deret Fourier. Yang mengubah Sinyal/Gambar dari spasial domain menjadi frekuensi domain.
kalo dijelasin bakal panjang banget jadi di kasih link aja ya untuk baca sendiri DCT
Setelah dilakukan DCT dilakukan step berikutnya yaitu kuantisasi. Kenapa harus dilakukan kuantisasi, karena untuk mengeluarkan bits. Ga kebayang yah...
Jadi gini nih...101101 = 45 (6 bits).
potong ke 4 bits : 1011 = 11
potong ke 3 bits 101 = 5
jadinya kan menghemat space yang digunakan. Jadi, kelasahan kuantisasi adalah sumber kompresi.
kuantisasi di JPEG setiap F[u,v] dibagi dengan konstanta q(u,v). Tabel dari q(u,v) disebut tabel kuantisasi.
---------------------------------- 16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99 ----------------------------------
Jadi dengan setiap sample memiliki nomer gambar dengan unik ID akan menjadi faktor sampling secara horizontal/vertikal dengan menggunakan tabel kuantisasi.
Lalu pindai setiap komponen ID secara Zig-Zag.
Lalu Melakukan Run Length Encode (RLE) pada komponen AC. Salah satu teknik kompresi yang akan diaplikasikan pada komponen AC. Karena pada vektor 1x64 memiliki nilai 0. Encode sebagai (skip, value) pasang, di mana skip adalah jumlah angka nol dan nilainya adalah komponen non-nol berikutnya. Dan mengirim (0,0) sebagai nilai sentinel blok akhir.
Lalu melakukan Entropy Coding. Komponen DC dan AC akhirnya akan dihasilkan dengan nilai bits yang lebih kecil. Mengkategorikan nilai DC menjadi SSS (jumlah bit yang dibutuhkan untuk mewakili) dan bit aktual.
dengan contoh jika, nilai DC adalah 4, yang dibutuhkan adalah 3 bits.
Dengan mengirimkan SSS sebagai simbol Huffman, diikuti dengan 3 bits.
Untuk kompinen AC (skip,value), encode simbol komposit (skip,SSS) dengan menggunakan pengkodean Huffman. Tabel Huffman dapat menjadi default atau pilihan.
Jadi , akhirnya dengan melakukan kuantisai Tabel Huffman dengan Aplikasi data.
untuk contohnya dapat dilihat pada contohnya disini
Sumber
Comments
Post a Comment