Wednesday, June 10, 2015

How JPEG Works (Part-1)

JPEG adalah kompresi gambar cukup fenomenal. Walaupun lossy (kualitas menurun setelah terjadi kompresi), akan tetapi dengan pengaturan parameter quality maka tampilan gambar JPEG bisa dikatakan bagus. Kompresi yang dihasilkan bisa mencapai 60% dari file asli nya.

Bagaimana cara kerja kompresi JPEG ini?

Bagi yang tidak suka dengan matematika, maka disarankan melihat video ini.
Dari video diatas terlihat bahwa, inti dari cara kerja kompresi JPEG adalah ada pada  DCT (Discrete Cousine Transform). Pada bagian  ke 2 akan dibahas secara lebih dalam tentang DCT ini.

Bagian pertama ini menjelaskan gambaran umum cara kerja kompresi JPEG. Ada 4 tahapan proses kompresi JPEG sbb:


Terlihat pada gambar bahwa proses kompresi gambar dari RAW RGB ke Gambar JPEG melalui tahap:
1. Proses konversi gambar dari RGB ke YCbCr
2. Proses transformasi DCT (Discrete Cosine Transform) gambar YCbCr
3. Proses kuantisasi
4. Proses encoding menggunakan RLE (Run Lenght Encoding) ataupun Entropy Encoding

Berikut adalan penjelasan proses tsb:

1. Proses konversi gambar RGB ke YCbCr

Kenapa perlu di konversi?

Ada 2 jawaban sedehana:

1.1.  Dimulainya proses reduksi bit

Gambar RAW RGB disimpan dalam intensitas yang sama. Bayangkan 1 lembar gambar berwarna, ukuran 426 x 240p (426 pixel horizontal x 240 pixel vertikal). Kordinat (x,y) di gambarkan sbb:



total ada 426 x 240 = 102.240 pixel.

Apabila masing-masing pixel di wakilkan oleh 8 bit Red, 8 bit Green, 8 bit Blue, maka besar 1 file gambar menjadi 102.240 x (8+8+8) = 2.453.760 bit = 306.720 Byte = 306 KB.

Gambar dapat di representasikan dengan YCbCr (Y = Luma, Cb = Kroma blue, Cr = Kroma Red).

Luma adalah komponen terang dan gelapnya gambar hitam putih (atau grayscale). Mata manusia lebih sensisif terhadap informasi Luma (intensitas cahaya) daripada informasi Kroma (warna).

Kroma adalah informasi warna. Dan mata manusia lebih kurang sensitif terhadap informasi ini.

Dengan demikian 8 bit Cb dan Cr dapat di angkut dengan 4 bit informasi saja. Sehingga total file gambar YCbCr menjadi 102.240 x (8+4+4) = 1.635.840 bit = 204.480 Byte = 204 KB.

1.2. Kompatibilitas dengan TV Hitam Putih

Sejarah kemunculan TV Berwarna juga bersinggunan dengan Kroma dan Luma ini. Pada awalnya TV analog dipancarkan dengan carrier membawa informasi Black and White. Apabila carrier pembawa tsb di ganti dengan informasi RGB maka TV berwarna bisa menampilkan gambar, tapi TV Hitam Putih tidak dapat menampilkan gambar ini. Konversi RGB ke YCbCr ini memungkinkan TV Hitam Putih tetap bisa menikmati gambar bergerak.

Coba Anda banyangkan, Anda punya warisan TV Hitam Putih dari nenek Anda. Anda beli antena UHF lalu colokkan ke TV. Siaran analog dari pemancar RCTI ada dalam format PAL dan skema warna YCbCr. Nah TV Hitam Putih Anda hanya mengolah sinyal Y yang di pancarkan oleh stasiun RCTI. Efeknya apa? Anda tetap bisa menikmati siaran RCTI di TV Hitam Putih tsb. (Seandainya skema warna yang dipakai pemancar RCTI adalah RGB, maka habislah. Anda tidak bisa menikmati siaran RCTI di TV Hitam Putih warisan dari nenek tsb).

Gambar Y (Luma) ini identik dengan gambar berwarna dalam format Hitam Putih (sama spt melakukan foto copy gambar warna ke mesin foto copy hitam putih).

Karena Cb dan Cr lebih sedikit membutuhkan bit informasi maka pada TV Berwarna analog, maka frekuensi Kroma ini bisa di sisipkan atau di tumpuk pada frekuensi Y (istlahnya dimunculkan sub-carrier yang lebih kecil untuk membawa informasi Kroma).

Tentang RGB 8 bit

Apabila warna R, G, B di kodekan dengan 8 bit, artinya ada 256 nilai (0 sampai 255). Berikut adalah warna-warna yang dihasilkan (menggunakan Power Point)



Dengan 8 bit RGB, akan di dapatkan 256 x 256 x 256 = 16 juta warna.

File RGB ini bisa di konversi ke Y 8 bit, Cb 8 bit, Cr 8 bit. Akan tetapi konversi ini belum me-reduksi kapasitas penyimpanan. Oleh karena itu di lakukan konversi dari Y 8 bit, Cb 8 bit, Cr 8 bit menjadi Y 8 bit, Cb 4 bit, Cr 4 bit.

Untuk proses selanjutnya pada Part-2



No comments: