Analisis Ketahanan Watermarking Citra dengan Algoritma Modified Least Significant Bit (MLSB)

(1)

ANALISIS KETAHANAN WATERMARKING CITRA DENGAN ALGORITMA MODIFIED LEAST SIGNIFICANT BIT (MLSB)

SKRIPSI

YUSUF DZAKI SARAAN 081401020

PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2012


(2)

ANALISIS KETAHANAN WATERMARKING CITRA DENGAN ALGORITMA MODIFIED LEAST SIGNIFICANT BIT (MLSB)

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat untuk mencapai gelar Sarjana Komputer

YUSUF DZAKI SARAAN 081401020

PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2012


(3)

PERSETUJUAN

Judul : ANALISIS KETAHANAN WATERMARKING CITRA

DENGAN ALGORITMA MODIFIED LEAST SIGNIFICANT BIT (MLSB)

Kategori : SKRIPSI

Nama : YUSUF DZAKI SARAAN

Nomor Induk Mahasiswa : 081401020

Program Studi : S1 ILMU KOMPUTER Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, November 2012 Komisi Pembimbing

Pembimbing II Pembimbing I

Drs. James Piter Marbun, M.Kom Drs. Partano Siagian, Msc NIP.195806111986031002 NIP. 130877994

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

DR. Poltak Sihombing, M.Kom NIP. 196203171991031001


(4)

ANALISIS KETAHANAN WATERMARKING CITRA DENGAN ALGORITMA MODIFIED LEAST SIGNIFICANT BIT (MLSB)

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan beberapa sumbernya.

Medan, November 2012

YUSUF DZAKI SARAAN NIM 081401020

PENGHARGAAN

Syukur Alhamdulillah kehadirat Allah SWT, karena berkat dan limpahan rahmat dan hidayahNya penulis dapat menyelesaikan penulisan skripsi ini yang berjudul Analisis Ketahanan Watermarking Citra Dengan Algoritma Modified Least Significant Bit (MLSB).


(5)

Dalam penulisan skripsi ini, penulis telah bekerja semaksimal mungkin untuk berusaha agar lebih baik dan sempurna, namun penulis menyadari bahwa skripsi ini masih jauh dari sempurna. Oleh karena itu, penulis mengharapkan saran dan kritik yang sifatnya membangun, sehingga skripsi ini dapat bermanfaat sebagai pengetahuan dan referensi bagi para peneliti berikutnya.

Skripsi ini penulis persembahkan untuk kedua orang tua penulis, ayah penulis Syafaruddin Saraan, SE, M.Si, dan mama penulis Nurhayani Angkat, dan juga abang penulis Rohkaseana Biiznilah Saraan, yang selama ini sudah memberikan doa, motivasi, serta kasih sayang yang dan pengorbanan yang tidak ternilai harganya, hingga skripsi ini dapat diselesaikan.

Selama mengikuti perkuliahan dan juga penyusunan skripsi ini penulis banyak mendapat bimbimgan, pengarahan dan motivasi baik langsung maupun tidak langsung. Oleh karena itu penulis mengucapkan terima kasih kepada:

1. Bapak Drs. Partano Siagian, M.Sc selaku Dosen Pembimbing I yang telah banyak meluangkan waktu untuk tenaga dan juga pikiran selama membimbing penulis hingga skripsi ini terselesaikan.

2. Bapak Dr. James Piter Marbun, M.Kom selaku Dosen pemimbing II yang telah meluangkan waktunya memberikan masukan dan bimbingan kepada penulis hingga skripsi ini dapat di selesaikan.

3. Bapak Prof. Dr. Iryanyo, M.Si Selaku Dosen Pembanding I yang telah memberikan saran dan masukan yang sangat berguna kepada penulis dalam menyelesaikan skripsi ini.

4. Ibu Maya Silvi Lydia, B.Sc, M.Sc Selaku Sekretaris Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi USU dan juga sebagai Pembanding II yang telah memberikan saran dan masukan yang sangat berguna kepada penulis dalam menyelesaikan skripsi ini.

5. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

6. Bapak Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

7. Seluruh Dosen yang telah mendidik penulis selama mengikuti perkuliahan di S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi USU.

8. Seluruh staf tata usaha dan pegawai Program S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi USU yang telah membantu penulis dalam pengurusan adminstrasi selama mengikuti perkuliahan, seminar, dan ujian sarjana. 9. Seluruh teman-teman penulis terutama stambuk 2008 Program Studi S1 Ilmu


(6)

10.Senior dan Junior penulis di Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi USU.

Semoga Allah SWT memberikan balasan yang setimpal atas segala amal dan budi yang di berikan dan senantiasa memberikan kita kemudahan dan kelapangan untuk mendapatkan ridhoNya.

Penulis

Medan, November 2012


(7)

ABSTRAK

Citra yang diambil dengan menggunakan kamera digital merupakan sebuah karya digital yang harus dilindungi. Dengan kemajuan teknologi memungkinkan penggandaan citra sangat mudah dilakukan dan dengan mudah dapat disebarluaskan. Dengan teknik watermarking, file citra hasil capture maupun karya digital lainnya dapat dilindungi. Teknik watermarking yang digunakan dalam penelitian ini adalah metode Modified Least Significant Bit (MLSB) yang merupakan pengembangan dari metode Least Significant Bit (LSB). Metode watermarking ini merupakan metode yang tidak terlalu sulit untuk dikembangkan. File yang dilindungi dengan metode ini tidak akan mengalami perubahan warna yang berarti, karena metode MLSB ini file penyisip citra akan disisipkan kedalam LSB ke-1 dan LSB ke-2 nilai blue secara bergantian dalam Citra Asli yang akan dilindungi. Dengan metode ini file citra yang dilindungi masih tahan terhadap beberapa serangan yang umum diberikan kepada citra, seperti menambah Noise dan juga Gaussian Blur karena citra penyisip hasil ekstraksi masih dapat dikenali. Untuk mengetahui tingkat kerusakan file citra penyisip dilakukan penghitungan Bit Error Ratio (BER) pada citra penyisip asli dan citra penyisip ekstraksi.


(8)

ANALYSIS OF IMAGE WATERMARKING ROBUSTNESS WITH MODIFIED LEAST SIGNIFICANT BIT (MLSB) ALGORITHM

ABSTRACT

The image which taken using a digital camera is a digital artwork that should be protected. With technology advances can allow doubling of image is very easy to do and can easily be share. With using watermarking technique, image capture files result or other digital works can be protected. Watermarking technique used in this research is method of Modified Least Significant Bit (MLSB), which is the development of the method of Least Significant Bit (LSB). This watermarking method is a method that is not too difficult to be develop. File that is protected with this method will not change the color which means, because with MLSB method image will be inserted into the first LSB and second LSB value blue interchangeably in the original image will be protected. With this method, the protected image file still resistant to several attacks commonly given to image, such as adding Noise and Gaussian Blur because extraction watermark image result can still be identified. To find out the level of damage image file inserted must be conducted calculated Bit Error Ratio (BER) on the original image and the image inserted extraction.


(9)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstrack vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Bab 1 Pendahuluan 1

1.1 Latar Belakang Masalah 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metode Penulisan 3

1.7 Sistematika penulis 4

Bab 2 Landasan Teori 5

2.1 Citra Digital 5

2.1.1 Format File Citra Bitmap 8

2.1.2 Format BMP 8

2.2 Watermarking 10

2.2.1 Sejarah Watermarking 11

2.2.2 Perbedaan Watermarking dan Steganografi 12

2.2.3 Digital Watermarking 12

2.2.4 Klasifikasi Image Watermarking 14

2.2.5 Aplikasi Watermark 15

2.3 Serangan Terhadap Citra Ber-watermark 17

2.3.1 Standart Attact 17

2.4 Algoritma Least Significant Bit (LSB) 19

2.5 Bit Error Rate (BER) 20

Bab 3 Analisis Dan Perancangan 22

3.1 Analisis 22

3.1.1 Menghitung Nilai Piksel Citra Asli 23 3.1.2 Menghitung Nilai RGB Citra Asli 24 3.1.3 Menghitung Nilai Piksel Citra Penyisip 30 3.1.4 Menghitung Nilai RGB Penyisip 31

3.1.5 Menghitung Posisi Piksel 32


(10)

3.1.7 Menampilkan Citra ter-Watermarking 35

3.1.8 Flow Chart 39

3.1.9 DFD Level 1 42

3.1.10 DFD Level 1 Penyisipan MLSB 43

3.1.11 DFD Level 1 Ekstraksi 44

3.2 Perancangan Antarmuka (Interface) 45

3.2.11 Rancangan Menu Utama 45

3.2.12 Rancangan Ekstraksi 46

Bab 4 Implementasi Dan Pengujian Sistem 47

4.1 Implementasi 47

4.2 Tampilan Antarmuka Aplikasi 48

4.2.1 Tampilan Menu Utama 48

4.2.2 Tampilan Proses Ekstraksi 49

4.2.3 Tampilan Menghitung Bit Error Ratio 51

4.3 Pengujian Sistem 51

4.3.1 Lingkungan Pengujian 51

4.3.2 Tujuan Uji 51

4.3.3 Data Pengujian 52

4.3.4 Proses Watermarking 54

4.3.5 Proses Pemberian Serangan 56

4.3.6 Proses Ekstraksi Citra 57

4.4 Hasil Pengujian 58

Bab 5 Kesimpulan dan Saran 59

5.1 Kesimpulan 59

5.2 Saran 60

Daftar Pustaka 61


(11)

DAFTAR TABEL

Halaman

2.1 Tabel Format File BMP 9

2.2 Tabel Nilai Biner Blue Sebelum Penyisipan 20 2.3 Tabel Nilai Biner Blue Setelah Penyisipan 20 3.1 Tabel hasil perhitungan posisi piksel 32

3.2 Tabel Penyisipan bit-bit penyisip 34

3.3 Tabel Nilai RGB 37

4.1 Tabel Citra Digital yang digunakan untuk pengujian 52

4.2 Tabel Citra Penyisip 53

4.3 Tabek Preview citra ter-watermark 56


(12)

DAFTAR GAMBAR

2.1 Koordinat Pixel 5

2.2 Ruang Warna RGB 7

2.3 Format citra 24-bit (16 juta warna) 10

2.4 Penyisipan watermark 12

2.5 Ekstraksi Watermark 13

2.6 Gambar dengan Random Pick Noise 18

2.7 Gambar dengan efek Gaussian Blur 19

2.8 Matriks Citra Penampung 4 x 2 19

2.9 Perubahan Nilai Biner Citra 20

3.1 Citra Asli 23

3.2 Citra Penyisip 23

3.3 Contoh Data Bitmap File Citra Asli 24

3.4 Matriks Citra Asli 24

3.5 Contoh data bitmap file citra penyisip 30 3.6 Contoh data bitmap file citra penyisip 31

3.7 Data Bit citra asli 36

3.8 Data Bit citra asli sesudah penyisipan 36

3.9 Flow Chart Watermarking 39

3.10 Flow Chart Ekstraksi 40

3.11 Diagram Konteks watermarking 41

3.12 Diagram Konteks ekstraksi 42

3.13 DFD Perangkat Lunak Tingkat 1 42

3.14 DFD Level 1 43

3.15 DFD Level 1 Ekstraksi 44

3.16 Rancangan Menu Utama 45

