Dilengkapi CD beris program-program cont file-file latihan, dan Oct
i
Teori dan Aplikasi
Abd
AdhiS
erisi contoh, OctaveAbdul Kadir
dhiSusanto
ii
Ceritakan kepada saya, maka saya lupa.
Tunjukkan kepada saya,maka saya ingat.
Biarkan saya mengerjakannya, maka saya paham.
iii
Aplikasi pengolahan citra telah memberikan sumbangan yang sangat berarti dalam berbagai aspek. Para perancang desain grafis telah merasakan betapa nikmatnya menggunakansoftware semacam Adobe Photoshop untuk mengerjakan berbagai tugas mereka. Pemakai Microsoft Word bisa memberikan ilustrasi gambar yang dipoles dengan teknik tertentu, misalnya memungkinkan gambar seolah-olah dibuat dengan goresan kapur. Robot seperti AIBO dapat membaca mimik si pemiliknya dan melakukan aksi untuk menghibur. Mesin inspeksi mampu mendeteksi produk yang cacat. Perangkat presensi dapat mengenali sidik jari para mahasiswa yang akan mengikuti kuliah. Pintu pun terbuka setelah retina mata si pegawai dipindai oleh pembaca retina mata. Hal-haltersebutmenunjukkan beberapa contoh yang melibatkan pengolahan citra.
Buku ini mengupas sejumlah fondasi dalam pengolahan citra hingga ke aplikasinya. Berbeda dengan buku lain yang umumnya hanya menekankan pada aspek teori, buku ini mengombinasikan teori dan praktik. Buku ini membahas berbagai rumus matematika dan sekaligus mewujudkannya ke dalam bentuk program. Dengan perkataan lain, buku ini menunjukkan bahwa rumus-rumus matematika yang kadang dirasakan sulit untuk dimengerti dapat diterjemahkan ke dalam program dengan cara yang mudah. Oleh karena itu, buku ini sangat berguna bagi mahasiswa Teknologi Informasi, Teknik Informatika, atau Teknik Elektro yang sedang mengambil matakuliah Pengolahan Citra ataupun matakuliah lain yang memerlukan dasar pengolahan citra. Materi yang disampaikan tidak hanya terbatas pada pendekatan teori tetapi juga sekaligus disertai dengan algoritma dan penyelesaian dalam bentuk program.
Contoh program diwujudkan dengan menggunakan Octave. Octave adalah Free Software yang kompatibel dengan MATLAB. Perangkat lunak ini dapat diunduh secara gratis. Informasi pengunduhannya dapat dilihat di http://www.gnu.org/software/octave/download.html. Versi Octave yang digunakan untuk mengimplementasikan program adalah Octave 3.4.3, sedangkan paket Image Processing yang digunakan adalah versi 1.0.15. Paket ini bisa diunduh di http://octave.sourceforge.net/image/index.html.
Meskipun diwujudkan dengan Octave, contoh-contoh program yang diberikan sangat mudah untuk dikonversikanke bentukbahasa pemrograman yang lain seperti Java ataupun C++. Kode-kode penting untuk mewujudkan program telah diusahakan agar tidak bergantung sepenuhnya pada fungsi-fungsi yang disediakan oleh Octave.
Agar pembaca bisa menyerap materi yang disajikan dalam buku ini, dianjurkan untuk menguasai dasar pemrograman Octave terlebih dulu. Pada bagian Lampiran, ringkasan mengenai dasar Octave diberikan. Materi tersebut diharapkan dapat membantu pembaca dalam mempelajari dan mempraktikkan dasar Octave secara cepat.
iv
pengolahan citra, membaca secara langsung ke bab-bab tertentu yang diperlukan juga dimungkinkan.
Bab 1 memperkenalkan dasar pengolahan citra dan aplikasinya. Bab 2 membahas dasar pengolahan citra melalui software. Berbagai jenis citra diperkenalkan di dalam bab ini. Cara membaca citra dari berkas, mengonversi citra, dan menyimpan citra ke dalam berkas mulai diperkenalkan. Berbagai operasi pemrosesan citra yang berbasis piksel mulai dibahas dalam Bab 3. Dasar histogram juga dibahas dalam bab ini. Bab 4 mulai membahas pengolahan citra yang mempertimbangkan piksel tetangga. Pada bab inilah konvolusi mulai dibahas. Berbagai filter mulai diperkenalkan dalam bab ini. Bab 5 membicarakan operasi geometrik seperti penggeseran citra, pemutaran citra, pembesaran/pengecilan citra, dan berbagai transformasi untuk mengubah citra. Bab 6 membahas alihragam Fourier untuk melakukan pengolahan citra pada kawasan frekuensi. Bab 7 mulai membicarakan berbagai operasi morfologi seperti erosi, dilasi, opening, closing, dan transformasi Top-Hat. Bab 8 membahas berbagai operasi yang dilaksanakan pada citra biner, misalnya untuk memperoleh tepi objek, rantai kode, perimeter, dan luas objek. Beberapa fitur yang dapat diperoleh pada citra biner mulai diperkenalkan. Bab 9 membahas secara khusus pemrosesan citra dengan melibatkan unsur warna. Bab 10 mengupas berbagai teknik untuk kepentingan segmentasi, misalnya deteksi tepi dan peng-ambangan adaptif. Bab 11 membahas secara rinci berbagai metode untuk melaksanakan restorasi citra. Berbagai fitur bentuk dan kontur dibicarakan dalam Bab 12. Deskriptor Fourier, momen Zernike, momen invariant, Polar Fourier Transform, dan convex hull dibahas dalam bab ini. Bab 13 secara khusus membahas fitur tekstur. Bab 14 membahas aplikasi temu kembali citra.
Untuk mempermudah dalam mempraktikkan pengolahan citra, seluruh materipraktik yang dibahas di dalam buku ini dikemas di dalam sebuah CD yang disertakan bersama buku ini.CD juga berisi perangkat lunak Octave.
Tidak lupa, penulis mengucapkan terima kasih kepada Direktorat Penelitian dan Pengabdian kepada Masyarakat, Direktorat Jenderal Pendidikan Tinggi, yang telah memberikan dana hibah penulisan buku teks tahun 2012 dan pendampingan untuk penyelesaian naskah ini. Banyak masukan berharga yang telah mewarnai koreksi terhadap naskah buku ini.
Penulis menyadari sepenuhnya, “Tak ada gading yang tak retak”. Walaupun usaha yang maksimum telah dilakukan, tetap saja terdapat kemungkinan kesalahan dan kekurangan di dalam penyusunan buku ini. Oleh karena itu, saran dari pembaca sangat penulis harapkan agarmateri buku ini senantiasa dapat disempurnakan. Akhir kata, semoga buku ini dapat memberikan manfaat yang nyata dan menjadi sumber inspirasi bagi pembaca dalam mengembangkan karya-karya inovatif.
Yogyakarta, Juni 2012 Penulis
vi
1.1 Pengertian Pengolahan Citra Digital ... 2
1.2 Aplikasi Pengolahan Citra ... 3
1.3 Prinsip Dasar dalam Pengolahan Citra ... 7
1.3.1 Peningkatan Kecerahan dan Kontras ... 7
1.3.2 Penghilangan Derau ... 8
1.3.3 Pencarian Bentuk Objek ... 8
BAB 2 PENGENALAN DASAR CITRA ... 11
2.1 Representasi Citra Digital ... 12
2.2 Kuantisasi Citra ... 15
2.3 Kualitas Citra ... 18
2.4 Membaca Citra ... 20
2.5 Mengetahui Ukuran Citra ... 22
2.6 Menampilkan Citra ... 23
2.7 Mengenal Jenis Citra ... 26
2.7.1 Citra Berwarna ... 26
2.7.2 Citra Berskala Keabuan ... 30
2.7.3 Citra Biner... 31
2.8 Mengonversi Jenis Citra ... 32
2.9 Menyimpan Citra ... 40
BAB 3 OPERASI PIKSEL DAN HISTOGRAM ... 43
3.1 Operasi Piksel ... 44
3.2 Menggunakan Histogram Citra ... 44
3.3 Meningkatkan Kecerahan ... 50
3.4 Meregangkan Kontras ... 53
3.5 Kombinasi Kecerahan dan Kontras ... 55
3.6 Membalik Citra ... 56
3.7 Pemetaan Nonlinear ... 57
3.8 Pemotongan Aras Keabuan ... 59
3.9 Ekualisasi Histogram... 63
BAB 4 OPERASI KETETANGGAAN PIKSEL ... 71
4.1 Pengertian Operasi Ketetanggaan Piksel ... 72
4.2 Pengertian Ketetanggaan Piksel ... 72
4.3 Aplikasi Ketetanggaan Piksel pada Filter ... 73
4.3.1 Filter Batas... 74
4.3.2 Filter Pererataan ... 77
4.3.3 Filter Median ... 80
4.4 Pengertian Konvolusi ... 83
4.5 Problem pada Konvolusi ... 92
4.6 Mempercepat Komputasi pada Konvolusi ... 98
4.7 Pengertian Frekuensi ... 103
4.8 Filter Lolos-Rendah ... 105
vii
4.13 Filter Gaussian ... 122
BAB 5 OPERASI GEOMETRIK ... 121
5.1 Pengantar Operasi Geometrik ... 122
5.2 Menggeser Citra ... 123
5.3 Memutar Citra ... 125
5.4 Interpolasi Piksel ... 129
5.5 Memutar Berdasarkan Sebarang Koordinat ... 134
5.6 Memutar Citra Secara Utuh ... 137
5.7 Memperbesar Citra ... 140
5.8 Memperkecil Citra ... 145
5.9 Perbesaran dengan Skala Vertikal dan Horizontal Berbeda ... 146
5.10 Pencerminan Citra ... 146 5.11 Transformasi Affine ... 151 5.12 Efek Ripple ... 154 5.13 Efek Twirl ... 157 5.14 Transformasi Spherical ... 159 5.15 Transformasi bilinear ... 162
BAB 6PENGOLAHAN CITRA DI KAWASAN FREKUENSI ... 161
6.1 Pengolahan Citra di Kawasan Spasial dan Kawasan Frekuensi ... 168
6.2 Alihragam Fourier ... 169
6.3 Fourier 1-D ... 170
6.4 Fourier 2-D ... 176
6.5 Fast Fourier Transform ... 178
6.6 Visualisasi Pemrosesan FFT ... 179
6.7 Penapisan pada Kawasan Frekuensi ... 184
6.8 Filter Lolos-Rendah ... 190
6.9 Filter Lolos-Tinggi ... 200
6.10 Pemfilteran dengan Pendekatan High Frequency Emphasis ... 203
BAB 7 MORFOLOGI UNTUK PENGOLAHAN CITRA ... 209
7.1 Pengertian Operasi Morfologi ... 210
7.2 Matematika yang Melatarbelakangi ... 212
7.2.1 Teori Himpunan ... 212
7.2.2 Operasi Nalar ... 218
7.3 Operasi Dilasi ... 221
7.4 Operasi Erosi ... 229
7.5 Bentuk dan Ukuran Elemen Penstruktur ... 236
7.6 Operasi Opening ... 242 7.7 Operasi Closing ... 245 7.8 Transformasi Hit-or-Miss ... 248 7.9 Skeleton ... 255 7.10 Thickening ... 263 7.11 Convex Hull ... 265
viii
7.12.3 Opening dan Closing ... 279
7.13 Transformasi Top-Hat ... 281
7.14 Transformasi Bottom-Hat ... 283
BAB 8OPERASI PADA CITRA BINER ... 287
8.1 Pengantar Operasi Biner ... 288
8.2 Representasi Bentuk ... 288
8.3 Ekstraksi Tepi Objek ... 288
8.4 Mengikuti Kontur ... 292 8.5 Kontur Internal ... 300 8.6 Rantai Kode ... 305 8.7 Perimeter ... 309 8.8 Luas ... 313 8.9 Diameter ... 317
8.10 Fitur Menggunakan Perimeter, Luas, dan Diameter ... 325
8.11 Pusat Massa dan Fitur Menggunakan Pusat Massa ... 329
8.12 Fitur Dispersi ... 333
8.13 Pelabelan Objek ... 335
BAB 9 PENGOLAHAN CITRA BERWARNA ... 349
9.1 Dasar Warna ... 350
9.2 Ruang Warna ... 350
9.2.1 Ruang Warna RGB... 350
9.2.2 Ruang Warna CMY/CMYK ... 352
9.2.3 Ruang Warna YIQ ... 356
9.2.4 Ruang Warna YCbCr ... 358
9.2.5 Ruang Warna HSI, HSV, dan HSL ... 360
9.2.6 Ruang Warna CIELAB ... 374
9.3 Memperoleh Statistika Warna ... 378
9.4 Mengatur Kecerahan dan Kontras ... 382
9.5 Menghitung Jumlah Warna ... 384
9.6 Aplikasi Pencarian Citra Berdasarkan Warna Dominan ... 386
BAB 10 SEGMENTASI CITRA ... 401
10.1 Pengantar Segmentasi Citra ... 402
10.2 Deteksi Garis ... 405 10.3 Deteksi Tepi ... 410 10.3.1 Operator Roberts ... 415 10.3.2 Operator Prewitt ... 417 10.3.3 Operator Sobel ... 420 10.3.4 Operator Frei-Chen ... 422 10.3.5 Operator Laplacian ... 425
10.3.6 Operator Laplacian of Gaussian ... 427
10.3.7 Operator Difference of Gaussian ... 433
ix
10.5 Peng-ambangan Global Vs. Lokal ... 459
10.6 Peng-ambangan Aras-jamak ... 460
10.7 Peng-ambangan dengan Metode Otsu ... 463
10.8 Peng-ambangan Adaptif ... 467
10.9 Peng-ambangan Berdasarkan Entropi ... 478
10.10 Segmentasi Warna ... 485
BAB 11 RESTORASI CITRA ... 497
11.1 Pengantar Restorasi Citra ... 498
11.2 Derau dalam Citra ... 498
11.3 Jenis Derau ... 500
11.3.1 Derau Gaussian ... 500
11.3.2 Derau Garam dan Merica (Salt & Pepper Noise) ... 505
11.3.3 Derau Eksponensial ... 508 11.3.4 Derau Gamma ... 511 11.3.4 Derau Rayleigh ... 514 11.3.6 Derau Uniform ... 517 11.3.7 Derau Periodis ... 520 11.4 Penghilangan Derau ... 523 11.4.1 Filter Lolos-Rendah ... 523
11.4.2 Filter Rerata Aritmetik ... 526
11.4.3 Filter Rerata Harmonik ... 530
11.4.4 Filter Rerata Kontraharmonik ... 534
11.4.5 Filter Rerata Yp ... 538
11.4.6 Filter Median ... 540
11.4.7 Filter Max ... 545
11.4.8 Filter Min ... 550
11.4.9 Filter Titik-Tengah ... 553
11.5 Penghilangan Derau di Kawasan Frekuensi ... 555
11.6 Filter Inversi ... 563
11.7 Filter Wiener ... 567
11.8 Ukuran Keberhasilan Penghilangan Derau ... 570
BAB 12EKSTRAKSI FITUR BENTUK DAN KONTUR ... 575
12.1 Pengantar Ekstraksi Fitur ... 576
12.2 Tanda-Tangan Kontur ... 577
12.3 Deskriptor Fourier ... 581
12.4 Sifat Bundar ... 590
12.5 Convex Hull dan Soliditas ... 593
12.6 Proyeksi ... 608
12.7 Momen Spasial dan Momen Pusat ... 610
12.8 Momen Invariant ... 613
12.9 Momen Jarak ke Pusat ... 616
12.10 Momen Zernike ... 620
x
13.1 Pengantar Fitur Tekstur ... 650
13.2 Kategori Tekstur ... 651
13.3 Tekstur Berbasis Histogram ... 653
13.4 Tekstur Laws ... 660
13.5 Lacunarity ... 667
13.6 GLCM ... 672
BAB 14 APLIKASI TEMU KEMBALI CITRA ... 685
14.1 Pengantar Aplikasi Temu Kembali Citra ... 686
14.2 Perhitungan Jarak Antara Dua Citra ... 687
14.2.1 Jarak Euclidean ... 687
14.2.2 Jarak City-Block ... 688
14.2.3 Jarak Kotak Catur ... 689
14.2.4 Jarak Minkowski ... 689
14.2.5 Jarak Canberra ... 690
14.2.6 Jarak Bray Curtis ... 690
14.2.7 Divergensi Kullback Leibler ... 691
14.2.8 Divergensi Jensen Shannon ... 691
14.3 Contoh Penerapan Jarak ... 692
14.4 Pengembangan Lebih Lanjut... 694
LAMPIRAN : PANDUAN OCTAVE ... 701
L.1 Menginstalasi dan Menjalankan Octave ... 701
L.2 Perintah Octave ... 702
L.3 Operator ... 703
L.4 Variabel dalam Octave ... 705
L.5 Akhiran Titik Koma dan Pemisahan Pernyataan ... 706
L.6 Mengenal Memori untuk Variabel ... 707
L.7 Tipe Data ... 708
L.8 Mengenal Fasilitas Help ... 709
L.9 Bilangan Kompleks ... 709
L.10 Fungsi Matematika ... 710
L.11 Prioritas Operator dalam Octave ... 714
L.12 Mengakhiri Octave ... 714
L.13 String Karakter ... 714
L.14 Menampilkan dengan disp ... 715
L.15 Larik ... 715
L.16 Notasi : untuk Menyatakan Jangkauan ... 717
L.17 Operasi Transpos ... 718
L.18 Membentuk Matriks ... 718
L.19 Operasi Skalar terhadap Larik ... 719
L.20 Operasi Matematika Antarlarik ... 720
L.21 Mengakses Larik ... 723
L.22 Memperoleh Ukuran Larik ... 727
xi
L.27 Operator Relasional dan Logika ... 733
L.27.1 Operator Relasional ... 733 L.27.2 Operator Logika ... 734 L.28 Pernyataan if ... 736 L.29 Pernyataan if..elseif ... 738 L.30 Pernyataan switch ... 738 L.31 Pernyataan while ... 739 L.32 Pernyataan for ... 740 L.33 Pernyataan break ... 741 L.34 Pernyataan continue ... 742 DAFTAR PUSTAKA 743 GLOSARIUM 751 INDEKS 757
xii Pengantar pengolahan citra
Pengenalan dasar citra Operasi piksel dan histogram Operasi ketetanggaan piksel Operasi geometrik
Pengolahan citra di kawasan frekuensi Morfologi untuk pengolahan citra Operasi pada citra biner
Pengolahan citra berwarna Segmentasi citra
Restorasi citra
Ekstraksi fitur bentuk dan kontur Ekstraksi fitur tekstur
Aplikasi temu kembali citra Panduan Octave
Teori dan Aplikasi
Buku ini sangat cocok dipakai oleh mahasiswa Teknologi Informasi,Teknik Informatika, Teknik Elektro, dan jurusan teknik lainyang sedang atau hendak mempelajari pengolahan citra untuk berbagai kepentingan.
Semua contoh mudah dipraktikkandengan menggunakan Octave ataupun MATLAB.Algoritma dan kode yang disajikan tidak menutup kemungkinan untukdikonversikan ke dalam bahasa pemrograman lain. “Buku yang menggabungkan teori dan aplikasi pengolahan citra yang mudah dipahami. Contoh kode sumber yang diberikan merupakan pelengkap yang sangat berharga.”
Widyawan, S.T., M.Sc., Ph.D. – Ketua Program Studi Teknologi Informasi UGM “Buku yang menjembatani teori matematis dengan penerapan langsung menggunakan pemrograman sehingga lebih mudah dicerna oleh praktisi, mahasiswa, dan bahkan pengajar. Sangat bermanfaat!”
Noor Ahmad Setiawan, S.T., M.T., Ph.D. – Dosen JTETI FT UGM “Buku yang secara rinci membahas proses pengolahan citra. Disajikan dengan contoh-contoh nyata dan disertai dengan program-program aplikasi yang sangat menarik untuk diikuti.”
BAB 1
Pengantar
Pengolahan Citra
Setelah membaca bab ini, diharapkan pembaca
memperoleh wawasan tentang:
pengertian pengolahan citra digital;
aplikasi pengolahan citra digital;
1.1 Pengertian Pengolahan Citra Digital
Istilah citra digital sangat populer pada masa kini. Banyak peralatan
elektronik yang menghasilkan citra digital; misalnya
scanner,
kamera digital,
mikroskop digital, dan
fingerprint reader
(pembaca sidik jari). Perangkat lunak
untuk mengolah citra digital juga sangat populer digunakan oleh pengguna untuk
mengolah foto atau untuk berbagai keperluan lain. Sebagai contoh,
Adobe
Photoshop
dan GIMP (
GNU Image Manipulation Program
) menyajikan berbagai
fitur untuk memanipulasi citra digital.
(a) Kamera digital (b) Kamera CCTV
(c) Pemindai (Scanner) (d) Pembaca Sidik Jari
Gambar 1.1Empat contoh alat yang menghasilkan citra digital
Lalu, apa sebenarnya yang dimaksud dengan pengolahan citra
digital?Secara umum, istilah pengolahan citra digital menyatakan “pemrosesan
gambar berdimensi-dua melalui komputer digital” (Jain, 1989).Menurut Efford
(2000), pengolahan citra adalah istilah umum untuk berbagai teknik yang
keberadaannya untuk memanipulasi dan memodifikasi citra dengan berbagai
cara. Foto adalah contoh gambar berdimensi dua yang bisa diolah dengan
mudah.Setiap foto dalam bentuk citra digital (misalnya berasal dari kamera
digital) dapat diolah melalui perangkat-lunak tertentu.Sebagai contoh, apabila
hasil bidikan kamera terlihat agak gelap, citra dapat diolah agar menjadi lebih
terang.Dimungkinkan
pula
untuk
memisahkan
foto
orang
dari
latarbelakangnya.Gambaran tersebut menunjukkan hal sederhana yang dapat
dilakukan melalui pengolahan citra digital. Tentu saja, banyak hal lain yang lebih
pelik yang dapat dilakukan melalui pengolahan citra digital.
•
Untuk
penyederhanaan
penyebutan
pada
pembicaraan
selanjutnya, istilah “pengolahan citra digital” akan dinyatakan
dengan “pengolahan citra” saja.
•
Selain citra digital,terdapat citra analog. Foto yang ditempelkan
pada kartu mahasiswa adalah contoh citra analog. Agar foto
tersebut bisa diproses oleh komputer maka harus didigitalkan
melalui alat pemindai.
1.2 Aplikasi Pengolahan Citra
Pengolahan citra merupakan bagian penting yang mendasari berbagai
aplikasi nyata, seperti pengenalan pola, penginderaan jarak-jauh melalui satelit
atau pesawat udara, dan
machine vision
. Pada pengenalan pola, pengolahan citra
antara lain berperan untuk memisahkan objek dari latarbelakang secara otomatis.
Selanjutnya, objek akan diproses oleh pengklasifikasi pola. Sebagai contoh,
sebuah objek buah bisa dikenali sebagai jeruk, apel, atau pepaya.Pada
penginderaan jarak jauh, tekstur atau warna pada citra dapat dipakai untuk
mengidentifikasi objek-objek yang terdapat di dalam citra. Pada
machine vision
(sistem yang dapat“melihat” dan “memahami” yang dilihatnya), pengolahan citra
berperan
dalam
mengenali
bentuk-bentuk
khusus
yang
dilihat
oleh
mesin.Penggunaan kamera pemantau ruangan merupakan contoh bagian
aplikasipemrosesan citra.Perubahan gerakan yang ditangkap melalui citra dapat
menjadi dasar untuk melakukan pelaporan situasi yang terekam.
Pengolahan
dikartunkan.Sebagai
memungkinkan pem
Perangkat lunak sep
gambar yang memun
hasil goresan pensil,
Gambar 1.3.
Gambar 1.2Aplika
citra
juga
memungkinkan
waja
i contoh ditunjukkan pada Gambar 1.2.Apli
mbuatan kartun yang didasarkan pada obj
eperti Microsoft Word 2010 menyertakan fa
ungkinkan setiap gambar asli diubah menjadi
il, kapur, pastel, dan lain-lain, sebagaimana d
ikasi pengolahan citra untuk mengartunkan
ajah
seseorang
plikasi seperti itu
bjek-objek nyata.
asilitas pengolah
di gambar seperti
ditunjukkan pada
Gambar 1.3Penggunaan efek gambar pada Microsoft Word 2010
memanfaatkan pengolahan citra
Aplikasi pengolahan citra memang makinmeluas.Di dunia kedokteran,
pengolahan citra mempunyai peran yang sangat besar.
CT Scan
(
Computed
Tomography Scan
) atau kadang disebut
CAT Scan
(
Computerized Axial
Tomography Scan
) merupakan suatu contoh aplikasi pengolahan citra, yang dapat
dipakai untuk melihat potongan atau penampang bagian tubuh manusia.
Tomografi adalah proses untuk menghasilkan citra berdimensi dua dari potongan
objek berdimensi tiga dari sejumlah hasil pemindaian satu-dimensi. Gambar 1.4
memperlihatkan contoh
CT Scan
dan hasilnya.
(a)
CT Scan
(Sumber:
http://www.dxhealthcorp.com)
(b) Contoh hasil
CT Scan
(Sumber:
http://www.thirdage.com/)
Gambar 1.4
CT Scan
Pengolahan citra juga dapat dimanfaatkan, misalnya, untuk kepentingan
penentuan jenis tanaman hias melalui ciri-ciri citra daun. Seseorang yang ingin
tahu mengenai suatu tanaman cukup memasukkan citra daun yang ia miliki dan
kemudian memunggahkan ke sistem berbasis web. Selanjutnya, sistem
web
dapat
mencarikan informasi yang sesuai dengan citra tersebut.Gambar 1.5
memperlihatkan contoh hasil pencarian jenis tanaman hias.
Gambar 1.5Masukan citra dapat digunakan sebagai dasar
pencarianjenis tanaman hias
Berbagai aplikasi pengolahan citra juga telah dilakukan di
Indonesia.Beberapa contoh ditunjukkan berikut ini.
Pencarian
database
orang melalui foto orang (Aribowo, 2009)
Identifikasi kematangan buah tomat (Noor dan Hariadi, 2009)
Identifikasi penyakit
Diabetes mellitus
melalui citra kelopak mata (Rachmad,
2009)
Ekstraksi fitur motif batik (Mulaab, 2010)
Identifikasi telapak tangan (Putra dan Erdiawan, 2010)
1.3Prinsip Dasar dalam Pengolahan Citra
Hal-hal yang diutarakan pada Subbab 1.2 merupakan contoh-contoh
aplikasi kegiatan pengolahan citra.Aplikasi-aplikasi seperti itu sesungguhnya
menggunakan prinsip dasar dalam pengolahan citra seperti peningkatan kecerahan
dan kontras, penghilangan derau pada citra, dan pencarian bentuk objek.Beberapa
contoh diberikan berikut ini.
1.3.1 Peningkatan Kecerahan dan Kontras
Seringkali dijumpai citra yang tidak jelas akibat sinar yang kurang ketika
objek dibidikmelalui kamera digital.Dengan menggunakan pengolahan citra, citra
seperti itu bisa diperbaiki melalui peningkatan kecerahan dan kontras.Gambar 1.3
menunjukkan contoh citra yang kurang cerah dan kurang kontras menjadi citra
yang lebih kontras.
(a) Citra dengan kontras
rendah
(b) Citra dengan kontras yang
telah ditingkatkan
Gambar 1.6Pengolahan citra memungkinkan
Gambar 1.6(a) kurang jelas, tetapi melalui pengolahan citra yang tepat diperoleh
hasil yang jauh lebih jelas (Gambar 1.6(b)).
1.3.2 Penghilangan Derau
Citra yang akan diproses seringkali dalam keadaan terdistorsi atau
mengandung derau. Untuk kepentingan tertentu, derau tersebut perlu dibersihkan
terlebih dulu.Dalam pengolahan citra, terdapat beberapa metode yang bisa dipakai
untuk keperluan tersebut. Salah satu caradilaksanakan melalui filter
notch
. Efek
filter tersebut dapat dilihat pada Gambar 1.7.
(a) Citra dengan derau berbentuk kotak-kotak (b) Citra dengan derau telah dihilangkan
Gambar 1.7Pengolahan citra memungkinkan
untukmenghilangkanderau pada citra
Terlihat bahwa derau berbentuk kotak pada Gambar 1.7(a) bisa dihilangkan dan
hasilnya seperti yang terlihat pada Gambar 1.7(b).
1.3.3 Pencarian Bentuk Objek
Untuk kepentingan mengenali suatu objek di dalam citra, objek perlu
dipisahkan terlebih dulu dari latarbelakangnya. Salah satu pendekatan yang umum
dipakai untuk keperluan ini adalah penemuan batas objek.Dalam hal ini, batas
objek berupa bagian tepi objek. Setelah tepiobjek diketahui, pencarian ciri
terhadap objek bisa dilaksanakan, misalnya berdasar perbandingan panjang dan
lebar daun. Objek daun dan batas daun yang didapatkan melalui pengolahan citra
diperlihatkan pada Gambar 1.8.Adapun Gambar 1.9 memperlihatkan tahapan
penentuan panjang dan lebar daun diperoleh melalui komputasi oleh komputer.
Pemisahan objek dalam citra terhadap latarbelakang dikenal dengan
sebutan segmentasi.
(a) Citra asli (b) Citra dengan hanya bagian luar yang digambar
Gambar 1.8Pengolahan citra memungkinkan untuk
mendapatkan bentuk objek
Gambar 1.9Penentuan panjang dan lebar daun
berdasarkan tepi daun
1.
Jelaskan pengertian pengolahan citra digital!
2.
Berikan contoh aplikasi pengolahan citra yang Anda ketahui.
3.
Apa yang dimaksud dengan Tomografi?
4.
Apaperan filter median?
5.
Apa yang dimaksud batas objek? Apa kegunaannya?
6.
Jelaskan pengertian segmentasi.
BAB 2
Pengenalan Dasar
Citra
Setelah bab ini berakhir, diharapkan pembaca memahami
hal-hal berikut beserta contoh penerapannya.
Representasi citra digital
Kuantisasi citra
Kualitas citra
Cara membaca citra
Cara mendapatkan ukuran citra
Cara menampilkan citra
Pemahaman jenis citra
Konversi jenis citra
2.1 Representasi Citra Digital
Citra digital dibentuk oleh kumpulan titik yang dinamakan piksel (
pixel
atau
“picture element”).Setiap piksel digambarkan sebagai satu kotak kecil.Setiap
piksel mempunyai koordinat posisi.Sistem koordinat yang dipakai untuk
menyatakan citra digital ditunjukkan pada Gambar 2.1.
0 N-1
M-1 0
x
y
Posisi sebuah piksel
Gambar 2.1Sistem koordinat citra berukuran MxN
(M baris dan N kolom)
Dengan sistem koordinat yang mengikuti asas pemindaian pada layar TV
standar itu, sebuah piksel mempunyai koordinat berupa
(x, y)
Dalam hal ini,
•
x menyatakan posisi kolom;
•
y menyatakan posisi baris;
•
piksel pojok kiri-atas mempunyai koordinat (0, 0) dan piksel pada pojok
kanan-bawah mempunyai koordinat (N-1, M-1).
Dalam praktik, penggunaan koordinat pada sistem tertentu
mempunyai sedikit perbedaan. Misalnya, pada
Octave
dan
MATLAB
,
piksel pojok kanan-atas tidak mempunyai koordinat (0, 0)
melainkan (1, 1). Selain itu, setiap piksel pada
Octave
dan
MATLAB
diakses melalui notasi (baris, kolom). Mengingat buku ini
menggunakan contoh dengan
Octave
dan
MATLAB
, maka notasi
yang digunakan disesuaikan dengan
Octave
dan
MATLAB
. Sebagai
contoh, koordinat piksel akan ditulis dengan (y, x) dan koordinat
pojok kanan-atas akan dinyatakan dengan (1, 1).
Dengan menggunakan notasi pada
Octave
dan
MATLAB
, citra dinyatakan
dengan
f(y, x)
Sebagai contoh, citra yang berukuran 12x12 yang terdapat pada Gambar 2.2(a)
memiliki susunan data seperti terlihat pada Gambar 2.2(b).Adapun Gambar 2.3
menunjukkan contoh penotasian f(y,x). Berdasarkan gambar tersebut maka:
•
f(2,1) bernilai 6
•
f(4,7) bernilai 237
(a) Citra berukuran 12 x 12
6 6 6 6 6 6 6 89 237 237 237 237 6 6 89 237 237 237 6 6 89 237 237 237 6 6 89 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 6 6 89 237 237 237 6 6 6 6 6 6 6 89 237 237 237 237 6 6 6 6 6 6 89 237 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 237 6 6 89 237 237 237 6 6 89 237 237 237 6 6 89 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 237 237 6 6 89 237
(b) Data penyusun citra 12 x 12
Gambar 2.2Citra dan nilai penyusun piksel
f(4,7) = 237
6 6 6 6 6 6 6 89 237 237 237 237 6 6 89 237 237 237 6 6 89 237 237 237 6 6 89 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 6 6 89 237 237 237 6 6 6 6 6 6 6 89 237 237 237 237 6 6 6 6 6 6 89 237 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 237 6 6 89 237 237 237 6 6 89 237 237 237 6 6 89 237 237 237 237 6 6 89 237 237 6 6 89 237 237 237 237 237 6 6 89 237 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12f(2,1) = 6
2.2 Kuantisasi Citra
Citra digital sesungguhnya dibentuk melalui pendekatan yang dinamakan
kuantisasi.Kuantisasi adalah prosedur yang dipakai untuk membuat suatu isyarat
yang bersifat kontinu ke dalam bentuk diskret.Untuk mempermudah pemahaman
konsep ini, lihatlah Gambar 2.4.Gambar 2.4(a) menyatakan isyarat analog
menurut perjalanan waktu t, sedangkan Gambar 2.4(b) menyatakan isyarat diskret.
(a)
Isyarat analog
(b)
Isyarat diskret
t t
Gambar 2.4 Perbandingan isyarat analog dan isyarat diskret
Pada isyarat digital, nilai intensitas citra dibuat diskret atau terkuantisasi
dalam sejumlah nilai bulat. Gambar 2.5(a) menunjukkan contoh citra biner dua
nilai intensitas berupa 0 (hitam) dan 1 (putih).Selanjutnya, gambar tersebut
ditumpangkan pada grid 8x8 seperti yang diperlihatkan pada Gambar
2.5(b).Bagian gambar yang jatuh pada kotak kecil dengan luaslebih kecil
dibanding warna putih latarbelakang, seluruh isi kotak dibuat putih.Sebaliknya,
jika mayoritas hitam, isi kotak seluruhnya dibuat hitam.Hasil pengubahan ke citra
digital tampak pada Gambar 2.5(c).Adapun Gambar 2.5(d) memperlihatkan
bilangan yang mewakili warna hitam (0) dan putih (1).Dengan demikian, citra
digital akan lebih baik (lebih sesuai aslinya) apabila ukuran piksel diperkecil atau
jumlah piksel diperbanyak.
(a)Citra yang akan dinyatakan dalam isyarat digital
(b)Citra ditumpangkan pada grid
1 1 1 1 1 0 1 1
1 1 1 1 0 1 1 1
1 0 0 0 0 0 1 1
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 1 1 1 0 1 1 1
Gambar 2.5Digitalisasi citra biner 8x8 piksel
untuk memperlihatkan bentuk piksel ideal
Bagaimana halnya kalau gambar mengandung unsur warna (tidak sekadar
hitam dan putih)? Prinsipnya sama saja, tetapi sebagai pengecualian,warna hitam
diberikan tiga unsur warna dasar, yaitu merah (R =
red
), hijau (G =
green
), dan
biru (B =
blue
). Seperti halnya pada citra monokrom (hitam-putih) standar,
dengan variasi intensitas dari 0 hingga 255, pada citra berwarna terdapat
16.777.216 variasi warna apabila setiap komponen R, G, dan B mengandung 256
aras intensitas. Namun, kepekaan mata manusia untuk membedakan macam
warna sangat terbatas, yakni jauh di bawah enam belas juta lebih tersebut.
Untuk beberapa keperluan tertentu, jumlah gradasi intensitas saling berbeda.
Tabel 2.1 memberikan lima contoh untuk citra beraras keabuan dan Tabel 2.2
menunjukkan empat contoh penggunaan citra berwarna (RGB). Perhatikan bahwa
jumlah gradasi juga bisa dinyatakan dalam jumlah digit biner atau bit 0 dan 1
sebagai sandi digital per piksel.
Tabel 2.1Jangkauan nilai pada citra keabuan
Komponen
warna
Bit per
Piksel
Jangkauan Penggunaan
1
1
0-1
Citra
biner:
dokumen
faksimili
8
0-255
Umum:
foto
dan
hasil
pemindai
12
0-4095
Kualitas tinggi: foto dan
hasil pemindai
14
0-16383
Kualitas profesional: foto
dan hasil pemindai
16
0-65535
Kualitas
tertinggi:
citra
kedokteran dan astronomi
Tabel 2.2Jangkauan nilai pada citra berwarna
Komponen
Warna
Bit per
Piksel
Jangkauan Penggunaan
3
24
0-1
RGB umum
36
0-4095
RGB kualitas tinggi
42
0-16383
RGB kualitas profesional
4
32
0-255
CMYK (cetakan digital)
Dalam pengolahan citra, kuantisasi aras intensitas menentukan kecermatan
hasilnya. Dalam praktik, jumlah aras intensitas piksel dapatdinyatakan
dengankurang dari 8 bit. Contoh pada Gambar 2.6 menunjukkan citra yang
dikuantisasi dengan menggunakan 8, 5, 4, 3, 2, dan 1 bit.
(a) 8 bit (b) 5 bit (c) 4 bit
(d) 3 bit (e) 2 bit (f) 1 bit
Gambar 2.6Kuantisasi citra dengan menggunakan berbagai bit
Pada kuantisasi dengan 1 bit, jumlah level sebanyak 2 (2
1).Oleh karena itu,
warna yang muncul berupa hitam dan putih saja. Perlu diketahui, penurunan
jumlah aras pada tingkat tertentu membuat mata manusia masih bisa menerima
citra dengan baik. Sebagai contoh, citra dengan 4 bit (Gambar 2.6(c)) dan citra
dengan 8 bit (Gambar 2.6(a)) praktisterlihat sama. Hal seperti itulah yang
mendasari gagasan pemampatan data citra, mengingat citra dengan jumlah bit
lebih rendah tentu akan membutuhkan tempat dan transmisi yang lebih hemat.
2.3 Kualitas Citra
Di samping cacah intensitas kecerahan, jumlah piksel yang digunakan untuk
menyusun suatu citra mempengaruhi kualitas citra. Istilah resolusicitrabiasa
dinyatakan jumlah piksel pada arah lebar dan tinggi. Resolusi piksel biasa
dinyatakan dengan notasi m x n, dengan m menyatakan tinggi dan n menyatakan
lebardalam jumlah piksel. Contoh pada Gambar 2.5 menunjukkan bahwa kalau
gambar apel hanya dinyatakan dalam 8 x 8 piksel,citra yang terbentuk sangat
berbeda dengan aslinya.Seandainya jumlah piksel yang digunakan lebih banyak,
tentu akan lebih mendekati dengan gambar aslinya. Contoh pada Gambar 2.6
memperlihatkan efek resolusi piksel untuk menampilkan gambar yang sama.
(a)Citra berukuran 512 x 512 piksel
(b)Citra berukuran 256 x 256 piksel
(c) Citra berukuran 128 x 128 piksel (d) Citra berukuran 64 x 64 piksel
Gambar 2.7Efek resolusi berdasar jumlah piksel pada citra
ketika gambar disajikan dengan ukuran yang sama
Terlihat bahwa pada resolusi tertentu citra menjadi kabur kalau dinyatakan dengan
jumlah piksel yang makinsedikit.
Resolusi spasial ditentukan oleh jumlah piksel per satuan panjang. Istilah
seperti dpi (
dot per inch
) menyatakan jumlah piksel per inci. Misalnya, citra 300
dpi menyatakan bahwa citraakan dicetak dengan jumlah piksel sebanyak 300
sepanjang satu inci. Berdasarkan hal itu, maka citra dengan resolusi ruang spasial
sebesar 300 dpi dicetak di kertas dengan ukuran lebih kecil daripada yang
mempunyai resolusi ruang sebesar 150 dpi, meskipun kedua gambar memiliki
resolusi piksel yang sama.
2.4 Membaca Citra
Untuk kepentingan memudahkan dalam memahami hasil proses pengolahan
citra, Anda perlu mengenal perintah yang berguna untuk membaca citra yang
tersimpan dalam bentuk
file.Octave
menyediakan fungsi bernama
imread
. Bentuk
pemanggilannya:
Img
= imread(
nama_file_citra
)
Dalam hal ini,
nama_file_citra
menyatakan nama
file
citra yang hendak dibaca dan
Img
menyatakan larik (
array
) yang menampung data citra yang dibaca.Perlu
diketahui, format-format gambar yang bisa dibaca oleh
imread
ditunjukkan pada
Tabel 2.3.
Tabel 2.3Daftar formatfile gambar yang bisa dibaca oleh imread
Format
Gambar
Ekstensi
Keterangan
TIFF
.tif, .tiff
Tagged
Image
File
Format
merupakan format citra yang
mula-mula dibuat boleh Aldus.
Kemudian, dikembangkan oleh
Microsoft
dan
terakhir
oleh
Adobe
.
JPEG
.jpg, .jpeg
Joint
Photographics
Expert
Group
adalah format citra yang
dirancang
agar
bisa
Format
Gambar
Ekstensi
Keterangan
1:16.
GIF
.gif
Graphics
Interface
Format
merupakan
format
yang
memungkinkan pemampatan data
hingga 50%. Cocok untuk citra
yang memiliki area yang cukup
besar dengan warna yang sama.
BMP
.bmp
Windows
Bitmap
merupakan
format bitmap pada Windows.
PNG
.png
Portable Network Graphics
biasa
dibaca ‘ping’. Asal mulanya
dikembangkan sebagai pengganti
format
GIF
karena
adanya
penerapan
lisensi
GIF.
Mendukung pemampatan data
tanpa menghilangkan informasi
aslinya.
XWD
.xwd
XWindow Dump
•
Daftar
file
citra pada Tabel 2.3 berlaku untuk
MATLAB.
•
Saat buku ini ditulis,
Octave
hanya mampu
membaca
file
citra berformat PNG. Format lain
hanya bisa dibaca dengan melibatkan utilitas lain
seperti ImageMagick. Itulah sebabnya, seluruh
contoh
file
citra dalam buku ini menggunakan
format PNG.
Contoh berikut digunakan untuk membaca
file
citra bernama mandrill.png
yang terdapat pada folder C:\Image.
>>Img = imread(’C:\Image\mandrill.png’); >>
•
Dengan cara seperti itu, data citra pada
file
mandrill.png
disimpan di
Img
. Dalam hal ini, Img berupa larikyang
mengandung M baris dan N baris. Mengingat
file
tersebut
berisi data citra berskala keabuan, maka nilai pada setiap
elemen dalam matriks menyatakan intensitas piksel. Nilai
intensitas itu berupa bilangan bulat antara 0 sampai dengan
255.
•
Berbagai jenis citra (antara lain yang berskala keabuan) akan
segera dibahas.
•
imread
juga mendukung pembacaan citra 16 bit. Namun,
pembahasan di buku ini menggunakan semua
file
citra
berukuran 8 bit (tipe
uint8
).
2.5 Mengetahui Ukuran Citra
Secara umum, ukuran matriks Imgadalah M x N. Untuk mengetahui nilai M
dan N yang sesungguhnya, dapatdigunakan fungsi pada
Octave
yang bernama
size
. Contoh untuk mengetahui dimensi pada matriks
Img
:
>>Ukuran = size(Img) Ukuran =
512 512
>>
Dengan cara seperti itu, terlihat bahwa Imgberisi512 baris dan 512 kolom piksel.
Untuk mendapatkan jumlah baris dan jumlah kolom secara tersendiri, perlu
diberikan perintah seperti berikut:
>> jum_baris = Ukuran(1); >> jum_kolom = Ukuran(2); >>
Angka 1 dan 2 pada ukuran menyatakan indeks. Dengan cara seperti itu,
jum_baris
berisi jumlah baris padalarik
Img
dan
jum_kolom
berisi jumlah
kolom pada larik
Img
.
Sebagai alternatif, dapat ditulis perintah seperti berikut:
>> [jum_baris, jum_kolom] = size(Img);
Dengan cara seperti itu,
jum_baris
berisi jumlah baris pada larik
Img
dan
jum_kolom
berisi jumlah kolom pada larik
Img
.
2.6 Menampilkan Citra
Citra dapat ditampilkan dengan mudah melalui fungsi
imshow
. Contoh
berikut digunakan untuk menampilkan citra yang terdapat di
Img
:
>>imshow(Img); >>
Hasilnya berupa jendela yang menampilkan citra pada
Img
, seperti terlihat pada
Gambar 2.8.
Gambar 2.8Contoh penampilan gambar pada Img
Apabila dikehendaki untuk menampilkan dua citradi dua
jendelamasing-masing, fungsi
figure
perlu dipanggil terlebih dulu sebelum memanggil
imshow
.
Contoh:
>> Sungai = imread('C:\Image\innsbruck.png'); >> Bangunan = imread('C:\Image\altstadt.png'); >>figure(1); imshow(Sungai);
>>figure(2); imshow(Bangunan);
Hasilnya,
gambar
sungai
ditampilkan
di
jendela
1
dan
gambar
bangunandiletakkan di jendela 2.Gambar 2.9 memperlihatkan keadaan pada kedua
jendela, yaitu kebetulan sebagian jendela 2 menutup jendela 1.
Gambar 2.9Menampilkan dua citradi jendela masing-masing
Octave menyediakan fasilitas yang memungkinkan dua buah citra diletakkan
dalam satu jendela. Berdasarkan larik
Sungai
dan
Bangunan
di depan, dapat
dicobauntuk memberikan perintah berikut:
>> close all;
>>subplot(1,2,1); imshow(Sungai); >>subplot(1,2,2); imshow(Bangunan);
Gambar 2.10Contoh pemakaian subplot
Perintah
close all
digunakan untuk menutup semua jendela. Adapun pada
subplot
, argumen pertama menyatakan jumlah baris citra dan argumen kedua
menyatakan jumlah kolom citra dalam jendela.Argumen ketiga menyatakan
indeks citra dalam jendela yang bernilai antara 1 sampai dengan jumlah baris x
jumlah kolom.
2.7 Mengenal Jenis Citra
Ada tiga jenis citra yang umum digunakan dalam pemrosesan citra.Ketiga
jenis citra tersebut yaitu citra berwarna, citra berskala keabuan, dan citra biner.
2.7.1 Citra Berwarna
Citra berwarna, atau biasa dinamakan citra RGB, merupakan jenis citra yang
menyajikan warna dalam bentuk komponen R (merah), G (hijau), dan B
(biru).Setiap komponen warna menggunakan 8 bit (nilainya berkisar antara 0
sampai dengan 255). Dengan demikian, kemungkinan warna yang bisa disajikan
mencapai 255 x 255 x 255 atau 16.581.375 warna. Tabel 2.4 menunjukkan contoh
warna dan nilai R,G, dan B.
Tabel 2.4 Warna dan nilai penyusun warna
Warna
R
G
B
Merah
255
0
0
Hijau
0
255
0
Biru
0
0
255
Hitam
0
0
0
Putih
255
255
255
Kuning
0
255
255
Gambar 2.12 menunjukkan pemetaan warna dalam ruang tiga dimensi.Adapun
Gambar 2.13 menunjukkan keadaan suatu citra dan representasi warnanya.
R
B
G
0
Putih
Cyan
Biru
255
255
255
Hitam
Merah
Kuning
Hijau
Magenta
Gambar 2.13Citra berwarna dan representasi warnanya.
Setiap piksel dinyatakan dengan nilai R, G, dan B
Perlu diketahui, sebuah warna tidak hanya dinyatakan dengan
komposisi R, G, dan B tunggal. Pada Tabel 2.4 terlihat bahwa
warna merah mempunyai R=255, G=0, dan B=0. Namun,
komposisi R=254, G=1, B=1 juga berwarna merah.
Citra berwarna pun dibaca melalui
imread
. Contoh:
>> Kota = imread('C:\Image\innsbruckcity.png');
Nah, sekarang dapatdicoba untuk mengenakan
size
pada
Kota
:
>>size(Kota) ans =
>>
Hasilnya menunjukkan bahwa
Kota
berupa larikberdimensi tiga, dengan dimensi
ketiga berisi tiga buah nilai.Hal inilah yang membedakan dengan citra berskala
keabuan.Secara umum, larik hasil pembacaan citra berwarna dapat digambarkan
seperti berikut.
1 M 1 N 1 2 3 Komponen B Komponen G Komponen R 2 2 M-1 N-1Gambar 2.14Hasil pembacaan citra berwarna
Dimensi ketiga menyatakan komponen R, G, B. Indeks pertama menyatakan
komponen R, indeks kedua menyatakan komponen G, dan indeks ketiga
menyatakan komponen B.
Berikut adalah cara untuk mendapatkan komponen R, G, dan B pada
larik
Kota
di depan:
>> R = Kota(:,:,1); >> G = Kota(:,:,2); >> B = Kota(:,:,3);
Untuk menampilkan gambar berwarna,
imshow
bisa digunakan seperti kalau
mau menampilkan gambar berskala keabuan. Contoh:
>>figure(1); >>imshow(Kota);
Hasilnya seperti berikut.
Gambar 2.15Citra berwarna
2.7.2 Citra Berskala Keabuan
Sesuai dengan nama yang melekat, citra jenis ini menangani gradasi warna
hitam dan putih, yang tentu saja menghasilkan efek warna abu-abu.Pada jenis
gambar ini, warna dinyatakan dengan intensitas.Dalam hal ini, intensitas berkisar
antara 0 sampai dengan 255.Nilai 0 menyatakan hitam dan nilai 255 menyatakan
putih.Contoh citra berskala keabuan telah dibahas pada Subbab 2.5.
2.7.3 Citra Biner
Citra biner adalah citra dengan setiap piksel hanya dinyatakan dengan sebuah
nilai dari dua buah kemungkinan (yaitu nilai 0 dan 1).Nilai 0 menyatakan warna
hitam dan nilai 1 menyatakan warna putih.Citra jenis ini banyak dipakai dalam
pemrosesan citra, misalnya untuk kepentingan memperoleh tepi bentuk suatu
objek.Sebagai contoh, perhatikan Gambar 2.16.Bagian kiri menyatakan citra
beraras keabuan, sedangkan bagian kanan adalah hasil konversi ke citra biner.
(a) Citra daun berskala keabuan
(b) Citra biner
Gambar 2.16Citra di kanan menyatakan bentuk citra di kiri
dengan mengabaikan komposisi warna
Contoh berikut menunjukkan cara membaca dan menampilkan citra biner.
>>Img = imread('c:\Image\daun_bin.png'); >>imshow(Img);
>>
Gambar 2.17Tampilan citra biner
2.8 Mengonversi Jenis Citra
Dalam praktik, seringkali diperlukan utuk mengonversi citra berwarna ke
dalam bentuk citra berskala keabuan mengingat banyak pemrosesan citra yang
bekerja pada skala keabuan.Namun, terkadang citra berskala keabuan pun perlu
dikonversikan ke citra biner, mengingat beberapa operasi dalam pemrosesan citra
berjalan pada citra biner.
Bagaimana cara mengubah citra berwarna ke dalam citra berskala keabuan?
Secara umum citra berwarna dapat dikonversikan ke citra berskala keabuan
melalui rumus:
= + + , + + = 1
(2.1)
dengan R menyatakan nilai komponen merah, G menyatakan nilai komponen
hijau, dan B menyatakan nilai komponen biru. Misalnya, sebuah piksel
mempunyai komponen R, G,B sebagai berikut:
R = 50
G = 70
B = 61
Jika a, b, dan c pada Persamaan 2.1 dibuat sama, akan diperoleh hasil seperti
berikut:
I = (50 + 70 + 60) / 3 = 60
Salah satu contoh rumus yang biasa dipakai untuk mengubah ke skala
keabuan yaitu:
= 0,2989 + 0,5870 + 0,1141
(2.2)
Contoh berikut menunjukkan cara melakukan konversi dari citra berwarna ke citra
biner.
>>Img = imread('C:\Image\innsbruckcity.png'); >> Abu=uint8(0.2989 * double(Img(:,:,1)) + ... 0.5870*double(Img(:,:,2)) + ... 0.1141 * double(Img(:,:,3))); >>imshow(Abu);•
Tanda … menyatakan bahwa perintah pada baris
tersebut masih mempunyai lanjutan pada baris
berikutnya.
•
Tanda : berarti semua nilai.
•
double
dipakai untuk melakukan konversi dari
tipe bilangan bulat 8 bit (uint8) ke tipe
double
(yang memungkinkan pemrosesan bilangan real
berpresisi ganda).
•
uint8
berguna untuk mengonversi dari tipe
double
ke
uint8
(tipe bilangan bulat 8 bit).
Ga
Bagaimana halny
keabuan ke citra bine
yang dikenal sebaga
menentukan suatu int
matematis, konversi d
= 0,
1,
Contoh berikut m
keabuan ke dalam citr
Program
% KEBINER Digunak
ambar 2.18Hasil konversi citra berwarna
ke citra berskala keabuan
lnya kalau dikehendaki untuk mengonversika
ner?Strategi yang dipakai yaitu dengan menera
gai nilai ambang (
threshold
). Nilai tersebut
ntensitas akan dikonversikan menjadi 0 atau m
i dinyatakan dengan rumus:
t menunjukkan cara melakukan konversi dar
itra biner.
: kebiner.m
kan untuk mengonversi file
kan citra berskala
rapkan suatu nilai
ut dipakai untuk
menjadi 1. Secara
(2.3)
ari citra berskala
% daun_gray.png ke citra biner
Img = imread('c:\Image\daun_gray.png'); [tinggi, lebar] = size(Img);
ambang = 210; % Nilai ini bisa diubah-ubah biner = zeros(tinggi, lebar);
for baris=1 : tinggi for kolom=1 : lebar
if Img(baris, kolom) >= ambang Biner(baris, kolom) = 0; else Biner(baris, kolom) = 1; end end end imshow(Biner);
Akhir Program
Sebelum mencoba program di atas, akan dibahas dulu kode yang mendasari
program. Tanda % mengawali komentar.Semua tulisan dimulai dari tanda tersebut
hingga akhir baris tidak dianggap sebagai perintah, melainkan sebagai penjelas
bagi pembaca program. Kode
Img= imread('c:\Image\daun_gray.png');
merupakan perintah untuk membaca citra daun_gray.png. Hasilnya disimpan
di
Img
. Lalu,
[tinggi, lebar] = size(Img);
berguna untuk mendapatkan lebar dan tinggi citra.
Pernyataan
ambang = 210;
digunakan untuk menentukan nilai ambang bagi penentuan konversi suatu piksel
menjadi 0 atau 1. Nilai ambang berkisar antara 0 sampai dengan 255.
Pernyataan
for baris=1 : tinggi for kolom=1 : lebar
ifImg(baris, kolom) >= ambang Biner(baris, kolom) = 0; else Biner(baris, kolom) = 1; end end end
menangani penentuan nilai 0 atau 1 pada citra biner untuk semua piksel dalam
citra (ditangani dengan dua buah
for
). Penentuan dilakukan melalui pernyataan
if
.
Dalam hal ini,
Img(baris, kolom)
menyatakan nilai intensitas piksel pada (baris, kolom).
Setelah
for baris=1 : tinggi
berakhir, maka
Biner
berisi citra biner. Selanjutnya, citra ditampilkan melalui
imshow(Biner);
Untuk menjalankan program di depan, berikan perintah
>>kebiner;
Gambar 2.19Hasil konversi daun_gray.png ke bentuk biner
Gambar 2.20 memperlihatkan berbagai bentuk hasil konversi citra dengan
menggunakan berbagai nilai ambang.
Ambang = 210 Ambang = 160 Ambang = 130
Ambang = 110 Ambang = 100 Ambang = 70
Gambar 2.20Hasil konversi ke citra biner
dengan berbagai nilai ambang
Contoh-contoh yang telah dibahas memberikan gambaran tentang cara
mewujudkan sendiri konversi antarjenis citra. Hal tersebut tentu saja penting
untuk dipahami agar memudahkan di dalam mewujudkan sendiri penulisan
program seandainya menggunakan bahasa pemrograman yang lain.Namun,
sebagai penambah wawasan, sesungguhnya
Octave
menyediakan beberapa fungsi
untuk kepentingan konversi citra.Tabel 2.5 memperlihatkan dua fungsi penting
yang terkait dengan konversi citra.
Tabel 2.5Fungsi yang disediakan
Octave
untuk kepentingan konversi ke aras keabuan
Fungsi
Kegunaan
im2bw(
I, level
)
im2bw(
RGB, level
)
Berguna untuk mengonversikan citra berskala
keabuan (I) ataupun berwarna (RGB) ke
dalam citra biner dengan menggunakan
level
sebagai ambang konversi. Di
MATLAB
, jika
argumen kedua (yaitu
level
) tidak disertakan,
nilai 0,5 secara bawaan digunakan sebagai
ambang konversi. Pada
Octave
, argumen
kedua harus disertakan. Nilai balik fungsi ini
berupa citra biner
rgb2gray(
RGB
)
Berguna untuk mengonversi citra berwarna
(RGB) ke citra berskala keabuan. Nilai balik
fungsi ini berupa citra berskala keabuan
Pada beberapa contoh yang akan dibahas pada bab-bab selanjutnya, dua fungsi
pada Tabel 2.5 akan digunakan dengan tujuan untuk menyederhanakan
permasalahan dalam menuliskan kode.
Agar terbiasa dengan kedua fungsi tersebut, berikut disajikan contoh
penggunaannya. Contoh pertama:
>>Img= imread('C:\Image\daun_gray.png'); >> BW = im2bw(Img, 0.6);
>>imshow(BW);
Gambar 2.21Hasil pembentukan citra biner melalui im2bw
Adapun contoh pemakaian
rgb2gray
:
>> RGB = imread('C:\Image\innsbruckcity.png'); >> Abu = rgb2gray(RGB);
>>imshow(Abu);
Gambar 2.22 Hasil pembentukan citra berskala keabuan
melalui rgb2gray
2.9 Menyimpan Citra
Untuk kepentingan menyimpan citra ke dalam
file
, fungsi
imwrite
pada
Octave
dapat digunakan. Pemakaiannya:
imwrite(
A
,
nama_file
)
A
dapat berupa larik dua dimensi (citra berskala keabuan) ataupunlarik berdimensi
tiga (citra RGB).
Contoh:
>>Img = imread('C:\Image\daun_gray.png'); >>X = 255 – Img;
Perlu diketahui,
X = 255 – Img;
digunakan untuk memperoleh citra negatif dari citra daun_gray.png. Setelah
imwrite
dieksekusi,akan terbentuk negatif_daun.png pada folder kerja. Hasilnya
diperlihatkan pada Gambar 2.23.
Gambar 2.23Hasil penyimpanan citra negatif_daun.png
1.
Jelaskan mengenai koordinat citra.
2.
Apa yang dimaksud dengan kuantisasi citra?
3.
Jelaskan hubungan jumlah bit dalam kuantisasi citra dengan kompresi
data.
4.
Jelaskan makna kualitas citra.
5.
Jelaskan pengertian :
a)
citra berwarna
b)
citra berskala keabuan
c)
citra biner
6.
Jelaskan mekanisme untuk mengubah citra berwarna ke dalam citra
berskala keabuan.
7.
Bagaimana prinsip untuk mengubah citra berskala keabuan ke citra biner?
8.
Ubahlah innsbruckcity.png ke citra berskala keabuan dan kemudian
simpan dengan nama inns_gray.png.
9.
Buatlah program untuk memproses citra daun_gray.png agar diperoleh
hasil seperti berikut.
10.
Gunakanlah fungsi im2bw untuk mengonversikan citra innsbruckcity.png
ke dalam bentuk citra biner dengan menggunakan level sebesar 0,7, 0,5,
dan 0,3.Bagaimana kesan Anda mengenai hasil-hasil yang diperoleh?
11.
Buatlah program untuk menguantisasi citra daun_gray.png dengan 2 bit.
Tampilkan hasilnya. Apakah hasilnya masih terlihat seperti aslinya? Bila
tidak, dengan menggunakan berapa bit agar gambar tersebut terlihat sesuai
dengan aslinya?
BAB 3
Operasi Piksel
dan Histogram
Setelah bab ini berakhir, diharapkan pembaca memahami
berbagai bahasan berikut.
Operasi piksel
Menggunakan histogram citra
Meningkatkan kecerahan
Meregangkan kontras
Kombinasi kecerahan dan kontras
Membalik citra
Pemetaan nonlinear
Pemotongan aras keabuan
Ekualisasi histogram
3.1 Operasi Piksel
Pada pengolahan citra terdapat istilah operasi piksel atau kadang disebut
operasi piksel-ke-piksel.Operasi piksel adalah operasi pengolahan citra yang
memetakan hubungan setiap piksel yang bergantung pada piksel itu sendiri. Jika
f(y, x) menyatakan nilai sebuah piksel pada citra f dan g(y, x) menyatakan piksel
hasil pengolahan dari f(y, x), hubungannya dapat dinyatakan dengan
, =
,
(3.1)
Dalam hal ini, T menyatakan fungsi atau macam operasi yang dikenakan terhadap
piksel f(y, x). Model operasi inilah yang akan dibahas di bab ini,termasuk
pembahasan pengolahan citra berbasis histogram.
3.2 Menggunakan Histogram Citra
Histogram citra merupakan diagram yang menggambarkan frekuensi
setiapnilai intensitas yang muncul di seluruh piksel citra.Nilai yang besar
menyatakan bahwa piksel-piksel yang mempunyai intensitas tersebut sangat
banyak.
Pada citra berskala keabuan, jumlah aras keabuan (biasa disimbolkan dengan
L) sebanyak 256. Nilai aras dimulai dari 0 hingga 255. Adapun histogram untuk
suatu aras dinyatakan dengan
hist(k+1)
dengan k menyatakan nilai aras (0
sampai dengan L-1). Jadi,
hist(k+1)
menyatakan jumlah piksel yang bernilai k.
Penggunaan k+1 pada
hist
diperlukan mengingat dalam
Octave
dan
MATLAB
tidak ada indeks nol atau
hist(0)
. Cara menghitung
hist(k+1)
ditunjukkan
pada algoritma berikut.
ALGORITMA 3.1 – Menghitung histogram citra aras keabuan
Masukan:
•
f(M, N) : citra berukuran M baris dan N kolom
•
L : jumlah aras keabuan
1.
Buatlah larikhist sebanyak 2
Lelemen dan isi dengan nol.
2.
FOR i
←
1 TO M
FOR j
←
1 TO
hist(f(M, N
END-FO
END-FOR
Contoh berikut m
Program
functionhisto(Img % HISTO Digunakan [jum_baris, jum_k Img = double(Img) Histog = zeros(25 for baris=1 : jum for kolom=1 : jum Histog(Img(baris, Histog(Img(baris, end end % Tampilkan dalam Horis = (0:255)'; bar(Horis, HistogAkhir Skrip
Perlu diketahui, (0:25
dengan 255. Dengan
belakang (0:255) me
berukuran 256x1. Per
O N
, N)+1)
←
hist(f(M, N)+1) + 1
FOR
R
menunjukkan cara membuat histogram citra in
: histo.m
g)
n sebagai contoh pembuatan histogram
kolom] = size(Img); ); 56, 1); m_baris m_kolom , kolom)+1) = ... , kolom)+1) + 1;
m bentuk diagram batang ;
g);
255) untuk membentuk nilai dari 0,1,2, dan se
an kata lain, (0:255) membentuk larik 1 x 2
enyatakan operasi transpos, sehingga hasiln
erintah
bar
digunakan untuk membuat diagram
innsbruck.png.
seterusnya sampai
256. Tanda ‘ di
ilnya berupa larik
am batang.
Misaln
dilakuk
1. Hasi
0
10
8
…
5
20
Dengan memang
>>Img = imread >>histo(Img);diperoleh hasil sepert
yang cukup panjang
berwarna hitam.Ada
menyatakan warna d
warna putih.
Gamba
lnya, B berisi 0, 10, 8, …, 5, 20 (berukuran
ukan operasi transpos (B’), diperoleh matriks
asilnya seperti berikut:
ggil
d('C:\Image\innsbruck.png');
erti terlihat pada Gambar 3.1.Perhatikan keber
g di posisi intensitas nol, yang berasal dari ba
dapun puncak histogram di posisi intensi
dominan abu-abu.Garis panjang di sisi kan
bar 3.1Citrainnsbruck.png dan histogramny
an 1 x 256). Bila
s berukuran 256 x
eradaan satu garis
bagian citra yang
nsitas sekitar 90
anan menyatakan
Untuk kemudahan dalam mengamati histogram, fungsi bawaan bernama
imhist
dapat dimanfaatkan. Contoh penggunaannya:
>>Img=imread('C:\Image\innsbruck.png'); >>imhist(Img);
Hasilnya ditunjukkan pada Gambar 3.2.
Gambar 3.2Hasil histogram dengan imhist
Untuk mengetahui nilai histogram, diperlukan perintah seperti berikut:
>> [Histog, aras] = imhist(Img);