Anda di halaman 1dari 33

Kompresi

dan Watermark Citra


Pengolahan Citra Digital
Materi 7
Konsep
Kompresi citra adalah seni dan ilmu untuk mengurangi jumlah data
yang dibutuhkan untuk merepresentasikan citra.
◦ Menjadi salah salah satu faktor kesuksesan teknologi digital.
Film pada dasarnya urutan frame dimana setiap frame adalah citra
full-color, setiap video player harus memainkan gerakan frame 30 fps.
◦ Maka Standart Definition (SD) digital harus mengakses:

frame pixels byte


30  (720  480) 3  31,104,000 bytes / sec
sec frame pixel

◦ Dan untuk durasi film 2 jam menjadi:

31,104,000
bytes
sec
 
 602
sec
hour
 2hour  2.24  1011 bytes

◦ Atau sekitar 224 GB (gigabytes) data, atau sekitar 27 keping DVD dual-layer
8.5 GB (asumsi DVD 12 cm)

2
Konsep
Untukmenjadi 1 keping DVD, maka harus dikompres
dengan faktor sekitar 26.3.
◦ Kompresi yang lebih tinggi harus dilakukan untuk dapat menyajikan
resolusi film 1980x1080x24 bits/image.
Keuntungan kompresi:
◦ Ukuran citra menjadi lebih compact.
◦ Transmisi di jaringan menjadi lebih cepat.
Kerugian:
◦ Ada waktu yang dibutuhkan untuk melakukan encode dan decode.
◦ Kualitas citra menjadi turun (meski sulit terdeteksi mata).
Kompresi citra berakar dari topik pembicaraan kompresi
data
◦ Kompresi data: proses pengurangan jumlah data yang dibutuhkan
untuk merepresentasikan kuantitas informasi.

3
Konsep
Kompresi data dapat terjadi ketika ada sejumlah representasi
yang selalu berulang dalam data (data redundan).
◦ Semakin banyak data redundan biasanya semakin besar rasio
kompresi yang didapat.
Simbol b menyatakan jumlah bit (unit pembawa informasi)
yang digunakan untuk representasi data asli, dan b’ untuk
hasil kompresi.
Ada 2 kuantitas kaitannya dengan kompresi: rasio kompresi
dan data redundan relatif.
◦ Rasio kompresi: b
C
b'
Rasio 10 (atau 10:1) artinya 10 bit data asli untuk setiap 1 bit data dalam
representasinya.
1
◦ Data redundan relatif: R  1
C

4
Jenis representasi citra
Jenis Keterangan
TIFF Tagged Image File Format. Format file yang fleksibel dan didukung
oleh banyak standart kompresi, seperti LZW.
PNG Portable Network Graphic. Format file losslessly compressed citra
full color dengan transparansi (bisa mencapai 48 bit/piksel)
BMP Windows Bitmap. Format umum untuk citra tidak terkompres.
JPEG Joint Photographic Experts Group, standart untuk kualitas citra
foto. Lossy baseline coding system. Menggunakan teknik DCT blok
8x8, Huffman, Golomb, dan Run-Length
MPEG-1 Motion Pictures Expert Group. Standart untuk CD-ROM. Didukung
semua aplikasi komputer dan DVD player. Didukung kompresi
Huffman, Arithmetic, Run-Length, dsb.
GIF Graphic Interchange Format. Format file yang menggunakan teknik
LZW. Banyak digunakan untuk file animasi kecil di web atau film
dengan resolusi kecil
HDV High Definition Video. Pengembangan DV untuk televisi HD yang
menggunakan kompresi mirip MPEG-2, termasuk predictive coding

5
Huffman Coding
Didasarkan pada prinsip pohon Huffman (Huffman,
1952).
Metode cerdas untuk membangun sebuah kamus
kompresi
◦ Yang dalam beberapa arti optimal untuk data yang
dihadapi.
Metode ini menggunakan karakter dan probabilitas
sebagai masukan dengan setiap karakter yang
mungkin muncul dalam data.
◦ Semakin tinggi probabilitas maka akan semakin pendek
kode-urutan yang didapat, begitu pula sebaliknya.
Kamus kompresi ekivalen dengan pohon Huffman.

