Anda di halaman 1dari 43

BAB 3

PERUMUSAN PENELITIAN

3.1 Blok Diagram

Signal Sparse Coding Dictionary Reconstruction Reconstructed Signal Assessment
Signal
Sparse Coding
Dictionary
Reconstruction
Reconstructed
Signal
Assessment

Gambar 3.1 Blok Diagram secara Umum

Secara umum tujuan penelitian ini akan mencari dictionary yang akan

menghasilkan

sinyal

rekonstruksi

lebih

baik

daripada

hasil

rekonstruksi

menggunakan basis seperti Discrete Fourier Transform (DCT) dan Haar yang

umum digunakan. Penelitian ini juga

memberi sedikit

fokus pada pencarian

metode penggunaan yang efektif, karena terdapat banyak metode dalam sparse

coding menggunakan dictionary dan masing-masing menghasilkan rekonstruksi

yang berbeda-beda.

Penelitian akan dilakukan dengan cara memasukan sinyal yang berupa citra

abu-abu untuk kemudian dilakukan sparse coding menggunakan dictionary yang

19

20

dibangun dari basis-basis umum yang orthonormal. Hasil outputnya adalah sebuah

sinyal atau citra rekonstruksi yang diharapkan memiliki kualitas mendekati citra

asli. Untuk mengetahui kualitas citra rekonstruksi, pada penelitian akan dilihat

nilai Peak Signal to Noise Ratio atau PSNRnya.

DCT Haar Daubechies 2 Symlet 2 Coiflet 5 Dictionary Dictionary Dictionary Dictionary Dictionary Test Image
DCT
Haar
Daubechies 2
Symlet 2
Coiflet 5
Dictionary
Dictionary
Dictionary
Dictionary
Dictionary
Test Image
Blocking
Vectoring
Union Base
OMP
Dictionary
Re-shape
Reconstruction
De-blocking
Assessment

Gambar 3.2 Blok Diagram

21

Untuk lebih rincinya, pertama-tama test image diinput. Test image yang

digunakan ada 5 buah yaitu lena_g.jpg, baboon_g.jpg, barbara.jpg, peppers_g.jpg

dan cameraman.jpg.

, barbara.jpg , peppers_g.jpg dan cameraman.jpg . (a) (b) ( c ) (d) (e) Gambar 3.3

(a)

, barbara.jpg , peppers_g.jpg dan cameraman.jpg . (a) (b) ( c ) (d) (e) Gambar 3.3

(b)

, barbara.jpg , peppers_g.jpg dan cameraman.jpg . (a) (b) ( c ) (d) (e) Gambar 3.3

(c)

, peppers_g.jpg dan cameraman.jpg . (a) (b) ( c ) (d) (e) Gambar 3.3 Test image

(d)

, peppers_g.jpg dan cameraman.jpg . (a) (b) ( c ) (d) (e) Gambar 3.3 Test image

(e)

Gambar 3.3 Test image yang digunakan yaitu (a)lena_g.jpg, (b)baboon_g.jpg, (c)barbara.jpg,

(d)peppers_g.jpg dan (e)cameraman.jpg

Kemudian

selanjutnya

dilakukan

proses

blocking.

Pada

penelitian

ini,

pengolahan citra tidak langsung secara utuh melainkan dipecah-pecah dahulu,

22

inilah yang disebut proses blocking. Misal diinput sebuah citra lena_g.jpg dengan

ukuran 512 x 512 pixel dan dilakukan blocking 256 x 256 pixel :

512 x 512 pixel dan dilakukan blocking 256 x 256 pixel : Gambar 3.4 Ilustrasi Blocking

Gambar 3.4 Ilustrasi Blocking

Maka akan gambar 512 x 512 pixel tersebut akan terbagi menjadi 4 buah

blok image 256 x 256 pixel. Blok tersebut yang nanti akan diolah dalam sparse

coding. Data citra dibuat menjadi blok yang lebih kecil untuk mempercepat proses

komputasi sparse coding. Dalam penelitian ini, ukuran blocking yang digunakan

adalah 8 x 8 pixel karena setelah percobaan dengan beberapa macam ukuran

blocking yakni 2 x 2 pixel, 4 x 4 pixel, 8 x 8 pixel, 16 x 16 pixel, 32 x 32 pixel,

diperoleh data ukuran 8 x 8 pixel memiliki waktu yang paling cepat

ketika

dilakukan sparse coding. Untuk blocking dengan ukuran 32 x 32 pixel (untuk

sebagian test image) dan ukuran lebih dari 32 x 32 pixel, tidak dapat dilakukan

percobaan menghitung waktu karena keterbatasan hardware.

Setelah itu dilakukan proses vectoring untuk tiap bloknya, yaitu proses untuk

