Bab 1_Pengantar Pengolahan Citra 1Bab 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 ( handphoneatau 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 Mess age Service). 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, ka ta “gambar” dan “c itra” digunakan seca ra 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. D
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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).
Citra (image)1 –istilah lain untuk gambar– sebagai salah satu komponenmultimedia 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 yangberkaitan dengan konseptual dan teknis, sementara kata “gambar” digunakan jika mengacu padaobjek yang dibicarakan dalam kehidupan sehari-hari.
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) dariintensitas 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.
(a) Lena (b) Kapal
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 sebagaigambar yang bergerak. Setiap citra di dalam rangkaian itu disebut frame.
Gambar-gambar yang tampak pada film layar lebar atau televisi pada hakikatnya
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 citradan keluarannya juga citra, namun citra keluaran mempunyai kualitas lebih baik
daripada citra masukan. Termasuk ke dalam bidang ini juga adalah pemampatan
citra (image compression).
Pengolahan
Citracitra 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.
Gambar 1.5. Citra karakter ‘A’ yang digunakan sebagai masukan untuk pengenalan huruf.
1.3 Computer Vision dan Hubungannya denganPengolahan Citra
Terminologi lain yang berkaitan erat dengan pengolahan citra adalah computervision 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
Jenis operasi ini bertujuan untuk memperbaiki kualitas citra dengan caramemanipulasi parameter-parameter citra. Dengan operasi ini, ciri-ciri khususyang 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 penajaman. Operasi ini menerimamasukan 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 masukanadalah 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 citramasukan dapat diperbaiki sehingga tampak lebih baik.
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 bentukyang lebih kompak sehingga memerlukan memori yang lebih sedikit. Hal penting yang harus diperhatikan dalam pemampatan adalah citra yang telahdimampatkan harus tetap mempunyai kualitas gambar yang bagus. Contohmetode 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 semulasehingga menjadi 49 KB saja.
(a) (b)
Gambar 1.8. (a) Citra boat.bmp (258 KB) sebelum dimampatkan, (b) citra boat.jpg (49 KB)
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 webuniversitas 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
pengolahan citra. Inilah beberapa diantaranya (dengan keterangan nama citra dan
Gambar 2.1. Cara menentukan koodinat titik di dalam citra.
Karena cahaya merupakan bentuk energi, maka intensitas cahaya bernilai antara 0sampai 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, dan2. r ( x, y) = derajat kemampuan obyek memantulkan cahaya (reflection),
nilainya antara 0 dan 1.
Gambar 2.2 memperlihatkan proses pembentukan intensitas cahaya. Sumbercahaya menyinari permukaan objek. Jumlah pancaran (iluminasi) cahaya yangditerima objek pada koodinat ( x, y) adalah i( x, y). Objek memantulkan cahayayang 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 sensorvisual pada sistem optik.
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 fungsiintensitas 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,
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
l min < f < l max
Selang (l min, l max) disebut skala keabuan.
Biasanya selang (l min, 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 menyatakanhitam, 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 CitraAgar 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
Citra digital yang berukuran N × M lazim dinyatakan dengan matriks yang
berukuran N baris dan M kolom sebagai berikut:
f ( x, y) ≈
−−−− )1,1(...)1,1()0,1(
),1(...)1,1()0,1(
),0(...)1,0()0,0(
M N f N f N f
M f f f
M f f f
MMMM
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 dari256 buah baris (di-indeks dari 0 sampai 255) dan 256 buah kolom (di-indeks dari
0 sampai 255) seperti contoh berikut:
156......210219221
120......189187220
197......2011670
231......1451340
MMMMMM
MMMMMM
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.
Terdapat perbedaan antara koordinat gambar (yang diterok) dengan koordinat
matriks (hasil digitalisasi). Titik asal (0, 0) pada gambar dan elemen (0, 0) padamatriks tidak sama. Koordinat x dan y pada gambar dimulai dari sudut kiri bawah,
sedangkan penomoran pixel pada matriks dimulai dari sudut kiri atas (Gambar2.4).
(0,0)
x
y
D x
D y
D x
D y
i
j
N -1
M -1
0
0
M pixel
N pixel
Gambar 2.4. Hubungan antara elemen gambar dan elemen matriks [GAL90]
N = jumlah maksimum pixel dalam satu baris M = jumlah maksimum pixel dalam satu kolom D x = lebar gambar (dalam inchi) D y = tinggi gambar (dalam inchi)
Catatan: beberapa referensi menggunakan (1,1) –ketimbang (0,0) – sebagaikoordinat elemen pertama di dalam matriks.
Elemen (i, j) di dalam matriks menyatakan rata-rata intensitas cahaya pada areacitra yang direpresentasikan oleh pixel . Sebagai contoh, tinjau citra biner yanghanya 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 dantingginya 2 inci akan diisi dengan sebuah nilai bergantung pada rata-rataintensitas 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 denganlokasi (4, 3) pada matriks 5 × 4 yang mengandung nilai 1 (yang berarti iluminasimaksimum).
x
y
0
0
10 inchi
10 inchi
putih
hitam
0
1
? ?
?
?
? ? ?
?
?
? ? ?
???
???
(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/kolomn = bilangan bulat positif
Gambar 2.6. Ukuran penerokan yang berbeda-beda menghasilkan kualitas citra yang berbeda pula Kuantisasi
Pembagian gambar menjadi ukuran tertentu menentukan resolusi (yaitu derajatrincian 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, masing-
masing 256 × 256, 128 × 128, 64 × 64, dan 32 × 32 pixel , seluruh citramempunyai 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 bidangtampilan. Hal ini menghasilkan efek blok-blok yang sering diamati pada gambar beresolusi rendah pada umumnya.
Citra digital mengandung sejumlah elemen-elemen dasar. Elemen-elemen dasartersebut 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 besarkomposisi 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 pixel-
pixel 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 keungu-
unguan (distorsi terhadap ruang), atau jika mata melihat warna hijau lalulangsung dengan cepat melihat warna abu-abu, maka mata menangkap kesan
warna abu-abu tersebut sebagai warna ungu (distorsi terhadap waktu) [MEN89].
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 suatucitra 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 DigitalSecara 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].
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 29
Bab 3
Struktur Data untuk Citra Digital
dan Format Citra Bitmap
itra digital diolah dengan menggunakan komputer, oleh karena itu kita
perlu mendefinisikan struktur data untuk merepresentasikan citra di dalam
memori komputer. Matriks adalah struktur data yang tepat untuk
merepresentasikan citra digital. Elemen-elemen matriks dapat diakses secara
langsung melalui indeksnya (baris dan kolom).
Di dalam bab ini kita akan mendefinisikan struktur data matriks untuk citradigital. Notasi algoritmik yang kita gunakan untuk menjelaskan struktur data ini
(beserta beberapa primitif operasi citra) adalah notasi Bahasa C (lebih tepatnya
notasi ANSI C). Pemrograman citra digital lebih cocok menggunakan Bahasa C
karena Bahasa C mempunyai penanganan tipe pointer yang lebih dinamis
daripada Bahasa Pascal. Pada pembahasan nanti kita akan melihat bahwa struktur
data matriks direpresentasikan dengan menggunakan tipe pointer mengingat
ukuran matriks tidak diketahui sebelum pemrosesan citra digital.
3.1 MatriksSebagaimana telah dijelaskan pada Bab 2, citra digital yang berukuran N × M
(tinggi = N , lebar = M ) lazim dinyatakan dengan matriks N baris dan M kolom
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 33
kita tidak perlu menulis tiga prosedur yang berbeda untuk mengalokasikan
matriks yang bertipe berbeda pula.
void **alokasi(int N, int M, int UkuranElemen)/* Mengalokasikan memori untuk matriks yang berukuran N x M. Setiap elemenmatriks membutuhkan ruang memori sebesar UkuranElemen byte */{
int i;void **larik = (void**)xalloc(N * sizeof(void *)); /* buat array N
Citra disimpan di dalam arsip biner untuk sewaktu-waktu dibuka dan dibaca
kembali. Arsip tersebut ada yang mempunyai header dan ada yang tanpa header .
Header adalah informasi yang terletak pada bagian awal arsip. Header berisi
informasi bagaimana citra disimpan. Kita perlu mengetahui header agar kita
mengetahui cara membaca data citra. Saat ini terdapat bermacam-macam format
penyimpanan citra di dalam arsip (misalnya BMP, GIF, TIFF, PCX, JPG, dan
lain-lain). Dua format yang populer saat ini dan seolah-olah menjadi standard
adalah GIF dan JPG. Pembahasan format-format citra di dalam arsip diluar
cakupan buku ini, namun khusus format bitmap (BMP) akan diberikan di dalam
Bab 3 ini sebagai satu studi kasus.
Algoritma 3.6 berisi prosedur untuk membaca citra hitam-putih ( greyscale) dari
dalam arsip yang berisi data citra mentah (raw image). Disebut data citra mentahkarena arsip tersebut hanya berisi ukuran citra dan nilai keabuan setiap pixel .
Tidak ada informasi lain di dalam arsip selain ukuran citra. Ukuran citra
panjangnya 32 bit, masing-masing 16 bit (atau 2 byte) untuk tinggi ( N ) dan 16 bit
untuk lebar ( M ). Byte-byte berikutnya berisi nilai keabuan setiap pixel di dalam
citra. Setiap pixel berukuran 1 byte. Gambar 3.3 memperlihatkan susunan byte di
dalam arsip yang berisi data citra mentah.
N M
2 byte 2 byte
...
M byte
... ...
M byte
...
M byte
N kali
...
...
Gambar 3.3. Susunan data di dalam arsip data citra mentah
Mula-mula kita membaca data tinggi ( N ) dan lebar ( M ) citra. Kita bisa
menggunakan peubah N dan M yang bertipe unsigned short int karena tipe ini panjangnya 2 byte. Selanjutnya, data pixel-pixel di dalam citra dibaca “baris per
baris”. Setiap baris panjangnya M byte. Setiap byte ke- j dari baris i menyatakan
nilai pixel pada koordinat (i, j). Nilai ini disimpan pada elemen matriks f [i][ j].
exit(0);}fwrite(N, sizeof(unsigned short int), 1, fp); /* tulis tinggi citra */fwrite(M, sizeof(unsigned short int), 1, fp); /* tulis lebar citra */
/* baca data citra baris demi baris */ for(i=0; i<N; i++){
/* tulis data citra baris ke-i */ fwrite(f[i], sizeof(unsigned char), M, fp);
}close(fp);
}
Algor i tma 3.7. Prosedur menulis citra ke dalam arsip.
3.5 Format BerkasBi tmap
Citra disimpan di dalam berkas ( file) dengan format tertentu. Format citra yang
baku di lingkungan sistem operasi Microsoft Windows dan IBM OS/2 adalah
berkas bitmap (BMP). Saat ini format BMP memang “kalah” populer
dibandingkan format JPG atau GIF. Hal ini karena berkas BMP pada umumnya
tidak dimampatkan, sehingga ukuran berkasnya relatif lebih besar daripada
berkas JPG maupun GIF. Hal ini juga yang menyebabkan format BMP sudah
jarang digunakan.
Meskipun format BMP tidak mangkus dari segi ukuran berkas, namun format
BMP mempunyai kelebihan dari segi kualitas gambar. Citra dalam format BMP
lebih bagus daripada citra dalam format yang lainnya, karena citra dalam formatBMP umumnya tidak dimampatkan sehingga tidak ada informasi yang hilang
(pemampatan citra dibahas secara mendalam di dalam Bab 10). Terjemahan
bebas bitmap adalah pemetaan bit. Artinya, nilai intensitas pixel di dalam citra
dipetakan ke sejumlah bit tertentu. Peta bit yang umum adalah 8, artinya setiap
pixel panjangnya 8 bit. Delapan bit ini merepresentasikan nilai intensitas pixel .
Dengan demikian ada sebanyak 28 = 256 derajat keabuan, mulai dari 0 sampai
255.
Citra dalam format BMP ada tiga macam: citra biner, citra berwarna, dan citra
hitam-putih ( greyscale). Citra biner hanya mempunyai dua nilai keabuan, 0 dan 1.
Oleh karena itu, 1 bit sudah cukup untuk merepresentasikan nilai pixel . Citra berwarna adalah citra yang lebih umum. Warna yang terlihat pada citra bitmap
merupakan kombinasi dari tiga warna dasar, yaitu merah, hijau, dan biru. Setiap
pixel disusun oleh tiga komponen warna: R (red ), G ( green), dan B (blue).
Kombinasi dari ketiga warna RGB tersebut menghasilkan warna yang khas untuk
pixel yang bersangkutan. Pada citra 256 warna, setiap pixel panjangnya 8 bit,
tetapi komponen warna RGB-nya disimpan di dalam tabel RGB yang disebut
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 39
palet. Setiap komponen panjangnya 8 bit, jadi ada 256 nilai keabuan untuk warna
merah, 256 nilai keabuan untuk warna hijau, dan 256 nilai keabuan untuk warna
biru. Nilai setiap pixel tidak menyatakan derajat keabuannya secara langsung,
tetapi nilai pixel menyatakan indeks tabel RGB yang memuat nilai keabuan merah
( R), nilai keabuan hijau (G), dan nilai keabuan biru ( B) untuk pixel yang bersangkutan. Pada citra hitam-putih, nlai R = G = B untuk menyatakan bahwa
citra hitam-putih hanya mempunyai satu kanal warna. Citra hitam-putih
umumnya adalah cira 8-bit.
Citra yang lebih kaya warna adalah citra 24-bit. Setiap pixel panjangnya 24 bit,
karena setiap pixel langsung menyatakan komponen warna merah, komponen
warna hijau, dan komponen warna biru. Masing-masing komponen panjangnya 8
bit. Citra 24-bit disebut juga citra 16 juta warna, karena ia mampu menghasilkan
224 = 16.777.216 kombinasi warna.
Saat ini beredar tiga versi berkas bitmap, (i) berkas bitmap versi lama dari Microsoft Windows atau IBM OS/2, (ii) berkas bitmap versi baru dari Microsoft
Windows, dan (iii) berkas bitmap versi baru dari IBM OS/2. Yang membedakan
ketiga versi berkas tersebut adalah panjang header -nya. Header adalah data yang
terdapat pada bagian awal berkas citra. Data di dalam header berguna untuk
mengetahui bagaimana citra dalam format bitmap dikodekan dan disimpan. Data
di dalam header misalnya ukuran citra, kedalaman pixel , ofset ke data bitmap,
dan sebagainya.
Setiap berkas bitmap terdiri atas header berkas, header bitmap, informasi palet,
dan data bitmap (Gambar 3.4).
Header berkas Header bitmap Informasi palet Data bitmap
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 41
Tabel 3.4. Header bitmap versi baru dari IBM OS/2 (64 byte)
Byte ke- Panjang (byte ) Nama Keterangan
1 – 4 4 HdrSize Ukuran header dalam satuan byte
5 – 8 4 Width Lebar bitmap dalam satuan pixel 9 – 12 4 Height Tinggi bitmap dalam satuan pixel
13 – 14 2 Planes Jumlah plane (umumnya selalu satu)
15 – 16 2 BitCount Jumlah bit per pixel
17 – 20 4 Compression 0 = tak dimampatkan,
1 = dimampatkan
21 – 24 4 ImgSize Ukuran bitmap dalam byte
25 – 28 4 HorzRes Resolusi horizontal
29 – 32 4 VertRes Resolusi vertikal
33 – 36 4 ClrUsed Jumlah warna yang digunakan
37 – 40 4 ClrImportant Jumlah warna yang penting
41 – 42 2 Units Satuan pengukuran yang dipakai
43 – 44 2 Reserved Field Cadangan
45 – 46 2 Recording Algoritma perekaman
47 – 48 2 Rendering Algoritma halftoning
49 – 52 4 Size1 Nilai ukuran 1
53 – 56 4 Size2 Nilai ukuran 2
57 – 60 4 ClrEncoding Pengkodean warna
61 – 64 4 Identifier Kode yang digunakan aplikasi
Informasi palet warna terletak sesudah header bitmap. Informasi palet warna
dinyatakan dalam suatu tabel RGB. Setiap entry pada tabel terdiri atas tiga buah
field , yaitu R (red ), G ( green), dan B (blue).
Data bitmap diletakkan sesudah informasi palet. Penyimpanan data bitmap di
dalam berkas disusun terbalik dari bawah ke atas dalam bentuk matriks yang
berukuran Height × Width. Baris ke-0 pada matriks data bitmap menyatakan data
pixel di citra baris terbawah, sedangkan baris terakhir pada matriks menyatakan
data pixel di citra baris teratas.
Contoh format citra 8-bit kira-kira seperti Gambar 3.5. Format citra 4-bit (16
warna) serupa dengan format citra 8-bit. Pada citra 4-bit dan citra 8-bit, warna
suatu pixel diacu dari tabel informasi palet pada entry ke-k (k merupakan nilai
dengan rentang 0 – 15 untuk citra 16 warna dan 0 – 255 untuk citra 256 warna).Sebagai contoh pada Gambar 3.5, pixel pertama bernilai 2; warna pixel pertama
ini ditentukan oleh komponen RGB pada tabel palet warna entry ke-2, yaitu R =
14, G = 13, dan B = 16. Pixel kedua serupa dengan pixel pertama. Pixel ketiga
bernilai 1, warnanya ditentukan oleh komponen RBG pada tabel warna entry ke-
1, yaitu R = 20, G = 45, dan B = 24. Demikian seterusnya untuk pixel-pixel
lainnya. Khusus untuk citra hitam-putih (8 bit), komponen R, G, dan B suatu pixel
unsigned long UkuranBMP;unsigned short int XhotSpot;unsigned short int YhotSpot;unsigned int OffBits;
/* 2.Header data bitmapa. Ukuran header data BMP: 12 byte (versi lama), 40 byte (versi baru
Windows), dan 64 byte (versi OS 2)*/unsigned long UkuranHeader;
/* b.1. Header data BMP versi lama */unsigned short int LebarBMPvLama;unsigned short int TinggiBMPvLama;unsigned short int BidangBMPvLama;unsigned short int JumlahBitBMPvLama;
/* b.2. Header data BMP versi Windows */
unsigned int LebarBMPvBaru;unsigned int TinggiBMPvBaru;unsigned short int BidangBMPvBaru;unsigned short int JumlahBitBMPvBaru;unsigned int MampatBMPvBaru;unsigned int UkuranCitraBMPvBaru;unsigned int ResolusiHorizontalBMPvBaru;unsigned int ResolusiVertikalBMPvBaru;unsigned int WarnaTerpakaiBMPvBaru;unsigned int WarnaPentingBMPvBaru;
/* b.3. Header data BMP versi OS 2 */unsigned int LebarBMPvOS2;unsigned int TinggiBMPvOS2;unsigned short int BidangBMPvOS2;unsigned short int JumlahBitBMPvOS2;
unsigned int MampatBMPvOS2;unsigned int UkuranCitraBMPvOS2;unsigned int ResolusiHorizontalBMPvOS2;unsigned int ResolusiVertikalBMPvOS2;
unsigned int WarnaTerpakaiBMPvOS2;unsigned int WarnaPentingBMPvOS2;unsigned short int UnitBMPvOS2;unsigned short int CadanganBMPvOS2;unsigned short int PerekamanBMPvOS2;unsigned short int RenderingBMPvOS2;
/* Purwarupa fungsi yang digunakan */void **alokasi(int N, int M, int UkuranElemen);void *xalloc(unsigned ukuran);void BacaBerkasCitra(char *NamaArsip);void AlokasiMemoriCitra(int N, int M);void AlokasiMemoriCitra24Bit(int N, int M);void BacaHeader(FILE *fp);void BacaDataBitmap(FILE *masukan, N, int M);void TampilkanCitra(int N, int M);
void DealokasiMemoriCitra(int N, int jumlahbit);
#endif
Algor i tma 3.8. Berkas bitmap.h.
2. Membaca citra dari arsip.
Nama fungsi: BacaBerkasCitra(char *NamaArsip)
Include: bitmap.h
Penjelasan: Fungsi untuk membaca citra dari arsip.
/* Baca header arsip */fread(&TipeBMP1,sizeof(unsigned char),1,fp);fread(&TipeBMP2,sizeof(unsigned char),1,fp);fread(&UkuranBMP,sizeof(unsigned long),1,fp);fread(&XhotSpot,sizeof(unsigned short int),1,fp);fread(&YhotSpot,sizeof(unsigned short int),1,fp);
fread(&OffBits,sizeof(unsigned int),1,fp);
if (TipeBMP1 == 'B' && TipeBMP2 == 'M'){
fread(&UkuranHeader,sizeof(unsigned long),1,fp); /*baca ukuran headerBMP */
if (UkuranHeader==12) /* berkas BMP versi lama */{
/* baca header BMP versi lama */
fread(&LebarBMPvLama,sizeof(unsigned short int),1,fp);fread(&TinggiBMPvLama,sizeof(unsigned short int),1,fp);fread(&BidangBMPvLama,sizeof(unsigned short int),1,fp);fread(&JumlahBitBMPvLama,sizeof(unsigned short int),1,fp);
tinggi = (int) TinggiBMPvLama; /* tinggi citra */lebar = (int) LebarBMPvLama; /* lebar citra */
}else /* UkuranHeader = 64, berkas BMP versi OS2 */
{/* baca header BMP versi OS2 */fread(&JumlahBitBMPvOS2,sizeof(unsigned short int),1,fp);fread(&MampatBMPvOS2,sizeof(unsigned int),1,fp);
fread(&UkuranCitraBMPvOS2,sizeof(unsigned int),1,fp);fread(&ResolusiHorizontalBMPvOS2,sizeof(unsigned int),1,fp);fread(&ResolusiVertikalBMPvOS2,sizeof(unsigned int),1,fp);fread(&WarnaTerpakaiBMPvOS2,sizeof(unsigned int),1,fp);fread(&WarnaPentingBMPvOS2,sizeof(unsigned int),1,fp);fread(&UnitBMPvOS2,sizeof(unsigned short int),1,fp);fread(&CadanganBMPvOS2,sizeof(unsigned short int),1,fp);fread(&PerekamanBMPvOS2,sizeof(unsigned short int),1,fp);fread(&RenderingBMPvOS2,sizeof(unsigned short int),1,fp);
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 :
f ‘( x, y) =2
1{ f 1( x, y) + f 2( x, y) }
Hasil operasi mungkin bernilai riil, karena itu semua nilai riil tersebut perlu
dibulatkan ke nilai bulat terdekat, nilai maksimum adalah 255.
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 terjadiselama 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 adalah255. Algoritma perkalian citra dengan matriks koreksi ditunjukkan pada Algoritma
4.3. Kita mengasumsikan di sini ukuran citra dan matriks koreksi adalah N × N .
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 lebihterang daripada A. Kenaikan intensitas sama untuk seluruh pixel , yaitu c.
Pengurangan citra A dengan skalar c adalah mengurangkan setiap pixel di dalamcitra dengah sebuah skalar c, dan menghasilkan citra baru B yang intensitasnyalebih 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 skalarmelibatkan operasi clipping . Algoritma penjumlahan/pengurangan citra dengansebuah skalar sama seperti Algoritma 4.3.
5. Perkalian/pembagian Citra dengan SkalarPersamaannya:
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 intensitasnyalebih 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 intensitasnyalebih gelap daripada A. Penurunan intensitas setiap pixel berbanding terbalikdengan c. Operasi pembagian citra dengan skalar dipakai untuk normalisasikecerahan (normalization of brightness).
Algoritma perkalian/pembagian citra dengan sebuah skalar serupa denganAlgoritma 4.3, hanya saja operasi + atau – diganti dengan * atau /.
4.3 Operasi Boolean pada Citra
Selain operasi aritmetika, pemrosesan citra dijital juga melibatkan operasiBoolean (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:
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 55
( x, y)
( x', y' )
x
y
θ
Gambar 4.9. Model rotasi citra
(a) (b)
Gambar 4.8. Translasi pada citra camera: (a) citra semula, (b) citra hasil translasi dengan m = 30 dann = 25. (Terima kasih kepada Nanda Firdausi M atas izin menggunakan output programnya).
b. RotasiRumus 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 Gambar4.9). Jika citra semula adalah A dan citra hasil rotasi adalah B, maka rotasi citradari A ke B:
B[ x’][ y’] = B[ x cos(θ ) – y sin(θ)][ x cos(θ ) + y cos(θ )] = A[ x][ y] (4.22)
Bab ini berisi konsep matematis yang melandasi teori pengolahan citra. Dua operasi matematis
penting yang perlu dipahami dalam mempelajari pengolahan citra dijital adalah operasi konvolusidan Transformasi Fourier. Konvolusi terdapat pada operasi pengolahan citra yang mengalikan
sebuah citra dengan sebuah mask atau kernel (akan dijelaskan kemudian), sedangkan Transformasi
Fourier dilakukan bila citra dimanipulasi dalam ranah (domain) frekuensi ketimbang dalam ranah
spasial. Bagian pertama di dalam Bab 5 ini akan membahas konvolusi, dan bagian kedua akan
membahas Transformasi Fourier.
5.1 Teori Konvolusi
Operasi yang mendasar dalam pengolahan citra adalah operasi konvolusi. Konvolusi 2 buah fungsi
f ( x) dan g ( x) didefinisikan sebagai berikut:
∫∞
∞−
−== daa x g a f x g x f xh )()()(*)()( (5.1)
yang dalam hal ini, tanda * menyatakan operator konvolusi, dan peubah (variable) a adalah peubah
bantu (dummy variable).
Untuk fungsi diskrit, konvolusi didefinisikan sebagai
∑∞
−∞=
−==a
a x g a f x g x f xh )()()(*)()( (5.2)
Pada operasi konvolusi di atas, g ( x) disebut kernel konvolusi atau kernel penapis ( filter ). Kernel
g ( x) merupakan suatu jendela yang dioperasikan secara bergeser pada sinyal masukan f ( x), yang
dalam hal ini, jumlah perkalian kedua fungsi pada setiap titik merupakan hasil konvolusi yang
dinyatakan dengan keluaran h( x).
Ilustrasi konvolusi adalah sebagai berikut. Misalkan fungsi f ( x) dan g ( x) diperlihatkan pada Gambar
5.1(a) dan 5.1(b). Langkah-langkah perhitungan hasil konvolusi ditunjukkan mulai dari Gambar
5.1(c) sampai 5.11(f). Hasil konvolusi ditunjukkan pada Gambar 5.1(g), yaitu:
Hasil konvolusi fungsi f ( x) pada Gambar 5.3(a) dengan fungsi g ( x) =δ ( x + T ) + δ ( x) + δ ( x – T ) pada
Gambar 5.3(b) ditunjukkan pada Gambar 5.3(c).
Gambar 5.3. Konvolusi dengan fungsi impuls
Salah satu penggunaan fungsi delta adalah melakukan penerokan ( sampling ) pada sinyal malar f ( x).
Proses penerokan umumnya dilakukan pada periode yang tetap. Jika sinyal malar f (t ) diterokdengan periode tetap T , maka diperoleh serangkaian nilai diskrit f d (n):
f d (n) = f (nT ), – ∞ < n < +∞
Proses penerokan ini ditunjukkan dengan Gambar 5.4.
Gambar 5.4. Proses penerokan
Secara matematis, proses penerokan dinyatakan sebagai perkalian sinyal malar f (t ) dengan fungsi
penerok berupa rentetan sinyal delta sejarak T satu sama lain (Gambar 5.5). Fungsi penerok itu
dapat dinyatakan sebagai
s(t ) = ∑∞
∞−
− )( nT t δ (5.9)
Dengan demikian,
f d (t ) = f (t ) s(t ) = f (t ) ∑∞
∞−
− )( nT t δ = ∑∞
∞−
− )()( nT t t f δ (5.10)
Ilustrasi grafis proses penerokan ditunjukkan pada Gambar 5.6
(a) Citra Lena semula (b) Citra Lena sesudah konvolusi
Gambar 5.10 Konvolusi citra Lena dengan penapis Gaussian untuk mempertajam gambar.
Karena konvolusi dilakukan per pixel , dan untuk setiap pixel dilakukan operasi perkalian dan
penjumlahan, maka jelas konvolusi mengkonsumsi banyak waktu. Jika citra berukuran N × N dan
kernel berukuran m × m, maka jumlah perkalian adalah dalam orde N 2m2. Sebagai contoh jika citra
berukuran 512 × 512 dan kernel berukuran 16 × 16, maka ada sekitar 32 juta perkalian yang
dibutuhkan. Ini jelas tidak cocok untuk proses yang real time tanpa perangkat keras yang dedicated .
Satu cara mengurangi waktu komputasi adalah mentransformasi citra dan kernel ke dalam ranah
frekuensi (dengan menggunakan Transformasi Fourier – akan diuraikan di upabab 5.2), selanjutnya
konvolusi dilakukan dalam ranah waktu. Keuntungan utama dari penggunaan ranah frekuensi
adalah proses konvolusi dapat diterapkan dalam bentuk perkalian langsung.
Proses perubahan fungsi dari ranah ranah spasial ke ranah frekuensi dilakukan melaluiTransformasi Fourier. Sedangkan perubahan fungsi dari ranah frekuensi ke ranah spasial
dilakukan melalui Transformasi Fourier Balikan (invers).
f ( x, y) Transformasi Fourier F (u, v)
F (u, v) Transformasi Fourier Balikan f ( x, y)
Dengan demikian, operasi konvolusi dua buah fungsi dalam ranah frekuensi menjadi:
h( x, y) = f ( x, y) * g ( x, y) ↔ H (u, v) = F (u, v) G(u, v)
Pasangan Transformasi Fourier Diskrit untuk fungsi dengan satu peubah:
∑−
=
−=1
0
/21 N
x
N uxi xu e f
N F π , u = 0, 1, 2, …, N – 1 (5.25)
∑−
=
=1
0
/2 N
u
N uxiu x e F f π , x = 0, 1, 2, …, N – 1 (5.26)
Dengan mengingat kesamaan Euler, pasangan Transformasi Fourier Diskrit dapat ditulis dalam bentuk
)]/2sin()/2cos([1 1
0
N ux f i N ux f N
F N
x
x xu π π ∑−
=
−= (5.27)
)]/2sin()/2cos([1
0
N ux F i N ux F f N
u
uu x π π ∑−
=
+= (5.28)
Interpretasi dari TFD adalah sebagai berikut: TFD mengkonversi data diskrit menjadi sejumlahsinusoida diskrit yang frekuensinya dinomori dengan u = 0, 1, 2, …, N – 1, dan ampiltudonya
diberikan oleh F (u).
Faktor 1/ N pada persamaan F (u) adalah faktor skala yang dapat disertakan dalam persamaan F (u)
atau dalam persamaan f ( x), tetapi tidak kedua-duanya.
Contoh 5.2. [MEN89] Diketahui fungsi sinyal f (t ) dengan hasil penerokan ke dalam nilai-nilaidiskrit sebagai berikut ( N = 4):
x0 = 0.5, f 0 = 2 x1 = 0.75, f 1 = 3 x2 = 1.0, f 2= 4 x3 = 1.25, f 3= 4
Transformasi Fourier Diskrit adalah sebagai berikut:
25.3)(4
1
4
1
4
1
4
13210
3
0
03
0
4/2.0.3
0
0 =+++==== ∑∑∑==
−
=
f f f f f e f e f F x
x
x
x xi
x
xπ
)(4
1
4
1 2/332
2/1
00
4/2.1.3
0
1π π π π iii xi
x
x e f e f e f e f e f F −−−−
=
+++== ∑
)])2/sin(3)2/3[cos(4)]sin()[cos(4)]2/sin()2/[cos(32(41 π π π π π π iii −+−+−+=
Citra dijital adalah fungsi diskrit dalam ranah spasial, dengan dua peubah, x dan y. Pada fungsidiskrit dengan dua peubah dan berukuran N × M , pasangan Transformasi Fourier Diskritnya adalah:
∑∑−
=
+−−
=
=1
0
)//(2,
1
0
,
1 N
x
M vy N uxi y x
M
y
vu e f NM
F π , u dan v = 0, 1, 2, …, N – 1 (5.29)
∑∑−
=
+−
=
=1
0
)//(2,
1
0
,
N
u
M vy N uxivu
M
v
y x e F f π , x dan y = 0, 1, 2, …, N – 1 (5.30)
atau
∑∑ −
=
−−
=
−=1
0
/2,
1
0
/2,,
11 M
y
M vyi y x
N
x
N uxi y xvu e f
M
e f
N
F π π (5.31)
∑∑ −
=
−
=
=1
0
/2,
1
0
/2,,
M
v
M vyivu
N
u
N uxivu y x e F e F f π π (5.31)
untuk u, x = 0, 1, …, N – 1 dan v, y = 0, 1, …, M – 1.
Algoritma TFD dan balikannya dapat diterapkan untuk fungsi diskrit dwimatra. Mula-mulatransformasi dilakukan dalam arah x (dengan nilai y tetap). Kemudian, hasilnya ditransformasikan
lagi dalam arah y.
Algoritma TFD tidak bagus untuk N yang besar karena komputasinya memakan waktu yang lama.
Kompleksitas waktu algoritmanya adalah O( N 2). Algoritma yang dikenal cepat untuk menghitung
transformasi Fourier diskrit adalah FFT ( Fast Fourier Transform). Algoritma FFT mempunyaikompleksitas waktu O( N 2log N ). Jadi, untuk N = 50, TFC kira-kira 10 kali lebih cepat daripada
TFD, untuk N = 1000 sekitar 100 kali lebih cepat. Algoritma FFT tidak dibahas di dalam buku ini.
yang dijadikan objek pembahasan mempunyai kualitas yang buruk, misalnya citra mengalami
derau (noise) pada saat pengiriman melalui saluran transmisi, citra terlalu terang/gelap, citra
kurang tajam, kabur, dan sebagainya. Melalui operasi pemrosesan awal inilah kualitas citradiperbaiki sehingga citra dapat digunakan untuk aplikasi lebih lanjut, misalnya untuk aplikasi
pengenalan (recognition) objek di dalam citra
7.1 Lingkup Proses Perbaikan Kualitas Citra
Yang dimaksud dengan perbaikan kualitas citra adalah proses mendapatkan citra yang lebih
mudah diinterpretasikan oleh mata manusia. Pada proses ini, ciri-ciri tertentu yang terdapat
di dalam citra lebih diperjelas kemunculannya [DUL97]. Secara matematis, image
enhancement dapat diartikan sebagai proses mengubah citra f ( x, y) menjadi f ’( x, y) sehingga
ciri-ciri yang dilihat pada f ( x, y) lebih ditonjolkan.
Proses-proses yang termasuk ke dalam perbaikan kualitas citra [DUL97]:
Kontras menyatakan sebaran terang (lightness) dan gelap (darkness) di dalam sebuah gambar.
Citra dapat dikelompokkan ke dalam tiga kategori kontras: citra kontras-rendah ( low
contrast ), citra kontras-bagus ( good contrast atau normal contrast ), dan citra kontras-tinggi
(high contrast ). Ketiga kategori ini umumnya dibedakan secara intuitif.
Citra kontras-rendah dicirikan dengan sebagian besar komposisi citranya adalah terang atau
sebagian besar gelap. Dari histogramnya terlihat sebagian besar derajat keabuannya
terkelompok (clustered ) bersama atau hanya menempati sebagian kecil dari rentang nilai-nilai
keabuan yang mungkin. Jika pengelompokan nilai-nilai pixel berada di bagian kiri (yang
berisi nilai keabuan yang rendah), citranya cenderung gelap. Jika pengelompokan nilai-nilai
pixel berada di bagian kanan (yang berisi nilai keabuan yang tinggi), citranya cenderung
terang. Tetapi, mungkin saja suatu citra tergolong kontras-rendah meskipun tidak terlalu
terang atau tidak terlalu gelap bila semua pengelompokan nilai keabuan berada di tengah
histogram.
Citra kontras-bagus memperlihatkan jangkauan nilai keabuan yang lebar tanpa ada suatu nilai
keabuan yang mendominasi. Histogram citranya memperlihatkan sebaran nilai keabuan yang
relatif seragam.
Citra kontras-tinggi, seperti halnya citra kontras bagus, memiliki jangkauan nilai keabuan
yang lebar, tetapi terdapat area yang lebar yang didominasi oleh warna gelap dan area yang
lebar yang didominasi oleh warna terang. Gambar dengan langit terang denganlatar depan
yang gelap adalah contoh citra kontras-tinggi. Pada histogramnya terlihat dua puncak, satu
pada area nilai keabuan yang rendah dan satu lagi pada area nilai keabuan yang tinggi.
Citra dengan kontras-rendah dapat diperbaiki kualitasnya dengan operasi peregangan kontras.
Melalui operasi ini, nilai-nilai keabuan pixel akan merentang dari 0 sampai 255 (pada citra 8- bit), dengan kata lain seluruh nilai keabuan pixel terpakai secara merata.
Gambar 7.2 memperlihatkan tiga buah citra Lena yang masing-masing memiliki kontras-
Dalam bentuk diskrit, nilai-nilai s diperoleh dengan persamaan berikut:
∑∑==
===k
j
jr
k
j
j
k k r P n
nr T s
00
)()( (7.9)
yang dalam hal ini, 0 ≤ r k ≤ 1, k = 0, 1, 2, …, L – 1
Contoh 7.1. [GON77] Misalkan terdapat citra yang berukuran 64 × 64 dengan jumlah derajatkeabuan ( L) = 8 dan jumlah seluruh pixel (n) = 64 × 64 = 4096:
k r k nk P r (r k ) = nk /n
0 0/7 = 0.00 790 0.19
1 1/7 = 0.14 1023 0.25
2 2/7 = 0.29 850 0.21
3 3/7 = 0.43 656 0.16
4 4/7 = 0.57 329 0.08
5 5/7 = 0.71 245 0.06
6 6/7 = 0.86 122 0.03
7 7/7 = 1.00 81 0.02
Gambar 7.5 adalah histogram citra semula sebelum perataan.
Seperti yang sudah disebutkan sebelum ini, histogram yang diperoleh merupakan hampirandari histogram yang dispesifikasikan karena kita mencoba menemukan nilai s yang
transformasinya mendekati nilai z .
Dalam praktek, mungkin terdapat ambiguitas pada nilai transformasi balikan, G-1( s). Dengan
kata lain, nilai transformasi balikan dari s ke z tidak tunggal. Hal ini terjadi karena: (i) proses
pembulatan G-1( s) ke nilai intensitas terdekat, atau (ii) terdapat nilai intensitas yang tidak
terisi di dalam histogram spesifikasi. Solusi termudah untuk masalah ini adalah memilih nilai
z yang terdekat dengan histogram yang dispesifikasikan.
Algoritma Pembentukan Histogram ditunjukkan pada Algoritma 7.3. 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]. Hasil perataan histogram dari citrasemula disimpan kembali di dalam matriks Image[0..N-1][0..M-1]. Histogram yang
dispesifikasikan disimpan di dalam Spec[0..255]. Histogram hasil perataan dari Spec
disimpan di dalam tabel SpecEq[0..255]. Histogram hasil transformasi balikan disimpan
di dalam tabel InvHist[0..255] .
void PembentukanHistogram(citra Image, int N, int M, float Spec[256])
/* Mengubah citra Image yang berukuran N × M berdasarkan histogram yang
dispesifikasikan oleh pengguna (Spec).
*/
{
int i, j, minj, minval;float sum, Hist[256];int HistEq[256], SpecEq[256], InvHist[256];
/* lakukan perataan histogram terhadap citra semula */
Pelembutan citra (image smoothing ) bertujuan untuk menekan gangguan (noise) pada citra.
Gangguan tersebut biasanya muncul sebagai akibat dari hasil penerokan yang tidak bagus
( sensor noise, photographic grain noise) atau akibat saluran transmisi (pada pengiriman
data).
Gangguan pada citra umumnya berupa variasi intensitas suatu pixel yang tidak berkorelasi
dengan pixel - pixel tetangganya. Secara visual, gangguan mudah dilihat oleh mata karena
tampak berbeda dengan pixel tetangganya. Gambar 7.9 adalah citra Lena yang mengalamigangguan berupa spike atau speckle yang tampil pada gambar dalam bentuk bercak putih atau
hitam seperti beras.
Pixel yang mengalami gangguan umumnya memiliki frekuensi tinggi (berdasarkan analisis
frekuensi dengan transformasi Fourier). Komponen citra yang berfrekuensi rendah umumnyamempunyai nilai pixel konstan atah berubah sangat lambat. Operasi pelembutan citra
dilakukan untuk menekan komponen yang berfrekuensi tinggi dan meloloskan komponen
yang berfrekuensi rendah.
Gambar 7.9. Citra Lena yang mengalami gangguan berupa spike
Operasi pelembutan dapat dilakukan pada ranah spsial maupun pada ranah frekuensi. Pada
ranah spasial, operasi pelembutan dilakukan dengan mengganti intensitas suatu pixel denganrata-rata dari nilai pixel tersebut dengan nilai pixel - pixel tetangganya. Jadi, diberikan citra
f ( x, y) yang berukuran N × M . Citra hasil pelembutan, g ( x, y), didefinisikan sebagai berikut:
Nilai koefisien yang besar di titik pusat penapis memainkan peranan kunci dalam proses
konvolusi. Pada komponen citra dengan frekuensi tinggi (yang berarti perubahan yang besar pada nilai intensitasnya), nilai tengah ini dikalikan dengan nilai pixel yang dihitung.
Koefisien negatif yang lebih kecil di sekitar titik tengah penapis bekerja untuk mengurangi
faktor pembobotan yang besar. Efek nettonya adalah, pixel - pixel yang bernilai besar
diperkuat, sedangkan area citra dengan intensitas pixel konstan tidak berubah nilanya.
Gambar 7.15 mempelihatkan konvolusi dengan penapis lolos-tinggi, gambar (a) adalah citra
yang tidak mempunyai pixel tepi, dan gambar (b) adalah citra yang mempunyai pixel tepi.
Penapis lolos-tinggi yang digunakan adalah penapis (i) dan (ii).
Karena koefisien penapis mengandung nilai negatif, maka konvolusi mungkin saja
menghasilkan pixel bernilai negatif. Meskipun intensitas bernilai negatif menarik, tetapi kita
tidak dapat menampilkannya. Untuk alasan terakhir ini, implementasi konvolusi men- set nilainegatif menjadi nilai 0. Cara lainnya adalah dengan mengambil nilai mutlaknya atau
menskalakan semua nilai-nilai pixel secara menaik sehingga nilai yang paling negatif
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.
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 menjadiobjek 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. Tepidapat diorientasikan dengan suatu arah, dan arah ini berbeda-beda pada
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 landaiDisebut juga tepi lebar, yaitu tepi dengan sudut arah yang kecil. Tepi landaidapat dianggap terdiri dari sejumlah tepi-tepi lokal yang lokasinya berdekatan.
3. Tepi yang mengandung derau (noise)Umumnya tepi yang terdapat pada aplikasi computer vision mengandungderau. Operasi peningkatan kualitas citra (image enhancement ) dapat dilakukanterlebih dahulu sebelum pendeteksian tepi.
(a) Tepi curam (b) tepi landai (c) tepi curam dengan derau
Pendeteksian tepi merupakan langkah pertama untuk melingkupi informasi didalam 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 dalamkomponen 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 GradienPertama
Perubahan intensitas yang besar dalam jarak yang singkat dipandang sebagaifungsi yang memiliki kemiringan yang besar. Kemiringan fungsi biasanyadilakukan dengan menghitung turunan pertama ( gradient ). Karena citra f ( x, y)adalah fungsi dwimatra dalam bentuk diskrit, maka turunan pertamanya adalahsecara parsial, masing-masing dalam arah- x dan dalam arah- y, sebagai berikut:
=
∂
∂∂
∂
=∇ y
x
G
G
y
f x
f
f (8.1)
yang dalam hal ini,
x
y x f y x x f
x
y x f G x
∆
−∆+=
∂
∂=
),(),(),( (8.2)
y
y x f y y x f
y
y x f G y
∆
−∆+=
∂
∂=
),(),(),( (8.3)
Biasanya 1=∆=∆ y x , sehingga persamaan turunan pertama menjadi:
Operator R+ adalah hampiran turunan berarah dalam arah 45°, sedangkan R-
adalah hampiran turunan berarah dalam arah 135°.
Dalam bentuk mask konvolusi, operator Roberts adalah:
−=+
1001 R dan
−
=−0110 R
Khusus untuk operator Roberts, arah tepi dihitung dengan rumus
),( y xα = )(tan4
1
+
−−+ R
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.
23152
17524
31753
24612
15243
*****
*7811
*4452
*2875
*6334
(i) citra semula (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 TurunanKedua
Operator turunan kedua disebut juga operator Laplace. Operator Laplace
mendeteksi lokasi tepi lebih akurat khususnya pada tepi yang curam. Pada tepiyang curam, turunan keduanya mempunyai persilangan nol ( zero-crossing ), yaitu
titik di mana terdapat pergantian tanda nilai turunan kedua (Gambar 8.6),
endeteksi tepi menghasilkan citra tepi yang berupa citra biner ( pixel tepi
berwarna putih, sedangkan pixel bukan-tepi berwarna hitam). Tetapi, tepi
belum memberikan informasi yang berguna karena belum ada keterkaitan
antara suatu tepi dengan tepi lainnya. Citra tepi ini harus diproses lebih lanjut
untuk menghasilkan informasi yang lebih berguna yang dapat digunakan dalam
mendeteksi bentuk-bentuk sederhana (misalnya garis lurus, lingkaran, elips, dansebagainya) pada proses analisis citra.
Rangkaian pixel - pixel tepi yang membentuk batas daerah (region boundary)disebut kontur (contour ) [JAI95]. Kontur dapat terbuka atau tertutup. Konturtertutup berkoresponden dengan batas yang mengelililingi suatu daerah lihatGambar 9.1(a). Pixel-pixel di dalam daerah dapat ditemukan dengan algoritma
pengisian ( filling algorithm). Batas daerah berguna untuk mendeskripsikan bentuk objek dalam tahap analisis citra (misalnya untuk mengenali objek).
Kontur terbuka dapat berupa fragmen garis atau bagian dari batas daerah yangtidak membentuk sirkuit (Gambar 9.1(b)).
9.1 Representasi KonturRepresentasi kontur dapat berupa senarai tepi (edge list ) atau berupa kurva.
Senarai tepi merupakan himpunan terurut pixel-pixel tepi. Representasi kontur ke
dalam kurva merupakan representasi yang kompak dan mangkus untuk analisis
citra. Misalnya, rangkaian pixel tepi yang membentuk garis dapat direpresentasikan
hanya dengan sebuah persamaan garis lurus. Representasi semacam ini
menyederhanakan perhitungan selanjutnya seperti arah dan panjang garis.
Kode Rantai
Kode rantai (chain code)adalah notasi untuk mengkodekan senarai tepi yang
membentuk batas daerah. Kode rantai menspesifikasikan arah setiap pixel tepi didalam senarai tepi. Arah yang digunakan adalah 8 arah mata angin seperti yang
terlihat pada pada Gambar 9.2 (a).
(a) (b)
Gambar 9.2 (a) Kode rantai, (b) representasi batas objek dengan kode rantai.
Dimulai dari sebuah pixel tepi dan searah jarum jam, arah setiap pixel tepi yang
membentuk batas objek dikodekan dengan salah satu dari delapan kode rantai.
Kode rantai merepresentasikan batas objek dengan koordinat pixel tepi pertama
lalu diikuti dengan senarai kode rantai. Karena ada 8 arah, maka cukup 3 bit
untuk mengkodekan setiap arah. Gambar 9.3 memperlihatkan contoh pengkodean
dari parameter u. Bentuk parametrik tersebut menspesifikasikan titik-titik sepanjang kurva dari titik awal kurva p1 = ( x(u1), y(u1) ke titik akhir p2 = ( x(u2), y(u1).
Panjang kurva adalah
L = dudu
dy
du
dxu
u
∫
+
2
1
22
(9.1)
Transformasi Hough menggunakan mekanisme voting untuk mengestimasi nilai
parameter. Setiap titik di kurva menyumbang suara untuk beberapa kombinasi
parameter. Parameter yang memperoleh suara terbanyak terpilih sebagai pemenang.
Pada awalnya, Transformasi Hough digunakan untuk mendeteksi garis lurus.
Namun, ia juga dapat digunakan untuk mendeteksi kurva sederhana lainnya
seperti lingkaran dana elips. Pembahasan dimulai dengan transformasi Hough
untuk mendeteksi keberadaan garis lurus di dalam citra tepi.
Mendeteksi Garis Lurus
Misalkan citra tepi berukuran n = N × M pixel . Cara yang paling sederhana
mendeteksi garis lurus adalah menemukan semua garis yang ditentukan oleh dua
buah pixel dan memeriksa apakah sebagian dari pixel tepi termasuk ke dalam
garis tersebut (cara exhaustive search).
Jumlah maksimum garis yang dideteksi adalah n (n – 1)/2. Karena setiap pixel
harus diperiksa apakah ia termasuk ke dalam suatu garis, maka kompleksitas
algoritma pendeteksian garis lurus untuk kasus terburuk adalah O(n3). Untuk
aplikasi praktis, jelas metode pendeteksian dengan cara ini tidak mangkus.
Transformasi Hough mengurangi kompleksitas komputasi dengan menggunakan
bentuk parametrik dan menggunakan mekanisme pemungutan suara terbanyak
(voting ) untuk menentukan nilai parameter yang tepat.
Tinjau persamaan garis lurus:
y = mx + c (9.2)
Dalam bentuk parametrik, setiap garis dinyatakan sebagai (m’, c’) di dalam ruang
parameter m-c. Persamaan 9.2 dapat ditulis menjadi
c = y – mx (9.3)
Sembarang titik ( x, y) pada bidang planar X -Y berkoresponden dengan sebuah
Prosedur yang sama untuk mendeteksi garis lurus dapat digunakan kembalidengan mengganti ruang parameter m – c menjadi ruang parameter r – θ , yangdalam hal ini,
2222 M N r M N +≤≤+−-π /2 ≤ θ ≤ π /2
Algoritma Transformasi Hough diperlihatkan pada Algoritma 9.1 [PIT93].Algoritma tersebut mengasumsikan citra tepi (citra hasil pendeteksian tepi)
disimpan di dalam matriks Edge[0..N-1,0..M-1]. Ruang parameter r – θ
dinyatakan sebagai matriks P yang berukuran n × m. Nilai cosinus dan sinus
disimpan di dalam lookup table COS[0..p-1] dan SIN[0..p-1] yang
dibentuk dengan Algoritma 9.2.
void Hough(citra Edge, int N, int M, imatriks P, int n, int m, float *COS, float *SIN)/* prosedur yang melakukan Transformasi Hough.
Masukan: citra tepi Edge yang berukuran N x M.
Keluaran: matriks parameter P yang berukuran n x m*/
{ int k, l, i, j, kk, ll; float r, b; float SQRTD =sqrt((float)N*(float)N + (float)M*(float)M);
/* inisialisasi P[0..p-1, 0,,q-1] dengan 0 */
for(kk=0;kk<=p-1;kk++) for(ll=0;ll<=q-1;ll++)
P[kk][ll]=0;
/*telusuri citra tepi. Jika pixel merupakan tepi, lakukan pemungutan suara pada elemen matriks P yang bersesuaian.
tetha dari –pi/2 sampai pi/2.
r dari –sqrt(N*N+M*M) sampai sqrt(N*N+M*M).*/
for (k=0;k<=N-1;k++) for (l=0;l<=M-1;l++) { if (Edge[k][l]==1) { for (i=0;i<=p-1;i++)
garis lurus yang bersesuaian (yang intensitasnya 1) digambarkan pada matrikskeluaran Out. Operasi and dengan citra tepi dilakukan untuk mengklarifikasi
keberadaan pixel tepi.
Algoritma Transformasi Hough Balikan diperlihatkan pada Algoritma 9.4
[PIT93]. Algoritma tersebut mengasumsikan citra tepi (citra hasil pendeteksian
tepi) disimpan di dalam matriks Edge[0..N-1,0..M-1]. Ruang parameter
r – θ dinyatakan sebagai matriks P yang berukuran n × n. Citra keluaran yang
berisi pixel-pixel tepi pembentuk garis lurus disimpan di dalam matriks
Out[0..N-1,0..M-1].
void InverseHough(citra Edge, citra Out, int N, int M, imatriks P,int n, int m, float *COS, float *SIN)/* prosedur yang melakukan Transformasi Hough Balikan
Masukan: 1. citra tepi Edge yang berukuran N x M.
2. matriks parameter P yang berukuran n x m
Keluaran: citra Out yang berisi pixel-pixel pembentuk garis lurus.
*/
{ int k, l, i, j; float r, y; float SQRTD =sqrt((float)N*(float)N + (float)M*(float)M);
Gambar 9.7 Pendeteksian bentuk kurva sembarang denganTransformasi Hough rampatan
(a) (b)
Gambar 9.6 (a) Citra slope, (b) hasil deteksi lingkaran dengan Transformasi Hough (Terima kasihkepada Danu Pranantha atas izin menggunakan output program tugasnya)
Transformasi Hough untuk Mendeteksi Bentuk SembarangTransformasi Hough dapat dirampatkan untuk mendeteksi sembarang kurva yang
berbentuk f (x, a) = 0, yang dalam hal ini x adalah vektor peubah dan a adalahvektor parameter. Memori yang dibutuhkan untuk matriks parametrik P (a)
meningkat menjadi K q, yang dalam hal ini q adalah jumlah parameter. Tahapanyang dilakukan adalah [DUL97]:1. tentukan lokasi pusat penumpukan suara;
2. tentukan fungsi jarak dari setiap pixel tepi ke pusat pemungutan suara.
Jika kurva berbentuk lingkaran, maka lokasi pusat penumpukan suara adalah titik pusat lingkaran, sedangkan fungsi jarak dari setiap pixel tepi ke titik pusatlingkaran adalah fungsi konstan (yaitu akar pangkat dua dari persamaan (4) ).
Sebagai contoh, pada Gambar 9.7 titik (a, b) adalah lokasi pusat penumpukan
suara. Fungsi jarak r dari setiap titik ( x, y) dan nilai α merupakan fungsi dari arahvektor normal N .
Untuk setiap pixel tepi ( x, y) dengan sudut arah tepi θ , lokasi pusat penumpukansuara dihitung dengan rumus
ada umumnya, representasi citra digital membutuhkan memori yang besar.
Sebagai contoh, citra Lena dalam format bitmap yang berukuran 512 × 512
pixel membutuhkan memori sebesar 32 KB (1 pixel = 1 byte) untuk
representasinya. Semakin besar ukuran citra tentu semakin besar pula memori
yang dibutuhkannya. Pada sisi lain, kebanyakan citra mengandung duplikasi
data. Duplikasi data pada citra dapat berarti dua hal. Pertama, besar kemungkinan
suatu pixel dengan pixel tetanggganya memiliki initensitas yang sama, sehingga
penyimpanan setiap pixel memboroskan tempat. Kedua, citra banyak
mengandung bagian (region) yang sama, sehingga bagian yang sama ini tidak
perlu dikodekan berulang kali karena mubazir atau redundan.
Saat ini, kebanyakan aplikasi menginginkan representasi citra dengan kebutuhanmemori yang sesedikit mungkin. Pemampatan citra atau kompresi citra (image
compression) bertujuan meminimalkan kebutuhan memori untuk merepresentasikan
citra digital. Prinsip umum yang digunakan pada proses pemampatan citra adalah
mengurangi duplikasi data di dalam citra sehingga memori yang dibutuhkan
untuk merepresentasikan citra menjadi lebih sedikit daripada representasi citra
semula.
10.1 Pemampatan Citra versus Pengkodean Citra
Pemampatan citra kadang-kadang disalahmengertikan dengan pengkodean citra
(image encoding ), yaitu persoalan bagaimana pixel-pixel di dalam citra dikodekandengan representasi tertentu. Pengkodean citra tidak selalu menghasilkan
representasi memori yang minimal. Pengkodean citra yang menghasilkan
2. Pendekatan ruangPemampatan citra didasarkan pada hubungan spasial antara pixel-pixel didalam suatu kelompok yang memiliki derajat keabuan yang sama di dalamsuatu daerah di dalam gambar.Contoh metode: Run-Length Encoding .
3. Pendekatan kuantisasiPemampatan citra dilakukan dengan mengurangi jumlah derajat keabuanyang tersedia.Contoh metode: metode pemampatan kuantisasi.
4. Pendekatan fraktalPemampatan citra didasarkan pada kenyataan bahwa kemiripan bagian- bagian di dalam citra dapat dieksploitasi dengan suatu matriks transformasi.Contoh metode: Fractal Image Compression.
10.5 Klasifikasi Metode PemampatanMetode pemampatan citra dapat diklasifiksikan ke dalam dua kelompok besar:1. Metode lossless
Metode lossless selalu menghasilkan citra hasil penirmampatan yang tepatsama dengan citra semula, pixel per pixel . Tidak ada informasi yang hilangakibat pemampatan. Sayangnya nisbah (ratio) pemampatan citra metodelossless sangat rendah.Contoh metode lossless adalah metode Huffman.
Nisbah pemampatan citra dihitung dengan rumus
Nisbah = %)100
semulacitraukuran
pempatatanhasilcitraukuran(%100 ×− (10.3)
Metode lossless cocok untuk memampatkan citra yang mengandunginformasi penting yang tidak boleh rusak akibat pemampatan. Misalnyamemampatkan gambar hasil diagnosa medis.
2. Metode lossy Metode lossy menghasilkan citra hasil pemampatan yang hampir samadengan citra semula. Ada informasi yang hilang akibat pemampatan, tetapidapat ditolerir oleh persepsi mata. Mata tidak dapat membedakan perubahankecil pada gambar. Metode pemampatan lossy menghasilkan nisbah pemampatan yang tinggi daripada metode lossless. Gambar 10.1 adalah citra
sebelum dimampatkan, dan Gambar 10.2 adalah hasil pemampatan citrakapal dengan metode lossy.Contoh metode lossy adalah metode JPEG dan metode fraktal.
semuanya ada 20 nilai. Jadi, kita sudah menghemat 4 buah nilai.
Metode RLE dapat dikombinasikan dengan metode Huffman untuk mengkodekannilai-nilai hasil pemampatan RLE guna meningkatkan nisbah pemampatan. Mula-mula lakukan pemampatan RLE, lalu hasilnya dimampatkan lagi dengan metode
Huffman.
10.8 Metode Pemampatan Kuantisasi (QuantizingCompression)
Metode ini mengurangi jumlah derajat keabuan, misalnya dari 256 menjadi 16,yang tentu saja mengurangi jumlah bit yang dibutuhkan untuk merepresentasikan citra.
Misalkan P adalah jumlah pixel di dalam citra semula, akan dimampatkanmenjadi n derajat keabuan. Algoritmanya adalah sebagai berikut:
Algoritma metode kuantisasi:1. Buat histogram citra semula (citra yang akan dimampatkan).2. Identifikasi n buah kelompok di dalam histogram sedemikian sehingga setiap
3. Nyatakan setiap kelompok dengan derajat keabuan 0 sampai n –1. Setiap pixel di dalam kelompok dikodekan kembali dengan nilai derajat keabuanyang baru.
Ukuran citra sebelum pemampatan (1 derajat keabuan = 4 bit):
65 × 4 bit = 260 bit
Ukuran citra setelah pemampatan (1 derajat keabuan = 2 bit):
65 × 2 bit = 130 bit
Nisbah pemampatan = %50%)100260
130%100( =×− , yang artinya 50% dari citra
semula telah dimampatkan.
Kelemahan metode pemampatan kuantisasi adalah banyaknya informasi yang
hilang, tapi kehilangan informasi ini dapat diminimalkan dengan menjamin
bahwa tiap kelompok mempunyai jumlah pixel yang hampir sama.
10.9 Metode Pemampatan Fraktal
Metode pemampatan fraktal adalah metode yang relatif baru. Prinsipnya adalah
mencari bagian di dalam citra yang memiliki kemiripan dengan bagian lainya
namun ukurannya lebih besar ( self similarity). Kemudian dicari matriks yangmentransformasikan bagian yang lebih besar tersebut dengan bagian yang lebih
kecil. Kita cukup hanya menyimpan elemen-elemen dari sekumpulan matriks
transformasi tersebut (yang disebut matriks transformasi affine). Pada proses
penirmampatan, matriks ransformasi affine di-iterasi sejumlah kali terhadap
sembarang citra awal. Hasil iterasi akan konvergen ke citra semula. Metode ini
menghasilkan nisbah pemampatan yang tinggi namun waktu pemampatannya
relatif lama, sedangkan waktu penirmamoatannya berlangsung cepat. Metode
pemampatan fraktal akan dijelaskan secara panjang lebar di dalam Bab tersendiri
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.
11.1 Pendahuluan
Seperti yang sudah disebutkan di awal Bab, citra biner hanya mempunyai duanilai derajat keabuan: hitam dan putih. Pixel-pixel objek bernilai 1 dan pixel -pixellatar belakang bernilai 0. Pada waktu menampilkan gambar, 0 adalah putih dan 1adalah hitam. Jadi, pada citra biner, latar belakang berwarna putih sedangkanobjek berwarna hitam. Gambar 11.1 memperlihatkan beberapa contoh citra biner,sedangkan Gambar 11.2 adalah contoh pengkodean citra biner.
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 dipisahkan
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.
PengambanganKonversi 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
yang dalam hal ini, f g (i, j) adalah citra hitam-putih, f B(i, j) adalah citra biner, danT adalah nilai ambang yang dispesifikasikan. Dengan operasi pengambangantersebut, 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 nilaiintensitas yang homogen, maka citra tersebut umumnya mempunyai histogrambimodal (mempunyai dua puncak atau dua buah maksimum lokal) seperti yangditunjukkan pada Gambar 11.3. Nilai T dipilih pada nilai minimum lokal yangterdapat di antara dua puncak. Dengan cara seperti ini, kita tidak hanya mengkonversicitra hitam-putih ke citra biner, tetapi sekaligus melakukan segmentasi objek darilatar 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.5memperlihatkan konversi citra Lena menjadi citra biner dengan T = 128 dan T = 150.
Gambar 11.6 Kiri: gangguan pada citra biner yang mengandung huruf “i”; Kanan: citra yangdihasilkan setelah dilakukan penapisan (T = 10) [JAI95].
Gambar 11.7 Kesalahan yang diperoleh dari pengambilan nilai T 0 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)
int CMYKtoRGB(citra c, citra y, citra m, citra k,citra r, citra g, citra b,
int N, int M)
/* Transformasi citra dari model warna CMYK ke model RGB.
Masukan: citra dengan komponen CMYK masing-masing disimpan di dalam
matriks c, y, m, dan k. Ketga mtariks ini berukuran N × M.
Keluaran: citra dengan komponen RGB masing-masing disimpan di dalam
matriks r, g, dan b.
*/
{
int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{ c[i][j]=c[i][j]+k[i][j];
m[i][j]=m[i][j]+k[i][j]; y[i][j]=y[i][j]+k[i][j];
k[i][j]=c[i][j];
r[i][j]=(unsigned char)255 – c[i][j];
g[i][j]=(unsigned char)255 – m[i][j];
b[i][j]=(unsigned char)255 – y[i][j];
}
}
Algoritma 12.4 Transformasi citra dari model warna CMYK ke model RGB
17.6 Transformasi Warna RGB ke IHS
Meskipun basis RGB bagus untuk menampilkan informasi warna, tetapi ia tidak
cocok untuk beberapa aplikasi pemrosesan citra. Pada aplikasi pengenalan objek,
lebih mudah mengidentifikasi objek dengan perbedaan hue-nya dengan cara
memberikan nilai ambang pada rentang nilai-nilai hue (panjang helombang
spektrum) yang melingkupi objek. Masalahnya, bagaimana melakukan pengambangan
pada ruang warna RGB dan apa rumus untuk mengaplikasikannya? Masalah ini
lebih mudah dipecahkan bila nilai RGB dikonversi ke nilai intensity ( I ), hue ( H ),
dan saturation (S ).
Aplikasi yang lain misalnya dalam pemampatan citra. Melakukan pemampatan
secara terpisah pada setiap nilai R, G, dan B tidak disarankan, karena data yangdimampatkan 3 kali lebih banyak dan waktu pemampatannya 3 kali lebih lama
daripada waktu pemampatan citra skala-abunya. Pemampatan citra berwarna
lebih relevan bila warna RGB-nya dikonversikan ke IHS karena algoritma
pemampatan pada citra skala-abu dilakukan pada komponen I , sedangkan nilai H
dan S dikodekan dengan cara yang lain dengan sedikit atau sama sekali tidak ada
Model warna IHS merepresentasikan warna dalam terminologi intensity, hue, dansaturation. Dari diagram kromatisitas, buatlah segitiga yang menghubungkan tiga
warna pokok red , green, blue (Gambar 12.4). Titik-titik pada segitiga menyatakan
warna yang dihasilkan dari pencampuran warna titik sudut, sedangkan titik-titik
di dalam segitiga menyatakan warna yang dapat dihasilkan dengan
mengkombinasikan tiga warna titik sudut. Titik tengah segitiga menyatakan
warna putih, yaitu pencampuran warna pokok dengan fraksi yang sama.
B
G R
S
H
Gambar 12.4 Segitiga HIS
Komponen RGB dari citra berwarna dapat dikonversikan ke model warna IHS .
Dengan mengasumsikan komponen RGB telah dinormalisasikan ke 1, maka I
dihitung dengan rumus:
)(3
1 BG R I ++= (12.22)
Persamaan 12.22 di atas sering digunakan untuk mengubah citra berwarna
Transformasi citra dari basis RGB ke basis IHS dilakukan sebelum pemrosesancitra. Citra yang sudah diproses dapat dikonversikan kembali ke basis RGB untuk
tujuan display.
National Television Systems Committee ( NTSC ) menggunakan model YIQ untuk
mentransformasikan model RGB ke IHS , yang dalam hal ini Y menyatakan
intensity, I menyatakan hue, dan Q menyatakan saturation [PIT93].
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 kulitkepala 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
Bab 13_Steganografi dan Watermarking pada Citra Digital 199
(a) Citra peppers asli
LETTER OF RECOMMENDATION
To Whom It May Concern,
Herewith I highly recommend Mr. R. HendroWicaksono continue his postgraduate study atyour university. My recommendation is basedon 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 hehas a lot of creative ideas. He is also a veryintelligent student and he cooperates very wellwith his peers whenever they had to worktogether.
During his study, he showed diligence andeagerness to achieve his goal. He sets very highstandard for himself and organizes himself verywell to achieve the standard. I am confident thatif he can maintain his goal work, he should beable to complete the postgraduate program wellwithin the stipulated time.
I am sure that his abilities and his personalqualities along with his academic capabilitieswill help his to obtain his Master’s degree atyour university, which will be very useful for
our country.
Bandung, November 15, 2002Yours Sincerely,
Ir. Rinaldi Munir, M.Sc.Senior LecturerInformatics Engineering Department,Institute Technology of Bandung (ITB)Jl. Ganesha No. 10, Bandung 40132Email : [email protected] +62-22-2508135Indonesia
( b) Dokumen hendro.doc yang akandisembunyikan 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 201
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 warnanyadi 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 sedikitkadar warna hijau, dan perubahan ini tidak terdeteksi oleh mata manusia.
Bab 13_Steganografi dan Watermarking pada Citra Digital 205
(c) Hasil penyembunyian data( peppers.bmp + handshak.bmp):
(d) Berkas handshak-stega.bmp (44KB) 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 atyour university. My recommendation is basedon my experience as his lecturer in severalcourses 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 veryintelligent student and he cooperates very well
with his peers whenever they had to worktogether.
During his study, he showed diligence and
eagerness to achieve his goal. He sets very highstandard for himself and organizes himself very
well to achieve the standard. I am confidentthat if he can maintain his goal work, he should be able to complete the postgraduate programwell within the stipulated time.
I am sure that his abilities and his personalqualities along with his academic capabilitieswill help his to obtain his Master’s degree atyour university, which will be very useful for
Salah satu karya intelektual yang dilindungi adalah barang dalam bentuk digital,seperti software dan produk multimedia seperti teks, musik (dalam format MP3atau 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 produkdigital tersebut tentu dirugikan karena ia tidak mendapat royalti dari usaha penggandaan tersebut.
Sebenarnya masalah penyalahgunaan hak cipta pada bidang multimedia tidakhanya mengenai penggandaan dan pendistribusiannya saja, tetapi juga mengenailabel kepemilikan. Kebanyakan produk digital tersebut tidak mencantumkan siapa pemegang hak ciptanya. Kalaupun bukti kepemilikan itu ada, biasanya informasikepemilikan 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 dapatmenemukan informasi berupa teks, gambar, suara, dan video. Semua produkdigital tersebut dapat anda download dengan mudah. Anda pun juga dapatmempertukarkan data digital dengan layanan internet seperti e-mail .
Masalahnya, hampir semua data digital yang bertebaran di dunia internet tidakmencantumkan informasi pemiliknya. Seseorang yang telah mendapatkan produkdigital dapat mengklaim bahwa produk tersebut adalah hasil karyanya. Berhubungtidak ada bukti kepemilikan sebelumnya, maka klaim tersebut mungkin sajadipercaya.
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 , danwatermark dapat dianggap sebagai sidik digital (digital signature) dari pemilikyang sah atas produk multimedia tersebut. Dengan kata lain, watermark yangdisisipkan menjadi label hak cipta dari pemiliknya. Pemberian signature denganteknik watermarking ini dilakukan sedemikian sehingga informasi yangdisisipkan tidak merusak data digital yang dilindungi. Sehingga, seseorang yangmembuka produk multimedia yang sudah disisipi watermark tidak menyadarikalau di dalam data multimedia tersebut terkandung label kepemilikan pembuatnya.
Jika ada orang lain yang mengklaim bahwa produk multimedia yangdidapatkannya adalah miliknya, maka pemegang hak cipta atas karya multimediatersebut dapat membantahnya dengan mengekstraksi watermark dari dalam data
multimedia yang disengketakan. Watermark yang diekstraksi dibandingkan denganwatermark pemegang hak cipta. Jika sama, berarti memang dialah pemegang hakcipta produk multimedia tersebut.
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.
Encoding
kunci
Citra
Watermark
Citra ber-
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 manusiasukar membedakan mana gambar yang asli dan mana gambar yang sudah disisipi
Bab 13_Steganografi dan Watermarking pada Citra Digital 211
+
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.
Decoding
kunci
Citra yang
diuji
Citra asal
watermark
yang
terekstraksiPembandingan
watermark
asli
keputusan
Gambar 13.9 Proses verifikasi watermark pada citra digital
Gambar 15.5 (a) Primitif grammar kromosom, (b) pengkodean kromosom.
Contoh 15.2. [GON77] Pembentukan grammar dengan Picture Description
Language ( PDL) yang diusulkan oleh Shaw (1970). Lihat Gambar 15.6. Tata bahasa untuk mengenali bentuk “rumah” adalah G = ( N , ∑ , P , S ), yang dalam halini