3.17 Rancangan menu Ekstraksi 46

4.1 Tampilan Menu Utama 48

4.2 Proses Watermarking 49

4.3 Tampilan Menu Ekstraksi 50

4.4 Tampilan Hitung BER 51

4.5 Kotak Pesan batas piksel citra penyisip 53

4.6 Proses Watermarking Citra Pertama 54

4.7 Proses Watermarking Citra Ke dua 54

4.8 Proses Watermarking Citra ke tiga 55


(13)

ABSTRAK

Citra yang diambil dengan menggunakan kamera digital merupakan sebuah karya digital yang harus dilindungi. Dengan kemajuan teknologi memungkinkan penggandaan citra sangat mudah dilakukan dan dengan mudah dapat disebarluaskan. Dengan teknik watermarking, file citra hasil capture maupun karya digital lainnya dapat dilindungi. Teknik watermarking yang digunakan dalam penelitian ini adalah metode Modified Least Significant Bit (MLSB) yang merupakan pengembangan dari metode Least Significant Bit (LSB). Metode watermarking ini merupakan metode yang tidak terlalu sulit untuk dikembangkan. File yang dilindungi dengan metode ini tidak akan mengalami perubahan warna yang berarti, karena metode MLSB ini file penyisip citra akan disisipkan kedalam LSB ke-1 dan LSB ke-2 nilai blue secara bergantian dalam Citra Asli yang akan dilindungi. Dengan metode ini file citra yang dilindungi masih tahan terhadap beberapa serangan yang umum diberikan kepada citra, seperti menambah Noise dan juga Gaussian Blur karena citra penyisip hasil ekstraksi masih dapat dikenali. Untuk mengetahui tingkat kerusakan file citra penyisip dilakukan penghitungan Bit Error Ratio (BER) pada citra penyisip asli dan citra penyisip ekstraksi.


(14)

ANALYSIS OF IMAGE WATERMARKING ROBUSTNESS WITH MODIFIED LEAST SIGNIFICANT BIT (MLSB) ALGORITHM

ABSTRACT

The image which taken using a digital camera is a digital artwork that should be protected. With technology advances can allow doubling of image is very easy to do and can easily be share. With using watermarking technique, image capture files result or other digital works can be protected. Watermarking technique used in this research is method of Modified Least Significant Bit (MLSB), which is the development of the method of Least Significant Bit (LSB). This watermarking method is a method that is not too difficult to be develop. File that is protected with this method will not change the color which means, because with MLSB method image will be inserted into the first LSB and second LSB value blue interchangeably in the original image will be protected. With this method, the protected image file still resistant to several attacks commonly given to image, such as adding Noise and Gaussian Blur because extraction watermark image result can still be identified. To find out the level of damage image file inserted must be conducted calculated Bit Error Ratio (BER) on the original image and the image inserted extraction.


(15)

BAB 1 PENDAHULUAN

1.1 Latar Belakang Masalah

Dalam era modern sekarang ini penyebaran data digital berupa citra berlangsung sangat cepat mengingat perkembangan internet dan dunia digital yang semakin berkembang seiring berjalannya waktu. Tentu saja, hal ini banyak membawa keuntungan bagi para penggunanya. Namun, tidak sedikit pula bahaya dan kerugian yang ditimbulkan akibat penyebaran citra digital tersebut, seperti penggandaan file citra tanpa izin dari pemiliknya, klaim kepemilikan atas sebuah karya, dan pengubahan keaslian dari sebuah karya digital. Oleh karena itu, diperlukan adanya suatu cara untuk menangani masalah ini.

Teknik watermarking dapat dijadikan solusi untuk melindungi media digital sebagai bukti kepemilikan media digital. Watermarking adalah proses menyisipkan informasi seperti tanda digital ke dalam inti dari objek multimedia secara permanen. Watermark dalam media digital tidak dapat diketahui keberadaannya oleh pihak lain yang tidak mengetahui metode watermarking yang digunakan. Informasi ini dapat digunakan untuk bermacam-macam aplikasi seperti autentikasi, perlindungan hak cipta, pemantauan data, bukti kepemilikan intelektual dan lain-lain. Pada umumnya watermark dapat dikelompokkan menjadi dua kelompok utama menurut cara kerjanya. Teknik domain spasial menanamkan data langsung dengan cara memodifikasi nilai pixel citra, sedangkan teknik domain frekuensi memodifikasi nilai koefisien transformasinya [3].

Pada penelitian ini digunakan pengujian ketahanan watermark dengan cara melakukan proses pemberian Gaussian Blur dan random Noise pada citra hasil watermarking. Teknik watermarking yang dilakukan pada citra digital adalah dengan algoritma Modified Least Significant Bit (MLSB).


(16)

penyisipan pesan Steganografi. Untuk memperkuat penyembunyian pesan dilakukan modifikasi teknik LSB. Modifikasi dilakukan dengan teknik penyisipan bit yang hanya di lakukan di LSB ke-1 dan LSB ke-2 nilai Blue pada piksel citra. Pada metode ini penyisipan pada LSB ke-1 dan LSB ke-2 dilakukan secara bergantian.

Citra digital dapat diwatermark, pada penelitian yang dilakukan Zaki Rahmatullah, watermarking citra digital ditransformasikan menggunakan Discrete Cosine Transform (DCT). Pada proses penanaman watermark, citra ditransformasikan menggunakan DCT menjadi domain frekuensi yang menghasilkan tiga area yaitu Low Frequency (FL), Medium Frequency (FM), dan High Frequency (FH). Bit-bit watermark ditanam pada area FM dengan menggunakan nilai Koefisien Selisih (K). Kualitas citra ber-watermark diukur dengan Peak Signal of Noise Ratio (PSNR). Semakin besar nilai K diperoleh nilai PSNR yang semakin kecil[9].

Pada penelitian lain, segmentasi citra menggunakan teknik pemetaan warna (color mapping). Pada penelitian ini metode yang digunakan dalam segmentasi citra adalah teknik pemetaan warna. Teknik ini adalah merupakan metode klasterisasi yang menggunakan algoritma K-Means.

Berdasarkan latar belakang masalah diatas maka penulis memberi judul penelitian ini dengan “Analisis Ketahanan Watermark Citra Dengan Algoritma Modified Least Significant Bit (MLSB)”.

1.2 Rumusan Masalah

Rumusan masalah dalam penelitian ini adalah bagaimana melindungi file berupa citra dengan teknik watermarking Modified Least Significant Bit untuk mencegah penggandaan file citra.


(17)

1.3 Batasan Masalah

Dalam penelitian ini penulis membuat batasan masalah yaitu:

1. File citra yang di-watermarking adalah citra digital berformat bitmap (bmp).

2. File penyisip berupa citra digital berformat bmp dimensi maximum100 x 75 piksel, atau sesuai daya tampung citra asli.

3. Bahasa pemrograman menggunakan Microsoft Visual Basic.Net

4. Parameter ketahanan yang digunakan adalah nilai Bit Error Ratio (BER).

5. Serangan pada citra ber-watermark menggunakan perangkat lunak pengolah citra Gimp 2.82.

1.4 Tujuan Penelitian

Tujuan penelitian ini adalah untuk menghasilkan suatu perangkat lunak watermarking citra dengan menggunakan algoritma Modified Least Significant Bit.

1.5 Manfaat Penelitian

Manfaat penelitian adalah untuk mengetahui ketahanan watermark citra dengan menggunakan algoritma Modified Least Significant Bit.

1.6 Metode Penelitian

Dalam penelitian ini, tahapan-tahapan yang akan dilalui adalah sebagai berikut: 1. Studi Literatur

Metode ini dilaksanakan dengan melakukan studi kepustakaan yang relevan serta buku-buku maupun artikel-artikel atau e-book dan juga journal international yang didapatkan melalui internet.


(18)

2. Analisis

Pada tahap ini digunakan untuk mengolah data yang ada dan kemudian melakukan analisis terhadap hasil studi literatur yang diperoleh sehingga menjadi suatu informasi.

3. Perancangan Perangkat Lunak

Pada tahap ini, digunakan seluruh hasil analisa terhadap studi literatur yang dilakukan untuk merancang perangkat lunak yang akan dihasilkan. Dalam tahapan ini, dilakukan perancangan terhadap bentuk antarmuka sistem serta proses kerja sistem untuk memudahkan dalam proses implementasi berikutnya.

4. Implementasi dan Pengujian Sistem

Pada tahap ini dilakukan pemasukan data serta pengolah data untuk mendapatkan hasilnya apakah sudah sesuai dengan yang diharapkan.

1.7Sistematika Penulisan

Dalam penulisan skripsi ini penulis membuat sistematika sebagai berikut:

BAB 1 PENDAHULUAN membahas Latar Belakang, Perumusan Masalah, Batasan Masalah, Tujuan penelitian, Manfaat Penelitian, Metodologi Penelitian yang dilakukan serta Sistematika penulisan.

BAB 2 LANDASAN TEORI berisi penjelasan mengenai beberapa hal mendasar yang berkaitan dengan topik tugas akhir yang di kerjakan diantaranya membahas tentang citra watermarking, algoritma Modified Least Significant Bit, serta flow chart.

BAB 3 ANALISIS DAN PERANCANGAN membahas mengenai Algoritma Modified Least Significant Bit, flow chart sistem serta perancangan antar muka pengguna.

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM membahas tentang implementasi dan pengujian sistem.

BAB 5 PENUTUP merupakan kesimpulan dari semua pembahasan yang ada dengan saran-saran yang ditujukan bagi para pembaca atau pengembang.


(19)

BAB 2

LANDASAN TEORI

2.1Citra Digital

Citra digital merupakan citra yang berbentuk array dua dimensi yang terdiri dari blok-blok kecil yang disebut dengan pixel. Pixel merupakan elemen pembentuk warna terkecil yang menyusun suatu citra. Citra dibentuk dari kotak-kotak persegi yang teratur sehingga jarak horizontal dan vertikal antara piksel sama pada seluruh bagian citra. Setiap piksel diwakili oleh bilangan bulat (integer) untuk menunjukkan lokasinya dalam bidang citra. Sebuah bilangan bulat juga digunakan untuk menunjukkan cahaya atau keadaan terang gelap piksel tersebut.

Citra digital dapat didefinisikan secara matematis sebagai fungsi intensitas dalam dua variabel x dan y yang dapat dituliskan f(�,�), dimana (�,�) merepresentasikan koordinat spasial pada bidang dua dimensi dan f(�,�) merupakan intensitas cahaya pada koordinat tersebut. Intensitas f dari gambar hitam putih pada titik(�,�) disebut derajat keabuan (grey level) yang bergerak dari hitam ke putih sedangkan citranya disebut citra skala-abu (grayscale image) atau citra monokrom (monochrome image).

Gambar 2.1 Koordinat Pixel.


(20)

1. Citra Biner

Citra biner adalah citra yang hanya memiliki dua kemungkinan nilai piksel yaitu hitam dan putih.

2. Citra Grayscale

Citra grayscale merupakan citra digital yang hanya memiliki satu nilai kanal pada setiap pikselnya. Warna yang dimiliki adalah warna dari hitam, keabuan, dan putih. 3. Citra Warna (8 bit)

Citra yang setiap piksel citranya hanya diwakili oleh 8 bit dengan jumlah warna maksimum yang dapat digunakan 256 warna.