mengubah data dari 2 dimensi menjadi 1 dimensi. Perubahan dimensi data ini

23

untuk memudahkan pengolahannya dalam sparse coding. Proses pengubahannya

dilakukan dengan menginput data daripada blok citra kedalam koefisien yang akan

mengambil nilai tiap kolomnya dan menderetkannya menjadi 1 kolom panjang.

Contoh :

Misal ada sebuah matriks

1

7

4

2

5

8

3

6

9

sebagai input.

Maka setelah proses vectoring, akan menjadi

4

7

2

5

8

3

6

⎣ ⎦

9

1

Lalu berikutnya, proses dalam memperoleh overcomplete dictionary yang

diinginkan,

pertama

akan

dibuat

basis-basis

yang

diperlukan.

Basis

yang

digunakan dalam penelitian ini adalah DCT dan Wavelet. Pemilihan 2 macam basis

tersebut

karena

sudah

umum

digunakan

serta

memiliki

sifat

orthonormal.

Memiliki sifat orthonormal berarti basis tersebut mempunyai inverse yang sama

dengan transposenya, serta tiap-tiap atom dalam basis tersebut unik. Sifat ini

diperlukan

pada

basis

yang

akan

digunakan

dalam

penelitian

karena

akan

memudahkan proses perhitungan dalam sparse coding.

Wavelet

memiliki

macam-macam

tipe,

dan

tidak

semua

tipe Wavelet

memiliki sifat orthonormal Beberapa tipe Wavelet yang memiliki sifat orthonormal

dan dipakai dalam penelitian adalah Haar, Daubechies, Coiflet dan Symlet. Untuk

24

masing-masing tipe Wavelet yang ada (Haar, Daubechies, Coiflet dan Symlet),

terbagi lagi menjadi orde-orde. Dalam penelitian ditentukan orde yang digunakan

adalah orde 2 untuk Daubechies, orde 5 untuk Coiflet dan orde 5 untuk Symlet.

Pemilihan orde dan tipe Wavelet ini tidak berdasarkan alasan khusus, penulis

memilih tipe Wavelet yang orthonormal dan umum dipakai secara arbitrary.

Untuk membuat basis DCT, dapat diperoleh dari persamaan (2.3) akan tetapi

dalam

program

digunakan

fungsi

transformasi

DCT

di

transformasi DCT secara umum adalah :

Dictionary · Koefisien = Sinyal

MATLAB.

Fungsi

( Untuk memudahkan selanjutnya Basis disebut sebagai D, koefisien disebut sebagai

X dan Sinyal disebut sebagai Y. )

 

D · X = Y

 

(3.1)

Tetapi

fungsi

transformasi

DCT

yang

ada

dalam

MATLAB

akan

memperoleh

koefisiennya

sebagai

hasil

dan

sinyal

sebagai

input,

maka

persamaannya adalah sebagai berikut:

 
 

D I

· D · X

=

D I · Y

X

=

D I · Y

(3.2)

25

Jadi untuk memperoleh basis DCT, dapat diinput sebuah matriks identitas

sebagai sinyal ke dalam persamaan (3.2).

X

= D I · I X = D I

(3.3)

Suatu matriks yang dikali dengan matriks identitas sama dengan matriks itu

sendiri, maka setelah diinput matriks identitas sebagai sinyal di persamaan (3.2),

akan diperoleh hasil koefisien adalah inverse basis DCT (3.3). Dan terakhir untuk

diperoleh basis DCT akan dilakukan inverse pada inverse basis DCT. Akan tetapi

karena basis DCT adalah dictionary yang orthonormal, maka hasil inversenya

akan sama dengan hasil transposenya. Jadi setelah diperoleh inverse basis DCT

dari persamaan (3.3), untuk mendapatkan basis DCT cukup dilakukan transpose.

Berikut adalah contoh matriks basis DCT ukuran 8x8 yang diperoleh:

0.3536

0.4904

0.4619


0.1913

0.2778

0.3536

0.4157



⎢ ⎣ 0.0975

Lalu

0.3536

0.4157

0.3536

0.2778

0.1913

0.0975

0.3536

0.1913

0.4904

0.3536

0.0975

0.4619

0.2778

0.4619

0.4904

0.4157

0.3536

0.0975

0.4619

0.2778

0.3536

0.4157

0.1913

0.4904

untuk

memperoleh

basis

0.3536

0.0975

0.4619

0.2778

0.3536

0.4157

0.1913

0.4904

0.3536

0.2778

0.1913

0.4904

0.3536

0.0975

0.4619

0.4157

macam-macam

0.3536

0.4157

0.1913

0.0975

0.3536

0.4904

0.4619

0.2778

Wavelet,

0.3536

0.4904


0.4619


0.0975

0.2778

0.1913

0.4157

0.3536

Wavelet

