BAB 2 LANDAS AN TEORI
Pada bab ini diuraikan beberapa landasan teori dan konsep – konsep yang berhubungan dengan pengolahan citra, di antaranya adalah tentang pengolahan citra, citra, piksel, convolution, dan Software Development Life Cycle. 2.1
Pengolahan Citra Pengolahan citra merupakan sebuah bentuk pemrosesan sebuah citra atau gambar
dengan cara memproses numerik dari gambar tersebut, dalam hal ini yang diproses adalah masing – masing pixel atau titik dari gambar tersebut. Salah satu teknik pemrosesan citra memanfaatkan komputer sebagai peranti lunak memproses masing – masing pixel dari sebuah gambar. Oleh karena itu muncul istilah pemrosesan citra secara digital atau “Digital Image Processing”. “Digital Image Processing” diperkenalkan pertama kali di New York, USA pada awal tahun 1920-an. Pertama kalinya digunakan untuk meningkatkan kualitas gambar koran yang dikirimkan oleh kabel bawah laut yang terbentang antara London dan New York. Sampai tahun 1960-an perkembangannya tidaklah terlalu menggembirakan. Namun pada akhir tahun 1960-an, di mana perkembangan komputer yang pesat dan mampu menawarkan kecepatan dan kapasitas yang lebih tinggi memacu perkembangan dari implementasi algoritma pemrosesan citra yang lebih pesat lagi. Untuk saat ini penggunaan dari pemrosesan citra telah melingkupi berbagai macam disiplin ilmu di
7
antaranya bidang Arsitektur, Geografi, Ilmu Komputer, Kedokteran, Fotografi, Arkeologi, dan lain sebagainya.
2.2
Citra Citra atau gambar dalam bahasa latin imago adalah suatu representasi, kemiripan,
atau imitasi dari suatu obyek atau benda. Citra dapat dikelompokkan menjadi citra tampak dan citra tidak tampak. Contoh citra tampak dalam kehidupan sehari – hari : foto, gambar, dan lukisan, sedangkan citra tidak tampak misalnya : data gambar dalam file (citra digital), dan citra yang direpresentasikan menjadi fungsi matematis. Di antara jenis citra tersebut, hanya citra digital yang dapat diolah menggunakan komputer. Jenis citra lain, jika hendak diolah dengan komputer, harus diubah dulu menjadi citra digital, misalnya foto discan dengan scanner, persebaran panas tubuh foto ditangkap dengan kamera infra merah dan diubah menjadi informasi numeris, informasi densitas dan komposisi bagian dalam tubuh manusia ditangkap dengan bantuan pesawat sinar–x dan sistem deteksi radiasi menjadi informasi digital. Kegiatan untuk mengubah informasi citra fisik non digital menjadi digital disebut sebagai pencitraan (imaging). Citra digital dapat didefinisikan sebagai fungsi dua variable, f(x,y), di mana x dan y adalah koordinat spasial dan nilai f(x,y) adalah intensitas citra pada koordinat tersebut, hal tersebut diilustrasikan pada Gambar 2.1. Teknologi dasar untuk menciptakan dan menampilkan warna pada citra digital berdasarkan pada penelitian bahwa sebuah warna merupakan kombinasi dari tiga warna dasar, yaitu merah, hijau, dan biru (Red, Green, Blue - RGB).
8
Gambar 2.1 Citra Digital Sebuah citra diubah ke bentuk digital agar dapat disimpan dalam memori komputer atau media lain. Proses mengubah citra ke bentuk digital bisa dilakukan dengan beberapa perangkat, misalnya scanner, digital camera, dan handycam. Ketika sebuah citra diubah ke dalam bentuk digital, bermacam – macam proses pengolahan citra dapat diperlakukan terhadap citra tersebut.
2.3
Piksel Gambar tersusun dari piksel – piksel. Piksel disebut juga dengan dot. Piksel
berbentuk bujur sangkar dengan ukuran relatif kecil yang merupakan penyusun atau pembentuk gambar baru. Banyaknya piksel tiap satuan luas tergantung pada resolusi yang digunakan. Keanekaragaman warna piksel tergantung pada bit depth yang dipakai. Semakin banyak jumlah piksel tiap satu satuan luas, semakin baik kualitas gambar yang dihasilkan dan tentu akan semakin besar ukuran file – nya.
9
2.4
Convolution
2.4.1 Pengertian Convolution Method Convolution adalah operator matematika yang penting untuk banyak operator dalam image processing. Convolution menyediakan cara untuk menggabungkan dua array, biasanya untuk ukuran array yang berbeda, tetapi untuk dimensi array yang sama, menghasilkan array ketiga yang mempunyai dimensi yang sama. Convolution dapat digunakan dalam image processing untuk menerapkan operator yang mempunyai nilai output dari piksel yang berasal dari kombinasi linear nilai input piksel tertentu. Image convolution adalah tehnik untuk menghaluskan suatu citra atau memperjelas citra dengan menggantikan nilai piksel dengan sejumlah nilai piksel yang sesuai atau berdekatan dengan piksel aslinya. Tetapi dengan adanya convolution, ukuran dari citra tetap sama, tidak berubah. Convolution 2 buah fungsi f(x) dan g(x) didefinisikan sebagai berikut :
h(x) = f(x) * g(x) =
(2.1)
yang dalam hal ini, tanda (*) menyatakan operator convolution dan peubah (variable) adalah peubah bantu. Untuk pengolahan citra, operasi yang dilakukan adalah diskrit karena nilai koordinat piksel merupakan nilai yang diskrit. Selanjutnya filter atau mask yang digunakan pada pengolahan citra biasanya berukuran terbatas, dalam artian bobot atau
10
pengaruh dari titik – titik yang cukup jauh sudah tidak signifikan, sehingga dapat diabaikan (dianggap nol). Bentuk diskrit dari operasi convolution satu dimensi pada pengolahan citra adalah :
(2.2) 2.4.2 Convolution Dua Dimensi Untuk fungsi dengan dua dimensi, operasi convolution didefinisikan sebagai berikut : a) Untuk fungsi integral
(2.3) b) Untuk fungsi diskrit
(2.4) Fungsi penapis g(x,y) disebut juga convolution filter, convolution mask, convolution kernel, atau template. Dalam bentuk diskrit convolution kernel dinyatakan dalam bentuk matriks (umumnya matriks 3x3). Ukuran matriks ini biasanya lebih kecil dari ukuran citra. Setiap elemen matriks disebut koefisien convolution. Ilustrasi convolution ditunjukkan pada Gambar 2.2.
11
f(i,j) = Ap1 + Bp2 + Cp3 + Dp4 + Ep5 + Fp6 + Gp7 + Hp8 + Ip9 Gambar 2.2 Ilustrasi Convolution (Sumber: Rinaldi Munir, 2004, p79) Operasi convolution dilakukan dengan menggeser convolution kernel piksel per piksel. Hasil convolution disimpan di dalam matriks baru. Contoh 2.1. M isalkan citra f(x,y) yang berukuran 5x5 dan sebuah kernel atau mask yang berukuran 3x3 masing – masing adalah sebagai berikut :
f(x,y) = (keterangan : tanda
g(x,y) = menyatakan posisi (0,0) dari kernel)
Operasi convolution antara citra f(x,y) dengan kernel g(x,y). f(x,y) * g(x,y) dapat diilustrasikan sebagai berikut :
12
(1) Tempatkan kernel pada sudut kiri atas, kemudian hitung nilai piksel pada posisi (0,0) dari kernel. 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
3
Hasil convolution = 3 . Nilai ini dihitung dengan cara berikut : (0x4) + (-1x4) + (0x3) + (-1x6) + (4x6) + (-1x5) + (0x5) + (-1x6) + (0x6) = 3
(2) Geser kernel satu piksel ke kanan, kemudian hitung nilai piksel pada posisi (0,0) dari kernel : 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
3
0
Hasil convolution = 0. Nilai ini dihitung dengan cara berikut : (0x4) + (-1x3) + (0x5) + (-1x6) + (4x5) + (-1x5) + (0x6) + (-1x6) + (0x6) = 0
14
(3) Geser kernel satu piksel ke kanan, kemudian hitung nilai piksel pada posisi (0,0) dari kernel : 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
3
0
2
Hasil convolution = 2. Nilai ini dihitung dengan cara berikut : (0x3) + (-1x5) + (0x4) + (-1x5) + (4x5) + (-1x2) + (0x6) + (-1x6) + (0x2) = 2
(4) Selanjutnya, geser kernel satu piksel ke bawah, lalu mulai lagi melakukan convolution dari sisi kiri citra. Setiap kali convolution, geser kernel atau piksel ke kanan : 4
4
3
5
4
6
6
5
5
2
3
5
6
6
6
2
0
6
7
5
5
3
3
5
2
4
4
0
2
(i) Hasil convolution = 0. Nilai ini dihitung dengan cara berikut :
15
(0x6) + (-1x6) + (0x5) + (-1x5) + (4x6) + (-1x6) + (0x6) + (-1x7) + (0x5) = 0 4
4
3
5
4
6
6
5
5
2
3
0
5
6
6
6
2
0
2
6
7
5
5
3
3
5
2
4
4
2
(ii) Hasil convolution = 2. Nilai ini dihitung dengan cara berikut : (0x6) + (-1x5) + (0x5) + (-1x6) + (4x6) + (-1x6) + (0x7) + (-1x5) + (0x5) = 2
4
4
3
5
4
6
6
5
5
2
3
0
2
5
6
6
6
2
0
2
6
6
7
5
5
3
3
5
2
4
4
(iii) Hasil convolution = 6. Nilai ini dihitung dengan cara berikut : (0x5) + (-1x5) + (0x2) + (-1x6) + (4x6) + (-1x2) + (0x5) + (-1x5) + (0x3) = 6
16
Dengan cara yang sama seperti tadi, maka piksel – piksel pada baris ketiga di convolution sehingga menghasilkan :
3
0
2
0
2
6
6
0
2
Jika hasil convolution menghasilkan nilai piksel negative, maka nilai tersebut dijadikan 0, sebaliknya jika hasil convolution menghasilkan nilai piksel lebih besar dari nilai keabuan maksimum (255), maka nilai tersebut dijadikan ke nilai keabuan maksimum. M asalah timbul bila piksel yang dikonvolusi adalah piksel pinggir, karena beberapa koefisien convolution tidak dapat diposisikan pada piksel – piksel citra, 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
17
Solusi untuk masalah ini adalah (Rinaldi M unir, 2004, p83):
a.
piksel – piksel pinggir diabaikan, tidak dikonvolusi, jadi nilai piksel pinggir sama
dengan nilai pada citra semula.
b.
Duplikasi elemen citra, misalnya elemen kolom pertama disalin ke kolom M 1 dst.
c.
Elemen bertanda “?” diasumsikan bernilai 0 atau konstanta lain, sehingga convolution pinggir – pinggir dapat dilakukan.
Solusi dengan ketiga pendekatan di atas mengasumsikan bagian pinggir citra lebarnya sangat kecil (hanya satu piksel) relative dibandingkan dengan ukuran citra, sehingga piksel – piksel pinggir tidak memperlihatkan efek yang kasat mata.
4
4
3
5
4
6
3
0
2
2
5
0
2
6
2
6
6
0
2
3
3
5
2
4
4
18
Gambar 2.3 piksel – piksel pinggir (yang tidak diarsir) tidak dikonvolusi. (Sumber: Rinaldi Munir, 2004, p84) Dalam algoritma convolution citra N x M dengan mask atau kernel yang berukuran 3 x 3 piksel yang dikonvolusi adalah elemen (i,j). Delapan buah piksel yang bertetangga dengan piksel (i,j) diperlihatkan pada gambar 2.4. 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 2.4 Delapan piksel yang bertetangga dengan piksel (i,j) Dapat dilihat bahwa operasi convolution merupakan komputasi pada area lokal, karena komputasi untuk suatu piksel pada citra keluaran melibatkan piksel – piksel tetangga pada citra masukannya. Convolution berguna pada proses pengolahan citra seperti : a.
Smooth
b.
Gaussian Blur
c.
Sharpen
d.
Mean removal
e.
Emboss
f.
Edge detection
2.4.2.1 Smooth
19
Smooth bertujuan untuk menekan gangguan (noise) pada citra. Gangguan pada citra umumnya berupa variasi intensitas suatu piksel yang tidak berkorelasi dengan piksel – piksel tetangganya. Secara visual, gangguan mudah dilihat oleh mata karena tampak berbeda dengan piksel tetangganya.
Gambar 2.5 adalah gambar yang
mengalami noise pada citra dalam bentuk bercak – bercak. Piksel yang mengalami gangguan
umumnya memiliki frekuensi tinggi
(berdasarkan analisis frekuensi dengan transformasi Fourier). Komponen citra yang berfrekuensi rendah umumnya mempunyai nilai piksel konstan atau berubah sangat lambat. Operasi pelembutan citra dilakukan untuk menekan komponen yang berfrekuensi tinggi dan meloloskan komponen yang berfrekuensi rendah.
Gambar 2.5 Citra yang mengalami gangguan berupa noise Operasi smooth dapat dilakukan pada ranah spasial. Pada ranah spasial, operasi smooth dilakukan dengan mengganti intensitas suatu piksel dengan rata – rata dari nilai
20
piksel tersebut dengan nilai piksel – piksel tetangganya. Jadi, diberikan citra f(x,y) yang berukuran NxM. Citra hasil smoothing, g(x,y), didefinisikan sebagai berikut :
(2.5) yang dalam hal ini d adalah jumlah piksel yang terlibat dalam perhitungan rata – rata. Persamaan (2.5) nantinya digunakan dalam perhitungan lainnya yaitu Gaussian blur, sharpen, mean removal, emboss, dan edge detection.
Convolution mask yang digunakan berukuran 3x3 seperti yang digambarkan dibawah ini : 1
1
1
1
1
1
1
1
1
Gambar 2.6. Kernel untuk operasi Smooth Gambar 2.7 dibawah ini adalah hasil smoothing citra Taj M ahal dengan convolution mask 3x3.
21
(a)
(b)
Gambar 2.7 (a)Image asli. (b)Hasil convolution smooth
2.4.2.2 Gaussian Blur Operator Gaussian Blur merupakan operator 2-D convolution yang digunakan untuk memberi efek blur (pemudaran) pada citra. Cara pengoperasian Gaussian Blur sama dengan smoothing, tetapi Gaussian Blur menggunakan kernel yang berbeda yang mempresentasikan bentuk Gaussian. Kernel yang digunakan oleh Gaussian blur adalah :
1
2
1
2
4
2
1
2
1
Gambar 2.8. Kernel untuk operasi Gaussian Blur
22
(a)
(b)
Gambar 2.9. (a)Citra asli. (b)Citra yang telah mengalami Gaussian Blur.
2.4.2.3 Sharpen (Penajaman Citra) 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. Kernel yang digunakan untuk Sharpen adalah :
0
-2
0
-2
11
-2
0
-2
0
23
Gambar 2.10. Kernel untuk operasi Sharpen
(a)
(b)
Gambar 2.11. (a)Citra asli. (b)Citra yang telah mengalami Sharpen
Citra pada gambar 2.11(b) mengalami penajaman citra menggunakan convolution method dengan mask 3x3. Citra yang terlihat lebih tajam dan terang dari gambar aslinya.
2.4.2.4 Mean Removal Mean Removal filter juga merupakan sharpen filter, yang terlihat sebagai berikut :
-1
-1
-1
-1
9
-1
-1
-1
-1
Gambar 2.12. Kernel untuk operasi Mean Removal filter
24
Tidak seperti filter pada sharpen, di mana hanya bekerja pada garis horizontal dan vertikal saja, Mean Removal filter juga bekerja pada garis diagonal. Nilai tengah merupakan nilai yang mempengaruhi efek yang diberikan.
(a)
(b) Gambar 2.13 Hasil citra Mean Removal filter
(a)Citra asli. (b)Citra yang telah mengalami Mean Removal filter
2.4.2.5 Emboss Operasi penajaman merupakan kombinasi antara hasil operasi deteksi tepi Laplacian dengan citra itu sendiri. Hasil operasi deteksi tepi menggunakan operator gradien juga dapat dijumlahkan dengan citra itu, sehingga menimbulkan efek emboss (kesan timbul pada obyek dalam citra). Operasi ini dapat dilakukan untuk arah tertentu. Contoh kernel untuk efek emboss dari arah kiri dan dari arah kanan atas diberikan dalam Gambar 2.14. Parameter
atau derajat emboss digunakan untuk mengatur
seberapa banyak efek timbul akan diberikan. Operator gradien yang digunakan adalah
25
operator Prewitt. Mask emboss tentu saja juga dapat diturunkan dari operator gradien yang lain, yaitu Sobel dan isotropic. Perhatikan bahwa jumlah total bobot kernel tersebut. Perhatikan bahwa jumlah total bobot kernel tersebut adalah satu. 0
0
1
1
0
0
(a) dari arah kiri
(b) dari arah kanan
0
1
0
(c) dari arah atas
Gambar 2.14. Operator Emboss (a)
(b) (c)
0
1
0
(d) dari arah bawah
26
(d) (e)
Gambar 2.15 (a) Citra asli. (b)Emboss dari arah kiri. (c)Emboss dari arah kanan. (d)Emboss dari arah atas. (e)Emboss dari arah bawah.
2.4.2.6 Edge Detection Operasi edge detection digunakan untuk menentukan lokasi titik – titik yang merupakan tepi obyek. Secara umum, tepi suatu obyek dalam citra dinyatakan sebagai titik yang nilai keabuannya berbeda cukup besar dengan titik yang ada di sebelahnya. Banyak bentuk kernel yang dapat dipakai dalam operasi ini, misalnya operator Robert, Prewitt, Sobel, Canny, Laplacian, dan Laplacian Gaussian. Namun, dalam tugas akhir ini saya lebih memfokuskan pada operator Laplacian. Convolution dengan kernel tadi digunakan untuk menghitung keabuan atau warna asli. Operator Laplacian menggunakan turunan kedua (sering disebut zero crossing operator) yang didefinisikan dengan
(2.6) Untuk aplikasi pengolahan citra, persamaan tersebut diubah ke bentuk diskritnya. Turunan kedua untuk ke arah x dan y, masing – masing adalah
27
(2.7) dan
(2.8) Jika Persamaan (2.7) dan (2.8) dimasukkan ke dalam Persamaan (2.6), hasilnya adalah (2.9) Persamaan ini dapat dinyatakan dalam bentuk kernel untuk operasi convolution seperti terlihat dalam Gambar 2.16. Kernel ini dapat mendeteksi tepi ke arah horizontal, vertical, dan diagonal sekaligus. Arah diagonal dapat diikutsertakan pula dengan menambah 2 persamaan yang mirip dengan Persamaan (2.7) dan (2.8) ke dalam Persamaan (2.6). Hasilnya kemudian direpresentasikan dalam bentuk kernel seperti terlihat dalam Gambar 2.16. -1
-1
-1
-1
8
-1
-1
-1
-1
Gambar 2.16. Kernel untuk operasi Edge Detection filter
28
(a) Citra asli.
(b) Citra yang telah dilakukan edge detection
Gambar 2.17 Hasil operasi Edge Detection filter
2.5
Software Development Life Cycle (SDLC) Software Development Life Cycle (SDLC) merupakan dasar bagi perencanaan
yang telah diterapkan pada berbagai program pengembangan dari awal sampai diterapkannya suatu software yang berguna untuk mengetahui kemajuan atau perkembangan sistem dan juga sebagai alat pengukur waktu. Tahapan – tahapan dari SDLC dapat dilihat pada gambar di bawah ini : Analisis dan Penentuan Kebutuhan Design Coding Test Installation and M aintenance
Gambar 2.18 System Development Life Cycle
29
a. Analisis dan Penentuan Kebutuhan (Requirements) M engumpulkan kebutuhan secara lengkap kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh aplikasi yang akan dibangun. Fase ini harus dikerjakan secara lengkap untuk menghasilkan design yang lengkap. b. Design M endesain sistem baru agar dapat lebih efektif, performance yang bagus, user friendly, dan sebagainya. c. Coding Berdasarkan hasil rancangan, dibuatlah program dengan menggunakan bahasa pemrograman yang telah ditentukan. d. Test Pada fase ini akan dilakukan testing pada program yang telah jadi yaitu untuk mengecek kesalahan rancangan dan kesesuaiannya dengan spesifikasi sistem dalam hal pengoperasiannya dan performance-nya. e. Installation and Maintenance Instalasi terhadap sistem yang telah selesai dikembangkan, kemudian dilakukan perawatan terhadap sistem, meliputi penanganan error, penambahan feature baru, dan upgrade terhadap sistem. Kegiatan maintenance ini lebih mengarah ke perancangan ulang sistem yang disebut sebagai daur ulang aktifitas.
30
2.6
Shneiderman’s “Eight Golden Rules of Interface Design” M enurut Shneiderman (1993, p72), prinsip atau aturan dari delapan golden rules
ini adalah sebagai berikut : a. Strive for consistency Interface dari suatu aplikasi dijaga agar tetap konsisten, dimulai dari menu – menu yang ada dalam tiap layar tetap sama, dengan ukuran resolusi yang berbeda, tampilan dari interface tetap sama. b. Enable frequent user to use shortcuts Semakin sering user menggunakan suatu aplikasi, user dapat dimudahkan dengan adanya shortcut yang berupa special keys, hidden commands, dan lain sebagainya. c. Offer informative feedback Aplikasi yang digunakan dapat memberikan informasi yang berguna untuk memudahkan user dalam menggunakannya. d. Design dialog to yield closure Aplikasi yang dibuat didesain untuk memberikan kemudahan bagi user dengan memberikan suatu informasi sebagai bantuan. Dimana bantuan atau informasi itu dapat berupa informasi untuk melengkapi suatu action yang dilakukan oleh user. e. Offer simple error handling
31
Sebisa mungkin aplikasi yang dibuat membuat user untuk tidak melakukan suatu kesalahan yang fatal. Jika ada suatu kesalahan yang dibuat maka aplikasi yang dibuat haruslah dapat menunjukkan dimana terjadi kesalahan dan menawarkan suatu cara yang mudah untuk menangani kesalahan tersebut. f. Permit easy reversal of actions Aplikasi yang dibuat dapat melakukan suatu action untuk kembali ke action yang sebelumnya jika terjadi suatu kesalahan. g. Support internal locus of control M ensupport user yang berpengalaman untuk menjadi suatu initiators dari suatu kegiatan bukan sebagai responders. h. Reduce short-term memory load Aplikasi dibuat sederhana untuk mengurangi waktu proses, training, dan lain sebagainya dikarenakan keterbatasan manusia untuk memproses informasi.