4. Citra Warna (16 bit)

Citra warna 16 bit biasanya disebut sebagai citra highcolor , setiap piksel nya diwakili dengan 2 byte memory (16 bit). Warna 16 bit memiliki 65.536 warna. 5. Citra Warna (24 bit)

Setiap piksel dari citra warna 24 bit diwakili dengan 24 bit sehingga memiliki total 16.777.216 warna. Setiap piksel memiliki warna (Red,Green,Blue) disimpan ke dalam 1 byte data. 8 bit menyimpan nilai RED, 8 bit menyimpan nilai Green, dan 8 bit menyimpan nilai Blue.

Citra digital juga memiliki beberapa ruang warna. Sistem warna yang umumnya digunakan adalah:

1. RGB (Red, Green, Blue)

RGB (Red Green Blue) yang terdiri dari tiga buah warna utama yaitu merah, hijau, dan biru, Ruang warna RGB dapat divisualisasikan sebagai sebuah kubus seperti pada Gambar 2.2, dengan tiga sumbunya yang mewakili komponen warna merah (red) R, hijau (Green) G dan biru (blue) B. Salah satu pojok alas kubus ini menyatakan warna hitam ketika R = G = B = 0, sedangkan pojok atasnya yang berlawanan menyatakan warna putih ketika R = G = B = 255 (untuk sistem warna 8 bit bagi setiap komponennya), RGB sering digunakan didalam sebagian besar aplikasi komputer karena dengan ruang warna ini, tidak diperlukan transformasi


(21)

untuk menampilkan informasi di layar monitor. Alasan diatas juga menyebabkan RGB banyak dimanfaatkan sebagai ruang warna dasar bagi sebagian besar aplikasi[10].

Gambar 2.2 Ruang Warna RGB[10].

2. YCbCr (Luminance – Chrominance)

YCbCr (Luminance – Chrominance) merupakan merupakan domain yang berbeda dengan domain warna RGB yang terdiri dari luminance (Y), chrominance biru (Cb), chrominance merah (Cr). Luminance membawa informasi tentang tingkat kecerahan. Sedangkan chrominance membawa informasi tentang kekuatan warna. YCbCr merupakan standar internasional bagi pengkodean digital gambar televisi yang didefinisikan di CCIR Recommendation 601. Y merupakan komponen luminance, Cb dan Cr adalah komponen chrominance. Pada monitor monokrom nilai luminance digunakan untuk merepresentasikan warna RGB, secara psikologis ia mewakili intensitas sebuah warna RGB yang diterima oleh mata.

3. Hue-Saturation-Brightness (HSB)

Dalam model HSB terdapat tiga karakteristik utama pada warna yaitu:

a. Hue adalah warna yang dipantulkan dari suatu objek atau yang dipancarkan melalui suatu objek dan sering dinyatakan dengan lingkaran warna standar dari 0 sampai 360 derajat. Pada pemakaian umum sering disebut dengan warna seperti merah, oranye atau hijau.

b. Saturation atau yang biasa disebut chroma adalah kekuatan warna dan dinyatakan engan presentase dari 0 sampai dengan 100 persen. Pada lingkaran


(22)

warna standar, saturation meningkat dari pusat lingkaran menuju ke tepi lingkaran.

c. Brightness adalah nilai relatif dari gelap-terang dari warna dan biasanya dinyatakan dengan persentase dari 0 (hitam) sampai dengan 100 (putih).

2.1.1 Format File Citra Bitmap

Citra Bitmap sering disebut juga dengan citra raster. Citra bitmap menyimpan data kode itra secara digital dan lengkap ( cara penyimpanannya adalah per piksel). Citra bitmap dipresentasikan dalam bentuk matriks atau dipetakan dengan menggunakan bilangan biner atau sistem bilangan lain. Citra ini memiliki kelebihan untu memanipulasi warna, tetapi untuk mngubah objek lebih sulit. Tampilan bitmap mampu menunjukkan kehalusan gradasi bayangan dan warna dari sebuah citra[7].

2.1.2 Format BMP

Format file bmp merupakan format standar sistem operasi Windows dalam IBM OS/2. Format ini mendukung mode warna dari bitmap mode hingga RGB mode. BMP mudah dibuka dan disimpan, tetapi ada beberapa aturan khusus yang harus dicermati, diantaranya [8]:

1. Format file ini menyimpan datanya secara terbalik, yaitu dari bawah ke atas.

2. Citra dengan resolusi warna 8-bit, lebar citra harus merupakan kelipatan dari 4, bila tidak maka pada saat penyimpanan akan ditambahkan beberapa byte pada data hingga merupakan kelipatan dari 4.

3. Citra dengan resolusi warna 24-bit, urutan penyimpanan tiga warna dasar adalah biru, hijau, merah (B, G, R). Lebar citra dikalikan dengan 3 harus merupakan kelipatan dari 4, bila tidak maka pada saat penyimpanan akan ditambahkan beberapa byte pada data hingga merupakan kelipatan dari 4.


(23)

Tabel 2.1 Format File BMP.

Name Size Description

Header 14 byte

Signature 2 byte ‘BM’

File Size 4 byte File Size byte

Reserved 4 byte Unused (=0)

Data Offset 4 byte File Offset to Raster

Info Header 40 byte Windows Structure:

BITMAP INFO HEADER

Size 4 byte Size of Info Header = 40

Width 4 byte Bitmap Width

Height 4 byte Bitmap Height

Planes 2 byte Number of planes (= 1)

BitCount 2 byte Bits per Pixel

1 = monochrome pallette, NumColor = 1 4 = 4 bit palletized, NumColors = 16 8 = 8 bit palletized, NumColors = 256 16 = 16 bit RGB, NumColors = 65536 24 =24 bit RGB, NumColors = 16 M

Compression 4 byte Type of Compression

0 = BI_RGB (no compression) 1 = BI_RLE8 (8 bit RLE encoding) 2 = BI_RLE4 (4 bit RLE encoding)

ImageSize 4 byte (compressed) Size of Image

It is valid to ser this = 0 if compressed = 0

XpixelsPerm 4 byte Horizontal Resolution: Pixel/meter

YpixelPerm 4 byte Vertical Resolution: Pixel/meter

ColorsUsed 4 byte Number of actually used colors

ColorImportant 4 byte Number of important color = 0 all

Color Tabel 4 * NumColors

(bytes)

Present only if info. BitsPerpixel ≤ 8 Color should be ordered by importance

Red 1 byte Red Intensity

Green 1 byte Green Intensity

Blue 1 byte Blue Intensity

Reserved 1 byte Unused (= 0)

Repeated NumColors Times

Raster Data Info.ImageSize

(bytes) The Pixel Data

File citra bitmap terdiri atas bagian header, nilai RGB, dan data bitmap. Pada citra 8-bit, setiap elemen data bitmap menyatakan indeks dari peta warnanya di palet RGB. Header adalah merupakan informasi dari struktur daripada sebuah file citra. Header merupakan tempat memberikan informasi tentang nama file, ukuran, dimensi, resolusi (horizontal atau vertikal), format yang digunakan.


(24)

Pada citra 24-bit, tidak terdapat palet RGB, karena nilai RGB langsung diuraikan dalam data bitmap. Setiap elemen data bitmap panjangnya 3 byte, masing-masing byte menyatakan komponen R, G, dan B [2].

<Header> <data bitmap>

100100000101101001111000 01100101101100010111011

Gambar 2.3 Format citra 24-bit (16 juta warna).

2.2Watermarking Citra

Watermarking adalah salah satu teknik dari bidang ilmu steganografi, yaitu suatu bidang ilmu yang mempelajari cara menyisipkan suatu objek ke dalam objek lainnya. Pada awal kemunculannya, watermarking digunakan untuk dapat menyisipkan suatu objek yang untuk menunjukkan kepemilikan, tujuan, atau data lain, pada materi tanpa mempengaruhi kualitasnya.

Watermark merupakan sebuah objek atau data tertentu yang membawa informasi tertentu sesuai dengan tujuannya dan sengaja disisipkan secara permanen kedalam data media induknya. Watermark dalam citra digital tersebut tidak dapat diketahui keberadaannya oleh pihak lain yang tidak mengetahui metode penyisipan watermark yang digunakan. Watermark tersebut juga tidak dapat diidentifikasi dan dihilangkan. Penggunaan watermarking sangat diperlukan untuk melindungi hasil karya intelektual dalam bentuk digital seperti software, produk multimedia seperti teks, musik (MP3 atau WAV), gambar/citra (image), dan video digital (VCD). Selama ini penggandaan produk digital tersebut dilakukan secara bebas dan leluasa. Hasil penggandaan persis sama dengan aslinya. Pemegang hak cipta atas produk digital tersebut tentu dirugikan karena ia tidak mendapat royalti dari usaha penggandaan tersebut. Oleh karena itu, penyisipan watermark pada produk digital memiliki peran yang signifikan untuk mencegah terjadinya penggandaan terhadap produk digital [2].


(25)

Label watermark adalah sesuatu data atau informasi yang akan ditanamkan kedalam data digital yang ingin dilindungi untuk dilakukan proses watermarking. Ada dua jenis label watermark yang dapat digunakan:

1. Teks biasa

Label watermark dari teks biasanya menggunakan nilai-nilai ASCII dari masing-masing karakter dalam teks yang kemudian dipecahkan atas bit per bit. Kelemahan dari label ini adalah kesalahan pada satu bit saja akan menghasilkan hasil yang berbeda dari teks sebenarnya.

2. logo atau citra atau suara

Berbeda dengan teks, kesalahan pada beberapa bit masih dapat memberikan persepsi yang sama dengan aslinya, baik oleh pendengaran maupun penglihatan manusia.

Oleh karena itu, penyisipan logo sebagai label watermark bisa dikatakan lebih efektif dibandingkan teks, citra, ataupun suara karena selain tidak sensitif terhadap kesalahan bit, ukuran file juga tidak terlalu besar. Untuk label watermark yang berupa logo atau citra biner (tidak berwarna/hitam putih), maka terlebih dahulu logo tersebut harus dikonversikan menjadi deretan bilangan biner {0,1} untuk kemudian diubah menjadi deretan bilangan yang berisi −1 dan 1. Selanjutnya, deretan bilangan ini nantinya akan dikali dengan bilangan real acak antara 0 dan 1. Bilangan-bilangan tersebut kemudian ditanamkan pada n koefisien DCT yang penting atau besar [5].

2.2.1 Sejarah Watermarking

Watermarking sudah ada sejak 700 tahun yang lalu. Pada akhir abad 13, pabrik kertas di Fabriano, Italia, membuat kertas yang diberi watermark atau tanda air dengan cara menekan bentuk cetakan gambar atau tulisan pada kertas yang baru setengah jadi. Ketika kertas dikeringkan terbentuklah suatu kertas yang berwatermark. Kertas ini biasa digunakan oleh seniman atau sastrawan untuk menulis karya mereka. Kertas yang sudah dibubuhi tanda air tersebut sekaligus dijadikan identifikasi bahwa karya seni diatasnya adalah milik mereka.

2.2.2 Perbedaan Watermarking dan Steganografi


(26)