menggunakan persamaan fungsi (lihat persamaan (2.6)) dalam transformasinya,

tetapi dalam prakteknya digunakan high pass dan low pass filter (lihat gambar

2.2).

Ini

karena

proses

komputasi

menghitung

persamaan

Wavelet

sangat

26

membutuhkan waktu, sehingga untuk mengurangi waktu komputasi digunakan

gabungan high pass dan low pass filter yang hasilnya ekuivalen dengan persamaan

fungsinya.

Fungsi standar MATLAB hanya tersedia fungsi untuk menghasilkan nilai

low pass dan high pass filter

suatu tipe Wavelet.

Sehingga untuk mencari

koefisiennya

digunakan

diperoleh

dari

toolbox

fungsi

tambahan

UVi_wave

version

inverse

Wavelet

3.0.

Ke

dalam

transform

yang

fungsi

tersebut

dimasukkan input sinyal dan high pass serta low pass filternya. Karena hasil yang

diperoleh

sama

seperti

fungsi DCT

di MATLAB yakni

koefisiennya

(lihat

persamaan (3.2)) maka untuk memperoleh Basisnya, dimasukkan matriks identitas

sebagai sinyal input (persamaan (3.3)). Terakhir, sama seperti pada memperoleh

basis DCT, basis yang diperoleh adalah inversenya, karena itu perlu dilakukan

inverse terhadap inverse basis tersebut. Karena tipe Wavelet yang dipilih juga

bersifat

orthonormal seperti DCT maka untuk memperoleh inversenya cukup

dilakukan transpose. Langkah-langkah tersebut dilakukan serupa untuk tiap tipe

dan orde Wavelet yang diinginkan, cukup mengubah parameter tipe Wavelet pada

saat menghasilkan nilai low pass dan high pass filter, jika ingin dihasilkan Haar

Wavelet

maka

input

parameternya

adalah

Haar’,

untuk

menghasilkan

Daubechies-2 digunakan ‘db2’, untuk menghasilkan Coiflet-5 digunakan ‘coif5’

dan untuk menghasilkan Symlet-5 digunakan ‘sym5’.

Setelah tersedia basis yang diperlukan, selanjutnya basis tersebut

akan

digabungkan secara berderet

dalam sebuah

matriks. Urutan penderetan tidak

mempengaruhi hasil akhir dalam sparse coding.

27

Contoh, diperoleh basis DCT adalah matriks sebagai berikut :

DCT

DCT

DCT

DCT

DCT

DCT

DCT

DCT

DCT

atau disederhanakan menjadi [DCT ]

Dan basis Wavelet Haar yang diperoleh sebagai berikut :

DB

DB

DB

1

1

1

DB

DB

DB

1

1

1

DB

DB

DB

1

1

1

atau disederhanakan menjadi [Haar]

Maka ketika dilakukan penderetan akan menjadi sebagai berikut :

DCT

DCT

DCT

DCT

DCT

DCT

DCT

DCT

DCT

DB

DB

DB

1

1

1

DB

DB

DB

1

1

1

DB

DB

DB

1

1

1

atau disederhanakan menjadi [DCT

Haar]

Dan seterusnya bila ditambah basis lain atau bahkan basis yang sama :

DCT


⎢ ⎣ DCT

DCT

DCT

DCT

DB

1 DB

1

DB

1

·

·

·

SYM

5

SYM

5

SYM

5

DCT

DCT

DB

1 DB

1

DB

1

·

·

·

SYM

5

SYM

5

SYM

5

DCT

DCT

DB

1 DB

2

DB

1

·

·

·

SYM

5

SYM

5

SYM

5

 

[D1 D2 D3

 

·

·

·

Dn]

⎥ ⎦

28

Penderetan ini akan menghasilkan bentuk matriks yang berubah dari bujur

sangkar menjadi sebuah persegi panjang, perbedaan jumlah kolom dan baris dan

matriks menyebabkan dictionary ini disebut

sebagai overcomplete dictionary,

karena mempunyai penyelesaian yang lebih dari 1. Hal ini dapat dimisalkan,

sebuah kasus dimiliki 3 buah persamaan dengan 3 buah koefisien :

(i)

X

+ Y = 1

(ii)

X + Z = 2

(iii)

Y + Z = 3

Maka penyelesaian pasti hanya 1 buah yaitu X = 0 , Y = 1, dan Z = 2 , tidak

mungkin dengan nilai lain. Akan tetapi ketika kasus lain dimiliki 3 buah koefisien

tetapi dengan 5 buah persamaan :

(i)

X

+ Y = 1

(ii)

X + Z = 2

(iii)

Y + Z = 3

(iv)

3X Y = 1

(v)

4 X

+ Z = 5

Penyelesaiannya tidak dapat ditemukan, karena penyelesaiannya bisa lebih