6
Huffman Coding
Karakter disimbolkan daun dan mengikuti tepi
dari atas ke bawah untuk mendapatkan kode
huruf tertentu.
Untuk membangun pohon yang "optimal"
untuk alfabet tertentu dan probabilitas
diberikan algoritma berikut:
1. Buat daftar node. Setiap node berisi simbol dan
probabilitasnya
2. Cari dua node dengan probabilitas terkecil
3. Jadikan keduanya sebagai anak node baru yang
mempunyai probabilitas dari penjumlahan
probabilitas keduanya.
4. Lepaskan dua anak tadi dari daftar dan
tambahkan node parent yang baru tadi kedalam
daftar.
5. Ulangi langkah 2-4 sampai daftar hanya berisi
satu node.

7
Intensitas Jumlah Probabilitas

Contoh 0
1
1
4
0.05
0.2
Citra asli 2 0 0
1 6 7 7 7 3 4 0.2
1 0 3 5 5 4 2 0.1
3 1 3 5 4 5 5 0.25

3 1 5 5 4 6 1 0.05
7 3 0.15
Representasi
b = 1 byte x 20 piksel = 20 byte = 160 bit
Langkah 1

Langkah 2

8
Langkah 3

Langkah 4
Langkah 5

Langkah 6

10
Langkah 7

11
Langkah 8

12
Kamus yang didapat
Intensi Probabili Encoding
tas tas
0 0.05 000110
1 0.2 11
2 0 000111
3 0.2 10
4 0.1 0000
5 0.25 01
6 0.05 00010
7 0.15 001

Lavg = ((0.05)6+(0.2) 2+(0) 6 +(0.2) 2


+(0.1) 4 +(0.25) 2 +(0.05) 5+(0.15) 3)
= (0.3+0.4+0+0.4+0.4+0.5 +0.25+0.45)
= 2.7 bits/piksel
b‘ = Lavg  jumlah_piksel
= 2.720 = 54 bit

13
Citra asli Citra setelah dikompres
1 6 7 7 7 11 00010 001 001 001
1 0 3 5 5 11 000110 10 01 01
3 1 3 5 4 10 11 10 01 0000
3 1 5 5 4 10 11 01 01 0000
b =160 bit b' = 54 bit

Rasio kompresi
b 160
C   2.96
b' 54
Data redundan relatif
1 1
R  1  1  0.6625  66.25%
C 2.96

14
Huffman di matlab
Fungsi untuk membuat kamus:
◦ [dict,avglen] = huffmandict(symbols,p)
◦ Dimana symbols adalah vektor intensitas, p adalah
probabilitas intensitas dalam citra, dict adalah cell
array berisi kamus huffman, avglen adalah panjag
rata-rata code word.
Fungsi untuk encode
◦ comp = huffmanenco(sig,dict)
◦ Dimana sig adalah data input (citra asli), comp
adalah vektor yang berisi code word hasil encode.
Fungsi untuk decode
◦ dsig = huffmandeco(comp,dict)

15
Source code contoh
f = [
1 6 7 7 7
1 0 3 5 5
3 1 3 5 4
3 1 5 5 4
];
simbol = [0:7];
for i=0:7
idx = find(f==i);
p(i+1) = size(idx,1);
end
[m,n] = size(f);
p = p./(m*n);
dict = huffmandict(simbol,p); % Create the dictionary.
sig = reshape(f,m*n,1);
hcode = huffmanenco(sig,dict); % Encode the data.
dhsig = huffmandeco(hcode,dict); % Decode the code.
dh = reshape(f,m,n);

16
Hasil kompresi
11 00010 001 001 001
>> hcode'
11 000110 10 01 01
ans = 10 11 10 01 0000
10 11 01 01 0000
Columns 1 through 14

1 1 1 1 1 0 1 0 0 0 0 1 0 0

Columns 15 through 28

0 0 1 1 0 1 1 1 1 0 0 1 1 0

Columns 29 through 42

1 0 0 1 0 0 1 0 1 0 1 0 1 0

Columns 43 through 54

0 1 0 1 0 0 0 0 0 0 0 0
17
Block Truncate Coding
Block Truncate Coding (BTC) merupakan salah
satu jenis teknik lossy image compression.
BTC membagi citra asli kedalam blok kemudian
menggunakan quantiser untuk mengurangi jumlah
gray level dalam setiap blok dengan tetap menjaga
mean dan standar deviasi.
Menggunakan sub-blok 4x4 memberikan rasio
kompresi 4:1 dengan asumsi nilai integer 8-bit
digunakan selama transmisi atau penyimpanan.
◦ Blok yang lebih besar akan memberikan kompresi yang
lebih besar (nilai “a” dan “b” menyebar ke lebih banyak
piksel) tetapi dengan resiko mengurangi kualitas citra asli.