Watermarking merupakan aplikasi dari steganografi, namun ada perbedaan diantara keduanya. Pada steganografi, media penampung pesan rahasia hanya pembawa atau dengan kata lain, tidak berarti apa-apa. Hal ini jauh berbeda dengan watermarking karena pada watermarking, justru media penampung tersebut dilindungi kepemilikannya dengan memberikan label hak citra [3].

2.2.3 Digital Watermarking

Teknik digital watermarking pada dasarnya memiliki prinsip yang sama dengan watermarking pada media selain citra. Secara umum, watermarking terdiri dari dua tahapan, yaitu penyisipan watermark dan ekstraksi/verifikasi atau pendeteksian watermark [3]. Pengekstrakan dan pendeteksian sebuah watermark sebenarnya tergantung pada algoritma yang dipakai untuk watermarking.

Secara umum proses watermarking pada citra digital menggunakan kunci sebagai sarana kepemilikan untuk dapat membuka watermark yang disisipkan melalui encoder yang berisi algoritma penyisipan watermark kedalam citra digital. Skema penyisipan watermarking dapat dilihat pada Gambar 2.4.

Gambar 2.4 Penyisipan Watermark[4].

Citra ber-watermark yang dihasilkan dari proses watermarking tidak jauh berbeda citra digital asalnya. Hal ini disebabkan karena pengubahan dari citra digital asal ke citra ber-watermark hanya berpengaruh sedikit terhadap perubahan warna dari citra digital, sehingga sistem penglihatan manusia tidak dapat memberi persepsi terhadap perubahan tersebut.


(27)

ber-watermark. Proses ekstraksi/verifikasi ini bertujuan untuk mendapatkan kembali citra watermark yang disisipkan dalam citra digital tersebut. Umumnya proses ekstraksi/verifikasi melibatkan proses pembandingan citra digital asal dengan citra ber-watermark untuk mendapatkan watermark yang disisipkan, seperti yang digambarkan pada Gambar 2.5.

Gambar 2.5 Ekstraksi Watermark[4].

Pengkategorian watermarking berdasarkan proses ekstraksi/verifikasi watermark terbagi dua jenis, yaitu [2]:

1. Blind Watermarking yaituverifikasi watermark tanpa membutuhkan citra yang asli. 2. Non-Blind Watermarking yaitu Verifikasi watermark dengan membutuhkan citra asli.

Sebuah teknik watermarking yang bagus harus memenuhi persyaratan sebagai berikut:

1. Fidelity

Penyisipan suatu watermark pada citra seharusnya tidak mempengaruhi nilai citra tersebut. Watermark pada citra idealnya tidak dapat dipersepsi oleh indera dan tidak dapat dibedakan dengan citra yang asli.

2. Robustness

Watermark dalam citra digital harus memiliki ketahanan yang cukup terhadap pemrosesan digital yang umum.

3. Security

Watermarking memiliki daya tahan terhadap usaha sengaja untuk memindahkan watermark dari suatu citra ke citra yang lain.


(28)

4. Imperceptibility

Keberadaan watermark tidak dapat di persepsi oleh indra visual. Hal ini bertujuan untuk menghindari pengamatan visual

5. Key Uniqueness

Sebuah kunci harus identik terhadap sebuah watermark. Hal ini berarti kunci yang berbeda seharusnya menghasilkan watermark yang berbeda. Pegggunaan kunci yang salah dapat mengakibatkan hasil ekstraksi/deteksi watermark yang salah pula.

6. Non-Invertibility

Proses untuk mendeteksi apakah citra tersebut ber-watermark atau tidak akan sangat sulit jika hanya diketahui citra ber-watermark saja.

7. Image Dependency

Watermark yang berada pada suatu image bergantung pada isi dari image tersebut.

2.2.4 Klasifikasi Image Watermarking

Klasifikasi terhadap image watermarking dapat dikelompokkan dalam beberapa kategori [4] yaitu:

1. Kategori berdasarkan kenampakan dari watermark. a. Visible Watermarking

Pada visible watermarking ini, watermark yang disisipkan pada suatu image terlihat dengan jelas. Watermark biasanya berbentuk logo atau teks baik transparan atau tidak yang diletakkan tidak mengganggu atau menutupi image asal. Jenis watermarking ini biasanya diterapkan pada image yang memang dimaksudkan untuk disebar secara umum bersama dengan identitas pemilik asal image tersebut.

b. Invisible Watermarking

Sesuai namanya, watermark pada invisible watermarking yang disisipkan pada image tidak lagi dapat dipersepsi dengan indera. Namun, keberadaannya tetap dapat dideteksi. Penerapan teknik invisible watermarking ini lebih sulit dari pada teknik yang digunakan pada visible watermarking.

2. Kategori berdasarkan kekuatan watermark yang ada pada image. Kategori berdasarkan kekuatan watermark adalah:

a. Fragile Image Watermarking

Fragile image watermarking merupakan jenis watermark yang ditujukan untuk menyisipkan label kepemilikan image. Pada fragile watermarking ini, watermark


(29)

mudah sekali berubah atau bahkan hilang jika dilakukan perubahan terhadap image. Dengan begitu, image sudah tidak lagi memiliki watermark yang asli. Fragile image watermarking ini biasanya digunakan agar dapat diketahui apakah suatu image sudah berubah atau masih sesuai aslinya. Jenis watermark inilah yang banyak diterapkan pada suatu image.

b. Robust Image Watermarking

Robust image watermarking adalah teknik penggunaan watermark yang ditujukan untuk menjaga integritas atau orisinalitas image. Watermark yang disisipkan pada media akan sangat sulit sekali dihapuskan atau dibuang. Dengan Robust Image, proses penggandaan image yang tidak memiliki izin dapat dihalangi. Kebanyakan aplikasi dari robust watermarking ini bukan pada sebuah image, melainkan pada sistem proteksi CD atau DVD.

2.2.5 Aplikasi Watermark

Watermark telah gunakan secara luas untuk mengurangi berbagai tindak kejahatan yang berkaitan dengan penggandaan dokumen digital. Fungsi penggunaan watermark tersebut antara lain adalah sebagai:

1. Identifikasi kepemilikan

Sebagai identitas dari pemilik dokumen digital, identitas ini disisipkan dalam dokumen digital dalam bentuk watermark. Biasanya identitas kepemilikan seperti ini diterapkan melalui visible watermarking.

2. Bukti kepemilikan

Watermark merupakan suatu bukti yang sah yang dapat dipergunakan di pengadilan. Banyak kasus pemalsuan foto yang akhirnya terungkap karena penggunaan watermark ini.

3. Memeriksa keaslian isi karya digital

Watermark juga dapat digunakan sebagai cara untuk mendeteksi keaslian dari suatu karya digital. Suatu image yang telah disisipi watermark dapat dideteksi perubahan yang dilakukan terhadapnya dengan memeriksa apakah watermark yang disisipkan dalam image tersebut rusak atau tidak.


(30)

Seperti halnya bukti kepemilikan, watermark juga dapat digunakan sebagai pemeriksaan hak akses atau penanda (sidik jari) dari suatu image.

5. Transaction tracking

Fungsi transaction tracking ini dapat dilakukan pada image yang mengandung watermark. Pengimplementasiannya dilakukan dengan memberikan watermark yang berbeda pada sejumlah domain/kelompok pengguna. Sehingga bila image tersebar diluar domain tersebut, dapat di ketahui domain mana yang menyebarkannya.

6. Piracy protection/copy

Untuk dapat melakukan ini, perancang teknik watermark harus bekerjasama tidak hanya pada masalah software, tetapi juga dengan vendor yang membuat hardware. Sehingga sebelum dilakukan peng-copy-an, terlebih dahulu dilakukan pemeriksaan apakah image tersebut boleh di-copy atau tidak.

7. Broadcast monitoring

Dalam dunia broadcasting/television news channel, watermark biasanya disisipkan sebagai logo dari perusahaan broadcasting yang bersangkutan. Hal ini dilakukan untuk menandai berita yang mereka siarkan. Sehingga bila pihak lain merekam berita tersebut, maka watermark-nya akan otomatis terbawa.

2.3Serangan Terhadap Citra Ber-watermark

Serangan terhadap citra ber-watermark umumnya bertujuan untuk menghilangkan watermark yang disisipkan di dalam citra digital tersebut. Serangan ini disebut sebagai serangan yang disengaja. Serangan yang tidak disengaja biasanya berhubungan dengan pengubahan citra digital. Secara umum jenis serangan terhadap citra ber-watermark dibagi menjadi dua, yaitu standard attack dan malicious attack [3].

2.3.1 Standard Attact

Standard attack biasanya merupakan serangan yang tidak disengaja untuk merusak atau mendapatkan watermark[11]. Contoh dari jenis standard attack adalah sebagai berikut:


(31)

1. Cropping

Cropping merupakan serangan yang umum karena banyak orang sering menginginkan bagian tertentu dari sebuah citra saja. Untuk dapat mengatasi serangan ini dapat dilakukan dengan cara menyebarkan watermark pada tempat-tempat yang memungkinkan terjadinya serangan.

2. Geometrical Attack

Geometrical attack sering tidak secara sengaja bertujuan untuk menghilangkan watermark pada citra yang sudah ber-watermark. Geometrical attack ini menyebabkan pendeteksi watermark kehilangan sinkronisasinya dengan citra ber-watermark.

3. Kompresi

Serangan ini juga merupakan serangan yang sering dilakukan secara tidak sengaja. Kompresi sering dilakukan pada file multimedia seperti audio, video, dan citra. Watermark yang disisipkan biasanya lebih tahan terhadap kompresi yang memiliki domain sama dengan domain yang dipakai pada saat watermarking. Misalnya citra yang disisipi watermark menggunakan DCT (Discrete Cosine Transform) lebih tahan terhadap kompresi JPEG dari pada citra yang disisipi watermark dalam domain spasial. Atau citra yang disisipi watermark menggunakan DWT (Discrete Wavelet Transform) lebih kuat terhadap kompresi JPEG2000.

4. Penambahan Random Noise

Random noise adalah gangguan pada citra yang ditandai dengan perubahan intensitas warna pada gambar. Perubahan ini terjadi secara random dan lokasinya tidak dapat diprediksi. Jenis-jenis random noise diantaranya adalah random hurl, random slur dan random pick. Random hurl mengubah warna pada piksel citra secara acak, sehingga menghasilkan ganggauan acak (random noise). Random Slur memberikan efek seperti gambar yang mencair ke bawah. Random Pick mengubah setiap piksel citra yang terkena dengan nilai piksel yang dipilih secara acak dari delapan nilai piksel tetangganya dan dirinya sendiri. HVS noise memberikan gangguan pada layer yang aktif dengan menggunakan model warna Hue, Saturation dan nilai cahaya [1].


(32)

Gambar 2.6 Gambar citra asli dan gambar dengan Random Pick Noise[12].

5. Filterisasi

Filterisasi umum digunakan pada citra. Untuk menangani jenis serangan filterisasi, watermark dapat disisipkan pada frekuensi yang paling sedikit berubah jika terjadi kompresi, dengan memperkirakan filterisasi apa saja yang umum digunakan.

6. Gaussian Blur

Gaussian blur adalah efek yang digunakan untuk mengurangi noise, penghalusan (smoothing), pengaburan (blur) dan mengurangi detail pada gambar digital. Secara visual gangguan tekni ini dapat dilihat oleh mata, karena terlihat berbeda dengan piksel aslinya[1].

