Download - Modul Pengolahan Citra Full Bab
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 1/229
Bab 1_Pengantar Pengolahan Citra 1
Bab 1
Pengantar Pengolahan Citra
ata atau informasi tidak hanya disajikan dalam bentuk teks, tetapi juga
dapat berupa gambar, audio (bunyi, suara, musik), dan video. Keempat
macam data atau informasi ini sering disebut multimedia. Era teknologi
informasi saat ini tidak dapat dipisahkan dari multimedia. Situs web (website) di
Internet dibuat semenarik mungkin dengan menyertakan visualisasi berupa
gambar atau video yang dapat diputar. Beberapa waktu lalu istilah SMS (Short
Message Service) begitu populer bagi pengguna telepon genggam (handphone
atau HP). Tetapi, saat ini orang tidak hanya dapat mengirim pesan dalam bentuk
teks, tetapi juga dapat mengirim pesan berupa gambar maupun video, yang
dikenal dengan layanan MMS ( Multimedia Message Service).
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.
D
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 2/229
2 Pengolahan Citra Digital
1.1 Citra
Secara harafiah, citra (image) adalah gambar pada bidang dwimatra (dua
dimensi). Gambar 1.1 adalah citra seorang gadis model yang bernama Lena, dan
gambar di sebelah kanannya adalah citra kapal di sebuah pelabuhan. Ditinjau dari
sudut pandang matematis, citra merupakan fungsi menerus (continue) 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
terdiri atas ratusan sampai ribuan frame.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 3/229
Bab 1_Pengantar Pengolahan Citra 3
1.2 Definisi Pengolahan Citra
Meskipun sebuah citra kaya informasi, namun seringkali citra yang kita miliki
mengalami penurunan mutu (degradasi), misalnya mengandung cacat atau derau
(noise), warnanya terlalu kontras, kurang tajam, kabur (blurring ), dan sebagainya.
Tentu saja citra semacam ini menjadi lebih sulit diinterpretasi karena informasiyang disampaikan oleh citra tersebut menjadi berkurang.
Agar citra yang mengalami gangguan mudah diinterpretasi (baik oleh manusia
maupun mesin), maka citra tersebut perlu dimanipulasi menjadi citra lain yang
kualitasnya lebih baik. Bidang studi yang menyangkut hal ini adalah pengolahan
citra (image processing ).
Pengolahan citra adalah pemrosesan citra, khususnya dengan menggunakan
komputer, menjadi citra yang kualitasnya lebih baik. Sebagai contoh, citra burung
nuri pada Gambar 1.2 (a) tampak agak gelap, lalu dengan operasi pengolahan
citra kontrasnya diperbaiki sehingga menjadi lebih terang dan tajam (b).
Umumnya, operasi-operasi pada pengolahan citra diterapkan pada citra bila
[JAI89]:
1. perbaikan atau memodifikasi citra perlu dilakukan untuk meningkatkan
kualitas penampakan atau untuk menonjolkan beberapa aspek informasi yang
terkandung di dalam citra,
2. elemen di dalam citra perlu dikelompokkan, dicocokkan, atau diukur,
3. sebagian citra perlu digabung dengan bagian citra yang lain.
(a) (b)
Gambar 1.2. (a) Citra burung nuri yang agak gelap, (b) Citra burung yang telah diperbaiki kontrasnyasehingga terlihat jelas dan tajam
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 4/229
4 Pengolahan Citra Digital
Di dalam bidang komputer, sebenarnya ada tiga bidang studi yang berkaitan
dengan data citra, namun tujuan ketiganya berbeda, yaitu:
1. Grafika Komputer (computer graphics).
2. Pengolahan Citra (image processing ).
3. Pengenalan Pola ( pattern recognition/image interpretation).
Hubungan antara ketiga bidang (grafika komputer, pengolahan citra, pengenalan
pola) ditunjukkan pada Gambar 1.3.
citra citra
deskripsi deskripsi
Pengolahan Citra
Pengenalan
Pola
Grafika
Komputer
Gambar 1.3. Tiga bidang studi yang berkaitan dengan citra
Grafika Komputer bertujuan menghasilkan citra (lebih tepat disebut grafik atau
picture) dengan primitif-primitif geometri seperti garis, lingkaran, dan
sebagainya. Primitif-primitif geometri tersebut memerlukan data deskriptif untuk
melukis elemen-elemen gambar. Contoh data deskriptif adalah koordinat titik,
panjang garis, jari-jari lingkaran, tebal garis, warna, dan sebagainya. Grafika
komputer memainkan peranan penting dalam visualisasi dan virtual reality.
Grafika
Komputer
data
deskriptif citra
Contoh grafika komputer misalnya menggambar sebuah ‘rumah’ yang dibentuk
oleh garis-garis lurus, dengan data masukan berupa koordinat awal dan koordinat
ujung garis (Gambar 1.4).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 5/229
Bab 1_Pengantar Pengolahan Citra 5
Program:
Line(0, 0, 0, 40)
Line(0, 40, 60, 60)
Line(40, 60, 80, 40)
Line(0, 40, 80, 40)
Line(80, 40, 80, 0)
Line(80, 0, 0, 0)
Line(20, 0, 25, 25)
Line(25, 25, 35, 25)
Line(35, 25, 35, 0)
(a)
Gambar hasil:
(b)
Gambar 1.4. (a) Program Grafika Komputer untuk membuat gambar ‘rumah (b)
Pengolahan Citra bertujuan memperbaiki kualitas citra agar mudah diinterpretasi
oleh manusia atau mesin (dalam hal ini komputer). Teknik-teknik pengolahan
citra mentransformasikan citra menjadi citra lain. Jadi, masukannya adalah 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.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 6/229
6 Pengolahan Citra Digital
(a) (b)
Gambar 1.4. (a) Citra Lena yang mengandung derau, (b) hasil dari operasi penapisan derau.
Pengenalan Pola mengelompokkan data numerik dan simbolik (termasuk citra)
secara otomatis oleh mesin (dalam hal ini komputer). Tujuan pengelompokan
adalah untuk mengenali suatu objek di dalam citra. Manusia bisa mengenali objek
yang dilihatnya karena otak manusia telah belajar mengklasifikasi objek-objek di
alam sehingga mampu membedakan suatu objek dengan objek lainnya.
Kemampuan sistem visual manusia inilah yang dicoba ditiru oleh mesin.
Komputer menerima masukan berupa citra objek yang akan diidentifikasi,
memproses citra tersebut, dan memberikan keluaran berupa deskripsi objek di
dalam citra.
Pengenalan
Polacitra
deskripsi
objek
Contoh pengenalan pola misalnya citra pada Gambar 1.5 adalah tulisan tangan
yang digunakan sebagai data masukan untuk mengenali karakter ‘ A’. Dengan
menggunakan suatu algoritma pengenalan pola, diharapkan komputer dapat
mengenali bahwa karakter tersebut adalah ‘ A’.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 7/229
Bab 1_Pengantar Pengolahan Citra 7
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
mengingat persamaan [JAI95] berikut:
Vision = Geometry + Measurement + Interpretation (1.1)
Proses-proses di dalam computer vision dapat dibagi menjadi tiga aktivitas:
1. Memperoleh atau mengakuisisi citra digital.
2. Melakukan teknik komputasi untuk memperoses atau memodifikasi data citra
(operasi-operasi pengolahan citra).3. Menganalisis dan menginterpretasi citra dan menggunakan hasil pemrosesan
untuk tujuan tertentu, misalnya memandu robot, mengontrol peralatan,memantau proses manufaktur, dan lain-lain.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 8/229
8 Pengolahan Citra Digital
[SCH89] mengklasifikasikan proses-proses di dalam computer vision dalam
hirarkhi sebagai berikut :
Hirarkhi Pemrosesan Contoh Algoritma
preprocessing noise removalcontrast enhancement
lowest-level feature extraction edge detection
texture detection
intermediate-level feature connectivity
identification pattern matching
boundary coding
high-level scene interpretation model-base recognitionvia images
Dari penjelasan di atas, dapat kita lihat bahwa pengolahan citra dan pengenalan
pola merupakan bagian dari computer vision. Pengolahan citra merupakan proses
awal ( preprocessing ) pada computer vision, sedangkan pengenalan pola merupakan
proses untuk menginterpretasi citra. Teknik-teknik di dalam pengenalan pola
memainkan peranan penting dalam computer vision untuk mengenali objek.
Jika dihubungkan dengan grafika komputer, maka computer vision merupakan
kebalikannya. Grafika komputer membentuk (sintesis) citra, sedangkan computer
vision mengoraknya (analisis). Pada masa awal kedua bidang ini, tidak ada
hubungan antara keduanya, tetapi beberapa tahun belakangan kedua bidang
tersebut berkembang semakin dekat. Computer vision menggunakan representasi
kurva dan permukaan dan beberapa teknik lain dari grafika komputer, sedangkan
grafika komputer menggunakan teknik-teknik di dalam computer vision untuk
memuat citra realistik (virtual reality) [JAI95].
1.4 Operasi Pengolahan Citra
Operasi-operasi yang dilakukan di dalam pengolahan citra banyak ragamnya.
Namun, secara umum, operasi pengolahan citra dapat diklasifikasikan dalam
beberapa jenis sebagai berikut:
1. Perbaikan kualitas citra (image enhancement ).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 9/229
Bab 1_Pengantar Pengolahan Citra 9
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.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 10/229
10 Pengolahan Citra Digital
(a) (b)
Gambar 1.7 Kiri: Citra Lena yang kabur (blur), kanan: citra Lena setelah deblurring
3. Pemampatan citra (image compression).Jenis operasi ini dilakukan agar citra dapat direpresentasikan dalam 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)
sesudah dimampatkan.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 11/229
Bab 1_Pengantar Pengolahan Citra 11
4. Segmentasi citra (image segmentation).
Jenis operasi ini bertujuan untuk memecah suatu citra ke dalam beberapa
segmen dengan suatu kriteria tertentu. Jenis operasi ini berkaitan erat dengan
pengenalan pola.
5. Pengorakan citra (image analysis)
Jenis operasi ini bertujuan menghitung besaran kuantitif dari citra untuk
menghasilkan deskripsinya. Teknik pengorakan citra mengekstraksi ciri-ciri
tertentu yang membantu dalam identifikasi objek. Proses segmentasi
kadangkala diperlukan untuk melokalisasi objek yang diinginkan dari
sekelilingnya.
Contoh-contoh operasi pengorakan citra:
a. Pendeteksian tepi objek (edge detection)
b. Ekstraksi batas (boundary)
c. Representasi daerah (region)
Gambar 1.9 adalah contoh operasi pendeteksian tepi pada citra Camera.Operasi ini menghasilkan semua tepi (edge) di dalam citra.
(a) (b)
Gambar 1.9. (a) Citra camera, (b) citra hasil pendeteksian seluruh tepi
6. Rekonstruksi citra (image reconstruction)
Jenis operasi ini bertujuan untuk membentuk ulang objek dari beberapa citra
hasil proyeksi. Operasi rekonstruksi citra banyak digunakan dalam bidangmedis. Misalnya beberapa foto rontgen dengan sinar X digunakan untuk
membentuk ulang gambar organ tubuh.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 12/229
12 Pengolahan Citra Digital
1.5 Aplikasi Pengolahan Citra dan Pengenalan
Pola
Pengolahan citra mempunyai aplikasi yang sangat luas dalam berbagai bidang
kehidupan. Di bawah ini disebutkan beberapa aplikasi dalam beberapa bidang[MEN89].
1. Bidang perdagangan
(a) Pembacaan kode batang (bar code) yang tertera pada barang (umum
digunakan di pasar swalayan/supermarket).
(b) Mengenali huruf/angka pada suatu formulir secara otomatis.
2. Bidang militer
(a) Mengenali sasaran peluru kendali melalui sensor visual.
(b) Mengidentifikasi jenis pesawat musuh.
3. Bidang kedokteran(a) Pengolahan citra sinar X untuk mammografi (deteksi kanker payudara)
(b) NMR ( Nuclear Magnetic Resonance)
(c) Mendeteksi kelainan tubuh dari foto sinar X.
(d) Rekonstruksi foto janin hasil USG
4. Bidang biologi
Pengenalan jenis kromosom melalui gambar mikroskopik
5. Komunikasi data
Pemampatan citra yang ditransmisi.
6. HiburanPemampatan video ( MPEG)
7. Robotika
Visualy-guided autonomous navigation
8. Pemetaan
Klasifikasi penggunaan tanah melalui foto udara/LANDSAT
9. Geologi
Mengenali jenis batu-batuan melalui foto udara/LANDSAT
10. Hukum(a) Pengenalan sidik jari
(b) Pengenalan foto narapidana.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 13/229
Bab 1_Pengantar Pengolahan Citra 13
1.6 Citra Uji
Pada pembahasan operasi-operasi pengolahan citra, biasanya penulis buku/
literatur menggunakan beberapa contoh citra uji (test images) atau sampel.
Terdapat sejumlah citra yang sering dipakai di dalam literatur pengolahan citra
atau computer vision. Citra-citra tersebut banyak ditemukan di situs-situs 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
ukurannya, lebar × tinggi, dalam satuan pixel ):
Lena, 256 × 256 Peppers 512 × 512 Zelda 512 × 512
Bird 256 × 256 Camera 256 × 256 Mandrill 512 × 512
Barbara 512 × 512 Boat 512 × 512 Slope 256 × 256
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 14/229
14 Pengolahan Citra Digital
San Fransisco 256 × 256 Collie 256 × 256 Circle 256 × 256
Squares 256 × 256 Text 256 × 256 Mountain 640 × 480
Goldhill 512 × 512 Eltoro 512 × 512 Girl 256 × 256
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 15/229
Bab 2_Pembentukan Citra 15
Bab 2
Pembentukan Citra
itra ada dua macam: citra kontinu dan citra diskrit. Citra kontinu dihasilkan dari
sistem optik yang menerima sinyal analog, misalnya mata manusia dan
kamera analog. Citra diskrit dihasilkan melalui proses digitalisasi terhadap
citra kontinu. Beberapa sistem optik dilengkapi dengan fungsi digitalisasi sehingga
ia mampu menghasilkan citra diskrit, misalnya kamera digital dan scanner . Citra
diskrit disebut juga citra digital. Komputer digital yang umum dipakai saat ini
hanya dapat mengolah citra digital. Bab 2 ini berisi konsep pembentukan citra,
baik citra kontinu maupun citra digital.
2.1 Model Citra
Pada bagian kuliah yang pertama sudah dijelaskan bahwa citra merupakan fungsi
malar (kontinyu) dari intensitas cahaya pada bidang dwimatra. Secara matematis
fungsi intensitas cahaya pada bidang dwimatra disimbolkan dengan f ( x, y), yang
dalam hal ini:
( x, y) : koordinat pada bidang dwimatra
f ( x, y) : intensitas cahaya (brightness) pada titik ( x, y)
Gambar 2.1 memperlihatkan posisi koordinat pada bidang citra. Sistem koordinat
yang diacu adalah sistem koordinat kartesian, yang dalam hal ini sumbu mendatar
menyatakan sumbu- X , dan sumbu tegak menyatakan sumbu-Y .
C
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 16/229
16 Pengolahan Citra Digital
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.
Jadi,
f ( x, y) = i( x, y) ⋅ r ( x, y)
yang dalam hal ini,
0 ≤ i( x, y) < ∞
0 ≤ r ( x, y) ≤ 1
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 17/229
Bab 2_Pembentukan Citra 17
permukaan
sumber
cahaya
i(x,y)
normala
f(x,y)
sehingga
0 ≤ f ( x, y) < ∞
Gambar 2.2 Pembentukan Citra [PIT93]
Nilai i( x, y) ditentukan oleh sumber cahaya, sedangkan r ( x, y) ditentukan oleh
karakteristik objek di dalam gambar. Nilai r ( x, y) = 0 mengindikasikan penerapan
total, sedangkan r ( x, y) = 1 menyatakan pemantulan total. Jika permukaan
mempunyai derajat pemantulan nol, maka fungsi intensitas cahaya, f ( x, y), juga
nol. Sebaliknya, jika permukaan mempunyai derajat pemantulan 1, maka 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,
4. salju mempunyai r ( x, y) = 0.93.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 18/229
18 Pengolahan Citra Digital
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
dianggap sebagai fungsi [DUL97]:
f ( x, y)
≤≤
≤≤
≤≤
L f
N y
M x
0
0
0
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 19/229
Bab 2_Pembentukan Citra 19
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.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 20/229
20 Pengolahan Citra Digital
Penerok
Citra kontinu Citra digital
Gambar 2.3. Penerokan secara spasial
Terdapat perbedaan antara koordinat gambar (yang diterok) dengan koordinat
matriks (hasil digitalisasi). Titik asal (0, 0) pada gambar dan elemen (0, 0) 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]
Dalam hal ini,
i = x , 0≤
i ≤
N – 1 j = ( M – y) , 0 ≤ j ≤ M – 1
x = D x/ N increment
y = D y/ M increment
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 21/229
Bab 2_Pembentukan Citra 21
Contoh ukuran penerokan: 256 × 256 pixel , 128 × 256 pixel.
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
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 22/229
22 Pengolahan Citra Digital
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.
(a) 256 × 256 pixel (b) 128 × 128 pixel
(c) 64 × 64 pixel (d) 32 × 32 pixel
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 23/229
Bab 2_Pembentukan Citra 23
Langkah selanjutnya setelah proses penerokan adalah kuantisasi. Proses
kuantisasi membagi skala keabuan (0, L) menjadi G buah level yang dinyatakan
dengan suatu harga bilangan bulat (integer ), biasanya G diambil perpangkatan
dari 2,
G = 2
m
yang dalam hal ini,
G = derajat keabuan
m = bilangan bulat positif
Skala Keabuan Rentang Nilai Keabuan Pixel Depth
21 (2 nilai) 0, 1 1 bit
22 (4 nilai) 0 sampai 7 2 bit
23 (16 nilai) 0 sampai 15 3 bit
28 (256 nilai) 0 sampai 255 8 bit
Hitam dinyatakan dengan nilai derajat keabuan terendah, yaitu 0, sedangkan putih
dinyatakan dengan nilai derajat keabuan tertinggi, misalnya 15 untuk 16 level.
Jumlah bit yang dibutuhkan untuk mereprentasikan nilai keabuan pixel disebut
kedalaman pixel ( pixel depth). Citra sering diasosiasikan dengan kedalaman
pixel -nya. Jadi, citra dengan kedalaman 8 bit disebut juga citra 8-bit (atau citra
256 warna)
Pada kebanyakan aplikasi, citra hitam-putih dikuantisasi pada 256 level dan
membutuhkan 1 byte (8 bit) untuk representasi setiap pixel-nya (G = 256 = 28 ).
Citra biner (binary image) hanya dikuantisasi pada dua level: 0 dan 1. Tiap pixel
pada citra biner cukup direpresentasikan dengan 1 bit, yang mana bit 0 berarti
htam dan bit 1 berarti putih.
Besarnya daerah derajat keabuan yang digunakan menentukan resolusi kecerahan
dari gambar yang diperoleh. Sebagai contoh, jika digunakan 3 bit untuk
menyimpan harga bilangan bulat, maka jumlah derajat keabuan yang diperoleh
hanya 8, jika digunakan 4 bit, maka derajat keabuan yang diperoleh adalah 16
buah. Semakin banyak jumlah derajat keabuan (berarti jumlah bit kuantisasinya
makin banyak), semakin bagus gambar yang diperoleh karena kemenerusan
derajat keabuan akan semakin tinggi sehingga mendekati citra aslinya.
Gambar 2.7 mempelihatkan efek perbedaan kuantisasi citra Lena yang berukuran
256 × 256 pixel , masing-masing 256 level dan 128 level keabuan.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 24/229
24 Pengolahan Citra Digital
(a) 256 level (b) 128 level
Gambar 2.7. Citra Lena yang dikuantisasi pada 256 level dan 128 level
Penyimpanan citra digital yang diterok menjadi N × M buah pixel dan dikuantisasi
menjadi G = 2m level derajat keabuan membutuhkan memori sebanyak
b = N × M × m
bit. Sebagai contoh, menyimpan citra Lena yang berukuran dengan 512 × 512
pixel dengan 256 derajat keabuan membutuhkan memori sebesar 512 × 512 × 8
bit = 2048.000 bit.
Secara keseluruhan, resolusi gambar ditentukan oleh N dan m. Makin tinggi nilai
N (atau M ) dan m, maka citra yang dihasilkan semakin bagus kualitasnya
(mendekati citra menerus). Untuk citra dengan jumlah objek yang sedikit,
kualitas citra ditentukan oleh nilai m. Sedangkan untuk citra dengan jumlah objek
yang banyak, kualitasnya ditentukan oleh N (atau M ).
Seluruh tahapan proses digitalisasi (penerokan dan kuantisasi) di atas dikenal
sebagai konversi analog-ke-digital, yang biasanya menyimpan hasil proses di
dalam media penyimpanan.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 25/229
Bab 2_Pembentukan Citra 25
2.3 Elemen-elemen Citra Digital
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].
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 26/229
26 Pengolahan Citra Digital
5. Bentuk (shape)
Shape adalah properti intrinsik dari objek tiga dimensi, dengan pengertian bahwa
shape merupakan properti intrinsik utama untuk sistem visual manusia [BAL82].
Manusia lebih sering mengasosiasikan objek dengan bentuknya ketimbang
elemen lainnya (warna misalnya). Pada umumnya, citra yang dibentuk oleh mata
merupakan citra dwimatra (2 dimensi), sedangkan objek yang dilihat umumnya
berbentuk trimatra (3 dimensi). Informasi bentuk objek dapat diekstraksi dari
citra pada permulaaan pra-pengolahan dan segmentasi citra. Salah satu tantangan
utama pada computer vision adalah merepresentasikan bentuk, atau aspek-aspek
penting dari bentuk.
6. Tekstur (texture)
Tekstur dicirikan sebagai distribusi spasial dari derajat keabuan di dalam
sekumpulan pixel-pixel yang bertetangga [JAI95]. Jadi, tekstur tidak dapat
didefinisikan untuk sebuah pixel. Sistem vissual manusia pada hakikatnya tidak
menerima informasi citra secara independen pada setiap pixel , melainkan 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].
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 27/229
Bab 2_Pembentukan Citra 27
Digitizer Komputer
DigitalCitra
Media
Penyimpanan
PirantiTampilan
Gambar 2.8. Elemen pemrosesan citra
Operasi dari sistem pemrosesan citra tersebut dapat dibagi menjadi empat
kategori prinsip: digitalisasi, pemrosesan, penayangan, dan penyimpanan.
Digitizer (atau digital image acquisition system) merupakan sistem penangkap
citra digital yang melakukan penjelajahan citra dan mengkonversinya kerepresentasi numerik sebagai masukan bagi komputer digital. Hasil dari digitizer
adalah matriks yang elemen-elemennya menyatakan nilai intensitas cahaya pada
suatu titik. Contoh digitizer adalah kamera digital, scanner .
Digitizer terdiri dari tiga komponen dasar: sensor citra yang bekerja sebagai
pengukur intensitas cahaya, perangkat penjelajah yang berfungsi merekam hasil
pengukuran intensitas pada seluruh bagian citra, dan pengubah analog-ke-digital
yang berfungsi melakukan penerokan dan kuantisasi.
Komputer digital yang digunakan pada sistem pemroses citra dapat bervariasi
dari komputer mikro sampai komputer besar yang mampu melakukan bermacam-macam fungsi pada citra digital resolusi tinggi.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 28/229
28 Pengolahan Citra Digital
Piranti tampilan peraga berfungsi mengkonversi matriks intensitas yang
merepresentasikan citra ke tampilan yang dapat diinterpretasi oleh mata manusia.
Contoh piranti tampilan adalah monitor peraga dan pencetak ( printer ).
Media penyimpanan adalah piranti yang mempunyai kapasitas memori besarsehingga gambar dapat disimpan secara permanen agar dapat diproses lagi pada
waktu yang lain.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 29/229
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
sebagai berikut:
C
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 30/229
30 Pengolahan Citra Digital
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
Untuk citra dengan 256 derajat keabuan, harga setiap elemen matriks adalah
bilangan bulat di dalam selang [0, 255]. Karena itu, kita dapat menggunakan tipe
unsigned char untuk menyatakan tipe elemen matriks. Unsigned char adalah tipe
integer positif di dalam Bahasa C yang rentang nilainya hanya dari 0 sampai 255.
Kita dapat menggunakan matriks statik untuk merepresentasikan citra digital
secara fisik di dalam memori komputer sebagai berikut:
unsigned char f[N][M];
dengan N dan M sudah terdefinisi sebelumnya sebagai suatu konstant. Elemen
matriks diacu dengan f[i][j] , 0 ≤ i ≤ N – 1 dan 0 ≤ j ≤ M – 1.
Pada kebanyakan kasus, ukuran citra tidak diketahui sebelum pemrosesan
dilakukan. Ada kemungkinan ukuran citra yang akan diolah melebihi nilai N dan
M yang sudah ditetapkan di dalam deklarasi struktur data. Oleh karena itu,
representasi citra dengan struktur matriks statik menjadi tidak relevan. Tipe data
yang cocok untuk citra adalah pointer .
Tinjau tipe pointer untuk tabel atau larik (array). Di dalam Bahasa C, elemen
larik a[i] ekivalen dengan *(a+i). Tanda ‘*’ menyatakan pointer yangmenunjuk pada alamat suatu elemen di memori.
Larik yang berukuran N elemen dapat dibuat secara dinamik pada saat run-time
dengan prosedur alokasi malloc:
unsigned char *a;a=(unsigned char*) malloc (N * sizeof(unsigned char));
Pernyataan di atas berarti kita meminta komputer mengalokasikan memori untuk
elemen larik a sebanyak N elemen, setiap elemen panjangnya 1 byte (yaitu
panjang byte tipe unsigned char ). Nilai N dapat ditetapkan pada saat run-time.
Matriks dapat dianggap sebagai larik satu matra (matra = dimensi) dari vektor
seperti yang ditunjukkan pada Gambar 3.1. Pointer **a menunjuk ke larik
pointer *a[0], *a[1], …, *a[N-1], yang masing-masing larik menunjuk ke
baris-baris dari citra.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 31/229
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 31
*a[0] a[0][0] a[0][1] a[0][M-1]...
*a[1] a[1][0] a[1][1] a[1][M-1]...
*a[N-1] a[N-1][0] a[N-1][1] a[N-1][M-1]...
.
.
.
**a
Gambar 3.1. Representasi matriks dengan larik pointer [PIT93]
Dengan demikian, deklarasi matriks dinamis untuk citra f adalah sebagai berikut
ini:
unsigned char **f;
atau dengan menggunakan user defined type:
typedef unsigned char **citra;citra f;
Alokasi memori untuk matriks citra f yang berukuran N × M dilakukan pada saat
run-time dengan memanggil fungsi alokasi seperti yang ditunjukkan oleh
Algoritma 3.1.
citra alokasi(int N, int M)/* Mengalokasikan memori untuk citra f yang berukuran N x M pixel. */
{int i;
f=(unsigned char**)malloc(N * sizeof(unsigned char*));if (f==NULL) return(NULL); /* memori habis */for (i=0; i<N; i++){
f[i]=(unsigned char*)malloc(M*sizeof(unsigned char));if (f[i]==NULL){ /* memori habis, dealokasi semua elemen baris matriks */
dealokasi(f, N);return(NULL);
}}return f;
}
Algor i tma 3.1. Alokasi memori untuk matriks citra f
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 32/229
32 Pengolahan Citra Digital
Cara pemanggilan fungsi alokasi adalah dengan menampung keluaran fungsi
dalam peubah yang tipenya sama dengan tipe citra:
f = alokasi(N, M)
Untuk citra berwarna, yang mana setiap nilai intensitas merah, hijau, dan biru
disimpan di dalam matriks r, g, dan b, maka kita harus mengalokasikan memori
untuk ketiga buah matriks tersebut:
r = alokasi(N, M)g = alokasi(N, M)b = alokasi(N, M)
Bila citra selesai diproses, maka memori yang dipakai oleh citra tersebut
dikembalikan (dealokasi) kepada sistem. Dealokasi memori untuk matriks citra f
dapat dilakukan dengan memanggil fungsi dealokasi pada Algoritma 3.2.
void dealokasi(citra f, int N)/* Dealokasi memori dari citra f yang mempunyai N baris pixel */
{int i;
for (i=0; i<N; i++){
free(f[i]); /* bebaskan memori semua elemen pada baris i */}free(f);
}
Algor i tma 3.2. Dealokasi memori untuk dari citra f
Selain matriks yang merepresentasikan citra, kita mungkin memerlukan matriks
lain yang menyimpan nilai-nilai bertipe riil dan matriks yang menyimpan nilai-
nilai integer (yang rentang nilainya lebih besar daripada unsigned char ). Oleh
karena itu, kita perlu mendedinisikan dua tipe matriks lain sebagai berikut:
typedef float **rmatrik;typedef int **imatriks;
Selain menggunakan Algoritma 3.1, kita juga dapat menggunakan algoritma
pengalokasian memori untuk matriks secara umum (jadi, tidak hanya untuk
matriks citra yang bertipe unsined char saja) yang dibentuk pada saat run-time.
Algoritma pengalokasian memori matriks tersebut ditunjukkan pada Algoritma
3.3. Pada prinsipnya, cara pengalokasian memori untuk matriks pada algoritma
3.3 sama saja dengan Algoritma 3.1, hanya saja Algoritma 3.3 dapat digunakan
untuk mengalokasikan memori matriks yang bertipe apa saja. Dengan demikian,
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 33/229
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
elemen */for (i=0; i<N; i++)
larik[i] = (void*)xalloc(M * UkuranElemen);return larik;
}
void *xalloc(unsigned ukuran)
/* Mengalokasikan memori dan memeriksa apakah alokasi memori berhasil */{void *p = malloc(ukuran);if (p==NULL){
printf("Memori tidak cukup untuk alokasi matriks");exit(0);
}return p;
}
Algor i tm a 3.3. Alokasi memori untuk matriks bertipe sembarang
Untuk mengalokasikan memori untuk citra Image yang berukuran N × M elemen
dan setiap elemen bertipe unsigned char , perintahnya di dalam program adalah
sebagai berikut:
Image = (unsigned char**) alokasi (N, M, sizeof(unsined char));
Sedangkan untuk mengalokasikan memori matriks Mat yang berukuran N × M
elemen dan setiap elemen bertipe float , perintahnya di dalam program adalah
sebagai berikut:
Mat = (float**) alokasi (N, M, sizeof(float));
Sebagai catatan, semua algoritma alokasi dan dealokasi matriks yang berbasis
stuktur data pointer harus menyertakan pustaka alloc.h di dalam programnya:
#include <alloc.h>
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 34/229
34 Pengolahan Citra Digital
j
i
f (i, j)
(0,0) x
y
f ( x, y)
(0,0)
Koordinat citra Koordinat layar
3.2 Menampilkan Citra ke Layar
Citra ditampilkan ke layar peraga jika card grafik tersedia pada komputer yang
digunakan dan card tersebut mampu menghasilkan warna untuk setiap komponen
RGB ( Red , Green, Blue). Fungsi baku untuk menampilkan citra adalahsetpixel:
setpixel(unsigned char r,unsigned char g, unsigned char b,int i,int j);
/* menampilkan pixel dengan komponen rgb pada koordinat i, j */
Prosedur menampilkan citra berwarna yang setiap intensitas merah, hijau, dan
biru disimpan di dalam matriks r, g, dan b selengkapnya ditunjukkan pada
Algoritma 3.4.
void tampilkan_citra(citra r,citra g,citra b, int N,int M)/* Menampilkan citra yang berukuran N x M pixel ke layar. */{ int i, j;
for (i=0; i<N; i++)for (j=0; j<M; j++)
setpixel(r[i][j],g[i][j],b[i][j],j,i);}
Algor i tma 3.4. Prosedur menampilkan citra ke layar
Jika citra yang ditampilkan adalah citra hitam-putih (matriks intensitas pixel -nya
adalah f ), maka perubahan yang dilakukan adalah pada:
setpixel(f[i][j],f[i][j],f[i][j], j, i);
Pixel (i, j) ditampilkan pada posisi ( j,i) di layar karena perbedaan sistem koordinat
yang digunakan pada representasi citra dan layar peraga (lihat Gambar 3.2).
Gambar 3.2. Perbedaan antara koordinat citra dan koordinat layar
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 35/229
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 35
Prosedur menampilkan citra pada platform Windows berbeda dengan prosedur di
atas. Algoritma 3.5 berikut ini adalah prosedur menampilkan citra hitam-putih
dengan 256 derajat keabuan di lingkungan Windows.
void WIN_tampilkan_citra(citra Image, int N, int M)/* Menampilkan citra Image yang berukuran N x M di lingkungan Windows */{
HDC MemDC; /* Handle ke memory device context */HBITMAP mbitmap; /* Handle ke citra */HWND hwnd; /* Handle ke window */COLORREF TabelWarna[256]; /* Tabel warna (palet) */int i, j, palet;
hwnd = GetActiveWindow();MemDC = CreateCompatibleDC(GetDC(hwnd));mbitmap = CreateCompatibleBitmap(GetDC(hwnd),M,N);
SelectObject(MemDC,mbitmap);
/* Definisikan palet */for (i=0; i<256; i++)
TabelWarna[i]=GetNearestColor(MemDC, RGB(i,i,i));
/* Isikan pixel ke memori device (layar) */for (i=0; i<N; i++)
for (j=0; j<M; j++){
palet = Image[i][j];SetPixelV(MemDC,j,i,TabelWarna[palet]);
}
/* Tembakkan citra ke layar */BitBlt(GetDC(hwnd),0,0,M,N,MemDC,0,0,SRCCOPY);
}
Algor i tma 3.5. Prosedur menampilkan citra hitam-putih ke layar di lingkungan Windows.
Jika citra yang ditampilkan adalah citra berwarna (matriks intensitas pixel -nya
masing-masing adalah r , g , dan b), maka perubahan yang dilakukan adalah
sebagai berikut:
for (i=0; i<N; i++)for (j=0; j<M; j++){
palet = GetNearestColor(MemDC, RGB(b[i][j], g[i][j], r[i][j]);SetPixelV(MemDC, j, i, palet);
}
/* Tembakkan citra ke layar */BitBlt(GetDC(hwnd), 0, 0, M, N, MemDC, 0, 0, SRCCOPY);
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 36/229
36 Pengolahan Citra Digital
3.3 Membaca Citra dari Arsip
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].
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 37/229
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 37
void baca_citra_dari_arsip(char nama_arsip[], citra f)/* Membaca citra dari arsip nama_arsip. Citra hasil pembacaan disimpan di
dalam matriks f.
*/{
FILE *fp;
int i, j;unsigned short int N, M;
if((fp=fopen(nama_arsip, “rb”))==NULL){printf(“Arsip tidak ada”);exit(0);
}fread(&N, sizeof(unsigned short int), 1, fp); /* baca tinggi citra */fread(&M, sizeof(unsigned short int), 1, fp); /* baca lebar citra */
f = alokasi(N, M) /* alokasi memori matriks untuk citra f */if(f==NULL){ printf(“Memori tidak cukup”);
exit(0);}
/* baca data citra baris demi baris */for(i=0; i<N; i++)
{/* baca data citra baris ke-i */fread(f[i], sizeof(citraunsigned char), M, fp);
}close(fp);
}
Algor i tma 3.6. Prosedur membaca citra dari arsip.
3.4 Menyimpan Citra ke dalam Arsip
Operasi menyimpan citra ke dalam arsip merupakan kebalikan dari operasi arsip.
Citra disimpan di dalam dengan susunan yang sama seperti pada Gambar 3.3.
Algoritma 3.7 berisi prosedur menyimpan citra ke dalam arsip. Ukuran citra ( N
dan M ) disimpan pada awal arsip. Selanjutnya, data citra disimpan baris per baris
pixel .
void tulis_citra_ke_arsip(char nama_arsip[], citra f)/* Menulis citra f ke dalam arsip nama_arsip. */{
FILE *fp;int i, j;unsigned short int N, M;
if((fp=fopen(nama_arsip, “wb”))==NULL){printf(“Arsip tidak dapat dibuat”);
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 38/229
38 Pengolahan Citra Digital
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
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 39/229
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
← 14 byte →← 12 s/d 64 byte →← 0 s/d 1024 byte →← N byte →
Gambar 3.4. Format berkas bitmap
Ukuran header berkas sama untuk semua versi, yaitu 14 byte. Tabel 3.1
memperlihatkan field - field penyusun header berkas. Ukuran header bitmap
berbeda-beda untuk setiap versi. Untuk berkas bitmap versi lama, header bitmap
berukuran 12 byte (Tabel 3.2), untuk berkas bitmap versi baru dari Microsoft
Windows, header bitmap berukuran 40 (Tabel 3.3), dan untuk berkas bitmap versi
baru dari IBM OS/2, header bitmap berukuran 64 byte (Tabel 3.4).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 40/229
40 Pengolahan Citra Digital
Tabel 3.1. Header berkas bitmap (panjang = 14 byte)
Byte ke- Panjang (byte ) Nama Keterangan
1 – 2 2 BmpType Tipe berkas bitmap:
BA = bitmap array, CI = icon BM = bitmap, CP = color pointer PT = pointer
3 – 6 4 BmpSize Ukuran berkas bitmap
7 – 8 2 XhotSpot X hotspot untuk kursor
9 – 10 2 YhotSpot Y hotspot untuk kursor
11 – 14 4 OffBits Ofset ke awal data bitmap (dalam byte)
Tabel 3.2. Header bitmap versi lama dari Microsoft Windows (12 byte)
Byte ke- Panjang (byte ) Nama Keterangan
1 – 4 4 HdrSize Ukuran header dalam satuan byte
5 – 6 2 Width Lebar bitmap dalam satuan pixel
7 – 8 2 Height Tinggi bitmap dalam satuan pixel
9 – 10 2 Planes Jumlah plane (umum- nya selalu satu)
11 – 12 2 BitCount Jumlah bit per pixel
Tabel 3.3. Header bitmap versi baru dari Microsoft Windows (40 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 (umum- nya 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
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 41/229
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
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 42/229
42 Pengolahan Citra Digital
bernilai sama dengan data bitmap pixel tersebut. Jadi, pixel dengan nilai data
bitmap 129, memiliki nilai R = 129, G = 129, dan B = 129.
<header berkas>
<header bitmap>
< palet warna RGB>
R G B
1 20 45 24
2 14 13 16
3 12 17 15
…
256 46 78 25
<data bitmap>
2 2 1 1 1 3 5 …
Gambar 3.5. Format citra 8-bit (256 warna)
Berkas citra 24-bit (16,7 juta warna) tidak emmpunyai 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.
Contoh format citra 24-bit (16 juta warna) kira-kira seperti pada Gambar 3.6.
Pada contoh format citra 24-bit tersebut pixel pertama mempunyai R = 20, G =
19, B = 21, pixel kedua mempunyai R = 24, G = 24, B = 23. Demikian seterusnya
<header berkas>
<header bitmap>
<data bitmap>
20 19 21 24 24 23 24 …
Gambar 3.6. Format citra 24-bit (16,7 juta warna)
Tabel 3.5 memperlihatkan panjang informasi palet untuk setiap versi bitmap,
masing-masing untuk citra 16 warna, 256 warna, dan 16,7 juta warna.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 43/229
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 43
Tabel 3.5. Panjang informasi palet untuk setiap versi berkas bitmap
Citra m warna Versi lama(Windows )
Versi baru(Windows )
Versi baru
(OS/2)
Citra 16 warna 48 byte 64 byte 64 byte
Citra 256 warna 768 byte 1024 byte 1024 byte
Citra 16,7 juta warna 0 byte 0 byte 0 byte
3.6 Primitif Citra Bi tmap
Meskipun saat ini kakas pemrograman visual (visual programming ) seperti Visual
C++, Delphi, Borland C++ Builder , dan lain-lain, sudah banyak memberikan
kemudahan untuk memprogram citra bitmap (dengan menyediakan komponen,struktur data, dan metode-metode untuk mengkases citra bitmap), namun ada
baiknya kita membuat sendiri primitif-primitif citra bitmap. Primitif tersebut
adalah berupa fungsi dan prosedur untuk membaca citra dari arsip, menyimpan
citra ke dalam arsip, dan menampilkan citra ke layar.
Berikut ini diberikan beberapa primitif citra bitmap. Citra bitmap yang ditangani
hanyalah citra dengan kedalaman 8-bit (256 warna) dan citra 24-bit (16,7 juta
warna), baik berupa citra skala-abu maupun citra berwarna. Citra biner (1-bit)
tidak ditangani di sini karena citra biner dimampatkan dengan metode RLE ( Run
Length Encoding ). Hingga bab 3 ini kita belum membicarkan metode
pemampatan citra. Pembahasan mengenai metode RLE dapat anda baca di dalamBab 10.
1. Berkas header
Nama arsip: bitmap.h
Penjelasan: Berkas header berisi struktur data untuk citra bitmap
#ifndef bitmap_H#define bitmap_H
#include <stdio.h>#include <io.h>
#include <stdlib.h>#include <alloc.h>
/* maksimum derajat keabuan */#define DERAJAT_KEABUAN 255
/* tipe data citra bitmap 8-bit */#define TIPE_CITRA unsigned char
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 44/229
44 Pengolahan Citra Digital
/* tipe data citra bitmap 24-bit */typedef struct{
unsigned char R;unsigned char G;unsigned char B;
} TIPE_CITRA24BIT;
TIPE_CITRA **Image; /* Matriks bitmap citra 8-bit */TIPE_CITRA24BIT **Image24bit; /* Matriks bitmap citra 24-bit */
/* HEADER BERKAS CITRA BMP, ada dua macam, yaitu header arsipdan header data bitmap (BMP) */
/* 1. Header arsip */unsigned char TipeBMP1;unsigned char TipeBMP2;
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;
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 45/229
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 45
unsigned int Ukuran1BMPvOS2;unsigned int Ukuran2BMPvOS2;unsigned int PengkodeanWarnaBMPvOS2;unsigned int PenciriBMPvOS2;
/* 3. Informasi palet */typedef struct{
unsigned char R;unsigned char G;unsigned char B;
} RGBvLama;
typedef struct{
unsigned char R;unsigned char G;
unsigned char B;unsigned char cadangan;
} RGBvBaru;
/* peubah-peubah bantu */RGBvLama *paletVlama;RGBvBaru *paletVbaru;int lebar, tinggi, jumlahpalet, jumlahbit;char* NamaArsip;
/* 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.
void BacaBerkasCitra(char *NamaArsip)
/* Membaca citra bitmap dari arsip */{
FILE *fp; /* berkas masukan */int i, j;
fp=fopen(NamaArsip,"rb");
/* Baca header berkas citra masukan */
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 46/229
46 Pengolahan Citra Digital
BacaHeader(fp);
/* Alokasi memori untuk citra */if (jumlahbit == 8) /* citra 8 bit */
AlokasiMemoriCitra(lebar, tinggi);else
if (jumlahbit == 24) /* citra 24 bit */AlokasiMemoriCitra24Bit(lebar, tinggi);
else{printf(“Tidak menangani citra selain 8-bit dan 24-bit”);exit(0);
}
/* baca seluruh pixel citra */BacaDataBitmap(fp, lebar, tinggi);fclose(fp);
/* Tampilkan citra yang sudah dibaca dari arsip */TampilkanCitra(lebar, tinggi);
}
Algor i tm a 3.9. Membaca citra dari arsip.
3. Membaca header berkas bitmap.
Nama fungsi: BacaHeader(FILE *fp)
Include: bitmap.h
Penjelasan: Fungsi untuk membaca header berkas bitmap.
void BacaHeader(FILE *fp)/* Membaca header berkas citra BMP. fp adalah berkas citra yangdimampatkan. */{
/* 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 */
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 47/229
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 47
jumlahbit = (int) JumlahBitBMPvLama; /* kedalaman warna */}else{if (UkuranHeader==40) /* berkas BMP versi Windows */ {
/* baca hader BMP versi Windows */fread(&LebarBMPvBaru,sizeof(unsigned int),1,fp);
fread(&TinggiBMPvBaru,sizeof(unsigned int),1,fp);fread(&BidangBMPvBaru,sizeof(unsigned short int),1,fp);fread(&JumlahBitBMPvBaru,sizeof(unsigned short int),1,fp);fread(&MampatBMPvBaru,sizeof(unsigned int),1,fp);fread(&UkuranCitraBMPvBaru,sizeof(unsigned int),1,fp);fread(&ResolusiHorizontalBMPvBaru,sizeof(unsigned int),1,fp);fread(&ResolusiVertikalBMPvBaru,sizeof(unsigned int),1,fp);fread(&WarnaTerpakaiBMPvBaru,sizeof(unsigned int),1,fp);fread(&WarnaPentingBMPvBaru,sizeof(unsigned int),1,fp);
tinggi = (int) TinggiBMPvBaru; /* tinggi citra */lebar = (int) LebarBMPvBaru; /* lebar citra */ jumlahbit = (int) JumlahBitBMPvBaru; /* kedalaman pixel */
}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);
fread(&Ukuran1BMPvOS2,sizeof(unsigned int),1,fp);fread(&Ukuran2BMPvOS2,sizeof(unsigned int),1,fp);fread(&PengkodeanWarnaBMPvOS2,sizeof(unsigned int),1,fp);fread(&PenciriBMPvOS2,sizeof(unsigned int),1,fp);
tinggi = (int) TinggiBMPvOS2; /* tinggi citra */lebar = (int) LebarBMPvOS2; /* lebar citra */jumlahbit = (int) JumlahBitBMPvOS2; /* kedalaman warna */
}}
/* baca palet */if (UkuranHeader==12) /* citra BMP versi lama */{
jumlahpalet = 1 << JumlahBitBMPvLama; /* 2^JumlahBitBMPvLama */paletVlama = (RGBvLama*) malloc (jumlahpalet*sizeof(RGBvLama));
fread(paletVlama,sizeof(RGBvLama),jumlahpalet,fp);}else /* citra BMP versi baru */
if (UkuranHeader==40)
{if (JumlahBitBMPvBaru != 24){if (WarnaTerpakaiBMPvBaru == 0)
jumlahpalet = 1 << JumlahBitBMPvBaru;else
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 48/229
48 Pengolahan Citra Digital
jumlahpalet = WarnaTerpakaiBMPvBaru;
paletVbaru = (RGBvBaru*) malloc (jumlahpalet*sizeof(RGBvBaru));fread(paletVbaru,sizeof(RGBvBaru),jumlahpalet,fp);
}}else
if (UkuranHeader==64)
{if (JumlahBitBMPvOS2 != 24){
if (WarnaTerpakaiBMPvOS2 == 0)jumlahpalet = 1 << JumlahBitBMPvOS2;
elsejumlahpalet = WarnaTerpakaiBMPvOS2;
paletVbaru = (RGBvBaru*)malloc(jumlahpalet*sizeof(RGBvBaru));
fread(paletVbaru,sizeof(RGBvBaru),jumlahpalet,fp);}
}}
else{printf("Bukan berkas citra bitmap");exit(0);
}}
Algor i tm a 3.10. Pembacaan header berkas bitmap.
4. Membaca data bitmap.
Nama fungsi: BacaDataBitmap(FILE *fp, int N, int M)
Include: bitmap.h Penjelasan: Fungsi untuk membaca data bitmap.
void BacaDataBitmap(FILE *fp, int N, int M)/* Membaca data pixel dari berkas masukan fp untuk citra yang berukuran Nx M */{
int i, j, k;
switch (jumlahbit){
case 8:{
for (i=N-1; i>=0; i--)/* Baca pixel per baris */
if (fread(Image[i],sizeof(TIPE_CITRA),M,fp)!= (unsigned int)M){
printf("Data bitmap tidak lengkap");
exit(0);}
break;}case 24:{
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 49/229
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 49
for (i=N-1; i>=0; i--)/* Baca pixel per baris */if (fread(Image24bit[i],sizeof(TIPE_CITRA24BIT),M,fp)!= (unsigned
int)M){
printf("Data bitmap tidak lengkap");exit(0);
}
break;}default:{
printf("Bukan format citra 8 atau 24 bit");exit(0);
}}
}
Algor i tm a 3.11. Pembacaan header berkas bitmap.
5. Menampilkan citra ke layar.
Nama fungsi: TampilkanCitra(int N, int M)
Include: bitmap.h
Penjelasan: Fungsi untuk menampilkan citra ke layar .
void TampilkanCitra(int N, int M)/* Menampilkan citra yang berukura N x M ke layar */{
COLORREF TabelWarna[256]; /* Tabel warna (palet) citra BMP */HDC MemDC; /* Handle ke memory device context */
HBITMAP mbitmap; /* Handle ke citra */ HWND hwnd; /* Handle ke window */
int palet, /* indeks palet pixel */ i, j;
hwnd = GetActiveWindow();MemDC = CreateCompatibleDC(GetDC(hwnd));
mbitmap = CreateCompatibleBitmap(GetDC(hwnd), M, N);SelectObject(MemDC, mbitmap);
switch (jumlahbit){
case 8:{
/* Definisikan palet */for (i=0; i<jumlahpalet; i++){
if (UkuranHeader==40 ||UkuranHeader==64) /* bitmap versi baru */TabelWarna[i]=GetNearestColor(MemDC, RGB(paletVbaru[i].B,
paletVbaru[i].G,paletVbaru[i].R));
else /*UkuranHeader=12, bitmap versi lama */TabelWarna[i]=GetNearestColor(MemDC, RGB(paletVlama[i].B,
paletVlama[i].G,paletVlama[i].R));
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 50/229
50 Pengolahan Citra Digital
}/* Isikan pixel ke memori device (layar) */for (i=0; i<N; i++)
for (j=0; j<M; j++){ palet = Image[i][j];
SetPixelV(MemDC, j, i, TabelWarna[palet]);}
/* Tembakkan citra ke layar */BitBlt(GetDC(hwnd), 0, 0, M, N, MemDC, 0, 0, SRCCOPY);break;
}case 24:{
for (i=0; i<N; i++)for (j=0; j<M; j++){ palet = GetNearestColor(MemDC, RGB(Image24bit[i][j].B,
Image24bit[i][j].G,Image24bit[i][j].R));
SetPixelV(MemDC, j, i, palet);}
/* Tembakkan citra ke layar */BitBlt(GetDC(hwnd), 0, 0, M, N, MemDC, 0, 0, SRCCOPY);
}}
}
Algor i tm a 3.12. Menampilkan citra ke layar.
6. Alokasi/dealoaksi memori matriks (citra).
Nama fungsi: a. AlokasiMemoriCitra(int N, int M)
b. AlokasiMemoriCitra24Bit(int N, int M) c. **alokasi(int N, int M, int UkuranElemen)
d. *xalloc(unsigned ukuran)
e. DealokasiMemoriCitra(int N, int jumlahbit)
Include: bitmap.h
Penjelasan: Fungsi-fungsi untuk alokasi/dealokasi memori matriks.
void AlokasiMemoriCitra(int N, int M, int jumlahbit)/* Mengalokasikan memori untuk citra 8-bit yang berukuran N x M */{
Image = (TIPE_CITRA**) alokasi (N, M, sizeof(TIPE_CITRA));}
void AlokasiMemoriCitra24Bit(int N, int M, int jumlahbit)/* Mengalokasikan memori untuk citra 24-bit yang berukuran N x M */{
Image24bit = (TIPE_CITRA24BIT**) alokasi (N, M, sizeof(TIPE_CITRA24BIT));
}
void *xalloc(unsigned ukuran)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 51/229
Bab 3_Struktur Data untuk Citra Digital dan Format Citra Bitmap 51
/* Mengalokasikan memori dan memeriksa apakah alokasi memori berhasil */{
void *p = malloc(ukuran);if (p==NULL){
printf("Memori tidak cukup untuk alokasi matriks");exit(0);
}
return p;}
void **alokasi(int N, int M, int UkuranElemen)/* Mengalokasi memori untuk matriks yang berukuran N x M. Setiap elemenmartiks
berukuran UkuranElemen byte.
*/{
int i;void **larik = (void**)xalloc(N * sizeof(void *));
for (i=0; i<N; i++)larik[i] = (void*)xalloc(M * UkuranElemen);
return larik;}
void DealokasiMemoriCitra(int N, int jumlahbit)/* Mengembalikan memori yang digunakan oleh matriks */{
int i;
if (jumlahbit!=24){
for (i=0; i<N; i++)
{free(citra[i]);}free(citra);
}else{
for (i=0; i<N; i++)
{
free(citra24bit[i]);}free(citra24bit);
}}
Alg ori tm a 3.13. Alokasi/dealokasi memori matr iks.
Gambar 3.7 adalah contoh antarmuka program yang membaca dan menampilkan
citra bitmap ke layar, dengan menggunakan primitif-primitif bitmap yang sudah
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 52/229
52 Pengolahan Citra Digital
disebutkan di atas. Program dibuat dengan Borland C++ Bulder 6 dan diberi
nama SimpleView. Pengguna membuka citra bitmap dengan memilih nama berkas
citra dari daftar arsip. Citra bitmap yang dibuka kemudian ditampilkan ke layar.
Contoh citra yang ditampilkan adalah citra girl .
Gamb ar 3.7 Program SimpleView untuk membuka dan menampilkan citra bitmap(dibuat dengan Borland C++ Builder)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 53/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 41
Bab 4
Operasi-operasi Dasar Pengolahan
Citra Dijital
itra dijital direpresentasikan dengan matriks. Operasi pada citra dijital pada
dasarnya adalah memanipulasi elemen-elemen matriks. Elemen matriks
yang dimanipulasi dapat berupa elemen tunggal (sebuah pixel ),
sekumpulan elemen yang berdekatan, atau keseluruhan elemen matriks. Di dalam
bab ini akan diuraikan operasi-operasi dasar pada pengolahan citra dijital.
4.1 Aras Komputasi
Operasi-operasi yang dilakukan pada pengolahan citra dapat dikelompokkan ke
dalam empat aras (level ) komputasi, yaitu aras titik, aras lokal, aras global, dan
aras objek [JAI95]. Kita mulai pembahasan komputasi pada aras titik.
1. Aras TitikOperasi pada aras titik hanya dilakukan pada pixel tunggal di dalam citra. Operasi
titik dikenal juga dengan nama operasi pointwise. Operasi ini terdiri dari
pengaksesan pixel pada lokasi yang diberikan, memodifikasinya dengan operasi
operasi lanjar (linear ) atau nirlanjar (nonlinear ), dan menempatkan nilai pixel
baru pada lokasi yang bersesuaian di dalam citra yang baru. Operasi ini diulangiuntuk keseluruhan pixel di dalam citra.
Secara matematis, operasi pada aras titik dinyatakan sebagai (Gambar 4.1):
f B( x, y) = Otitik { f A( x, y)} (4.1)
C
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 54/229
42 Pengolahan Citra Digital
yang dalam hal ini f A dan f B masing-masing adalah citra masukan dan citra
keluaran, Otitik dapat berupa operasi lanjar (linear ) atau nirlanjar (nonlinear ).
Yang dimaksud dengan operasi lanjar adalah operasi yang dapat dinyatakan
secara matematis sebagai persamaan lanjar, kebalikannya adalah persamaan
nirlanjar.
Otitik
{ f ( x, y)}
Gambar 4.1 Operasi aras titik pada citra dijital.
Operasi pada aras titik dapat dibagi menjadi tiga macam: berdasarkan intensitas, berdasarkan geometri, atau gabungan keduanya.
a. Berdasarkan intensitas.
Nilai intensitas u suatu pixel diubah dengan transformasi h menjadi nilai
intensitas baru v:
v = h(u), u, v ∈ [0, L] (4.2)
Contoh operasi titik berdasarkan intensitas adalah operasi pengambangan
(thresholding ). Pada operasi pengambangan, nilai intensitas pixel dipetakan ke
salah satu dari dua nilai, a1 atau a2, berdasarkan nilai ambang (threshold ) T :
f ( x, y)’ =
≥
<
T y x f a
T y x f a
),(,
),(,
2
1 (4.3)
Jika a1 = 0 dan a2 = 1, maka operasi pengambangan mentransformasikan citra
hitam-putih ke citra biner. Dengan kata lain, nilai intensitas pixel semula
dipetakan ke dua nilai saja: hitam dan putih. Nilai ambang yang dipakai dapat
berlaku untuk keseluruhan pixel atau untuk wilayah tertentu saja (berdasarkan
penyebaran nilai intensitas pada wilayah tersebut).
Operasi pengambangan pada citra Lena dengan fungsi transformasi:
f ( x, y)’ =
≥<
128),(,1
128),(,0
y x f
y x f (4.4)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 55/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 43
menghasilkan citra biner seperti yang diperlihatkan pada Gambar 4.2(a).
Persamaan 4.4 menyatakan bahwa pixel-pixel yang nilai intensitasnya di bawah
128 diubah menjadi hitam (nilai intensitas = 0), sedangkan pixel-pixel yang nilai
intensitasnya di atas 128 diubah menjadi putih (nilai intensitas = 1) . Algoritma
transformasi citra hitam-putih menjadi citra biner ditunjukkan oleh Algoritma 4.1.
(a) (b)
Gambar 4.2. (a) Citra biner Lena, (b) citra negatif Lena
void biner(citra A, citra_biner B, int T, int N, int M)/* Membuat citra biner dari citra A berdasarkan nilai ambang (threshold)
T yang dispesifikasikan. Ukuran citra adalah N × M. citra_biner adalahtipe data untuk citra biner).*/{ int i, j;citra_biner B;
for (i=0; i<=N-1; i++)for (j=0; j<=M-1; j++){if (A[i][j] < T)
B[i][j] = 0;else
B[i][j] = 1; /* atau diisi dengan 255 pada citra 8-bit */}
}
Algoritma 4.1. Mengubah citra A menjadi citra biner.
Contoh operasi titik yang lain adalah:
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 56/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 57/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 45
(iii) Pencerahan citra (image brightening )
Kecerahan citra dapat diperbaiki dengan menambahkan (atau mengurangkan)
sebuah konstanta kepada (atau dari) setiap pixel di dalam citra.
Secara matematis operasi ini ditulis sebagai
f ( x, y)’ = f ( x, y) + b (4.8)
Jika b positif, kecerahan citra bertambah, sebaliknya jika b negatif kecerahan
citra berkurang. Lihat contoh pencerahan citra pada Gambar 4.3 yang
diterapkan pada citra Zelda. Semula citra Zelda tampak gelap, tetapi dengan
menambahkan setiap nilai pixel dengan b = 10, citra Zelda menjadi lebih
terang.
Persamaan 4.8 mengisyaratkan bahwa operasi pencerahan citra dapat
menghasilkan nilai di bawah nilai intensitas minimum atau d atas nilai
intensitas maksimum. Oleh karena itu, operasi clipping perlu diterapkan.
Algoritma pencerahan citra ntuk citra dengan 256 derajat keabuanditunjukkan oleh Algoritma 4.3.
void brightening(citra A, int b, citra B, int N, int M)
/* Pencerahan citra dengan cara menjumlahkan setiap pixel di dalam citra
A dengan sebuah skalar b. Hasil disimpan di dalam citra B. Citra A
berukuran N × M.
*/
{ int i, j, temp;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
temp = A[i][j] + b;
/* clipping */
if (temp < 0)
B[i][j] = 0;
else
if (temp > 255)
B[i][j]=255;
else
B[i][j]=temp;
}
}
Algoritma 4.3. Pencerahan citra
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 58/229
46 Pengolahan Citra Digital
Gambar 4.3. Kiri: citra Zelda (agak gelap); kanan: citra Zelda setelah operasi pencerahan
b. Berdasarkan geometri.
Posisi pixel diubah ke posisi yang baru, sedangkan intensitasnya tidak berubah.
Contoh operasi titik berdasarkan geometri misalnya pemutaran (rotasi), pergeseran
(translasi), penskalaan (dilatasi), pembetulan erotan (distorsi) geometri (akan
dijelaskan kemudian).
c. Gabungan intensitas dan geometri.
Operasi ini tidak hanya mengubah nilai intensitas pixel , tapi juga mengubah
posisinya. Misalnya image morphing , yaitu perubahan bentuk objek beserta nilai
intensitasnya.
2. Aras LokalOperasi pada aras lokal menghasilkan citra keluaran yang intensitas suatu pixel
bergantung pada intensitas pixel - pixel tetangganya (Gambar 4.4).
f B( x, y)’ = Olokal{ f A( xi, y j); ( xi, y j) ∈ N ( x, y) } (4.9)
(keterangan: N = neighborhood , yaitu pixel-pixel yang berada di sekitar ( x, y) )
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 59/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 47
Olokal
{ f ( xi, y
i), ( x
i, yi) pixel
di sekitar ( x, y)}
Gambar 4.4. Operasi aras lokal
Contoh operasi beraras lokal adalah operasi konvolusi untuk mendeteksi tepi
(edge detection) dan pelembutan citra (image smoothing ). Gambar 4.5 adalah
citra Lena hasil pendeteksian tepi. Konsep pendeteksian tepi dan penghalusan
citra masing-masing akan dibahas di dalam Bab 8 dan Bab 7.
Gambar 4.5. Hasil pendeteksian semua tepi dari citra Lena
3. Aras GlobalOperasi pada aras global menghasilkan citra keluaran yang intensitas suatu pixel
bergantung pada intensitas keseluruhan pixel (Gambar 4.6).
f B( x, y)’ = Oglobal{ f A( x, y)} (4.10)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 60/229
48 Pengolahan Citra Digital
Oglobal
{ f ( x, y)}
Gambar 4.6. Operasi aras global
Contoh operasi beraras global adalah operasi penyetaraan histogram untuk
meningkatkan kualitas citra (akan dibahas pada kuliah selanjutnya).
4. Aras ObjekOperasi jenis ini hanya dilakukan pada objek tertentu di dalam citra. Tujuan dari
operasi pada aras objek adalah untuk mengenali objek tersebut, misalnya dengan
menghitung rata-rata intensitas, ukuran, bentuk, dan karakteristik lain dari objek.
Operasi aras objek adalah operasi yang sangat sulit, karena sebelumnya kita harus
dapat menjawab: apakah objek itu, bagaimana menemukannya?
4.2 Operasi Aritmetika
Karena citra dijital adalah matriks, maka operasi-operasi aritmetika matriks juga
berlaku pada citra. Operasi matriks yang dapat dilakukan adalah:1. Penjumlahan atau pengurangan antara dua buah citra A dan B:
C ( x, y) = A( x, y) ± B( x, y),
2. Perkalian dua buah citra:
C ( x, y) = A( x, y) B( x, y),
3. Penjumlahan/pengurangan citra A dengan skalar c:
B( x, y) = A( x, y) ± c,
4. Perkalian/pembagian citra A dengan sebuah skalar c:
B( x, y) = c ⋅ A( x, y)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 61/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 49
Ditinjau dari aras komputasi, operasi aritmetika termasuk ke dalam operasi aras
titik. Penjelasan masing-masing operasi aritmetika matriks adalah sebagai berikut.
1. Penjumlahan Dua Buah citra
Persamaannya:
C ( x, y) = A( x, y) + B( x, y) (4.11)
C adalah citra baru yang intensitas setiap pixel -nya adalah jumlah dari intensitas
tiap pixel pada A dan B. Jika hasil penjumlahan intensitas lebih besar dari 255,
maka intensitasnya dibulatkan ke 255. Algoritma penjumlahan dua buah citra
ditunjukkan pada Algoritma 4.4.
void addition(citra A, citra B, citra C, int N, int M)/* Menjumlahkan dua buah citra A dan B menjadi citra baru, C.
Citra A, B, dan C masing-masing berukuran N × M.*/
{ int i, j, temp;
for (i=0; i<=N-1; i++)for (j=0; j<=M-1; j++){
temp=A[i][j] + B[i][j];if (temp > 255) C[i][j]=255; else C[i][j]=temp;
}}
Algoritma 4.4.Penjumlahan dua buah citra
Operasi penjumlahan citra dapat digunakan untuk mengurangi pengaruh derau
(noise) di dalam data, dengan cara merata-ratakan derajat keabuan setiap pixel dari citra yang sama yang diambil berkali-kali. Misalnya untuk citra yang sama
direkam dua kali, f 1 dan f 2, lalu dihitung intensitas rata-rata untuk setiap pixel :
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.
2. Pengurangan Dua Buah Citra
Persamaannya:
C ( x, y) = A( x, y) – B( x, y) (4.12)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 62/229
50 Pengolahan Citra Digital
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 .
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 63/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 51
Contoh 4.1. [GAL90] Mengalikan citra A dengan matriks koreksi:
24010230
255200242544061
255142120
1.00.01.04.0
0.00.00.03.01.00.00.03.0
1.01.04.03.0
=
25510342
255200322554062
255157170
Matriks citra A Matriks koreksi B Matriks keluaran C
void multiplication(citra A, matriks_riil B, citra C, int N)/* Mengalikan buah citra A dengan matriks koreksi B menjadi citra C.
Citra A, matriks B, dan hasil perkalian C berukuran N × N.*/{ int i, j, temp;
for (i=0; i<=N-1; i++)for (j=0; j<=N-1; j++){temp=0;for (k=0; k<=N-1; k++){temp = temp + A[i][k]*B[k][j];
/* clipping */if (temp < 0)C[i][j] = 0;
elseif (temp > 255)
C[i][j]=255;else
C[i][j]=temp;}
}}
Algoritma 4.6. Perkalian citra A dengan matriks koreksi B.
4. Penjumlahan/pengurangan citra dengan skalar
Persamaannya:
B( x, y) = A( x, y) ± c (4.14)
Penjumlahan citra A dengan skalar c adalah menambah setiap pixel di dalam citra
dengah sebuah skalar c, dan menghasilkan citra baru B yang intensitasnya lebihterang daripada A. Kenaikan intensitas sama untuk seluruh pixel , yaitu c.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 64/229
52 Pengolahan Citra Digital
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:
C[x][y]=A[x][y]&B[x][y]C[x][y]=A[x][y]|B[x][y]C[x][y]=!A[x][y]
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 65/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 53
)
Operasi Boolean mempunyai terapan yang penting pada pemrosesan morfologi
pada citra biner. Pada citra biner, operasi not dapat digunakan untuk menentukan
komplemen dari citra (Gambar 4.7). Algoritma membentuk komplemen dari citra
biner ditunjukan oleh Algoritma 4.7.
(a) Ganesha (b) not Ganesha
Gambar 4.7. Hasil operasi not pada citra biner Ganesha
void not(citra_biner A, citra_biner B, int N, int M)/* Membuat citra komplemen dari citra biner A. Komplemennya disimpan di
dalam B. Ukuran citra A adalah N × M.*/{ int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++){B[i][j] = !A[i][j];
}}
Algoritma 4.7. Membuat citra komplemen dari citra biner
4.5 Operasi Geometri pada Citra
Pada operasi geometrik, koordinat pixel berubah akibat transformasi, sedangkan
intensitasnya tetap. Ini berbeda dengan dengan operasi aritmetika yang mana
koordinat pixel tetap sedangkan intensitasnya berubah.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 66/229
54 Pengolahan Citra Digital
Operasi geometri yang dilakukan misalnya translasi, rotasi, penskalaan citra, dan
pencerminan citra ( flipping ). Pengubahan geometri dari citra f ( x, y) menjadi citra
baru f ’( x, y) dapat ditulis sebagai:
f ‘( x’, y’) = f ( g 1( x, y), g 2( x, y)) (4.17)
yang dalam hal ini, g 1( x) dan g 2( y) adalah fungsi transformasi geometrik. Dengan
kata lain,
x’ = g 1( x, y);
y’ = g 2( x, y) (4.18)
a. Translasi
Rumus translasi citra:
x’ = x + m
y’ = y + n (4.19)
yang dalam hal ini, m adalah besar pergeseran dalam arah x, sedangkan n adalah
besar pergeseran dalam arah y. Jika citra semula adalah A dan citra hasil translasi
adalah B, maka translasi dapat diimplementasikan dengan menyalin citra dari A
ke B:
B[ x][ y] = A[ x + m][ y + n] (4.20)
Algoritma translasi citra ditunjukkan oleh Algoritma 4.8, sedangkan contoh
translasi pada citra camera diperagakan pada Gambar 4.8.
void translation(citra A, citra B, int N, int M, int m, int n)
/* Mentranslasi citra A sejauh m, n. Hasil translasi disimpan di dala B.
Ukuran citra adalah N × M.
*/
{ int i, j;
for (i=0; i<=N-1; i++)`
for (j=0; j<=M-1; j++)
{
B[i][j]=A[i+m][j+n];
}
}
Algoritma 4.8. Operasi translasi citra
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 67/229
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)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 68/229
56 Pengolahan Citra Digital
Jika sudut rotasinya 90°, maka implementasinya lebih mudah dilakukan dengan
cara menyalin pixel - pixel baris ke pixel - pixel kolom pada arah rotasi (Gambar
4.10). Rotasi 180° diimplementasikan dengan melakukan rotasi 90° dua kali.
Algoritma rotasi citra sejauh 90 derajat berlawanan arah jarum jam ditunjukkan
pada Algoritma 4.9, sedangkan rotasi citra sejauh 90 derajat searah jarum jamditunjukkan pada Algoritma 4.10 [HEN95].
====>
Gambar 4.10. Rotasi citra Lena sejauh 90 ° berlawanan arah jarum jam
void rotation90CCW(citra A, citra B, int N, int M)
/* Rotasi citra A sejauh 90° berlawanan arah jarum jam (CCW = ClockCounter-wise).
Ukuran citra adalah N × M. Hasil rotasi disimpan di dalam citra B.*/
{ int i, j, k;
for (i=0; i<=N-1; i++){k=M-1;for (j=0; j<=M-1; j++){B[k][i]=A[i][j];k--;
}}
}
Algoritma 4.8. Rotasi citra sejauh 90 ° berlawanan arah jarum jam.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 69/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 57
void rotation90CW(citra A, citra B, int N, int M)
/* Rotasi citra A sejauh 90° searah jarum jam (CW = Clock-wise).
Ukuran citra adalah N × M. Hasil rotasi disimpan di dalam cira B.*/
{ int i, j, k;
k=M-1;for (i=0; i<=N-1; i++){for (j=0; j<=M-1; j++){
B[j][k]=A[i][j];}k--;
}
}
Algoritma 4.9. Rotasi citra sejauh 90 ° searah jarum jam.
c. Penskalaan Citra
Penskalaan citra, disebut juga image zooming , yaitu pengubahan ukuran citra
(membesar/ zoom out atau mengecil/ zoom in).
Rumus penskalaan citra:
x’ = s x ⋅ x
y’ = s y ⋅ y (4.23)
yang dalam hal ini, s x dan s y adalah faktor skala masing-masing dalam arah x dan
arah y.
Jika citra semula adalah A dan citra hasil penskalaan adalah B, maka penskalaan
citra dinyatakan sebagai:
B[ x’][ y’] = B[ s x ⋅ x][ s y ⋅ y] = A[ x][ y] (4.24)
Operasi zoom out dengan faktor 2 (yaitu, s x = s y = 2) diimplementasikan dengan
menyalin setiap pixel sebanyak 4 kali (Gambar 4.11a). Jadi, citra 2 × 2 pixel akan
menjadi 4 × 4 pixel . Algoritma zoom out dengan faktor skala = 2 ditunjukkan oleh
Algoritma 4.10. Contoh citra yang diperbesar dua kali diperlihatkan pada Gambar
4.12 (citra kota San Fransisco).
Operasi zoom in (pengecilan) dengan faktor skala = ½ dilakukan dengan
mengambil rata-rata dari 4 pixel yang bertetangga menjadi 1 pixel (Gambar4.11b).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 70/229
58 Pengolahan Citra Digital
(a) (b)
Gambar 4.11. (a) Zoom out dengan faktor skala = 2, (b) Zoom in dengan faktor skala = 1/2
void zoom_out(citra A, citra B, int N, int M)/* perbesaran citra A dengan faktor skala 2
Ukuran citra adalah N × M. Hasil perbesaran disimpa d dalam citra B.*/{ int i, j, k, m, n;
m=0; n=0;for (i=0; i<=N-1; i++){for (j=0; j<=M-1; j++){B[m][n]= A[i][j];B[m][n+1]= A[i][j];
B[m+1][n]= A[i][j];B[m+1][n+1]= A[i][j];n=n+2;}m=m+2;n=0;
}
}
Algoritma 4.10. Zoom out dengan faktor skala = 2
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 71/229
Bab 4_Operasi-operasi Dasar Pengolahan Citra Dijital 59
(a) (b)
Gambar 4.12. (a) Citra kota San Fransisco (ukuran normal), (b) citra kota San Fransisco setelahdiperbesar 2 kali (s x = sy = 2):
d. Flipping
Flipping adalah operasi geometri yang sama dengan pencerminan (image
reflection). Ada dua macam flipping : horizontal dan vertikal (Gambar 4.13).
(a) citra (b) flip horizontal (c) flip vertikal
Gambar 4.13. Flipping
Flipping horizontal adalah pencerminan pada sumbu-Y (cartesian) dari citra A menjadi citra B, yang diberikan oleh:
B[ x][ y] = A[ N – x][ y] (4.25)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 72/229
60 Pengolahan Citra Digital
Flipping vertikal adalah pencerminan pada sumbu- X (cartesian) dari citra A
menjadi citra B, yang diberikan oleh:
B[ x][ y] = A[ x][ M – y] (4.26)
Algoritma flipping vertikal ditunjukkan oleh Algoritma 4.11 [HEN95].
Pencerminan pada titik asal (cartesian) dari citra A menjadi citra B diberikan
oleh:
B[ x][ y] = A[ N – x][ M – y] (4.27)
Pencerminan pada garis x = y dari citra A menjadi citra B diberikan oleh:
B[ x][ y] = A[ y][ x]
void vertical_flip(citra A, citra B, int N, int M)/* Flipping vertikal (pencerminan terhadap sumbu-X) terhadap citar A. */
Ukuran citra adalah N × M. Hasil flipping disimpan di dalam citra B.*/{ int i, j, k;
k=M-1;for (i=0; i<=N-1; i++){for (j=0; j<=M-1; j++){B[k][j]=A[i][j];
}k--;}
}
Algoritma 4.11. Flipping vertikal.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 73/229
0
5. Konvolusi dan Transformasi Fourier
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:
≤≤−
<≤
=
lainnya
x x
x x
x g x f
,0
21,2/1
10,2/
)(*)( (5.3)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 74/229
1
Gambar 5.1. Ilustrasi proses konvolusi [GON77]
1a
f (a)
1
a
g (a)
1
1/2
(a) (b)
a
g (-a)
(c)
1/2
-1
a
g ( x - a)
(d)
1/2
-1 x
a
f (a) g ( x-a)
(e)
1/2
-1 x 1
10<= x<=1
a
f (a) g ( x-a)
(e)
1/2
-1 x-1 1
11<= x<=2
x
1 2
1/2
f ( x)* g ( x)
x
(f)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 75/229
2
Contoh ilustrasi konvolusi yang lain adalah dengaan fungsi delta. Ada dua macam fungsi delta:
delta Dirac dan delta Kronecker.
Fungsi delta Dirac disebut juga fungsi denyut (impuls). Fungsi ini bernilai 0 untuk x ≠ 0, dan
“lebar” denyutnya sama dengan 1. Secara matematis fungsi delta Dirac definisikan sebagai
0,0)( ≠= x xδ
0
lim
→ε ∫−
=ε
ε
δ 1)( dx x (5.4)
Gambar 5.2 memperlihatkan bentuk fungsi delta Dirac.
Sifat-sifat fungsi delta Dirac:
1. ∫∞
∞−
=− )(')'()'( x f dx x x x f δ (5.5)
2. a
x
ax
)(
)(
δ
δ = (5.6)
Fungsi delta Dirac adalah fungsi dengan daerah asal bilangan riil. Bila kita bekerja dengan fungsi
diskrit, maka fungsi delta yang digunakan adalah fungsi delta Kronecker, yang didefinisikan
sebagai
=
≠=
0,1
0,0)(
n
nnδ (5.7)
dengan sifat
∑∞
−∞=
=−m
n f mnm f )()()( δ (5.8)
Bentuk dwimatra dari fungsi delta diperoleh dengan mengalikan bentuk satumatranya:
Dirac: δ ( x, y) = δ ( x) δ ( y)
Kronecker: δ (m,n) = δ (m) δ (n)
x
)( xδ
Gambar 5.2. Fungsi delta Dirac
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 76/229
3
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
ba
A
a
g (a)
T
(a) (b) (c)
-T b T -T
A
f (a)
Penerokan
f (t ) f d (nT )
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 77/229
4
Gambar 5.5. Fungsi penerok s
Gambar 5.6. Ilustrasi grafis proses penerokan
t
f (t )
t
s(t )
t
f (t ) s(t )
t
T
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 78/229
5
5.1 Konvolusi Pada Fungsi Dwimatra
Untuk fungsi dengan dua peubah (fungsi dua dimensi atau dwimatra), operasi konvolusi
didefinisikan sebagai berikut:
a) untuk fungsi malar
∫ ∫∞
∞−
∞
∞−
−−== dadbb ya x g ba f y x g y x f y xh ),(),(),(*),(),( (5.11)
b) untuk fungsi diskrit
∑ ∑∞
−∞=
∞
−∞=
−−==a b
b ya x g ba f y x g y x f y xh ),(),(),(*),(),( (5.12)
Fungsi penapis g ( x, y) disebut juga convolution filter atau convolution mask atau convolution kernel
atau template. Dalam ranah diskrit kernel konvolusi dinyatakan dalam bentuk matriks (umumnya 3
× 3, namun ada juga yang berukuran 2 × 2 atau 2 × 1 atau 1 × 2). Ukuran matriks ini biasanya lebih
kecil dari ukuran citra. Setiap elemen matriks disebut koefisien konvolusi.
Ilustrasi konvolusi ditunjukkan pada Gambar 5.7.
p1
p2
p3
p4
p9
p8
p7
p6
p5
A B C
D E F
G H I
f (i , j )
kernel
citra
f (i, j) = A p1 + B p2 + C p3 + D p4 + E p5 + F p6 + G p7 + H p8 + I p9
Gambar 5.7 Ilustrasi konvolusi [JAI95]
Operasi konvolusi dilakukan dengan menggeser kernel konvolusi pixel per pixel . Hasil konvolusi
disimpan di dalam matriks yang baru.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 79/229
6
Contoh 5.1. Misalkan citra f ( x, y) yang berukuran 5 × 5 dan sebuah kernel atau yang berukuran 3 ×
3 masing-masing adalah sebagai berikut:
f ( x, y) =
44253
35576
26665
25566
45344
g ( x, y) =
−
−•−−
010
141
010
Keterangan: Tanda • menyatakan posisi (0, 0) dari kernel.
Operasi konvolusi antara citra f ( x, y) dengan penapis g ( x, y):
f ( x, y) * g ( x, y)
dapat digambarkan sebagai berikut:
(1) Tempatkan kernel pada sudut kiri atas:
4 4 3 5 4
6 6 5 5 2 3
5 6 6 6 2
6 7 5 5 3
3 5 2 4 4
Nilai intensitas baru dari pixel pada posisi (0, 0) dari kernel dihitung dengan cara berikut:
(0 × 4) + (-1 × 4) + (0 × 3) + (-1 × 6) + (4 × 6) + (-1 × 5) + (0 × 5) + (-1 × 6) + (0 × 6) = 3
(2) Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel pada posisi (0, 0) dari kernel:
4 4 3 5 4
6 6 5 5 2 3 0
5 6 6 6 2
6 7 5 5 3
3 5 2 4 4
Nilai intensitas baru dari pixel pada posisi (0, 0) dari kernel dihitung dengan cara berikut:
(0 × 4) + (-1 × 3) + (0 × 5) + (-1 × 6) + (4 × 5) + (-1 × 5) + (0 × 6) + (-1 × 6) + (0 × 6) = 0
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 80/229
7
(3) Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel pada posisi (0, 0) dari kernel:
4 4 3 5 4
6 6 5 5 2 3 0 2
5 6 6 6 2
6 7 5 5 3
3 5 2 4 4
Nilai intensitas baru dari pixel pada posisi (0, 0) dari kernel dihitung dengan cara berikut:
(0 × 3) + (-1 × 5) + (0 × 4) + (-1 × 5) + (4 × 5) + (-1 × 2) + (0 × 6) + (-1 × 6) + (0 × 2) = 2
(4) Selanjutnya, geser kernel satu pixel ke bawah, lalu mulai lagi melakukan konvolusi dari sisi kiri
citra. Setiap kali konvolusi, geser kernel satu pixel ke kanan:
(i) 4 4 3 5 4
6 6 5 5 2 3 0 2
5 6 6 6 2 0
6 7 5 5 3
3 5 2 4 4
Nilai intensitas baru dari pixel pada posisi (0, 0) dari kernel dihitung dengan cara berikut:
(0 × 6) + (-1 × 6) + (0 × 5) + (-1 × 5) + (4 × 6) + (-1 × 6) + (0 × 6) + (-1 × 7) + (0 × 5) = 0
(ii) 4 4 3 5 4
6 6 5 5 2 4 0 8
5 6 6 6 2 0 2
6 7 5 5 3
3 5 2 4 4
Nilai intensitas baru dari pixel pada posisi (0, 0) dari kernel dihitung dengan cara berikut:
(0 × 6) + (-1 × 5) + (0 × 5) + (-1 × 6) + (4 × 6) + (-1 × 6) + (0 × 7) + (-1 × 5) + (0 × 5) = 2
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 81/229
8
(iii) 4 4 3 5 4
6 6 5 5 2 4 0 8
5 6 6 6 2 0 2 6
6 7 5 5 3
3 5 2 4 4
Nilai intensitas baru dari pixel pada posisi (0, 0) dari kernel dihitung dengan cara berikut:
(0 × 5) + (-1 × 5) + (0 × 2) + (-1 × 6) + (4 × 6) + (-1 × 2) + (0 × 5) + (-1 × 5) + (0 × 3) = 6
Dengan cara yang sama seperti di atas, maka pixel-pixel pada baris ketiga dikonvolusi sehingga
menghasilkan:
3 0 20 2 6
6 0 2
Sebagai catatan, jika hasil konvolusi menghasilkan nilai pixel negatif, maka nilai tersebut dijadikan
0, sebaliknya jika hasil konvolusi menghasilkan nilai pixel lebih besar dari nilai keabuan
maksimum, maka nilai tersebut dijadikan ke nilai keabuan maksimum (ingat operasi clipping ).
Masalah timbul bila pixel yang dikonvolusi adalah pixel pinggir (border ), karena beberapa koefisien
konvolusi tidak dapat dapat diposisikan pada pixel - pixel citra (efek “menggantung”), seperti contoh
di bawah ini:
4 4 3 5 4 ?
6 6 5 5 2 ?
5 6 6 6 2 ?
6 7 5 5 3
3 5 2 4 4
Masalah “menggantung” seperti ini selalu terjadi pada pixel - pixel pinggir kiri, kanan, atas, dan
bawah. Solusi untuk masalah ini adalah [SID95]:
1. Pixel - pixel pinggir diabaikan, tidak di-konvolusi. Solusi ini banyak dipakai di dalam pustaka
fungsi-fungsi pengolahan citra. Dengan cara seperti ini, maka pixel-pixel pinggir nilainya tetap
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 82/229
9
sama seperti citra asal. Gambar 5.8 memperlihatkan hasil konvolusi pada Contoh 5.1, yang
dalam hal ini nilai pixel-pixel pinggir sama dengan nilai pixel semula.
2. Duplikasi elemen citra, misalnya elemen kolom pertama disalin ke kolom M +1, begitu juga
sebaliknya, lalu konvolusi dapat dilakukan terhadap pixel-pixel pinggir tersebut.
3. Elemen yang ditandai dengan “?” diasumsikan bernilai 0 atau konstanta yang lain, sehingga
konvolusi pixel-pixel pinggir dapat dilakukan.
Solusi dengan ketiga pendekatan di atas mengasumsikan bagian pinggir citra lebarnya sangat kecil
(hanya satu pixel ) relatif dibandingkan denagn ukuran citra, sehingga pixel-pixel pinggir tidak
memperlihatkan efek yang kasat mata.
4 4 3 5 4
6 4 0 8 2
5 0 2 6 2
6 6 0 2 3
3 5 2 4 4
Gambar 5.8 Pixel - pixel pinggir (yang tidak diarsir) tidak dikonvolusi (dari Contoh 5.1)
Algoritma konvolusi citra N × M dengan dengan mask atau kernel yang berukuran 3 × 3
ditunjukkan pada Algoritma 5.1. Pixel yang dikonvolusi adalah elemen (i, j). Delapan buah pixel
yang bertetangga dengan pixel (i, j) diperlihatkan pada Gambar 5.9.
i-1, j-1 i-1, j i-1, j+1
i, j-1 i, j i, j+1
i+1, j-1 i+1, j i+1, j+1
Gambar 5.9 Pixel - pixel pinggir (yang tidak diarsir) tidak dikonvolusi (dari Contoh 5.1)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 83/229
10
void konvolusi(citra Image, citra ImageResult, imatriks Mask, int N, int M)
/* Mengkonvolusi citra Image yang berukuran N × M dengan mask 3 × 3. Hasilkonvolusi disimpan di dalam matriks ImageResult.
*/
{ int i, j;
for (i=1; i<=N-3; i++)for(j=1; j<=M-3; j++)ImageResult[i][j]=
Image[i-1][j-1]*Mask[0][0] +Image[i-1][j+1]*Mask[0][1] +Image[i-1][j]*Mask[0][2] +Image[i][j-1]*Mask[1][0] +Image[i][j]*Mask[1][1] +Image[i][j+1]*Mask[1][2] +Image[i+1][j-1]*Mask[2][0] +Image[i+1][j]*Mask[2][1] +Image[i+1][j+1]*Mask[2][2];
}
Algoritma 5.1. Konvolusi citra dengan sebuah mask yang berukuran 3 × 3.
Anda dapat melihat bahwa operasi konvolusi merupakan komputasi pada aras lokal, karena
komputasi untuk suatu pixel pada citra keluaran melibatkan pixel-pixel tetangga pada citra
masukannya.
Konvolusi berguna pada proses pengolahan citra seperti:
- perbaikan kualitas citra (image enhancement )
- penghilangan derau
-
mengurangi erotan
-
penghalusan/pelembutan citra
-
deteksi tepi, penajaman tepi
- dll
Sebagai contoh, Gambar 5.9 memperlihatkan konvolusi citra Lena dengan penapis Gaussian untuk
mempertajam tepi-tepi di dalam citra. Penapis Gaussian adalah sebuah mask yang berukuran 3 × 3:
=),( y x g
121
242
121
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 84/229
11
*
121
242121
=
(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)
H (u, v) Transformasi Fourier Balikan h( x, y)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 85/229
12
5.3 Transformasi Fourier
Transformasi Fourier merupakan transformasi paling penting di dalam bidang pengolahan sinyal
( signal processing ), khususnya pada bidang pengolahan citra.
Umumnya sinyal dinyatakan sebagai bentuk plot amplitudo versus waktu (pada fungsi satu matra)
atau plot amplitudo versus posisi spasial (pada fungsi dwimatra). Pada beberapa aplikasi
pengolahan sinyal, terdapat kesukaran melakukan operasi karena fungsi dalam ranah waktu/spasial,
misalnya pada operasi konvolusi di atas. Operasi konvolusi dapat diterapkan sebagai bentuk
perkalian langsung bila fungsi berada dalam ranah frekunsi.
Transformasi Fourier adalah kakas (tool ) untuk mengubah fungsi dari ranah waktu/spasial ke ranah
frekuensi. Untuk perubahan sebaliknya digunakan Transformasi Fourier Balikan. Intisari dari
Transformasi Fourier adalah menguraikan sinyal atau gelombang menjadi sejumlah sinusoida dari
berbagai frekuensi, yang jumlahnya ekivalen dengan gelombang asal.
Di dalam pengolahan citra, transformasi Fourier digunakan untuk menganalisis frekuensi pada
operasi seperti perekaman citra, perbaikan kualitas citra, restorasi citra, pengkodean, dan lain-lain.
Dari analisis frekuensi, kita dapat melakukan perubahan frekuensi pada gambar. Perubahan
frekuensi berhubungan dengan spektrum antara gambar yang kabus kontrasnya samapi gambar yang
kaya akan rincian visualnya. Sebagai contoh, pada proses perekaman citra mungkin terjadi
pengaburan kontras gambar. Pada gambar yang mengalami kekaburan kontras terjadi perubahan
intensitas secara perlahan, yang berarti kehilangan informasi frekuensi tinggi. Untuk meningkatkan
kualitas gambar, kita menggunakan penapis frekuensi tinggi sehingga pixel yang berkontras kabur
dapat dinaikkan intensitasnya [.
5.4 Transformasi Fourier Malar
Transformasi Fourier untuk satu peubah:
=ℑ )}({ x f due x f u F uxi
∫∞
∞−
−= π 2)()( (5.13)
Transformasi Fourier Balikan untuk satu peubah:
=ℑ− )}({1u F dueu F x f uxi
∫∞
∞−
= π 2)()( (5.14)
yang dalam hal ini,
i = imaginer = 1− u adalah peubah frekuensi
Baik transformasi Fourier maupuna Transformasi Fourier Balikan keduanya dinamakan pasangan
transformasi Fourier.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 86/229
13
Untuk f ( x) real, F (u) adalah fungsi kompleks dan dapat dituliskan sebagai:
F (u) = R(u) + iI (u) = )()( uieu F φ (5.15)
Amplitudo atau F (u) disebut spektrum Fourier dari f ( x) dan didefinisikan sebagai:
)()()( 22 u I u Ru F += (5.16)
Sudut fase spektrum,
])(
)([tan)( 1
u R
u I u −=Θ (5.17)
menyatakan pergeseran fase atau sudut fase dari setiap frekuensi u.
Dengan mengingat kesamaan Euler
)(sin)cos( xi xe ix ±=± (5.18)
maka pasangan transformasi Euler dapat juga ditulis sebagai
∫ ∫∞
∞−
∞
∞−
− −== dxuxiux x f dxe x f u F uxi )}2(sin)2){cos(()()( 2 π π π (5.19)
∫ ∫∞
∞−
∞
∞−
+== duuxiuxu F dueu F x f uxi )}2(sin)2){cos(()()( 2 π π π (5.20)
Transformasi Fourier untuk fungsi dengan dua peubah adalah
dudve y x f vu F uyuxi
∫ ∫∞
∞−
+−∞
∞−
= )(2),(),( π (5.21)
sedangkan Transformasi Fourier Balikannya adalah
dudvevu F y x f uyuxi
∫ ∫∞
∞−
+∞
∞−
= )(2),(),( π (5.22)
yang dalam hal ini, x dan y adalah peubah spasial, sedangkan u dan v adalah peubah frekuensi.
Spektrum Fourier dari fungsi dua peubah:
),(),(),( 22 vu I vu Rvu F += (5.23)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 87/229
14
sedangkan sudut fasenya:
]),(
),([tan),( 1
vu R
vu I vu −=Θ (5.24)
Sifat-sifat Transformasi Fourier
Jika f (t ) ↔ F (u) dan g (t ) ↔ G(u), maka sifat-sifat Transformasi Fourier dirumuskan di dalam Tabel5.1.
Tabel 5.1 Sifat-sifat Transformasi Fourier
Sifat Ranah Waktu Ranah Frekuensi
1. Kelanjaran )()( t bg t af + )()( ubGuaF +
2. Penskalaan )(at f )/(
1au F
a
3. Pergeseran )( at f − )( au F −
4. Modulasi )(2 t f e at i π uaieu F π 2)( −
5. Konyugasi )(* t f )(* u F −
6. Konvolusi )(*)()( t g t f t h = )()()( uGu F u H =
7. Perkalian )()()( t g t f t h = )(*)()( uGu F u H =
8. Diferensiasi
n
n
dt
t f d )(
)()2( u F ui nπ
9. Simetri )(t F )( u f −
10. Hasil kali dalamdt t g t f )()( *
∫∞
∞−
∫∞
∞−
duuGu F )()( *
5.5 Transformasi Fourier Diksrit
Pada pengolahan sinyal dengan komputer digital, fungsi dinyatakan oleh himpunan berhingga nilai
diskrit. Transformasi Fourier Diskrit (TFD) ditujukan bagi persoalan yang tidak menghasilkansolusi transformasi Fourier dalam bentuk fungsi malar.
Bila f ( x) yang menerus dibuat diskrit dengan mengambil N buah terokan ( sampling ) sejarak ∆ x,
yaitu himpunan nilai { f ( x0), f ( x0 + ∆ x), f ( x0 + 2∆ x), …, f ( x0 + ( N -1)∆ x)}.
Jadi,
f x = f ( x0 + x ∆ x), x = 0, 1, 2, …, N – 1
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 88/229
15
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 −+−+−+=
=++−−+−+= ])0[4]01[4]0[32(4
1ii )2(
4
1i−−
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 89/229
16
)4432(4
1
4
1 3204/2.2.3
0
2π π π π iii xi
x
x eeeee f F −−−−
=
+++== ∑
=4
1)01(
4
1−=+ i
)2(4
13 i F +=
Spektrum Fouriernya:
25.30 = F
54
116/516/14/1)4/1()2/1( 22
1 ==+=+= F
4
12 = F
54
13 = F
Algoritma TFD dan algoritma TFD Balikan ditunjukkan masing-masing pada Algoritma 5.2 dan
Algoritma 5.3.
void TFD(int N)/* Melakukan Transformasi Fourier Diskrit untuk N buah data masukan. Hasil
transformasi disimpan di dalam array R dan I. Array R menyimpan bagianriil, dan array I menyimpan bagian bagian imajiner. Kedau array ini
dideklarasikan sebagai peubah global. Data masukan disimpan di dalam array f[0]
s/d f[N-1]
*/
{int j, k;double tetha;
for (j=0; j<N; j++){R[j]=0.0;I[j]=0.0;
}for (k=0; k<=N; k++)
for (j=0; j<=N-1; j++){tetha= k*2*3.14*j/(double)N;R[k]=R[k]+(f[j]*cos(tetha))/(double)N;I[k]=I[k]-(f[j]*sin(tetha))/(double)N;
}}
Algoritma 5.2. Transformasi Fourier Diskrit
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 90/229
17
void TFD_balikan(int N)/* Melakukan Transformasi Fourier Diskrit Balikan untuk N buah data masukan.
Masukan disimpan di dalam array R dan I. Array R menyimpan bagian riil, dan
array I menyimpan bagian bagian imajiner. Kedau array ini
dideklarasikan sebagai peubah global. Data keluaran disimpan di dalam array
fReal[0] s/d f[N-1] dan array fImag[1] s/d fImag[N-1].*/
{int j, k;double tetha, epsilon = 1E-12;
for (j=0; j<N; j++){fReal[j]=0;fImag[j]=0;
}
for (k=0; k<N1; k++){for (j=0; j<N; j++)
{tetha=k*2*3.14*j/(double)N;fReal[k]=fReal[k]+(R[j]*cos(tetha)–I[j]*sin(tetha));fImag[k]=fImag[k]+(I[j]*cos(tetha)+ R[j]sin(tetha));}if (fImag[k] < epsilon) fImag[k]=0;
}}
Algoritma 5.3. Transformasi Fourier Diskrit Balikan
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.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 91/229
18
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.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 92/229
Bab 6_Histogram Citra 83
Bab 6
Histogram Citra
nformasi penting mengenai isi citra digital dapat diketahui dengan membuat
histogram citra. Histogram citra adalah grafik yang menggambarkan
penyebaran nilai-nilai intensitas pixel dari suatu citra atau bagian tertentu di
dalam citra. Dari sebuah histogram dapat diketahui frekuensi kemunculan nisbi
(relative) dari intensitas pada citra tersebut. Histogram juga dapat menunjukkan
banyak hal tentang kecerahan (brightness) dan kontas (contrast ) dari sebuah
gambar. Karena itu, histogram adalah alat bantu yang berharga dalam pekerjaan
pengolahan citra baik secara kualitatif maupun kuantitatif.
6.1 Membuat HistogramMisalkan citra digital memiliki L derajat keabuan, yaitu dari nilai 0 sampai L – 1
(misalnya pada citra dengan kuantisasi derajat keabuan 8-bit, nilai derajat
keabuan dari 0 sampai 255). Secara matematis histogram citra dihitung dengan
rumus
n
nh i
i = , i = 0, 1, …, L – 1 (6.1)
yang dalam hal ini,
ni = jumlah pixel yang memiliki derajat keabuan i
n = jumlah seluruh pixel di dalam citra
I
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 93/229
84 Pengolahan Citra Digital
hi
i
Plot hi versus f i dinamakan histogram. Gambar 6.1 adalah contoh sebuah
histogram citra. Secara grafis histogram ditampilkan dengan diagram batang.
Perhatikan dari persamaan 6.1 bahwa nilai ni telah dinormalkan dengan
membaginya dengan n. Nilai hi berada di dalam selang 0 sampai 1.
Gambar 6.1. Histogram citra
Sebagai contoh, misalkan matriks di bawah ini menyatakan citra dijital yang
berukuran 8 × 8 pixel dengan derajat keabuan dari 0 sampai 15 (ada 16 buah
derajat keabuan):
1213141110012
789910111315
22010054
14101354320
1111088111212
12910895614
1515810002
101412108773
Tabulasi perhitungan histogramnya ditunjukan pada Tabel 6.1. Mudah dilihat
bahwa semakin besar nilai ni maka semakin besar pula nilai hi.
Tabel 6.1 Perhitungan histogram
i ni hi = ni /n ( n = 64)
0 8 0.1251 4 0.0625
2 5 0.078125
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 94/229
Bab 6_Histogram Citra 85
3 2 0.03125
4 2 0.03125
5 3 0.046875
6 1 0.015625
7 3 0.046875
8 6 0.093759 4 0.046875
10 7 0.109375
11 4 0.0625
12 5 0.078125
13 3 0.046875
14 4 0.0625
15 3 0.046875
6.2 Algoritma Perhitungan Histogram
Algoritma perhitungan histogram ditunjukkan pada Algoritma 6.1 [HEN95].Citra masukan mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai
255. Intensitas pixel disimpan di dalam Image[0..N-1][0..M-1], sedangkan
histogram disimpan di dalam tabel Hist[0..255] .
Gambar 6.2 memperlihatkan histogram citra kapal (512 × 512). Beberapa
program komersil seperti Adobe Photoshop, Paintshop, dan PolyView, dapat
digunakan untuk membangkitkan histogram citra.
void histogram(citra Image, int N, int M, float Hist[256])
/* Menghitung histogram untuk citra Image yang berukuran N × M.
Histogram disimpan di dalam tabel Hist yang bertipe riil(float).
*/
{ int i, j, n;
/* inisialisasi Hist[0..255] dengan 0 */
for(i=0;i<=255;i++)
Hist[i]=0;
for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
Hist[Image[i][j]]=Hist[Image[i][j]]+1;
/*normalisasi Hist[i] dengan jumlah seluruh pixel*/
n=N*M;
for(i=0;i<=255;i++)
Hist[i]=Hist[i]/(float)n;
}
Algoritma 6.2. Perhitungan histogram citra
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 95/229
86 Pengolahan Citra Digital
(a) kapal 512 × 512, 8-bit
(b) Histogram citra kapal (by PolyView )
Gambar 6.2. Citra Kapal (512 × 512) dan histogramnya
Khusus untuk citra berwarna, histogramnya dibuat untuk setiap kanal RGB
(merah, hijau, dan biru). Misalnya citra berwarna pepper 512 × 512 pixel 8-bit,
pada Gambar 6.3, histogramnya ada tiga buah, masing-masing untuk komponen
merah, hijau, dan biru. Histogram tersebut dihasilkan dari program [WIC01].
(a) pepper (color ), 512 × 512, 24-bit
(b) Histogram untuk kanal merah
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 96/229
Bab 6_Histogram Citra 87
(c) Histogram untuk kanal hijau (d) Histogram untuk kanal biru
Gambar 6.3. Citra berwarna pepper dan histogram masing-masing kanal warnanya
Histogram citra banyak memberikan informasi penting sebagai berikut:
1.
Nilai hi menyatakan peluang ( probability) pixel , P (i), dengan derajat keabuani. Jumlah seluruh nilai hi sama dengan 1, atau
11
0
=∑−
=
L
i
ih
Peluang suatu pixel memiliki derajat keabuan lebih kecil atau sama dengan
derajat keabuan tertentu adalah jumlah hi untuk 0 ≤ i ≤ j, atau
∑=
=≤ j
i
ih ji P 0
)( , 0 ≤ j ≤ L – 1
2. Puncak histogram menunjukkan intensitas pixel yang menonjol. Lebar dari
puncak menunjukkan rentang kontras dari gambar. Citra yang mempunyai
kontras terlalu terang (overexposed ) atau terlalu gelap (underexposed )
memiliki histogram yang sempit. Histogramnya terlihat hanya menggunakan
setengah dari daerah derajat keabuan. Citra yang baik memiliki histogram
yang mengisi daerah derajat keabuan secara penuh dengan distribusi yang
merata pada setiap nilai intensitas pixel (Gambar 6.4).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 97/229
88 Pengolahan Citra Digital
1
0 255i
h(i)
1
0 255i
h(i)
1
0 255i
h(i)
1
0 255i
h(i)
(a) (b)
(c) (d )
Gambar 6.4. (a) citra gelap, (b) citra terang, (c) citra normal (normal brightness), (d) normal
brightness dan high contrast
Gambar 6.5 memperlihatkan tiga buah citra Lena. Citra Lena yang pertama
terlalu gelap. Histogramnya banyak menumpuk pada bagian kiri karena citra
tersebut mengandung banyak nilai intensitas yang dekat dengan 0 (hitam). CitraLena yang kedua terlalu terang. Histogramnya banyak menumpuk pada bagian
kanan karena citra tersebut mengandung banyak nilai intensitas yang dekat
dengan 255 (putih). Citra Lena yang ketiga adalah citra yang normal (bagus).
Histogramnya tersebar merata di seluruh daerah derajat keabuan. Tiga buah
histogram tersebut dihasilkan dengan program Adobe Photoshop.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 98/229
Bab 6_Histogram Citra 89
(a) Kiri: citra Lena yang terlalu gelap; kanan: histogramnya (by Photoshop)
(b) Kiri: citra Lena yang terlalu terang; kanan: histogramnya
Gambar 6.5 . Bermacam-macam histogram dari beberapa kasus citra Lena
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 99/229
90 Pengolahan Citra Digital
(c) Kiri: citra Lena yang bagus (normal); kanan: histogramnya
Gambar 6.5 (lanjutan).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 100/229
0
7. Perbaikan Kualitas Citra
Perbaikan kualitas citra (image enhancement ) merupakan salah satu proses awal dalam
pengolahan citra (image preprocessing ). Perbaikan kualitas diperlukan karena seringkali citra
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]:
1. Pengubahan kecerahan gambar (image brightness)
2. Peregangan kontras (contrast stretching )
3. Pengubahan histogram citra.
4.
Pelembutan citra (image smoothing) 5. Penajaman ( sharpening ) tepi (edge).
6. Pewarnaan semu ( pseudocolouring )
7. Pengubahan geometrik
Beberapa operasi image enhancemnent (4 dan 5) dapat dipandang sebagai operasi penapisan
untuk memperoleh citra yang lebih baik. Operasi penapisan adalah adalah operasi konvolusi
citra f ( x, y) dengan penapis h( x, y):
f ‘( x, y) = h( x, y) * f ( x, y) (7.1)
atau dalam ranah frekuensi:
F ’(u, v) = H (u, v) F (u, v) (7.2)
Pada umumnya, f ( x, y) sudah diketahui sehingga persoalannya adalah memilih h( x, y)
sedemikian rupa sehingga f ’( x, y) merupakan citra yang menonjolkan ciri tertentu dari f ( x, y).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 101/229
1
7.2 Pengubahan Kecerahan Gambar ( Image Brightness)
Untuk membuat citra lebih terang atau lebih gelap, kita melakukan pengubahan kecerahan
gambar. Kecerahan/kecemerlangan gambar dapat diperbaiki dengan menambahkan (atau
mengurangkan) sebuah konstanta kepada (atau dari) setiap pixel di dalam citra. Akibat dari
operasi ini, histogram citra mengalami pergeseran.
Secara matematis operasi ini ditulis sebagai
f ( x, y)’ = f ( x, y) + b (7.3)
Jika b positif, kecerahan gambar bertambah, sebaliknya jika b negatif kecerahan gambar
berkurang.
Algoritma pengubahan kecerahan gambar ditunjukkan pada Algoritma 7.1. Citra masukan
mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai 255. Intensitas pixel
disimpan di dalam Image[0..N-1,0..M-1], sedangkan hasil pengubahan tetap
disimpan di dalam citra Image.
void ImageBrightness(citra Image, int N, int M, int b)
/* Mengubah kecerahan citar Image yang berukuran N × M dengan penambahan
intensitas setiap pixel sebesar b.
*/
{ int i, j, n;
for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
Image[i][j]+=b;
}
Algoritma 7.1. Perhitungan histogram citra
Nilai pixel hasil pengubahan mungkin ≤ derajat keabuan minimum (0) atau ≥ derajat keabuan
maksimum (255). Karena itu, pixel tersebut perlu dilakukan clipping ke nilai keabuan
minimum atau ke nilai keabuan maksimum.
Sebagai contoh, Gambar 7.1(a) adalah citra Zelda (beserta histogramnya) yang tampak
gelap, sedangkan Gambar 7.1(b) adalah citra Zelda (beserta histogramnya) yang lebih terang
(nilai b = 80).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 102/229
2
(a) Citra Zelda (b) Histogram citra Zelda
(c) Citra Zelda setelah penambahan kecerahan
dengan b
(d) Histogram citra Zelda setelah penambahan
kecerahan
Gambar 7.1. Citra Zelda; Atas: sebelum operasi penambahan kecerahan terlihat agak gelap;
Bawah: Zelda setelah operasi penambahan kecerahan dengan b = 80.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 103/229
3
7.3 Peregangan Kontras
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-
rendah, kontras-tinggi, dan kontras-bagus.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 104/229
4
(a) Citra Lena yang terlalu gelap Histogram
(kontras rendah)
(b) Citra Lena yang terlalu terang Histogram
(kontras tinggi)
(c) Citra Lena yang bagus (normal) Histogram
(kontras bagus)
Gambar 7.2. Tiga buah citra Lena dengan tiga macam kontras.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 105/229
5
Algoritma peregangan kontras adalah sebagai berikut:
1. Cari batas bawah pengelompokan pixel dengan cara memindai ( scan) histogram dari
nilai keabuan terkecil ke nilai keabuan terbesar (0 sampai 255) untuk menemukan pixel
pertama yang melebihi nilai ambang pertama yang telah dispesifikasikan.
2.
Cari batas atas pengelompokan pixel dengan cara memindai histogram dari nilai
keabuan tertinggi ke nilai keabuan terendah (255 sampai 0) untuk menemukan pixel
pertama yang lebih kecil dari nilai ambang kedua yang dispesifikasikan.
3.
Pixel - pixel yang berada di bawah nilai ambang pertama di- set sama dengan 0,
sedangkan pixel - pixel yang berada di atas nilai ambang kedua di- set sama dengan 255.
4.
Pixel - pixel yang berada di antara nilai ambang pertama dan nilai ambang kedua
dipetakan (diskalakan) untuk memenuhi rentang nilai-nilai keabuan yang lengkap (0sampai 255) dengan persamaan:
255maxmin
max ×−
−= r r
r r s (7.4)
yang dalam hal ini, r adalah nilai keabuan dalam citra semula, s adalah nilai keabuan
yang baru, r min adalah nilai keabuan terendah dari kelompok pixel , dan r max adalah nilai
keabuan tertinggi dari kelompok pixel (Gambar 7.3).
s
r
0
r max
Gambar 7.3 Peregangan kontras
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 106/229
6
7.4 Pengubahan Histogram Citra
Untuk memperoleh histogram citra sesuai dengan keinginan kita, maka penyebaran nilai-nilai
intensitas pada citra harus diubah. Terdapat dua cara pengubahan citra berdasarkan
histogram:
1.
Perataan historam (histogram equalization)
Nilai-nilai intensitas di dalam citra diubah sehingga penyebarannya seragam (uniform).
2.
Pembentukan histogram (histogram spesification)
Nilai-nilai intensitas di dalam citra diubah agar diperoleh histogram dengan bentuk yangdispesifikasikan oleh pengguna.
Kedua macam pengubahan histogram citra ini dibahas lebih rinci di dalam upabab 7.5 dan 7.6
di bawah ini.
7.5 Perataan HistogramSebagaimana telah dijelaskan pada pembahasan terdahulu, histogram citra memberikan
informasi tentang penyebaran intensitas pixel - pixel di dalam citra. Misalnya, citra yang
terlalu terang atau terlalu gelap memiliki histogram yang sempit.
Agar kita memperoleh citra yang baik, maka penyebaran nilai intensitas harus diubah. Teknik
yang lazim dipakai adalah perataan histogram (histogram equalization). Tujuan dari
perataan histogram adalah untuk memperoleh penyebaran histogram yang merata, sedemikian
sehingga setiap derajat keabuan memiliki jumlah pixel yang relatif sama.
Karena histogram menyatakan peluang pixel dengan derajat keabuan tertentu, maka rumus
menghitung histogram ditulis kembali sebagai fungsi peluang
n
nr P k k r =)( (7.5)
yang dalam hal ini,
1−=
L
k r k , 0 ≤ k ≤ L – 1 (7.6)
yang artinya, derajat keabuan (k ) dinormalkan terhadap derajat keabuan terbesar ( L – 1).
Nilai r k = 0 menyatakan hitam, dan r k = 1 menyatakan putih dalam skala keabuan yang
didefinisikan.
Contohnya, jika L = 8, maka nilai-nilai r k dinyatakan di dalam tabel 7.1.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 107/229
7
Tabel 7.1 Nilai-nilai r k jika L = 8
k r k0 0/7 = 0
1 1/7
2 2/7
3 3/7
4 4/7
5 5/7
6 6/7
7 7/7 = 1
Yang dimaksud dengan perataan histogram adalah mengubah derajat keabuan suatu pixel (r )
dengan derajat keabuan yang baru ( s) dengan suatu fungsi transformasi T , yang dalam hal ini
s = T (r ). Gambar 7.4 memperlihatkan transformasi r menjadi s.
Dua sifat yang dipertahankan pada transformasi ini:
1. Nilai s merupakan pemetaan 1 ke 1 dari r . Ini untuk menjamin representasi intensitas
yang tetap. Ini berarti r dapat diperoleh kembali dari r dengan transformasi invers:
)(1
sT r −= , 0 ≤ s ≤ 1 (7.7)
2. Untuk 0 ≤ r i ≤ 1, maka 0 ≤ T (r ) ≤ 1. Ini untuk menjamin pemetaan T konsisten pada
rentang nilai yang diperbolehkan.
1
0 1
r
s
r k
sk= T (r
k )
Gambar 7.4 Fungsi transformasi
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 108/229
8
Untuk fungsi histogram yang menerus,
dww P r T s
r
r )()(
0
∫== , 0 ≤ r ≤ 1 (7.8)
yang dalam hal ini w adalah peubah bantu.
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.
Gambar 7.5. Histogram citra sebelum perataan
0.30
0.25
0.20
0.15
0.10
0.05
0 1/7 3/7 5/7 1r
k
P r (r
k )
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 109/229
9
Perhitungan perataan histogram adalah sbb:
)()(0
0
00 j
j
r r P r T s ∑=
== = 19.0)( 0 =r P r
)()(1
0
11 j
j
r r P r T s ∑=
== = 44.025.019.0)()( 10 =+=+ r P r P r r
)()(2
0
22 j
j
r r P r T s ∑=
== = 65.021.025.019.0)()()( 210 =++=++ r P r P r P r r r
dan seterusnya, diperoleh:
s3 = 0.81 s6 = 0.98
s4 = 0.89 s7 = 1.00
s5 = 0.95
Karena pada citra ini hanya ada 8 nilai intensitas, maka nilai-nilai sk harus dibulatkan ke nilai-
nilai r yang terdekat:
s0 = 0.19 lebih dekat ke nilai 1/7 ( = 0.14), maka s0 = 1/7
s1 = 0.44 lebih dekat ke nilai 3/7 ( = 0.43), maka s1 = 3/7
s2 = 0.65 lebih dekat ke nilai 5/7 ( = 0.71), maka s2 = 5/7
s3 = 0.81 lebih dekat ke nilai 6/7 ( = 0.86), maka s3 = 6/7
s4 = 0.89 lebih dekat ke nilai 6/7 ( = 0.86), maka s4 = 6/7
s5 = 0.95 lebih dekat ke nilai 7/7 ( = 1.00), maka s5 = 7/7
s6 = 0.98 lebih dekat ke nilai 7/7 ( = 1.00), maka s6 = 7/7
s7 = 1.00 lebih dekat ke nilai 7/7 ( = 1.00), maka s7 = 7/7
Hasil transformasinya :
k r k sk
0 0 1/7
1 1/7 3/7
2 2/7 5/7
3 3/7 6/7
4 4/7 6/7
5 5/7 1
6 6/7 1
7 1 1
Terlihat dari contoh di atas hanya lima nilai intensitas yang terisi (1/7, 3/7, 5/7, 6/7, dan 1).
Notasi untuk tiap hasil transformasi didefinisi ulang menjadi:
s0 = 1/7, s1 = 3/7, s2 = 5/7, s4 = 6/7, s5 = 1
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 110/229
10
Karena r 0 = 0 dipetakan ke s0 = 1/7, terdapat 790 pixel hasil transformasi yang memiliki nilai
intensitas 1/7. Selanjutnya, s1 = 3/7 memiliki 1023 pixel , s2 =5/7 memiliki 850 pixel . Juga,
karena r 3 dan r 4 dipetakan ke nilai yang sama, s3 = 6/7, maka jumlah pixel yang bernilai 6/7
adalah 656 + 329 = 985. Jumlah pixel hasil transformasi diringkas pada tabel di bawah ini:
sk nk P s( sk ) = nk /n
1/7 790 0.19
3/7 1023 0.25
5/7 850 0.21
6/7 656 + 329 = 958 0.23
7/7 245 + 122 + 81 = 448 0.11
Gambar 7.5 adalah histogram citra hasil perataan.
Gambar 7.5. Histogram citra hasil perataan
Gambar 7.6 memperlihatkan perataan histogram pada citra anjing collie. Pada mulanya citra
collie terlihat terlalu gelap. Histogramnya menumpuk pada daerah derajat keabuan bagian
kiri. Dengan teknik perataan histogram, citra anjing collie terlihat lebih bagus. Hal ini dapat
dilihat juga pada histogramnya yang tersebar merata di seluruh daerah derajat keabuan.
Meskipun perataan histogram bertujuan menyebarkan secara merata nilai-nilai derajat
keabuan, tetapi seringkali histogram hasil perataan tidak benar-benar tersebar secara merata
(misalnya pada contoh di atas). Alasannya adalah:1.
Derajat keabuan terbatas jumlahnya. Nilai intensitas baru hasil perataan merupakan
pembulatan ke derajat keabuan terdekat.
2.
Jumlah pixel yang digunakan sangat terbatas.
Agar hasil perataan benar-benar seragam sebarannya, maka citra yang diolah haruslah dalam
bentuk malar (continue), yang dalam praktek ini jelas tidak mungkin.
0.30
0.25
0.20
0.15
0.10
0.05
0 1/7 3/7 5/7 1 s
k
P s(s
k )
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 111/229
11
(a) Kiri: citra anjing collie yang terlalu gelap; Kanan: histogramnya
(b) Kiri: citra anjing collie setelah perataan histogram; kanan: histogramnya
Gambar 7.6. Contoh perataan histogram pada citra anjing collie
Algoritma perataan histogram ditunjukkan pada Algoritma 7.2 [HEN95]. Citra masukan
mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai 255. Intensitas pixel
disimpan di dalam Image[0..N-1][0..M-1]. Histogram citra semula disimpan di dalam
tabel Hist[0..255] yang bertipe riil. Histogram hasil perataan disimpan di dalamHistEq[0..255] yang bertipe integer .
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 112/229
12
void PerataanHistogram(citra Image, int N, int M)
/* Mengubah citra Image yang berukuran N × M dengan melakukan perataan
histogram (histogram equalization).
*/
{
int i, j;float sum, float Hist[256];int HistEq[256]; /* histogram hasil perataan */
histogram(Image,N,M,Hist); /* hitung histogram citra */
for(i=0;i<256;i++)
{
sum=0.0;
for (j=0;j<=i;j++)
sum=sum+Hist[j];
HistEq[i]=floor(255*sum);
}
/* update citra sesuai histogram hasil perataan */
for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)Image[i][j]=HistEq[Image[i][j]];
Algoritma 7.2 Perataan histogram citra
7.6 Pembentukan Histogram
Perataan histogram memetakan histogram citra semula menjadi histogram yang seragam. Bila
histogram yang diinginkan tidak seragam, maka cara ini tidak dapat digunakan.
Metode pembentukan histogram (histogram spesification) memberikan cara menghasilkan
histogram yang dispesifikasikan oleh pengguna. Cara pembentukannya memanfaatkan sifat
pada perataan histogram. Bila fungsi transformasi pada perataan histogram menghasilkan
histogram semula menjadi histogram yang seragam, maka fungsi balikannya (inverse)
memetakan histogram yang seragam menjadi histogram semula. Sifat ini dapat dimanfaatkan
untuk mengubah histogram citra menjadi histogram lain yang tidak seragam.
Dasar teorinya adalah sebagai berikut: misalkan P r (r ) dan P z ( z ) masing-masing adalah
histogram citra semula dan histogram yang diinginkan. Fungsi transformasi T mula-mula
memetakan intensitas citra semula menjadi histogram yang seragam dengan cara perataan
histogram,
dww P r T s
r
r )()(
0
∫==
Jika histogram yang diinginkan sudah dispesifikasikan, kita dapat melakukan perataan
histogram pula dengan fungsi transformasi G:
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 113/229
13
dww P z Gv
z
z )()(
0
∫== (7.10)
Balikan (invers) dari fungsi G,
)(1 vG z −= (7.11)
akan menghasilkan histogram yang diinginkan kembali.
Dengan mengganti v dengan s pada persamaan yang terakhir,
)(1 sG z −≈ (7.12)
maka kita dapat memperoleh nilai intensitas yang diinginkan. Hasil yang diperoleh
merupakan hampiran karena kita mencoba menemukan nilai s yang transformasinyamendekati nilai z .
Algoritma pembentukan histogram adalah sebagai berikut:
1.
Misalkan P r (r ) adalah histogram citra semula. Lakukan perataan histogram terhadap citra
semula dengan fungsi transformasi T ,
dww P r T s
r
r )()(
0
∫==
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
)()(
2. Tentukan histogram yang diinginkan, misalkan P z ( z ) adalah histogram yang diinginkan.
Lakukan perataan histogram dengan fungsi transformasi G,
dww P z Gv
z
z )()(
0
∫==
Dalam bentuk diskrit, nilai-nilai v diperoleh dengan persamaan berikut:
∑∑==
===k
j
j z
k
j
j
k k z P n
n z Gv
00
)()(
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 114/229
14
3. Terapkan fungsi transformasi balikan, z = G-1( s) terhadap histogram hasil langkah 1.
Caranya adalah dengan mencari nilai-nilai s yang memberi nilai z terdekat.
Dengan kata lain, histogram nilai-nilai intensitas pada citra semula dipetakan menjadi
intensitas z pada citra yang diinginkan dengan fungsi
z = G-1[T (r )]
Ketiga langkah di dalam algoritma pembentukan histogram di atas digambarkan dalam bagan
pada Gambar 7.7.
P r (r ) Histogram Seragam P
z ( z )
T (r) G-1 ( s)
Gambar 7.7 Langkah-langkah metode Pembentukan Histogram
Contoh 7.2. [GON77] Tinjau kembali citra yang berukuran 64 × 64 dengan jumlah derajat
keabuan ( L) = 8 dan jumlah seluruh pixel (n) = 64 × 64 = 4096. Tabel histogram citra semula
dan tabel histogram yang diinginkan adalah sebagai berikut:
Tabel histogram citra semula Tabel histogram yang diinginkan
r k nk P r (r k ) = nk /n z k P z ( z k )
0/7 = 0.00 790 0.19 0/7 = 0.00 0.00
1/7 = 0.14 1023 0.25 1/7 = 0.14 0.00
2/7 = 0.29 850 0.21 2/7 = 0.29 0.00
3/7 = 0.43 656 0.16 3/7 = 0.43 0.15
4/7 = 0.57 329 0.08 4/7 = 0.57 0.20
5/7 = 0.71 245 0.06 5/7 = 0.71 0.30
6/7 = 0.86 122 0.03 6/7 = 0.86 0.20
7/7 = 1.00 81 0.02 7/7 = 1.00 0.15
Histogram citra semula dan histogram yang diinginkan diperlihatkan secara grafis pada
Gambar 7.8.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 115/229
15
Histogram citra semula: Histogram yang diinginkan
Gambar 7.8 Histogram citra semula dan histogram yang diinginkan
Langkah-langkah pembentukan histogram adalah sebagai berikut:
Langkah 1: Hasil perataan histogram terhadap citra semula,
∑∑==
===k
j
jr
k
j
j
k k r P n
nr T s
00
)()(
telah dilakukan (lihat Contoh 7.1), dan ini hasilnya:
r j → sk nk P s( sk ) = nk /n
r 0→ s0 = 1/7 790 0.19
r 1→ s1 = 3/7 1023 0.25
r 2→ s2 = 5/7 850 0.21
r 3, r 4→ s3 = 6/7 656 + 329 = 958 0.23
r 5, r 6, r 7→ s4 = 7/7 245 + 122 + 81 = 448 0.11
Langkah 2: Lakukan perataan terhadap histogram yang diinginkan, P z ( z ), dengan persamaan
∑∑==
===k
j
j z
k
j
j
k k z P n
n z Gv
00
)()(
Hasilnya adalah sbb:
v0 = G( z 0) = 0.00 v4 = G( z 4) = 0.35
v1 = G( z 1) = 0.00 v5 = G( z 5) = 0.65
v2 = G( z 2) = 0.00 v6 = G( z 6) = 0.85
v3 = G( z 3) = 0.15 v7 = G( z 7) = 1.00
0.30
0.25
0.20
0.15
0.10
0.05
0 1/7 3/7 5/7 1r k
P r (r
k )
0.30
0.25
0.20
0.15
0.10
0.05
0 1/7 3/7 5/7 1 z
k
P z (z
k )
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 116/229
16
Langkah 3: Gunakan transformasi z = G-1( s) untuk memperoleh nilai z dari nilai s hasil
perataan histogram.
s0 = 1/7 ≈ 0.14 paling dekat dengan 0.15 = G( z 3), jadi G-1(0.14) = z 3 =1/7
s1 = 3/7 ≈ 0.43 paling dekat dengan 0.35 = G( z 4), jadi G-1(0.43) = z 4 =4/7
s2 = 5/7 ≈ 0.71 paling dekat dengan 0.65 = G( z 5), jadi G-1(0.71) = z 5 =5/7
s3 = 6/7 ≈ 0.86 paling dekat dengan 0.85 = G( z 6), jadi G-1(0.86) = z 6 =6/7
s4 = 1 ≈ 1.00 paling dekat dengan 1.00 = G( z 7), jadi G-1(1.00) = z 7 =1
Diperoleh pemetaan langsung sebagai berikut:
r 0 = 0 → z 3 = 3/7 r 4 = 4/7 → z 6 = 6/7
r 1 = 1/7 → z 4 = 4/7 r 5 = 5/7 → z 7 = 1
r 2 = 2/7 → z 5 = 5/7 r 6 = 6/7 → z 7 = 1
r 3 = 3/7 → z 6 = 6/7 r 7 = 1 → z 7 = 1
Penyebaran pixel :
Karena r 0 = 0 dipetakan ke z 3 = 3/7, maka terdapat 790 pixel hasil transformasi yang memiliki
nilai intensitas 3/7.
Karena r 1 = 1/7 dipetakan ke z 4 = 4/7, maka terdapat 1023 pixel hasil transformasi yang
memiliki nilai intensitas 4/7.
Karena r 2 = 2/7 dipetakan ke z 5 = 5/7, maka terdapat 850 pixel hasil transformasi yang
memiliki nilai intensitas 5/7.
Karena r 3 = 3/7 dan r 4 = 4/7 dipetakan ke z 6 = 6/7, terdapat 245 + 122 + 81 = 448 pixel hasil
transformasi yang memiliki nilai intensitas 1.
Selanjutnya, tidak ada pixel yang mempunyai intensitas z 0 = 0, z 1 = 1/7, dan z 2 = 2/7, karena
tidak ada r k yang dipetakan ke nilai-nilai z tersebut.
z k nk P z ( z k ) = nk /n
0 0 0.00
1/7 0 0.00
2/7 0 0.00
3/7 790 0.19
4/7 1023 0.25
5/7 850 0.21
6/7 985 0.24
1 448 0.11
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 117/229
17
Histogram yang terbentuk:
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 */
histogram(Image,N,M,Hist); /* hitung histogram citra */
for(i=0;i<256;i++)
{
sum=0.0;
for (j=0;j<=i;j++)
0.30
0.25
0.20
0.15
0.10
0.05
0 1/7 3/7 5/7 1 z
k
P z (z
k )
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 118/229
18
sum=sum+Hist[j];
HistEq[i]=floor(255*sum);
}
/* lakukan perataan histogram terhadap citra Spec */
for(i=0;i<=255;i++)
{sum=0.0;
for (j=0;j<=i;j++)
sum=sum+Spec[j];
SpecEq[i]=floor(255*sum);
}
/* lakukan transformasi balikan */
for(i=0;i<=N-1;i++)
{
minval=abs(HistEq[i] – SpecEq[0]);
minj=0;
for(j=0;j<=255;j++)
if (abs(HistEq[i] – SpecEq[j]) < minval)
{
minval = abs(HistEq[i] – SpecEq[j]);minj=j;
}
InvHist[i]=minj;
}
/* update citra setelah pembentukan histogram */
for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
Image[i][j]]=InvHist[Image[i][j]];
Algoritma 7.3 Pengubahan citra berdasarkan histogram yang dispesifikasikan
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 119/229
0
7.7 Pelembutan Citra ( Image Smoothing )
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:
∑∑= =
++=2
1
2
1
),(1
),(m
mr
n
n s
s yr x f d
y x g (7.13)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 120/229
1
yang dalam hal ini d adalah jumlah pixel yang terlibat dalam perhitungan rata-rata. Gambar
7.10 memperlihatkan dua buah skema perata-rataan [GON77]. Pada skema pertama, tetangga
sebuah pixel adalah pixel-pixel yang berjarak ∆ x, sedangkan pada skema kedua tetangga
sebuah pixel adalah pixel-pixel yang berjarak paling jauh √2 ∆ x.
radius = ∆ x
(a)
radius = √2 ∆ x (b)
Gambar 7.10. Skema perata-rataan
Operasi perata-rataan di atas dapat dipandang sebagai konvolusi antara citra f ( x, y) dengan
penapis h( x, y):
g ( x, y) = f ( x, y) ∗ h( x, y) (7.14)
Penapis h disebut penapis rerata (mean filter ). Dalam ranah frekuensi, operasi konvolusi
tersebut adalah
G(u,v) = F (u,v) H (u,v) (7.15)
+
Tetangga pixel +
+
+
Tetangga pixel +
+
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 121/229
2
Contoh penapis rerata yang berukuran 3 × 3 dan 2 × 2 adalah seperti di bawah ini (elemen
yang bertanda • menyatakan posisi (0, 0) dari pixel yan dikonvolusi)):
(i)
•9/19/19/19/19/19/1
9/19/19/1
(ii)
•
4/14/1
4/14/1
Algoritma pelembutan citra dengan penapis 3 × 3 ditunjukkan pada Algoritma 7.4.
void PerataanCitra(citra Image, citra ImageResult, int N, int M)
/* Melembutkan citra Image yang berukuran N × M dengan melakukan konvolusi
citra Image dengan penapis rerata yang berukuran 3 × 3. Hasil pelembutna
disimpan di dalam ImageResult.
*/
{ int i, j;
for (i=1; i<=N-1; i++)
for(j=1; j<=M-1; j++)
{
ImageResult[i][j]=
Image[i-1][j-1] + Image[i-1][j] + Image[i-1,j+1]+
Image[i][j-1] + Image[i][j] + Image[i,j+1] +
Image[i+1][j-1] + Image[i+1][j] + Image[i+1,j+1];
ImageResult[i][j]=ImageResult[i][j]/9;
}
}
Algoritma 7.4. Operasi pelembutan citra dengan penapis rerata 3 × 3.
Operasi penapisan ini mempunyai efek pemerataan derajat keabuan, sehingga gambar yang
diperoleh tampak lebih kabur kontrasnya. Efek pengaburan ini disebut efek blurring . Gambar
7.11 adalah hasil pelembutan citra Lena dari Gambar 7.9 dengan penapis rata-rata 3 × 3.
Efek pengaburan yang dihasilkan dari penapis rata-rata dapat dikurangi dengan prosedur
pengambangan berikut:
T
y x f
s yr x f d y x f s yr x f d y x g
m
mr
n
n s
m
mr
n
n s >
++−++= ∑∑∑∑ = == =
lainnya),,(
),(
1
),( jika),(
1
),(
2
1
2
1
2
1
2
1
(7.16)
dengan T adalah nilai ambang yang dispesifikasikan.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 122/229
3
Gambar 7.11. Citra Lena yang sudah dilembutkan dengan penapis rerata 3 × 3
Penapis h( x, y) pada operasi pelembutan citra disebut juga penapis lolos-rendah (low-pass
filter ), karena penapis tersebut menekan komponen yang berfrekuensi tinggi (misalnya pixel
gangguan, pixel tepi) dan meloloskan komponen yang berfrekuensi rendah.
Penapis Lolos-Rendah
Penapis rata-rata adalah salah satu penapis lolos-rendah yang paling sederhana. Aturan untuk
penapis lolos-rendah adalah [GAL95]:
1. Semua koefisien penapis harus positif
2.
Jumlah semua koefisien harus sama dengan 1
Jika jumlah semua koefisien lebih besar dari 1, maka konvolusi menghasilkan penguatan
(tidak diinginkan). Jika jumlah semua koefisien kurang dari 1, maka yang dihasilkan adalah
penurunan, dan nilai mutlak setiap pixel di seluruh bagian citra berkurang. Akibatnya, citra
hasil pelembutan tampak lebih gelap.
Ilustrasi konvolusi dengan penapis rata-rata 3 × 3 terhadap citra yang mengandung pixel
derau diperlihatkan di bawah ini. Pixel yang mengalami gangguan dimisalkan bernilai 17,
sedangkan nilai pixel tetangganya (yang tidak mengalami gangguan) bernilai rendah,
misalkan 8. Efek dari penapis lolos-rendah adalah sbb: pixel - pixel tetangga tidak mengalami
perubahan (kecuali bila terdapat perbedaan nilai atau gradien antara pixel - pixel yang
bertetangga), sedangkan pixel derau nilainya turun menjadi 9:
8888
88178
8888
8888
8998
8888
(i) sebelum konvolusi (ii) setelah konvolusi
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 123/229
4
Nilai 9 ini diperoleh dari hasil perhitungan konvolusi:
f ’(1,1) = (8 + 8 + 8 + 8 + 17 + 8 + 8 + 8 + 8)/9 = 81/9 = 9
Selain dengan penapis rata-rata, penapis lolos-rendah lain yang dapat digunakan pada operasi
pelembutan adalah:
(i)
•
16/18/116/1
8/14/18/1
16/18/116/1
(ii)
•
10/110/110/1
10/15/110/1
10/110/110/1
(iii)
16/18/116/1
8/14/18/1
16/18/116/1
Jika citra hasil penapisan lolos-rendah dikurangi dari citra semula (yang mengandung derau),
maka yang dihasilkan adalah peningkatan relatif komponen citra yang berfrekuensi tinggi
tanpa peningkatan komponen derau. Akibatnya, citra hasil pengurangan muncul lebih tajam
dari citra semula. Ini dapat digunakan untuk menonjolkan bagian citra yang tidak jelas,
misalnya tertutup oleh kabut atau awan. Aplikasi ini dapat diterapkan untuk mendapatkan
citra kota Jakarta yang lebih bagus daripada citra kota Jakarta yang tertutup oleh kabut.
Penapis lolos-rendah yang disebutkan di atas merupakan penapis lanjar (linear ). Operasi
pelembutan dapat juga dilakukan dengan menggunakan penapis nirlanjar, yaitu:
a. Penapis minimum (min filter )
b.
Penapis maksimum (max filter )
c. Penapis median (median filter )
Penapis nirlanjar sebenarnya tidak termasuk kategori operasi konvolusi yang lazim. Cara
kerja penapis tersebut berbeda dari penapis lanjar. Operasi dengan penapis nirlanjar dihitung
dengan mengurutkan nilai intensitas sekelompok pixel , lalu mengganti nilai pixel yang
sedang diproses dengan nilai tertentu dari kelompok tersebut (misalnya nilai median dari
kelompok pixel , nilai maksimum atau nilai minimum dari kelompok pixel )
Penapis Median
Penapis nirlanjar yang akan dijelaskan adalah penapis median. Penapis ini dikembangkan
oleh Tukey. Pada penapis median, suatu “jendela” (window) memuat sejumlah pixel (ganjil).
Jendela digeser titik demi titik pada seluruh daerah citra. Pada setiap pergeseran dibuat
jendela baru. Titik tengah dari jendela ini diubah dengan nilai median dari jendela tersebut.
Sebagai contoh, tinjau jendela berupa kelompok pixel (berbentuk kotak diarsir) pada sebuah
citra pada Gambar 7.12(a). Pixel yang sedang diproses adalah yang mempunyai intensitas 35.
Urutkan pixel - pixel tersebut:
9 10 10 10 10 10 11 12 35
Median dari kelompok tersebut adalah 10 (dicetak tebal). Titik tengah dari jendela (35)
sekarang diganti dengan nilai median (10). Hasil dari penapis median diperlihatkan pada
Gambar 7.12(b). Jadi, penapis median menghilangkan nilai pixel yang sangat berbeda dengan
pixel tetangganya.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 124/229
5
13 10 15 14 18 13 10 15 14 18
12 10 10 10 15 12 10 10 10 15
11 11 35 10 10 11 11 10 10 10
13 9 12 10 12 13 9 12 10 12
13 12 9 8 10 13 12 9 8 10
(a) Pixel bernilai 35 terkena derau (b) 35 diganti dengan median dari
kelompok 3 × 3 pixel
Gambar 7.12. Penghilangan derau dengan penapis median 3 × 3.
Selain berbentuk kotak, jendela pada penapis median dapat bermacam-macam bentuknya,
seperti palang (cross), lajur vertikal (vertical strip), atau lajur horizontal (horizontal strip).
Gambar 7.13 adalah hasil pelembutan citra dari Gambar 7.9 dengan penapis median 3 × 3.
Dari kedua contoh penapis (penapis rerata dan penapis median), dapat dilihat bahwa penapis
median memberikan hasil yang lebih baik dibandingkan penapis rerata untuk citra yang
mengalami gangguan dalam bentuk spike berupa bercak-bercak putih.
Gambar 7.13. Citra Lena yang dilembutkan dengan penapis median.
Cara lain yang dapat dilakukan pada pelembutan citra adalah merata-ratakan derajat keabuan
setiap pixel dari citra yang sama yang diambil berkali-kali. Misalnya untuk gambar yang
sama direkam dua kali, lalu dihitung intensitas rata-rata untuk setiap pixel :
f ‘( x, y) =2
1{ f 1( x, y) + f 2( x, y) } (7.16)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 125/229
6
7.8 Penajaman Citra (Image Sharpening)
Operasi penajaman citra bertujuan memperjelas tepi pada objek di dalam citra. Penajaman
citra merupakan kebalikan dari operasi pelembutan citra karena operasi ini menghilangkan
bagian citra yang lembut.
Operasi penajaman dilakukan dengan melewatkan citra pada penapis lolos-tinggi (high-pass
filter ). Penapis lolos-tinggi akan meloloskan (atau memperkuat) komponen yang berfrekuensi
tinggi (misalnya tepi atau pinggiran objek) dan akan menurunkan komponen berfrekuensi
rendah. Akibatnya, pinggiran objek telihat lebih tajam dibandingkan sekitarnya.
Karena penajaman citra lebih berpengaruh pada tepi (edge) objek, maka penajaman citra
sering disebut juga penajaman tepi (edge sharpening ) atau peningkatan kualitas tepi (edge
enhancement ). Gambar 7.14 adalah citra Lena setelah ditajamkan gambarnya.
(a) (b)
Gambar 7.14 (a) Citra Lena semula, (b) Citra Lena setelah penajaman
Selain untuk mempertajam gambar, penapis lolos-tinggi juga digunakan untuk mendeteksi
keberadaan tepi (edge detection). Dalam hal ini, pixel - pixel tepi ditampilkan lebih terang
(highlight ) sedangkan pixel - pixel bukan tepi dibuat gelap (hitam). Masalah pendeteksian tepi
akan dibahas dalam pokok bahasan tersendiri.
Penapis Lolos-Tinggi
Aturan penapis lolos-tinggi [GAL95]:
1.
koefisien penapis boleh positif, negatif, atau nol
2. jumlah semua koefisien adalah 0 atau 1
Jika jumlah koefisien = 0, maka komponen berfrekuensi rendah akan turun nilainya,
sedangkan jika jumlah koefisien sama dengan 1, maka komponen berfrekuensi rendah akan
tetap sama dengan nilai semula.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 126/229
7
Contoh-contoh penapis lolos-tinggi:
(i)
−−−
−−
−−−
111
181
111
(ii)
−−−
−−
−−−
111
191
111
(iii)
−
−−
−
010
151
010
∑ = 0 ∑ = 1 ∑ = 1
(iv)
−
−−
−
121
252
121
(v)
−
−−
−
121
242
121
(vi)
−
010
141
010
∑ = 1 ∑ = 0 ∑ = 0
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
menjadi 0.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 127/229
8
Citra semula:
4444444
4444444
4444444
4444444
4444444
Citra semula:
8888444
8888444
8888444
8888444
8888444
Kurva yang merepresentasikan citra:
0
4
8
x
f ( x ,y )
Kurva yang merepresentasikan citra:
4
8
0 x
f ( x ,y )
Hasil konvolusi dengan penapis (i):
x x x x x x x
x x x x
x x
x x x x x x x
0000000000
00000
Hasil konvolusi dengan penapis (i):
+−
+−
+−
x x x x x x x
x x
x x
x x
x x x x x x x
0012120
0012120
0012120
Hasil konvolusi dengan penapis (ii):
x x x x x x x
x x
x x
x x
x x x x x x x
44444
44444
44444
(a)
Hasil konvolusi dengan penapis (ii):
+−
+−
+−
x x x x x x x
x x
x x
x x
x x x x x x x
882084
882084
882084
(b)
Gambar 7.15 Hasil konvolusi dengan penapis lolos-tinggi: (a) citra yang tidak memiliki
pixel tepi, (b) citra yang mengandung pixel - pixel tepi
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 128/229
9
Gambar 7.16 adalah contoh lain penajaman gambar terhadap citra girl , masing-masing
dengan penapis (ii), (iii), dan (iv).
(a) (b)
(c) (d)
Gambar 7.16 (a) citra girl sebelum penajaman; (b), (c), dan (d) masing-masing adalah hasil
penajaman dengan penapis lolos-tinggi (ii), (iii), dan (iv)
7.9 Pewarnaan Semu
Pewarnaan semu adalah proses memberi warna tertentu pada nilai-nilai pixel suatu citra
skala-abu pada suatu citra berdasarkan kriteria tertentu, misalnya suatu warna tertentu untuk
suatu interval derajat keabuan tertentu. Hal ini dilakukan karena mata manusia mudah
membedakan banyak jenis warna.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 129/229
10
7.10 Koreksi Geometrik
Koreksi geometrik dilakukan pada citra yang memiliki gangguan yang terjadi pada waktu
proses perekaman citra, misalnya pergeseran koordinat citra (translasi), perubahan ukuran
citra, dan perubahan orientasi koordinat citra ( skew). Proses koreksi geometri untuk
meningkatkan kualitas citra tersebut disebut juga koreksi geometri. Koreksi geometri yang
sederhana adalah dengan operasi geometri sederhana seperti rotasi, translasi, dan penskalaan
citra.
Gambar 7.17 kiri adalah citra kota San Fransisco yang condong ( skew) ke kanan. Rotasi
sejauh 6° berlawanan arah jarum jam menghasilkan perbaikan yang ditunjukkan pada
Gambar 8.11 kanan.
(a) (b)
Gambar 7.17 (a) Citra San Fransisco yang condong ke kanan; (b) Hasil rotasi sejauh 6°
berlawanan arah jarum jam.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 130/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 121
Bab 8
Pendeteksian Tepi ( Edge Detection)
eningkatan kualitas citra (image enhancement ) bertujuan menghasilkan citra
dengan kualitas yang lebih baik dibandingkan dengan citra semula. Langkah
selanjutnya dalam pengolahan citra adalah analisis citra (image analysis).
Analisis citra bertujuan mengidentifikasi parameter-parameter yang diasosiasikan
dengan ciri ( feature) dari objek di dalam citra, untuk selanjutnya parameter
tersebut digunakan dalam menginterpretasi citra. Analisis citra pada dasarnya
terdiri dari tiga tahapan: ekstrakasi ciri ( feature extraction), segmentasi, dan
klasifikasi.
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
bergantung pada perubahan intensitas.
P
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 131/229
122 Pengolahan Citra Digital
jarak
perubahan intensitas α = arah tepiα
derajat
keabuan
x 0 x 0
derajat
keabuan
x 0
derajat
keabuan
Gambar 8.1 Model tepi satu-matra
Perhatikan Gambar 8.2. Ada tiga macam tepi yang terdapat di dalam citra digital.Ketiganya adalah:1. Tepi curam
Tepi dengan perubahan intensitas yang tajam. Arah tepi berkisar 90°.
2. Tepi 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
x
d e r a j a t k e a b u a n
(d) break down tepi landai
88888444
88888444
88888444
88888444
88888444
(e) citra dengan tepicuram
88876544
88876544
88876544
88876544
88876544
(f) citra dengan tepi landai
Gambar 8.2 Jenis-jenis tepi
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 132/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 123
8.2 Tujuan Pendeteksian Tepi
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:
),(),1(
),(
y x f y x f x
y x f
G x −+=
∂
∂=
(8.4)
),()1,(),(
y x f y x f y
y x f G y −+=
∂
∂= (8.5)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 133/229
124 Pengolahan Citra Digital
x
y
( x, y) ( x+ 1, y)
( x , y+ 1)
( x, y- 1)
( x- 1, y)
( x+ 1, y+ 1)
( x+ 1, y-1)
( x-1, y+1)
( x-1, y-1)
Titik-titik yang terlibat dalam perhitungan turunan pertama diperlihatkan pada
Gambar 8.3.
Gambar 8.3 Titik-titik yang dilibatkan dalam perhitungan gradien
Kedua turunan tersebut dapat dipandang sebagai dua buah mask konvolusisebagai berikut:
[ ]11)(1 −= xG dan
−=
1
1)(1 yG
Contoh 8.1. [LOW91] Misalkan terdapat sebuah 5 × 5 citra dengan dua derajatkeabuan sebagai berikut:
00011
00011
0011111111
11111
Hasil perhitungan gradien setiap pixel di dalam citra adalah sebagai berikut:
Citra Gradien- x Gradien-y Arah gradien
0001100011
00111
11111
11111
*0010*0010
*0100
*0000
*0000
−−
−
*****
00000
00100
11000
00000
****
****
****
***
*****
↔↔
bb
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 134/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 125
Berdasarkan konvolusi dengan kedua mask tersebut, kita menghitung kekuatan
tepi, G[ f ( x, y)], yang merupakan magnitudo dari gradien, dan arah tepi, α( x, y),
untuk setiap pixel :
G[ f ( x, y)]=22
y x GG + (8.6)
α( x, y) = tan-1 x
y
G
G (8.7)
Karena menghitung akar adalah persoalan rumit dan menghasilkan nilai riil, maka
dalam praktek kekuatan tepi biasanya disederhanakan perhitungannya dengan
menggunakan salah satu dari alternatif rumus berikut [DUL97]:
(i) G[ f ( x, y)] =22
y x GG + , atau
(ii) G[ f ( x, y)] = y x GG + , atau
(iii) G[ f ( x, y)] = },max{22
y x GG , atau
(iv) G[ f ( x, y)] = max{ }, y x GG .
Dalam praktek, persamaan (ii) dan (iv) biasanya lebih disukai dan lebih mudah
dikerjakan karena mengandung jumlah operasi aritmetika yang lebih sedikit.
Hasil pendeteksian tepi adalah citra tepi (edges image) g ( x, y), yang nilai setiap
pixel -nya menyatakan kekuatan tepi:
)],([),( y x f G y x g =
Keputusan apakah suatu pixel merupakan tepi atau bukan tepi dinyatakan dengan
operasi pengambangan berikut:
≥
=lainnya,0
)],([ jika,1),(
T y x f G y x g (8.8)
yang dalam hal ini T adalah nilai ambang, pixel tepi dinyatakan putih sedangkan
pixel bukan tepi dinyatakan hitam. Gambar 8.4 adalah contoh hasil deteksi
semua tepi citra Lena, citra Camera, dan citra botol.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 135/229
126 Pengolahan Citra Digital
Gambar 8.4 Deteksi semua tepi citra Lena, camera, dan botol
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 136/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 127
Selain operator gradien yang sudah disebutkan di atas, masih ada beberapa
operator gradien pertama yang lain yang dapat digunakan untuk mendeteksi tepi
di dalam citra, yaitu:
(a) Operator gradien selisih-terpusat (center-difference):
2
),1(),1(),(),(
y x f y x f
x
y x f y x D x
−−+=∂
∂= (8.9)
2
)1,()1,(),(),(
−−+=
∂
∂=
y x f y x f
y
y x f y x D y (8.10)
yang ekivalen dengan mask berikut:
[ ]101)(2 −= x D dan
−
=
1
0
1
)(2 y D
(b) Operator Sobel
Tinjau pengaturan pixel di sekitar pixel ( x, y):
456
37
210
),(
aaa
a y xa
aaa
Operator Sobel adalah magnitudo dari gradien yang dihitung dengan
M = 22 y x s s +
yang dalam hal ini, turunan parsial dihitung dengan
)()( 670432 acaaacaa s x ++−++= (8.11)
)()( 4562210 acaaacaa s y ++−++= (8.12)
dengan konstanta c = 2. Dalam bentuk mask , s x dan s y dapat dinyatakan
sebagai
−
−
−
=
101
202
101
xS dan
−−−
=
121
000
121
yS
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 137/229
128 Pengolahan Citra Digital
Arah tepi dihitung dengan persamaan
α ( x, y) = tan-1
x
y
S
S (8.13)
Contoh 8.2. Contoh berikut ini memeperlihatkan pendeteksian tepi dengan
operator Sobel. Konvolusi pertama dilakukan terhadap pixel yang bernilai 1 (di
titik pusat mask ):
23152
17524
31753
24612
15243
18*
*****
(i) citra semula (ii) hasil konvolusi
Nilai 18 pada citra hasil konvolusi diperoleh dengan perhitungan berikut:
S x = (3)(-1) + (2)(-2) + (3)(-1) + (2)(1) + (6)(2) + (7)(1) = 11
S y = (3)(1) + (4)(2) + (2)(1) + (3)(-1) + (5)(-2) + (7)(-1) = -7
M = 22 y x s s + = 22 )7(11 −+ ≅ y x S S + = 711 −+ = 18
Pada contoh ini, nilai M = 22 y x s s + dihampiri dengan menghitung
M ≅ y x S S + .
Contoh 8.3. Di bawah ini contoh lain pendeteksian tepi dengan operator Sobel,
dimana hasil konvolusi diambangkan dengan T = 12.
Citra: y x -gradien-gradien + :
34443321002342334010
3333433100
3233420200
3420001000
3302000000
***********8642212122*
*42421014104*
*061216201086*
*414121410464*
**********
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 138/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 129
Hasil pengambangan dengan T = 12:
**********
*8642212122*
*42421014104*
*061216201086*
*414121410464*
**********
(c) Operator Prewitt
Persamaan gradien pada operator Prewitt sama seperti operator Sobel, tetapi
menggunakan nilai c = 1:
−
−
−
=
101
101
101
x P dan
−−−
=
111
000
111
y P
(d) Operator Roberts
Operator Roberts sering disebut juga operator silang (gambar 8.5). Gradien
Roberts dalam arah- x dan arah- y dihitung dengan rumus:
),()1,1(),( y x f y x f y x R −++=+ (8.14)
),1()1,(),( y x f y x f y x R +−+=− (8.15)
f ( x, y) f ( x + 1, y)
f ( x + 1, y+1) f ( x, y+1)
x
Gambar 8.5 Operator silang
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 139/229
130 Pengolahan Citra Digital
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),
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 140/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 131
sedangkan pada tepi yang landai tidak terdapat persilangan nol. Persilangan nol
merupakan lokasi tepi yang akurat.
Turunan kedua fungsi dengan dua peubah adalah:
2
2
2
22
y
f
x
f f
∂
∂+∂
∂=∇ (8.18)
f ( x)
∂ f /∂ x
∂2 f /∂ x2
•
(a) Tepi landai (b) Tepi curam
Gambar 8.6 Deteksi tepi dengan operator turunan kedua
Dengan menggunakan definisi hampiran selisih-mundur (backward difference
approximation):
x
y x x f y x f
x
y x f xG
∆
∆−−=
∂
∂=
),(),(),()(3 (8.19)
y
y y x f y x f
y
y x f yG
∆∆−−=
∂∂= ),(),(),(
)(3 (8.20)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 141/229
132 Pengolahan Citra Digital
maka
2
2
2
22
y
f
x
f f
∂
∂+
∂
∂=∇
))(())(( 3131 yGG xGG +=
)),(()),((1
)),(()),((1
1111 y y x f G y x f G y
y x x f G y x f G x
∆−−∆
+∆−−∆
=
}),(),(),(),(
{1
}),(),(),(),(
{1
y
y y x f y x f y x f y y x f
y
x
y x x f y x f y x f y x x f
x
∆
∆−+−−∆+
∆+
∆
∆−+−−∆+
∆=
2)(
),(),(2),(
x
y x x f y x f y x x f
∆
∆−+−∆+=
2)(
),(),(2),(
y
y y x f y x f y y x f
∆∆−+−∆++
Dengan mengasumsikan ∆ x = ∆ y = 1, maka diperoleh:
)1,(),(2)1,(),1(),(2),1(),(2 −+−++−+−+=∇ y x f y x f y x f y x f y x f y x f y x f
)1,(),1(),(4),1()1,( ++++−−+−= y x f y x f y x f y x f y x f
(8.21)
atau dapat dinyatakan sebagai mask :
−
010
141
010
Selain mask di atas, masih ada dua hampiran operator Laplace yang lain, yaitu
−−−
−−
−−−
111
181
111
dan
−
−−
−
121
242
121
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 142/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 133
Kadang-kadang diinginkan memberi bobot yang lebih pada pixel tengah di antara
pixel tetangganya. Operator Laplace yang digunakan untuk tujuan ini adalah
−
141
4204
141
Operator Laplace termasuk ke dalam penapis lolos-tinggi sebab jumlah seluruh
koefisiennya nol dan koefisiennya mengandung nilai negatif maupun positif.
Contoh 8.5. [GAL90] Contoh berikut ini memperlihatkan pendeteksian tepi
vertikal dengan operator Laplace:
8888444
8888444
8888444
8888444
8888444
0
4
8
-4
0
+4
−+
−+
−+
*******
*00440*
*00440*
*00440*
*******
(i) Citra semula (ii) Hasil konvolusi
Satu baris dari hasil pendeteksian tepi:
0 +4 –4 0 0
Pada contoh di atas, persilangan nol bersesuaian dengan tepi pada citra semula,
yang terdapat pada titik tengah antara dua buah pixel yang bersesuaian. Pixel tepi
seharusnya ditandai secara konsisten, apakah pixel di sebelah kiri atau di sebelah
kanan garis “|”.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 143/229
134 Pengolahan Citra Digital
Contoh 8.6. [GAL90] Pendeteksian tepi diagonal (miring) dengan operator Laplace:
88444444
88844444
88884444
88888444
88888844
−+
−+
−+
********
*048000*
*004800*
*000480*
********
(i) Citra semula (ii) Hasil konvolusi
Contoh 8.7. Pendeteksian tepi landai dengan operator Laplace:
88885222
88885222
8888522288885222
88885222
−+
−+−+
********
*003030*
*003030**003030*
********
(i) Citra semula (ii) Hasil konvolusi
Satu baris dari hasil pendeteksian tepi:
0 +3 0 –3 0
Pada contoh di atas tidak terdapat persilangan nol; lokasi tepi yang sesungguhnya
ditentukan secara interpolasi.
Kadangkala pendeteksian tepi dengan operator Laplace menghasilkan tepi-tepi
palsu yang disebabkan oleh gangguan pada gambar [DUL97]. Untuk mengurangi
kemunculan tepi palsu, citra disaring dulu dengan fungsi Gaussian (Gambar 8.7).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 144/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 135
f ( x, y)
dihaluskan dengan
fungsi Gauss, G( x, y)
h( x, y)
operator Laplace,2∇
k ( x, y)
Gambar 8.7 Skema pendeteksian tepi untuk citra yang mengalami gangguan.
Berdasarkan skema pada Gambar 8.7:
),(),( 2 y xh y xk ∇= (8.22)
dan
),(*),(),( y xG y x f y xh = (8.23)
maka dapat dibuktikan bahwa
),(*),()],(*),([ 22 y xG y x f y xG y x f ∇=∇ (8.24)
Jadi,
),(*),(),( 2 y xG y x f y xk ∇= (8.25)
yang dalam hal ini,
2
22
2
)(
4
2222 2
),( σ
σ
σ
y x
e
y x
y xG
+−
−+
=∇ (8.26)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 145/229
136 Pengolahan Citra Digital
Fungsi ∇2G( x, y) merupakan turunan kedua dari fungsi Gauss, kadang-kadang
disebut juga fungsi Laplacian of Gaussian ( LoG) atau fungsi topi orang Mexico
( Mexican Hat ), karena bentuk kurvanya seperti topi Meksiko.
Jadi, untuk mendeteksi tepi dari citra yang mengalami gangguan, kita dapat
melakukan salah satu dari dua operasi ekivalen di bawah ini:
1. Konvolusi citra dengan fungsi Gauss G( x, y), kemudian lakukan operasi
Laplacian terhadap hasilnya, atau
2. Konvolusi citra dengan penapis LoG.
Contoh penapis LoG yang berukuran 5 × 5:
−−−−
−−−−
−−−
−
0010001210
121621
01210
00100
Hasil pendeteksian tepi dengan operator Laplace dan Laplacian of Gaussian
diperlihatkan pada Gambar 8.8.
(a) (b)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 146/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 137
(c) (d)
Gambar 8.8 (a) citra botol; (b) Laplace; (c) Laplace dengan bobot lebih; (d) Laplacian of Gaussian(LoG)
8.5 Pendeteksian Tepi dengan Operator Kompas
Operator kompas (compass operator ) digunakan untuk mendeteksi semua tepi
dari berbagai arah di dalam citra. Operator kompas yang dipakai untuk
pendeteksian tepi menampilkan tepi dari 8 macam arah mata angin: Utara, Timur
Laut, Timur, Tenggara, Selatan, Barat Daya, dan Barat Laut. Pendeteksian tepidilakukan dengan mengkonvolusikan citra dengan berbagai mask kompas, lalu
dicari nilai kekuatan tepi (magnitude) yang terbesar dan arahnya. Jika misalnya
digunakan sebanyak p buah mask kompas dan nilai kekuatan tepi pada pixel ( x, y)
untuk semua mask adalah G1[ f ( x, y)], G2[ f ( x, y)], …, G p[ f ( x, y)], maka besar
kekuatan tepi adalah:
},...,2,1)],([{max)],([ pi y x f G y x f G ii
== (8.27)
Jika mask k adalah mask yang memberikan kekuatan terbesar, maka arah tepi
ditentukan dari mask k tersebut.
Operator kompas yang dipakai untuk pendeteksian tepi menampilkan tepi dari 8macam arah mata angin:
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 147/229
138 Pengolahan Citra Digital
Utara Timur Laut Timur Tenggara
−−−
−
111
121
111
−−
−−
111
121
111
−
−−
−
111
121
111
−−
−−
111
121
111
Selatan Barat Daya Barat Barat Laut
−
−−−
111
121
111
−−
−−
111
121
111
−
−−
−
111
121
111
−−
−−
111
121
111
Operator kompas yang tersedia dapat juga digunakan untuk mendeteksi tepi
dalam arah tertentu saja. Misalnya diinginkan mendeteksi tepi dalam arah
horizontal dan vertikal, seperti hasil pendeteksian tepi citra San Fransisco
(Gambar 8.9) dan citra WTC1109.
Tepi horizontal Tepi vertikal
Gambar 8.9 Deteksi tepi horizontal dan vertikal dari citra San Fransisco
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 148/229
Bab 8_Pendeteksian Tepi ( Edge Detection) 139
Gambar 8.10. Citra WTC1109
Tepi vertikal
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 149/229
140 Pengolahan Citra Digital
Tepi horizontal
Gambar 8.10 (lanjutan).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 150/229
Bab 9_Kontur dan Representasinya 141
Bab 9
Gambar 9.1 (a) kontur tertutup, (b) kontur terbuk
Kontur dan Representasinya
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)).
(a) (b)
P
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 151/229
142 Pengolahan Citra Digital
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
batas objek dengan kode rantai.
0
1
2
345
6
7batas
objek
titik awal
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 152/229
Bab 9_Kontur dan Representasinya 143
2 2
6 6 66 6 6 4
4
4
223
3
222
7
7
6 6 6 6
2
1
0
0 2
Titik awal
A
Kode rantai: (A), 22222332244466666666667700221
Gambar 9.3 Contoh pengkodean batas objek dengan kode rantai.
Pencocokan Kurva
Kurva yang merepresentasikan kontur dicari dengan teknik pencocokan kurva(curve fitting). Ada dua macam teknik pencocakan kurva: interpolasi dan
penghampiran (approximation). Interpolasi kurva adalah mencari kurva yang
melalui semua pixel tepi, sedangkan penghampiran kurva adalah mencari kurva
yang paling dekat melalui pixel - pixel tepi, tetapi tidak perlu melalui semua pixel
tersebut.
Di dalam bab ini kita hanya membahas teknik pencocokan kurva dengan
penghampiran. Salah satu metode penghampiran kurva yang populer dalam
pengolahan citra adalah transformasi Hough. Transformasi Hough akan dibahas
dalam upa-bab 9.3 di bawah ini.
9.2 Transformasi Hough
Transformasi Hough menspesifikasikan kurva dalam bentuk parametrik. Kurva
dinyatakan sebagai bentuk parametrik
( x(u), y(u))
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 153/229
144 Pengolahan Citra Digital
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
garis lurus pada ruang parameter m – c.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 154/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 155/229
146 Pengolahan Citra Digital
4. Ulangi langkah 3 sampai seluruh pixel di dalam citra tepi ditelusuri.5. Pada akhir prosedur, tiap elemen matriks P (m, c) menyatakan jumlah pixel
tepi yang memenuhi persamaan (1). Tentukan elemen matriks yang memiliki
penumpukan suara cukup besar (yang nilainya di atas nilai ambang tertentu).
Misalkan tempat-tempat itu adalah
{(m1, c1), (m2, c2), …, {(mk , ck ),
Hal ini berarti terdapat k garis lurus yang terdeteksi pada citra.
Tingkat ketelitian dari Transformasi Hough bergantung pada ukuran matriks P (m,
c), yaitu K × L. Kompleksitas komputasi Transformasi Hough pada kasusterburuk adalah O( Kn), yang dalam hal ini K adalah jumlah pembagian parameter
m, dan n adalah jumlah pixel di dalam citra tepi. Karena O( Kn) < O(n3), maka
pendeteksian garis lurus dengan Transformasi Hough lebih cepat daripada metode
exhaustive search.
Model parametrik pada persamaan 9.2 tidak dapat digunakan untuk mendeteksi
garis vertikal atau hampir vertikal karena gradiennya (m) menuju nilai tak-
berhingga. Karena itu, garis dinyatakan dalam representasi polar:
r = x cos θ + y sin θ (9.4)
yang dalam hal ini r adalah jarak garis ke titik asal (Gambar 9.5).
x
y
r
θ
r
θ
),( θ r
Gambar 9.5 Representasi polar dari garis lurus
Sembarang garis yang melalui ( x1, y1) pada ruang x – y berkoresponden dengan
kurva sinusoida r = x1 cos θ + y1 sin θ pada ruang r – θ . Pixel - pixel yang terletak
segaris pada citra tepi berkoresponden dengan titik potong seluruh kurva
sinusoidanya pada ruang parameter r – θ .
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 156/229
Bab 9_Kontur dan Representasinya 147
Algoritma 9.1 Transformasi Hough
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++)
{ r = k*COS[i] + l*SIN[i];b = SQRTD;
r+=b; r/=(SQRTD*2.0); r*=(m-1); r+=0.5; j=floor(r); P[i][j]++; } } }}
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 157/229
148 Pengolahan Citra Digital
void LookUpTable(float *COS, *SIN, int m)/* Membuat tabel cosinus dan sinus untuk fungsi COS dan SIN.
Masukan: m adalah jumlah baris tabel
Keluaran: tabel COS dan tabel SIN
*/
{ int i;
float th, R_TO_D = 0.017453
for(i=0;i<=p-1;i++) { th = (float)i * 180.0/(m-1)-90.0; th = th * R_TO_D; COS[i] = (double) cos((double)th); SIN[i] = (double) sin((double)th); }
Algoritma 9.2 Transformasi Hough
Setelah Transformasi Hough selesai dilakukan, langkah berikutnya adalah
melakukan operasi pengambangan (thresholding ) untuk menentukan tempat-
tempat pada ruang paramater r – θ yang mempunyai penumpukan suara lebih besar
dari nilai ambang T . Elemen matriks P yang nilainya di atas nilai ambang tersebut
menyatakan parameter garis lurus. Misalkan tempat-tempat itu adalah {(m1, c1),
(m2, c2), …, {(mk , ck ), hal ini berarti terdapat k garis lurus yang terdeteksi pada
citra. Algoritma pengambangan ditunjukkan pada Algoritma 9.3.
void threshold(imatriks P, int n, in m, int T)/* Melakukan pengambangan pada matriks parameter P.
Setiap elemen matriks P yang nilainya di atas T menyatakan parameter
garis lurus.
Masukan: matriks parameter P yang berukuran n x m.
Keluaran: matriks parameter P yang sudah di-threshold.
*/
{ int i, j;
for(i=0;i<n;i++) for(j=0;j<m;j++) if (P[i][j]>T) P[i][j]=1; else P[i][j=0;
}
Algor itma 9.3 Pengambangan hasil transformasi Hough
Pixel - pixel tepi yang termasuk di dalam garis lurus hasil deteksi Transformasi
Hough dapat dihasilkan dengan algoritma Transformasi Hough Balikan
(inverse Hough Transform). Untuk setiap elemen matriks Par yang bernilai 1,
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 158/229
Bab 9_Kontur dan Representasinya 149
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);
/* inisialisasi citra keluaran dengan 0 */
for(kk=0;kk<=p-1;kk++) for(ll=0;ll<=q-1;ll++) Out[p][q]=0;
/* Matriks parameter P telah dilakukan operasi thresholding.
Untuk setiap elemen P yang bernilai 1, garis lurus yang
bersesuaian digambarkan ke dalam matriks Out.
Operasi and dengan citra tepi dikerjakan.
for (k=0;k<=p-1;k++) for (l=0;l<=q-1;l++) { y=(float)0.0; if (P[k][l]==1) /* atau P[k][l]== 255 */
{ for (i=0;i<=N-1;i++) { r = (float)l * 2.0 * SQRTD/(m-1) – SQRTD; if (SIN[k]==(float)0.0)
y++; else y=(r – (float)i * COS[k])/SIN[k];
y+=0.5; j=floor(y);
if (j >=0 && j < M) if (Edge[i][j]==1) Out[i][j]++; } } }}
Algoritma 9.4 Transformasi Hough Balikan
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 159/229
150 Pengolahan Citra Digital
( xi, y
i)(a,b)
R
Mendeteksi LingkaranTransformasi Hough dapat juga digunakan untuk mendeteksi bentuk lingkaran di
dalam citra tepi. Persamaan lingkaran yang berpusat di titik (a, b) dengan jari-jari
r adalah
222)()( r b ya x =−+− (9.5)
Jadi, ruang parameter untuk lingkaran adalah r – a – b , sehingga matriks trimatra
P (r , a, b) dibutuhkan untuk menyimpan perhitungan suara.
Persamaan polar untuk setiap titik ( x, y) di lingkaran:
x = a + r cos θ (9.6)
y = b + r sin θ (9.7)
Persamaan (9.6) dan (9.7) dapat ditulis menjadi persamaan
a = x – r cos θ (9.8)
b = y – r sin θ (9.9)
Pada operasi deteksi tepi, selain magnitudo pixel tepi, juga dihasilkan arah tepi, θ .
Karena itu, cos θ dan sin θ dapat dihitung.
Misalkan ( xi, yi) adalah pixel tepi dan θ adalah arah tepi . Ada dua kasus yangakan ditinjau:
(i) jika jari-jari lingkaran diketahui, (ii) jika jari-jari lingkaran tidak diketahui.
Kasus 1: Jari-jari lingkaran diketahui
Jika jari-jari jari-jari lingkaran diketahui r = R, maka ruang parametrik trimatra,
P (r ,a,b), dapat direduksi menjadi ruang dwimatra, P (a,b).
Gambar 9.5 Proses penumpukan suara untuk mendeteksi lingkaran
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 160/229
Bab 9_Kontur dan Representasinya 151
Titik pusat lingkaran, (a,b), yang mempunyai jari-jari r = R dan melalui titik ( x i, yi) dapat dihitung dengan persamaan
a = xi – R cos θ (9.10)
b = yi – R sin θ (9.11)
seperti yang ditunjukkan pada Gambar 9.5, lalu tambahkan elemen P (a, b) yang
bersesuaian dengan satu. Proses ini diulangi untuk pixel - pixel tepi yang lain.
Elemen matriks P (a, b) yang memiliki jumlah suara di atas nilai ambang tertentu
menyatakan lingkaran yang terdapat di dalam citra tepi.
Kasus 2: Jari-jari lingkaran tidak diketahuiJika jari-jari lingkaran tidak diketahui, maka penumpukan suara dilakukan untuk
semua nilai r , 0 < r ≤ r max, nilai a dan b untuk pixel tepi ( xi, y i) dihitung dengan
persamaan
a = xi – r cos θ (9.12)
b = yi – r sin θ (9.13)
dan elemen P (r , a, b) yang bersesuaian dinaikkan satu. Proses ini diulangi untuk
pixel - pixel tepi yang lain. Elemen matriks P (r , a, b) yang memiliki jumlah suara
di atas nilai ambang tertentu menyatakan lingkaran yang terdapat di dalam citra
tepi.
Persamaan (9.12) dan (9.13) dapat dimanipulasi dengan mengeliminasi r dari
kedua persamaan:
a = x – r cos θ →θ cos
)( a xr
−=
b = y – r sin θ → θ θ
sincos
)( a x yb
−−= = θ tan)( a x y −−
b = a tan θ – x tan θ + y (9.14)
Dengan demikian, maka ruang parametrik trimatra, P (r ,a,b), dapat direduksi
menjadi ruang dwimatra, P (a,b). Untuk untuk semua nilai r , yang dalam hal ini a1
< a ≤ aK , nilai ordinat b dari titik pusat lingkaran (a,b) yang melalui titik ( xi, y i)
dapat dihitung dengan persamaan (11), lalu tambahkan elemen P (a, b) yang
bersesuaian dengan satu. Proses ini diulangi untuk pixel - pixel tepi yang lain.
Elemen matriks P (a, b) yang memiliki jumlah suara di atas nilai ambang tertentu
menyatakan lingkaran yang terdapat di dalam citra tepi.
Gambar 9.6 memperlihatkan hasil transformasi Hough untuk mendeteksi
lingkaran dari citra slope dengan menggunakan nilai ambang T = 30.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 161/229
152 Pengolahan Citra Digital
r
N
( x, y)
(a,b)
α
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
))(cos()( θ α θ r xa −= (9.15)
))(sin()( θ α θ r yb −= (9.16)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 162/229
Bab 10_Pemampatan Citra 153
Bab 10
Pemampatan Citra
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
P
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 163/229
154 Pengolahan Citra Digital
representasi memori yang lebih sedikit daripada representasi aslinya itulah yang
dinamakan pemampatan citra.
Ada dua proses utama dalam persoalan pemampatan citra:
1.
Pemampatan citra (image compression).Pada proses ini, citra dalam representasi tidak mampat dikodekan dengan
representasi yang meminimumkan kebutuhan memori. Citra dengan format
bitmap pada umumnya tidak dalam bentuk mampat. Citra yang sudah
dimampatkan disimpan ke dalam arsip dengan format tertentu. Kita mengenal
format JPG dan GIF sebagai format citra yang sudah dimampatkan.
2. Penirmampatkan citra (image decompression).
Pada proses ini, citra yang sudah dimampatkan harus dapat dikembalikan
lagi (decoding ) menjadi representasi yang tidak mampat. Proses ini
diperlukan jika citra tersebut ditampilkan ke layar atau disimpan ke dalam
arsip dengan format tidak mampat. Dengan kata lain, penirmampatan citra
mengembalikan citra yang termampatkan menjadi data bitmap.
10.2 Aplikasi Pemampatan Citra
Pemampatan citra memberikan sumbangsih manfaat yang besar dalam industri
multimedia saat ini. Pemampatan citra bermanfaat untuk aplikasi yang
melakukan:
1. Pengiriman data (data transmission) pada saluran komunikasi dataCitra yang telah dimampatkan membutuhkan waktu pengiriman yang lebih
singkat dibandingkan dengan citra yang tidak dimampatkan. Contohnya
aplikasi pengiriman gambar lewat fax, videoconferencing , pengiriman datamedis, pengiriman gambar dari satelit luar angkasa, pengiriman gambar via
telepon genggam. download gambar dari internet, dan sebagainya.
2. Penyimpanan data (data storing ) di dalam media sekunder ( storage)
Citra yang telah dimampatkan membutuhkan ruang memori di dalam media
storage yang lebih sedikit dibandingkan dengan citra yang tidak
dimampatkan. Contoh aplikasi nya antara lain aplikasi basisdata gambar,
office automation, video storage (seperti Video Compact Disc), dll.
10.3 Kriteria Pemampatan Citra
Saat ini sudah banyak ditemukan metode-metode pemampatan citra. Kriteria
yang digunakan dalam mengukur metode pemampatan citra adalah [LOW91]:
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 164/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 165/229
156 Pengolahan Citra Digital
∑∑= =
−×
= N
i
M
j
ijij f f rms1 1
2)'(TinggiLebar
1 (10.2)
yang dalam hal ini, f dan ' f masing-masing menyatakan nilai pixel citra
semula dan nilai pixel citra hasil pemampatan. PSNR memiliki satuan decibel
(dB). Persamaan (10.2) menyatakan bahwa PSNR hanya dapa dihitung
setelah proses pernirmapatan citra. Dari persamaan (10.2) terlihat abhwa
PSNR berbanding terbalik dengan rms. Nilai rms yang rendah yang
menyiratkan bahwa citra hasil pemampatan tidak jauh berbeda dengan citra
semula akan menghasilkan PSNR yang tinggi, yang berarti kualitas
pemampatannya bagus. Semakin besar nilai PSNR, semakin bagus kualitas
pemampatannya. Seberapa besar nilai PSNR yang bagus tidak dapatdinyatakan secara eksplisit, bergantung pada citra yang dimampatkan. Namun
kita dapat mengetahui hal ini jika kita melakukan pengujian dengan mencoba
berbagai kombinasi parameter pemampatan yang digunakan. Jika nilai PSNR
semakin membesar, itu berarti parameter pemampatan yang digunakan sudah
menuju nilai yang baik. Parameter pemampatan citra bergantung pada metode pemamapatan yang digunakan.
4. Format keluaran
Format citra hasil pemampatan sebaiknya cocok untuk pengiriman dan
penyimpanan data. Pembacaan citra bergantung pada bagaimana citratersebut direpresentasikan (atau disimpan).
Pemilihan kriteria yang tepat bergantung pada pengguna dan aplikasi. Misalnya,
apakah pengguna menginginkan pemampatan yang menghasilkan kualitas yang
bagus, namun pengurangan memori yang dibutuhkan tidak terlalu besar, atau
sebaliknya. Atau jika waktu pemampatan dapat diabaikan dari pertimbangan(dengan asumsi bahwa pemampatan hanya sekali saja dilakukan, namun
pernirmampatan dapat berkali-kali), maka metode yang menghasilkan waktu
penirmampatan yang cepat yang perlu dipertimbangkan.
10.4 Jenis Pemampatan Citra
Ada empat pendekatan yang digunakan dalam pemampatan citra [LOW91]:
1. Pendekatan statistik.
Pemampatan citra didasarkan pada frekuensi kemunculan derajat keabuan
pixel di dalam seluruh bagian gambar.Contoh metode: Huffman Coding .
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 166/229
Bab 10_Pemampatan Citra 157
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.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 167/229
158 Pengolahan Citra Digital
Gambar 10.1 Citra kapal sebelum dimampatkan
Gambar 10.2 Citra kapal setelah dimampatkan dengan sebuah metode lossy
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 168/229
Bab 10_Pemampatan Citra 159
10.6 Metode Pemampatan Huffman
Metode pemampatan Huffman menggunakan prinsip bahwa nilai (atau derajat)
keabuan yang sering muncul di dalam citra akan dikodekan dengan jumlah bit
yang lebih sedikit sedangkan nilai keabuan yang frekuensi kemunculannya
sedikit dikodekan dengan jumlah bit yang lebih panjang.
Algoritma metode Huffman:
1. Urutkan secara menaik (ascending order ) nilai-nilai keabuan berdasarkan
frekuensi kemunculannya (atau berdasarkan peluang kemunculan, pk , yaitu
frekuensi kemunculan (nk ) dibagi dengan jumlah pixel di dalam gambar (n)).
Setiap nilai keabuan dinyatakan sebagai pohon bersimpul tunggal. Setiap
simpul di-assign dengan frekuensi kemunculan nilai keabuan tersebut.
2. Gabung dua buah pohon yang mempunyai frekuensi kemunculan paling kecil
pada sebuah akar. Akar mempunyai frekuensi yang merupakan jumlah dari
frekuensi dua buah pohon penyusunnya.
3. Ulangi langkah 2 sampai tersisa hanya satu buah pohon biner.
Agar pemilihan dua pohon yang akan digabungkan berlangsung cepat, maka
semua pohon yang ada selalu terurut menaik berdasarkan frekuensi.
4. Beri label setiap sisi pada pohon biner. Sisi kiri dilabeli dengan 0 dan sisi
kanan dilabeli dengan 1.
Simpul-simpul daun pada pohon biner menyatakan nilai keabuan yang terdapat di
dalam citra semula. Untuk mengkodekan setiap pixel di dalam di dalam citra,
lakukan langkah kelima berikut:
5. Telusuri pohon biner dari akar ke daun. Barisan label-label sisi dari akar ke
daun menyatakan kode Huffman untuk derajat keabuan yang bersesuaian.
Setiap kode Huffman merupakan kode prefiks, yang artinya tidak ada kode biner
suatu nilai keabuan yang merupakan awalan bagi kode biner derajat keabuan
yang lain. Dengan cara ini, tidak ada ambiguitas pada proses penirmampatan
citra.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 169/229
160 Pengolahan Citra Digital
Contoh 10.1. Misalkan terdapat citra yang berukuran 64 × 64 dengan 8 derajat
keabuan (k ) dan jumlah seluruh pixel (n) = 64 × 64 = 4096
k nk p(k ) = nk /n
0 790 0.191 1023 0.25
2 850 0.21
3 656 0.16
4 329 0.08
5 245 0.06
6 122 0.03
7 81 0.02
Proses pembentukan pohon Huffman yang terbentuk dapat dilihat pada Gambar
10.3. Setiap simpul di dalam pohon berisi pasangan nilai a:b, yang dalam hal ini
a menyatakan nilai keabuan dan b menyatakan peluang kemunculan nilaikeabuan tersebut di dalam citra. Dari pohon Huffman tersebut kita memperoleh
kode untuk setiap derajat keabuan sebagai berikut:
0 = 00 2 = 01 4 = 1110 6 = 111101
1 = 10 3 = 110 5 = 11111 7 = 111100
Ukuran citra sebelum pemampatan (1 derajat keabuan = 3 bit) adalah 4096 × 3 bit
= 12288 bit, sedangkan Ukuran citra setelah pemampatan:
(790 × 2 bit) + (1023 × 2 bit) + (850 × 2 bit) +
(656 × 3 bit) + (329 × 4 bit) + (245 × 5 bit) +
(122 × 6 bit) + (81 × 6 bit) = 11053 bit
Jadi, kebutuhan memori telah dikurangi dari 12288 bit menjadi 11053 bit. Jelas
ini tidak banyak menghemat, tetapi jika 256 nilai keabuan yang digunakan
(dibanding dengan 8 derajat keabuan deperti pada contoh di atas) , penghematan
memori dapat bertambah besar.
Nisbah pemampatan = %10%)10012288
11053%100( =×− , yang artinya 10% dari
citra semula telah dimampatkan.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 170/229
Bab 10_Pemampatan Citra 161
7:0.02 6:0.03
2. 76:0.05
3.
7:0.02 6:0.03 5:0.06 4:0.08 3:0.16 0:0.191. 2:0.21 1:0.25
5:0.06 4:0.08 3:0.16 0:0.19 2:0.21 1:0.25
4:0.08
7:0.02 6:0.03
76:0.05 5:0.06
765:0.11 3:0.16 0:0.19 2:0.21 1:0.25
4:0.08
7:0.02 6:0.03
76:0.05 5:0.06
765:0.11
3:0.16 0:0.19 2:0.21 1:0.254765:0.194.
0:0.19 2:0.21 1:0.255.
4:0.08
7:0.02 6:0.03
76:0.05 5:0.06
765:0.11
4765:0.193:0.16
34765:0.35
Gambar 10.3 Tahapan pembentukan pohon Huffman untuk Contoh 10.1 di atas
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 171/229
162 Pengolahan Citra Digital
1:0.256.
0:0.19 2:0.21
4:0.08
7:0.02 6:0.03
76:0.05 5:0.06
765:0.11
4765:0.193:0.16
34765:0.35 02:0.40
7.
1:0.25
4:0.08
7:0.02 6:0.03
76:0.05 5:0.06
765:0.11
4765:0.193:0.16
34765:0.35
134765:0.60
0:0.19 2:0.21
02:0.40
1:0.25
4:0.08
7:0.02 6:0.03
76:0.05 5:0.06
765:0.11
4765:0.193:0.16
34765:0.35
134765:0.60
0:0.19 2:0.21
02:0.40
02134765:
1.00
8.
Gambar 10.3 (lanjutan)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 172/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 173/229
164 Pengolahan Citra Digital
Nisbah pemampatan = %67.27%)100300
217%100( =×− , yang artinya 27.67%
dari citra semula telah dimampatkan.
Versi lain dari metode RLE adalah dengan menyatakan seluruh baris citra
menjadi sebuah baris run, lalu menghitung run-length untuk setiap derajatkeabuan yang berurutan. Sebagai contoh, tinjau sebuah citra sebagai berikut:
1 2 1 1 1 11 3 4 4 4 41 1 3 3 3 51 1 1 1 3 3
Nyatakan sebagai barisan nilai derajat keabuan:
1 2 1 1 1 1 1 3 4 4 4 4 1 1 3 3 3 5 1 1 1 1 3 3
semuanya ada 24 nilai.
Pasangan nilai dari run yang dihasilkan dengan metode pemampatan RLE :
(1, 1) (2, 1) (1, 5) (3, 1) (4, 4) (1, 2) (3, 3) (5, 1) (1, 4) (3, 2)
Hasil pengkodean:
1 1 2 1 1 5 3 1 4 4 1 2 3 3 5 1 1 4 3 2
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
kelompok mempunyai kira-kira P /n buah pixel .
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 174/229
Bab 10_Pemampatan Citra 165
3. Nyatakan setiap kelompok dengan derajat keabuan 0 sampai n –1. Setiap pixel di dalam kelompok dikodekan kembali dengan nilai derajat keabuanyang baru.
Contoh 10.3. [LOW91] Tinjau citra yang berukuran 5 × 13 pixel :
2 9 6 4 8 2 6 3 8 5 9 3 7
3 8 5 4 7 6 3 8 2 8 4 7 3
3 8 4 7 4 9 2 3 8 2 7 4 93 9 4 7 2 7 6 2 1 6 5 3 0
2 0 4 3 8 9 5 4 7 1 2 8 3
yang akan dimampatkan menjadi citra dengan 4 derajat keabuan (0 s/d 3), jadi
setiap derajat keabuan direpresentasikan dengan 2 bit.
Histogram citra semula:
0 **
1 **
2 *********3 ***********
4 *********
5 ****
6 *****
7 ********
8 *********
9 ******
Ada 65 pixel , dikelompokkan menjadi 4 kelompok derajat keabuan. Tiap
kelompok ada sebanyak rata-rata 65/4 = 16.25 pixel per kelompok:
------------------------------------------------------0 **
13 1 ** 0
2 *********
------------------------------------------------------
20 3 ***********
4 ********* 1
-----------------------------------------------------
5 ****
17 6 ***** 2
7 ********
-----------------------------------------------------
15 8 ********* 3
9 ******
-----------------------------------------------------
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 175/229
166 Pengolahan Citra Digital
Citra setelah dimampatkan menjadi:
0 3 2 1 3 0 2 1 3 2 3 1 2
1 3 2 1 2 2 1 3 0 3 1 2 1
1 3 1 2 1 3 0 1 3 0 2 1 3
1 3 1 2 0 2 2 0 0 2 2 1 00 0 1 1 3 3 2 1 2 0 0 3 0
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
(Bab 14).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 176/229
Bab 11_Citra Biner 167
Bab 11
Citra Biner
itra biner (binary image) adalah citra yang hanya mempunyai dua nilai
derajat keabuan: hitam dan putih. Meskipun saat ini citra berwarna lebih
disukai karena memberi kesan yang lebih kaya daripada citra biner, namun
tidak membuat citra biner mati. Pada beberapa aplikasi citra biner masih tetap
dibutuhkan, misalnya citra logo instansi (yang hanya terdiri atas warna hitam dan
putih), citra kode batang (bar code) yang tertera pada label barang, citra hasil
pemindaian dokumen teks, dan sebagainya. Bab 10 ini akan memaparkan beberapa
konsep dan teknik pengolahan citra biner.
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.
(a) Citra logo (b) Citra lukisan mobil
C
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 177/229
168 Pengolahan Citra Digital
1 1
1
1
1
1
1
1
1 1
1
1
1
1
1
1
1
1 1 1 1 1
1
1
1
1 1 1
1
1
1 1 1
00 0 0 000000
0
0 0
0 0
0 0
0 0
0
0
0
0
0
0
00
0
0
0
00
0
0
0
00
0
0
0
000
000
00
0
0
0
000
000
0000
0
0
00
00
(c) Citra teks (hasil pemindaian
dokumen)
23942 414800 3
(d) Citra kode batang (bar code)
Gambar 11.1 Beberapa contoh citra biner
Gambar 11.2 Huruf “B” dan representasi biner dari derajat keabuannya.
Meskipun komputer saat ini dapat memproses citra hitam-putih ( greyscale)
maupun citra berwarna, namun citra biner masih tetap dipertahankan
keberadaannya. Alasan penggunaan citra biner adalah karena ia memiliki
sejumlah keuntungan sebagai berikut:
1. Kebutuhan memori kecil karena nilai derajat keabuan hanya membutuhkan
representasi 1 bit. Kebutuhan memori untuk citra biner masih dapat
berkurang secara berarti dengan metode pemampatan run-length encoding
( RLE ). Metode RLE akan dijelaskan kemudian.
2. Waktu pemrosesan lebih cepat dibandingkan dengan citra hitam-putih karena
banyak operasi pada citra biner yang dilakukan sebagai operasi logika ( AND,
OR, NOT , dll) ketimbang operasi aritmetika bilangan bulat.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 178/229
Bab 11_Citra Biner 169
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
pengambangan:
≤=
lainnya,0),(,1),( T ji f ji f g
B (11.1)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 179/229
170 Pengolahan Citra Digital
r
P (r )
T
kelas 0
kelas 1
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.3 Penentuan nilai ambang T
.
(a) (b)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 180/229
Bab 11_Citra Biner 171
Gambar 11.5 Operasi pengambangan pada citra Lena
(c) (d)
Gambar 11.4 (a) Citra botol, (b) histogram, (c) T = 90, dan (d) T = 100
(a) Citra Lena (b) Histogram citra Lena
(c) T = 128 (d) T = 150
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 181/229
172 Pengolahan Citra Digital
Jika nilai intensitas objek diketahui dalam selang [T 1, T 2], maka kita dapat
menggunakan fungsi pengambangan:
≤≤
=lainnya,0
),(,1),( 21 T ji f T
ji f g B (11.2)
b. Pengambangan secara lokal adaptif (locally adaptive image thresholding )
Pengambangan secara global tidak selalu tepat untuk seluruh macam gambar.
Beberapa informasi penting di dalam gambar mungkin hilang karena pengambangan
global ini. Lagipula, tidak ada harga nilai ambang yang berlaku secara global
untuk seluruh daerah citra (misalnya pada citra kedokteran, citra pemandangan
alam, dsb).
Pengambangan secara lokal dilakukan terhadap daerah-daerah di dalam citra.
Dalam hal ini citra dipecah menjadi bagian-bagian kecil, kemudian proses
pengambangan dilakukan secara lokal. Nilai ambang untuk setiap bagian belumtentu sama dengan bagian lain. Sebagai contoh, pengambangan dilakukan
terhadap daerah citra yang berukuran 3 × 3 atau 5 × 5 pixel . Nilai ambangnya
ditentukan sebagai fungsi rata-rata derajat keabuan di dalam dearah citra tersebut.
Intensitas pixel yang berbeda secara signifikan dari nilai rata-rata tersebut
dianggap mengandung informasi kontras dan ini harus dipertahankan di dalam
citra biner.
Dengan pengambangan secara lokal adaptif, secara subjektif citra biner yang
dihasilkan terlihat lebih menyenangkan dan sedikit informasi yang hilang.
11.3 Penapis Luas
Proses pengambangan menghasilkan citra biner. Seringkali citra biner yang
dihasilkan mengandung beberapa daerah yang dianggap sebagai gangguan.
Biasanya daerah gangguan itu berukuran kecil. Penapis luas dapat digunakan
untuk menghilangan daerah gangguan tersebut [JAI95]. Misalkan objek yang
dianalisis diketahui mempunyai luas yang lebih besar dari T . Maka, pixel - pixel
dari daerah yang luasnya di bawah T dinyatakan dengan 0. Dengan cara ini,
daerah yang berupa gangguan dapat dihilangkan (Gambar 11.6 dan 11.7).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 182/229
Bab 11_Citra Biner 173
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)
b. Panjang run, dimulai dengan panjang run 1.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 183/229
174 Pengolahan Citra Digital
Contoh 11.1. Misalkan citra binernya adalah sebagai berikut
1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
Hasil pengkodean dengan metode RLE:
(i) pendekatan pertama:
(1, 3) (7, 2) (12, 4) (17, 2) (20, 3)
(5, 13) (19, 4)
(1, 3) (17, 6)
(ii) pendekatan kedua
3, 3, 2, 3, 4, 1, 2, 1, 3
0, 4, 13, 1, 4
3, 13, 6
11.5 Segmentasi Citra Biner
Proses awal yang dilakukan dalam menganalisis objek di dalam citra biner adalah
segmentasi objek. Proses segmentasi bertujuan mengelompokkan pixel - pixel
objek menjadi wilayah (region) yang merepresentasikan objek.
Ada dua pendekatan yang digunakan dalam segmentasi objek:
1. Segmentasi berdasarkan batas wilayah (tepi dari objek).
Pixel - pixel tepi ditelusuri sehingga rangkaian pixel yang menjadi batas
(boundary) antara objek dengan latar belakang dapat diketahui secara
keseluruhan (algoritma boundary following ).
2. Segmentasi ke bentuk-bentuk dasar (misalnya segmentasi huruf menjadi
garis-garis vertikal dan horizontal, segmentasi objek menjadi bentuk lingkaran,
elips, dan sebagainya).
Kita hanya akan membahas pendekatan pertama.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 184/229
Bab 11_Citra Biner 175
Segmentasi berdasarkan batas wilayah.
Pada citra biner, batas antara objek dengan latar belakang terlihat jelas. Pixel
objek berwarna hitam sedangkan pixel latar belakang berwarna putih. Pertemuan
antara pixel hitam dan putih dimodelkan sebagai segmen garis. Penelusuran batas
wilayah dianggap sebagai pembuatan rangkaian keputusan untuk bergerak lurus,
belok kiri, atau belok kanan seperti yang diperlihatkan pada Gambar 11.8.
Gambar 11.8 Proses penelusuran batas wilayah dalam citra biner [DUL97].
Pixel yang bertanda • menyatakan pixel yang sedang ditelaah. Penelusur harus
menentukan arah pixel tepi berikutnya bergantung pada pixel - pixel sekitarnya.
Algoritma menentukan arah berikutnya:
if DepanTidakSama(arah,x,y) then
Belok kanan (arah,x,y)
else
if SilangSama(arah,x,y) then
Belok kiri (arah,x,y)
else
Lurus (arah,x,y)
endif
endif
Metode pendeteksian batas wilayah yang lain adalah pendeteksian secara
topologi. Pada metode topologi, setiap kelompok 4- pixel bertetangga diperiksa,
dan bila kelompok tersebut sama dengan salah satu bentuk pada Gambar 11.9,
maka pada titik tengah dari kelompok pixel tersebut terdapat tepi.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 185/229
176 Pengolahan Citra Digital
Gambar 11.9 Bentuk-bentuk yang menghasilkan titik tepi [MEN89].
Titik tepi yang dideteksi selanjutnya dihubungkan oleh garis-garis penghubung.
Arah garis penghubung dikodekan dengan kode rantai (chain code).
11.6 Representasi Wilayah
Wilayah (region) di dalam citra biner dapat direpresentasikan dalam beberapa
cara. Salah satu cara yang populer adalah representasi wilayah dengan pohon-
empatan (quadtree). Setiap simpul di dalam pohon-empatan merupakan salahsatu dari tiga ketagori: putih, hitam, dan abu-abu. Pohon-empatan diperoleh
dengan membagi citra secara rekursif. Wilayah di dalam citra dibagi menjadi
empat buah upa-wilayah yang berukuran sama. Untuk setiap upa-wilayah, bila
pixel-pixel di dalam wilayah tersebut semuanya hitam atau semuanya putih, maka
proses pembagian dihentikan. Sebaliknya, bila pixel-pixel di dalam upa-wilayah
mengandung baik pixel hitam mapupun pixel putih (kategori abu-abu), maka upa-
wilayah tersebut dibagi lagi mejadi empat bagian. Demikian seterusnya sampai
diperoleh upa-wilayah yang semua pixel -nya hitam atau semua pixel -nya putih.
Proses pembagian tersebut digambarkan dengan pohon-empatan. Dinamakan
pohon-empatan karena setiap simpul mempunyai tepat empat anak, kecuali
simpul daun. Gambar 10.10 memperlihatkan contoh representasi wilayah dengan
pohon empatan.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 186/229
Bab 11_Citra Biner 177
F
M
A
C
L K
J I
H G
B
E D A
B C D E
F
G H
I J K
M
L
Kode: gwgwbbwbgwwgwwgwwbbb
Di-decode sebagai: g (wg (wbbw)bg (wwg (wwbb)b))Keterangan: b = black , w = white, g = gray
(a) Citra biner (b) Pohon-empatan
Gambar 11.10 Representasi wilayah dengan pohon-empatan
11.7 Properti Geometri
Setelah proses segmentasi objek selesai dilakukan, maka proses berikutnya adalah
menganalisis objek untuk mengenali objek tersebut. Analisis objek didasarkan
pada ciri khas ( feature) geometri pada objek tersebut. Kita asumsikan di dalam
citra biner hanya terdapat 1 buah objek.
Ada dua kelompok ciri khas pada objek [JAI95]:
a. Global feature, yaitu ciri khas keseluruhan objek. b. Local feature, yaitu ciri khas bagian tertentu dari objek.
Besaran yang termasuk global feature:
(i) Luas atau ukuran objek ( A)
∑∑= =
=n
i
m
j
ji f A1 1
),( (11.3)
Catatan: f (i, j) = 1 jika (i, j) adalah pixel objek
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 187/229
178 Pengolahan Citra Digital
(ii) Pusat massa
Berguna untuk menentukan posisi objek.
A
ji f j
x
n
i
m
j
∑∑= =
=
1 1
),(.
(11.4)
A
ji f i
y
n
i
m
j
∑∑= =
=1 1
),(.
(11.5)
(iii) Momen inersia ( M )
A
ji f j
M
n
i
m
j x
∑∑= =
= 1 1
2),(.
(11.6)
A
ji f i
M
n
i
m
j
y
∑∑= =
=1 1
2 ),(.
(11.7)
(iv) Keliling objek ( K )
Menghitung panjang batas wilayah. Pixel dalam batas wilayah horizontal atau
vertikal dianggap satu satuan panjang, sedangkan pixel pada arah diagonal
panjangnya√
2 satuan.
(v) Tinggi (T )
Dihitung dari jarak vertikal dari pixel tertinggi dan terendah dari objek. Jarak
antara pixel (i1, j1) dan pixel (i2, j2) dapat dihitung dengan bermacam-macam
rumus:
- Euclidean
221
221Euclidean )()( j jiid −+−= (11.8)
- City-block
2121city j jiid −+−= (11.9)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 188/229
Bab 11_Citra Biner 179
- Chessboard
),(max 2121chess j jiid −−= (11.10)
(vi) Lebar ( L)Dihitung dari jarak horizontal dari pixel tertinggi dan terendah dari objek.
(vii) Diameter
Dihitung dari jarak paling jauh dari dua titik pada objek.
(viii) Kompleksitas bentuk
Menyatakan seberapa rumitnya suatu bentuk. Didefinisikan sebagai K 2/A,
yang dalam hal ini K = keliling, A = luas.
(ix) ProyeksiMenyatakan bentuk yang diperoleh dari hasil proyeksi objek terhadap garis
sumbu.Proyeksi citra biner terhadap garis horizontal dan garis vertikal dihitung
dengan rumus:
∑=
=m
j
ji f i H 1
),()( (11.11)
∑=
=n
i
ji f iV 1
),()( (11.12)
Sedangkan besaran yang termasuk local feature antara lain:
(i)
Arah dan panjang segmen garis lurusArah garis dinyatakan dengan kode Freeman, sedangkan panjang garis
dihitung sebagai jarak antara ujung-ujung garis.
(ii) Sudut antar garis
Menyatakan besar sudut antara dua garis lurus yang berpotongan.
(iii) Jarak relatif
Dihitung sebagai jarak antara dua titik.
(iv) Object signature Menyatakan jarak dari pusat massa ke tepi suatu objek pada arah 0 sampai
360 derajat.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 189/229
180 Pengolahan Citra Digital
11.8 Penipisan Pola
Pada aplikasi pencocokan pola, banyak bentuk terutama bentuk yang
mengulur/memanjang yang dapat dinyatakan dalam versi yang lebih tipis. Bentuk
yang lebih tipis terdiri dari garis-garis terhubung yang disebut rangka ( skeleton)
atau tulang atau garis inti. Idealnya, rangka tersebut membentang sepanjang garis
sumbu objek.
Penipisan (thinning ) adalah operasi pemrosesan citra biner yang dalam hal ini
objek (region) direduksi menjadi rangka yang menghampiri garis sumbu objek.
Tujuan penipisan adalah mengurangi bagian yang tidak perlu (redundant )
sehingga hanya dihasilkan informasi yang esensial saja. Pola hasil penipisan
harus tetap mempunyai bentuk yang menyerupai pola asalnya. Sebagai contoh,
Gambar 11.11 adalah huruf “R” dan hasil penipisan polanya menjadi rangka “R”.
(a) Huruf “R” (b) Hasil penipisan huruf “R
Gambar 11.11 Penpisan pola huruf “R”
Penipisan pola merupakan proses yang iteratif yang menghilangkan pixel-pixel
hitam (mengubahnya menjadi pixel putih) pada tepi-tepi pola. Jadi, algoritma
penipisan mengelupas pixel-pixel pinggir objek, yaitu pixel-pixel yang terdapat
pada peralihan 0→1. Algoritma penipisan pola harus memenuhi persyaratan
sebagai berikut [PIT93]:
1. Mempertahankan keterhubungan pixel-pixel objek pada setiap lelaran. Dengan
kata lain, tidak menyebabkan bentuk objek menjadi terputus (Gambar
11.12(a)).
2. Tidak memperpendek ujung lengan dari bentuk yang ditipiskan (Gambar
11.12(b)).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 190/229
Bab 11_Citra Biner 181
p8
p7
p0
p3
p6
p5
p4
p1
p2
(a) (b) (c)
Gambar 11.12 (a) Penghapusan pixel pinggir menyebabkan ketidakterhubungan,(b) penghapusan pixel pinggir memperpendek lengan objek,
(c) notasi pixel yang digunakan untuk memeriksa keterhubungan.
Algoritma penipisan yang umum adalah memeriksa pixel-pixel di dalam jendela
yang berukuran 3 × 3 pixel dan mengelupas satu pixel pada pinggiran (batas)
objek pada setiap lelaran, sampai objek berkurang menjadi garis tipis. Notasi
pixel di dalam jendela 3 × 3 diperlihatkan pada Gambar 11.12(c). Algoritma
bekerja secara iteratif, pada setiap lelaran dilakukan premrosesan pada jendela
yang berukuran 3×
3 pixel .
Algoritmanya adalah sebagai berikut [PIT93]:
1. Mula-mula diperiksa jumlah pixel objek (yang bernilai 1), N , di dalam
jendela 3 × 3 pixel .
2. Jika N kurang atau sama dengan 2, tidak ada aksi yang dilakukan karena di
dalam jendela terdapat ujung lengan objek.
3. Jika N lebih besar dari 7, tidak ada aksi yang dilakukan karena dapat
menyebabkan pengikisan (erosion) objek.
4. Jika N lebih besar dari 2, periksa apakah penghilangan pixel tengah
menyebabkan objek tidak terhubung. Ini dilakukan dengan membentuk
barisan p1 p2 p3… p8 p1. Jika jumlah peralihan 0 → 1 di dalam barisan tersebut
sama dengan 1, berarti hanya terdapat satu komponen terhubung di dalam jendela 3 × 3. Pada kasus ini, dibolehkan menghapus pixel tengah yang
bernilai 1 karena penghapusan tersebut tidak mempengaruhi keterhubungan.
Algoritma penipisan pola dalam bahasa C diperlihatkan pada Algoritma 11.1.
void penipisan(citra f, int N1, int M1, int N2, int M2)
/* Prosedur yang mengimplementasikan penipisan pola
Masukan :
f : citra biner
N1, M1 : koordinat awal (sudut kiri atas)
N2, M2 : koordinat akhir (sudut kanan bawah)
Keluaran: citra bienrf
*/
{
int k, l, i, j, count=0, y[9], trans=0, m, OK=1
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 191/229
182 Pengolahan Citra Digital
do
{
OK=1;
for(k=N1+1;k<N2-1;k++)
for(l=M1+1;l<M2-1;l++)
if (f[k][l]==1)
{/* hitung jumlah 1 di dalam jendela 3 × 3 */
count=0;for(i=-1;i<=1;i++)
for(j=-1;j<=1;j++)
if(f[k+i][j+l]==1) count++;
if((count>2)&&(count<8))
{ /* hitung jumlah peralihan 0->1 */
y[0]=f[k-1][l-11]; y[1]=f[k-1][l];y[2]=f[k-1][l+1];
y[3]=f[k][l+1]; y[4]=f[k+1]l+1];y[5]=f[k+1][l];
y[6]=f[k+1][l-1]; y[7]=f[k][l-1];y[8]=f[k-1][l-1];
trans=0;
for(m=0;m<=7;m++)
if (y[m]==0 && y[m+1]==1) trans++;
/* jika jumlah peralihan sama dengan 1, hapus pixel
yang sedang diacu (current) */
if (trans==1) {f[k][l]=0; OK=0;}
}
}
} while (OK=0);
}
Algoritma 11.1 Penipisan pola.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 192/229
Bab 12_Warna 183
Bab 12
Warna
ersepsi visual citra berwarna (color images) umumnya lebih kaya
dibandingkan dengan citra hitam putih ( greyscale), karena itu citra
berwarna lebih disenangi daripada citra hitam putih. Citra berwarna
menampilkan warna objek seperti warna aslinya (meskipun tidak selalu tepat
demikian). Bab ini akan menguraikan konsep warna, model warna, dan
transformasi warna dari satu model ke model lainnya.
12.1 Dasar-dasar Warna
Warna yang diterima oleh mata dari sebuah objek ditentukan oleh warna sinar
yang dipantulkan oleh objek tersebut. Sebagai contoh, suatu objek berwarna hijau
karena objek tersebut memantulkan sinar biru dengan panjang gelombang 450
sampai 490 nanometer (nm).
Warna sinar yang direspon oleh mata adalah sinar tampak (visible spectrum)
dengan panjang gelombang berkisar dari 400 (biru) sampai 700 nm (merah).
Lihat Gambar 12.1.
10-5
10-1
1 10 400 700 2500 nm 1000 m
P
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 193/229
184 Pengolahan Citra Digital
sinar sinar sinar kosmik gamma X ultraviolet Inframerah micro TV radio electr.wave wave wave power
ultra violet sinar tampak infra merah
400 nm 700 nm
Gambar 12.1 Spektrum cahaya
Warna-warna yang diterima oleh mata 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). Ketiga warna tersebut dinamakan warna pokok
( primaries), dan sering disingkat sebagai warna dasar RGB. Warna-warna lain
dapat diperoleh dengan mencampurkan ketiga warna pokok tersebut dengan
perbandingan tertentu (meskipun tidak sepenuhnya benar, karena tidak semua
kemungkinan warna dapat dihasilkan dengan kombinasi RGB saja), sesuai
dengan teori Young (1802) yang menyatakan bahwa sembarang warna dapat
dihasilkan dari percampuran warna-warna pokok C 1, C 2, dan C 3 dengan
persentase tertentu [PIT93]:
C = a C 1 + b C 2 + c C 3 (12.1)
Bila citra warna didigitasi, maka tiga buah filter digunakan untuk mengekstraksi
intensitas warna merah, hijau, dan biru, dan bila ketiganya dikombinasikan kita
memperoleh persepsi warna.
12.2 Atribut Warna
Selain RGB, warna juga dapat dimodelkan berdasarkan atribut warnanya. Setiap
warna memiliki 3 buah atribut, yaitu intensity ( I ), hue ( H ), dan saturation (S ).
a. Intensity/brigthness/luminance
Atribut yang menyatakan banyaknya cahaya yang diterima oleh mata tanpa
mempedulikan warna. Kisaran nilainya adalah antara gelap (hitam) dan
terang (putih).
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 194/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 195/229
186 Pengolahan Citra Digital
12.3 Sistem Koordinat WarnaCIE (Commission International de l’Eclairage) atau International Lighting
Committee adalah lembaga yang membakukan warna pada tahun 1931. CIE
mula-mula menstandarkan panjang gelombang warna-warna pokok sebagai
berikut [MEN89] :
R : 700 nm
G : 546.1 nm
B : 435.8 nm
Warna-warna lain dapat dihasilkan dengan mengkombinasikan ketiga warna
pokok tersebut. Model warna yang digunakan sebagai acuan dinamakan model RGB.
RGB bukan satu-satunya warna pokok yang dapat digunakan untuk menghasilkan
kombinasi warna. Warna lain dapat juga digunakan sebagai warna pokok
(misalnya C = Cyan, M = Magenta, dan Y = Yellow).
Karena itu CIE mendefinisikan model warna dengan menggunakan warna-warna
fiktif (yaitu, warna yang secara fisik tidak dapat direalisasikan), yang
dilambangkan dengan X , Y , dan Z . Model warna tersebut dinamakan model XYZ .
Warna-warna dispesifikasikan dengan jumlah relatif warna pokok fiktif.
Keuntungan utama dari model ini adalah luminance atau brigntness sinyal
disediakan langsung oleh Y. Jadi, nilai Y memberikan citra greyscale dari citra berwarnanya.
Kromatisitas (chromaticity of color ) masing-masing warna pokok, menunjukkan
persentase relatif suatu warna pokok di antara warna pokok lainnya pada warna
yang diberikan, yang definisikan sebagai
Z Y X
X x
++= (12.2)
Z Y X
Y y
++= (12.3)
Z Y X
Z z ++
= (12.4)
Warna putih acuan dinyatakan dengan X = Y = Z = 1. Jumlah seluruh nilai
kromatisitas warna adalah satu:
x + y + z = 1 (12.5)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 196/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 197/229
188 Pengolahan Citra Digital
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
x
y
780
520
510
500
490
480
470380
620
600
560
540
gold
green
Spectral energy locus
(wavelength in nanometers)
red pink
warm whitecool white
daylight
deep blue
blue Point of
equal energy
Hue dari warna tertentu diperoleh dengan menarik garis dari putih ke sisi elips
melalui warna tersebut. Misalkan digambar garis dari posisi W (putih) melalui
warna tertentu, P , ke sisi elips pada posisi H . Nilai hue adalah H , dan saturation
adalah panjang WP relatif terhadap WH . Warna P dapat dipandang sebagai
campuran warna putih dan hue:
P = SH + (1 – S ) W (12.7)
yang dalam hal ini S mengendalikan perbandingan relatif warna putih dan hue.
Gambar 12.3 Diagram kromatisitas CIE
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 198/229
Bab 12_Warna 189
Algor itma 12.1 Transformasi citra dari model warna CIE RGB ke model CIE XYZ
12.4 Transformasi Sistem Koordinat WarnaTransformasi warna dari basis CIE RGB ke CIE XYZ dapat dilakukan sebagai
berikut: Diberikan triplet RGB ( Ri, G i, B i) untuk pixel i, maka triplet XYZ ( X i, Y i,
Z i) dihitung dengan
=
99.0010.0000.0
011.0813.0177.0
200.0310.0490.0
i
i
i
Z
Y
X
i
i
i
B
G
R
(12.8)
Transformasi sebaliknya dari CIE XYZ ke CIE RGB dapat dilakukan dengan
persamaan
−
−
−−
=
009.1014.0005.0
088.0425.1515.0
468.03896.0365.2
i
i
i
B
G
R
i
i
i
Z
Y
X
(12.9)
Algoritma transformasi citra dari model warna CIE RGB ke model warna CIE
XYZ diperlihatkan pada Algoritma 12.1, sedangkan algoritma transformasi balikan dari model warna CIE XYZ ke model warna CIE RGB diperlihatkan pada
Algoritma 12.2 [PIT93]. Kedua algoritma tersebut mengasumsikan bahwa
komponen RGB disimpan masing-masing di dalam matriks r, g, dan b. Hasil
transformasi masing-masing disimpan di dalam matriks x, y, dan z. Ukuran citra
adalah N × M.
int cieRGB_toXYZ(citra r, citra g, citra b,citra x, citra y, citra z, int N, int M)
/* Transformasi citra dari model warna CIE RGB ke model CIE XYZ
Masukan: citra dengan kompoenen RGB masing-masing disimpan di dalam
matriks r, g, dan b. Ketga mtariks ini berukuran N × M.
Keluaran: citra dengan komponen XYZ masing-masing disimpan di dalam
matriks x, y, dan z.*/
{
int i, j; double R, G, B; double X, Y, Z;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{ R = (double)r[i][j]; G=(double)g[i][j]; B=(double)b[i][j];
X = 0.490*R+0.310*G+0.200*B; Y = 0.177*R+0.813*G+0.011*B;
Z = 0.010*G+0.990*B;
if (X > 255.0) x[i][j]=255; else x[i][j]=(unsigned char)X; if (Y > 255.0) y[i][j]=255; else y[i][j]=(unsigned char)Y;
if (Z > 255.0) z[i][j]=255; else z[i][j]=(unsigned char)ZX;
}}
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 199/229
190 Pengolahan Citra Digital
int XYZ_to_cieRGB(citra x, citra y, citra z,citra r, citra g, citra b, int N, int M)
/* Transformasi citra dari model warna CIE XYZ ke model CIE RGB
Masukan: citra dengan komponen XYZ masing-masing disimpan di dalam
matriks x, y, dan z. Ketga mtariks ini berukuran N × M.
Keluaran: citra dengan komponen RGB masing-masing disimpan di dalam
matriks r, g, dan b.
*/
{
int i, j; double R, G, B; double X, Y, Z;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{ X = (double)x[i][j]; Y =(double)y[i][j]; Z =(double)z[i][j];
R = 2.365*X-0.896*Y-0.468*Z;
G = -0.515*X+1.425*Y+0.088*Z;
B = 0.005*X-0.014*Y+1.009*Z; if (R > 255.0) r[i][j]=255;
else if (R<0.0) r[i][j]=0;
else r[i][j]=(unsigned char)R;
if (G > 255.0) g[i][j]=255;
else if (G<0.0) g[i][j]=0;
else g[i][j]=(unsigned char)G;
if (B > 255.0) b[i][j]=255;
else if (B<0.0) b[i][j]=0;
else b[i][j]=(unsigned char)B;
}
Algoritma 12.2 Transformasi citra dari model warna CIE XYZ ke model CIE RGB
Model warna RGB dan XYZ yang dikemukakan di atas adalah bakuan dari CIE .
Ada juga model warna yang diusulkan untuk platform perangkat keras tertentu
untuk menampilkan gambar. Misalnya National Television Systems Committee
( NTSC ) menggunakan model warna RGB khusus untuk menampilkan citra
berwarna pada layar CRT . Format NTSC digunakan pada televisi di Amerika
Serikat. Salah satu keuntungan utama dari format ini adalah data greyscale
dipisahkan dari data warnanya, sehingga sinyal yang sama dapat digunakan baik
untuk layar berwarna maupun layar hitam putih.
Pada format NTSC , data citra terdiri atas tiga komponen, yaitu luminance (Y ), hue
( I ), dan saturation (Q). Komponen pertama, yaitu Y menyatakan data greyscale,
sedangkan dua komponen terakhir membentuk chrominance. Jika diberikantriplet NTSC RGB ( Ri, Gi, Bi) untuk pixel i, maka nilai YIQ untuk pixel yang
bersangkutan dihitung dengan
−
−−=
312.0523.0211.0
322.0274.0596.0
114.0857.0299.0
i
i
i
Q
I
Y
i
i
i
B
G
R
(12.10)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 200/229
Bab 12_Warna 191
Nilai NTSC RGB semula dapat dihitung dengan menggunakan transformasi balikan:
−
−−=
701.1104.1000.1
647.0273.0000.1
621.0956.0000.1
i
i
i
B
G
R
i
i
i
Q
I
Y
(12.11)
Transformasi dari NTSC RGB ke CIE RGB dihitung dengan persamaan:
−
−−
=
128.1059.0001.0
159.0753.0114.0
151.0146.0167.1
i
i
i
B
G
R
i
i
i
NTSC B
NTSC G
NTSC R
_
_
_
(12.12)
Sistem NTSC RGB dapat ditransformasikan ke sistem CIE XYZ dengan persamaan:
=
117.1066.0000.0
114.0587.0299.0
201.0174.0607.0
i
i
i
Z
Y
X
i
i
i
NTSC B
NTSC G
NTSC R
_
_
_
(12.13)
sedangkan transformasi dari CIE XYZ ke NTSC RGB dihitung dengan persamaan:
i
i
i
NTSC B NTSC G
NTSC R
_ _
_
=
−−−
−−
896.0118.0058.0028.0000.2985.0
288.0533.0910.1
i
i
i
Z Y
X
(12.14)
12.5 Model Warna CMY dan CMYK
Warna cyan (C ) , magenta (M ), dan yellow (Y ) adalah warna komplementer
terhadap red , green, dan blue. Dua buah warna disebut komplementer jika
dicampur dengan perbandingan yang tepat menghasilkan warna putih. Misalnya,
magenta jika dicampur dengan perbandingan yang tepat dengan green
menghasilkan putih, karena itu magenta adalah komplemen dari dari green.
Model CMY dapat diperoleh dari model RGB dengan perhitungan berikut:
C = 1 – R (12.15)
M = 1 – G (12.16)
Y = 1 – B (12.17)
Model CMY dapat digunakan untuk mencetak citra berwarna, tetapi karena
ketidaksempurnaan tinta, model CMY tidak dapat menghasilkan warna hitam
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 201/229
192 Pengolahan Citra Digital
dengan baik. Karena itu, model CMY disempurnakan menjadi model CMYK , yangdalam hal ini K menyatakan warna keempat, dengan perhitungan sebagai berikut
[PIT93]:
K = min(C , M , Y ) (12.18)
C = C – K (12.19)
M = M – K (12.20)
Y = Y – K (12.21)
Algoritma transformasi citra dari model RGB ke model CMYK ditunjukkan pada
Algoritma 12.3, sedangkan algoritma transformasi balikan dari model CMYK ke
model RGB ditunjukkan pada Algoritma 12.4 [PIT93]. Kedua algoritma tersebut
mengasumsikan komponen RGB disimpan masing-masing di dalam matriks r, g,
dan b. Hasil transformasi masing-masing disimpan di dalam matriks c, m, y dan
k. Ukuran citra adalah N × M.
int RGB_toCMYK(citra r, citra g, citra b,
citra c, citra m, citra y, citra k,
int N, int M)
/* Transformasi citra dari model warna RGB ke model CMYK.
Masukan: citra dengan komponen RGB masing-masing disimpan di dalam
matriks r, g, dan b. Ketga mtariks ini berukuran N × M.
Keluaran: citra dengan komponen CMYK masing-masing disimpan di dalam
matriks c, y, m, dan k.
*/
{
int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
c[i][j]=(unsigned char)255 – r[i][j];
m[i][j]=(unsigned char)255 – g[i][j];
y[i][j]=(unsigned char)255 – b[i][j];
k[i][j]=c[i][j];
if (m[i][j]<k[i][j]) k[i][j]=m[i][j];
if (y[i][j]<k[i][j]) k[i][j]=y[i][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];
}
}
Algoritma 12.3 Transformasi citra dari model warna RGB ke model CMYK.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 202/229
Bab 12_Warna 193
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
degradasi.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 203/229
194 Pengolahan Citra Digital
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
menjadi citra skala-abu.
H dihitung dengan rumus:
))(()(2
2cos
2
1
BG B RG R
BG R H
−−+−
−−= − (12.23)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 204/229
Bab 12_Warna 195
Nilai S dihitung dengan rumus:
),,min(3
1 BG R BG R
S ++
−= (12.24)
Alternatif lain mengubah model RGB ke model IHS adalah sebagai berikut.
Konversi dari model RGB ke model IHS dilakukan dalam dua tahap. Tahap
pertama adalah merotasikan koordinat RGB ke sistem koordinat ( I , V 1, V 2) dengan
transformasi:
−−
−=
6/16/16/22/12/10
3/33/33/3
2
1
V V
I
BG
R
(12.25)
Langkah kedua adalah menghitung H dan S dari koordinat (V 1, V 2):
H = tan-1(V 2/V 1) (12.26)
S = (V 12 + V 2
2)1/2 (12.27)
Nilai H adalah dalam selang [0,2π] atau setara dengan [0, 360°].
Transformasi dari model IHS ke model RGB dapat dilakukan dengan prosedur
balikan:
V 1 = S cos( H ) (12.28)
V 2 = S sin( H ) (12.29)
B
G
R
=
−−
−
6/12/13/3
6/12/13/3
6/203/3
2
1
V
V
I
(12.30)
Dengan transformasi RGB ke IHS , maka algoritma pemrosesan citra yang semula
untuk citra skala-abu dapat diterapkan pada komponen intensity, sedangkan
algoritma segmentasi citra dapat dilakukan pada komponen H .
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 205/229
196 Pengolahan Citra Digital
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].
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 206/229
Bab 13_Steganografi dan Watermarking pada Citra Digital 197
Bab 13
Steganografi dan Watermarking pada
Citra Digital
teganografi ( steganography) adalah teknik menyembunyikan data rahasia di
dalam wadah (media) digital sehingga keberadaan data rahasia tersebut tidak
diketahui oleh orang. Steganografi membutuhkan dua properti: wadah
penampung dan data rahasia yang akan disembunyikan. Steganografi digital
menggunakan media digital sebagai wadah penampung, misalnya citra, suara
(audio), teks, dan video. Data rahasia yang disembunyikan juga dapat berupa
citra, suara, teks, atau video.
Penggunaan steganografi antara lain bertujuan untuk menyamarkan eksistensi
(keberadaan) data rahasia sehingga sulit dideteksi, dan melindungi hak cipta suatu
produk. Steganografi dapat dipandang sebagai kelanjutan kriptografi. Jika pada
kriptografi, data yang telah disandikan (ciphertext ) tetap tersedia, maka dengan
steganografi cipherteks dapat disembunyikan sehingga pihak ketiga tidak mengetahui
keberadaannya. Data rahasia yang disembunyikan dapat diekstraksi kembali persis
sama seperti keadaan aslinya.
Bab ini akan memaparkan steganografi dan watermarking pada citra digital.
Watermarking adalah aplikasi dari steganografi, di mana citra digital diberi suatu
penanda yang menunjukkan label kepemilikan citra tersebut. Sebagian besar dari
materi bab ini dikutip dari [POL98].
S
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 207/229
198 Pengolahan Citra Digital
13.1 Sejarah Steganografi
Steganografi sudah dikenal oleh bangsa Yunani. Penguasa Yunani dalam
mengirimkan pesan rahasia menggunakan kepala budak atau prajurit sebagai
media. Dalam hal ini, rambut budak dibotaki, lalu pesan rahasia ditulis pada 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
yang sudah disisipi data.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 208/229
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
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 209/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 210/229
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.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 211/229
202 Pengolahan Citra Digital
Teknik Penggantian Bit pada Citra 24-bit.
Karena data bitmap pada citra 24-bit sudah tersusun atas komponen RGB, maka
tidak perlu dilakukan perubahan format. Setiap byte di dalam data bitmap diganti
satu bit LSB-nya dengan bit data yang akan disembunyikan.
Perubahan Jumlah Warna
Pada citra 8-bit, jumlah warna terbatas, hanya 256 warna. Pengubahan format
citra 8-bit menjadi 24-bit akan menghasilkan warna baru (yang semula tidak
terdapat di dalam palet RGB). Setiap elemen RGB pada tabel palet berpotensi
menjadi 8 warna berbeda setekah proses penggantian bit LSB. Hal ini karena
setiap data bitmap terdiri atas 3 byte, maka tersedia 3 bit LSB untuk penggantian.
Penggantian 3 bit LSB menghasilkan 23 = 8 kombinasi warna. Dengan demikian,
steganografi pada citra 256 warna berpotensi menghasilkan 256 × 8 = 2048
warna.
Untuk menghindari kelebihan warna dari 256, maka sebelum proses
penyembunyian data, warna citra 8-bit diturunkan terlebih dahulu menjadi 32warna (jika jumlah warnanya kurang dari 32, tidak perlu dilakukan penurunan
warna). Dengan demikian, jika setiap warna menghasilkan 8 warna baru, jumlah
warna seluruhnya maksimum 32 × 8 = 256 warna.
Penurunan jumlah warna dilakukan dengan cara kuantisasi warna (color
quantization). Penurunan jumlah warna harus tetap menghasilkan citra yang
tampak persis seperti citra semula. Algoritma kuantisasi warna ada beberapa
buah, antara lain algoritma diversity. Prinsip algoritma diversity adalah
memaksimumkan perbedaan warna.
Algoritma Diversity:
1. Buat histogram citra. Warna yang frekuensi kemunculannya 0 dibuang karenatidak akan digunakan.
2. Pilih warna dengan frekuensi kemunculan tertinggi sebagai warna patokan.
Masukkan warna ini ke dalam senarai warna terpilih.
3. Cari warna yang mempunyai perbedaan terjauh dengan warna patokan.
Masukkan warna tersebut ke dalam senarai warna terpilih. Perbedaan dua
buah warna dihitung dengan rumus jarak Euclidean:
d = { (r 1 – r 2)2 + ( g 1 – g 2)
2 + (b1 – b2)2 }1/2
yang dalam hal ini, r 1, g 1, dan b1 adalah komponen RGB dari warna pertama,
dan r 2, g 2, dan b2 adalah komponen RGB dari warna kedua.
4.
Untuk setiap warna yang tersisa di dalam list , hitung jaraknya dari masing-masing warna di dalam senarai warna terpilih. Ambil warna yang paling jauh
berbeda dengan warna yang sudah dipilih. Lakukan langkah 4 ini berulang
kali sampai k warna sudah terpilih.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 212/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 213/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 214/229
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
our country.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 215/229
206 Pengolahan Citra Digital
Bandung, November 15, 2002Yours Sincerely,
Ir. Rinaldi Munir, M.Sc.Senior LecturerInformatics Engineering Department,
Institute Technology of Bandung (ITB)Jl. Ganesha No. 10, Bandung 40132
Email : [email protected] +62-22-2508135
Indonesia
(c) Hasil penyembunyian data
( peppers.bmp + hendro.doc):
(d) Hasil pengungkapan data
(hendro-stega.doc, 20 KB):
LETTER OF RECOMMENDATION
To Whom It May Concern,
Herewith I highly recommend Mr. R. Hendro
Wicaksono continue his postgraduate study atyour university. My recommendation is based
on 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 hehas a lot of creative ideas. He is also a very
intelligent student and he cooperates very wellwith his peers whenever they had to work
together.
During his study, he showed diligence andeagerness to achieve his goal. He sets very high
standard for himself and organizes himself verywell 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 personal
qualities along with his academic capabilitieswill help his to obtain his Master’s degree at
your university, which will be very useful for
our country.
Bandung, November 15, 2002
Yours Sincerely,
Ir. Rinaldi Munir, M.Sc.
Senior LecturerInformatics Engineering Department,Institute Technology of Bandung (ITB)
Jl. Ganesha No. 10, Bandung 40132Email : [email protected]
Phone +62-22-2508135
Indonesia
Gambar 13.5 Penyembunyian dokumen teks ke dalam citra berwarna 24 bit (peppers.bmp)
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 216/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 217/229
208 Pengolahan Citra Digital
13.6 Watermarking
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.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 218/229
Bab 13_Steganografi dan Watermarking pada Citra Digital 209
Pada dasarnya, teknik watermarking adalah proses menambahkan kode identifikasi
secara permanen ke dalam data digital. Kode identifikasi tersebut dapat berupa
teks, gambar, suara, atau video. Selain tidak merusak data digital produk yang
akan dilindungi, kode yang disisipkan seharusnya memiliki ketahanan (robustness)
dari berbagai pemrosesan lanjutan seperti pengubahan, transformasi geometri,
kompresi, enkripsi, dan sebagainya. Sifat robustness berarti data watermark tidak
terhapus akibat pemrosesan lanjutan tersebut.
Sejarah Watermarking
Watermarking sudah ada sejak 700 tahun yang lalu. Pada akhir abad 13, pabrik
kertas di Fabriano, Italia, membuat kertas yang diberi watermark atau tanda-air
dengan cara menekan bentuk cetakan gambar atau tulisan pada kertas yang baru
setengah jadi. Ketika kertas dikeringkan terbentuklah suatu kertas yang ber-
watermark . Kertas ini biasanya digunakan oleh seniman atau sastrawan untuk
menulis karya mereka. Kertas yang sudah dibubuhi tanda-air tersebut sekalius
dijadikan identifikasi bahwa karya seni di atasnya adalah milik mereka [HEN03].
Ide watermarking pada data digital (sehingga disebut digital watermarking )
dikembangkan di Jepang tahun 1990 dan di Swiss tahun 1993. Digital watermarking
semakin berkembang seiring dengan semakin meluasnya penggunaan internet,
objek digital seperti video, citra, dan suara yang dapat dengan mudah digandakan
dan disebarluaskan.
Perbedaan Steganografi dengan Watermarking
Watermarking merupakan aplikasi dari steganografi, namun ada perbedaan antara
keduanya. Jika pada steganografi informasi rahasia disembunyikan di dalammedia digital dimana media penampung tidak berarti apa-apa, maka pada
watermarking justru media digital tersebut yang akan dilindungi kepemilikannya
dengan pemberian label hak cipta (watermark ).
Meskipun steganografi dan watermarking tidak sama, namun secara prinsip
proses penyisipan informasi ke dalam data digital tidak jauh berbeda. Beberapa
metode yang sudah ditemukan untuk penyisipan watermark adalah metdoe LSB
(seperti pada penjelasan steganografi di atas), metode adaptif, metode spread
spectrum, dan sebagainya.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 219/229
210 Pengolahan Citra Digital
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
watermark .
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 220/229
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
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 221/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 222/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 223/229
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 224/229
Bab 15_Pengenalan Pola 231
Preprocessing Feature
Extraction Classification
Pola
Feature
Selection Learning
Pengenalan (recognition)
Pelatihan (training )
Pola terokan
p(diameter | jeruk)
p(diameter | apel)
diameter
1
0
peluang
a b
Gambar 15.1. Grafik fungsi kerapatan dari ciri diameter jeruk dan apel.
Jika sebuah objek diukur dan diperoleh diameternya adalah a cm, maka kitamengklasifikasikan objek tersebut sebagai “jeruk”, karena
p(a | jeruk) > p(a | apel)
dan jika hasil pengukuran diameter adalah b cm, kita mengklasifikasikan objek
tersebut sebagai “apel”, karena
p(b | jeruk) < p(b | apel)
Sistem pengenalan pola dengan pendekatan statistik ditunjukkkan oleh diagram
pada Gambar 15.2.
Gambar 15.2. Sistem pengenalan pola dengan pendekatan statistik.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 225/229
232 Pengolahan Citra Digital
Ada dua fase dalam sistem pengenalan pola: (i) fase pelatihan dan (ii) fase
pengenalan. Pada fase pelatihan, beberapa contoh citra dipelajari untuk menentukan
ciri yang akan digunakan dalam proses pengenalan serta prosedur klasifikasinya.
Pada fase pengenalan, citra diambil cirinya kemudian ditentukan kelas kelompoknya.
Preprocessing
Proses awal yang dilakukan untuk memperbaiki kualitas citra (edge enhancement )
dengan menggunakan teknik-teknik pengolahan citra yang sudah diejelaskan
pada bab-bab sebelum ini.
Feature Extraction
Proses mengambil ciri-ciri yang terdapat pada objek di dalam citra. Pada proses
ini objek di dalam citra mungkin perlu dideteksi seluruh tepinya, lalu menghitung
properti-properti objek yang berkaitan sebagai ciri. Beberapa proses ekstraksi ciri
mungkin perlu mengubah citra masukan sebagai citra biner, melakukan penipisan
pola, dan sebagainya.
Classification
Proses mengelompokkan objek ke dalam kelas yang sesuai.
Feature Selection
Proses memilih ciri pada suatu objek agar diperoleh ciri yang optimum, yaitu ciri
yang dapat digunakan untuk membedakan suatu objek dengan objek lainnya.
Learning
Proses belajar membuat aturan klasifikasi sehingga jumlah kelas yang tumpang
tindih dibuat sekecil mungkin.
Kumpulan ciri dari suatu pola dinyatakan sebagai vektor ciri dalam ruang
bahumatra (multi dimensi). Jadi, setiap pola dinyatakan sebagai sebuah titik
dalam ruang bahumatra. Ruang bahumatra dibagi menjadi sejumlah uparuang
(sub-ruang). Tiap uparuang dibentuk berdasarkan pola-pola yang sudah dikenali
kategori dan ciri-cirinya (melalui fase pelatihan). Lihat Gambar 15.3.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 226/229
Bab 15_Pengenalan Pola 233
Preprocessing Primitive
Extraction Classification
Pola
Primitive
Selection Learning
Pengenalan (recognition)
Pelatihan (training )
Pola terokan
ciri 1
ciri 2 ciri 2
ciri 1
3 kelas 2 kelas yang beririsan
batas keputusan
batas kelas
Gambar 15.3. Contoh pembagian kelas pola
(b) Pengenalan Pola secara Sintaktik
Pendekatan ini menggunakan teori bahasa formal. Ciri-ciri yang terdapat pada
suatu pola ditentukan primitif dan hubungan struktural antara primitif kemudian
menyusun tata bahasanya. Dari aturan produksi pada tata bahasa tersebut kitadapat menentukan kelompok pola. Gambar 15.4 memperlihatkan sistem
pengenalan pola dengan pendekatan sintaktik.
Pengenalan pola secara sintaktik lebih dekat ke strategi pengenalan pola yang
dilakukan manusia, namun secara praktek penerapannya relatif sulit dibandingkan
pengenalan pola secara statistik.
Gambar 15.4. Sistem pengenalan pola dengan pendekatan sintaktik.
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 227/229
234 Pengolahan Citra Digital
Pendekatan yang digunakan dalam membentuk tata bahasa untuk mengenali pola
adalah mengikuti kontur (tepi batas) objek dengan sejumlah segmen garis
terhubung satu sama lain, lalu mengkodekan setiap garis tersebut (misalnya
dengan kode rantai). Setiap segmen garis merepresentasikan primitif pembentuk
objek.
Contoh 15.1. [GON77] Pembentukan tata bahasa ( grammar ) untuk mengenali
kromosom (lihat Gambar 15.5) yang diusulkan oleh Ledley (1964, 1965). Tata
bahasa untuk mengenali kromosom adalah G = ( N , ∑ , P , S ), yang dalam hal ini
∑ = {a, b, c, d , e}
N = {S , T , A, B, C , D, E , F }
S = { S , T }
dan himpunan aturan produksi P :
1) S → CC 10) A → Ab
2) T → AC 11) A → e
3) C → BC 12) B → bB
4) C → CB 13) B → Bb
5) C → FD 14) B → b
6) C → EF 15) B → d
7) E → Fc 16) F → bF
8) D → cF 17) F → Fb
9) A → bA 18) F → a
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 228/229
Bab 15_Pengenalan Pola 235
a b c d e
a
ab
b
c
b
be
a a
b
b
d
b b
c
d
b
b
a
a
b
c
b
abcbabdbabcbabdb
ebabcbab
(a)
(b)
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
∑={a , b , c , d }
N = {S , A1, A2, A3, A4, A5}S = { S }
dan himpunan aturan produksi P :
S → d + A1
A1 → c + A2
A2 → ~d * A2
A3 → a + A4 A4 → b* A5
A5 → c
7/25/2019 Modul Pengolahan Citra Full Bab
http://slidepdf.com/reader/full/modul-pengolahan-citra-full-bab 229/229
h
h ht
t
t
d c + (~d) d + (c+(~d))
(a) (b) (c)