18
Prosedur encoding BTC
Piksel citra 256x256 dibagi kedalam blok, biasanya
4x4.
Untuk setiap blok, dihitung Mean dan Standar Deviasi
(piksel dalam blok sama mempunyai Mean dan Standar
Deviasi yang sama dalam citra terkompresi).
Setiap nilai dalam blok ditransformasi menjadi dua level
nilai (0 atau 1), dengan formula:

◦ Dimana x(i,j) adalah piksel dalam blok citra asli, y(i,j) adalah
piksel dalam blok citra terkompresi
◦ xadalah rata-rata, nilai  juga disimpan.

19
Prosedur decoding BTC
Setiapblok berisi 16 bit (formasi 4x4) bersama
dengan Mean (8 bit) dan Standar Devisasi (8 bit).
Rekonstruksi dibuat berdasarkan nilai “a” dan “b”:
q q
a  x  b  x 
mq mq

◦ Dimana  standar deviasi, x


◦ m jumlah piksel dalam 1 blok,
◦ q adalah jumlah piksel dalam blok yang lebih besar dari
Rekonstruksi citra menggunakan formula:

20
Contoh
encoding

Salah satu blok (4x4) Mean = 241.875


dalam citra asli Standar Deviasi = 4.5

decoding
9
a  241.875  4.5  236.7725
16  9

9
b  241.875  4.5  246.9775
16  9
Salah satu blok (4x4)
dalam citra hasil decoding
21
Block Truncate Coding
Pada satu blok 4x4 citra asli
◦ b = 16 piksel x 8 bit = 128 bit
Pada satu blok 4x4 citra hasil kompresi
◦ b‘ = 16 bit + 8 bit (Mean) + 8 bit (StDev) = 32
Rasio kompresi:
b 128
C  4
b' 32
Data redundan relatif:
1 1
R  1   1   0.75  75%
C 4

22
LZW Coding
Teknik sebelumnya berfokus pada pembuangan coding
redundan. Dalam LZW (Lempel-Ziv-Welch) juga memperhatikan
error free compression.
Memungkinkan transformasi fixed-length code word ke variable
length sequence.
Pembentukan kamus pada saat encoding dilakukan dengan
membaca secara sekuensial piksel-piksel. Untuk urutan yang
tidak ada dalam kamus, maka akan ditentukan code wordnya.
Jika 0-255 (8 bit) digunakan untuk code word intensitas citra
asli, maka code word baru bentukannya dimulai dari 256 (9 bit).
Menggunakan code word 9 bit (secara konsep menggantikan 8
+ 8 dengan 9).
Jika ukuran kamus terlalu kecil berpengaruh pada kemampuan
deteksi sekuens level intensitas jadi lemah, tapi jika terlalu
besar akan melemahkan performa kompresi.

23
Contoh 1 Piksel
Rangkaian
yang Output Code
saat ini Entry kamus
sedang encode Word
diakui
diproses
245
245 239 245 256 245-239
239 249 239 257 239-249
249 239 249 258 249-239
239 245 239 259 239-245
245 245 245 260 245-245
Citra asli 245 239
245-239 235 256 261 245-239-235
235 245 235 262 235-245
Rasio kompresi: 245 245
245-245 239 260 263 245-245-239
b 128
C   1.1852 239 245
b' 108 239-245 245 259 264 239-245-245
245 235 245 265 245-235
Data redundan relatif: 235 245 235 266 235-245
1 1 245 239
R 1  1 245-239 256
C 1.1852
b‘ = 12x9 = 108 bit
 0.1563  15.63%
24
Contoh 2

Citra asli

Rasio kompresi:
b 128
C   1.42
b' 90
Data redundan relatif:
1 1 b‘ = 10x9 = 90 bit
R  1  1
C 1.42
 0.2969  29.69%