Gambar 2.7 Gambar citra asli dan gambar dengan efek Gaussian Blur[13].

2.4Algoritma Modified Least Significant (MLSB)

Algoritma yang digunakan dalam merancang perangkat lunak ini adalah modifikasi dari Algoritma Least Significant Bit (LSB). Modifikasi dilakukan dengan teknik penyisipan bit yang hanya di lakukan di LSB ke-1 dan LSB ke-2 nilai Blue pada piksel citra. Pada metode ini penyisipan pada LSB ke-1 dan LSB ke-2 dilakukan secara bergantian dengan menggunakan citra bitmap 24bit sebagai penampung.

Cara kerja Algoritma Modified Least Significant Bit (MLSB) dapat dijelaskan melalui contoh di bawah ini.

<header file bitmap> <header bitmap info>


(33)

<larik data piksel>

000001100000110000011000 001101000001000000010100 101000000110111000101011 100000011000000010110000 010001100101100010010001 100010001010010110000001 001000111111000100100010 010011001000110000000000

Gambar 2.8 Biner Citra Penampung 4 x 2.

Misalkan penyisip yang di gunakan adalah karakter “S” dengan nilai biner 01110011 maka penyisipan hanya di lakukan di LSB ke-1 dan LSB ke-2 nilai Blue pada piksel citra, nilai biner blue sebelum dan sesudah penyipan dapat dilihat pada tabel 2.2 dan 2.3.

.

Tabel 2.2 Nilai Biner Blue Sebelum Penyisipan.

Posisi Piksel Nilai Biner Blue Nilai Biner Karakter S

0 00000110

01110011

1 00110100

2 10100000

3 10000001

4 01000110

5 10001000

6 00100011

7 01001100

Tabel 2.3 Nilai Biner Blue Setelah Penyisipan.

Posisi Piksel Nilai Biner Blue Nilai Biner Karakter S

0 00000110

01110011

1 00110110

2 10100001

3 10000011

4 01000110

5 10001000

6 00100011


(34)

Pada tabel di atas dapat dilihat perubahan nilai biner blue pada citra setelah penyisipan.

<header file bitmap> <header bitmap info> <larik data piksel>

000001100000110000011000 001101100001000000010100 101000010110111000101011 100000111000000010110000 010001100101100010010001 100010001010010110000001 001000111111000100100010 010011101000110000000000

Gambar 2.9 Perubahan Nilai Biner Citra.

2.5Bit Error Ratio (BER)

Bit Error Ratio adalah salah satu cara untuk melakukan perbandingan antara bit yang salah dengan banyaknya bit keseluruhan. Persamaan BER dapat di jabarkan sebagai berikut:

BER(W, W′) =∑ Pi N

dimana:

w adalah watermark asli

w′ adalah watermark yang dieksraksi. N adalah banyaknya bit

nilai pi didefinisikan sebagai berikut:

pi= 1untukwiwi, pi = 0untukwi=wi,

Cara lain untuk melakukan perbandingan watermark adalah dengan menghitung koefisien dan korelasi.


(35)

BAB 3

ANALISIS DAN PERANCANGAN

3.1Analisis

Pada aplikasi ini dilakukan penyisipan dengan pemberian citra penyisip berupa citra logo kepada citra asli yang berformat Bitmap (.bmp) identitas kepemilikannya. Penyisipan dilakukan dengan teknik watermarking dengan metode Modified LSB. Tahap-tahap yang dilakukan adalah:

1. Proses Watermarking

a. Menghitung nilai RGB piksel citra asli 24-bit.

b. Merubah nilai RGB piksel citra asli ke bentuk biner 24-bit c. Menghitung nilai RGB piksel citra penyisip 24-bit.

d. Merubah nilai RGB piksel citra penyisip ke bentuk biner 24-bit e. Menghitung posisi piksel dengan menggunakan persamaan:

PosisiPiksel = Posisi_x_piksel*HEIGHT_CITRA_ASLI+posisi_y_piksel...(3.1) f. Menyisipkan tiap bit-bit citra penyisip ke dalam bit LSB ke-n komponen warna Blue

dari piksel citra asli dengan persamaan:

n =posisi_piksel mod 2...(3.2) g. Menampilkan citra watermarking.

2. Proses Ekstraksi

a. Menghitung nilai RGB piksel citra ber-watermarking. b. Menghitung dimensi citra penyisip.

c. Merubah nilai RGB piksel citra ber-watermarking ke bentuk biner 24-bit d. Membaca bit-bit bilangan biner untuk warna Blue (bit ke-17 hingga ke-24) e. Menghitung posisi piksel dengan menggunakan persamaan 3.1.

f. Mengambil bit LSB ke-n bilangan biner komponen warna Blue dari citra ber-watermarking dan nilai n dicari dengan menggunakan persamaan 3.2

g. Merekonstruksi penyisip dari bit-bit LSB yang diambil dari langkah ke-6. h. Menampilkan citra penyisip.


(36)

Pada penelitian ini digunakan citra asli dengan mode warna 24 bit sebagai citra digital yang hendak dilindungi dengan dimensi 300 x 200 piksel dan citra penyisip dengan format BMP yang berdimensi 40 x 53 piksel. Contoh citra asli dapat dilihat pada Gambar 3.1.

Gambar 3.1 Citra Asli[13].

Contoh citra penyisip berdimensi 40 x 53 piksel dengan nama bmw.bmp. Citra penyisip dapat dilihat pada Gambar 3.2.

Gambar 3.2 Citra Penyisip[13].

3.1.1 Menghitung Nilai Piksel Citra Asli

Citra asli 24-bit merupakan informasi watermark yang akan menampung file citra penyisip terdiri dari piksel dan setiap piksel terdiri dari tiga komposisi warna yaitu, Red, Green, Blue (RGB). Tiap warna memiliki nilai 0 <= Red <= 255, 0<= Green <=255, 0<= Blue <=255. Sehingga suatu warna akan berukuran 8 (delapan) bit dan setiap piksel berukuran 24-bit.

Proses pertama adalah membaca header yang berisi informasi dimensi citra asli. Pada citra asli berupa citra 24-bit, dimana nilai piksel langsung diuraikan dalam data bitmap. Sebagai contoh diberikan cuplikan data bitmap file citra asli dengan dimensi 4x24piksel seperti pada Gambar 3.3.


(37)

<header file bitmap> <header bitmap info> <larik data piksel>

000001100000110000011000 001101000001000000010100 101000000110111000101011 100000011000000010110000 010001100101100010010001 100010001010010110000001 001000111111000100100010 010011001000110000000000

Gambar 3.3 Contoh Data Bitmap File Citra Asli.

Pada citra asli di atas, data pertama adalah header yang berisi informasi pengenal file, ukuran file, data kedalaman warna, dan data dimensi citra. Di bawah data bitmap terdapat piksel pertama yang bernilai 000001100000110000011000 (24 bit) dan selanjutnya sampai piksel ke n.

3.1.2 Menghitung Nilai RGB Citra Asli

Setiap piksel RGB citra asli 24-bit mengandung tiga komponen warna 8-bit untuk masing-masing warna dasar (R, G, dan B), dengan kisaran nilai kandungan antara 0 (00000000) sampai 255 (11111111) untuk tiap warna. Sebagai contoh sebuah matriks citra asli dengan dimensi 4x12 piksel dengan nilai piksel seperti pada Gambar 3.4.

<header file bitmap> <header bitmap info> <larik data piksel>

000001100000110000011000 001101000001000000010100 101000000110111000101011 100000011000000010110000 010001100101100010010001 100010001010010110000001 001000111111000100100010 010011001000110000000000 001000101100000010110111 010000101010000010100001 010010100100101111000011 010100110000101000000001 000001010010000000100000 101101000000111000000100 100100100011000000000000 000000001001000000010111 010100111000110000000110 000110000110000000110001 100011010010011011000000 010000001000101010000000 000010010000010101010010 100100000001110000011000 100011001001010000111110 010101011000100000101010 011010100000001011010110 011100000000001100000110 010000000101010100100100 101001000001000111001001 110010011011001101000011 011001100001000100001101 111000000100010000001110 101010010000000000101010 001000110000000001000000 100000000010110100001010 010001000001100101011000 000010001000010110110111 010001101111011000000000 000010001011101000010101 000000000100001010001110 101000000001101010000100 001110000111000000000100 100010000000000000100001 110000100010100111101010 101110010011110101010100 101101100111001110000001 000010010000001100001001 110011001000000000001000 110101000000100110010000

Gambar 3.4 Matriks Citra Asli.

Rumusan nilai warna:

Nilai Red dimulai dari ke-1 s/d bit ke-8, untuk mencari nilai Red digunakan persamaan:

�������� = �2(�−1) 8

�=1


(38)

Dari persamaan 3.3 diperoleh nilai range_Red:

range_Red = 2(1-1) + 2(2-1) + 2(3-1) + 2(4-1) + 2(5-1) + 2(6-1) + 2(7-1) + 2(8-1) range_Red = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

range_Red = 255

nilai_piksel_red = (nilai_piksel AND 255)...(3.4) Nilai Green dimulai dari bit ke-9 s/d bit ke-16, untuk mencari nilai Green digunakan persamaan:

���������� = �2(�−1) 16 �=9

. . . … . . . (3.5)

Dari persamaan 3.5 diperoleh nilai range_green:

range_Green = 2(16 - 1) + 2(15 - 1) + 2(14 - 1) + 2(13 - 1) + 2(12 - 1) + 2(11 - 1) + 2(10 - 1) + 2(9 - 1) range_Green = 32768 + 16384 + 8192 + 4096 + 2048 + 1024 + 512 + 256

range_Green = 65280

nilai_piksel_green = (nilai_piksel AND 65.280)/(2561)...(3.6)

Nilai Blue dimulai dari bit ke-17 s/d bit ke-24, untuk mencari nilai Blue digunakan persamaan:

��������� = �2(�−1) 24

�=17

. . . … … . (3.7)

Dari persamaan 3.7 diperoleh nilai range_blue:

range_blue = 2(24 - 1) + 2(23 - 1) + 2(22 - 1) + 2(21 - 1) + 2(20 - 1) + 2(19 - 1) + 2(18 - 1) + 2(17 - 1)

range_blue = 8388608 + 4194304 + 2097152 + 1048576 + 524288 + 262144 + 131072 + 65536

range_blue = 16711680


(39)

Dari <larik data piksel> citra Gambar 3.4 diperoleh:

1. Nilai piksel (0,0) adalah 000001100000110000011000 biner atau 396.312 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 396.312 AND 255

Nilai Red = 24 (desimal) = 00011000 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (396.312 AND 65.280)/256 Nilai Green = 3.072 /256

Nilai Green = 12 (desimal) = 00001100 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (396.312 AND 16.711.680)/65536 Nilai Blue = 396.312 /65536

Nilai Blue = 6 (desimal) = 00000110 (biner) Sehingga diperoleh nilai RGB pada piksel (0,0): R = 24 (desimal) = 00011000 (biner)

G = 12 (desimal) = 00001100 (biner) B = 6 (desimal) = 00000110 (biner)

2. Nilai piksel (0,1) adalah 010001100101100010010001 biner atau 4.610.193 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 4.610.193 AND 255

Nilai Red = 145 (desimal) = 10010001 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (4.610.193 AND 65.280)/256 Nilai Green = 22.528 /256

