Bab 1
Pengantar Pengolahan Citra
ata atau informasi tidak hanya disajikan dalam bentuk teks, tetapi juga dapat berupa gambar, audio (bunyi, suara, musik), dan video. Keempat macam data atau informasi ini sering disebut multimedia. Era teknologi informasi saat ini tidak dapat dipisahkan dari multimedia. Situs web (website ) di Internet dibuat semenarik mungkin dengan menyertakan visualisasi berupa gambar atau video yang dapat diputar. Beberapa waktu lalu istilah SMS (Short Message Service) begitu populer bagi pengguna telepon genggam (handphone atau HP). Tetapi, saat ini orang tidak hanya dapat mengirim pesan dalam bentuk teks, tetapi juga dapat mengirim pesan berupa gambar maupun video, yang dikenal dengan layanan MMS (Multimedia Message Service).
D
Citra (image)1 –istilah lain untuk gambar– sebagai salah satu komponen multimedia memegang peranan sangat penting sebagai bentuk informasi visual. Citra mempunyai karakteristik yang tidak dimiliki oleh data teks, yaitu citra kaya dengan informasi. Ada sebuah peribahasa yang berbunyi “sebuah gambar bermakna lebih dari seribu kata” (a picture is more than a thousand words). Maksudnya tentu sebuah gambar dapat memberikan informasi yang lebih banyak daripada informasi tersebut disajikan dalam bentuk kata-kata (tekstual). Bab pertama ini berisi pembahasan mengenai citra dan pengolahannya. Selain itu, di dalam bab ini dipaparkan pula bidang-bidang yang berkaitan dengan pengolahan citra, seperti grafika komputer dan pengenalan pola. 1
Di dalam buku ini, kata “gambar” dan “citra” digunakan secara bergantian, namun keduanya mengacu pada objek yang sama. Kata “citra” akan lebih banyak digunakan pada materi yang berkaitan dengan konseptual dan teknis, sementara kata “gambar” digunakan jika mengacu pada objek yang dibicarakan dalam kehidupan sehari-hari.
Bab 1_Pengantar Pengolahan Citra
1
1.1 Citra Secara harafiah, citra (image) adalah gambar pada bidang dwimatra (dua dimensi). Gambar 1.1 adalah citra seorang gadis model yang bernama Lena, dan gambar di sebelah kanannya adalah citra kapal di sebuah pelabuhan. Ditinjau dari sudut pandang matematis, citra merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dwimatra. Sumber cahaya menerangi objek, objek memantulkan kembali sebagian dari berkas cahaya tersebut. Pantulan cahaya ini ditangkap oleh oleh alat-alat optik, misalnya mata pada manusia, kamera, pemindai (scanner), dan sebagainya, sehingga bayangan objek yang disebut citra tersebut terekam. Citra sebagai keluaran dari suatu sistem perekaman data dapat bersifat [MUR92]: 1. optik berupa foto, 2. analog berupa sinyal video seperti gambar pada monitor televisi, 3. digital yang dapat langsung disimpan pada suatu pita magnetik. Citra yang dimaksudkan di dalam keseluruhan isi buku ini adalah “citra diam” (still images). Citra diam adalah citra tunggal yang tidak bergerak. Gambar 1.1 adalah dua buah citra diam. Untuk selanjutnya, citra diam kita sebut citra saja.
(b) Kapal
(a) Lena Gambar 1.1 Citra Lena dan citra kapal
Citra bergerak (moving images) adalah rangkaian citra diam yang ditampilkan secara beruntun (sekuensial) sehingga memberi kesan pada mata kita sebagai gambar yang bergerak. Setiap citra di dalam rangkaian itu disebut frame. Gambar-gambar yang tampak pada film layar lebar atau televisi pada hakikatnya terdiri atas ratusan sampai ribuan frame. 2
Pengolahan Citra Digital
1.2 Definisi Pengolahan Citra Meskipun sebuah citra kaya informasi, namun seringkali citra yang kita miliki mengalami penurunan mutu (degradasi), misalnya mengandung cacat atau derau (noise), warnanya terlalu kontras, kurang tajam, kabur (blurring), dan sebagainya. Tentu saja citra semacam ini menjadi lebih sulit diinterpretasi karena informasi yang disampaikan oleh citra tersebut menjadi berkurang. Agar citra yang mengalami gangguan mudah diinterpretasi (baik oleh manusia maupun mesin), maka citra tersebut perlu dimanipulasi menjadi citra lain yang kualitasnya lebih baik. Bidang studi yang menyangkut hal ini adalah pengolahan citra (image processing). Pengolahan citra adalah pemrosesan citra, khususnya dengan menggunakan komputer, menjadi citra yang kualitasnya lebih baik. Sebagai contoh, citra burung nuri pada Gambar 1.2 (a) tampak agak gelap, lalu dengan operasi pengolahan citra kontrasnya diperbaiki sehingga menjadi lebih terang dan tajam (b). Umumnya, operasi-operasi pada pengolahan citra diterapkan pada citra bila [JAI89]: 1. perbaikan atau memodifikasi citra perlu dilakukan untuk meningkatkan kualitas penampakan atau untuk menonjolkan beberapa aspek informasi yang terkandung di dalam citra, 2. elemen di dalam citra perlu dikelompokkan, dicocokkan, atau diukur, 3. sebagian citra perlu digabung dengan bagian citra yang lain.
(a)
(b)
Gambar 1.2. (a) Citra burung nuri yang agak gelap, (b) Citra burung yang telah diperbaiki kontrasnya sehingga terlihat jelas dan tajam
Bab 1_Pengantar Pengolahan Citra
3
Di dalam bidang komputer, sebenarnya ada tiga bidang studi yang berkaitan dengan data citra, namun tujuan ketiganya berbeda, yaitu: 1. Grafika Komputer (computer graphics). 2. Pengolahan Citra (image processing). 3. Pengenalan Pola (pattern recognition/image interpretation). Hubungan antara ketiga bidang (grafika komputer, pengolahan citra, pengenalan pola) ditunjukkan pada Gambar 1.3. Pengolahan Citra citra
citra
Grafika Komputer
Pengenalan Pola
deskripsi
deskripsi
Gambar 1.3. Tiga bidang studi yang berkaitan dengan citra
Grafika Komputer bertujuan menghasilkan citra (lebih tepat disebut grafik atau picture) dengan primitif-primitif geometri seperti garis, lingkaran, dan sebagainya. Primitif-primitif geometri tersebut memerlukan data deskriptif untuk melukis elemen-elemen gambar. Contoh data deskriptif adalah koordinat titik, panjang garis, jari-jari lingkaran, tebal garis, warna, dan sebagainya. Grafika komputer memainkan peranan penting dalam visualisasi dan virtual reality.
data deskriptif
Grafika Komputer
citra
Contoh grafika komputer misalnya menggambar sebuah ‘rumah’ yang dibentuk oleh garis-garis lurus, dengan data masukan berupa koordinat awal dan koordinat ujung garis (Gambar 1.4).
4
Pengolahan Citra Digital
Program:
Gambar hasil:
Line(0, 0, 0, 40) Line(0, 40, 60, 60) Line(40, 60, 80, 40) Line(0, 40, 80, 40) Line(80, 40, 80, 0) Line(80, 0, 0, 0) Line(20, 0, 25, 25) Line(25, 25, 35, 25) Line(35, 25, 35, 0)
(a)
(b)
Gambar 1.4. (a) Program Grafika Komputer untuk membuat gambar ‘rumah (b)
Pengolahan Citra bertujuan memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia atau mesin (dalam hal ini komputer). Teknik-teknik pengolahan citra mentransformasikan citra menjadi citra lain. Jadi, masukannya adalah citra dan keluarannya juga citra, namun citra keluaran mempunyai kualitas lebih baik daripada citra masukan. Termasuk ke dalam bidang ini juga adalah pemampatan citra (image compression).
citra
Pengolahan Citra
citra
Pengubahan kontras citra seperti pada Gambar 1.2 adalah contoh operasi pengolahan citra. Contoh operasi pengolahan citra lainnya adalah penghilangan derau (noise) pada citra Lena (Gambar 1.4). Citra Lena yang di sebelah kiri mengandung derau berupa bintik-bintik putih (derau). Dengan operasi penapisan (filtering), yang akan dijelaskan di dalam Bab 7, derau pada citra masukan ini dapat dikurangi sehingga dihasilkan citra Lena yang kualitasnya lebih baik.
Bab 1_Pengantar Pengolahan Citra
5
(a)
(b)
Gambar 1.4. (a) Citra Lena yang mengandung derau, (b) hasil dari operasi penapisan derau.
Pengenalan Pola mengelompokkan data numerik dan simbolik (termasuk citra) secara otomatis oleh mesin (dalam hal ini komputer). Tujuan pengelompokan adalah untuk mengenali suatu objek di dalam citra. Manusia bisa mengenali objek yang dilihatnya karena otak manusia telah belajar mengklasifikasi objek-objek di alam sehingga mampu membedakan suatu objek dengan objek lainnya. Kemampuan sistem visual manusia inilah yang dicoba ditiru oleh mesin. Komputer menerima masukan berupa citra objek yang akan diidentifikasi, memproses citra tersebut, dan memberikan keluaran berupa deskripsi objek di dalam citra.
citra
Pengenalan Pola
deskripsi objek
Contoh pengenalan pola misalnya citra pada Gambar 1.5 adalah tulisan tangan yang digunakan sebagai data masukan untuk mengenali karakter ‘A’. Dengan menggunakan suatu algoritma pengenalan pola, diharapkan komputer dapat mengenali bahwa karakter tersebut adalah ‘A’.
6
Pengolahan Citra Digital
Gambar 1.5. Citra karakter ‘A’ yang digunakan sebagai masukan untuk pengenalan huruf.
1.3 Computer Vision dan Hubungannya dengan Pengolahan Citra Terminologi lain yang berkaitan erat dengan pengolahan citra adalah computer vision atau machine vision. Pada hakikatnya, computer vision mencoba meniru cara kerja sistem visual manusia (human vision). Human vision sesungguhnya sangat kompleks. Manusia melihat objek dengan indera penglihatan (mata), lalu citra objek diteruskan ke otak untuk diinterpretasi sehingga manusia mengerti objek apa yang tampak dalam pandangan matanya. Hasil interpretasi ini mungkin digunakan untuk pengambilan keputusan (misalnya menghindar kalau melihat mobil melaju di depan). Computer vision merupakan proses otomatis yang mengintegrasikan sejumlah besar proses untuk persepsi visual, seperti akuisisi citra, pengolahan citra, klasifikasi, pengenalan (recognition), dan membuat keputusan. Computer vision terdiri dari teknik-teknik untuk mengestimasi ciri-ciri objek di dalam citra, pengukuran ciri yang berkaitan dengan geometri objek, dan menginterpretasi informasi geometri tersebut. Mungkin berguna bagi anda untuk mengingat persamaan [JAI95] berikut: Vision = Geometry + Measurement + Interpretation
(1.1)
Proses-proses di dalam computer vision dapat dibagi menjadi tiga aktivitas: 1. Memperoleh atau mengakuisisi citra digital. 2. Melakukan teknik komputasi untuk memperoses atau memodifikasi data citra (operasi-operasi pengolahan citra). 3. Menganalisis dan menginterpretasi citra dan menggunakan hasil pemrosesan untuk tujuan tertentu, misalnya memandu robot, mengontrol peralatan, memantau proses manufaktur, dan lain-lain.
Bab 1_Pengantar Pengolahan Citra
7
[SCH89] mengklasifikasikan proses-proses di dalam computer vision dalam hirarkhi sebagai berikut : Hirarkhi Pemrosesan preprocessing
Contoh Algoritma noise removal contrast enhancement
lowest-level feature extraction
edge detection texture detection
intermediate -level feature identification
connectivity pattern matching boundary coding
high-level scene interpretation via images
model-base recognition
Dari penjelasan di atas, dapat kita lihat bahwa pengolahan citra dan pengenalan pola merupakan bagian dari computer vision. Pengolahan citra merupakan proses awal (preprocessing) pada computer vision, sedangkan pengenalan pola merupakan proses untuk menginterpretasi citra. Teknik-teknik di dalam pengenalan pola memainkan peranan penting dalam computer vision untuk mengenali objek. Jika dihubungkan dengan grafika komputer, maka computer vision merupakan kebalikannya. Grafika komputer membentuk (sintesis) citra, sedangkan computer vision mengoraknya (analisis). Pada masa awal kedua bidang ini, tidak ada hubungan antara keduanya, tetapi beberapa tahun belakangan kedua bidang tersebut berkembang semakin dekat. Computer vision menggunakan representasi kurva dan permukaan dan beberapa teknik lain dari grafika komputer, sedangkan grafika komputer menggunakan teknik-teknik di dalam computer vision untuk memuat citra realistik (virtual reality) [JAI95].
1.4 Operasi Pengolahan Citra Operasi-operasi yang dilakukan di dalam pengolahan citra banyak ragamnya. Namun, secara umum, operasi pengolahan citra dapat diklasifikasikan dalam beberapa jenis sebagai berikut: 1. Perbaikan kualitas citra (image enhancement). 8
Pengolahan Citra Digital
Jenis operasi ini bertujuan untuk memperbaiki kualitas citra dengan cara memanipulasi parameter-parameter citra. Dengan operasi ini, ciri-ciri khusus yang terdapat di dalam citra lebih ditonjolkan. Contoh-contoh operasi perbaikan citra: a. perbaikan kontras gelap/terang b. perbaikan tepian objek (edge enhancement) c. penajaman (sharpening) d. pembrian warna semu (pseudocoloring) e. penapisan derau (noise filtering) Gambar 1.6 adalah contoh operasi penaja man. Operasi ini menerima masukan sebuah citra yang gambarnya hendak dibuat tampak lebih tajam. Bagian citra yang ditajamkan adalah tepi-tepi objek.
(a)
(b)
Gambar 1.6 (a) Citra Lena asli, (b) Citra Lena setelah ditajamkan
2. Pemugaran citra (image restoration). Operasi ini bertujuan menghilangkan/meminimumkan cacat pada citra. Tujuan pemugaran citra hampir sama dengan operasi perbaikan citra. Bedanya, pada pemugaran citra penyebab degradasi gambar diketahui. Contoh-contoh operasi pemugaran citra: a. penghilangan kesamaran (deblurring). b. penghilangan derau (noise) Gambar 1.7 adalah contoh operasi penghilangan kesamaran. Citra masukan adalah citra yang tampak kabur (blur). Kekaburan gambar mungkin disebabkan pengaturan fokus lensa yang tidak tepat atau kamera bergoyang pada pengambilan gambar. Melalui operasi deblurring, kualitas citra masukan dapat diperbaiki sehingga tampak lebih baik.
Bab 1_Pengantar Pengolahan Citra
9
(a)
(b)
Gambar 1.7 Kiri: Citra Lena yang kabur (blur), kanan: citra Lena setelah deblurring
3. Pemampatan citra (image compression). Jenis operasi ini dilakukan agar citra dapat direpresentasikan dalam bentuk yang lebih kompak sehingga memerlukan memori yang lebih sedikit. Hal penting yang harus diperhatikan dalam pemampatan adalah citra yang telah dimampatkan harus tetap mempunyai kualitas gambar yang bagus. Contoh metode pemampatan citra adalah metode JPEG. Perhatikan Gambar 1.8. Gambar sebelah kiri adalah citra kapal yang berukuran 258 KB. Hasil pemampatan citra dengan metode JPEG dapat mereduksi ukuran citra semula sehingga menjadi 49 KB saja.
(a)
(b)
Gambar 1.8. (a) Citra boat.bmp (258 KB) sebelum dimampatkan, (b) citra boat.jpg (49 KB) sesudah dimampatkan.
10
Pengolahan Citra Digital
4. Segmentasi citra (image segmentation). Jenis operasi ini bertujuan untuk memecah suatu citra ke dalam beberapa segmen dengan suatu kriteria tertentu. Jenis operasi ini berkaitan erat dengan pengenalan pola. 5. Pengorakan citra (image analysis) Jenis operasi ini bertujuan menghitung besaran kuantitif dari citra untuk menghasilkan deskripsinya. Teknik pengorakan citra mengekstraksi ciri-ciri tertentu yang membantu dalam identifikasi objek. Proses segmentasi kadangkala diperlukan untuk melokalisasi objek yang diinginkan dari sekelilingnya. Contoh-contoh operasi pengorakan citra: a. Pendeteksian tepi objek (edge detection) b. Ekstraksi batas (boundary) c. Representasi daerah (region) Gambar 1.9 adalah contoh operasi pendeteksian tepi pada citra Camera. Operasi ini menghasilkan semua tepi (edge) di dalam citra.
(a)
(b)
Gambar 1.9. (a) Citra camera, (b) citra hasil pendeteksian seluruh tepi
6. Rekonstruksi citra (image reconstruction) Jenis operasi ini bertujuan untuk membentuk ulang objek dari beberapa citra hasil proyeksi. Operasi rekonstruksi citra banyak digunakan dalam bidang medis. Misalnya beberapa foto rontgen dengan sinar X digunakan untuk membentuk ulang gambar organ tubuh.
Bab 1_Pengantar Pengolahan Citra
11
1.5 Aplikasi Pengolahan Citra dan Pengenalan Pola Pengolahan citra mempunyai aplikasi yang sangat luas dalam berbagai bidang kehidupan. Di bawah ini disebutkan beberapa aplikasi dalam beberapa bidang [MEN89]. 1. Bidang perdagangan (a) Pembacaan kode batang (bar code) yang tertera pada barang (umum digunakan di pasar swalayan/supermarket). (b) Mengenali huruf/angka pada suatu formulir secara otomatis. 2. Bidang militer (a) Mengenali sasaran peluru kendali mela lui sensor visual. (b) Mengidentifikasi jenis pesawat musuh. 3. Bidang kedokteran (a) Pengolahan citra sinar X untuk mammografi (deteksi kanker payudara) (b) NMR (Nuclear Magnetic Resonance) (c) Mendeteksi kelainan tubuh dari foto sinar X. (d) Rekonstruksi foto janin hasil USG 4. Bidang biologi Pengenalan jenis kromosom melalui gambar mikroskopik 5. Komunikasi data Pemampatan citra yang ditransmisi. 6. Hiburan Pemampatan video (MPEG) 7. Robotika Visualy-guided autonomous navigation 8. Pemetaan Klasifikasi penggunaan tanah melalui foto udara/LANDSAT 9. Geologi Mengenali jenis batu-batuan melalui foto udara/LANDSAT 10. Hukum (a) Pengenalan sidik jari (b) Pengenalan foto narapidana.
12
Pengolahan Citra Digital
1.6 Citra Uji Pada pembahasan operasi-operasi pengolahan citra, biasanya penulis buku/ literatur menggunakan beberapa contoh citra uji (test images) atau sampel. Terdapat sejumlah citra yang sering dipakai di dalam literatur pengolahan citra atau computer vision. Citra-citra tersebut banyak ditemukan di situs-situs web universitas yang menawarkan mata kuliah (course) pengolahan citra. Anda bisa mencari citra tersebut dengan menggunakan bantuan mesin pencari Google (www.google.com) Kebanyakan dari citra tersebut merupakan citra klasik dalam pengola han citra. Inilah beberapa diantaranya (dengan keterangan nama citra dan ukurannya, lebar × tinggi, dalam satuan pixel):
Lena, 256 × 256
Peppers 512 × 512
Zelda 512 × 512
Bird 256 × 256
Camera 256 × 256
Mandrill 512 × 512
Barbara 512 × 512
Boat 512 × 512
Slope 256 × 256
Bab 1_Pengantar Pengolahan Citra
13
San Fransisco 256 × 256
Collie 256 × 256
Squares 256 × 256
Text 256 × 256
Goldhill 512 × 512
Eltoro 512 × 512
14
Circle 256 × 256
Mountain 640 × 480
Girl 256 × 256
Pengolahan Citra Digital
Bab 2
Pembentukan Citra
itra ada dua macam: citra kontinu dan citra diskrit. Citra kontinu dihasilkan dari sistem optik yang menerima sinyal analog, misalnya mata manusia dan kamera analog. Citra diskrit dihasilkan melalui proses digitalisasi terhadap citra kontinu. Beberapa sistem optik dilengkapi dengan fungsi digitalisasi sehingga ia mampu menghasilkan citra diskrit, misalnya kamera digital dan scanner. Citra diskrit disebut juga citra digital. Komputer digital yang umum dipakai saat ini hanya dapat mengolah citra digital. Bab 2 ini berisi konsep pembentukan citra, baik citra kontinu maupun citra digital.
C
2.1 Model Citra Pada bagian kuliah yang pertama sudah dijelaskan bahwa citra merupakan fungsi malar (kontinyu) dari intensitas cahaya pada bidang dwimatra. Secara matematis fungsi intensitas cahaya pada bidang dwimatra disimbolkan dengan f(x, y), yang dalam hal ini: (x, y) : koordinat pada bidang dwimatra f(x, y) : intensitas cahaya (brightness) pada titik (x, y) Gambar 2.1 memperlihatkan posisi koordinat pada bidang citra. Sistem koordinat yang diacu adalah sistem koordinat kartesian, yang dalam hal ini sumbu mendatar menyatakan sumbu-X, dan sumbu tegak menyatakan sumbu-Y.
Bab 2_Pembentukan Citra
15
Gambar 2.1. Cara menentukan koodinat titik di dalam citra.
Karena cahaya merupakan bentuk energi, maka intensitas cahaya bernilai antara 0 sampai tidak berhingga, 0 ≤ f(x, y) < ∞ Nilai f(x, y) sebenarnya adalah hasil kali dari [GON77]: 1. i(x, y) =jumlah cahaya yang berasal dari sumbernya (illumination), nilainya antara 0 sampai tidak berhingga, dan 2. r(x, y) = derajat kemampuan obyek memantulkan cahaya (reflection), nilainya antara 0 dan 1. Gambar 2.2 memperlihatkan proses pembentukan intensitas cahaya. Sumber cahaya menyinari permukaan objek. Jumlah pancaran (iluminasi) cahaya yang diterima objek pada koodinat (x, y) adalah i(x, y). Objek memantulkan cahaya yang diterimanya dengan derajat pantulan r(x, y). Hasil kali antara i(x, y) dan r(x, y) menyatakan intensitas cahaya pada koordinat (x, y) yang ditangkap oleh sensor visual pada sistem optik. Jadi, f(x, y) = i(x, y) ⋅ r(x, y) yang dalam hal ini, 0 ≤ i(x, y) < ∞ 0 ≤ r(x, y) ≤ 1 16
Pengolahan Citra Digital
sehingga 0 ≤ f(x, y) < ∞
sumber cahaya
i(x,y) a
normal
permukaan
f(x,y)
Gambar 2.2 Pembentukan Citra [PIT93]
Nilai i(x, y) ditentukan oleh sumber cahaya, sedangkan r(x, y) ditentukan oleh karakteristik objek di dalam gambar. Nilai r(x,y) = 0 mengindikasikan penerapan total, sedangkan r(x,y) = 1 menyatakan pemantulan total. Jika permukaan mempunyai derajat pemantulan nol, maka fungsi intensitas cahaya, f(x, y), juga nol. Sebaliknya, jika permukaan mempunyai derajat pemantulan 1, maka fungsi intensitas cahaya sama dengan iluminasi yang diterima oleh permukaan tersebut. Contoh-contoh nilai i(x, y): 1. pada hari cerah, matahari menghasilkan iluminasi i(x, y) sekitar 9000 foot candles, 2. pada hari mendung (berawan), matahari menghasilkan iluminasi i(x, y) sekitar 1000 foot candles, 3. pada malam bulan purnama, sinar bulan menghasilkan iluminasi i(x, y) sekitar 0.01 foot candle. Contoh nilai r(x, y) 1. benda hitam mempunyai r(x, y) = 0.01, 2. dinding putih mempunyai r(x, y) = 0.8, 3. benda logam dari stainlessteel mempunyai r(x, y) = 0.65, 4. salju mempunyai r(x, y) = 0.93. Bab 2_Pembentukan Citra
17
Intensitas f dari gambar hitam putih pada titik (x, y) disebut derajat keabuan (grey level), yang dalam hal ini derajat keabuannya bergerak dari hitam ke putih, sedangkan citranya disebut citra hitam-putih (greyscale image) atau citra monokrom (monochrome image). Derajat keabuan memiliki rentang nilai dari l min sampai l max, atau lmin < f < lmax Selang (l min, l max) disebut skala keabuan. Biasanya selang (lmin, l max) sering digeser untuk alasan-alasan praktis menjadi selang [0, L], yang dalam hal ini nilai intensitas 0 menyatakan hitam, nilai intensitas L menyatakan putih, sedangkan nilai intensitas antara 0 sampai L bergeser dari hitam ke putih. Sebagai contoh, citra hitam-putih dengan 256 level artinya mempunyai skala abu dari 0 sampai 255 atau [0, 255], yang dalam hal ini nilai intensitas 0 menyatakan hitam, nilai intensitas 255 menyatakan putih, dan nilai antara 0 sampai 255 menyatakan warna keabuan yang terletak antara hitam dan putih. Citra hitam-putih disebut juga citra satu kanal, karena warnanya hanya ditentukan oleh satu fungsi intensitas saja. Citra berwarna (color images) dikenal dengan nama citra spektral, karena warna pada citra disusun oleh tiga komponen warna yang disebut komponen RGB, yaitu merah (red), hijau (green), dan biru (blue). Intensitas suatu titik pada citra berwarna merupakan kombinasi dari tiga intensitas: derajat keabuan merah (f merah(x,y)), hijau (f hijau(x,y)), dan biru (f biru(x,y)).
2.2 Digitalisasi Citra Agar dapat diolah dengan dengan komputer digital, maka suatu citra harus direpresentasikan secara numerik dengan nilai-nilai diskrit. Representasi citra dari fungsi malar (kontinu) menjadi nilai-nilai diskrit disebut digitalisasi. Citra yang dihasilkan inilah yang disebut citra digital (digital image). Pada umumnya citra digital berbentuk empat persegipanjang, dan dimensi ukurannya dinyatakan sebagai tinggi × lebar (atau lebar × panjang). Citra digital yang tingginya N, lebarnya M, dan memiliki L derajat keabuan dapat dianggap sebagai fungsi [DUL97]: 0 ≤ x ≤ M f(x, y) 0 ≤ y ≤ N 0 ≤ f ≤ L
18
Pengolahan Citra Digital
Citra digital yang berukuran N × M lazim dinyatakan dengan matriks yang berukuran N baris dan M kolom sebagai berikut: f (0 ,0) f (1,0) f(x, y) ≈ M f ( N − 1,0 )
f (0,1)
...
f (1,1)
...
M
M
f ( N − 1,1) ...
f (1, M ) M f ( N − 1, M − 1) f (0, M )
Indeks baris (i) dan indeks kolom (j) menyatakan suatu koordinat titik pada citra, sedangkan f(i, j) merupakan intensitas (derajat keabuan) pada titik (i, j). Masing-masing elemen pada citra digital (berarti elemen matriks) disebut image element, picture element atau pixel atau pel. Jadi, citra yang berukuran N × M mempunyai NM buah pixel. Sebagai contoh, misalkan sebuah berukuran 256 × 256 pixel dan direpresentasikan secara numerik dengan matriks yang terdiri dari 256 buah baris (di-indeks dari 0 sampai 255) dan 256 buah kolom (di-indeks dari 0 sampai 255) seperti contoh berikut: 0 0 220 M M 221
145 ... ... 231 167 201 ... ... 197 187 189 ... ... 120 M M M M M M M M M M 219 210 ... ... 156 134
Pixel pertama pada koordinat (0, 0) mempunyai nilai intensitas 0 yang berarti warna pixel tersebut hitam, pixel kedua pada koordinat (0, 1) mempunyai intensitas 134 yang berarti warnanya antara hitam dan putih, dan seterusnya. Proses digitalisasi citra ada dua macam: 1. Digitalisasi spasial (x, y), sering disebut sebagai penerokan (sampling). 2. Digitalisasi intensitas f(x, y), sering disebut sebagai kuantisasi.
Penerokan Citra kontinu diterok pada grid-grid yang berbentuk bujursangkar (kisi-kisi dalam arah horizontal dan vertikal). Perhatikan Gambar 2.3.
Bab 2_Pembentukan Citra
19
Penerok
Citra kontinu
Citra digital Gambar 2.3. Penerokan secara spasial
Terdapat perbedaan antara koordinat gambar (yang diterok) dengan koordinat matriks (hasil digitalisasi). Titik asal (0, 0) pada gambar dan elemen (0, 0) pada matriks tidak sama. Koordinat x dan y pada gambar dimulai dari sudut kiri bawah, sedangkan penomoran pixel pada matriks dimulai dari sudut kiri atas (Gambar 2.4).
M-1
0
Dy
0
y
i Dx
M pixel Dy
N pixel
N-1 (0,0)
Dx x
j
Gambar 2.4. Hubungan antara elemen gambar dan elemen matriks [GAL90]
Dalam hal ini, i=x ,0≤i≤N– 1 j = (M – y) ,0 ≤ j ≤M–1 x = Dx/N increment y = Dy/M increment 20
Pengolahan Citra Digital
N = jumlah maksimum pixel dalam satu baris M = jumlah maksimum pixel dalam satu kolom Dx = lebar gambar (dalam inchi) Dy = tinggi gambar (dalam inchi) Catatan: beberapa referensi menggunakan (1,1) –ketimbang (0,0) – sebagai koordinat elemen pertama di dalam matriks. Elemen (i, j) di dalam matriks menyatakan rata-rata intensitas cahaya pada area citra yang direpresentasikan oleh pixel. Sebagai contoh, tinjau citra biner yang hanya mempunyai 2 derajat keabuan, 0 (hitam) dan 1 (putih). Sebuah gambar yang berukuran 10 × 10 inchi dinyatakan dalam matriks yang berukuran 5 × 4, yaitu lima baris dan 4 kolom. Tiap elemen gambar lebarnya 2.5 inchi dan tingginya 2 inci akan diis i dengan sebuah nilai bergantung pada rata-rata intensitas cahaya pada area tersebut (Gambar 2.5). Area 2.5 × 2.0 inchi pada sudut kiri atas gambar dinyatakan dengan lokasi (0, 0) pada matriks 5 × 4 yang mengandung nilai 0 (yang berarti tidak ada intensitas cahaya). Area 2.5 × 2.0 inchi pada sudut kanan bawah gambar dinyatakan dengan lokasi (4, 3) pada matriks 5 × 4 yang mengandung nilai 1 (yang berarti iluminasi maksimum). hitam
10 inchi
y
putih 0 0
x
0
?
?
?
? ? ?
? ? ?
? ? ?
? ? ?
?
?
?
1
10 inchi
(a)
(b)
Gambar 2.5 (a) Gambar yang diterok, (b) matriks yang merepresentasikan gambar [GAL90]
Untuk memudahkan implementasi, jumlah terokan biasanya diasumsikan perpangkatan dari dua, N = 2n yang dalam hal ini, N = jumlah penerokan pada suatu baris/kolom n = bilangan bulat positif Contoh ukuran penerokan: 256 × 256 pixel, 128 × 256 pixel. Bab 2_Pembentukan Citra
21
Pembagian gambar menjadi ukuran tertentu menentukan resolusi (yaitu derajat rincian yang dapat dilihat) spasial yang diperoleh. Semakin tinggi resolusinya, yang berarti semakin kecil ukuran pixel (atau semakin banyak jumlah pixel-nya), semakin halus gambar yang diperoleh karena informasi yang hilang akibat pengelompokan derajat keabuan pada penerokan semakin kecil. Gambar 2.6 mempelihatkan efek perbedaan penerokan pada citra Lena, masingmasing 256 × 256, 128 × 128, 64 × 64, dan 32 × 32 pixel, seluruh citra mempunyai jumlah derajat keabuan sama, yaitu 256 buah. Karena area tampilan untuk keempat citra Lena pada Gambar 2.6 sama, (yaitu 256 × 256 pixel), maka pixel-pixel citra yang beresolusi rendah diduplikasi untuk mengisi seluruh bidang tampilan. Hal ini menghasilkan efek blok-blok yang sering diamati pada gambar beresolusi rendah pada umumnya.
(a) 256 × 256 pixel
(b) 128 × 128 pixel
(c) 64 × 64 pixel
(d) 32 × 32 pixel
Gambar 2.6. Ukuran penerokan yang berbeda-beda menghasilkan kualitas citra yang berbeda pula Kuantisasi
22
Pengolahan Citra Digital
Langkah selanjutnya setelah proses penerokan adalah kuantisasi. Proses kuantisasi membagi skala keabuan (0, L) menjadi G buah level yang dinyatakan dengan suatu harga bilangan bulat (integer), biasanya G diambil perpangkatan dari 2, G = 2m yang dalam hal ini, G = derajat keabuan m = bilangan bulat positif Skala Keabuan
Rentang Nilai Keabuan
Pixel Depth
21 22 23 28
0, 1 0 sampai 7 0 sampai 15 0 sampai 255
1 bit 2 bit 3 bit 8 bit
(2 nilai) (4 nilai) (16 nilai) (256 nilai)
Hitam dinyatakan dengan nilai derajat keabuan terendah, yaitu 0, sedangkan putih dinyatakan dengan nilai derajat keabuan tertinggi, misalnya 15 untuk 16 level. Jumlah bit yang dibutuhkan untuk mereprentasikan nilai keabuan pixel disebut kedalaman pixel (pixel depth ). Citra sering diasosiasikan dengan kedalaman pixel-nya. Jadi, citra dengan kedalaman 8 bit disebut juga citra 8-bit (atau citra 256 warna) Pada kebanyakan aplikasi, citra hitam-putih dikuantisasi pada 256 level dan membutuhkan 1 byte (8 bit) untuk representasi setiap pixel-nya (G = 256 = 28 ). Citra biner (binary image) hanya dikuantisasi pada dua level: 0 dan 1. Tiap pixel pada citra biner cukup direpresentasikan dengan 1 bit, yang mana bit 0 berarti htam dan bit 1 berarti putih. Besarnya daerah derajat keabuan yang digunakan menentukan resolusi kecerahan dari gambar yang diperoleh. Sebagai contoh, jika digunakan 3 bit untuk menyimpan harga bilangan bulat, maka jumlah derajat keabuan yang diperoleh hanya 8, jika digunakan 4 bit, maka derajat keabuan yang diperoleh adalah 16 buah. Semakin banyak jumlah derajat keabuan (berarti jumlah bit kuantisasinya makin banyak), semakin bagus gambar yang diperoleh karena kemenerusan derajat keabuan akan semakin tinggi sehingga mendekati citra aslinya. Gambar 2.7 mempelihatkan efek perbedaan kuantisasi citra Lena yang berukuran 256 × 256 pixel, masing-masing 256 level dan 128 level keabuan.
Bab 2_Pembentukan Citra
23
(a) 256 level
(b) 128 level
Gambar 2.7. Citra Lena yang dikuantisasi pada 256 level dan 128 level
Penyimpanan citra digital yang diterok menjadi N × M buah pixel dan dikuantisasi menjadi G = 2m level derajat keabuan membutuhkan memori sebanyak b =N ×M ×m bit. Sebagai contoh, menyimpan citra Lena yang berukuran dengan 512 × 512 pixel dengan 256 derajat keabuan membutuhkan memori sebesar 512 × 512 × 8 bit = 2048.000 bit. Secara keseluruhan, resolusi gambar ditentukan oleh N dan m. Makin tinggi nilai N (atau M) dan m, maka citra yang dihasilkan semakin bagus kualitasnya (mendekati citra menerus). Untuk citra dengan jumlah objek yang sedikit, kualitas citra ditentukan oleh nilai m. Sedangkan untuk citra dengan jumlah objek yang banyak, kualitasnya ditentukan oleh N (atau M). Seluruh tahapan proses digitalisasi (penerokan dan kuantisasi) di atas dikenal sebagai konversi analog-ke-digital, yang biasanya menyimpan hasil proses di dalam media penyimpanan.
24
Pengolahan Citra Digital
2.3 Elemen-elemen Citra Digital Citra digital mengandung sejumlah elemen-elemen dasar. Elemen-elemen dasar tersebut dimanipulasi dalam pengolahan citra dan dieksploitasi lebih lanjut dalam computer vision. Elemen-elemen dasar yang penting diantaranya adalah: 1. Kecerahan (brightness). Kecerahan adalah kata lain untuk intensitas cahaya. Sebagaimana telah dijelaskan pada bagian penerokan, kecerahan pada sebuah titik (pixel) di dalam citra bukanlah intensitas yang riil, tetapi sebenarnya adalah intensitas rata-rata dari suatu area yang melingkupinya. Sistem visual manusia mampu menyesuaikan dirinya dengan tingkat kecerahan (brightness level) mulai dari yang paling rendah sampai yang paling tinggi dengan jangkauan sebesar 1010 [MEN89]. 2. Kontras (contrast). Kontras menyatakan sebaran terang (lightness) dan gelap (darkness) di dalam sebuah gambar. Citra dengan kontras rendah dicirikan oleh sebagian besar komposisi citranya adalah terang atau sebagian besar gelap. Pada citra dengan kontras yang baik, komposisi gelap dan terang tersebar secara merata. 3. Kontur (contour) Kontur adalah keadaan yang ditimbulkan oleh perubahan intensitas pada pixelpixel yang bertetangga. Karena adanya perubahan intensitas inilah mata kita mampu mendeteksi tepi-tepi (edge) objek di dalam citra. 4. Warna (color) Warna adalah persepsi yang dirasakan oleh sistem visual manusia terhadap panjang gelombang cahaya yang dipantulkan oleh objek. Setiap warna mempunyai panjang gelombang (λ) yang berbeda. Warna merah mempunyai panjang gelombang paling tinggi, sedangkan warna ungu (violet) mempunyai panjang gelombang paling rendah. Warna-warna yang diterima oleh mata (sistem visual manusia ) merupakan hasil kombinasi cahaya dengan panjang gelombang berbeda. Penelitian memperlihatkan bahwa kombinasi warna yang memberikan rentang warna yang paling lebar adalah red (R), green (G), dan blue (B). Persepsi sistem visual manusia terhadap warna sangat relatif sebab dipengaruhi oleh banyak kriteria, salah satunya disebabkan oleh adaptasi yang menimbulkan distorsi. Misalnya bercak abu-abu di sekitar warna hijau akan tampak keunguunguan (distorsi terhadap ruang), atau jika mata melihat warna hijau lalu langsung dengan cepat melihat warna abu-abu, maka mata menangkap kesan warna abu-abu tersebut sebagai warna ungu (distorsi terhadap waktu) [MEN89].
Bab 2_Pembentukan Citra
25
5. Bentuk (shape) Shape adalah properti intrinsik dari objek tiga dimensi, dengan pengertian bahwa shape merupakan properti intrinsik utama untuk sistem visual manusia [BAL82]. Manusia lebih sering mengasosiasikan objek dengan bentuknya ketimbang elemen lainnya (warna misalnya). Pada umumnya, citra yang dibentuk oleh mata merupakan citra dwimatra (2 dimensi), sedangkan objek yang dilihat umumnya berbentuk trimatra (3 dimensi). Informasi bentuk objek dapat diekstraksi dari citra pada permulaaan pra-pengolahan dan segmentasi citra. Salah satu tantangan utama pada computer vision adalah merepresentasikan bentuk, atau aspek-aspek penting dari bentuk. 6. Tekstur (texture) Tekstur dicirikan sebagai distribusi spasial dari derajat keabuan di dalam sekumpulan pixel-pixel yang bertetangga [JAI95]. Jadi, tekstur tidak dapat didefinisikan untuk sebuah pixel. Sistem vissual manusia pada hakikatnya tidak menerima informasi citra secara independen pada setiap pixel, melainkan suatu citra dianggap sebagai suatu kesatuan. Resolusi citra yang diamati ditentukan oleh skala pada mana tekstur tersebut dipersepsi. Sebagai contoh, jika kita mengamati citra lantai berubin dari jarak jauh, maka kita mengamati bahwa tekstur terbentuk oleh penempatan ubin-ubin secara keseluruhan, bukan dari persepsi pola di dalam ubin itu sendiri. Tetapi, jika kita mengamati citra yang sama dari jarak yang dekat, maka hanya beberapa ubin yang tampak dalam bidanng pengamatan, sehingga kita mempersepsi bahwa tekstur terbentuk oleh penempatan pola -pola rinci yang menyusun tiap ubin.
2.4 Elemen Sistem Pemrosesan Citra Digital Secara umum, elemen yang terlibat dalam pemrosesan citra dapat dibagi menjadi empat komponen: a. digitizer b. komputer digital c. piranti tampilan d. piranti penyimpanan Keempat komponen di atas ditunjukkan pada Gambar 2.8 [GON77].
26
Pengolahan Citra Digital
Media Penyimpanan
Citra
Digitizer
Komputer Digital
Piranti Tampilan
Gambar 2.8. Elemen pemrosesan citra
Operasi dari sistem pemrosesan citra tersebut dapat dibagi menjadi empat kategori prinsip: digitalisasi, pemrosesan, penayangan, dan penyimpanan. Digitizer (atau digital image acquisition system) merupakan sistem penangkap citra digital yang melakukan penjelajahan citra dan mengkonversinya ke representasi numerik sebagai masukan bagi komputer digital. Hasil dari digitizer adalah matriks yang elemen-elemennya menyatakan nilai intensitas cahaya pada suatu titik. Contoh digitizer adalah kamera digital, scanner. Digitizer terdiri dari tiga komponen dasar: sensor citra yang bekerja sebagai pengukur intensitas cahaya, perangkat penjelajah yang berfungsi merekam hasil pengukuran intensitas pada seluruh bagian citra, dan pengubah analog-ke-digital yang berfungsi melakukan penerokan dan kuantisasi. Komputer digital yang digunakan pada sistem pemroses citra dapat bervariasi dari komputer mikro sampai komputer besar yang mampu melakukan bermacammacam fungsi pada citra digital resolusi tinggi.
Bab 2_Pembentukan Citra
27
Piranti tampilan peraga berfungsi mengkonversi matriks intensitas yang merepresentasikan citra ke tampilan yang dapat diinterpretasi oleh mata manusia. Contoh piranti tampilan adalah monitor peraga dan pencetak (printer). Media penyimpanan adalah piranti yang mempunyai kapasitas memori besar sehingga gambar dapat disimpan secara permanen agar dapat diproses lagi pada waktu yang lain.
28
Pengolahan Citra Digital
Bab 4
Operasi-operasi Dasar Pengolahan Citra Dijital
itra dijital direpresentasikan dengan matriks. Operasi pada citra dijital pada dasarnya adalah memanipulasi elemen-elemen matriks. Elemen matriks yang dimanipulasi dapat berupa elemen tungga l (sebuah pixel), sekumpulan elemen yang berdekatan, atau keseluruhan elemen matriks. Di dalam bab ini akan diuraikan operasi-operasi dasar pada pengolahan citra dijital.
C
4.1 Aras Komputasi Operasi-operasi yang dilakukan pada pengolahan citra dapat dikelompokkan ke dalam empat aras (level) komputasi, yaitu aras titik, aras lokal, aras global, dan aras objek [JAI95]. Kita mulai pembahasan komputasi pada aras titik.
1. Aras Titik Operasi pada aras titik hanya dilakukan pada pixel tunggal di dalam citra. Operasi titik dikenal juga dengan nama operasi pointwise. Operasi ini terdiri dari pengaksesan pixel pada lokasi yang diberikan, memodifikasinya dengan operasi operasi lanjar (linear) atau nirlanjar (nonlinear), dan menempatkan nilai pixel baru pada lokasi yang bersesuaian di dalam citra yang baru. Operasi ini diulangi untuk keseluruhan pixel di dalam citra. Secara matematis, operasi pada aras titik dinyatakan sebagai (Gambar 4.1): f B (x, y) = Otitik {f A (x, y)}
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
(4.1)
41
yang dalam hal ini f A dan f B masing-masing adalah citra masukan dan citra keluaran, Otitik dapat berupa operasi lanjar (linear) atau nirlanjar (nonlinear). Yang dimaksud dengan operasi lanjar adalah operasi yang dapat dinyatakan secara matematis sebagai persamaan lanjar, kebalikannya adalah persamaan nirlanjar.
O titik{f(x,y)}
Gambar 4.1 Operasi aras titik pada citra dijital.
Operasi pada aras titik dapat dibagi menjadi tiga macam: berdasarkan intensitas, berdasarkan geometri, atau gabungan keduanya. a. Berdasarkan intensitas. Nilai intensitas u suatu pixel diubah dengan transformasi h menjadi nilai intensitas baru v: v = h(u),
u, v ∈ [0, L]
(4.2)
Contoh operasi titik berdasarkan intensitas adalah operasi pengambangan (thresholding). Pada operasi pengambangan, nilai intensitas pixel dipetakan ke salah satu dari dua nilai, a 1 atau a 2 , berdasarkan nilai ambang (threshold) T: a , f(x, y)’ = 1 a 2 ,
f ( x, y ) < T f ( x, y) ≥ T
(4.3)
Jika a 1 = 0 dan a2 = 1, maka operasi pengambangan mentransformasikan citra hitam-putih ke citra biner. Dengan kata lain, nilai intensitas pixel semula dipetakan ke dua nilai saja: hitam dan putih. Nilai ambang yang dipakai dapat berlaku untuk keseluruhan pixel atau untuk wilayah tertentu saja (berdasarkan penyebaran nilai intensitas pada wilayah tersebut). Operasi pengambangan pada citra Lena dengan fungsi transformasi: 0, f(x, y)’ = 1,
42
f ( x , y ) < 128 f ( x , y ) ≥ 128
(4.4)
Pengolahan Citra Digital
menghasilkan citra biner seperti yang diperlihatkan pada Gambar 4.2(a). Persamaan 4.4 menyatakan bahwa pixel-pixel yang nilai intensitasnya di bawah 128 diubah menjadi hitam (nilai intensitas = 0), sedangkan pixel-pixel yang nilai intensitasnya di atas 128 diubah menjadi putih (nilai intensitas = 1) . Algoritma transformasi citra hitam-putih menjadi citra biner ditunjukkan oleh Algoritma 4.1.
(a)
(b)
Gambar 4.2. (a) Citra biner Lena, (b) citra negatif Lena
void biner(citra A, citra_biner B, int T, int N, int M) /* Membuat citra biner dari citra A berdasarkan nilai ambang (threshold) T yang dispesifikasikan. Ukuran citra adalah N × M. citra_biner adalah tipe data untuk citra biner). */ { int i, j; citra_biner B; for (i=0; i<=N-1; i++) for (j=0; j<=M-1; j++) { if (A[i][j] < T) B[i][j] = 0; else B[i][j] = 1; /* atau diisi dengan 255 pada citra 8-bit */ } }
Algoritma 4.1. Mengubah citra A menjadi citra biner.
Contoh operasi titik yang lain adalah: Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
43
(i) Operasi negatif, yaitu mendapatkan citra negatif (negative image) meniru film negatif pada fotografi dengan cara mengurangi nilai intensitas pixel dari nilai keabuan maksimum. Misalnya pada citra dengan 256 derajat keabuan (8 bit), citra negatif diperoleh dengan persamaan: f(x, y)’ = 255 – f(x, y)
(4.5)
Sedangkan pada citra dengan 128 derajat keabuan, f(x, y)’ = 127 – f(x, y)
(4.6)
Hasil operasi negatif pada citra Lena diperlihatkan pada Gambar 4.2(b). Algoritma pembentukan citra negatif untuk citra hitam-putih dengan 256 derajat keabuan ditunjukkan oleh Algoritma 4.2. Untuk citra berwarna, citra negatifnya diperoleh dengan melakukan hal yang sama untuk setiap komponen RGB.
void negatif(citra A, citra B, int N, int M) /* Membuat citra negatif dari citra A. Hasilnya disimpan di dalam citra B. Ukuran citra adalah N × M. */ { int i, j; for (i=0; i<=N-1; i++) for (j=0; j<=M-1; j++) { B[i][j] = 255 - A[i][j]; } }
Algoritma 4.2. Membuat citra negatif dari sebuah citra dengan 256 derajat keabuan
(ii) Pemotongan (clipping) Operasi ini dilakukan jika nilai intensitas pixel hasil suatu operasi pengolahan citra terletak di bawah nilai intensitas minimum atau di atas nilai intensitas maksimum: f ( x , y ) > 255 255, f(x, y)’ = f ( x , y ), 0 ≤ f ( x , y ) ≤ 255 0, f ( x, y ) < 0
(4.7)
Pemotongan (clipping) termasuk ke dalam operasi pengambangan juga.
44
Pengolahan Citra Digital
(iii) Pencerahan citra (image brightening) Kecerahan citra dapat diperbaiki dengan menambahkan (atau mengurangkan) sebuah konstanta kepada (atau dari) setiap pixel di dalam citra. Secara matematis operasi ini ditulis sebagai f(x, y)’ = f(x, y) + b
(4.8)
Jika b positif, kecerahan citra bertambah, sebaliknya jika b negatif kecerahan citra berkurang. Lihat contoh pencerahan citra pada Gambar 4.3 yang diterapkan pada citra Zelda. Semula citra Zelda tampak gelap, tetapi dengan menambahkan setiap nilai pixel dengan b = 10, citra Zelda menjadi lebih terang. Persamaan 4.8 mengisyaratkan bahwa operasi pencerahan citra dapat menghasilkan nilai di bawah nilai intensitas minimum atau d atas nilai intensitas maksimum. Oleh karena itu, operasi clipping perlu diterapkan. Algoritma pencerahan citra ntuk citra dengan 256 derajat keabuan ditunjukkan oleh Algoritma 4.3.
void brightening(citra A, int b, citra B, int N, int M) /* Pencerahan citra dengan cara menjumlahkan setiap pixel di dalam citra A dengan sebuah skalar b. Hasil disimpan di dalam citra B. Citra A berukuran N × M. */ { int i, j, temp; for (i=0; i<=N-1; i++) for (j=0; j<=M-1; j++) { temp = A[i][j] + b; /* clipping */ if (temp < 0) B[i][j] = 0; else if (temp > 255) B[i][j]=255; else B[i][j]=temp; } }
Algoritma 4.3. Pencerahan citra
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
45
Gambar 4.3. Kiri: citra Zelda (agak gelap); kanan: citra Zelda setelah operasi pencerahan
b. Berdasarkan geometri. Posisi pixel diubah ke posisi yang baru, sedangkan intensitasnya tidak berubah. Contoh operasi titik berdasarkan geometri misalnya pemutaran (rotasi), pergeseran (translasi), penskalaan (dilatasi), pembetulan erotan (distorsi) geometri (akan dijelaskan kemudian). c. Gabungan intensitas dan geometri. Operasi ini tidak hanya mengubah nilai intensitas pixel, tapi juga mengubah posisinya. Misalnya image morphing, yaitu perubahan bentuk objek beserta nilai intensitasnya.
2. Aras Lokal Operasi pada aras lokal menghasilkan citra keluaran yang intensitas suatu pixel bergantung pada intensitas pixel-pixel tetangganya (Gambar 4.4). f B (x, y)’ = Olokal{f A(xi , yj );
(xi , yj ) ∈ N(x, y) }
(4.9)
(keterangan: N = neighborhood, yaitu pixel-pixel yang berada di sekitar (x, y) )
46
Pengolahan Citra Digital
O lokal{f(xi,yi), (xi, yi) pixel di sekitar ( x,y)}
Gambar 4.4. Operasi aras lokal
Contoh operasi beraras lokal adalah operasi konvolusi untuk mendeteksi tepi (edge detection) dan pelembutan citra (image smoothing). Gambar 4.5 adalah citra Lena hasil pendeteksian tepi. Konsep pendeteksian tepi dan penghalusan citra masing-masing akan dibahas di dalam Bab 8 dan Bab 7.
Gambar 4.5. Hasil pendeteksian semua tepi dari citra Lena
3. Aras Global Operasi pada aras global menghasilkan citra keluaran yang intensitas suatu pixel bergantung pada intensitas keseluruhan pixel (Gambar 4.6). f B (x, y)’ = Oglobal {f A (x, y)}
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
(4.10)
47
Oglobal{f(x, y)}
Gambar 4.6. Operasi aras global
Contoh operasi beraras global adalah operasi penyetaraan histogram untuk meningkatkan kualitas citra (akan dibahas pada kuliah selanjutnya).
4. Aras Objek Operasi jenis ini hanya dilakukan pada objek tertentu di dalam citra. Tujuan dari operasi pada aras objek adalah untuk mengenali objek tersebut, misalnya dengan menghitung rata-rata intensitas, ukuran, bentuk, dan karakteristik lain dari objek. Operasi aras objek adalah operasi yang sangat sulit, karena sebelumnya kita harus dapat menjawab: apakah objek itu, bagaimana menemukannya?
4.2 Operasi Aritmetika Karena citra dijital adalah matriks, maka operasi-operasi aritmetika matriks juga berlaku pada citra. Operasi matriks yang dapat dilakukan adalah: 1. Penjumlahan atau pengurangan antara dua buah citra A dan B: C(x, y) = A(x, y) ± B(x, y), 2. Perkalian dua buah citra: C(x, y) = A(x, y) B(x, y), 3. Penjumlahan/pengurangan citra A dengan skalar c: B(x, y) = A(x, y) ± c, 4. Perkalian/pembagian citra A dengan sebuah skalar c: B(x, y) = c ⋅ A(x, y)
48
Pengolahan Citra Digital
Ditinjau dari aras komputasi, operasi aritmetika termasuk ke dalam operasi aras titik. Penjelasan masing-masing operasi aritmetika matriks adalah sebagai berikut. 1. Penjumlahan Dua Buah citra Persamaannya: C(x, y) = A(x, y) + B(x, y)
(4.11)
C adalah citra baru yang intensitas setiap pixel-nya adalah jumlah dari intensitas tiap pixel pada A dan B. Jika hasil penjumlahan intensitas lebih besar dari 255, maka intensitasnya dibulatkan ke 255. Algoritma penjumlahan dua buah citra ditunjukkan pada Algoritma 4.4. void addition(citra A, citra B, citra C, int N, int M) /* Menjumlahkan dua buah citra A dan B menjadi citra baru, C. Citra A, B, dan C masing-masing berukuran N × M. */ { int i, j, temp; for (i=0; i<=N-1; i++) for (j=0; j<=M-1; j++) { temp=A[i][j] + B[i][j]; if (temp > 255) C[i][j]=255; else C[i][j]=temp; } }
Algoritma 4.4.Penjumlahan dua buah citra
Operasi penjumlahan citra dapat digunakan untuk mengurangi pengaruh derau (noise) di dalam data, dengan cara merata-ratakan derajat keabuan setiap pixel dari citra yang sama yang diambil berkali-kali. Misalnya untuk citra yang sama direkam dua kali, f 1 dan f 2 , lalu dihitung intensitas rata-rata untuk setiap pixel: 1 f ‘(x,y) = { f1 (x, y) + f2 (x, y) } 2 Hasil operasi mungkin bernilai riil, karena itu semua nilai riil tersebut perlu dibulatkan ke nilai bulat terdekat, nilai maksimum adalah 255. 2. Pengurangan Dua Buah Citra Persamaannya: C(x, y) = A(x, y) – B(x, y)
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
(4.12)
49
C adalah citra baru yang intensitas setiap pixel-nya adalah selisih antara intensitas pixel pada A dan B. Ada kemungkinan hasil operasi ini menghasilkan nilai negatif , oleh karena itu, operasi pengurangan citra perlu melibatkan operasi clipping. Contoh aplikasi operasi pengurangan citra adalah untuk memperoleh suatu objek dari dua buah citra [HEN95]. Citra pertama misalnya foto sebuah ruangan yang kosong, citra kedua adalah foto ruangan yang sama tetapi ada orang di dalamnya. Hasil pengurangan citra kedua dengan gambar pertama menghasilkan citra yang latar belakangnya hitam, sedangkan latar depannya (objek orang) berwarna putih. Algoritmanya ditunjukkan pada Algoritma 4.5. void substraction (citra A, citra B, citra C, int N, int M) /* Mengurangkan dua buah citra A dan B menajdi citra baru, C. Citra A, B, dan C berukuran N × M. */ { int i, j; for (i=0; i<=N-1; i++) for (j=0; j<=M-1; j++) { C[i][j]=A[i][j] - B[i][j]; if (C[i][j] != 0) C[i][j]=255; }
/* nyatakan objek berwarna putih */
}
Algoritma 4.5. Pengurangan dua buah citra untuk mendapatkan objek di dalamnya.
Pengurangan citra juga dapat digunakan untuk mendeteksi perubahan yang terjadi selama selang waktu tertentu bila dua buah citra yang diambil adalah citra dari adegan yang sama. Teknik semacam ini dipakai pada moving images.
3. Perkalian Citra Persamaannya: C(x, y) = A(x, y) B(x, y)
(4.13)
Perkalian citra sering digunakan untuk mengoreksi kenirlanjaran sensor dengan cara mengalikan matriks citra dengan matrik koreksi. Jadi, dalam hal ini A adalah citra sedangkan B adalah matriks koreksi. Hasil operasi mungkin bernilai riil, karena itu semua nilai dibulatkan ke nilai bulat terdekat, nilai maksimum adalah 255. Algoritma perkalian citra dengan matriks koreksi ditunjukkan pada Algoritma 4.3. Kita mengasumsikan di sini ukuran citra dan matriks koreksi adalah N × N.
50
Pengolahan Citra Digital
Contoh 4.1. [GAL90] Mengalikan citra A dengan matriks koreksi: 0 12 142 255 0.3 1 6 40 254 0.3 24 0 20 255 0.3 30 2 10 240 0 .4 Matriks citra A
0.1 0.1 0 17 157 255 0.0 0 .0 0.1 2 6 40 255 = 0.0 0 .0 0 .0 32 0 20 255 0.1 0 .0 0.1 42 3 10 255
0 .4
Matriks koreksi B
¾
Matriks keluaran C
void multiplication(citra A, matriks_riil B, citra C, int N) /* Mengalikan buah citra A dengan matriks koreksi B menjadi citra C. Citra A, matriks B, dan hasil perkalian C berukuran N × N. */ { int i, j, temp; for (i=0; i<=N-1; i++) for (j=0; j<=N-1; j++) { temp=0; for (k=0; k<=N-1; k++) { temp = temp + A[i][k]*B[k][j]; /* clipping */ if (temp < 0) C[i][j] = 0; else if (temp > 255) C[i][j]=255; else C[i][j]=temp; } } }
Algoritma 4.6. Perkalian citra A dengan matriks koreksi B.
4. Penjumlahan/pengurangan citra dengan skalar Persamaannya: B(x, y) = A(x, y) ± c
(4.14)
Penjumlahan citra A dengan skalar c adalah menambah setiap pixel di dalam citra dengah sebuah skalar c, dan menghasilkan citra baru B yang intensitasnya lebih terang daripada A. Kenaikan intensitas sama untuk seluruh pixel, yaitu c.
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
51
Pengurangan citra A dengan skalar c adalah mengurangkan setiap pixel di dalam citra dengah sebuah skalar c, dan menghasilkan citra baru B yang intensitasnya lebih gelap daripada A. Penurunan intensitas sama untuk seluruh pixel, yaitu c. Contoh operasi penjumlahan/pengurangan citra dengan sebuah skalar adalah operasi pencerahan citra (lihat pembahasan operasi aras titik). Baik operasi penjumlahan maupun pengurangan citra dengan sebuah skalar melibatkan operasi clipping. Algoritma penjumlahan/pengurangan citra dengan sebuah skalar sama seperti Algoritma 4.3. 5. Perkalian/pe mbagian Citra dengan Skalar Persamaannya: B(x, y) = c ⋅ A(x, y), dan B(x, y) = A(x, y) / c
(4.15)
Perkalian citra A dengan skalar c menghasilkan citra baru B yang intensitasnya lebih terang daripada A. Kenaikan intensitas setiap pixel sebanding dengan c. Operasi perkalian citra dengan skalar dipakai untuk kalibrasi kecerahan (callibration of brightness). Pembagian citra A dengan skalar c menghasilkan citra baru B yang intensitasnya lebih gelap daripada A. Penurunan intensitas setiap pixel berbanding terbalik dengan c. Operasi pembagian citra dengan skalar dipakai untuk normalisasi kecerahan (normalization of brightness). Algoritma perkalian/pembagian citra dengan sebuah skalar serupa dengan Algoritma 4.3, hanya saja operasi + atau – diganti dengan * atau /.
4.3 Operasi Boolean pada Citra Selain operasi aritmetika, pemrosesan citra dijital juga melibatkan operasi Boolean (and, or, dan not): C(x, y) = A(x, y) and B(x, y), C(x, y) = A(x, y) or B(x, y), C(x, y) = not A(x, y).
(4.16)
(dalam notasi Bahasa C, ketiga operasi di atas ditulis sebagai: C[x][y]=A[x][y]&B[x][y] C[x][y]=A[x][y]|B[x][y] C[x][y]=!A[x][y]
52
Pengolahan Citra Digital
) Operasi Boolean mempunyai terapan yang penting pada pemrosesan morfologi pada citra biner. Pada citra biner, operasi not dapat digunakan untuk menentukan komplemen dari citra (Gambar 4.7). Algoritma membentuk komplemen dari citra biner ditunjukan oleh Algoritma 4.7.
(a) Ganesha
(b) not Ganesha
Gambar 4.7. Hasil operasi not pada citra biner Ganesha
void not(citra_biner A, citra_biner B, int N, int M) /* Membuat citra komplemen dari citra biner A. Komplemennya disimpan di dalam B. Ukuran citra A adalah N × M. */ { int i, j; for (i=0; i<=N-1; i++) for (j=0; j<=M-1; j++) { B[i][j] = !A[i][j]; } }
Algoritma 4.7. Membuat citra komplemen dari citra biner
4.5 Operasi Geometri pada Citra Pada operasi geometrik, koordinat pixel berubah akibat transformasi, sedangkan intensitasnya tetap. Ini berbeda dengan dengan operasi aritmetika yang mana koordinat pixel tetap sedangkan intensitasnya berubah.
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
53
Operasi geometri yang dilakukan misalnya translasi, rotasi, penskalaan citra, dan pencerminan citra (flipping). Pengubahan geometri dari citra f(x, y) menjadi citra baru f ’(x, y) dapat ditulis sebagai: f ‘(x’, y’) = f(g 1 (x, y), g2 (x, y))
(4.17)
yang dalam hal ini, g 1 (x) dan g 2 (y) adalah fungsi transformasi geometrik. Dengan kata lain, x’ = g 1 (x, y); y’ = g 2 (x, y)
(4.18)
a. Translasi Rumus translasi citra: x’ = x + m y’ = y + n
(4.19)
yang dalam hal ini, m adalah besar pergeseran dalam arah x, sedangkan n adalah besar pergeseran dalam arah y. Jika citra semula adalah A dan citra hasil translasi adalah B, maka translasi dapat diimplementasikan dengan menyalin citra dari A ke B: B[x][y] = A[x + m][y + n]
(4.20)
Algoritma translasi citra ditunjukkan oleh Algoritma 4.8, sedangkan contoh translasi pada citra camera diperagakan pada Gambar 4.8. void translation(citra A, citra B, int N, int M, int m, int n) /* Mentranslasi citra A sejauh m, n. Hasil translasi disimpan di dala B. Ukuran citra adalah N × M. */ { int i, j; for (i=0; i<=N-1; i++)` for (j=0; j<=M-1; j++) { B[i][j]=A[i+m][j+n]; } }
Algoritma 4.8. Operasi translasi citra
54
Pengolahan Citra Digital
(a)
(b)
Gambar 4.8. Translasi pada citra camera: (a) citra semula, (b) citra hasil translasi dengan m = 30 dan n = 25. (Terima kasih kepada Nanda Firdausi M atas izin menggunakan output programnya).
b. Rotasi Rumus rotasi citra: x’ = x cos(θ) – y sin(θ) y’ = x sin(θ) + y cos(θ)
(4.21)
yang dalam hal ini, θ = sudut rotasi berlawanan arah jarum jam (lihat Gambar 4.9). Jika citra semula adalah A dan citra hasil rotasi adalah B, maka rotasi citra dari A ke B: B[x’][y’] = B[x cos(θ) – y sin(θ)][x cos(θ) + y cos(θ)] = A[x][y]
(4.22)
y
(x',y' )
θ
(x,y) x
Gambar 4.9. Model rotasi citra
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
55
Jika sudut rotasinya 90°, maka implementasinya lebih mudah dilakukan dengan cara menyalin pixel-pixel baris ke pixel-pixel kolom pada arah rotasi (Gambar 4.10). Rotasi 180° diimplementasikan dengan melakukan rotasi 90° dua kali. Algoritma rotasi citra sejauh 90 derajat berlawanan arah jarum jam ditunjukkan pada Algoritma 4.9, sedangkan rotasi citra sejauh 90 derajat searah jarum jam ditunjukkan pada Algoritma 4.10 [HEN95].
====>
Gambar 4.10. Rotasi citra Lena sejauh 90° berlawanan arah jarum jam
void rotation90CCW(citra A, citra B, int N, int M) /* Rotasi citra A sejauh 90° berlawanan arah jarum jam (CCW = Clock Counter-wise). Ukuran citra adalah N × M. Hasil rotasi disimpan di dalam citra B. */ { int i, j, k; for (i=0; i<=N-1; i++) { k=M-1; for (j=0; j<=M-1; j++) { B[k][i]=A[i][j]; k--; } } }
Algoritma 4.8. Rotasi citra sejauh 90° berlawanan arah jarum jam.
56
Pengolahan Citra Digital
void rotation90CW(citra A, citra B, int N, int M) /* Rotasi citra A sejauh 90° searah jarum jam (CW = Clock-wise). Ukuran citra adalah N × M. Hasil rotasi disimpan di dalam cira B. */ { int i, j, k;
}
k=M-1; for (i=0; i<=N-1; i++) { for (j=0; j<=M-1; j++) { B[j][k]=A[i][j]; } k--; }
Algoritma 4.9. Rotasi citra sejauh 90° searah jarum jam.
c. Penskalaan Citra Penskalaan citra, disebut juga image zooming, yaitu pengubahan ukuran citra (membesar/zoom out atau mengecil/zoom in). Rumus penskalaan citra: x’ = sx ⋅ x y’ = sy ⋅ y
(4.23)
yang dalam hal ini, sx dan sy adalah faktor skala masing-masing dalam arah x dan arah y. Jika citra semula adalah A dan citra hasil penskalaan adalah B, maka penskalaan citra dinyatakan sebagai: B[x’][y’] = B[sx ⋅ x][ sy ⋅ y] = A[x][y]
(4.24)
Operasi zoom out dengan faktor 2 (yaitu, sx = sy = 2) diimplementasikan dengan menyalin setiap pixel sebanyak 4 kali (Gambar 4.11a). Jadi, citra 2 × 2 pixel akan menjadi 4 × 4 pixel. Algoritma zoom out dengan faktor skala = 2 ditunjukkan oleh Algoritma 4.10. Contoh citra yang diperbesar dua kali diperlihatkan pada Gambar 4.12 (citra kota San Fransisco). Operasi zoom in (pengecilan) dengan faktor skala = ½ dilakukan dengan mengambil rata-rata dari 4 pixel yang bertetangga menjadi 1 pixel (Gambar 4.11b).
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
57
(a)
(b)
Gambar 4.11. (a) Zoom out dengan faktor skala = 2, (b) Zoom in dengan faktor skala = 1/2
void zoom_out(citra A, citra B, int N, int M) /* perbesaran citra A dengan faktor skala 2 Ukuran citra adalah N × M. Hasil perbesaran disimpa d dalam citra B. */ { int i, j, k, m, n; m=0; n=0; for (i=0; i<=N-1; i++) { for (j=0; j<=M-1; j++) { B[m][n]= A[i][j]; B[m][n+1]= A[i][j]; B[m+1][n]= A[i][j]; B[m+1][n+1]= A[i][j]; n=n+2; } m=m+2; n=0; } }
Algoritma 4.10. Zoom out dengan faktor skala = 2
58
Pengolahan Citra Digital
(a)
(b)
Gambar 4.12. (a) Citra kota San Fransisco (ukuran normal), (b) citra kota San Fransisco setelah diperbesar 2 kali (s x = s y = 2):
d. Flipping Flipping adalah operasi geometri yang sama dengan pencerminan (image reflection). Ada dua macam flipping: horizontal dan vertikal (Gambar 4.13).
(a) citra
(b) flip horizontal
(c) flip vertikal
Gambar 4.13. Flipping
Flipping horizontal adalah pencerminan pada sumbu-Y (cartesian) dari citra A menjadi citra B, yang diberikan oleh: B[x][y] = A[N – x][y] Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital
(4.25) 59
Flipping vertikal adalah pencerminan pada sumbu-X (cartesian) dari citra A menjadi citra B, yang diberikan oleh: B[x][y] = A[x][M – y]
(4.26)
Algoritma flipping vertikal ditunjukkan oleh Algoritma 4.11 [HEN95]. Pencerminan pada titik asal (cartesian) dari citra A menjadi citra B diberikan oleh: B[x][y] = A[N – x][M – y]
(4.27)
Pencerminan pada garis x = y dari citra A menjadi citra B diberikan oleh: B[x][y] = A[y][x]
void vertical_flip(citra A, citra B, int N, int M) /* Flipping vertikal (pencerminan terhadap sumbu-X) terhadap citar A. */ Ukuran citra adalah N × M. Hasil flipping disimpan di dalam citra B. */ { int i, j, k; k=M-1; for (i=0; i<=N-1; i++) { for (j=0; j<=M-1; j++) { B[k][j]=A[i][j]; } k--; } }
Algoritma 4.11. Flipping vertikal.
60
Pengolahan Citra Digital
Bab 6
Histogram Citra
nformasi penting mengenai isi citra digital dapat diketahui dengan membuat histogram citra. Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai intensitas pixel dari suatu citra atau bagian tertentu di dalam citra. Dari sebuah histogram dapat diketahui frekuensi kemunculan nisbi (relative) dari intensitas pada citra tersebut. Histogram juga dapat menunjukkan banyak hal tentang kecerahan (brightness) dan kontas (contrast) dari sebuah gambar. Karena itu, histogram adalah alat bantu yang berharga dalam pekerjaan pengolahan citra baik secara kualitatif maupun kuantitatif.
I
6.1 Membuat Histogram Misalkan citra digital memiliki L derajat keabuan, yaitu dari nilai 0 sampai L – 1 (misalnya pada citra dengan kuantisasi derajat keabuan 8-bit, nilai derajat keabuan dari 0 sampai 255). Secara matematis histogram citra dihitung dengan rumus hi =
ni n
, i = 0, 1, …, L – 1
(6.1)
yang dalam hal ini, n i = jumlah pixel yang memiliki derajat keabuan i n = jumlah seluruh pixel di dalam citra
Bab 6_Histogram Citra
83
Plot h i versus fi dinamakan histogram. Gambar 6.1 adalah contoh sebuah histogram citra. Secara grafis histogram ditampilkan dengan diagram batang. Perhatikan dari persamaan 6.1 bahwa nilai n i telah dinormalkan dengan membaginya dengan n. Nilai h i berada di dalam selang 0 sampai 1.
hi
i Gambar 6.1. Histogram citra
Sebagai contoh, misalkan matriks di bawah ini menyatakan citra dijital yang berukuran 8 × 8 pixel dengan derajat keabuan dari 0 sampai 15 (ada 16 buah derajat keabuan): 3 7 7 8 10 12 14 10 2 0 0 0 1 8 15 15 14 6 5 9 8 10 9 12 12 12 11 8 8 10 11 1 0 2 3 4 5 13 10 14 4 5 0 0 1 0 2 2 15 13 11 10 9 9 8 7 2 1 0 10 11 14 13 12
Tabulasi perhitungan histogramnya ditunjukan pada Tabel 6.1. Mudah dilihat bahwa semakin besar nilai n i maka semakin besar pula nilai h i . Tabel 6.1 Perhitungan histogram
84
i
ni
0 1 2
8 4 5
hi = ni /n ( n = 64) 0.125 0.0625 0.078125
Pengolahan Citra Digital
3 4 5 6 7 8 9 10 11 12 13 14 15
2 2 3 1 3 6 3 7 4 5 3 4 3
0.03125 0.03125 0.046875 0.015625 0.046875 0.09375 0.046875 0.109375 0.0625 0.078125 0.046875 0.0625 0.046875
6.2 Algoritma Perhitungan Histogram Algoritma perhitungan histogram ditunjukkan pada Algoritma 6.1 [HEN95]. Citra masukan mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai 255. Intensitas pixel disimpan di dalam Image[0..N-1][0..M-1], sedangkan histogram disimpan di dalam tabel Hist[0..255] . Gambar 6.2 memperlihatkan histogram citra kapal (512 × 512). Beberapa program komersil seperti Adobe Photoshop, Paintshop, dan PolyView, dapat digunakan untuk membangkitkan histogram citra. void histogram(citra Image, int N, int M, float Hist[256]) /* Menghitung histogram untuk citra Image yang berukuran N × M. Histogram disimpan di dalam tabel Hist yang bertipe riil(float). */ { int i, j, n; /* inisialisasi Hist[0..255] dengan 0 */ for(i=0;i<=255;i++) Hist[i]=0; for(i=0;i<=N-1;i++) for(j=0;j<=M-1;j++) Hist[Image[i][j]]=Hist[Image[i][j]]+1; /*normalisasi Hist[i] dengan jumlah seluruh pixel*/ n=N*M; for(i=0;i<=255;i++) Hist[i]=Hist[i]/(float)n; } Algoritma 6.2. Perhitungan histogram citra
Bab 6_Histogram Citra
85
(b) Histogram citra kapal (by PolyView )
(a) kapal 512 × 512, 8-bit Gambar 6.2. Citra Kapal (512 × 512) dan histogramnya
Khusus untuk citra berwarna, histogramnya dibuat untuk setiap kanal RGB (merah, hijau, dan biru). Misalnya citra berwarna pepper 512 × 512 pixel 8-bit, pada Gambar 6.3, histogramnya ada tiga buah, masing-masing untuk komponen merah, hijau, dan biru. Histogram tersebut dihasilkan dari program [WIC01].
(b) Histogram untuk kanal merah
(a) pepper (color), 512 × 512, 24-bit
86
Pengolahan Citra Digital
(c) Histogram untuk kanal hijau
(d) Histogram untuk kanal biru
Gambar 6.3. Citra berwarna pepper dan histogram masing-masing kanal warnanya
Histogram citra banyak memberikan informasi penting sebagai berikut: 1. Nilai h i menyatakan peluang (probability) pixel, P(i), dengan derajat keabuan i. Jumlah seluruh nilai h i sama dengan 1, atau L−1
∑h
i
=1
i= 0
Peluang suatu pixel memiliki derajat keabuan lebih kecil atau sama dengan derajat keabuan tertentu adalah jumlah h i untuk 0 ≤ i ≤ j, atau j
P( i ≤ j ) =
∑h , i
0 ≤ j ≤ L– 1
i =0
2. Puncak histogram menunjukkan intensitas pixel yang menonjol. Lebar dari puncak menunjukkan rentang kontras dari gambar. Citra yang mempunyai kontras terlalu terang (overexposed) atau terlalu gelap (underexposed) memiliki histogram yang sempit. Histogramnya terlihat hanya menggunakan setengah dari daerah derajat keabuan. Citra yang baik memiliki histogram yang mengisi daerah derajat keabuan secara penuh dengan distribusi yang merata pada setiap nilai intensitas pixel (Gambar 6.4).
Bab 6_Histogram Citra
87
h(i)
h(i)
1
1
i
i 0
0
255 (a)
255 (b)
h(i)
h(i)
1
1
i 0
255 (c)
i 0
255 (d)
Gambar 6.4. (a) citra gelap, (b) citra terang, (c) citra normal (normal brightness), (d) normal brightness dan hi gh contrast
Gambar 6.5 memperlihatkan tiga buah citra Lena. Citra Lena yang pertama terlalu gelap. Histogramnya banyak menumpuk pada bagian kiri karena citra tersebut mengandung banyak nilai intensitas yang dekat dengan 0 (hitam). Citra Lena yang kedua terlalu terang. Histogramnya banyak menumpuk pada bagian kanan karena citra tersebut mengandung banyak nilai intensitas yang dekat dengan 255 (putih). Citra Lena yang ketiga adalah citra yang normal (bagus). Histogramnya tersebar merata di seluruh daerah derajat keabuan. Tiga buah histogram tersebut dihasilkan dengan program Adobe Photoshop.
88
Pengolahan Citra Digital
(a) Kiri: citra Lena yang terlalu gelap; kanan: histogramnya (by Photoshop)
(b) Kiri: citra Lena yang terlalu terang; kanan: histogramnya
Gambar 6.5. Bermacam-macam histogram dari beberapa kasus citra Lena
Bab 6_Histogram Citra
89
(c) Kiri: citra Lena yang bagus (normal); kanan: histogramnya Gambar 6.5 (lanjutan).
90
Pengolahan Citra Digital
Bab 8
Pendeteksian Tepi (Edge Detection)
eningkatan kualitas citra (image enhancement) bertujuan menghasilkan citra dengan kualitas yang lebih baik dibandingkan dengan citra semula. Langkah selanjutnya dalam pengolahan citra adalah analisis citra (image analysis). Analisis citra bertujuan mengidentifikasi parameter-parameter yang diasosiasikan dengan ciri (feature) dari objek di dalam citra, untuk selanjutnya parameter tersebut digunakan dalam menginterpretasi citra. Analisis citra pada dasarnya terdiri dari tiga tahapan: ekstrakasi ciri (feature extraction), segmentasi, dan klasifikasi.
P
Faktor kunci dalam mengekstraksi ciri adalah kemampuan mendeteksi keberadaan tepi (edge) dari objek di dalam citra. Setelah tepi objek diketahui, langkah selanjutnya dalam analisis citra adalah segmentasi, yaitu mereduksi citra menjadi objek atau region, misalnya memisahkan objek-objek yang berbeda dengan mengekstraksi batas-batas objek (boundary). Langkah terakhir dari analisis citra adalah klasifikasi, yaitu memetakan segmen-segmen yang berbeda ke dalam kelas objek yang berbeda pula.
8.1 Definisi Tepi Yang dimaksud dengan tepi (edge) adalah perubahan nilai intensitas derajat keabuan yang mendadak (besar) dalam jarak yang singkat (Gambar 8.1). Perbedaan intensitas inilah yang menampakkan rincian pada gambar. Tepi biasanya terdapat pada batas antara dua daerah berbeda pada suatu citra. Tepi dapat diorientasikan dengan suatu arah, dan arah ini berbeda-beda pada bergantung pada perubahan intensitas.
Bab 8_Pendeteksian Tepi (Edge Detection)
121
jarak perubahan intensitas
α = arah tepi
α
Gambar 8.1 Model tepi satu-matra
Perhatikan Gambar 8.2. Ada tiga macam tepi yang terdapat di dalam citra digital. Ketiganya adalah: 1. Tepi curam Tepi dengan perubahan intensitas yang tajam. Arah tepi berkisar 90°. 2. Tepi landai Disebut juga tepi lebar, yaitu tepi dengan sudut arah yang kecil. Tepi landai dapat dianggap terdiri dari sejumlah tepi-tepi lokal yang lokasinya berdekatan. 3. Tepi yang mengandung derau (noise) Umumnya tepi yang terdapat pada aplikasi computer vision mengandung derau. Operasi peningkatan kualitas citra (image enhancement) dapat dilakukan terlebih dahulu sebelum pendeteksian tepi. derajat keabuan
derajat keabuan
0
x
0
x (b) tepi landai
derajat keabuan
(a) Tepi curam
derajat keabuan
x
(d) break down tepi landai
4 4 4 4 4
4 4 8 8 8 8 8 4 4 8 8 8 8 8 4 4 8 8 8 8 8 4 4 8 8 8 8 8 4 4 8 8 8 8 8
(e) citra dengan tepi curam
x
0
(c) tepi curam dengan derau
4 4 4 4 4
4 5 6 7 8 8 8 4 5 6 7 8 8 8 4 5 6 7 8 8 8 4 5 6 7 8 8 8 4 5 6 7 8 8 8
(f) citra dengan tepi landai
Gambar 8.2 Jenis-jenis tepi
122
Pengolahan Citra Digital
8.2 Tujuan Pendeteksian Tepi Pendeteksian tepi merupakan langkah pertama untuk melingkupi informasi di dalam citra. Tepi mencirikan batas-batas objek dan karena itu tepi berguna untuk proses segmentasi dan identifikasi objek di dalam citra. Tujuan operasi pendeteksian tepi adalah untuk meningkatkan penampakan garis batas suatu daerah atau objek di dalam citra. Karena tepi termasuk ke dalam komponen berfrekuensi tinggi, maka pendeteksian tepi dapat dilakukan dengan penapis lolos-tinggi. Terdapat beberapa teknik yang digunakan untuk mendeteksi tepi, antara lain: 1. Operator gradien pertama (differential gradient) 2. Operator turunan kedua (Laplacian) 3. Operator kompas (compass operator)
8.3 Pendeteksian Tepi dengan Operator Gradien Pertama Perubahan intensitas yang besar dalam jarak yang singkat dipandang sebagai fungsi yang memiliki kemiringan yang besar. Kemiringan fungsi biasanya dilakukan dengan menghitung turunan pertama (gradient). Karena citra f(x,y) adalah fungsi dwimatra dalam bentuk diskrit, maka turunan pertamanya adalah secara parsial, masing-masing dalam arah-x dan dalam arah-y, sebagai berikut: ∂f Gx ∇ f = ∂∂fx = G y ∂ y
(8.1)
yang dalam hal ini, Gx =
∂f ( x, y ) f ( x + ∆x, y ) − f ( x, y ) = ∂x ∆x
(8.2)
Gy =
∂f ( x , y ) f ( x , y + ∆y ) − f ( x , y ) = ∂y ∆y
(8.3)
Biasanya ∆x = ∆y = 1 , sehingga persamaan turunan pertama menjadi: ∂f ( x, y ) = f ( x + 1, y ) − f ( x, y ) ∂x ∂ f ( x, y ) Gy = = f ( x , y + 1) − f ( x , y ) ∂y Gx =
Bab 8_Pendeteksian Tepi (Edge Detection)
(8.4) (8.5)
123
Titik-titik yang terlibat dalam perhitungan turunan pertama diperlihatkan pada Gambar 8.3. y (x -1,y+1)
(x ,y+ 1) (x+ 1,y+1)
(x-1,y)
(x,y)
(x+ 1,y)
(x-1,y-1) (x,y-1)
(x+1,y-1) x
Gambar 8.3 Titik-titik yang dilibatkan dalam perhitungan gradien
Kedua turunan tersebut dapat dipandang sebagai dua buah mask konvolusi sebagai berikut: 1 G1( y ) = − 1
G1( x ) = [− 1 1] dan
Contoh 8.1. [LOW91] Misalkan terdapat sebuah 5 × 5 citra dengan dua derajat keabuan sebagai berikut: 1 1 1 1 1
1 1 1 1 1
1 1 1 0 0
1 1 0 0 0
1 1 0 0 0
Hasil perhitungan gradien setiap pixel di dalam citra adalah sebagai berikut: Citra 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0
Gradien-x 0 0 0
0 0 0
0 −1 0 −1
Gradien-y
0 0 * 0 0 * −1 0 *
0
0
0
0 0
0 0
0 1 1 1 0 0
0 0
0
0
0
*
*
*
0 * 0 *
0 0
Arah gradien * *
* *
* * * * b b
0 0
* * * * ↔ * *
* *
* *
* ↔ * *
*
¾ 124
Pengolahan Citra Digital
Berdasarkan konvolusi dengan kedua mask tersebut, kita menghitung kekuatan tepi, G[f(x,y)], yang merupakan magnitudo dari gradien, dan arah tepi, α(x,y), untuk setiap pixel: G[f(x,y)]= Gx 2 + G y 2 α(x,y) = tan-1
(8.6)
Gy
(8.7)
Gx
Karena menghitung akar adalah persoalan rumit dan menghasilkan nilai riil, maka dalam praktek kekuatan tepi biasanya disederhanakan perhitungannya dengan menggunakan salah satu dari alternatif rumus berikut [DUL97]: (i) G[f(x,y)] = Gx + G y , atau 2
2
(ii) G[f(x,y)] = Gx + Gy , atau 2
2
(iii) G[f(x,y)] = max{ Gx , Gy } , atau (iv) G[f(x,y)] = max{ Gx , G y } . Dalam praktek, persamaan (ii) dan (iv) biasanya lebih disukai dan lebih mudah dikerjakan karena mengandung jumlah operasi aritmetika yang lebih sedikit. Hasil pendeteksian tepi adalah citra tepi (edges image) g(x,y), yang nilai setiap pixel-nya menyatakan kekuatan tepi: g ( x, y ) = G[ f ( x, y )] Keputusan apakah suatu pixel merupakan tepi atau bukan tepi dinyatakan dengan operasi pengambangan berikut: 1, g ( x, y ) = 0,
jika G[ f ( x , y )] ≥ T lainnya
(8.8)
yang dalam hal ini T adalah nilai ambang, pixel tepi dinyatakan putih sedangkan pixel bukan tepi dinyatakan hitam. Gambar 8.4 adalah contoh hasil deteksi semua tepi citra Lena, citra Camera, dan citra botol.
Bab 8_Pendeteksian Tepi (Edge Detection)
125
Gambar 8.4 Deteksi semua tepi citra Lena, camera, dan botol
126
Pengolahan Citra Digital
Selain operator gradien yang sudah disebutkan di atas, masih ada beberapa operator gradien pertama yang lain yang dapat digunakan untuk mendeteksi tepi di dalam citra, yaitu: (a) Operator gradien selisih-terpusat (center-difference): Dx ( x , y ) =
∂f ( x, y) f ( x + 1, y) − f ( x − 1, y ) = ∂x 2
(8.9)
D y ( x, y ) =
∂ f ( x , y ) f ( x , y + 1) − f ( x , y − 1) = ∂y 2
(8.10)
yang ekivalen dengan mask berikut: D 2 ( x ) = [− 1 0 1]
dan
1 D2 ( y) = 0 − 1
(b) Operator Sobel Tinjau pengaturan pixel di sekitar pixel (x,y): a0 a 7 a6
a1 a2 ( x , y ) a3 a5 a 4
Operator Sobel adalah magnitudo dari gradien yang dihitung dengan M=
s2x + s 2y
yang dalam hal ini, turunan parsial dihitung dengan sx = ( a2 + ca 3 + a 4 ) − (a 0 + ca 7 + a6 )
(8.11)
s y = (a 0 + ca1 + a 22 ) − (a 6 + ca5 + a4 )
(8.12)
dengan konstanta c = 2. Dalam bentuk mask, sx dan sy dapat dinyatakan sebagai − 1 0 1 S x = − 2 0 2 − 1 0 1
dan
Bab 8_Pendeteksian Tepi (Edge Detection)
2 1 1 Sy = 0 0 0 − 1 − 2 − 1 127
Arah tepi dihitung dengan persamaan Sy α(x,y) = tan-1 Sx
(8.13)
Contoh 8.2. Contoh berikut ini memeperlihatkan pendeteksian tepi dengan operator Sobel. Konvolusi pertama dilakukan terhadap pixel yang bernilai 1 (di titik pusat mask ): 3 2 3 4 2
4 1 5 2 5
2 6 7 5 1
5 4 1 7 3
1 2 3 1 2
* * * * * * 18
(i) citra semula
(ii) hasil konvolusi
Nilai 18 pada citra hasil konvolusi diperoleh dengan perhitungan berikut: S x = (3)(-1) + (2)(-2) + (3)(-1) + (2)(1) + (6)(2) + (7)(1) = 11 S y = (3)(1) + (4)(2) + (2)(1) + (3)(-1) + (5)(-2) + (7)(-1) = -7 M=
s2x + s 2y = 11 2 + ( −7 ) 2 ≅ S x + S y = 11 + − 7 = 18
Pada contoh ini, nilai M =
s2x + s 2y dihampiri dengan menghitung
M ≅ Sx + S y .
¾
Contoh 8.3. Di bawah ini contoh lain pendeteksian tepi dengan operator Sobel, dimana hasil konvolusi diambangkan dengan T = 12. Citra: 0 0 0 0 0 0
0 0 0 0 0 2 0 3 3 0 0 1 0 0 0 2 4 3 0 2 0 2 4 3 3 2 3 0 1 3 3 4 3 3 3 3 1 0 4 3 3 2 4 3 2 0 1 2 3 3 4 4 4 3
128
gradien - x + gradien - y :
* * * * * *
* * * * * * 10 14 12 14 4 * 6 8 10 20 16 12 6 0 * 4 10 14 10 2 4 2 4 * 2 12 12 2 2 4 6 8 * * * * * * * * * * * 4
* 6
* 4
Pengolahan Citra Digital
Hasil pengambangan dengan T = 12: * * * * * *
* * 4 6 4 10 14 12 14 4 * 6 8 10 20 16 12 6 0 * 4 10 14 10 2 4 2 4 * 2 12 12 2 2 4 6 8 * * * * * * * * * * *
*
*
*
*
*
*
¾ (c) Operator Prewitt Persamaan gradien pada operator Prewitt sama seperti operator Sobel, tetapi menggunakan nilai c = 1: − 1 0 1 Px = − 1 0 1 − 1 0 1
dan
1 1 1 Py = 0 0 0 − 1 − 1 − 1
(d) Operator Roberts Operator Roberts sering disebut juga operator silang (gambar 8.5). Gradien Roberts dalam arah-x dan arah-y dihitung dengan rumus: R+ ( x , y ) = f ( x + 1, y + 1) − f ( x , y )
(8.14)
R− ( x , y ) = f ( x , y + 1) − f ( x + 1, y )
(8.15)
f(x, y+1)
f(x, y)
f(x + 1, y+1)
f(x + 1, y)
x Gambar 8.5 Operator silang
Bab 8_Pendeteksian Tepi (Edge Detection)
129
Operator R+ adalah hampiran turunan berarah dalam arah 45°, sedangkan Radalah hampiran turunan berarah dalam arah 135°. Dalam bentuk mask konvolusi, operator Roberts adalah: 1 0 0 1 dan R− = R+ = 0 − 1 − 1 0
Khusus untuk operator Roberts, arah tepi dihitung dengan rumus α ( x, y ) =
π R + tan− 1( − ) 4 R+
(8.17)
Sedangkan kekuatan tepi umumnya dihitung dengan rumus G[f(x,y)] = R+ + R− Contoh 8.4. Contoh berikut ini memeperlihatkan pendeteksian tepi dengan operator Roberts. 3 2 3 4 2
4 1 5 2 5
2 6 7 5 1
5 4 1 7 3
1 2 3 1 2
(i) citra semula
4 5 2 1 *
3 7 5 1 *
3 8 4 8 *
6 2 4 7 *
* * * * *
(ii) hasil konvolusi
Nilai 4 pada pojok kiri atas pada citra hasil konvolusi diperoleh dengan perhitungan sebagai berikut: f ’[0,0] = ¦ 3 – 1 ¦ + ¦ 4 – 2 ¦ = 4
8.4 Pendeteksian Tepi dengan Operator Turunan Kedua Operator turunan kedua disebut juga operator Laplace. Operator Laplace mendeteksi lokasi tepi lebih akurat khususnya pada tepi yang curam. Pada tepi yang curam, turunan keduanya mempunyai persilangan nol (zero-crossing), yaitu titik di mana terdapat pergantian tanda nilai turunan kedua (Gambar 8.6),
130
Pengolahan Citra Digital
sedangkan pada tepi yang landai tidak terdapat persilangan nol. Persilangan nol merupakan lokasi tepi yang akurat. Turunan kedua fungsi dengan dua peubah adalah: ∇2 f =
∂2 f ∂ 2 f + ∂x 2 ∂y 2
(8.18)
f(x)
∂f /∂x
∂2 f /∂x2
•
(a) Tepi landai
(b) Tepi curam
Gambar 8.6 Deteksi tepi dengan operator turunan kedua
Dengan menggunakan definisi hampiran selisih-mundur (backward difference approximation): G3 ( x ) =
∂f ( x, y) f ( x, y) − f ( x − ∆x, y ) = ∂x ∆x
(8.19)
G3 ( y ) =
∂f ( x , y ) f ( x , y ) − f ( x , y − ∆y ) = ∂y ∆y
(8.20)
Bab 8_Pendeteksian Tepi (Edge Detection)
131
maka ∇2 f =
∂2 f ∂ 2 f + ∂x 2 ∂y 2
= G1 (G3 ( x )) + G1 (G 3( y ))
=
1 1 G1 ( f ( x , y )) − G1 ( f ( x − ∆x, y )) + G1 ( f ( x , y )) − G1 ( f ( x , y − ∆y )) ∆x ∆y
1 f ( x + ∆x , y ) − f ( x , y ) − f ( x , y ) + f ( x − ∆x , y ) { } ∆x ∆x 1 f ( x , y + ∆y ) − f ( x , y ) − f ( x , y ) + f ( x , y − ∆y ) + { } ∆y ∆y =
=
f ( x + ∆x, y ) − 2 f ( x, y) + f ( x − ∆x, y ) ( ∆x )2
+
f ( x, y + ∆y) − 2 f ( x, y ) + f ( x, y − ∆y) (∆y )2
Dengan mengasumsikan ∆x = ∆y = 1, maka diperoleh: ∇ 2 f ( x, y ) = f ( x + 1, y ) − 2 f ( x , y ) + f ( x − 1, y ) + f ( x , y + 1) − 2 f ( x , y ) + f ( x, y − 1) = f ( x, y − 1) + f ( x − 1, y ) − 4 f ( x , y ) + f ( x + 1, y ) + f ( x , y + 1) (8.21) atau dapat dinyatakan sebagai mask : 0 1 0 1 − 4 1 0 1 0
Selain mask di atas, masih ada dua hampiran operator Laplace yang lain, yaitu − 1 − 1 − 1 1 − 1 8 − 1 dan − 2 − 1 − 1 − 1 1
132
−2 4 −2
1 − 2 1
Pengolahan Citra Digital
Kadang-kadang diinginkan memberi bobot yang lebih pada pixel tengah di antara pixel tetangganya. Operator Laplace yang digunakan untuk tujuan ini adalah 4 1 1 4 − 20 4 1 4 1
Operator Laplace termasuk ke dalam penapis lolos-tinggi sebab jumlah seluruh koefisiennya nol dan koefisiennya mengandung nilai negatif maupun positif.
Contoh 8.5. [GAL90] Contoh berikut ini memperlihatkan pendeteksian tepi vertikal dengan operator Laplace: 4 4 4 4 4
4 4 8 8 8 8 4 4 8 8 8 8 4 4 8 8 8 8 4 4 8 8 8 8 4 4 8 8 8 8
* * * * *
* 0 0 0 *
* * * + 4 − 4 0 0 * + 4 − 4 0 0 * + 4 − 4 0 0 * * * * * * *
*
(ii) Hasil konvolusi
(i) Citra semula 8
+4
4
0
0
-4
Satu baris dari hasil pendeteksian tepi: 0 +4 –4 0 0 Pada contoh di atas, persilangan nol bersesuaian dengan tepi pada citra semula, yang terdapat pada titik tengah antara dua buah pixel yang bersesuaian. Pixel tepi seharusnya ditandai secara konsisten, apakah pixel di sebelah kiri atau di sebelah kanan garis “|”. ¾
Bab 8_Pendeteksian Tepi (Edge Detection)
133
Contoh 8.6. [GAL90] Pendeteksian tepi diagonal (miring) dengan operator Laplace: 4 4 4 4 4
4 8 8 8 8 8 8 4 4 8 8 8 8 8 4 4 4 8 8 8 8 4 4 4 4 8 8 8 4 4 4 4 4 8 8
* * * * *
* * 0 * + 8 − 4 0 0 * 0 + 8 − 4 0 * * * * * *
* * * 0 +8 −4 0 0 *
0 0 *
* 0
* 0
(ii) Hasil konvolusi
(i) Citra semula
¾
Contoh 8.7. Pendeteksian tepi landai dengan operator Laplace: 2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
5 5 5 5 5
8 8 8 8 8
8 8 8 8 8
8 8 8 8 8
8 8 8 8 8
(i) Citra semula
* * * * *
* * * * * * 0 +3 0 −3 0 0 0 +3 0 −3 0 0 0 +3 0 −3 0 0 * * * * * *
* * * * *
(ii) Hasil konvolusi
Satu baris dari hasil pendeteksian tepi: 0 +3 0 –3 0 Pada contoh di atas tidak terdapat persilangan nol; lokasi tepi yang sesungguhnya ditentukan secara interpolasi. ¾
Kadangkala pendeteksian tepi dengan operator Laplace menghasilkan tepi-tepi palsu yang disebabkan oleh gangguan pada gambar [DUL97]. Untuk mengurangi kemunculan tepi palsu, citra disaring dulu dengan fungsi Gaussian (Gambar 8.7).
134
Pengolahan Citra Digital
f(x,y)
dihaluskan dengan fungsi Gauss, G(x,y)
h(x,y) operator Laplace, ∇2
k(x,y) Gambar 8.7 Skema pendeteksian tepi untuk citra yang mengalami gangguan.
Berdasarkan skema pada Gambar 8.7: k ( x , y ) = ∇ 2h ( x , y )
(8.22)
h ( x, y) = f ( x, y) * G( x, y )
(8.23)
dan
maka dapat dibuktikan bahwa ∇ 2 [ f ( x , y ) * G ( x , y )] = f ( x , y ) * ∇ 2G( x, y )
(8.24)
k ( x , y ) = f ( x , y ) * ∇ 2G( x , y )
(8.25)
Jadi,
yang dalam hal ini, x 2 + y 2 − 2σ 2 − e ∇ G( x, y ) = σ4 2
Bab 8_Pendeteksian Tepi (Edge Detection)
( x2 + y2 ) 2σ
2
(8.26)
135
Fungsi ∇2 G(x,y) merupakan turunan kedua dari fungsi Gauss, kadang-kadang disebut juga fungsi Laplacian of Gaussian (LoG) atau fungsi topi orang Mexico (Mexican Hat), karena bentuk kurvanya seperti topi Meksiko. Jadi, untuk mendeteksi tepi dari citra yang mengalami gangguan, kita dapat melakukan salah satu dari dua operasi ekivalen di bawah ini: 1.
Konvolusi citra dengan fungsi Gauss G(x,y), kemudian lakukan operasi Laplacian terhadap hasilnya, atau
2.
Konvolusi citra dengan penapis LoG.
Contoh penapis LoG yang berukuran 5 × 5: 0 −1 0 0 0 0 −1 − 2 −1 0 − 1 − 2 16 − 2 − 1 0 −1 − 2 −1 0 0 0 −1 0 0
Hasil pendeteksian tepi dengan operator Laplace dan Laplacian of Gaussian diperlihatkan pada Gambar 8.8.
(a)
136
(b)
Pengolahan Citra Digital
(c)
(d)
Gambar 8.8 (a) citra botol; (b) Laplace; (c) Laplace dengan bobot lebih; (d) Laplacian of Gaussian (LoG)
8.5 Pendeteksian Tepi dengan Operator Kompas Operator kompas (compass operator) digunakan untuk mendeteksi semua tepi dari berbagai arah di dalam citra. Operator kompas yang dipakai untuk pendeteksian tepi menampilkan tepi dari 8 macam arah mata angin: Utara, Timur Laut, Timur, Tenggara, Selatan, Barat Daya, dan Barat Laut. Pendeteksian tepi dilakukan dengan mengkonvolusikan citra dengan berbagai mask kompas, lalu dicari nilai kekuatan tepi (magnitude) yang terbesar dan arahnya. Jika misaln ya digunakan sebanyak p buah mask kompas dan nilai kekuatan tepi pada pixel (x, y) untuk semua mask adalah G1 [f(x,y)], G2 [f(x,y)], …, Gp [f(x,y)], maka besar kekuatan tepi adalah: G [ f ( x , y )] = max{Gi [ f ( x , y )] i = 1,2,..., p} i
(8.27)
Jika mask k adalah mask yang memberikan kekuatan terbesar, maka arah tepi ditentukan dari mask k tersebut. Operator kompas yang dipakai untuk pendeteksian tepi menampilkan tepi dari 8 macam arah mata angin:
Bab 8_Pendeteksian Tepi (Edge Detection)
137
Utara 1 1 1 1 −2 1 − 1 − 1 − 1
Timur Laut 1 1 1 − 1 − 2 1 − 1 − 1 1
Timur − 1 1 − 1 − 2 − 1 1
1 1 1
Tenggara − 1 − 1 1 − 1 − 2 1 1 1 1
Selatan − 1 − 1 − 1 1 −2 1 1 1 1
Barat Daya 1 − 1 − 1 1 − 2 − 1 1 1 1
Barat 1 1 − 1 1 − 2 − 1 1 1 − 1
Barat Laut 1 1 1 1 − 2 − 1 1 − 1 − 1
Operator kompas yang tersedia dapat juga digunakan untuk mendeteksi tepi dalam arah tertentu saja. Misalnya diinginkan mendeteksi tepi dalam arah horizontal dan vertikal, seperti hasil pendeteksian tepi citra San Fransisco (Gambar 8.9) dan citra WTC1109.
Tepi horizontal
Tepi vertikal
Gambar 8.9 Deteksi tepi horizontal dan vertikal dari citra San Fransisco
138
Pengolahan Citra Digital
Gambar 8.10. Citra WTC1109
Tepi vertikal
Bab 8_Pendeteksian Tepi (Edge Detection)
139
Tepi horizontal Gambar 8.10 (lanjutan).
140
Pengolahan Citra Digital
Bab 11
Citra Biner
itra biner (binary image) adalah citra yang hanya mempunyai dua nilai derajat keabuan: hitam dan putih. Meskipun saat ini citra berwarna lebih disukai karena memberi kesan yang lebih kaya daripada citra biner, namun tidak membuat citra biner mati. Pada beberapa aplikasi citra biner masih tetap dibutuhkan, misalnya citra logo instansi (yang hanya terdiri atas warna hitam dan putih), citra kode batang (bar code) yang tertera pada label barang, citra hasil pemindaian dokumen teks, dan sebagainya. Bab 10 ini akan memaparkan beberapa konsep dan teknik pengolahan citra biner.
C
11.1 Pendahuluan Seperti yang sudah disebutkan di awal Bab, citra biner hanya mempunyai dua nilai derajat keabuan: hitam dan putih. Pixel-pixel objek bernila i 1 dan pixel-pixel latar belakang bernilai 0. Pada waktu menampilkan gambar, 0 adalah putih dan 1 adalah hitam. Jadi, pada citra biner, latar belakang berwarna putih sedangkan objek berwarna hitam. Gambar 11.1 memperlihatkan beberapa contoh citra biner, sedangkan Gambar 11.2 adalah contoh pengkodean citra biner.
(a) Citra logo
Bab 11_Citra Biner
(b) Citra lukisan mobil
167
23942
0
(c) Citra teks (hasil pemindaian dokumen)
41480
3
(d) Citra kode batang (bar code)
Gambar 11.1 Beberapa contoh citra biner
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
1
1
1
1
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
0
0
0
1
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
Gambar 11.2 Huruf “B” dan representasi biner dari derajat keabuannya.
Meskipun komputer saat ini dapat memproses citra hitam-putih (greyscale ) maupun citra berwarna, namun citra biner masih tetap dipertahankan keberadaannya. Alasan penggunaan citra biner adalah karena ia memiliki sejumlah keuntungan sebagai berikut: 1. Kebutuhan memori kecil karena nilai derajat keabuan hanya membutuhkan representasi 1 bit. Kebutuhan memori untuk citra biner masih dapat berkurang secara berarti dengan metode pemampatan run-length encoding (RLE). Metode RLE akan dijelaskan kemudian. 2. Waktu pemrosesan lebih cepat dibandingkan dengan citra hitam-putih karena banyak operasi pada citra biner yang dilakukan sebagai operasi logika (AND, OR, NOT, dll) ketimbang operasi aritmetika bilangan bulat.
168
Pengolahan Citra Digital
Aplikasi yang menggunakan citra biner sebagai masukan untuk pemrosesan pengenalan objek, misalnya pengenalan karakter secara optik , analisis kromosom, pengenalan sparepart komponen industri, dan sebagainya.
11.2 Konversi Citra hitam-putih ke Citra Biner Pengkonversian citra hitam-putih (greyscale) menjadi citra biner dilakukan untuk alasan-alasan sebagai berikut: 1. Untuk mengidentifikasi keberadaan objek, yang direpresentasikan sebagai daerah (region) di dalam citra. Misalnya kita ingin memisahkan (segmentasi) objek dari gambar latar belakangnya. Pixel-pixel objek dinyatakan dengan nilai 1 sedangkan pixel lainnya dengan 0. Objek ditampilkan seperti gambar siluet. Untuk memperoleh siluet yang bagus, objek harus dapat dip isahkan dengan mudah dari gambar latar belakangnya. 2. Untuk lebih memfokuskan pada analisis bentuk morfologi, yang dalam hal ini intensitas pixel tidak terlalu penting dibandingkan bentuknya. Setelah objek dipisahkan dari latar belakangnya, properti geometri dan morfologi/ topologi objek dapat dihitung dari citra biner. Hal ini berguna untuk pengambilan keputusan. 3. Untuk menampilkan citra pada piranti keluaran yang hanya mempunyai resolusi intensitas satu bit, yaitu piranti penampil dua-aras atau biner seperti pencetak (printer). 4. Mengkonversi citra yang telah ditingkatkan kualitas tepinya (edge enhancement) ke penggambaran garis-garis tepi. Ini perlu untuk membedakan tepi yang kuat yang berkoresponden dengan batas-batas objek dengan tepi lemah yang berkoresponden dengan perubahan illumination, bayangan, dll.
Pengambangan Konversi dari citra hitam-putih ke citra biner dilakukan dengan operasi pengambangan (thresholding). Operasi pengambangan mengelompokkan nilai derajat keabuan setiap pixel ke dalam 2 kelas, hitam dan putih. Dua pendekatan yang digunakan dalam operasi pengambangan adalah pengambangan secara global dan pengambangan secara lokal. a. Pengambangan secara global (global image thresholding ) Setiap pixel di dalam citra dipetakan ke dua nilai, 1 atau 0 dengan fungsi pengambangan: 1, f B (i , j ) = 0,
Bab 11_Citra Biner
f g (i , j ) ≤ T lainnya
(11.1)
169
yang dalam hal ini, f g (i, j) adalah citra hitam-putih, f B (i, j) adalah citra biner, dan T adalah nilai ambang yang dispesifikasikan. Dengan operasi pengambangan tersebut, objek dibuat berwarna gelap (1 atau hitam) sedangkan latar belakang berwarna terang (0 atau putih). Nilai ambang T dipilih sedemikian sehingga galat yang diperoleh sekecil mungkin. Cara yang umum menentukan nilai T adalah dengan membuat histogram citra. Jika citra mengandung satu buah objek dan latar belakang mempunyai nilai intensitas yang homogen, maka citra tersebut umumnya mempunyai histogram bimodal (mempunyai dua puncak atau dua buah maksimum lokal) seperti yang ditunjukkan pada Gambar 11.3. Nilai T dipilih pada nila i minimum lokal yang terdapat di antara dua puncak. Dengan cara seperti ini, kita tidak hanya mengkonversi citra hitam-putih ke citra biner, tetapi sekaligus melakukan segmentasi objek dari latar belakangnya. Gambar 11.4 memperlihatkan segmentasi objek (botol dan apel) dari latar belakangnya dengan cara mengkonversikan citra hitam-putihnya menjadi citra biner dengan menggunakan nilai ambang T = 90 dan T = 100. Gambar 11.5 memperlihatkan konversi citra Lena menjadi citra biner dengan T = 128 dan T = 150. P(r)
kelas 0
T
kelas 1
r Gambar 11.3 Penentuan nilai ambang T
.
(a) 170
(b) Pengolahan Citra Digital
(c)
(d)
Gambar 11.4 (a) Citra botol, (b) histogram, (c) T = 90, dan (d) T = 100
(a) Citra Lena
(c) T = 128
(b) Histogram citra Lena
(d) T = 150
Gambar 11.5 Operasi pengambangan pada citra Lena
Bab 11_Citra Biner
171
Jika nilai intensitas objek diketahui dalam selang [T1 , T2 ], maka kita dapat menggunakan fungsi pengambangan: 1, T1 ≤ f g (i, j ) ≤ T2 f B (i, j ) = lainnya 0,
(11.2)
b. Pengambangan secara lokal adaptif (locally adaptive image thresholding ) Pengambangan secara global tidak selalu tepat untuk seluruh macam gambar. Beberapa informasi penting di dalam gambar mungkin hilang karena pengambangan global ini. Lagipula, tidak ada harga nilai ambang yang berlaku secara global untuk seluruh daerah citra (misalnya pada citra kedokteran, citra pemandangan alam, dsb). Pengambangan secara lokal dilakukan terhadap daerah-daerah di dalam citra. Dalam hal ini citra dipecah menjadi bagian-bagian kecil, kemudian proses pengambangan dilakukan secara lokal. Nilai ambang untuk setiap bagian belum tentu sama dengan bagian lain. Sebagai contoh, pengambangan dilakukan terhadap daerah citra yang berukuran 3 × 3 atau 5 × 5 pixel. Nilai ambangnya ditentukan sebagai fungsi rata-rata derajat keabuan di dalam dearah citra tersebut. Intensitas pixel yang berbeda secara signifikan dari nilai rata-rata tersebut dianggap mengandung informasi kontras dan ini harus dipertahankan di dalam citra biner. Dengan pengambangan secara lokal adaptif, secara subjektif citra biner yang dihasilkan terlihat lebih menyenangkan dan sedikit informasi yang hilang.
11.3 Penapis Luas Proses pengambangan menghasilkan citra biner. Seringkali citra biner yang dihasilkan mengandung beberapa daerah yang dianggap sebagai gangguan. Biasanya daerah gangguan itu berukuran kecil. Penapis luas dapat digunakan untuk menghilangan daerah gangguan tersebut [JAI95]. Misalkan objek yang dianalisis diketahui mempunyai luas yang lebih besar dari T. Maka, pixel-pixel dari daerah yang luasnya di bawah T dinyatakan dengan 0. Dengan cara ini, daerah yang berupa gangguan dapat dihilangkan (Gambar 11.6 dan 11.7).
172
Pengolahan Citra Digital
Gambar 11.6 Kiri: gangguan pada citra biner yang mengandung huruf “i”; Kanan: citra yang dihasilkan setelah dilakukan penapisan (T = 10) [JAI95].
Gambar 11.7 Kesalahan yang diperoleh dari pengambilan nilai T0 yang tidak tepat (T = 25). Perhatikan bahwa “titik” di atas huruf “i” hilang karena luasnya, sehingga huruf “i” terlihat seperti angka “1” [JAI95].
11.4 Pengkodean Citra Biner Citra biner umumnya dikodekan dengan metode run-length encoding (RLE). Metode pengkodean ini menghasilkan representasi citra yang mampat. Dua pendekatan yang digunakan dalam penerapan RLE pada citra biner: a. Posisi awal kelompok nilai 1 dan panjangnya (length of runs) b. Panjang run, dimulai dengan panjang run 1.
Bab 11_Citra Biner
173
Contoh 11.1. Misalkan citra binernya adalah sebagai berikut 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
Hasil pengkodean dengan metode RLE: (i) pendekatan pertama: (1, 3) (7, 2) (12, 4) (17, 2) (20, 3) (5, 13) (19, 4) (1, 3) (17, 6) (ii) pendekatan kedua 3, 3, 2, 3, 4, 1, 2, 1, 3 0, 4, 13, 1, 4 3, 13, 6
¾
11.5 Segmentasi Citra Biner Proses awal yang dilakukan dalam menganalisis objek di dalam citra biner adalah segmentasi objek. Proses segmentasi bertujuan mengelompokkan pixel-pixel objek menjadi wilayah (region) yang merepresentasikan objek. Ada dua pendekatan yang digunakan dalam segmentasi objek: 1. Segmentasi berdasarkan batas wilayah (tepi dari objek). Pixel-pixel tepi ditelusuri sehingga rangkaian pixel yang menjadi batas (boundary) antara objek dengan latar belakang dapat diketahui secara keseluruhan (algoritma boundary following). 2. Segmentasi ke bentuk-bentuk dasar (misalnya segmentasi huruf menjadi garis-garis vertikal dan horizontal, segmentasi objek menjadi bentuk lingkaran, elips, dan sebagainya). Kita hanya akan membahas pendekatan pertama.
174
Pengolahan Citra Digital
Segmentasi berdasarkan batas wilayah. Pada citra biner, batas antara objek dengan latar belakang terlihat jelas. Pixel objek berwarna hitam sedangkan pixel latar belakang berwarna putih. Pertemuan antara pixel hitam dan putih dimodelkan sebagai segmen garis. Penelusuran batas wilayah dianggap sebagai pembuatan rangkaian keputusan untuk bergerak lurus, belok kiri, atau belok kanan seperti yang diperlihatkan pada Gambar 11.8.
Gambar 11.8 Proses penelusuran batas wilayah dalam citra biner [DUL97].
Pixel yang bertanda • menyatakan pixel yang sedang ditelaah. Penelusur harus menentukan arah pixel tepi berikutnya bergantung pada pixel-pixel sekitarnya. Algoritma menentukan arah berikutnya: if DepanTidakSama(arah,x,y) then Belok kanan (arah,x,y) else if SilangSama(arah,x,y) then Belok kiri (arah,x,y) else Lurus (arah,x,y) endif endif
Metode pendeteksian batas wilayah yang lain adalah pendeteksian secara topologi. Pada metode topologi, setiap kelompok 4-pixel bertetangga diperiksa, dan bila kelompok tersebut sama dengan salah satu bentuk pada Gambar 11.9, maka pada titik tengah dari kelompok pixel tersebut terdapat tepi.
Bab 11_Citra Biner
175
Gambar 11.9 Bentuk -bentuk yang menghasilkan titik tepi [MEN89].
Titik tepi yang dideteksi selanjutnya dihubungkan oleh garis-garis penghubung. Arah garis penghubung dikodekan dengan kode rantai (chain code).
11.6 Representasi Wilayah Wilayah (region) di dalam citra biner dapat direpresentasikan dalam beberapa cara. Salah satu cara yang populer adalah representasi wilayah dengan pohonempatan (quadtree). Setiap simpul di dalam pohon-empatan merupakan salah satu dari tiga ketagori: putih, hitam, dan abu-abu. Pohon-empatan diperoleh dengan membagi citra secara rekursif. Wilayah di dalam citra dibagi menjadi empat buah upa-wilayah yang berukuran sama. Untuk setiap upa-wilayah, bila pixel-pixel di dalam wilayah tersebut semuanya hitam atau semuanya putih, maka proses pembagian dihentikan. Sebaliknya, bila pixel-pixel di dalam upa-wilayah mengandung baik pixel hitam mapupun pixel putih (kategori abu-abu), maka upawilayah tersebut dibagi lagi mejadi empat bagian. Demikian seterusnya sampai diperoleh upa-wilayah yang semua pixel-nya hitam atau semua pixel-nya putih. Proses pembagian tersebut digambarkan dengan pohon-empatan. Dinamakan pohon-empatan karena setiap simpul mempunyai tepat empat anak, kecuali simpul daun. Gambar 10.10 memperlihatkan contoh representasi wilayah dengan pohon empatan.
176
Pengolahan Citra Digital
B
C
E
D
A
G
A
F
H B
C
D
E
G
H
M
F I
J
L
K
M I
J
K
L
Kode: gwgwbbwbgwwgwwgwwbbb Di-decode sebagai: g(wg(wbbw)bg(wwg(wwbb)b)) Keterangan: b = black, w = white, g = gray
(a) Citra biner
(b) Pohon-empatan
Gambar 11.10 Representasi wilayah dengan pohon-empatan
11.7 Properti Geometri Setelah proses segmentasi objek selesai dilakukan, maka proses berikutnya adalah menganalisis objek untuk mengenali objek tersebut. Analisis objek didasarkan pada ciri khas (feature) geometri pada objek tersebut. Kita asumsikan di dalam citra biner hanya terdapat 1 buah objek. Ada dua kelompok ciri khas pada objek [JAI95]: a. Global feature, yaitu ciri khas keseluruhan objek. b. Local feature, yaitu ciri khas bagian tertentu dari objek. Besaran yang termasuk global feature: (i) Luas atau ukuran objek (A) A=
n
m
∑∑ f (i, j )
(11.3)
i =1 j =1
Catatan: f(i, j) = 1 jika (i, j) adalah pixel objek
Bab 11_Citra Biner
177
(ii) Pusat massa Berguna untuk menentukan posisi objek. n
x=
m
∑∑ j . f (i, j ) i =1 j =1
n
y=
(11.4)
A m
∑∑ i. f (i , j ) i =1 j =1
(11.5)
A
(iii) Momen inersia (M) n
m
∑∑ j . f (i , j) 2
Mx =
i =1 j =1
A n
(11.6)
m
∑∑ i . f (i , j) 2
My =
i =1 j =1
A
(11.7)
(iv) Keliling objek (K) Menghitung panjang batas wilayah. Pixel dalam batas wilayah horizontal atau vertikal dianggap satu satuan panjang, sedangkan pixel pada arah diagonal panjangnya √2 satuan. (v) Tinggi (T) Dihitung dari jarak vertikal dari pixel tertinggi dan terendah dari objek. Jarak antara pixel (i1 , j 1 ) dan pixel (i2 , j 2 ) dapat dihitung dengan bermacam-macam rumus: - Euclidean d Euclidean = (i1 − i2 ) 2 + ( j1 − j2 )2
-
City-block d city = i1 − i2 + j1 − j2
178
(11.8)
(11.9)
Pengolahan Citra Digital
-
Chessboard d chess = max ( i1 − i2 , j1 − j2 )
(11.10)
(vi) Lebar (L) Dihitung dari jarak horizontal dari pixel tertinggi dan terendah dari objek. (vii) Diameter Dihitung dari jarak paling jauh dari dua titik pada objek. (viii) Kompleksitas bentuk Menyatakan seberapa rumitnya suatu bentuk. Didefinisikan sebagai K2 /A, yang dalam hal ini K = keliling, A = luas. (ix) Proyeksi Menyatakan bentuk yang diperoleh dari hasil proyeksi objek terhadap garis sumbu. Proyeksi citra biner terhadap garis horizontal dan garis vertikal dihitung dengan rumus: H (i ) =
m
∑ f (i , j )
(11.11)
j =1
V (i ) =
n
∑ f (i, j )
(11.12)
i =1
Sedangkan besaran yang termasuk local feature antara lain: (i) Arah dan panjang segmen garis lurus Arah garis dinyatakan dengan kode Freeman, sedangkan panjang garis dihitung sebagai jarak antara ujung-ujung garis. (ii) Sudut antar garis Menyatakan besar sudut antara dua garis lurus yang berpotongan. (iii) Jarak relatif Dihitung sebagai jarak antara dua titik. (iv) Object signature Menyatakan jarak dari pusat massa ke tepi suatu objek pada arah 0 sampai 360 derajat.
Bab 11_Citra Biner
179
11.8 Penipisan Pola Pada aplikasi pencocokan pola, banyak bentuk terutama bentuk yang mengulur/memanjang yang dapat dinyatakan dalam versi yang lebih tipis. Bentuk yang lebih tipis terdiri dari garis-garis terhubung yang disebut rangka (skeleton) atau tulang atau garis inti. Idealnya, rangka tersebut membentang sepanjang garis sumbu objek. Penipisan (thinning) adalah operasi pemrosesan citra biner yang dalam hal ini objek (region) direduksi menjadi rangka yang menghampiri garis sumbu obje k. Tujuan penipisan adalah mengurangi bagian yang tidak perlu (redundant) sehingga hanya dihasilkan informasi yang esensial saja. Pola hasil penipisan harus tetap mempunyai bentuk yang menyerupai pola asalnya. Sebagai contoh, Gambar 11.11 adalah huruf “R” dan hasil penipisan polanya menjadi rangka “R”.
(a) Huruf “R”
(b) Hasil penipisan huruf “R
Gambar 11.11 Penpisan pola huruf “R”
Penipisan pola merupakan proses yang iteratif yang menghilangkan pixel-pixel hitam (mengubahnya menjadi pixel putih) pada tepi-tepi pola. Jadi, algoritma penipisan mengelupas pixel-pixel pinggir objek, yaitu pixel-pixel yang terdapat pada peralihan 0→1. Algoritma penipisan pola harus memenuhi persyaratan sebagai berikut [PIT93]: 1. Mempertahankan keterhubungan pixel-pixel objek pada setiap lelaran. Dengan kata lain, tidak menyebabkan bentuk objek menjadi terputus (Gambar 11.12(a)). 2. Tidak memperpendek ujung lengan dari bentuk yang ditipiskan (Gambar 11.12(b)).
180
Pengolahan Citra Digital
(a)
(b)
p8
p1
p2
p7
p0
p3
p6
p5
p4
(c)
Gambar 11.12 (a) Penghapusan pixel pinggir menyebabkan ketidakterhubungan, (b) penghapusan pixel pinggir memperpendek lengan objek, (c) notasi pixel yang digunakan untuk memeriksa keterhubungan.
Algoritma penipisan yang umum adalah memeriksa pixel-pixel di dalam jendela yang berukuran 3 × 3 pixel dan mengelupas satu pixel pada pinggiran (batas) objek pada setiap lelaran, sampai objek berkurang menjadi garis tipis. Notasi pixel di dalam jendela 3 × 3 diperlihatkan pada Gambar 11.12(c). Algoritma bekerja secara iteratif, pada setiap lelaran dilakukan premrosesan pada jendela yang berukuran 3 × 3 pixel. Algoritmanya adalah sebagai berikut [PIT93]: 1. Mula-mula diperiksa jumlah pixel objek (yang bernilai 1), N, di dalam jendela 3 × 3 pixel. 2. Jika N kurang atau sama dengan 2, tidak ada aksi yang dilakukan karena di dalam jendela terdapat ujung lengan objek. 3. Jika N lebih besar dari 7, tidak ada aksi yang dilakukan karena dapat menyebabkan pengikisan (erosion) objek. 4. Jika N lebih besar dari 2, periksa apakah penghilangan pixel tengah menyebabkan objek tidak terhubung. Ini dilakukan dengan membentuk barisan p 1 p 2p 3 …p 8p 1. Jika jumlah peralihan 0 → 1 di dalam barisan tersebut sama dengan 1, berarti hanya terdapat satu komponen terhubung di dalam jendela 3 × 3. Pada kasus ini, dibolehkan menghapus pixel tengah yang bernilai 1 karena penghapusan tersebut tidak mempengaruhi keterhubungan.
Algoritma penipisan pola dalam bahasa C diperlihatkan pada Algoritma 11.1. void penipisan(citra f, int N1, int M1, int N2, int M2) /* Prosedur yang mengimplementasikan penipisan pola Masukan : f : citra biner N1, M1 : koordinat awal (sudut kiri atas) N2, M2 : koordinat akhir (sudut kanan bawah) Keluaran: citra bienrf */ { int k, l, i, j, count=0, y[9], trans=0, m, OK=1
Bab 11_Citra Biner
181
do { OK=1; for(k=N1+1;k
2)&&(count<8)) { /* hitung jumlah peralihan 0->1 */ y[0]=f[k-1][l-11]; y[1]=f[k-1][l];y[2]=f[k-1][l+1]; y[3]=f[k][l+1]; y[4]=f[k+1]l+1];y[5]=f[k+1][l]; y[6]=f[k+1][l-1]; y[7]=f[k][l-1];y[8]=f[k-1][l-1]; trans=0; for(m=0;m<=7;m++) if (y[m]==0 && y[m+1]==1) trans++; /* jika jumlah peralihan sama dengan 1, hapus pixel yang sedang diacu (current) */ if (trans==1) {f[k][l]=0; OK=0;} } } } while (OK=0); }
Algoritma 11.1 Penipisan pola.
182
Pengolahan Citra Digital
Bab 13
Steganografi dan Watermarking pada Citra Digital
teganografi (steganography) adalah teknik menyembunyikan data rahasia di dalam wadah (media) digital sehingga keberadaan data rahasia tersebut tidak diketahui oleh orang. Steganografi membutuhkan dua properti: wadah penampung dan data rahasia yang akan disembunyikan. Steganografi digital menggunakan media digital sebagai wadah penampung, misalnya citra, suara (audio), teks, dan video. Data rahasia yang disembunyikan juga dapat berupa citra, suara, teks, atau video.
S
Penggunaan steganografi antara lain bertujuan untuk menyamarkan eksistensi (keberadaan) data rahasia sehingga sulit dideteksi, dan melindungi hak cipta suatu produk. Steganografi dapat dipandang sebagai kelanjutan kriptografi. Jika pada kriptografi, data yang telah disandikan (ciphertext) tetap tersedia, maka dengan steganografi cipherteks dapat disembunyikan sehingga pihak ketiga tidak mengetahui keberadaannya. Data rahasia yang disembunyikan dapat diekstraksi kembali persis sama seperti keadaan aslinya. Bab ini akan memaparkan steganografi dan watermarking pada citra digital. Watermarking adalah aplikasi dari steganografi, di mana citra digital diberi suatu penanda yang menunjukkan label kepemilikan citra tersebut. Sebagian besar dari materi bab ini dikutip dari [POL98].
Bab 13_Steganografi dan Watermarking pada Citra Digital
197
13.1 Sejarah Steganografi Steganografi sudah dikenal oleh bangsa Yunani. Penguasa Yunani dalam mengirimkan pesan rahasia menggunakan kepala budak atau prajurit sebagai media. Dalam hal ini, rambut budak dibotaki, lalu pesan rahasia ditulis pada kulit kepala budak. Ketika rambut budak tumbuh, budak tersebut diutus untuk membawa pesan rahasia di kepalanya. Bangsa Romawi mengenal steganografi dengan menggunakan tinta tak-tampak (invisible ink) untuk menuliskan pesan. Tinta tersebut dibuat dari campuran sari buah, susu, dan cuka. Jika tinta digunakan untuk menulis maka tulisannya tidak tampak. Tulisan di atas kertas dapat dibaca dengan cara memanaskan kertas tersebut. Sebagai contoh ilustrasi, Gambar 13.1.a adalah citra lada (peppers.bmp) yang akan digunakan untuk menyembunyikan sebuah dokumen teks (Gambar 13.1.b) yang berukuran 20 KB). Perhatikanlah citra lada sebelum penyembuan data (13.1.a) dan citra setelah disisipi data teks (13.1.c). Citra lada tetap kelihatan mulus, seolah-olah tidak pernah disisipi data sebelumnya. Sebenarnya tidaklah demikian, gambar lada tersebut mengalami sedikit perubahan akibat steganografi, namun mata manusia mempunyai sifat kurang peka terhadap perubahan kecil ini, sehingga manusia sukar membedakan mana gambar yang asli dan mana gambar yang sudah disisipi data.
198
Pengolahan Citra Digital
LETTER OF RECOMMENDATION To Whom It May Concern, Herewith I highly recommend Mr. R. Hendro Wicaksono continue his postgraduate study at your university. My recommendation is based on my experience as his lecturer in several courses for the past four years. He has shown me his excellent attitude and personality. He is a hard working person and he has a lot of creative ideas. He is also a very intelligent student and he cooperates very well with his peers whenever they had to work together. During his study, he showed diligence and eagerness to achieve his goal. He sets very high standard for himself and organizes himself very well to achieve the standard. I am confident that if he can maintain his goal work, he should be able to complete the postgraduate program well within the stipulated time.
(a) Citra peppers asli
I am sure that his abilities and his personal qualities along with his academic capabilities will help his to obtain his Master’s degree at your university, which will be very useful for our country. Bandung, November 15, 2002 Yours Sincerely, Ir. Rinaldi Munir, M.Sc. Senior Lecturer Informatics Engineering Department, Institute Technology of Bandung (ITB) Jl. Ganesha No. 10, Bandung 40132 Email : [email protected] Phone +62-22-2508135 Indonesia
(b) Dokumen hendro.doc yang akan disembunyikan ke daalm citra lada
(c) Citra peppers setelah “diisi” dengan data teks hendro.doc Gambar 13.1 Contoh penyembunyian data di dalam citra digital
Bab 13_Steganografi dan Watermarking pada Citra Digital
199
13.2 Kriteria Steganografi yang Bagus Seperti sudah disebutkan pada bagian awal bab, data yang disembunyikan tidak hanya berupa teks, tetapi juga berupa citra, audio, atau video. Selain citra digita, media penampung data rahasia juga bisa berupa teks, audio, atau video. Namun di sini kita membatasi media penampung hanya citra digital saja. Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas citra tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah: 1. Fidelity. Mutu citra penampung tidak jauh berubah. Setelah penambahan data rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak mengetahui kalau di dalam citra tersebut terdapat data rahasia. 2. Robustness. Data yang disembunyikan harus tahan (robust) terhadap berbagai operasi manipulasi yang dilakukan pada citra penampung, seperti pengubahan kontras, penajaman, pemampatan, rotasi, perbesaran gambar, pemotongan (cropping), enkripsi, dan sebagainya. Bila pada citra penampung dilakukan operasi-operasi pengolahan citra tersebut, maka data yang disembunyikan seharusnya tidak rusak (tetap valid jika diekstraksi kembali) 3. Recovery. Data yang disembunyikan harus dapat diungkapkan kembali (reveal). Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu data rahasia di dalam citra penampung harus dapat diambil kembali untuk digunakan lebih lanjut.
13.3 Teknik Penyembunyian Data Penyembunyian data dilakukan dengan mengganti bit-bit data di dalam segmen citra dengan bit-bit data rahasia. Hingga saat ini sudah banyak dikemukakan oleh para ilmuwan metode-metode penyembunyian data. Metode yang paling sederhana adalah metode modifikasi LSB (Least Significant Bit Modification). Pada susunan bit di dalam sebuah byte (1 byte = 8 bit), ada bit yang paling berarti (most significant bit atau MSB) dan bit yang paling kurang berarti (least significant bit atau LSB). Sebagai ilustrasi, di bawah ini dijelaskan metode modifikasi LSB untuk menyisipkan watermark pada citra (gambar) digital. Misalnya pada byte 11010010, bit 1 yang pertama (digarisbawahi) adalah bit MSB dan bit 0 yang terakhir (digarisbawahi) adalah bit LSB. Bit yang cocok untuk diganti adalah bit LSB, sebab penggantian hanya mengubah nilai byte tersebut satu lebih tinggi atau satu lebih rendah dari nilai sebelumnya. Misalkan byte tersebut di dalam gambar menyatakan warna tertentu, maka perubahan satu bit LSB tidak mengubah warna tersebut secara berarti. Lagi pula, dan ini keuntungan yang dimanfaatkan, mata manusia tidak dapat membedakan perubahan yang kecil. 200
Pengolahan Citra Digital
Misalkan segmen pixel-pixel citra sebelum penambahan bit-bit watermark adalah 00110011
10100010
11100010
01101111
Misalkan data rahasia (yang telah dikonversi ke sistem biner) adalah 0111. Setiap bit dari watermark menggantikan posisi LSB dari segmen data citra menjadi: 00110010
10100011
11100011
01101111
Untuk memperkuat penyembunyian data, bit-bit data tidak digunakan untuk mengganti byte-byte yang berurutan, namun dipilih susunan byte secara acak. Misalnya jika terdapat 50 byte dan 6 bit data yang akan disembunyikan, maka byte yang diganti bit LSB-nya dipilih secara acak, misalkan byte nomor 36, 5, 21, 10, 18, 49. Bilangan acak dibangkitkan dengan pseudo-random-number-generator (PRNG). PRNG menggunakan kunci rahasia untuk membangkitkan posisi pixel yang akan digunakan untuk menyembunyikan bit-bit. PRNG dibagun dalams ejumlah cara, salah satunya dengan menggunakan algoritma kriptografi DES (Data Encryption Standard), algoritma hash MD5, dan mode kriptografi CFB (Chiper-Feedback Mode). Tujuan dari enkripsi adalah menghasilkan sekumpulan bilangan acak yang sama untuk setiap kunci enkripsi yang sama. Bilangan acak dihasilkan dengan cara memilih bit-bit dari sebuah blok data hasil enkripsi. Teknik penyembunyian data untuk citra 8-bit berbeda dengan citra 24-bit. Seperti sudah dijelaskan di dalam Bab 3, berkas citra bitmap terdiri atas bagian header, palet RGB, dan data bitmap. Pada citra 8-bit, setiap elemen data bitmap menyatakan indeks dari peta warnanya di palet RGB. 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.
Teknik Penggantian Bit pada Citra bukan 24-bit. Sebelum melakukan penggantian bit LSB, semua data citra yang bukan tipe 24-bit diubah menjadi format 24-bit. Jadi, setiap data pixel sudah mengandung komponen RGB. Setiap byte di dalam data bitmap diganti satu bit LSB-nya dengan bit data yang akan disembunyikan. Jika byte tersebut merupakan komponen hijau (G), maka penggantian 1 bit LSB-nya hanya mengubah sedikit kadar warna hijau, dan perubahan ini tidak terdeteksi oleh mata manusia.
Bab 13_Steganografi dan Watermarking pada Citra Digital
201
Teknik Penggantian Bit pada Citra 24-bit. Karena data bitmap pada citra 24-bit sudah tersusun atas komponen RGB, maka tidak perlu dilakukan perubahan format. Setiap byte di dalam data bitmap diganti satu bit LSB-nya dengan bit data yang akan disembunyikan.
Perubahan Jumlah Warna Pada citra 8-bit, jumlah warna terbatas, hanya 256 warna. Pengubahan format citra 8-bit menjadi 24-bit akan menghasilkan warna baru (yang semula tidak terdapat di dalam palet RGB). Setiap elemen RGB pada tabel palet berpotensi menjadi 8 warna berbeda setekah proses penggantian bit LSB. Hal ini karena setiap data bitmap terdiri atas 3 byte, maka tersedia 3 bit LSB untuk penggantian. Penggantian 3 bit LSB menghasilkan 23 = 8 kombinasi warna. Dengan demikian, steganografi pada citra 256 warna berpotensi menghasilkan 256 × 8 = 2048 warna. Untuk menghindari kelebihan warna dari 256, maka sebelum proses penyembunyian data, warna citra 8-bit diturunkan terlebih dahulu menjadi 32 warna (jika jumlah warnanya kurang dari 32, tidak perlu dilakukan penurunan warna). Dengan demikian, jika setiap warna menghasilkan 8 warna baru, jumlah warna seluruhnya maksimum 32 × 8 = 256 warna. Penurunan jumlah warna dilakukan dengan cara kuantisasi warna (color quantization). Penurunan jumlah warna harus tetap menghasilkan citra yang tampak persis seperti citra semula. Algoritma kuantisasi warna ada beberapa buah, antara lain algoritma diversity . Prinsip algoritma diversity adalah memaksimumkan perbedaan warna. Algoritma Diversity: 1. Buat histogram citra. Warna yang frekuensi kemunculannya 0 dibuang karena tidak akan digunakan. 2. Pilih warna dengan frekuensi kemunculan tertinggi sebagai warna patokan. Masukkan warna ini ke dalam senarai warna terpilih. 3. Cari warna yang mempunyai perbedaan terjauh dengan warna patokan. Masukkan warna tersebut ke dalam senarai warna terpilih. Perbedaan dua buah warna dihitung dengan rumus jarak Euclidean: d = { (r1 – r2 )2 + (g 1 – g 2 )2 + (b 1 – b2 )2 }1/2 yang dalam hal ini, r1 , g 1 , dan b 1 adalah komponen RGB dari warna pertama, dan r2 , g 2 , dan b 2 adalah komponen RGB dari warna kedua. 4. Untuk setiap warna yang tersisa di dalam list, hitung jaraknya dari masingmasing warna di dalam senarai warna terpilih. Ambil warna yang paling jauh berbeda dengan warna yang sudah dipilih. Lakukan langkah 4 ini berulang kali sampai k warna sudah terpilih. 202
Pengolahan Citra Digital
13.4 Ukuran Data Yang Disembunyikan Ukuran data yang akan disembunyikan bergantung pada ukuran citra penampung. Pada citra 8-bit yang berukuran 256 × 256 pixel terdapat 65536 pixel, setiap pixel berukuran 1 byte . Setelah diu bah menajdi citra 24-bit, ukuran data bitmap menjadi 65536 × 3 = 196608 byte. Karena setiap byte hanya bisa menyembunyikan satu bit di LSB-nya, maka ukuran data yang akan disembunyikan di dalam citra maksimum 196608/8 = 24576 byte. Ukuran data ini harus dikurangi dengan panjang nama berkas, karena penyembunyian data rahasia tidak hanya menyembunyikan isi data tersebut, tetapi juga nama berkasnya. Semakin besar data disembunyikan di dalam citra, semakin besar pula kemungkinan data tersebut rusak akibat manipulasi pada citra penampung.
13.5 Teknik Pengungkapan Data Data yang disembunyikan di dalam citra dapat dibaca kembali dengan cara pengungkapan (reveal atau extraction). Posisi byte yang menyimpan bit data dapat diketahui dari bilangan acak yang dibangkitkan oleh PRNG. Karena algoritma kriptografi yang digunakan menggunakan kunci pada proses enkripsi, maka kunci yang sama digunakan untuk membangkitkan bilangan acak. Bilangan acak yang dihasilkan sama dengan bilangan acak yang dipakai pada waktu penyembunyian data. Dengan demikian, bit-bit data rahasia yang bertaburan di dalam citra dapat dikumpulkan kembali. Di bawah ini ditampilkan contoh steganografi yang diambil dari program Tugas Akhir Lazarus Poli [POL98] yang diberi nama DATAhide. Untuk setiap contoh, digunakan kunci yang sama: informatika. Tampilan awal program diperlihatkan pada Gambar 13.2. Upa-menu yang ada pada menu Operasi adalah Penyembunyian data dan Pengungkapan data.
Bab 13_Steganografi dan Watermarking pada Citra Digital
203
Gambar 13.2 Tampilan awal program DATAhide [POL98].
Contoh-contoh Hasil Steganografi 1. Citra penampung: citra 24 bit (berwarna) Data yang disembunyikan: citra berwarna (a) Penampung: citra peppers.bmp (512 × 512 pixel, 769 KB)
204
(b) Data yang disembunyikan: citra handshak.bmp (44 KB)
Pengolahan Citra Digital
(c) Hasil penyembunyian data (peppers.bmp + handshak.bmp):
(d) Berkas handshak-stega.bmp (44 KB) hasil pengungkapan:
Gambar 13.4 Penyembunyian citra handshaking ke dalam citra berwarna 24 bit (peppers.bmp)
2. Citra penampung: citra 24 bit (berwarna) Data yang disembunyikan: teks (a) Penampung: citra peppers.bmp (512 × 512 pixel, 769 KB)
(b) Data yang disembunyikan: hendro.doc (20 KB) LETTER OF RECOMMENDATION To Whom It May Concern, Herewith I highly recommend Mr. R. Hendro Wicaksono continue his postgraduate study at your university. My recommendation is based on my experience as his lecturer in several courses for the past four years. He has shown me his excellent attitude and personality. He is a hard working person and he has a lot of creative ideas. He is also a very intelligent student and he cooperates very well with his peers whenever they had to work together. During his study, he showed diligence and eagerness to achieve his goal. He sets very high standard for himself and organizes himself very well to achieve the standard. I am confident that if he can maintain his goal work, he should be able to complete the postgraduate program well within the stipulated time. I am sure that his abilities and his personal qualities along with his academic capabilities will help his to obtain his Master’s degree at your university, which will be very useful for our country.
Bab 13_Steganografi dan Watermarking pada Citra Digital
205
Bandung, November 15, 2002 Yours Sincerely, Ir. Rinaldi Munir, M.Sc. Senior Lecturer Informatics Engineering D epartment, Institute Technology of Bandung (ITB) Jl. Ganesha No. 10, Bandung 40132 Email : [email protected] Phone +62-22-2508135 Indonesia
(c) Hasil penyembunyian data (peppers.bmp + hendro.doc):
(d) Hasil pengungkapan data (hendro-stega.doc, 20 KB): LETTER OF RECOMMENDATION To Whom It May Concern, Herewith I highly recommend Mr. R. Hendro Wicaksono continue his postgraduate study at your university. My recommendation is based on my experience as his lecturer in several courses for the past four years. He has shown me his excellent attitude and personality. He is a hard working person and he has a lot of creative ideas. He is also a very intelligent student and he cooperates very well with his peers whenever they had to work together. During his study, he showed diligence and eagerness to achieve his goal. He sets very high standard for himself and organizes himself very well to achieve the standard. I am confident that if he can maintain his goal work, he should be able to complete the postgraduate program well within the stipulated time. I am sure that his abilities and his personal qualities along with his academic capabilities will help his to obtain his Master’s degree at your university, which will be very useful for our country. Bandung, November 15, 2002 Yours Sincerely, Ir. Rinaldi Munir, M.Sc. Senior Lecturer Informatics Engineering Department, Institute Technology of Bandung (ITB) Jl. Ganesha No. 10, Bandung 40132 Email : [email protected] Phone +62-22-2508135 Indonesia
Gambar 13.5 Penyembunyian dokumen teks ke dalam citra berwarna 24 bit (peppers.bmp)
206
Pengolahan Citra Digital
2. Citra penampung: citra 8 bit (greyscale) Data yang disembunyikan: audio (a) Penampung: citra barbara.bmp (512 × 512 pixel, 258 KB)
(b) Data yang disembunyikan: chord.wav (95 KB), yaitu berkas musik dari Windows.
(dimainkan dengan media player)
(c) Hasil penyembunyian data (barbara.bmp + chord.wav)
(d) Berkas chord-stega.wav (95 KB) hasil pengungkapan:
(dimainkan dengan media player)
Pada kasus ini, terjadi penurunan kualitas gambar karena pengaruh penurunan jumlah warna (color quantization)!
Gambar 13.6 Penyembunyian data audio ke dalam citra greyscale 8-bit
Bab 13_Steganografi dan Watermarking pada Citra Digital
207
13.6 Watermarking Salah satu karya intelektual yang dilindungi adalah barang dalam bentuk digital, seperti software dan produk multimedia seperti teks, musik (dalam format MP3 atau WAV), gambar/citra (image), dan video digital (VCD). Selama ini penggandaan atas 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. Sebenarnya masalah penyalahgunaan hak cipta pada bidang multimedia tidak hanya mengenai penggandaan dan pendistribusiannya saja, tetapi juga mengenai label kepemilikan. Kebanyakan produk digital tersebut tidak mencantumkan siapa pemegang hak ciptanya. Kalaupun bukti kepemilikan itu ada, biasanya informasi kepemilikan disertakan pada sampul pembungkus yang menerangkan bahwa produk multimedia tersebut adalah milik pembuatnya. Masalahnya, distribusi produk multimedia saat ini tidak hanya secara offline, tetapi juga dapat dilakukan lewat internet. Jika anda masuk ke situs-situs web di internet, anda dapat menemukan informasi berupa teks, gambar, suara, dan video. Semua produk digital tersebut dapat anda download dengan mudah. Anda pun juga dapat mempertukarkan data digital dengan layanan internet seperti e-mail. Masalahnya, hampir semua data digital yang bertebaran di dunia internet tidak mencantumkan informasi pemiliknya. Seseorang yang telah mendapatkan produk digital dapat mengklaim bahwa produk tersebut adalah hasil karyanya. Berhubung tidak ada bukti kepemilikan sebelumnya, maka klaim tersebut mungkin saja dipercaya. Salah satu cara untuk melindungi hak cipta multimedia adalah dengan menyisipkan informasi ke dalam data multimedia tersebut dengan teknik watermarking. 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 label hak cipta dari pemiliknya. Pemberian signature dengan teknik watermarking ini dilakukan sedemikian sehingga informasi yang disisipkan tidak merusak data digital yang dilindungi. Sehingga, seseorang yang membuka produk multimedia yang sudah disisipi watermark tidak menyadari kalau di dalam data multimedia tersebut terkandung label kepemilikan pembuatnya. Jika ada orang lain yang mengklaim bahwa produk multimedia yang didapatkannya adalah miliknya, maka pemegang hak cipta atas karya multimedia tersebut dapat membantahnya dengan mengekstraksi watermark dari dalam data multimedia yang disengketakan. Watermark yang diekstraksi dibandingkan dengan watermark pemegang hak cipta. Jika sama, berarti memang dialah pemegang hak cipta produk multimedia tersebut.
208
Pengolahan Citra Digital
Pada dasarnya, teknik watermarking adalah proses menambahkan kode identifikasi secara permanen ke dalam data digital. Kode identifikasi tersebut dapat berupa teks, gambar, suara, atau video. Selain tidak merusak data digital produk yang akan dilindungi, kode yang disisipkan seharusnya memiliki ketahanan (robustness) dari berbagai pemrosesan lanjutan seperti pengubahan, transformasi geometri, kompresi, enkripsi, dan sebagainya. Sifat robustness berarti data watermark tidak terhapus akibat pemrosesan lanjutan tersebut.
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 biasanya digunakan oleh seniman atau sastrawan untuk menulis karya mereka. Kertas yang sudah dibubuhi tanda-air tersebut sekalius dijadikan identifikasi bahwa karya seni di atasnya adalah milik mereka [HEN03]. Ide watermarking pada data digital (sehingga disebut digital watermarking) dikembangkan di Jepang tahun 1990 dan di Swiss tahun 1993. Digital watermarking semakin berkembang seiring dengan semakin meluasnya penggunaan internet, objek digital seperti video, citra, dan suara yang dapat dengan mudah digandakan dan disebarluaskan.
Perbedaan Steganografi dengan Watermarking Watermarking merupakan aplikasi dari steganografi, namun ada perbedaan antara keduanya. Jika pada steganografi informasi rahasia disembunyikan di dalam media digita l dimana media penampung tidak berarti apa-apa, maka pada watermarking justru media digital tersebut yang akan dilindungi kepemilikannya dengan pemberian label hak cipta (watermark). Meskipun steganografi dan watermarking tidak sama, namun secara prinsip proses penyisipan informasi ke dalam data digital tidak jauh berbeda. Beberapa metode yang sudah ditemukan untuk penyisipan watermark adalah metdoe LSB (seperti pada penjelasan steganografi di atas), metode adaptif, metode spread spectrum, dan sebagainya.
Bab 13_Steganografi dan Watermarking pada Citra Digital
209
Data watermark yang lazim disisipkan ke dalam data digital adalah teks, citra, atau suara. Watermark berupa teks mengandung kelemahan karena kesalahan satu bit akan menghasilkan hasil teks yang berbeda pada waktu verifikasi (ektraksi). Watermark berupa suara atau citra lebih disukai karena kesalahan pada beberapa bit watermark tidak menghasilkan perubahan yang berarti pada waktu verifikasi. Hasil ekstraksi watermark yang mengandung kesalahan tersebut masih dapat dipersepsi secara visual (atau secara pendengaran jika watermark -nya berupa suara). Citra yang sering digunakan sebagai watermark biasanya logo atau lambang. Penyisipan Watermark Di sini kita hanya meninjau watermarking pada citra digital. Proses penyisipan watermark ke dalam citra disebut encoding dan ditunjukkan Gambar 13.7. Encoding dapat disertai dengan pemasukan kunci atau tidak memerlukan kunci. Kunci diperlukan agar watermark hanya dapat diekstraksi oleh pihak yang sah. Kunci juga dimaksudkan untuk mencegah watermark dihapus oleh pihak yang tidak berhak. kunci
Citra
Encoding
Citra berwatermark
Watermark Gambar 13.7 Proses penyisipan watermark pada citra digital
Gambar 13.8 memperlihatkan sebuah gambar (image) paprika yang disisipi dengan watermark berupa gambar hitam putih yang menyatakan identifikasi pemiliknya (Shanty) [HEN03]. Perhatikanlah bahwa setelah disisipi watermark , gambar paprika tetap kelihatan mulus, seolah-olah tidak pernah disisipi watermark sebelumnya. Sebenarnya tidaklah demikian, gambar paprika tersebut mengalami sedikit perubahan akibat watermarking, namun mata manusia mempunyai sifat kurang peka terhadap perubahan kecil ini, sehingga manusia sukar membedakan mana gambar yang asli dan mana gambar yang sudah disisipi watermark.
210
Pengolahan Citra Digital
+
=
Watermark
Citra asli
Citra ter-watermark
Gambar 13.8 Memberi watermark pada citra peppers
Verifikasi Watermark Verifikasi watermark dilakukan untuk membuktikan status kepemilikan citra digital yang disengketakan. Verifikasi watermark terdiri atas dua sub-proses, yaitu ekstraksi watermark dan pembandingan. Sub-proses ekstraksi watermark disebut juga decoding, bertujuan mengungkap watermark dari dalam citra. Decoding dapat mengikutsertakan citra asal (yang belum diberi watermark) atau tidak sama sekali, karena beberapa skema watermarking memang menggunakan citra asal dalam proses decoding untuk meningkatkan unjuk kerja yang lebih baik [HEN03]. Sub-proses pembandingan bertujuan membandingkan watermark yang diungkap dengan watermark asli dan memberi keputusan tentang watermark tersebut. Proses verifikasi watermark ditunjukkan pada Gambar 13.9. kunci
Citra yang diuji
Citra asal
Decoding
watermark yang terekstraksi
Pembandingan
keputusan
watermark asli Gambar 13.9 Proses verifikasi watermark pada citra digital
Bab 13_Steganografi dan Watermarking pada Citra Digital
211
Selain untuk tujuan pelabelan hak cipta (copyright labelling), watermarking juga dimanfaatkan untuk tujuan-tujuan lain sebagai berikut [SUP00]: 1. Tamper-proofing. Watermarking digunakan sebagai alat untuk mengidentifikasi atau menunjukkan bahwa data digital telah mengalami perubahan dari aslinya. 2. Feature location. Watermarking digunakan untuk mengidentifikasi isi dari data digital pada lokai- lokasi tertentu. 3. Annotation/caption. Watermarking digunakan hanya sebagai keterangan tentang data digital itu sendiri.
212
Pengolahan Citra Digital