Laporan Praktikum Pengolahan Citra Digital Menggunakan Matlab [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

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 0 0 1 1



B 0 1 0 1



A and B 0 0 0 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 0 0 1 1



B 0 1 0 1



A or B 0 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 0 0 1 1 Source kode



B 0 1 0 1



A xor B 0 1 1 0



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 sumbuX 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 pengskalaanya:



dengan pengubahan ukuran citra, rumus



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 highpass 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,y1). 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 pikselpiksel 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 kelompokkelompok 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. 2.



BAB VI



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 mengujinya ketikkan source code dibawah ini



Gambar 69 Source code pengujuan encoding



‘w_encode.m’. Untuk



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