Nilai Green = 88 (desimal) = 01011000 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (4.610.193 AND 16.711.680)/65536 Nilai Blue = 4.610.193 /65536

Nilai Blue = 70 (desimal) = 01000110 (biner) Sehingga diperoleh nilai RGB pada piksel (1,0): R = 145 (desimal) = 10010001 (biner)

G = 88 (desimal) = 01011000 (biner) B = 70 (desimal) = 01000110 (biner)

3. Nilai piksel (0,2) adalah 101000000110111000101011 biner atau 10.513.963 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 10.513.963 AND 255

Nilai Red = 43 (desimal) = 00101011 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (10.513.963 AND 65.280)/256 Nilai Green = 28.160 /256


(40)

Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (10.513.963 AND 16.711.680)/65536 Nilai Blue = 10.513.963 /65536

Nilai Blue = 160 (desimal) = 10100000 (biner) Sehingga diperoleh nilai RGB pada piksel (0,2): R = 43 (desimal) = 00101011 (biner)

G = 110 (desimal) = 01101110 (biner) B = 160 (desimal) = 10100000 (biner)

4. Nilai piksel (0,3) adalah 000001010010000000100000 biner atau 335.904 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 335.904 AND 255

Nilai Red = 32 (desimal) = 00100000 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (335.904 AND 65.280)/256 Nilai Green = 8.192 /256

Nilai Green = 32 (desimal) = 00100000 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (335.904 AND 16.711.680)/65536 Nilai Blue = 335.904 /65536

Nilai Blue = 5 (desimal) = 00000101 (biner) Sehingga diperoleh nilai RGB pada piksel (3,0): R = 32 (desimal) = 00100000 (biner)

G = 32 (desimal) = 00100000 (biner) B = 5 (desimal) = 00000101 (biner)

5. Nilai piksel (0,4) adalah 010100111000110000000110 biner atau 5.475.334 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 5.475.334 AND 255

Nilai Red = 6 (desimal) = 00000110 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (5.475.334 AND 65.280)/256 Nilai Green = 35.840 /256

Nilai Green = 140 (desimal) = 10001100 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (5.475.334 AND 16.711.680)/65536 Nilai Blue = 5.475.334 /65536

Nilai Blue = 83 (desimal) = 01010011 (biner) Sehingga diperoleh nilai RGB pada piksel (4,0): R = 6 (desimal) = 00000110 (biner)

G = 140 (desimal) = 10001100 (biner) B = 83 (desimal) = 01010011 (biner)


(41)

6. Nilai piksel (0,5) adalah 000010010000010101010010 biner atau 591.186 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 591.186 AND 255

Nilai Red = 82 (desimal) = 01010010 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (591.186 AND 65.280)/256 Nilai Green = 1.280 /256

Nilai Green = 5 (desimal) = 00000101 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (591.186 AND 16.711.680)/65536 Nilai Blue = 591.186 /65536

Nilai Blue = 9 (desimal) = 00001001 (biner) Sehingga diperoleh nilai RGB pada piksel (5,0): R = 82 (desimal) = 01010010 (biner)

G = 5 (desimal) = 00000101 (biner) B = 9 (desimal) = 00001001 (biner)

7. Nilai piksel (0,6) adalah 011010100000001011010110 biner atau 6.947.542 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 6.947.542 AND 255

Nilai Red = 214 (desimal) = 11010110 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (6.947.542 AND 65.280)/256 Nilai Green 512 /256

Nilai Green = 2 (desimal) = 00000010 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (6.947.542 AND 16.711.680)/65536 Nilai Blue = 6.947.542 /65536

Nilai Blue = 106 (desimal) = 01101010 (biner) Sehingga diperoleh nilai RGB pada piksel (6,0): R = 214 (desimal) = 11010110 (biner)

G = 2 (desimal) = 00000010 (biner) B = 106 (desimal) = 01101010 (biner)


(42)

8. Nilai piksel (0,7) adalah 110010011011001101000011 biner atau 13.218.627 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 13.218.627 AND 255

Nilai Red = 67 (desimal) = 01000011 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (13.218.627 AND 65.280)/256 Nilai Green = 45.824 /256

Nilai Green = 179 (desimal) = 10110011 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (13.218.627 AND 16.711.680)/65536 Nilai Blue = 13.218.627 /65536

Nilai Blue = 201 (desimal) = 11001001 (biner) Sehingga diperoleh nilai RGB pada piksel (7,0): R = 67 (desimal) = 01000011 (biner)

G = 179 (desimal) = 10110011 (biner) B = 201 (desimal) = 11001001 (biner)

9. Nilai piksel (0,8) adalah 001000110000000001000000 biner atau 2.293.824 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 2.293.824 AND 255

Nilai Red = 64 (desimal) = 01000000 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (2.293.824 AND 65.280)/256 Nilai Green 000 /256

Nilai Green = 0 (desimal) = 00000000 (biner)

10. Nilai piksel (0,9) adalah 010001101111011000000000 biner atau 4.650.496 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 4.650.496 AND 255

Nilai Red = 0 (desimal) = 00000000 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (4.650.496 AND 65.280)/256 Nilai Green = 62.976 /256

Nilai Green = 246 (desimal) = 11110110 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (4.650.496 AND 16.711.680)/65536 Nilai Blue = 4.650.496 /65536

Nilai Blue = 70 (desimal) = 01000110 (biner) Sehingga diperoleh nilai RGB pada piksel (9,0): R = 0 (desimal) = 00000000 (biner)

G = 246 (desimal) = 11110110 (biner) B = 70 (desimal) = 01000110 (biner)

Untuk menghitung piksel (0,10) sampai piksel (3,11) dilakukan dengan cara yang sama seperti diatas.


(43)

3.1.3 Menghitung Nilai Piksel Citra Penyisip

Citra penyisip 24-bit merupakan informasi watermark yang akan disisipkan ke file citra penyisip terdiri dari piksel dan setiap piksel terdiri dari 3 (tiga) komposisi warna yaitu, Red, Green, Blue (RGB). Tiap warna memiliki nilai 0 <= Red <= 255, 0<= Green <=255, 0<= Blue <=255. Sehingga suatu warna akan berukuran 8 (delapan) bit dan setiap piksel berukuran 24-bit.

Proses pertama adalah membaca header yang berisi informasi dimensi citra penyisip. Dimensi citra yang akan dijadikan penyisip harus berukuran maksimal 1/24 dari citra asli. Hal ini dikarenakan setiap bit dari citra penyisip di tampung pada 1 (satu) bit dari tiap piksel citra asli 24-bit sehingga untuk menampung 1 piksel citra penyisip 24-bit dibutuhkan 24 piksel citra asli 24-bit, nilai piksel langsung diuraikan dalam data <larik data bitmap>. Sebagai contoh diberikan cuplikan data bitmap file citra asli dengan dimensi 2x2 piksel seperti pada Gambar 3.5.

<header file bitmap> <header bitmap info> <larik data piksel>

000010010000001100001001 100000001100010001100010

Gambar 3.5 Contoh data bitmap file citra penyisip.

Pada citra asli di atas, data pertama adalah header yang berisi informasi pengenal file, ukuran file, data kedalaman warna, dan data dimensi citra. Di bawah data bitmap terdapat piksel pertama yang bernilai 000010010000001100001001 (24 bit) dan selanjutnya sampai piksel ke n.

3.1.4 Menghitung Nilai RGB Penyisip

Menghitung nilai RGB citra penyisip adalah sama dengan citra asli. Sebagai contoh sebuah matriks citra penyisip dengan dimensi 2x1 piksel dengan nilai piksel seperti pada Gambar 3.6

<header file bitmap> <header bitmap info> <larik data piksel>


(44)

Gambar 3.6 Contoh data bitmap file citra penyisip. Rumusan nilai warna:

Nilai Red dimulai dari ke-1 s/d bit ke-8, untuk mencari nilai Red dapat menggunakan persamaan 3.3.

Nilai Green dimulai dari bit ke-9 s/d bit ke-16, untuk mencari nilai Green dapat menggunakan persamaan 3.5.

Nilai Blue dimulai dari bit ke-17 s/d bit ke-24, untuk mencari nilai Blue dapat menggunakan persamaan 3.7.

Dari <larik data piksel> citra Gambar 3.6 diperoleh:

1. Nilai piksel (0,0) adalah 000010010000001100001001 biner atau 590.601 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 590.601 AND 255

Nilai Red = 9 (desimal) = 00001001 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (590.601 AND 65.280)/256 Nilai Green 768 /256

Nilai Green = 3 (desimal) = 00000011 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (590.601 AND 16.711.680)/65536 Nilai Blue = 590.601 /65536

Nilai Blue = 9 (desimal) = 00001001 (biner) Sehingga diperoleh nilai RGB pada piksel (0,0): R = 9 (desimal) = 00001001 (biner)

G = 3 (desimal) = 00000011 (biner) B = 9 (desimal) = 00001001 (biner)


(45)

2. Nilai piksel (0,1) adalah 100000001100010001100010 biner atau 8.438.882 (desimal) Nilai komponen Red dengan persamaan (3.4):

Nilai Red = 8.438.882 AND 255

Nilai Red = 98 (desimal) = 01100010 (biner) Nilai komponen green dengan persamaan (3.6): Nilai Green = (8.438.882 AND 65.280)/256 Nilai Green = 50.176 /256

Nilai Green = 196 (desimal) = 11000100 (biner) Nilai komponen blue dengan persamaan (3.8): Nilai Blue = (8.438.882 AND 16.711.680)/65536 Nilai Blue = 8.438.882 /65536

Nilai Blue = 128 (desimal) = 10000000 (biner) Sehingga diperoleh nilai RGB pada piksel (1,0): R = 98 (desimal) = 01100010 (biner)

G = 196 (desimal) = 11000100 (biner) B = 128 (desimal) = 10000000 (biner)

3.1.5 Menghitung Posisi Piksel

Penyisipan bit-bit citra penyisip dengan algoritma MLSB dilakukan dengan cara menyisipkan bit-bit citra penyisip ke LSB ke-n sesuai dengan persamaan 3.2. Posisi piksel dari citra asli 4x24 piksel diambil dari Gambar 3.4 yang kemudian dihitung dengan persamaan 3.1 dapat dilihat pada tabel berikut:

Tabel 3.1 Tabel hasil perhitungan posisi piksel.

Posisi X Posisi Y Height Citra Asli Posisi Piksel

0 0 12 0

0 1 12 1

0 2 12 2

0 3 12 3

0 4 12 4

0 5 12 5

0 6 12 6

0 7 12 7

0 8 12 8


(46)

Lanjutan Tabel 3.1

0 10 12 10

0 11 12 11

1 0 12 12

1 1 12 13

1 2 12 14

1 3 12 15

1 4 12 16

1 5 12 17

1 6 12 18

1 7 12 19

1 8 12 20

1 9 12 21

1 10 12 22

1 11 12 23

2 0 12 24

2 1 12 25

2 2 12 26

2 3 12 27

2 4 12 28

2 5 12 29

2 6 12 30

2 7 12 31

2 8 12 32

2 9 12 33

2 10 12 34

2 11 12 35

3 0 12 36

3 1 12 37

3 2 12 38

3 3 12 39

3 4 12 40

3 5 12 41

3 6 12 42

