Anda di halaman 1dari 51

BAB I

GRAPHICAL USER INTERFACE

1.1 Membuat Pngolahan Citra dengan GUI Matlab

1.Buka GUI Matlab dengan commod windows atau dengan mengklik dua kali menu bar,
dan akan muncul tampilan gambar 1

Gambar 1 Tampilan Command Window pada Matlab

2. Membuka tampilan GUI baru dengan mengetikkan guide pada comand window dan
akan muncul hasil seperti pada gambar 2

Gambar 2 Tampilan Setelah di ketik guide;


Kemudian pilih Blank GUI(Default) dan ok. Maka akan muncul tampilan GUI baru
seperti pada gambar 3.

Gambar 3 Tampilan GUI baru

3. Klik Uicontrol axes atau Uicontrol yang bergambar bagan, dan buat uda Uicontrol
axes pada figure GUI , sehingga hasilnya sepeti pada gambar 4.

Gambar 4 Hasil membuat dua uicontrol axes

4. Membuat 2 push button pada figure, kemudian letakkan setiap puss button pada axes 1
dan axes2. Berilah nama push button yang pertama atau pada axes 1 dengan nama open,
dan pada axes2 dengan nama proses. Caranya dengan klik dua kali pada setiap push
button tersebut kemudian pilih string untuk merubah nama push button, sehingga
hasilnya seperti pada gambar 5
Gambar 5 Hasil merubah nama push button menjadi open dan proses

5. Klik kanan pada button citra awal, kemudian pilih view callback dan pilih callback.
Hasilnya masu pada script GUI seperti pada gambar 6

Gambar 6 Tampilan script GUI

dan masukkan scrip di bawah ini pada function pushbutton1


Open=guidata(gcbo);
[namafile,direktori] =uigetfile({‘*.jpg;*.bmp;*.tif},’OpenImage’);
I=imread(namafile);
set(open.figure1,’CurrentAxes’,open.axes1);
set(imagesc(1));colormap(’gray’);
set(open.axes1,’Userdata’,I);
selelah scrip di tambahkan kemudian di run, maka akan tampil seperti gambar 7

Gambar 7 Tampilan setelah disisipkan scrip pada pushbutton1

Keterangan: Open=guidata(gcbo) berarti memuka halaman GUI. [namafile,direktori]


=uigetfile({‘*.jpg;*.bmp;*.tif},’OpenImage’) yaitu ekstensi file yang bisa digunakan berupa
ekstensi .jpg, .bmp, .tif.. I=imread(namafile) menyimpan file pada variable I dan variable
inilah yang nantinya akan di panggil ketika menampilkan gamar.
set(open.figure1,’CurrentAxes’,open.axes1) membuka figure 1 dan juga axes1.
set(imagesc(1)) yaitu membuka image atau gambar . colormap(’gray’) yaitu warna dari
tampilan jendelanya abu-abu. set(open.axes1,’Userdata’,I) yang berarti membuka axes1
dengan gambar yang sudah disimpan pada variable I.
Kemudian buka foto yang akan di proses dengan klik dua kali ikon open sehingga terlihat
seperti pada Gambar 8
Gambar 8 Foto yang akan di proses

6. Klik kanan pada push button proses dan tambahkan script pada button tersebut atau
lebih tepatnya pushbutton2
open=guidata(gcbo);
I=get(open.axes1,'Userdata');
[r c]=size(I);
for x=1:r
for y=1:c
J(x,y)=255-I(x,y);
end
end
set(open.figure1,'CurrentAxes',open.axes2);
set(imagesc(J));colormap('gray');
set(open.axes2,'Userdata',J);

Maka hasilnya akan terlihat seperti pada Gambar 9


Gambar 9 Hasil akhir dari pegolahan citra
BAB II
OPERASI DASAR PENGGOLONGAN CITRA
2.1 Operasi Titik
2.1.1 Operasi Negatif
Operasi ini bertujuan untuk menghasilkan bentuk citra negatif dengan cara
mengurangi nilai intensitas piksel dan nilai keabuan maksimum. Operasi negatif ini
mempunyai persamaan f(x,y)’=255-f(x,y). Untuk membuat citra negatif ini ketikkan source
kode terlebih dahulu pada notepad kemudian salin source kode tersebut pada Comand
Window.

Gambar 10 Source kode operasi negatif

Gambar 11 Hasil Operasi negatif citra

2.2 Operasi Aritmatika


2.2.1 Penjumlahan Citra
Sudah diketahui sebelumnya bahwa citra digital adalah matriks, jadi penjumlahan
citra merupakan menjumlahkan dua buah matriks yang berukuran sama. Syarat penjumlahan
dua buah matriks adalah ukuran kedua matriks tersebut harus sama, jika hasil penjumlahan
intensitas lebih besar maka akan dibulatkan intensitasnya menjadi 255. Penjumlahan matriks
mempunyai persamaan : C(x,y)=A(x,y) + B(x,y). C merupakan citra baru yang mana
intensitas pikselnya diperoleh dari penjumlahan tiap piksel pada matriks A dan B. Letakkan
source kode di bawah ini dengan sebelumnya diketikkan di notepadd kemudian letakkan pada
Command Window.

Gambar 12 Source kode penjumlahan dua buah citra

Gambar 13 Hasil Operasi penjumlahan dua buah citra

2.2.2 Pengurangan Citra


Seperti halnya penjumlahan pada operasi aritmatika citra pengurangan berarti
mengurangkan dua buah matriks yang berukuran sama. Pengurangan citra mempunyai
persamaan sebagai berikut : C(x,y)=A(x,y)-B(x,y), dengan C adalah intensitas piksel pada
citra yang diperoleh dari selisih intensitas tiap piksel pada matriks A dengan matriks B.
Berikut source kode pengurangan cira.
Gambar 14 Source kode Pengurangan

Gambar 15 Hasil operasi pengurangan pada citra

2.2.3 Perkalian Citra


Perkalian pada A dengan scalar c akan menghasilkan citra baru B yang intensitasnya
lebih terang dari citra semula, dengan kenaikan nilai intensitas setiap pikselnya sebanding
dengan c. Perkalian citra dengan scalar ini bertujuan untuk kalibrasi kecerahan. Berikut
persamaan perkalian citra dengan scalar yang digunakan untuk kalibrasi kecerahan:
B(x,y)=A(x,y)*c
Source kode:

Gambar 16 Source kode perkalian


Gambar 17 Operasi perkalian citra dengan scalar
2.2.4 Pembagian Citra
Perkalian citra A dengan scalar c akan menghasilkan citra baru B yang intensitasnya
lebih gelap dari semula, dengan penurunan nilai intensitas setiap pikselnya berbanding
terbalik dengan c. Perkalian citra dengan scalar ini bertujuan untuk normalisasi kecerahan.
Berikut persamaan perkalian citra de ngan scalar yang digunakan untuk kalibrasi kecerahan:
B(x,y)=A(x,y)/c
Source kode:

Gambar 18 Source kode pembagian citra

Gambar 19 Operasi pembagian citra dengan scalar


2.3 Operasi Bolean
2.3.1 Operasi AND
Tabel 1 Tabel kebenaran AND

A B A and B
0 0 0
0 1 0
1 0 0
1 1 1

Source kode

Gambar 20 Source kode AND

Gambar 21 Operasi logika AND pada citra

2.3.2 Operasi OR
Tabel 2 Tabel kebenaran OR

A B A or B
0 0 0
0 1 1
1 0 1
1 1 1
Source kode

Gambar 22 Source kode OR

Gambar 23 Hasil operasi logika OR

2.3.3 Operasi XOR


Tabel 3 Tabel kebenaran XOR

A B A xor B
0 0 0
0 1 1
1 0 1
1 1 0
Source kode
Gambar 24 Source kode XOR

Gambar 25 Hasil operasi XOR pada citra

2.4 Operasi geometri


2.4.1 Operasi Translasi
Rumus traslasi citra
x’-x=Tx
y’-y=Ty

Dimana Tx adalah besar pergeseran dalam arah x, sedangkan Ty adalah besar pergeseran
terhadap y. Operasi traslasi ini yang sering disebut operasi pergeseran koordinat pixcel suatu
citra.
Gambar 26 Source kode Operasi Translasi

Tx=20 merupakan besar pergeseran dari arah x yang bergeser sebesar 20 pixcel, Ty
merupakan besar pergeseran dari arah y yang bergeser sebesar 50 pixcel.
A=imread(‘cameraman.tif’) ,imread berfungsi untuk membuka image dari file
cameraman.tif yang kemudian disimpan pada variable A . [brs kol]=size A yang akan
membentu matrik dari gambar yang ada variable A yang mempunyai ukuran 255x255.
for x=1:brs mengandung perulangan 1:255 dan for y=1:kol yang mengandung
perulangan y=1:255. B(x+Tx,y+Ty)=A(x,y) dimana B sebagai parameter dengan
persamaan(x+Tx,y+Ty) atau (255+20,50+255)=(275,305) yang sama dengan A=(x,y)
dengan A(255,255) dan end end untuk mengahiri perulangan. Kemudian
B=B(1:brs,1:kol), figure,imshow(uint8(A)) yang berarti menampilkan wadah atau figura,
imshow(unit8(A)) yang berarti menmpilkan gambar yang berada pada variable A
begitupun juga figur,imshow(B)).

Gambar 27 Hasil operasi traslasi

2.4.2 Operasi Cropping


Rumus operasi cropping pada citra
w’=xR-xL
h’=yB-yT
Operasi cropping atau pemotongan dimana w’ merupakan lebar citra baru yang diperoleh
setelah proses crooping. Sedangkan h’ merupaka tinggi citra yang baru hasil cropping. xR
dan xL adalah dua titik di sebelah kanan dengan arah sumbu x, dan yB,yT merupakan dua
titik atas dan bawah pada arah sumbu y. Dari keempat titik inilah yang akan menjadi
koordinat untuk pemotongan.

Gambar 28 Source Kode Operasi Crooping

I=imread(‘cameraman.tif’) untuk membuka gambar yang bernama cameraman.tif


yang kemudian disimpan pada variable I. [brs kol]=size A, membuat matriks yang berasal
dari gambar yang disimpan pada variable I dengan ukuran 255x255 . x1=50 yaitu variable x1
dengan ukuran 50, begitupun x2=200, y1=50,y2=200 yang berukuran sesuai
persamaanya.I(1:x1)=0 sebagai titik potong dengan perbandingan 1:50 yang berarti
memotong titik sebanyak 50 pixsel pada sumbu x,I(x2;brs,:) berarti perbandingan 200:255
yang menghasilkan pemotongan sebesar 55 pada sumbu x2 begitupun denagn I(:,1:y1) dan
I(:,y2:kol)
Gambar 29 Hasil Operasi crooping

2.3.4 Operasi Flipping


Flipping atau yang lebih gampang disebut dengan pencerminan. Ada dua macam
flipping yaitu vertikal dan horisontal. Flipping vertikal merupakan pencerminan pada sumbu-
X dari citra A menjadi citra B, yang diberikan oleh:

X’=2xc-x
Y’=y

Gambar 30 Source kode operasi flipping vertikal

I=imread(‘cameraman.tif’) untuk membuka gambar yang bernama cameraman.tif


yang kemudian disimpan pada variable I. [brs kol]=size A, membuat matriks yang berasal
dari gambar yang disimpan pada variable I dengan ukuran 255x255. Jrepmat90,brs,kol) yang
berarti J sebagai variable yang menampung baris dan kolom. Miror=floor(kol/2) untuk
mencerminkan dengan dengan arah ke bawah . for x=1;brs -1 yaitu perulangan 1;255-1, for
y=1;brs -1 yaitu perulangan 1;255-1, end end untuk mengakhiri for. J(x,y)=I((2*mirror)-x,y ,
J sebagai variable yang memproses operasi mirror, end end untuk mengakhiri perulangan
atau for. figure,imshow(uint8(J)),figure sebagai penampil bingkai yang menjadi wdah,
imshowuint8((J)) untuk menampilkan hasil operasi mirror yang tersimpan pada variable J.

Gambar 31 Hasil operasi Flipping vertikal

Operasi flipping horisontal merupakan pencerminanan pada sumbu –Y dari citra A


menjadi citra B, yang diberkan oleh:
x’=x
y’=2yc-y

Gambar 32 Source kode Operasi Flipping Horisontal

Untuk kodeng yang digunakan hampir sama dengan operasi flipping vertikal perbedaanya
pada pencerminan yang dilakukan pada flipping horisontal ini pencerminan pada sumbu Y,
terlihat pada J(x,y)=I(x,(2*mirror)-y).
2.4.4 Operasi Rotasi Pada Citra
Rumus rotasi pada citra
x’=Xp+(x-Xp)*cos0-(y-Yp)*sin)
x’=Xp+(x-Xp)*sin0-(y-Yp)*cos)

Gambar 33 Source Kode Operasi rotasi.m

Source kode tersebut simpanlah semisal dengan nama rotasi.m, kemudian buat m-file lagi
dengan nama rotasi_penguji.m untuk menyimpan kode di bawah ini

Gambar 34 Source Kode rotasi_penguji