dari 1, seperti X = 0 , Y = 1dan Z = 2 untuk persamaan (i), (ii) dan (iii);

X = 1,

Y = 2 , Z = 1 untuk persamaan (ii), (iii), (iv) dan (v); dan seterusnya tanpa ada

penyelesaian yang pasti.

Dapat

diandaikan

jumlah

persamaan

adalah

dictionary

dan

jumlah

koefisien adalah sinyal input serta penyelesaian adalah koefisien. Maka kasus

pertama yang memiliki 1

penyelesaian dapat

dianalogikan

sebagai complete

29

dictionary, contohnya seperti basis DCT yang akan selalu menghasilkan

nilai

koefisien yang sama setiap kali dilakukan transformasi.

Untuk kasus yang memiliki banyak penyelesaian dapat dianalogikan dengan

overcomplete dictionary. Dengan panjang dictionary yang lebih banyak daripada

sinyal input maka akan diperoleh pilihan koefisien yang lebih banyak. Dalam

sparse coding nanti akan dibuat algoritma dalam memilih koefisien yang hasil

rekonstruksinya paling mendekati test image, atau dalam kasus di atas, memiliki

penyelesaian paling mendekati semua persamaan. Dalam sparse coding nilai

koefisien yang dihasilkan bergantung pada jumlah pengulangan dalam proses

OMP.

Kemudian

dengan

tersedianya

dictionary

yang

diinginkan,

dilakukan

pencarian koefisien dari dictionary gabungan tersebut dengan metode Orthogonal

Matching Pursuit (OMP). Pertama-tama akan dicari nilai dot product antara tiap

atom dictionary dengan residu. Residu adalah perbedaan nilai antara

data asli

dengan

data

rekonstruksi.

Image

secara

digital

pada

dasarnya

berbentuk

matriks

berukuran

sesuai

dengan

jumlah

pikselnya,

adalah

data

maka

proses

pengurangan data dilakukan layaknya pengurangan antar matriks. Nilai awal

residu yang digunakan adalah data blok yang sedang dilakukan proses sparse

coding.

Setelah dihitung semua nilai dot productnya, pilih yang memiliki nilai

terbesar, lalu menyimpan nilai index dari atom yang menghasilkan nilai dot

product tesebut. Nilai index tersebut yang akan dipakai untuk memilih index dari

koefisien sementara yang diperoleh dari perkalian inverse overcomplete dictionary

dengan data blok yang sedang diproses.

30

Koefisien

memang mudah

dicari

menggunakan

cara

seperti

itu, tetapi

aproksimasi

koefisien

ini

tidak

dilakukan

seperti

pada

koefisien

complete

dictionary. Karena pada overcomplete dictionary walaupun tiap basisnya memiliki

sifat orthonormal, atom-atom antar basis yang berbeda tidak orthonormal, ada

kemungkinan terjadinya pengulangan. Sehingga aproksimasi non linear biasa tidak

bisa

menjadi

solusi.

Untuk

itu

digunakan

kombinasi atom-atom antar basis yang unik

dot

product

untuk

memperoleh

Koefisien yang diperoleh kemudian akan ditransform kembali menggunakan

overcomplete dictionary yang ada menjadi blok image rekonstruksi. Residu lalu

diupdate dengan mengurangkan nilai blok asli dengan nilai blok rekonstruksi.

Residu akan berpengaruh pada pemilihan index, karena index yang sudah terpilih

secara tidak langsung tereliminasi.

Selanjutnya proses dilakukan berulang sesuai dengan jumlah aproksimasi

koefisien yang ditentukan yaitu 5%, 10%, 15%, 20%, 25%, 30%, 35%, 40%, 45%,

50%,55%, 60%, 65%, 70%, 75%, 80%, 85%, 90% atau 95% daripada jumlah

koefisien yang seharusnya ada.

31

31 Gambar 3.5 Ilustrasi Rekonstruksi; D adalah Dictionary , x adalah Aproksimasi Koefisien dan y adalah

Gambar 3.5 Ilustrasi Rekonstruksi; D adalah Dictionary, x adalah Aproksimasi Koefisien

dan y adalah Sinyal Rekonstruksi

Dilihat pada gambar 3.5, contoh ilustrasi cara kerja proses yang terjadi

dalam

OMP

diperoleh:

1

1

1

1

2

2

2

2

secara

3

3

3

3

4

4

4

4

5

5

5

5

sederhana

6

6

6

6

7

7

7

7

8

8

8

8

adalah,

9

9

9

9

10

10

10

10

Sinyal yang diinput adalah :

20

40

50

30

misal

dictionary

11

11

11

11

12

12

12

12

overcomplete

yang

Selanjutnya akan dicari atom dictionary yang paling tinggi keterkaitannya