3 7 12 43

3 8 12 44

3 9 12 45

3 10 12 46

3 11 12 47


(47)

Keterangan:

Posisi X: Nilai X dari piksel(X,Y) Posisi Y: Nilai Y dari piksel(X,Y)

Heigth Citra Asli: Dimensi Y dari citra berukuran (X,Y)

Posisi Piksel: hasil perhitungan dengan menggunakan persamaan 3.1

3.1.6 Menyisipkan tiap bit-bit citra penyisip

Posisi penyisipan tiap bit-bit citra penyisip dilakukan dengan menggunakan persamaan 3.2, selanjutnya nilai bit-bit citra penyisip mengantikan nilai bit LSB ke-n dari komponen warna Blue citra asli. Posis penyisipan bit-bit citra penyisip pada bit ke-n dari komponen warna Blue citra asli dapat dilihat pada Tabel 3.2.

Tabel 3.2 Tabel Penyisipan bit-bit penyisip

No.

Nilai Biner Piksel Citra Asli Posisi Piksel

Bit Citra Penyi sip

n =Posisi Piksel (MOD) 2

Nilai Biner Akhir Piksel (X,Y)

1 000001100000110000011000 0 0 0 000001 1 0 0000110000011000 2 001101000001000000010100 1 0 1 001101 0 0 0001000000010100

3 101000000110111000101011 2 0 0 101000 0 0 0110111000101011 4 100000011000000010110000 3 0 1 100000 0 1 1000000010110000 5 010001100101100010010001 4 1 0 010001 1 1 0101100010010001 6 100010001010010110000001 5 0 1 100010 0 0 1010010110000001 7 001000111111000100100010 6 0 0 001000 1 0 1111000100100010 8 010011001000110000000000 7 1 1 010011 1 0 1000110000000000 9 001000101100000010110111 8 0 0 001000 1 0 1100000010110111 10 010000101010000010100001 9 0 1 010000 0 0 1010000010100001 11 010010100100101111000011 10 0 0 010010 1 0 0100101111000011 12 010100110000101000000001 11 0 1 010100 0 1 0000101000000001 13 000001010010000000100000 12 0 0 000001 0 0 0010000000100000 14 101101000000111000000100 13 0 1 101101 0 0 0000111000000100 15 100100100011000000000000 14 1 0 100100 1 1 0011000000000000 16 000000001001000000010111 15 1 1 000000 1 0 1001000000010111 17 010100111000110000000110 16 0 0 010100 1 0 1000110000000110 18 000110000110000000110001 17 0 1 000110 0 0 0110000000110001 19 100011010010011011000000 18 0 0 100011 0 0 0010011011000000 20 010000001000101010000000 19 0 1 010000 0 0 1000101010000000


(48)

Lanjutan Tabel 3.2

21 000010010000010101010010 20 1 0 000010 0 1 0000010101010010 22 100100000001110000011000 21 0 1 100100 0 0 0001110000011000 23 100011001001010000111110 22 0 0 100011 0 0 1001010000111110 24 010101011000100000101010 23 1 1 010101 1 1 1000100000101010 25 011010100000001011010110 24 1 0 011010 1 1 0000001011010110 26 011100000000001100000110 25 1 1 011100 1 0 0000001100000110 27 010000000101010100100100 26 0 0 010000 0 0 0101010100100100 28 101001000001000111001001 27 0 1 101001 0 0 0001000111001001 29 110010011011001101000011 28 1 0 110010 0 1 1011001101000011 30 011001100001000100001101 29 1 1 011001 1 0 0001000100001101 31 111000000100010000001110 30 0 0 111000 0 0 0100010000001110 32 101010010000000000101010 31 0 1 101010 0 1 0000000000101010 33 001000110000000001000000 32 1 0 001000 1 1 0000000001000000 34 100000000010110100001010 33 0 1 100000 0 0 0010110100001010 35 010001000001100101011000 34 0 0 010001 0 0 0001100101011000 36 000010001000010110110111 35 0 1 000010 0 0 1000010110110111 37 010001101111011000000000 36 0 0 010001 1 0 1111011000000000 38 000010001011101000010101 37 0 1 000010 0 0 1011101000010101 39 000000000100001010001110 38 0 0 000000 0 0 0100001010001110 40 101000000001101010000100 39 0 1 101000 0 0 0001101010000100 41 001110000111000000000100 40 0 0 001110 0 0 0111000000000100 42 100010000000000000100001 41 0 1 100010 0 0 0000000000100001 43 110000100010100111101010 42 0 0 110000 1 0 0010100111101010 44 101110010011110101010100 43 0 1 101110 0 1 0011110101010100 45 101101100111001110000001 44 1 0 101101 1 1 0111001110000001 46 000010010000001100001001 45 0 1 000010 0 1 0000001100001001 47 110011001000000000001000 46 0 0 110011 0 0 1000000000001000 48 110101000000100110010000 47 0 1 110101 0 0 0000100110010000

3.1.7 Menampilkan Citra ber-Watermarking

Setelah data citra asli disisipi bit-bit dari citra penyisip, data bit citra asli kemungkinan akan berubah sesuai dengan bit penyisip. Data piksel citra sebelum penyisipan dapat anda lihat pada Gambar 3.7 dan data piksel citra sesudah penyisipan dapat anda lihat pada Gambar 3.8. Perubahan nilai biner dan RGB lebih rinci dapat dilihat pada Tabel 3.3.


(49)

Perubahan nilai pada komponen warna Blue tidak memberikan perubahan warna yang significant karena sentifitas mata manusia terhadap warna biru sangat kecil, sehingga memungkinkan untuk melakukan perubahan nilai tanpa bisa dideteksi secara kasat mata.

<header file bitmap> <header bitmap info> <larik data piksel>

000001100000110000011000 001101000001000000010100 101000000110111000101011 100000011000000010110000 010001100101100010010001 100010001010010110000001 001000111111000100100010 010011001000110000000000 001000101100000010110111 010000101010000010100001 010010100100101111000011 010100110000101000000001 000001010010000000100000 101101000000111000000100 100100100011000000000000 000000001001000000010111 010100111000110000000110 000110000110000000110001 100011010010011011000000 010000001000101010000000 000010010000010101010010 100100000001110000011000 100011001001010000111110 010101011000100000101010 011010100000001011010110 011100000000001100000110 010000000101010100100100 101001000001000111001001 110010011011001101000011 011001100001000100001101 111000000100010000001110 101010010000000000101010 001000110000000001000000 100000000010110100001010 010001000001100101011000 000010001000010110110111 010001101111011000000000 000010001011101000010101 000000000100001010001110 101000000001101010000100 001110000111000000000100 100010000000000000100001 110000100010100111101010 101110010011110101010100 101101100111001110000001 000010010000001100001001 110011001000000000001000 110101000000100110010000

Gambar 3.7 Data Bit citra asli.

<header file bitmap> <header bitmap info> <larik data piksel>

000001100000110000011000 001101000001000000010100 101000000110111000101011 100000011000000010110000 010001110101100010010001 100010001010010110000001 001000101111000100100010 010011101000110000000000 001000101100000010110111 010000001010000010100001 010010100100101111000011 010100010000101000000001 000001000010000000100000 101101000000111000000100 100100110011000000000000 000000101001000000010111 010100101000110000000110 000110000110000000110001 100011000010011011000000 010000001000101010000000 000010010000010101010010 100100000001110000011000 100011001001010000111110 010101111000100000101010 011010110000001011010110 011100100000001100000110 010000000101010100100100 101001000001000111001001 110010011011001101000011 011001100001000100001101 111000000100010000001110 101010010000000000101010 001000110000000001000000 100000000010110100001010 010001000001100101011000 000010001000010110110111 010001101111011000000000 000010001011101000010101 000000000100001010001110 101000000001101010000100 001110000111000000000100 100010000000000000100001 110000100010100111101010 101110010011110101010100 101101110111001110000001 000010010000001100001001 110011001000000000001000 110101000000100110010000


(50)

Tabel 3.3 Tabel Nilai RGB

Piksel (x,y) Sebelum penyisipan Setelah penyisipan

Biner R G B Biner R G B

(0,0) 000001100000110000011000 24 12 6 000001100000110000011000 24 12 6 (0,1) 010001100101100010010001 145 88 71 010001110101100010010001 145 88 70 (0,2) 001000101100000010110111 183 192 34 001000101100000010110111 183 192 34 (0,3) 000001010010000000100000 32 32 4 000001000010000000100000 32 32 5 (0,4) 010100111000110000000110 6 140 82 010100101000110000000110 6 140 83 (0,5) 000010010000010101010010 82 5 9 000010010000010101010010 82 5 9 (0,6) 011010100000001011010110 214 2 107 011010110000001011010110 214 2 106 (0,7) 110010011011001101000011 67 179 201 110010011011001101000011 67 179 201 (0,8) 001000110000000001000000 64 0 35 001000110000000001000000 64 0 35 (0,9) 010001101111011000000000 0 246 70 010001101111011000000000 0 246 70 (0,10) 001110000111000000000100 4 112 56 001110000111000000000100 4 112 56 (0,11) 101101100111001110000001 129 115 183 101101110111001110000001 129 115 182

(1,0) 001101000001000000010100 20 16 52 001101000001000000010100 20 16 52 (1,1) 100010001010010110000001 129 165 136 100010001010010110000001 129 165 136 (1,2) 010000101010000010100001 161 160 64 010000001010000010100001 161 160 66 (1,3) 101101000000111000000100 4 14 180 101101000000111000000100 4 14 180 (1,4) 000110000110000000110001 49 96 24 000110000110000000110001 49 96 24 (1,5) 100100000001110000011000 24 28 144 100100000001110000011000 24 28 144 (1,6) 011100000000001100000110 6 3 114 011100100000001100000110 6 3 112 (1,7) 011001100001000100001101 13 17 102 011001100001000100001101 13 17 102 (1,8) 100000000010110100001010 10 45 128 100000000010110100001010 10 45 128 (1,9) 000010001011101000010101 21 186 8 000010001011101000010101 21 186 8 (1,10) 100010000000000000100001 33 0 136 100010000000000000100001 33 0 136 (1,11) 000010010000001100001001 9 3 9 000010010000001100001001 9 3 9

(2,0) 101000000110111000101011 43 110 160 101000000110111000101011 43 110 160 (2,1) 001000111111000100100010 34 241 34 001000101111000100100010 34 241 35 (2,2) 010010100100101111000011 195 75 74 010010100100101111000011 195 75 74 (2,3) 100100100011000000000000 0 48 147 100100110011000000000000 0 48 146 (2,4) 100011010010011011000000 192 38 140 100011000010011011000000 192 38 141 (2,5) 100011001001010000111110 62 148 140 100011001001010000111110 62 148 140 (2,6) 010000000101010100100100 36 85 64 010000000101010100100100 36 85 64 (2,7) 111000000100010000001110 14 68 224 111000000100010000001110 14 68 224 (2,8) 010001000001100101011000 88 25 68 010001000001100101011000 88 25 68 (2,9) 000000000100001010001110 142 66 0 000000000100001010001110 142 66 0 (2,10) 110000100010100111101010 234 41 194 110000100010100111101010 234 41 194 (2,11) 110011001000000000001000 8 128 204 110011001000000000001000 8 128 204 (3,0) 100000011000000010110000 176 128 129 100000011000000010110000 176 128 129