Pada source kode rotasi.m function J=rotasi(I,T) yang berarti J menyimpan parameter
rotasi dari I,T I bergunan untuk membuka gambar yang tersimpan pada variable I kemudian
T sebagai besarnya rotasi yang dalssam hal ini 40. Pada source kode operasi_rotasi.m clear
all berfungsi untuk menghapus perintah dan juga operasi operasi yang berlangsung
sedangkan clc untuk menghapus command command di layarnya saja. T=45 sebagai besar
rotasi atas gambar, I=imread(‘cameraman.tif’) untuk membuka gambar cameraman.tif .
J=rotasi(I,T) sebagai parameter untuk merotasikan gambar.
Imshow(uint8(J)),’initialmagnification’,’fit’) perintah untuk membukagambar yang sudah
dirotasikan.

Gambar 35 Hasil Operasi Rotasi pada Citra

2.4.5 Operasi Scalling


Scalling pada citra juga disebut dengan pengubahan ukuran citra, rumus
pengskalaanya:
x’=ShX*x
y’=ShY*y
ShX merupakan faktor skala dalam arah x, ShY merupakan faktor skala dalam arah y pada
koordinat citra.

Gambar 36 Source kode perbesar.m

Source kode diatas disimpan dengan nama perbesar.m kemudian buat m-file lagi dengan
nama perbesaran2.m dengan mengetikkan source kode dibawah ini
Gambar 37 Source kode perbesar2.m

Gambar 38 Hasil Operasi Perbesar pada Citra

Pada file perbesar.m function J=perbesar(1,ShX,ShY) sebagai parameter fungsi perbesar


dengan skala koordinat citra pada arah x dan arah y
2.5 Konvolusi
Konvolusi merupakan operasi yang mendasar dalam pengolahan citra. Konvolusi dua
buah fungsi f(x) dan g(x) didefinisikan sebagai berikut :

Yang dalam hal ini, tanda * menyatakan operator konvolusi, dan perubah (variabel) a adalah
peubah bantu. Untuk fungsi diskrit, konvolusi didefinisikan sebagai :
Pada operasi konvolusi di atas, g(x) disebut kernel konvolusi atau kernel penapis (filter).
Kernel g(x) merupakan suatu jendela yang dioperasikan secara bergeser pada sinyal masukan
f(x), yang dalam hal ini, jumlah perkalian kedua fungsi pada setiap titik merupakan hasil
konvolusi yang dinyatakan dengan keluaran h(x).
Untuk fungsi dua peubah (fungsi dua dimensi atau dwimatra), operasi konvolusi didefinisikan
sebagai berikut :
a) Untuk fungsi malar

b) Untuk fungsi diskrit

Fungsi penapis g(x,y) disebut juga convolution filter, convolution mask, convolution
kernel, atau template. Di dalam MATLAB, filter linear diimplementasikan melalui konvolusi
dua dimensi. Dalam konvolusi, nilai dari sebuah piksel keluaran dihitung dengan mengalikan
elemen-elemen pada dua buah matriks dan menjumlahkan hasilnya. Satu dari matriks tersebut
merepresentasikan citra, sementara matriks yang lainnya adalah filter-nya.
2.5.1 Algoritma
Algoritma Ukuran matriks kernel biasanya lebih kecil dari ukuran matriks citra.
Sebagai contoh misalkan terdapat sebuah matriks citra I dan sebuah kernel k sebagai berikut :

Algoritma atau langkah-langkah untuk melakukan konvolusi terhadap matriks I adalah


sebagai berikut :
1. Memutar convolution kernel 180 derajat untuk menghasilkan sebuah computational
molecule

2. Menentukan piksel tengah dari computational molecule. Untuk menggunakan


computational molecule, kita pertama-tama harus menentukan piksel tengah. Piksel
tengah didefinisikan sebagai floor((size(h)+1)/2). Sebagai contoh dalam sebuah
molekul berukuran 2×3, maka piksel tengah adalah (1, 2)
3. Menerapkan computational molecule pada setiap piksel citra masukan. Nilai dari
piksel yang ditentukan dalam matriks keluaran B dihitung dengan menerapkan
computational molecule h dengan piksel yang berkorespondensi pada matriks I. Kita
dapat menggambarkan hal ini dengan menumpuk h pada I, dengan piksel tengah h
menimpa piksel yang akan dihitung pada I. Kemudian kita mengalikan setiap elemen
dari h dengan piksel pada I dan kemudian menjumlahkan hasilnya

Sebagai contoh kita akan menentukan nilai dari elemen piksel (3,5) pada matriks B,
dengan cara menimpa h pada matriks I dengan piksel tengah dari h menutupi elemen piksel
(3,5) dari matriks I. Piksel tengah diberi tanda lingkaran pada gambar. Terlihat ada enam
piksel yang tertutupi oleh h, untuk setiap piksel-piksel ini, kalikan nilai dari piksel tersebut
dengan nilai pada h. Jumlahkan hasilnya, lalu letakkan penjumlahan ini pada B(3,5).
B(3,5)=2*2 + 3*6 + 3*4 + 3*1 + 2*-3 + 0*4 =31 Lakukan hal tersebut diatas untuk setiap
piksel pada matriks I untuk menghasilkan setiap piksel yang berkorespondensi pada matriks
B
2.5.2 Proses Padding pada Batas Citra
Ketika kita menerapkan filter pada piksel-piksel yang berada pada pinggir sebuah
citra, beberapa elemen dari computational molecule tidak dapat menimpa piksel citra.
Sebagai contoh jika molekul berukuran 3×3 dan kita sedang menghitung untuk piksel pada
ujung kiri atas dari citra, beberapa elemen pada molekul berada diluar batas citra, seperti
terlihat pada gambar 1.2 berikut ini.

Untuk menghitung kondisi seperti di atas, proses konvolusi menerapkan suatu metode
yang disebut dengan zero padding. Zero padding mengasumsikan bahwa piksel-piksel yang
tidak dapat tertimpa oleh computational molecule bernilai nol.
Contoh perintah untuk melakukan konvolusi terhadap matriks I yang berukuran 5×5 dan
kernel yang berukuran 3×3 adalah sebagai berikut. Simpan source kode dibawah ini dengan
nama convlove.m

Gambar 39 Source code convlove.m

