Kemudahan pemakaian program serta fasilita tambahan yang

24 dikembalikan ke bentuk aslinya akan sama atau paling tidak menyerupai data asli dengan toleransi yang masih dapat diterima. Dari data hasil DCT tersebut, jika dikembalikan seperti semula, maka harus dikenai fungsi inverse dari DCT IDCT. Setelah data itu dikembalikan, maka nilainya akan menjadi [1 2 3 4 5 6 7 8]. Terlihat bahwa nilai hasil invers tersebut masih terlihat sama dengan data aslinya. Sedangkan persamaan DCT 2 dimensi ditampilkan dalam matrik NxN, dan menghasilkan matriks NxN. Persamaan DCT 2 dimensi ini digunakan untuk transformasi matriks 2 dimensi. Persamaan dari DCT 2-dimensi adalah sebagai berikut: ⎥⎦ ⎤ ⎢⎣ ⎡ + ⎥⎦ ⎤ ⎢⎣ ⎡ + = ∑ ∑ − = − = N j y N i x y x pixel j C i C N j i DCT N y N x 2 1 2 cos 2 1 2 cos , 2 , 1 1 π π ..2.3 dengan DCTi , j= nilai DCT pada indeks ke-i,j N = ukuran matriks pixelx,y = nilai pixel pada indeks ke-x,y 1 , = j C i C jika i, j 0 2 1 , = j C i C jika i, j = 0. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 25 Tabel 2.5 Tabel penghitungan DCT 1 dimensi Nilai i PENGHITUNGAN x1 x2 x3 x4 x5 x6 x7 x8 DCT i 1 1 3 6 10 15 21 28 36 12.727 2 0.980 2.643 4.310 5.090 4.115 0.781 -5.038 -12.884 -6.442 3 0.923 1.689 0.541 -3.154 -7.773 -10.069 -7.391 -2.664 e-015 4 0.831 0.441 -2.501 -4.723 -1.945 3.939 5.304 -1.346 -0.673 5 0.707 -0.707 -2.828 -8.882 e-016 3.535 -0.707 -5.656 6 0.555 -1.406 -0.820 2.505 -1.652 -2.822 4.042 -0.401 -0.201 7 0.382 -1.465 1.306 -0.224 -2.137 3.405 -3.061 -5.3291 e-015 8 0.195 -0.916 1.578 -2.344 2.559 -2.429 1.459 -0.101 -0.051 26 Jika matriks berukuran MxN, maka persamaan di atas dapat dituliskan sebagai berikut: ∑∑ − = − = ⎥⎦ ⎤ ⎢⎣ ⎡ + ⎥⎦ ⎤ ⎢⎣ ⎡ + = 1 1 2 1 2 cos 2 1 2 cos , 2 2 , M x N y N j y M i x y x pixel j C i C N M j i DCT π π ...2.4 dengan DCTi , j= nilai DCT pada indeks ke-i,j N= ukuran baris matriks M= ukuran kolom matriks pixelx,y = nilai pixel pada indeks ke-x,y 1 , = j C i C jika i, j 0 2 1 , = j C i C jika i, j = 0. Sedangkan persamaan untuk invers DCT IDCT adalah sebagai berikut: ⎥⎦ ⎤ ⎢⎣ ⎡ + ⎥⎦ ⎤ ⎢⎣ ⎡ + = ∑∑ − = − = N j y N i x j i DCT j C i C N y x Pixel N i N j 2 1 2 cos 2 1 2 cos , 2 , 1 1 π π ....2.5 dengan DCTi , j= nilai DCT pada indeks ke-i,j N = ukuran matriks pixelx,y = nilai pixel pada indeks ke-x,y 1 , = j C i C jika i, j 0 2 1 , = j C i C jika i, j = 0. Jika matriks berukuran MxN, maka persamaan di atas dapat dituliskan sebagai berikut: PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 27 ∑∑ − = − = ⎥⎦ ⎤ ⎢⎣ ⎡ + ⎥⎦ ⎤ ⎢⎣ ⎡ + = 1 1 2 1 2 cos 2 1 2 cos , 2 2 , M i N j N j y M i x j i DCT j C i C N M y x Pixel π π ....2.6 dengan DCTi , j= nilai DCT pada indeks ke-i,j N, M= ukuran matriks pixelx,y = nilai pixel pada indeks ke-x,y 1 , = j C i C jika i, j 0 2 1 , = j C i C jika i, j = 0. Invers DCT tersebut berfungsi untuk mengembalikan data citra seperti semula. Contoh penerapan DCT dan IDCT dalam citra greyscale: Terdapat sebuah citra greyscale dengan matriks 8x8 dengan nilai sebagai berikut: ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 3 13 30 22 39 28 27 46 14 10 32 18 26 44 42 45 40 33 35 16 22 35 31 21 30 34 20 2 12 21 37 36 26 29 25 7 2 1 15 43 23 30 38 17 6 4 33 35 37 41 23 9 5 10 28 39 37 40 24 11 8 19 30 = PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 28 Nilai DCT dari matriks di atas adalah : ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 1 13 2 2 1 6 1 5 2 10 6 5 3 10 10 7 20 5 6 5 9 15 5 7 23 19 15 9 33 39 195 = Sedangkan nilai IDCT dan citra hasil rekonstruksi adalah sebagai berikut: ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 3 13 30 22 39 28 27 46 14 10 32 18 26 44 42 45 40 33 35 16 22 35 31 21 30 34 20 2 12 21 37 36 26 29 25 7 2 1 15 43 23 30 38 17 6 4 33 35 37 41 23 9 5 10 28 39 37 40 24 11 8 19 30 = Di bawah ini akan diilustrasikan bagaimana DCT diterapkan dalam sebuah matriks 2 dimensi: Terdapat sebuah matriks 2 dimensi sebagai berikut: ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 9 8 7 6 5 4 3 2 1 Matriks ini akan dikenai operasi DCT 2 dimensi dengan persamaan 2.6, dengan: i = 1,2,3 ; j = 1,2,3 x = 0,1,2 ; y = 0,1,2 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 29 pixelx,y = 1,2,3...9 N = 3, M = 3 Cx = 1,jika x0, Cx = 2 1 , jika x=0, Pixelx,y = nilai pixel ke-x,y, Maka hasil penghitungan yang terjadi akan terlihat seperti pada tabel 2.6. Dari tabel tersebut, dapat dilihat bahwa nilai hasil penghitungan, yaitu yang terdapat dalam kolom DCTi,j adalah ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 7.348 - 2.449 - 15 . Terlihat bahwa matriks hasil transformasi tersebut memuat banyak elemen 0 nol. Hal ini tentunya tidak efisien dalam penyimpana data tersebut. Oleh karena itu, data ini nantinya akan dapat dimampatkan dengan menghilangkan elemen 0 nol yang ada. 30 Tabel 2.6 Tabel penghitungan DCT 2 dimensi Nilai i,j PENGHITUNGAN x ,y x ,y 1 x ,y 2 x 1 ,y x 1 ,y 1 x 1 ,y 2 x 2 ,y x 2 ,y 1 x 2 ,y 2 DCT i,j 1,1 1 3 6 10 15 21 28 36 45 15 1,2 0.866 0.866 -1.732 1.732 1.732 -3.464 2.598 2.598 -5.196 -2.449 1,3 0.5 -1.5 4.4409e-016 2 -3 1.7764e-015 3.5 -4.5 3.5527e-015 2,1 0.866 2.598 5.196 5.196 5.196 5.196 -0.866 -7.794 -15.588 -7.348 2,2 0.75 0.75 -1.5 -1.5 -1.5 -1.5 -6.75 -6.75 2,3 0.433 -1.299 2.2204e-016 3.4451e-016 3.8348e-017 2.2204e-016 -3.031 3.897 -1.3323e-015 3,1 0.5 1.5 3 -1 -6 -12 -8.5 -4.5 1.7764e-015 3,2 0.433 0.433 -0.866 -4.33 -4.33 0.866 3.897 3.897 3,3 0.25 -0.75 3.3307e-016 -2 3 -8.8818e-016 1.75 -2.25 31