(1)

If bytePos Mod 2 = 0 Then

bByte = (tempColor.B And 253) + (2 * pByte) Else

bByte = (tempColor.B And 254) + (1 * pByte) End If

rByte = tempColor.R gByte = tempColor.G

tempColor = Color.FromArgb(rByte, gByte, bByte) bitmapCitraWatermarked.SetPixel(i, j, tempColor) bytePos = bytePos + 1

prevWatermarked.Image = citraWatermarked End If

Next Next

citraWatermarked = bitmapCitraWatermarked btnShowWatermarked.Enabled = True

SaveFileDialog1.InitialDirectory = "d:\watermarking\citra terwatermark"

SaveFileDialog1.Filter = "Image File |*.bmp;" SaveFileDialog1.FilterIndex = 2

SaveFileDialog1.RestoreDirectory = True

SaveFileDialog1.Title = "Simpan file citra terwatermark" Dim rndFname As Integer

Dim watermarkFSize As Double rndFname = Rnd() * (2 ^ 16)

citraWatermarked.Save(rndFname & ".bmp", ImageFormat.Bmp) Dim info As New FileInfo(rndFname & ".bmp")

watermarkFSize = info.Length / 1024

lblWatermarkSize.Text = String.Format("{0:n2}", watermarkFSize) & " KByte(s)"

System.IO.File.Delete(rndFname & ".bmp")

lblWatermarkResX.Text = citraWatermarked.Width lblWatermarkResY.Text = citraWatermarked.Height If SaveFileDialog1.ShowDialog() =

System.Windows.Forms.DialogResult.OK Then

citraWatermarked.Save(SaveFileDialog1.FileName, ImageFormat.Bmp)

MsgBox("File image terwatermark telah disimpan") End If

End Sub

Private Sub btnEkstrak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEkstrak.Click

Form1.Show() End Sub

End Class

Source Code Ekstraksi :

Imports System.Drawing.Imaging Public Class Form1

Public imageWatermark, imagePenyisip, imageExctract As Image Public bitmapWatermark, bitmapPenyisip, bitmapExctract As Bitmap Public watermarkPixelFormat, penyisipPixelFormat As PixelFormat Public watermarkRes, watermarkResX, watermarkResY, penyisipRes, penyisipResX, penyisipResY, maxPenyisipRes As Integer

Public flag As Byte


(2)

Private Sub btnEkstrak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEkstrak.Click

btnBrowseCitraPenyisip.Enabled = False btnProses.Enabled = False

btnShowWatermarked.Enabled = False txtCitraAsli.Text = ""

txtCitraPenyisip.Text = "" PictureBox1.Image = Nothing PictureBox2.Image = Nothing PictureBox3.Image = Nothing End Sub

Private Sub btnBrowseCitraAsli_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseCitraAsli.Click

If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then

imageWatermark = Image.FromFile(OpenFileDialog1.FileName) watermarkPixelFormat = imageWatermark.PixelFormat

If watermarkPixelFormat = PixelFormat.Format24bppRgb Then txtCitraAsli.Text = OpenFileDialog1.FileName

MsgBox("Masukkan hanya file penyisip yang dipakai sebagai penyisip")

maxPenyisipRes = imageWatermark.Height * imageWatermark.Width / 24

btnBrowseCitraPenyisip.Enabled = True btnBrowseCitraPenyisip.Select()

PictureBox1.Image = imageWatermark Else

MsgBox("Kedalaman pixel gambar harus 24-bit") End If

End If End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.Tag = 0

OpenFileDialog1.InitialDirectory = "d:\Watermarking\Citra Terwatermark"

OpenFileDialog1.Filter = "Image File |*.bmp;" OpenFileDialog1.FilterIndex = 2

OpenFileDialog1.RestoreDirectory = True

OpenFileDialog1.Title = "Buka file citra watermark" OpenFileDialog1.FileName = ""

OpenFileDialog2.InitialDirectory = "d:\Watermarking\Citra Penyisip"

OpenFileDialog2.Filter = "Image File |*.bmp;" OpenFileDialog2.FilterIndex = 2

OpenFileDialog2.RestoreDirectory = True

OpenFileDialog2.Title = "Buka file citra penyisip" OpenFileDialog2.FileName = ""

End Sub

Private Sub btnBrowseCitraPenyisip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

btnBrowseCitraPenyisip.Click flag = 0

Dim test As Boolean

If OpenFileDialog2.ShowDialog() =

System.Windows.Forms.DialogResult.OK Then


(3)

txtCitraPenyisip.Text = OpenFileDialog2.FileName penyisipPixelFormat = imagePenyisip.PixelFormat

test = penyisipPixelFormat = PixelFormat.Format24bppRgb PictureBox3.Image =

Image.FromFile(OpenFileDialog2.FileName) If Not (test) Then

MsgBox("Kedalaman pixel gambar harus 24-bit") End If

flag = (flag Or (2 * Convert.ToByte(test)))

test = ((imagePenyisip.Height * imagePenyisip.Width / 24) <= maxPenyisipRes)

If Not (test) Then

MsgBox("Masukkan hanya file penyisip yang dipakai sebagai file penyisip")

End If

flag = (flag Or (4 * Convert.ToByte(test))) End If

btnProses.Enabled = True btnProses.Select()

End Sub

Private Sub btnProses_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProses.Click

Dim rByte, gByte, bByte As Byte Dim bytePos As Integer

Dim tempColor As Color Dim i, j As Integer If flag = 6 Then bytePos = 0

watermarkResX = imageWatermark.Width watermarkResY = imageWatermark.Height penyisipResX = imagePenyisip.Width penyisipResY = imagePenyisip.Height

penyisipRes = penyisipResX * penyisipResY watermarkRes = watermarkResX * watermarkResY

ProgressBar1.Maximum = penyisipRes * 2 + watermarkRes ProgressBar1.Value = 0

ProgressBar1.Update()

imageExctract = Image.FromFile(OpenFileDialog2.FileName) bitmapWatermark = imageWatermark

extractPenyisipBitColor = "" penyisipBitColor = ""

bitmapPenyisip = imagePenyisip For i = 0 To penyisipResX - 1 For j = 0 To penyisipResY - 1

tempColor = bitmapPenyisip.GetPixel(i, j) penyisipBitColor = penyisipBitColor & Convert.ToString(tempColor.R, 2).PadLeft(8, "0")

penyisipBitColor = penyisipBitColor & Convert.ToString(tempColor.G, 2).PadLeft(8, "0")

penyisipBitColor = penyisipBitColor & Convert.ToString(tempColor.B, 2).PadLeft(8, "0")

Next

ProgressBar1.Value = ProgressBar1.Value + penyisipResY

ProgressBar1.Update() Next

extractPenyisipBitColor = "" For i = 0 To watermarkResX - 1 For j = 0 To watermarkResY - 1


(4)

tempColor = bitmapWatermark.GetPixel(i, j) If bytePos Mod 2 = 0 Then

bByte = ((tempColor.B And 2) >> 1) Else

bByte = (tempColor.B And 1) End If

extractPenyisipBitColor = extractPenyisipBitColor & bByte

bytePos = bytePos + 1 Next

ProgressBar1.Value = ProgressBar1.Value + watermarkResY

ProgressBar1.Update() Next

bytePos = 0

bitmapExctract = imagePenyisip Dim rStr, gStr, bStr As String For i = 0 To penyisipResX - 1 For j = 0 To penyisipResY - 1

rStr = extractPenyisipBitColor.Substring (bytePos, 8)

gStr = extractPenyisipBitColor.Substring (bytePos + 8, 8)

bStr = extractPenyisipBitColor.Substring (bytePos + 16, 8)

rByte = Convert.ToByte(rStr, 2) gByte = Convert.ToByte(gStr, 2) bByte = Convert.ToByte(bStr, 2)

tempColor = Color.FromArgb(rByte, gByte, bByte) bitmapExctract.SetPixel(i, j, tempColor)

bytePos = bytePos + 24 Next

ProgressBar1.Value = ProgressBar1.Value + penyisipResY

ProgressBar1.Update() Next

imageExctract = bitmapExctract SaveFileDialog1.InitialDirectory = "d:\Watermarking\Penyisip Ekstraksi"

SaveFileDialog1.Filter = "Image File |*.bmp;" SaveFileDialog1.FilterIndex = 2

SaveFileDialog1.RestoreDirectory = True

SaveFileDialog1.Title = "Simpan file citra terwatermark" Me.Tag = Me.Tag + 1

SaveFileDialog1.FileName = ("Ekstrak" & Me.Tag).ToString.PadLeft(3, "0")

If SaveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then

bitmapExctract.Save(SaveFileDialog1.FileName, ImageFormat.Bmp)

MsgBox("File image ekstrak telah disimpan") End If

btnShowWatermarked.Enabled = True PictureBox2.Image = imageExctract End If

End Sub


(5)

System.Object, ByVal e As System.EventArgs) MainForm.citraPreview = imageWatermark

MainForm.previewFormText = "Preview citra watermark" PreviewForm.Show()

End Sub

Private Sub btnPreviewCitraPenyisip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

MainForm.citraPreview = imageExctract

MainForm.previewFormText = "Preview citra hasil ekstraksi" PreviewForm.Show()

End Sub

Private Sub btnShowWatermarked_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowWatermarked.Click

Form4.Show()

Me.Enabled = False End Sub

Source Code Hitung Bit Error Rate (BER) :

Public Class Form4

Private Sub Form4_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Form1.Enabled = True

End Sub

Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim penyisipBit, ekstrakBit, percentError As String Dim totalBit, bitRead, count, totalError As Integer Dim rateError As Double

penyisipBit = Form1.penyisipBitColor

ekstrakBit = Form1.extractPenyisipBitColor totalError = 0

bitRead = 0 rateError = 0.0 percentError = ""

If penyisipBit.Length <= ekstrakBit.Length Then totalBit = penyisipBit.Length

progress.Maximum = totalBit progress.Minimum = 0

For count = 0 To totalBit - 1 If Not (penyisipBit.Substring

(count, 1).Equals(ekstrakBit.Substring(count, 1))) Then

totalError = totalError + 1 rateError = totalError / bitRead End If

percentError = String.Format("{0:n2}", rateError * 100)

bitRead = count + 1 progress.Value = bitRead progress.Update()


(6)

lblBERValue.Text = percentError & "%" Next

End If

penyisipBit = "" ekstrakBit = "" End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Me.Close() End Sub

Soucre Code Preview:

Public Class PreviewForm

Public picResX, picResY As Integer

Private Sub PreviewForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.Text = MainForm.previewFormText

PictureBox1.Image = MainForm.citraPreview

'If picResX > Me.Width And picResX <= Me.MaximumSize.Width Then

'PictureBox1.Width = picResX

'Me.Width = PictureBox1.Width + 16 'End If

'If picResY > Me.Height And picResY <= Me.MaximumSize.Height Then

'PictureBox1.Height = picResY

' Me.Height = PictureBox1.Height + 80 'End If

End Sub

Private Sub previewFormClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles previewFormClose.Click

Me.Close() End Sub

Private Sub PreviewForm_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize

previewFormClose.Left = (Me.Size.Width – previewFormClose.Size.Width) / 2

previewFormClose.Top = Me.Height - 70 End Sub