dengan sinyal. Ini dilakukan dengan mencari nilai dot product terbesar antara

residu dan atom-atom dictionary. Karena residu adalah beda antara sinyal asli

32

dengan sinyal rekonstruksi, dan sinyal rekonstruksi belum diperoleh pada langkah

paling awal maka residu pertama adalah sinyal asli.

Contoh perhitungan atom pertama dictionary dengan residu awal :

[1

1

1

1] ·

20


40

50

30

= 140

Perhitungan berikutnya :

[2

2

2

2] ·

20

40

30

50

= 280

Dan dihitung seterusnya hingga atom terakhir.

Dilihat dari contoh matriks yang ada, misalkan setelah selesai dicari nilai-

nilai dot product tiap atom ternyata pada atom ke-5 merupakan nilai tertinggi,

maka atom tersebut adalah atom terpilih yang akan digunakan untuk mencari

koefisien.

Caranya adalah, atom tersebut akan dipisahkan dari dictionary yang ada

kemudian diinverse, dan hasilnya dikalikan dengan sinyal asli. Contoh :

Misal hasil inverse atom ke 5 adalah

[5 5 5 5] ·

20

30

40

50

=

700

⎡ − 5

⎢ −

5

5

5

33

Nilai

tersebut

kemudian

akan

dimasukkan

ke

dalam

matriks

koefisien

disesuaikan

dengan

index

atom

dictionary

yang

digunakan,

dalam

contoh

sebelumnya, indexnya adalah 5. Dapat dilihat pada gambar 3.5, matriks koefisien

ukurannya sesuai dengan jumlah atom dictionary maka :

0

0

0

0

700

0

0

0

0

0

0

0

Koefisien yang diperoleh lalu direkonstruksi menggunakan overcomplete

dictionary yang ada, hasil rekonstruksi digunakan untuk mencari residu baru.

1

1

1

1

2

2

2

2

3

3

3

3

4

4

4

4

5

5

5

5

6

6

6

6

7

7

7

7

8

8

8

8

9

9

9

9

10

10

10

10

11

11

11

11

12

12

12

12

·

0

0

0

0

700

0

0

0

0

0

0

0

=

⎡ −

⎢ −

3500

3500

3500

3500

34

Residu baru :

20

30

40

50

3500

3500

3500

3500

=

3520 ⎤ ⎢

3530

3540 ⎥ ⎢

3550

Lalu kemudian proses diulang ke mencari dot product terbesar selanjutnya.

Yakni antara residu baru dengan tiap atom dictionary. Misalkan pada proses

berikutnya ditemukan bahwa atom ke-3 dictionary memiliki nilai dot product

terbesar. Maka atom ini akan digabungkan dengan atom terpilih sebelumnya,

dalam contoh sebelumnya adalah atom ke-5. Maka matriks yang terbentuk adalah :

5

5

5

5

3

3

3

3

Langkah selanjutnya diinverse kemudian dikalikan dengan sinyal asli untuk

diperoleh koefisien.

Misal inverse matriks atom pilihan adalah

5

5

5

5

3

3

3

3

Maka koefisien yang diperoleh adalah :

5

3

5

3

5

3

5

3

·

20

30

40

50

=

⎡ −

700

520

35

Sama seperti sebelumnya, nilai tersebut

kemudian akan dimasukkan ke

dalam matriks koefisien pada index yang sesuai dengan index dimana atom

dictionary tersebut ditemukan, dalam contoh kali ini indexnya adalah 5 dan 3.

⎢ −

0

0

520

0

700

0

0

0

0

0

0

0

Proses selanjutnya adalah mencari residu baru dengan cara merekonstruksi

koefisien yang ditemukan dengan dictionary

dengan sinyal asli.

1

1

1

1

2

2

2

2

3

3

3

3

4

4

4

4

5

5

5

5

6

6

6

6

7

7

7

7

8

8

8

8

9

9

9

9

10

10

10

10

11

11

11

11

dan dicari selisih nilai akhirnya

12

12

12

12

·

0

⎢ −

0

0

0

520

0

700

0

0

0

0

0

=

⎡ −

⎢ −

5060

5060

5060

5060

36

Residu baru :

20

30

40

50

5060

5060

5060

5060

=

5080 ⎤ ⎢

5100 ⎥ ⎢

5110

5090

Dan seterusnya proses berulang hingga jumlah koefisien yang ditemukan

sesuai

dengan

aproksimasi

yang diinginkan.

Contoh

jika

aproksimasi

yang

ditentukan adalah 25% maka perulangan akan dilakukan hingga jumlah koefisien

yang memiliki nilai berjumlah, 25% × 12 = 3, tiga buah. Dalam contoh di atas,

perulangan cukup dilakukan 1 kali lagi. Bila aproksimasi yang ditentukan adalah

