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