25
Watermarking
Semua jenis pengolahan citra sebelumnya (baik gambar
maupun video) dapat di transmisikan secara bebas.
Dapat disalin dengan mudah tanpa error
◦ Beresiko menimbulkan akuisisi oleh pihak lain
◦ Bahkan meskipun gambar sudah di enkripsi
◦ Menimbulkan pelanggaran hak cipta
Solusi:watermark (tanda air / tinta transparan)
Tujuan utama melindungi hak kepemilikan:
◦ Copyright Identification: bukti kepemilikan
◦ User Identification or fingerprinting: mengenali illegal copy
◦ Autenticity determination: menjamin bahwa citra tidak rusak
◦ Automated monitoring: monitoring kapan dan dimana citra disalin
◦ Copy protection: Bisa menetapkan aturan penggunaan dan
penyalinan citra

26
Visible watermark
Visiblewatermark adalah sub-citra atau citra semi-
transparan (opaque) yang diletakkan diatas citra
yang lain (citra yang diberi watermark), sehingga
watermark-nya masih dapat dilihat oleh pengamat.
Banyak digunakan di industri siaran televisi.
Formula untuk memasukkan watermark ke citra asli:

f w  (1   ) f  w
◦ Dimana fw adalah citra yang sudah di watermark, f adalah
citra asli, w adalah citra watermark,  adalah konstanta
yang mengontrol penampakan relatif (opaque) dari
watermarknya.

27
Contoh
83 89 134 145 23 129
56 68 80 170 90 223
189 243 224 211
watermark
Citra asli

23 129 0 0 23 129 0 0
90 223 0 0 90 223 0 0
Opaque = 0.3
0 0 0 0 0 0 0 0
Watermark setelah watermark
di recover f w  (1   ) f  w

65 101 94 102
66 115 56 119
132 170 157 148
Citra asli setelah diwatermark
28
Contoh
f = imread('lena.tif');
f = double(f);
wm = imread('dip.tif');
wm = rgb2gray(wm);
alpha = 0.3;
Citra watermark
[m,n] = size(f);
fwm = zeros(m,n);
[r,c] = size(wm);
fwm(101:100+r, 101:100+c) =wm; Citra asli
hf = (1-alpha) * f + alpha * fwm;
hf = uint8(hf);
figure, imshow(hf);

% Kembalikan watermark
hf = double(hf);
iwm = hf - (1-alpha)*f;
iwm = uint8(iwm);
figure, imshow(iwm);
Citra watermark Opaque = 0.3 29
setelah di recover
Invisible watermark
Sama dengan visible watermark tapi watermarknya tidak dapat
diamati oleh mata telanjang.
Persepsi mata manusia tidak dapat membedakan selisih yang
kecil pada intensitas citra digital
◦ Sehingga informasi redundan yang terselip dalam citra tidak akan tampak.
◦ Watermark masih dapat direcover untuk mengembalikannya.
Formula yang digunakan:
f w
f w  4  
 4  64
◦ Catatan: hasil bagi yang digunakan adalah pembulatan kebawah
Secara prinsip, teknik ini men-set nol pada 2 bit LSB setiap piksel,
kemudian 2 bit tersebut dipakai untuk memasukkan informasi
watermark.
Recover watermark dilakukan dengan men-set nol pada 6 MSB
piksel.

30
Contoh
83 89 134 145 23 129
56 68 80 170 90 223
189 243 224 211
watermark
Citra asli

0 2 0 0 23 129 0 0
1 3 0 0 90 223 0 0
Opaque = 0.3
0 0 0 0 0 0 0 0
Watermark setelah watermark f w
di recover f w  4  
 4  64
80 90 132 144
57 71 80 168
188 240 224 208
Citra asli setelah diwatermark
31
Contoh
f = imread('lena.tif');
f = double(f);
wm = imread('dip.tif');
wm = rgb2gray(wm);
alpha = 0.3;
Citra watermark
[m,n] = size(f);
fwm = zeros(m,n);
[r,c] = size(wm);
fwm(101:100+r, 101:100+c) =wm; Citra asli
hf = 4*(floor(f./4)) + floor(fwm./64);

hf = uint8(hf);
figure, imshow(hf);

% Kembalikan watermark
hf = double(hf);
iwm = hf - 4*(floor(hf./4));

iwm = iwm/3;
figure, imshow(iwm);
Citra watermark Invisible watermark
32
setelah di recover
To Be Continued …

ANY QUESTION ?

33

Anda mungkin juga menyukai