30% maka jumlah koefisien yang diperlukan adalah 30% × 12 = 3.6, ketika angka

yang diperoleh tidak bulat maka perlu dilakukan pembulatan ke atas, sehingga

jumlah koefisien yang diperlukan menjadi 4.

Setelah

blok

image

rekonstruksi

yang

terakhir

diperoleh,

dilakukan

reshaping yaitu kebalikan daripada vectoring, mengubah data dari 1 dimensi

menjadi 2 dimensi. Dan terakhir dilakukan deblocking yang merupakan kebalikan

proses blocking, menggabungkan potongan-potongan kecil tersebut ke kembali ke

dimensi

awal.

Image

rekonstruksi

hasil

dictionary

baru

tersebut

nanti

akan

dibandingkan dengan test image awal secara objektif, yakni dilihat nilai PSNR-

nya.

37

3.2 Diagram Alir

3.2.1 Umum Overcomplete

Start

Inisialisasi Input Image Display Image
Inisialisasi
Input Image
Display Image

Generate DCT

Matrix

Input Image Display Image Generate D CT Matrix Generate Haar Matrix Generate Daubechies-2 Matrix Generate

Generate Haar

Matrix

Display Image Generate D CT Matrix Generate Haar Matrix Generate Daubechies-2 Matrix Generate Coiflet -5 Matrix

Generate Daubechies-2 Matrix

Matrix Generate Haar Matrix Generate Daubechies-2 Matrix Generate Coiflet -5 Matrix Generate Symlet -2 Matrix A

Generate Coiflet-5 Matrix

Generate Daubechies-2 Matrix Generate Coiflet -5 Matrix Generate Symlet -2 Matrix A A Dictionary Unification

Generate Symlet-2 Matrix

A
A
A
A

Dictionary Unification

Matrix Generate Symlet -2 Matrix A A Dictionary Unification Melakukan proses Blocking pada image input Melakukan
Melakukan proses Blocking pada image input

Melakukan proses Blocking pada image input

Melakukan proses Blocking pada image input
Unification Melakukan proses Blocking pada image input Melakukan proses OMP pada block - block image Proses
Melakukan proses OMP pada block - block image

Melakukan proses OMP pada block-block image

Melakukan proses OMP pada block - block image
image input Melakukan proses OMP pada block - block image Proses De-blocking Display Image Menghitung PSNR
Proses De-blocking

Proses De-blocking

Proses De-blocking
Display Image
Display Image

Menghitung PSNR

proses OMP pada block - block image Proses De-blocking Display Image Menghitung PSNR End Gambar 3.6

End

Gambar 3.6 Diagram Alir Umum

38

Proses yang dilakukan oleh program penelitian ini pertama-tama adalah

dilakukan

inisialisasi

jumlah

dimensi

blocking yang digunakan

dan

jumlah

aproksimasi non-zero, lalu menginput citra yang akan dilakukan sparse coding

menggunakan syntax imread ke dalam variabel I. Citra-citra yang akan diinput

dapat dilihat pada gambar 3.3. Contoh, misal akan diinput citra cameraman.jpg

maka dibuatkan syntax

I = imread(cameraman.jpg);

Selain menginput citra yang akan dipakai, diinput juga ukuran citra yang

digunakan ke dalam variabel v_size dan h_size. Variabel v_size untuk ukuran citra

secara vertikal dan h_size untuk ukuran citra secara horizontal. Ukuran ini nanti

akan dipakai dalam proses blocking dan deblocking. Citra lalu dimunculkan

menggunakan imshow untuk perbandingan visual dengan citra rekonstruksi pada

akhir proses.

Selanjutnya

dibuat

basis-basis

yang

akan

digabungkan

sebagai

overcomplete

dictionary.

Basis

tersebut

antara

lain

adalah

DCT,

Haar,

Daubechies, Coiflet dan Symlet. Basis tersebut diperoleh dari hasil transformasi

dengan matriks indentitas seperti pada persamaan (3.3) yang kemudian dilakukan

inverse.

Masing-masing basis tersebut akan ditampung dalam variabel D1, D2,

D3, D4 dan D5. Dapat dilihat pada source code, syntax yang digunakan untuk

DCT adalah sebagai berikut :

D1=dct(eye(b*b))';

Syntax

dct

merupakan

fungsi

bawaan

daripada

MATLAB, yang akan

menghasilkan koefisien DCT dari sinyal yang diinput, dct(sinyal_input). Sinyal

yang diinput ke dalam fungsi DCT tersebut adalah eye(b*b). Eye merupakan

39

fungsi MATLAB yang akan menghasilkan matriks identitas berukuran input ×

input ( eye(input) ) , dalam baris program kali ini akan dibuat matriks identitas

