Learn JPEG Compression


Pasti udah pada tau dong jpeg / .jpeg itu apa. File format gambar/foto digital. JPEG itu singkatan dari Joint Photographic Expert Grup, panjang ya kalo lengkapnya. JPEG itu sebenarnya file yang dikompresi yang dari ukurannya besar lalu di kompresi jadi hasilnya kecil. Jadi muat tuh di device device sekarang, gak makan memori/space disk.

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 :



Jadi gambar yang awalnya RGB diubah ke YIQ, Lalu discan, dan diubah menjadi blok-blok setiap bloknya (8x8) dilakukan pengkodean dengan memutar balikan urutan pengkodean. Dengan DCT lalu dikuantisasi, lalu di scan secara zig-zag. lalu dipisahkan dengan DPCM untuk komponen DC dan RLE untuk komponen AC. Lalu dilakukan Entropy Coding dengan algoritma huffman atau Aritmatika. Dan akan menjadi bilangan binary.

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 Differential Pulse Code Modulation (DPCM)  pada komponen DC. Kenapa menggunakan DPCM pada DC. Hal ini dikarenakan komponen DC berukuran besar dan bervariasi, namun sering kali nilainya mendekati nilai sebelumnya. DPCM adalah pengkodean perbedaan dari blok 8x8 yang sebelumnya.
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

Popular posts from this blog

Tutor: FL Studio / Fruity Loops Studio

Deep Learning untuk mengenali Gambar

AT&T sebagai provider sedunia