J. Kuantisasi dan Zig-zag

Scanning Kuantisasi ini digunakan untuk menentukan kualitas kompresi, yaitu dengan menghilangkan beberapa informasi dari nilai pixel yang telah ditransformasi. Informasi yang dihilangkan adalah informasi yang dianggap paling tidak penting, dalam hal ini adalah nilai pixel yang paling mendekati nol 0 setelah dilakukan transformasi, ataupun pembulatan nilai desimal dari nilai yang didapat. Kuantisasi ini sangat penting dalam proses pemampatan data, karena penentuan kuantisasi ini juga akan berpengaruh terhadap kualitas citra yang dimampatkan dan tentunya besarnya file yang telah dimampatkan. Ilustrasi dari kuantisasi ini adalah sebagai berikut: Sebuah matriks dengan delapan data yaitu [12,10,8,10,12,10,8,11], kemudian matriks tersebut dikenai operasi DCT 1 dimensi, sehingga hasil transformasi menjadi [28.6375, 0.571202, 0.46194, 1.757, 3.18198, -1.72956, 0.191342, - 0.308709]. Setelah itu, matriks hasil transformasi tersebut akan dikuantisasi menjadi [28, 0, 0, 2, 3, -2, 0, 0]. Dan digunakan operasi IDCT 1 dimensi untuk mengembalikan data, didapat [11.236, 9.62443, 7.66286, 9.57302, 12.3471, 10.0146, 8.05304, 10.6842]. Terlihat dari hasil invers yang didapat mendekati data aslinya. Perbedaan antara data asli 12 dan data hasil rekonstruksi 11.236 adalah 0,764 atau 6,4 dari 12 David Salomon, 2001. Nilai kuantisasi dapat pula ditentukan dengan menyatakan suatu nilai sebagai batasan kuantisasi tersebut. Misalnya kuantisasi dinyatakan sebagai Q. Maka nilai yang berada dalam range nilai Q dan -Q tersebut dikuantisasi menjadi 32 nol 0. Sebagai contoh dalam kasus di atas, nilai [28.6375, 0.571202, 0.46194, 1.757, 3.18198, -1.72956, 0.191342, -0.308709] akan dikuantisasi dengan Q=1, maka nilai yang berada di antara 1 dan -1 akan dikuantisasi menjadi nol 0. Sehingga hasil dari nilai tersebut akan menjadi [28.6375, 0, 0, 1.757, 3.18198, - 1.72956, 0, 0]. Kuantisasi untuk matriks berukuran 2 n x2 n dapat dilakukan dengan cara mengubah matriks menjadi vektor secara zig-zag zig-zag scanning. Gambar 2.6 Urutan Zig-zag scan Ilustrasi penerapan kuantisasi secara zig-zag adalah sebagai berikut: Terdapat matriks 4x4 dengan elemen ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 2 1 15 43 6 4 33 9 5 10 28 11 8 19 30 , kemudian matriks tersebut akan ditransformasi menjadi ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 0.7604 2.2168 0.8713 - 1.9927 - 3.3321 - 3.5000 - 6.7378 8.5000 3.3713 - 6.6585 - 11.2604 - 3.5042 3.2359 25.0000 39.2241 56.0000 . Jika matriks hasil transformasi ini dikenai fungsi zig-zag scan, maka akan menjadi PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 33 vector dengan urutan [56.0000 39.2241 3.5042 8.5000 -11.2604 25.0000 3.2359 -6.6585 6.7378 -1.9927 -0.8713 -3.5000 -3.3713 -3.3321 2.2168 0.7604]. Dari hasil zig-zag scan tersebut kuantisasi dapat dilakukan, yaitu dengan cara mengambil beberapa nilai dari belakang, tergantung prosentase yang diinginkan. Misalkan prosentase yang diinginkan untuk kuantisasi adalah 25, maka diambil 4 nilai paling belakang, kemudian nilai tersebut dikuantisasi menjadi nol 0. Maka hasilnya adalah [56.0000 39.2241 3.5042 8.5000 - 11.2604 25.0000 3.2359 -6.6585 6.7378 -1.9927 -0.8713 -3.5000 0 0 0 0]. Kuantisasi dapat dilakukan dengan berbagai cara, tergantung yang diinginkan. Dapat dengan pembulatan seperti contoh yang terjadi pada DCT 1 dimensi di atas, dapat pula dengan mengambil beberapa pixel paling belakang berdasarkan berapa persen pixel akan diambil setelah dilakukan zig-zag scan, tergantung dari prosentase yang diinginkan.