sebesar dimensi bloking kuadrat. Terakhir hasil DCT tersebut akan ditranspose

untuk diperoleh inversenya.

Lalu untuk syntax wavelet adalah sebagai berikut :

c=log2(b*b);

Haar

[L,H]=wfilters('Haar','R');

D2=iwt(eye(b*b),L,H,c)';

Daubechies-2

[L,H]=wfilters('db2','R');

D3=iwt(eye(b*b),L,H,c)';

Coiflet-5

[L,H]=wfilters('coif5','R');

D4=iwt(eye(b*b),L,H,c)';

Symlet-2

[L,H]=wfilters('sym2','R');

D5=iwt(eye(b*b),L,H,c)';

40

Dapat

dilihat

wavelet

mempunyai

syntax yang digunakan untuk membangun basis tipe-tipe

kemiripan,

yang

membedakan

adalah

parameter

yang

digunakan pada waktu mencari koefisien high pass dan low pass filternya.

Langkah pertama dalam mencari basis wavelet

adalah

mencari dahulu

koefisien high pass dan low pass filternya yang ekuivalen dengan persamaannya. Ini

dilakukan dengan syntax wfilter yang akan ditampung nilainya ke dalam variabel L

dan H. Syntax wfilter akan menghasilkan koefisien sesuai dengan tipe wavelet yang

diinginkan, untuk Haar digunakan ‘haar’, untuk Daubechies-2 digunakan ‘db2’,

untuk Coiflet-5 digunakan ‘coif5’ dan untuk Symlet-2 digunakan ‘sym2’. Parameter

lain

yang

diperlukan

rekonstruksi.

adalah

‘R’

karena

yang

diperlukan

adalah

koefisien

Langkah berikutnya adalah menggunakan fungsi tambahan iwt dari Toolbox

UVi_wave version 3.0. Syntax iwt ini berfungsi sama seperti syntax dct yakni

memperoleh

koefisien

dari

sinyal

asli.

Akan

tetapi

parameter

yang

perlu

dimasukkan adalah sinyal input, koefisien low pass dan high pass serta level DWT.

Pada penelitian digunakan level DWT maksimum. Sinyal input yang dimasukkan

adalah matriks identitas, sama seperti pada dct. Dan terakhir dilakukan transpose

untuk diperoleh inversenya.

Basis yang sudah diperoleh kemudian digabungkan untuk menjadi sebuah

dictionary dengan cara dideretkan. Hasil penderetan basis tersebut akan ditampung

dalam variabel D, syntaxnya adalah D = [ D1 D2 D3 D4 D5 ]. Setelah sudah

diperoleh

dictionary

yang

diinginkan,

dilakukan

juga

penghitungan

ukuran

dimensi dictionary yang dimasukkan ke dalam variabel vd dan hd. Variabel vd

41

untuk

ukuran

jumlah

baris

dictionary

dan

hd

untuk

ukuran

jumlah

kolom

dictionary. Variabel tersebut akan digunakan dalam proses OMP.

Selanjutnya dilakukan proses blocking. Proses blocking menggunakan

fungsi yang terpisah dari program utama, lebih lengkapnya dapat dilihat pada

subbab 3.2.2 Blocking. Proses lalu masuk ke dalam pengulangan sesuai dengan

jumlah blok dalam baris dan kolom.

Masing-masing blok tersebut pertama akan dilakukan proses vectoring untuk

mengubah data blok tersebut

dari 2 dimensi

menjadi 1 dimensi. Kemudian

dilakukan proses sparse coding dengan algoritma Orthogonal Matching Pursuit

(OMP), lihat

subbab 3.2.4 Orthogonal Matching Pursuit (OMP) untuk lebih

lengkap.

Blok-blok

yang

sudah

diproses

kemudian

akan

dilakukan

proses

de-

blocking, lihat subbab 3.2.3 De-blocking, menjadi sebuah citra rekonstruksi. Citra

rekonstruksi ini lalu dimunculkan dengan imshow seperti pada citra input di baris-

baris awal program.

Terakhir dilakukan penghitungan Peak Signal to Noise Ratio atau PSNR

antara citra awal dengan citra rekonstruksi. Hasil PSNR lalu ditunjukkan dalam

layar.

Jadi program pada akhirnya akan menghasilkan 3 buah output, yakni citra

awal, citra rekonstruksi dan nilai PSNR antara keduanya.

42

3.2.2.Blocking