Function B=convlove(A,k) berfungsi sebagai fugsi yang dapat dipanggil untuk nanti
pemrosesan citra. [r c]=size(A),[m n]=size(k) yaitu membuat matriks untuk wadah pada
pixsel A dan k. h=rot90(k,2) merupakan besarnya rotasi untuk k. center=floor((size(h)+1/2)
untuk menentukan titik tengah dari k. left=center(2)-1 untuk menentukan titik kiri dengan
mengalikan titik tengah dan dikurangi 1. right=n-center(2) utuk menentukan titik kanan.
Top=center(1)-1 menentukan titik atas. Bottom=m-center(1) menentkan titik bawah.
Rep=zeros(r+top+bottom,c+left+right) Rep sebagai wadah untuk penjumlahan
zeros(r+top+bottom,c+left+right). for x=1+top : r+top perulangan dengan besar x=1+top
sebanding dengan r+top begitupun for y=1+left : c+left. Rep (x,y)=A(x-top,y-left) Rep
membuat titik dimana titik tersebut sama dengan matriks A dengan syarat x-top, y-left. End
end untuk mengakhiri perulangan x dan y tadi. B=zeros(r,c) B sebagai wadah titik r dan c. for
x=1:r,for y=1:c, for i=1:m, for j=1:n merupakan perulangan yang mempunyai perbandingan
berurutan r,c,m,n. q=x-1 titik q nilainya q=x-1 begitupun w=y-1.
B(x,y)=B(x,y)+(Rep(i+q,j+w)*h(i,j)) merupakan rumus dari konvolusi. end end end end
untuk mengakhiri perulangan. Untuk melihat hasilnya maka ketik dan simpan dulu sourcode
berikut

Gambar 40 Sour code convlove2.m

Dengan kita mendefinisikan I dan k, dimana I sebagai matriks ukuran 5x5 dan k sebagai
konvolusi. Kemudan panggil hasil dari konvolusi dengan megetikkan Hsl karena Hsl ini
menyimpan penjumlahan konvolusi dari I dan k

Gambar 41 Hasil dari perkalian I dan k atau matriks 5x5 kali matriks 3x3

Untuk menentukan gambar yang mana yang akan dikenai proses konvolusi maka ketikkan
source kode dibawah ini dan simpan dengan nana convlove3.m
Gambar 42 convolve.m

Clear;clc untuk membersihkan layar dan perintah-perintah yang tadi sudah ada.
I=imread(‘cameraman.tif’) untuk memanggil gambar cameraman sedangkan untuk
memproses gambar tersebut(cameraman) degan memanggil Hsl =convulve(I,k) karena di
dalam variable Hsl tersebut tersimpan proses dari I,k. imshow(I) untuk menampilkan gambar
yang disimpan pada variable I yaitu gambar cameraman . figure,imshow(uint8(Hsl)) figure
untuk membuat wadah atau bingkai untuk gambar, imshow(uint8(Hsl)) untuk menampilkan
gambar yang sudah di proses atau sudah di kenai oprasi convolve.

Gambar 43 Hasil dari operasi convolve dengan matriks 5x5 dan kernel 3x3

2.6 Segmentasi Citra


2.6.1 Operasi Pengambangan
Operasi pengambangan (thresholding) adalah operasi memetakan nilai intensitas
piksel ke salah satu dari dua nilai, a1 atau a2, berdasarkan nilai ambang (threshold) T
Gambar 44 Source code pengembangan

F=imread(‘cameraman.tif’) untuk membaca gambar yag disimpan pada variale F. [r


c]=size(F) membuat matriks untuk gambar yang disimpan pada variable F. T=128 merupakan
tresholding atau pengembangan. for x=1:r perulangan dengan nilai x sama dengan 1 banding
r yaitu 255 begitupun for y=1:c sama. if F(x,y) >=T pernyataan jika gambar pda vaiable F
lebih dari at sama dengan 128 maka akan disimpan di variable G dengan nilai 255. Else jika
pernyataan if tersebut tidak terpenuhi maka akan disimpan pada variable G dengan nilai O.
end end untuk mengakhiri perulangan. Hasil yang di dapat berupa gambar yang mempnyai
derajat keabuan contrast.

Gambar 45 Hasil Operasi Pengembangan

BAB III
FILTER SPASIAL
Pentapisan pada pengolahan citra biasa disebut dengan pentapisan spasial (spasial
filtering). Pada proses pentapisan, nilai piksel baru umumnya dihitung berdasarkan piksel
tetangga (neighborhood). Proses-proses yang termasuk ke dalam filter spasial citra adalah
pelembutan citra (image smoothing) dan penajaman citra (image sharphening). 3.1
Pelembutan Citra (Image Smoothing) Pelembutan citra bertujuan untuk menekan gangguan
(noise) pada citra. Gangguan tersebut biasanya muncul sebagai akibat dari hasil penerokan
yang tidak bagus. Gangguan pada citra umumnya berupa variasi intensitas suatu piksel yang
tidak berkorelasi dengan piksel-piksel tetangganya. Secara visual, gangguan mudah dilihat
oleh mata karena tampak berbeda dengan piksel tetangganya. Piksel yang mengalami
gangguan umumnya memiliki frekuensi tinggi. Komponen citra yang berfrekuensi rendah
umumnya mempunyai nilai piksel konstan atau berubah sangat lambat. Operasi pelembutan
citra dilakukan untuk menekan komponen berfrekuensi tinggi dan meloloskan komponen
berfrekuensi rendah.

Gambar 46 Citra yang mengalami gangguan (noise)

3.2 Filter Linier (Low Pass Filter)


Pada prinsipnya, filter yang digunakan dalam filter linear adalah neighborhood
averaging merupakan salah satu jenis low-pass filter, yang bekerja dengan cara mengganti
nilai suatu piksel pada citra asal dengan nilai rata-rata dari piksel tersebut dan lingkungan
tetangganya. Penapis rata-rata adalah salah satu penapis lolos rendah yang paling sederhana.
Aturan untuk penapis lolos rendah adalah : Semua koefisien penapis harus positif
Jumlah semua koefisian harus sama dengan satu Berikut beberapa penapis rata-rata, yaitu
penapis lolos rendah yang sering digunakan pada operasi pelembutan.
Berikut source code neighborhood averaging untuk matriks 3x3

Gambar 47 Source code neighboard averaging

Clear;clc untk menghapus perintah juga tulisan yang ada di coomand window.
A=imead(‘eight.tif’) membaca gambar yang disimpan pada variable A.
A=imnoise(A,’salt&pepper’,0.01) A sebagai variable untuk menyimpan gambar yang akan
di kenai operasi pelembutan dengan melibatkan jendela ketentanggan .[r c]=size (A) untuk
membuat matriks yang digunakan untuk gambar yang disimpan pada variable A. [m
n]=size(k) untuk membuat matriks yang digunakan untuk gambar yang disimpan pada
variable k. h=rot90(k,2) merupakan besarnya rotasi untuk k. center=floor((size(h)+1/2) untuk
menentukan titik tengah dari k. . left=center(2)-1 untuk menentukan titik kiri dengan
mengalikan titik tengah dan dikurangi 1. right=n-center(2) utuk menentukan titik kanan.
Top=center(1)-1 menentukan titik atas. Bottom=m-center(1) menentkan titik bawah.
Rep=zeros(r+top+bottom,c+left+right) Rep sebagai wadah untuk penjumlahan
zeros(r+top+bottom,c+left+right). for x=1+top : r+top perulangan dengan besar x=1+top
sebanding dengan r+top begitupun for y=1+left : c+left. Rep (x,y)=A(x-top,y-left) Rep
membuat titik dimana titik tersebut sama dengan matriks A dengan syarat x-top, y-left. End
end untuk mengakhiri perulangan x dan y tadi. B=zeros(r,c) B sebagai wadah titik r dan c. for
x=1:r,for y=1:c, for i=1:m, for j=1:n merupakan perulangan yang mempunyai perbandingan
berurutan r,c,m,n. q=x-1 titik q nilainya q=x-1 begitupun w=y-1.
B(x,y)=B(x,y)+(Rep(i+q,j+w)*h(i,j)) merupakan rumus dari konvolusi. end end end end
figure, imshow(A) figure untuk membuat wadah atau figura utuk gambar yang disimpan pada
variable A. Figure,imshow(uint8(B)) figure untuk membuat wadah atau figura utuk gambar
yang disimpan pada variable B. Citra atau gambar yang dihasilkan terlihat intik bitik hitam
yang tadinya terlihat jelas terlihat lebih lembut warnanya dengan dikenai filter spasial.

Gambar 48 Hasil pelembutan dengan ukuran citra 3x3

3.3 Filter Linier (High Pass Filter)


3.31 Penajaman Citra (Image Sharpening)
Inti dari penajaman (sharpening) citra adalah memperjelas tepi pada objek di dalam
citra. Penajaman citra merupakan kebalikan dari operasi pelembutan citra karena operasi ini
menghilangkan bagian citra yang lembut. Metode atau filtering yang digunakan adalah high-
pass filtering. Operasi penajaman dilakukan dengan melewatkan citra pada penapis lolos
tinggi (high-pass filter). Penapis lolos tinggi akan meloloskan (atau memperkuat) komponen
yang berfrekuensi tinggi (misalnya tepi atau pinggiran objek) dan akan menurunkan
komponen berfrekuensi rendah. Akibatnya, pinggiran objek terlihat lebih tajam dibandingkan
sekitarnya. Karena penajaman citra lebih berpengaruh pada tepi (edge) objek, maka
penajaman citra sering disebut juga penajaman tepi (edge sharpening) atau peningkatan
kualitas tepi (edge enhancement). Penapis pada operasi penajaman citra disebut penapis lolos
tinggi. Aturan dari penapis lolos tinggi adalah sebagai berikut: Koefisien boleh positif,
negatif, atau nol Jumlah semua koefisien adalah satu Berikut contoh-contoh penapis lolos
tinggi yang sering digunakan dalam penajaman citra :
Source code penajaman

Gambar 49 Source code penajaman

Clear;clc untk menghapus perintah juga tulisan yang ada di comand window.
A=imead(‘cameraman.tif’) membaca gambar yang disimpan pada variable A. Hpf=[-1 -1 -1;
-1 9 -1; -1 -1 -1] hpf sebagai wadah matriks dengan ukuran 3x3. [r c]=size(I) membuat
matriks untuk citra yang disimpan pada variable I. [m c]=size(hpf) membuat matriks untuk
citra yang disimpan pada variable Hpf. h=rot90(k,2) merupakan besarnya rotasi untuk k.
center=floor((size(h)+1/2) untuk menentukan titik tengah dari k. . left=center(2)-1 untuk
menentukan titik kiri dengan mengalikan titik tengah dan dikurangi 1. right=n-center(2) utuk
menentukan titik kanan. Top=center(1)-1 menentukan titik atas. Bottom=m-center(1)
menentkan titik bawah. Rep=zeros(r+top+bottom,c+left+right) Rep sebagai wadah untuk
penjumlahan zeros(r+top+bottom,c+left+right). for x=1+top:r+top merupakan perulangan
dengan perbandingan 1+top:r+top dan begitupula pada perulangan for y=1+left:c+left.
Rep(x,y)=I(x-top,y-left) Rep (x,y) sebagai variable untuk menyimpan proses I(x-top,y-left)
end end untuk mengakhiri perulangan pada variable x dan y. B=zeros(r,c) B sebagai wadah
titik r dan c. for x=1:r,for y=1:c, for i=1:m, for j=1:n merupakan perulangan yang mempunyai
perbandingan berurutan r,c,m,n. q=x-1 titik q nilainya q=x-1 begitupun w=y-1.
B(x,y)=B(x,y)+(Rep(i+q,j+w)*h(i,j)) merupakan rumus dari konvolusi. end end end end
figure, imshow(A) figure untuk membuat wadah atau figura utuk gambar yang disimpan pada
variable A. Figure,imshow(uint8(B)) figure untuk membuat wadah atau figura utuk gambar
yang disimpan pada variable B. Hasil gambar atau citra erlihat lebih tajam dai pada cirta yang
sebelumnya dikarenakan telah terkenai penajaman citra.

Gambar 50 Hasil citra yang sudah terkenai penajamian citra

3.4 Filter Non-Linier


3.4.1 Filter Median
Filter median sangat bermanfaat untuk menghilangkan outliers, yaitu nilai-nilai piksel
yang ekstrim. Filter median menggunakan sliding neighborhood untuk memproses suatu
citra, yaitu suatu operasi dimana filter ini akan menentukan nilai masing-masing piksel
keluaran dengan memeriksa tetangga m×n di sekitar piksel masukan yang bersangkutan.
Filter median mengatur nilai-nilai piksel dalam satu tetangga dan memilih nilai tengah atau
median sebagai hasil. Median filter merupakan salah satu jenis low-pass filter, yang bekerja
dengan mengganti nilai suatu piksel pada citra asal dengan nilai median dari piksel tersebut
dan lingkungan tetangganya. Dibandingkan dengan neighborhood averaging, filter ini lebih
tidak sensitif terhadap perbedaan intensitas yang ekstrim. Pada penapis median, suatu
‘jendela’ (window) memuat sejumlah piksel. Jendela digeser titik demi titik pada seluruh
daerah citra. Pada setiap pergeseran dibuat jendela baru. Titik tengah dari jendela ini diubah
dengan nilai median dari jendela tersebut.
Sebagai contoh, tinjau jendela berupa kelompok piksel (daerah berwarna biru cerah) pada
sebuah citra pada gambar di atas. Piksel yang sedang diproses adalah yang mempunyai
intensitas 35. 10 10 10 11 35 10 9 12 10 Urutkan piksel-piksel tersebut: 9 10 10 10 10 10 11
12 35
Median dari kelompok tersebut adalah 10 (dicetak tebal). Titik tengah dari jendela (35)
sekarang diganti dengan nilai median (10). Hasil dari penapis median diperlihatkan pada
gambar di bawah ini. Jadi, penapis median menghilangkan nilai piksel yang sangat berbeda
dengan piksel tetangganya.

Source code untuk melakukan median filtering terhadap citra yang terkena gangguan dengan
kernel berukuran 3×3
Gambar 51 Source code median filtering

Clear;clc untk menghapus perintah juga tulisan yang ada di comand window.
I=imread(‘eight.tif’) membaca gambar yang disimpan pada variable I.
I=imnoise(I,’salt&pepper’,001) imnoise berarti membaca gambar yang mengalami derau
kemudia disimpan pada variable I. [r c]=size(I) berarti membuat matriks sebagai wadah
variable I. Rep = zeros(r + 2, c + 2) variable Rep sebagai wadah dari zeros(r+2,c+2). for x = 2 : r
+ 1 perulangan dari x dimana besar x sama dengan 2:r+1 begutupula perulangan pada for y = 2 :
c + 1. Rep(x,y) = I(x - 1, y - 1) Rep mempunyai baris x dan kolom y dengan persamaan=I(x-1,y-
1). end end untuk mengakhiri perulangan. B = zeros(r, c) B sebagai variable antara r dan c. for x
= 1 : r perulangan dimana nilai x sama dengan 1:r dan for y = 1 : c yang mempunyai nilai
perbandingan 1:c. for i = 1 : 3 perulangan i yang nilainya 1:c. for j = 1 : 3 perulangan j dimana
nilainya 1:3. q = x – 1 nilai variable q=x-1. w = y -1 nilai variable w =y-1. array((i - 1) * 3 + j) =
Rep(i + q, j + w) dimana array ((i - 1) * 3 + j) sama dengan nlainya dengan Rep(i + q, j + w). end
end untuk mengakhiri perulangan i dan j. B(x, y) = median(array(:)) variable B(x,y) ini
menyiman pemrosesan dengan median aray. end end untuk mengahiri perulangan. figure,
imshow(I) figure untuk menampilkan wadah atau figura, imshow(I) untuk menampilkan gambar
atau citra yang tersimpan pada variable I. figure, imshow(uint8(B)) sama seperti figur yang
diatas, imshow(uint8(B)) dimana untuk menampilkan gambar atau citra yang telah di proses dan
di sipan di dalam variable B. Hasil dari pemrosesan ini sudah tidak ada ladi derau(noise) yang ada
pada gambar.
Gambar 52 Hasil gambar yang telah dikenai filter median

BAB IV
PENDETEKSIAN TEPI (EDGE DETECTION)
Tepi adalah perubahan intensitas derajat keabuan yang mendadak (besar) dalam jarak
yang singkat. Perbedaan intensitas inilah yang menampakkan rincian pada gambar. Tepi
biasanya terdapat pada batas antara dua daerah berbeda pada suatu citra. Tujuan operasi
pendeteksian tepi adalah untuk meningkatkan penampakan garis batas suatu daerah atau
objek di dalam citra. Karena tepi termasuk komponen berfrekuensi tinggi, maka pendeteksian
tepi dapat dilakukan dengan penapis lolos tinggi. Sebenarnya ada beberapa teknik untuk
medeteksi tepi. Teknik untuk mendeteksi tepi yaitu :
1. Operator gradien pertama
2. Operator turunan kedua
3. Operator kompas
4.1 Operator Gradien Pertama
1. Operator Robert
Operator Robert adalah nama lain dari teknik differensial yang sedang dikembangkan,
yaitu differensial pada arah horisontal dan differensial pada arah vertikal, dengan
ditambahkan proses konversi biner setelah dilakukan differensial. Teknik konversi biner yang
disarankan adalah konversi biner dengan meratakan distribusi warna hitam dan putih.
Operator Robert ini juga disamakan dengan teknik DPCM (Differential Pulse Code
Modulation). Operator Robert Cross merupakan salah satu operator yang menggunakan
jendela matrik 2x2, operator ini melakukan perhitungan dengan mengambil arah diagonal
untuk melakukan perhitungan nilai gradiennya.
2. Operator Prewitt
Metode Prewitt merupakan pengembangan metode robert dengan menggunakan filter
HPF yang diberi satu angka nol penyangga. Metode ini mengambil prinsip dari fungsi laplacian
yang dikenal sebagai fungsi untuk membangkitkan HPF.
3. Operator Sobel
Metode Sobel merupakan pengembangan metode robert dengan menggunakan filter HPF
yang diberi satu angka nol penyangga. Metode ini mengambil prinsip dari fungsi laplacian dan
gaussian yang dikenal sebagai fungsi untuk membangkitkan HPF. Kelebihan dari metode sobel
ini adalah kemampuan untuk mengurangi noise sebelum melakukan perhitungan deteksi tepi.
Source code pendeteksian tepi dengan operator gradien. Simpan sorce code dibawah ini
misalnya dengan nama pendeteksian_tepi.m
Gambar 53 Sourcode pendeteksian_tepi.m

function J=edge_detection(I,Thres) fungsi untuk menyimpan proses pendeteksian tepi. Gx=[-


1 1] merupakan aris arah x dengan matriks [-1 1] begitupula Gy=[-1 1] garis arah y dengan
matriks [-1 1]. Gradien_x=convlove(I,Gx) gradien garis arah x dengan operasi convolve.
Gradien_y = convolve(I, Gy) gradien arah y dengan operasi covolve. Magnitudo =
sqrt((Gradien_x.^2) + (Gradien_y.^2))magitudo dengan persamaan pangat dari gradien_x*2
dan gradien_y*2. %Arah_Gradien = atan(Gradien_y./Gradien_x) arah gradien dengan
persamaan gradien arah y dibagi gradien arah x. J = thresholding(Magnitudo, Thres) J
sebagai variable yang menyimpan tresholding. Function B=convolve(A,k) merupakan fungsi
untuk menyimpan proses proses convolve citra A dengan convolve k. [r c] = size(A)membuat
matriks untuk citra atau gambar A, [m n] = size(k) matriks untuk konvolve. h = rot90(k, 2)
dimana perputaranya atau rotasinya pada konvolve sebanyak 90. center =
floor((size(h)+1)/2) konvolve tersebut diambil dari arah tengah . left = center(2) – 1 dengan
tepi kiri dengan persamaan center(2) – 1. right = n - center(2) tepi kanan dengan persamaan n
- center(2) . top = center(1) – 1 tepi atas dengan persamaan center(1) – 1 . bottom = m -
center(1) tepi bawah dengan persamaan m - center(1). Rep = zeros(r + top + bottom, c + left
+ right) Rep zeros sebagai variale yang memproses. for x = 1 + top : r + top perulangan pada
variable y dengan perbandingan 1+top :r+top, begitupula perulangan pada variable y for y = 1
+ left : c + left Rep(x,y) = A(x - top, y – left). end end untuk mengakhiri perulangan pada x
dan y. B = zeros(r , c) B sebagai variable zeros titik (x,y). for x = 1 : r perulangan dimana x
bernilai 1 yang sebanding dengan r.begitupula perulangan for y = 1 : c for i = 1 : m for j = 1 :
n yang mempunyai perbandingan tersendir. q = x -| 1 variable q dengan persamaan x -| 1 dan
w = y -1 yang mempunyai persamaan y -1 . B(x, y) = B(x, y) + (Rep(i + q, j + w) * h(i, j))
B(x,y) yang mempuyai persamaan B(x, y) + (Rep(i + q, j + w) * h(i, j)). end end end end
untuk mengahiri perullangan r,c,m,n. function Hasil = thresholding(Array, T) fungsi yang
digunakan untuk menyimpan hasil tresholding. row = size(Array, 1) baris dengan array col
= size(Array, 2) kolom dengan array. Hasil = zeros(row, col) Hasil menyimpan baris dan
kolom. for x = 1 : row perulangan x yang mempunyai nilai 1 dengan perbandingan baris for
y = 1 : col perulangan y yang mempunyai nilai 1 dengan perbandingan kolom. if Array(x, y)
>= T pernyataan jika aray(x,y) lebih dari atau samadengan T(tresholding) maka hasilnya
Hasil(x, y) = 1 kalau peryataan tidak terpenuhi maka masuk ke else Hasil(x, y) = 0 atau
hasilnya 0. end end end untuk mengaakhiri perulangan. Kemudian ketikkan dan simpan
source code untukm melakukan deteksi tepi dibawah ini misalnya dengan nama
pendeteksian_tepi2.m

Gambar 54 Source code pendeteksian_tepi2.m

clear;clc untuk menghapus perintah dan juga tulisan di command window. I =


imread('cameraman.tif') I sebagai variable untuk membaca gambar atau cira cameraman.tif.
Hsl = edge_detection(im2double(I), 0.25) memanggil fungsi pendeteksian tepi yang sudah
dibuat . imshow(I) menampilan gambar pada vriable I. figure, imshow(im2uint8(Hsl)) figure
untuk menampilkan figura atau wadah , imshow(im2uint8(Hsl)) untuk menampilkan gambar
atau citra yang sudah di proses pendeteksian tepi. Hasil dari pemrosesan terlihat citra yang
hanya tepinya saja yang terlihat
Gambar 55 Hasil pendeteksian sisi dengan nilai treshold 0.25

BAB V
PEMAMPATAN CITRA
Pemampatan atau kompresi citra merupakan suatu teknik untuk mengkodekan piksel-
piksel di dalam citra sehingga diperoleh representasi memori yang minimal. Kebanyakan
citra mengandung duplikasi data. Duplikasi data pada citra berarti dua hal. Pertama, besar
kemungkinan suatu piksel dengan piksel tetangganya memiliki intensitas yang sama,
sehingga penyimpanan setiap piksel memboroskan tempat. Kedua, citra banyak mengandung
bagian (region) yang sama, sehingga bagian yang sama ini tidak perlu dikodekan berulang
kali. Pemampatan citra bertujuan untuk meminimalkan kebutuhan memori untuk
merepresentasikan citra digital. Prinsip umum yang digunakan pada proses pemampatan citra
adalah mengurangi duplikasi data di dalam citra sehingga memori yang dibutuhkan untuk
merepresentasikan citra menjadi lebih sedikit daripada representasi citra semula. Ada
beberapa metode dasar kompresi, diantaranya:
1. Metode Huffman
2. Metode RLE (Run Length Encoding)
3. Metode Aritmatik
4. Metode KUantisasi 5. Metode LZW
6. Pendekatan Fraktal
5.1 Metode Run-Length Encoding
Metode RLE cocok digunakan untuk memampatkan citra yang memiliki kelompok-
kelompok piksel yang berderajat keabuan yang sama. Pemampatan citra dengan metode RLE
dilakukan dengan membuat rangkaian pasangan nilai (p,q) untuk setiap baris piksel, nilai
pertama (p) menyatakan derajat keabuan, sedangkan nilai kedua (q) menyatakan jumlah
piksel berurutan yang memiliki derajat keabuan tersebut (dinamakan run length). Contoh
berikut akan menunjukkan citra yang akan ditinjau 10x10 piksel dengan 8 derajat keabuan
yang dinyatakan sebagai matriks derajat keabuan sebagai berikut :
0 0 0 0 0 2 2 2 2 2
0 0 0 1 1 1 1 2 2 2
1 1 1 1 1 1 1 1 1 1
4 4 4 4 3 3 3 3 2 2
3 3 3 5 5 7 7 7 7 6
2 2 6 0 0 0 0 1 1 0
3 3 4 4 3 2 2 2 1 1
0 0 0 0 0 0 0 0 1 1
1 1 1 1 0 0 0 2 2 2
3 3 3 2 2 2 1 1 1 1
Semuanya ada 100 buah nilai. Pasangan nilai untuk setiap baris run yang dihasilkan
dengan metode pemampatan
RLE: (0,5),(2,5)
(0,3),(1,4),(2,3)
(1,10)
(4,4),(3,4),(2,2)
(3,3),(5,2),(7,4),(6,1)
(2,2),(6,1),(0,4),(1,2),(0,1)
(3,2),(4,2),(3,1),(2,2),(1,2)
(0,8),(1,2) (1,4),(0,3),(2,3)
(3,3),(2,3),(1,4)
Hasil Pengkodean: 0 5 2 5 0 3 1 4 2 3 1 10 4 4 3 4 2 2 3 3 5 2 7 4 6 1 2 2 6 1 0 4 1 2 0 1 3 2 4
23122120812140323332314
Semuanya = 64 piksel Ukuran citra sebelum dikompres = 10 x 10 x 3 bit = 300 bit Ukuran
citra setelah dikompres = 64 x 3 bit = 192 bit
Source code untuk kompresi :

Gambar 56 RLE_encode.m

Simpan source kode diatas dengan nama RLE_Encode.m


Function rle=RLE_Encode(I) untuk menyimpan fungsi encode yang nantinya dapat
dipanggil. [row, col]=size(I) membuat matriks untuk gambar dengan besar atau pixselnya
seperti pada I. rle(1) = I(1, 1)

Kemudian buat m file lagi dengan nama encode2.m


Gambar 57 Encode2.m

Setelah program /perintah encode2.m dijalankan , maka pada command windows matlab akan
muncul hasil seperti berikut :

Gambar 58 Hasil pixsel pemampatan citra dengan metode Run Length Encoding

Berikutnya kita akan lanjutkan dengan membuat source code untuk dekomprosi,
dengan cara cara klik file pilih New kemudian Script, lalu kita ketikkan perintah di bawah ini
, dan kemudian disimpan dengan nama RLE_Decode.m.

Gambar 59 RLE_Encode.m

Setelah itu buat new script lagi, dan ketikkan perintah dibawah ini, dan kemudian disimpan
dengan nama decode2.m setelah itu di run.
Gambar 60 Decode.m

5.2 Aplikasi Kompresi RLE Data String

1. Dalam pembuatan aplikasi kompresi dengan cara mengetikkan guide pada command
window matlab setelah itu, susun uicontrol menjadi seperti berikut :
Gambar 61 uicontrol untuk Kompresi RLE Data String

Setelah itu pada panel Encoding klik kanan tombol / push button Reset lalu view callbackv
callback pilih kemudian isikan atau ketik kan perintah seperti berikut :

Gambar 62 Menambah perintah pada pushbutton1 (Reset)

Seperti untuk menambah perintah pada pushbutton1, pada tombol Encoding klik kanan view
callback pilih callback kemudian isikan atau ketikkan perintah seperti berikut :
Gambar 63 Menambah perintah pada pushbutton2 (Encoding)

Setelah selesai menambahkan pada coding pada tiap pushbutton tersebut kemudian coba
encoding nya lakukan seperti berikut :

Gambar 64 Hasil percobaan Encoding

Lalu pada panel Decoding klik kanan tombol / push button Reset lalu view callback pilih
callback kemudian isikan perintah seperti berikut :

Gambar 65 Menambahan perintah pada pushbutton3 (reset)

Selanjutnya pada tombol Decoding , di klik kanan view callback pilih callback kemudian
isikan atau ketikkan perintah seperti berikut :
Gambar 66 Menambah perintah pada pushbutton4 (Encoding)

Kemudian kita coba decodingnya

Gambar 67 Hasil percobaan Decoding


2. BAB VI

2. WATERMARK CITRA

Salah satu cara untuk melindungi hak cipta multimedia adalah dengan
menyisipikan informasi ke dalam data multimedia tersebut dengan teknik wa
termarking. Informasi yang disisipkan ke dalam data multimedia disebut watermark, dan
watermark dapat dianggap sebagai sidik digital (digital signature) dari pemilik yang sah atas
produk multimedia tersebut. Dengan kata lain, watermark yang disisipkan menjadi labe l hak
cipta dari pemiliknya. Pemberian signature dengan teknik watermarking ini dilakukan
sedemikian sehingga informasi yang disisipkan tidak merusak data digital yang
dilindungi. Sehingga, seseorang yangmembuka produk multimedia yang sudah disisipi wa
termarktidak menyadari kalau di dalam data multimedia tersebut terkandung label
kepemilikan pembuatnya.
Jika ada orang lain yang mengklaim bahwa produk multimedia yang didapatkan
adalah miliknya, maka pemegang hak cipta atas karya multimedia tersebut dapat
membantahnya dengan mengektrasi watermark dari dalam data multimedia yang
disengketakan. Watermark yang diekstrasi dibandingkan dengan watermark pemegang hak
cipta. Jika sama, berarti memang dialah pemegang hak cipta produk multimedia tersebut.
6.1 TeknikPenyembunyian Data

Penyembunyian data dilakukan dengan mengganti bit-bit data di dalam segmen


citra dengan bit-bit rahasia. Hingga saat ini, metode yang paling sederhana adalah
metode modifikasiLSB (LeastSignificant Bit Modification). Pada susunan bit di dalam
sebuah byte (1 by te= 8 bit), ada :

Bit yang paling berarti (Most Significant Bitatau MSB) dan


Bit yang paling kurang berarti (Least Significant Bit atau LSB)
Misalnya pada byte 11010010, bit 1 yang pertama (yang digarisbawahi) adalah
bit MSB dan bit 0 yang terakhir (digarisbawahi) adalah bit LSB.Bit yangcocok diganti
adalah bit LSB, sebab penggantian hanya mengubah nilai byte te rsebut satu lebih tinggi
atau satu lebih rendah dari nilai sebelumnya.
Seperti kita ketahui bersama bahwa byte 11111111 berarti bernilai 255.
Apabila kita mengubah LSB, yaitu nilai satu pada deret yang paling akhir, hal ini hanya
akan menyebabkan nilai naik / turun satu dari sebelumnya.
11111111 = 255 => Nilai piksel awal 255 yaitu pada citragrayscale berarti warna putih
11111110 = 254 => Nilai piksel hanya turun satu, yaitu 254 berarti pada cit rawarna putih
tidak akan berubah terlalu jauh dari sebelumnya.
Bayangkan apabila kita memilihuntuk memodifikasiMSB.Maka, yangterjadi adalah nilai
intensitas akan turun / naik begitu banyak
11111111 = 255 => Nilai piksel awal 255 yaitu pada citragrayscale berarti warna putih
01111111 = 127 => Nilai piksel menjadi 127. Pada citra grayscale intensitas warna
putih akan turun banyak menjadi keabu-abuan.
Misalkan segmen piksel-piksel citrasebelum penambahan bit-bit watermark adalah :
00110011 10100010 11100010 01101111
Misalkan data rahasia (yang telah dikonver sike system biner)adalah 0111. Setiap bit dari
watermark menggantikan posisi LSB dari segmen data cit ramenjadi :
00110010101000111110001101101111
Contoh listing di bawah ini akan menunjukkan bagaimana ca rakerja penyisipan watermark
ke dalam citra:
Source code untuk encoding :

Gambar 68 Source code encoding

Source code di atas disimpan dengan nama m-file ‘w_encode.m’. Untuk


mengujinya ketikkan source code dibawah ini

Gambar 69 Source code pengujuan encoding


Gambar 70 Gambar Kanan citra belum disisipi sendangkan kiri sudah sisipi

Decoding dalam proses watermark merupakan teknik mengungkap /


membongkar watermark yang telah disisipkan pada citra digital. Contoh listi ng di bawah
ini akan menunjukkan bagaimana carapengungkapan watermark dari dalam citradigital:
Source code untuk decoding :

Gambar 71 decode

Source code di atas disimpan dengan nama m-file ‘w_decode.m’. untuk menguji
ketikkan perintah seperti dibawah ini

Gambar 72 Pengujian decode


Gambar 73 Pengungkapan citra hasil watermark