K. Kompresi dengan DCT

Penerapan DCT dalam kompresi data diharapkan dapat secara efisien mengurangi besar file data tersebut tanpa mengurangi kualitas dari data yang dimampatkan. Besarnya kompresi sangat tergantung dari kuantisasi. Jika menginginkan kompresi yang besar ukuran file semakin kecil maka kuantisasi yang dilakukan juga harus besar. Namun hal ini tentunya akan mengorbankan kualitas data hasil kompresi tersebut, jika nantinya data ini dikembalikan ke 34 bentuk aslinya. Dalam kasus kompresi citra, maka kualitas citra yang didapat akan semakin buruk. Sebagai contoh, matriks hasil transformasi yang terdapat dalam tabel 2.6 yaitu ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 7.348 - 2.449 - 15 . Kemudian matriks tersebut akan dikuantisasi dengan nilai Q=3, maka hasilnya adalah ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 7.348 - 15 . Dapat dilihat bahwa matriks tersebut memuat banyak elemen dengan nilai 0, atau biasa disebut matriks jarang sparse matrix. Hal ini tentunya tidak efisien. Oleh karena itu, penyimpanan matriks hasil transformasi menggunakan suatu cara agar lebih efisien yaitu dengan menghilangkan elemen matriks yang mempunyai nilai 0. Maka matriks tersebut hanya akan disimpan nomor indeks matriks yang bukan nol dan data yang ada dalam indeks tersebut, yaitu 1,1 15 dan 2,1 - 7.348. Bilangan yang ada didalam tanda “ ” menunjukkan indeks matriks yaitu baris dan kolom, sedangkan bilangan dibelakangnya adalah nilai matriks yang ada pada nomor indeks tersebut. Dalam proses penyimpanan, nilai nol 0 dapat diabaikan tidak disimpan, maka dalam kasus tersebut besar data sebelum dilakukan kuantisasi adalah 3x8bit=24bit, sedangkan setelah dilakukan kuantisasi besar data menjadi 2x8bit=16bit. Dalam kasus yang lebih besar, pengurangan data seperti ini tentunya akan lebih signifikan dan dalam penyimpanan data tentunya akan lebih efisien. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 35 Tetapi jika menggunakan cara yang kedua yaitu dengan metode zig-zag scanning, maka nilai matriks akan menjadi [15 -2.449 -7.348 0 0 0 0 0 0], dan posentase kuantisasi misalnya adalah 80, maka sebanyak 80 data akan dikuantisasi menjadi nol 0 data diambil dari belakang. Sehingga setelah proses kuantisasi, data akan menjadi [15 -2.449 0 0 0 0 0 0 0]. Dan jika data tersebut dikembalikan dengan urutan matriks seperti semula dezig-zag scan maka akan menjadi ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 2.449 - 15 Dari sini terlihat bahwa kedua cara yang digunakan menghasilkan nilai yang sama. Dalam kasus yang berbeda, hasil yang didapat belum tentu sama seperti kasus di atas.

L. Matriks Jarang

Matriks jarang adalah matriks yang banyak memiliki banyak elemen nol. Matriks jarang menyimpan sebuah informasi yang terstruktur secara efisien, terutama saat direpresentasikan terhadap sebuah format yang dimampatkan. Pemampatan matriks jarang dapat dilakukan dengan menyimpan elemen tidak nol. Penyimpanan dan manipulasi matriks jarang akan menjadi efisien jika menggunakan algoritma dan struktur data tertentu, yang dapat menyimpan hasil pemampatan matriks jarang tersebut secara efisien pula. Keuntungan yang didapat dengan menggunakan pemampatan ini diantaranya adalah dapat mengurangi