Start Input Image (I), dimensi per-blocking (b), dimensi image (v_size, h_size) w = ceil( h_size
Start
Input Image (I), dimensi per-blocking
(b), dimensi image (v_size, h_size)
w = ceil( h_size / b )
h = ceil( v_size / b )
J = 1
K = 1
S(J, K, 1:b, 1:b) = I [(J-1)*b+(1:b), (K-1)*b+(1:b)]
K++
T
K = w
Y
J++
T
J = h
Y
End

J, K : indeks blok

Gambar 3.7 Diagram Alir Blocking

43

Proses

blocking

dalam

program

dibuat

dalam

fungsi

secara

compact.

Pemanggilan fungsi terdapat beberapa parameter yang harus dimasukkan yakni

input image, dimensi blocking yang diinginkan, dimensi image asli. Lalu fungsi

akan mencari jumlah blok yang akan dibuat

berdasarkan dimensi blok yang

diinginkan dan dimensi image asli. Bila image asli berukuran 512 x 512 pixel dan

ingin dibuat blocking 256 x 256 pixel maka akan didapat nilai w = 512 ÷ 256 = 2

dan nilai h = 512 ÷ 256 = 2. w adalah jumlah baris dan h adalah jumlah kolom.

karena itu nanti akan dibuatkan pembagian sebesar 2 baris dan 2 kolom yang

berarti ada 4 blok.

 

h

 

J

= 1

J

= 1

K

= 1

K

= 2

w

J

= 2

J

= 2

K

= 1

K

= 2

Gambar 3.8 Ilustrasi w dan h serta J dan K

Setelah itu proses masuk ke dalam perulangan sesuai dengan jumlah

kolom

dan

baris.

Dalam

tiap

perulangan

terdapat

proses yang sama

yakni

menghasilkan output

S(J, K, 1:b, 1:b). Parameter J, K bertindak sebagai inde x

blok, misal blok pada baris dan kolom pertama maka akan memiliki index 1, 1 (J =

1 dan K = 1), lalu 2 parameter terakhir adalah index matriks data yang akan

44

dimasukkan. Data yang dimasukkan adalah I [(J-1)*b+(1:b), (K-1)*b+(1:b)]. I

adalah data dari image asli, diberi beberapa koefisien tambahan pada inde x

matriksnya

sehingga

bisa

dilakukan

perulangan,

sehingga

nanti

pada

saat

pengisian data akan terjadi peristiwa sebagai berikut :

Misal I asli berukuran 8 x 8 :

1

17

33

41

49

57

25

9

2

10

18

26

34

42

50

58

3

11

19

27

35

43

51

59

4

12

20

28

36

44

52

60

5

13

21

29

37

45

53

61

6

14

22

30

38

46

54

62

7

15

23

31

39

47

55

63

8

16

24

32

40

48

56

64

Dilakukan proses blocking 4 x 4, karena itu nilai w = 8 ÷ 4 = 2 dan h = 8 ÷ 4

= 2 sehingga nanti I akan terbagi menjadi 4 buah blok kecil. Pada tiap bloknya,

pada saat penginputan data, pertama-tama J = 1 dan K = 1, S(1, 1, 1:4, 1:4) = I((1-

1)× 4 + (1:4), (1-1) × 4 + (1:4)). Jadi untuk S(1, 1, 1:4, 1:4) akan diinput data I

(1:4, 1:4). I(1:4, 1:4) berarti diambil data I(1, 1) sampai I(4, 4), angka parameter

tersebut adalah index dalam matriks, I(1, 1) berarti nilai pada matriks I di baris 1

dan kolom 1. Begitu pula untuk S.

1

17


25

9

2

10

18

26

3

11

19

27

4

12


20


28

45

Selanjutnya J = 1 dan K = 2 maka S (1, 2, 1:4, 1:4) = I((1-1) × 4 + (1:4), (2-

1) × 4 + (1:4)) S (1, 2, 1:4, 1:4) =

5

21

29

13

I (1:4, 5:8).

6

14

22

30

7

15

23

31

8

24

32

16

Untuk J = 2 dan K = 1 maka S (1, 2, 1:4, 1:4) = I((2-1) × 4 + (1:4), (1-1) × 4

+ (1:4)) S (2, 1, 1:4, 1:4) = I (5:8, 1:4).

33

41

49

57

34

42

50

58

35

43

51

59

36

52

60

44

Untuk J = 2 dan K = 2 maka S (2, 2, 1:4, 1:4) = I((2-1) × 4 + (1:4), (2-1) × 4

+ (1:4)) S (2, 2, 1:4, 1:4) = I (5:8, 5:8).

37

45

53

61

38

46

54

62

39

47

55

63

40

48

56

64

Jadi :

1

17


33

41

49

⎢ ⎣ 57

25

9

2

10

18

26

34

42

50

58

3

11

19

27

35

43

51

59

4

12

20

28

36

44

52

60

5

13

21

29

37

45

53

61

6

14

22

30

38

46

54

62

7

15

23

31

39

47

55

63

[I]


16

24



⎥ ⎦

8

32

40

48

56

64

=

1

17

33

49

⎢ ⎣

2

10

18

9

25 26

34

41 42