Вы находитесь на странице: 1из 99
BABI PENDAHULUAN 1.1 Foto dan Gambar Seperti yang telah disebutkan dalam pendahuluan, manusia sebagian besar adalah makhluk visual: manusia sangat bergantung pada visi untuk memahami dunia di sekitarnya. Tidak hanya melihat hal-hal untuk mengidentifikasi dan mengklasifikasikan, tetapi dapat memindai untuk perbedaan, dan mendapatkan perasaan keseluruhan secara kasar untuk sebuah adegan dengan sekilas, Manusia telah berevolusi dengan keterampilan visual yang sangat tepat: dengan dapat mengidentifikasi wajah dalam sekejap, dapat membedakan warna, dan dapat memproses sejumlah besar informasi visual dengan sangat cepat. Namun, dunia berada dalam gerakan Konstan: menatap pada sesuatu cukup lama dan itu akan berubah dalam beberapa cara, Bahkan struktur padat yang besar, seperti bangunan atau gunung, akan mengubah penampilan tergantung pada waktu (siang atau malam), jumlah sinar matahari (cerah atau berawan), atau berbagai bayangan yang jatuh di atasnya. Meskipun pengolahan gambar dapat menangani perubahan adegan, tapi tidak akan membahasnya secara detail. Untuk tujuan itu, gambar adalah sebuah gambaran yang mewakili sesuatu. Mungkin gambar dari seseorang, orang atau binatang, atau adegan di luar ruangan, atau microphotograph dari elektronik komponen, atau hasil dari pencitraan medis. Bahkan jika ‘gambar tersebut tidak segera dikenali, itu tidak akan menjadi kabur 1.2 Apakah pengolahan citra? Pengolahan citra melibatkan perubahan sifat dari suatu gambar untuk 1. Meningkatkan informasi bergambar untuk interpretasi manusia, 2. Memberikan kesesuaian untuk tanggapan mesin yang bersifat otonom. Kita akan peduli dengan pengolahan citra digital, yang melibatkan penggunaan komputer untuk mengubah sifat gambar digital, Hal ini diperlukan untuk menyadari bahwa dua aspek ini ‘mewakili dua aspek yang terpisah tetapi sama pentingnya dalam pengolahan gambar. Prosedur yang memenuhi kondisi: (1)Suatu prosedur yang membuat gambar “terlihat lebih mungkin prosedur yang sangat buruk untuk memuaskan kondisi (2). Manusia seperti gambar mereka menjadi tajam, jelas dan rinci, mesin lebih memilih, gambar mereka untuk menjadi sederhana dan rapi. Contoh (1) meliputi: Meningkatkan tepi gambar untuk membuatnya tampak lebih tajam, contoh ditunjukkan pada gambar 1.1. Perhatikan bagaimana gambar kedua muncul “bersih”, Itu adalah citra yang lebih ‘menyenangkan, Menajamkan tepi adalah komponen penting dari pencetakan: agar muncul ‘gambar yang terbaik pada halaman cetak, beberapa penajaman biasanya dilakukan. (a) Foto Asli (b) Foto setelah penajaman Gambar 1.1 Penajaman foto + Menghapus kebisingan dari sebuah gambar, kebisingan menjadi kesalahan acak dalam gambar. Contoh gambar 1.2. Kebisingan adalah masalah yang sangat umum dalam transmisi data: segala macam Komponen elektronik mungkin mempengaruhi data melewati mereka, dan hasilnya mungkin tidak diinginkan, Seperti akan kita lihat dalam bab 5 kebisingan dapat mengambil banyak bentuk berbeda, setiap jenis kebisingan memerlukan metode berbeda dalam penghapusan. ‘© Menghapus blur dari sebuah gambar. Contoh gambar 1.3 Perhatikan bahwa dalam gambar deblurred (b) lebih mudah untuk membaca nomer tersebut, dan untuk melihat paku di pagar belakang mobil, serta rincian lainnya sama sekali tidak jelas dalam gambar asli (a). Motion blur dapat terjadi ketika kecepatan rana kamera terlalu panjang untuk kecepatan objek. Dalam foto obyek yang bergerak cepat: atlet, kendaraan misalnya, masalah blur mungkin cukup besar. Contoh (2) meliputi: ‘© Mendapatkan tepi dari suatu gambar. Ini mungkin diperlukan untuk pengukuran obyek dalam gambar, contoh ditunjukkan pada gambar 1.4. Setelah kita memiliki tepi kita dapat mengukur penyebaran mereka, dan daerah yang terkandung di dalamnya. Kita juga dapat menggunakan algoritma deteksi tepi sebagai langkah (2) Foto asli (b) Setelah menghilangkan blur Gambar 1.2 menghilangkan kebisingan dari sebuah gambar (a) Foto asli (b) Setelah menghilangkan blur Gambar 1.3 Menghilangkan blur foto Dari hasil tepi, kita melihat bahwa mungkin perlu untuk meningkatkan citra asli sedikit, untuk ‘membuat tepi yang lebih jelas. (a) Foto asli (b) tepi foto Gambar 1.4 menemukan tepi dari sebuah foto Menghapus detail dari gambar. Untuk pengukuran atau keperluan menghitung, kita tidak mungkin tertarik pada semua detail dalam foto. Misalnya, sebuah mesin melakukan peninjauan ke item di jalur perakitan, Hanya hal-hal yang menarik mungkin bentuk, ukuran atau wamna. Untuk kasus seperti ini, kita mungkin ingin menyederhanakan gambar. Gambar 1.5 menunjukkan contoh: dalam gambar (a) adalah gambaran dari kerbau Afrika dan gambar (b) menunjukkan versi kabur dalam detil asing (seperti log dari kayu di latar belakang) telah dihapus. Perhatikan bahwa pada gambar (b) semua detail hilang, yang tersisa adalah struktur kasar dari gambar. Kita bisa mengukur ukuran dan bentuk hewan tanpa terganggu dengan detail yang tidak perlu. 1.3 Gambar Akuisisi dan sampling Sampling mengacu pada proses digitalisasi fungsi secara kontinu, Sebagai contoh, misalkan kita ambil fungsi: 1 y= sin(e) + 5sin(3x) dan sampel itu pada sepuluh nilai merata dari x saja. Titik sampel yang dihasilkan ditunjukkan pada gambar 1.6, Ini menunjukkan contoh undersampling, di mana jumlah poin tidak cukup untuk merekonstruksi fungsi, Misalkan sampel fungsi pada 100 poin, seperti yang ditunjukkan pada gambar 1.7. kita dapat dengan jelas sekarang merekonstruksi fungsi, semua sifat-sifatnya dapat ditentukan dari sampel ini, Dalam rangka untuk memastikan bahwa kita memiliki titik sampel yang cukup, kita memerlukan periode sampling tidak lebih dari satu-setengah detail sarang dalam fungsi. Hal ini dikenal sebagai kriteria Nyquist, dan dapat dirumuskan lebih tepat dalam frekuensi, yang dibahas dalam bab 4. Kriteria Nyquist dapat dinyatakan sebagai teorema sampling, yang mengatakan, bahwa fungsi terus menerus dapat direkonstruksi dari sampel asalkan frekuensi sampling setidaknya dua kali frekuensi maksimum dalam fungsi. Sebuah akun resmi teorema ini disediakan oleh Castleman [1]. (a) Foto asli (b)menburamkan untuk menghapus detail Gambar 1.5 mengaburkan gambar Sampel gambar mengharuskan kita mempertimbangkan kriteria Nyquist, ketika kita ‘mempertimbangkan citra sebagai fungsi kontinu dari dua variabel, dan kami ingin sampel itu untuk menghasilkan gambar digital. Contoh ditunjukkan gambar 1.8 dimana gambar ditampilkan, dan kemudian dengan undersampled versi, Pada tepi bergerigi pada gambar undersampled adalah contoh aliasing. Sampling rate Sampel benar : tanpa aliasing undersampled dengan aliasing Gambar 1.8 Efek sampling tentu saja akan mempengaruhi resolusi akhir dari gambar, kita bahas di bawah ini dalam rangka untuk mendapatkan sampel (digital) gambar, kita dapat mulai dengan representasi terus menerus dari sebuah adegan. Untuk melihat scene, kami mencatat energi yang dipantulkan dari itu, kita dapat menggunakan cahaya tampak, atau sumber energi lainnya. Menggunakan cahaya Cahaya merupakan sumber energi utama untuk gambar, hanya karena itu adalah sumber energi yang manusia dapat mengamati secara langsung. Kita semua akrab dengan foto-foto, yang ‘merupakan bergambar catatan adegan visual. Banyak CCD kamera. Seperti kamera memiliki, di tempat Im fi biasa, array phot sites, ini adalah perangkat elektronik silikon yang tegangan output sebanding dengan intensitas penerbangan jatuh pada mereka. Untuk kamera terpasang ke komputer, informasi dari photosites kemudian output kemedia penyimpanan yang sesuai. Umumnya hal ini dilakukan pada perangkat keras, sebagai jauh lebih cepat dan lebih efisiensi koefisien dari perangkat lunak, menggunakan kartu bingkai-grabbing.i memungkinkan sejumlah besar gambar untuk ditangkap dalam waktu yang sangat singkat dalam urutan satu sepuluh-seperseribu. detik masing-masing Gambar Kemudian. dapat disalin ke perangkat penyimpanan permanen pada beberapa waktu kemudian. ‘gambar digital yang ditangkap menggunakan cahaya tampak sebagai sumber energi, ini ‘memiliki keuntungan aman, murah, mudah dideteksi dan mudah diolah dengan perangkat keras yang cocok, Sangat populer Dua metode menghasilkan gambar digital dengan kamera digital atau pada tempat tidur scanner. Hal ini secara skematis diperlihatkan pada gambar 1.9 Output akan menjadi array nilai, masing-masing mewakili titik sampel dari bagian aslinya. Elemen array ini disebut elemen gambar, atau lebih sedethana piksel. Digital output CCD Array Original scone igure Li: Capturing an image with a OCD array kamera digital menggunakan berbagai perangkat, dari cakram disket Dan CD, untuk khusus berbagai kartu dan memori stick, Informasi tersebut kemudian dapat didownload dari perangkat ini ke komputer hard disk. Flat bed scanner. Ini bekerja pada prinsip yang sama dengan kamera CCD, Alih-alih seluruh gambar ditangkap sekaligus pada array besar, satu baris photosites dipindahkan di seluruh gambar, menangkap itu baris-demi-baris ketika bergerak. Tis secara skematis diperlihatkan pada gambar 1.10 _— Row of photesites oN Output row Output array Motion of row Original scene Figure 1.10: Capturing an mage with a CCD scanner Karena ini adalah proses yang jauh lebih lambat daripada mengambil gambar dengan kamera, itu cukup masuk akal untuk mengizinkan semua penangkapan dan penyimpanan untuk diproses oleh perangkat lunak yang sesuai. Lain sumber energi Meskipun cahaya populer dan mudah digunakan, sumber energi lain dapat digunakan untuk membuat digital gambar. Cahaya tampak adalah bagian dari spektrum elektromagnetik: radiasi di mana energi mengambil bentuk gelombang dari berbagai panjang gelombang. Rentang ini dari sinar kosmik dari panjang gelombang yang sangat pendek,untuk tenaga listrik, yang memiliki panjang gelombang yang sangat panjang. Gambar 1.11 mengilustrasikan hal ini. Untuk mikroskop, So ot © gan-7 wei? eto" ae axon) a0 f Cosmic | Gamma] VISIBLE Micro. Electric X-rays [UV light Infra-red TV | Radio rays | rays LIGHT waves Power Lo Blue Green Red 1.358 x 10 7m. 5.61 10 Fr 7x10 Ton sare 1.11: The electromagnetic spectrum Gambar 1.11: Spektrum elektromagnetik Kita dapat menggunakan x-ray, atau berkas elektron, Seperti yang bisa kita lihat dari gambar 1.11,Sinar-x memiliki panjang gelombang lebih pendek dari cahaya tampak, sehingga dapat digunakan untuk menyelesaikan benda lebih kecil dari yang mungkin dengan cahaya tampak. Lihat Clark [2] untuk pengenalan yang baik untuk ini, X-ray tentu saja juga berguna dalam ‘menentukan struktur benda biasanya tersembunyi dari pandangan: seperti tulang, Sebuah metode lebih lanjut untuk mendapatkan gambar adalah dengan menggunakan x-ray tomography, di mana sebuah benda dikelilingi oleh sinar x-ray. Seperti balok ini melalui objek, itu terdeteksi di sisi lain obyek, seperti yang ditunjukkan pada gambar 1,12. Sebagai balok bergerak di sekitar objek, gambar dari objekdapat dibangun, seperti gambar disebut tomogram a. Dalam CAT (Computed Axial Tomography) scan, pasien berbaring dalam tabung sekitar yang x-ray balok, Hal ini memungkinkan sejumlah besar dari tomografi irisan yang akan dibentuk, yang kemudian dapat bergabung untuk menghasilkan gambar tiga dimensi. Sebuah account yang baik dari sistem tersebut (dan lain-lain) yang diberikan oleh Siedband [13] 1.4 Gambar dan Gambar Digital Misalkan kita mengambil gambar, foto, katakan. Untuk saat ini, mari kita membuat hal-hal mudah dan misalkan foto adalah monokromatik (yaitu, abu-abu saja), sehingga tidak ada warna. Kita dapat mempertimbangkan gambar ini sebagai fungsi dimensi dua, di mana nilai-nilai fungsi ‘memberikan kecerahan gambar pada suatu titik tertentu, seperti yang ditunjukkan pada gambar 1.13. Kita mungkin berasumsi bahwa dalam seperti nilai kecerahan citra dapat berupa bilangan real dalam kisaran 0.0 (Hitam) untuk 1.0 (Putih), Kisaran x dan y jelas akan tergantung pada ‘gambar, namun mereka dapat mengambil semua nilai nyata antara mereka minima dan maxima, Fungsi sepertiitu tentu saja dapat diplot, seperti yang ditunjukkan pada gambar 1.14. Namun, seperti plot adalah terbatas gunanya bagi kita dalam hal analisis citra. 10 f(x,y) = 08 Figure 1.13: An image as a function Konsep gambar sebagai fungsi, bagaimanapun, akan menjadi penting untuk pengembangan dan penerapan teknik pengolahan citra, ft! NaN i ine : von ni ae a VA Woe Ni Mic i Mae iu Gambar 1.14:Citra gurasi 1,13 diplot sebagai fumgsi dari dua variabel Sebuah gambar digital yang berbeda dari foto di bahwa x,y Dan f(x,y) nilai semua diskrit. Biasanya mereka mengambil hanya nilai integer, schingga gambar yang ditampilkan di gambarl.13 akan memiliki x dan y mulai dari 1 menjadi 256 masing-masing, dan kecerahan nilai-nilai juga mulai dari 0 (hitam) sampai 255 (putih). Sebuah gambar digital, seperti kita lihat di atas, dapat dianggap sebagai array besar poin sampel dari gambar terus menerus, yang masing- masing memiliki kecerahan terkuantisasi tertentu, titik ini adalah pixel yang merupakan gambar digital. Para piksel yang mengelilingi piksel yang diberikan merupakan tetangganya. Sebuah Jingkungan dapat dicirikan oleh bentuknya dengan cara yang sama sebagai matriks: kita bisa berbicara, misalnya, dari 3 x3 lingkungan, atau dari suatu 5x7 (Neighbourhood. Kecuali dalam keadaan yang sangat khusus, lingkungan memiliki angka ganjil dari baris dan kolom, ini ‘memastikan bahwa pixel saat ini di tengah lingkungan. Contoh dari lingkungan diberikan dalam ‘gambar 1.15. Jika lingkungan memiliki jumlah baris atau kolom (atau keduanya), mungkin perlu untuk menentukan pixel dalam lingkungan adalah pixel saat ini. 1,5 Beberapa Aplikasi Pengolahan citra memiliki berbagai besar aplikasi, hampir setiap bidang ilmu pengetahuan dan teknologi dapat menggunakan metode pengolahan citra, Berikut adalah daftar singkat hanya untuk memberikan beberapa indikasi dari berbagai aplikasi pengolahan citra. 1. Obat 48 219 168 145 244 188 120 58 49 218 87 94 133 35 17 148 174 151 74 179 224 3 262 194 7 138 Current pixel 38 131 53 178 164 79 158 64 169 85 97 Sib atenbawetiond, 96 209 214 203 223 73 110 200 Gambar 1.19: Pixels, dengan lingkungan 2 ‘© Inspeksi dan interpretasi dari gambar yang diperoleh dari X-ray, MRI atau CAT scan, ‘© analisis gambar sel, dari kariotipe kromosom, 2. Pertanian ‘+ Tampilan satelit / udara tanah, misalnya untuk menentukan berapa banyak lahan yang digunakan untuk tujuan yang berbeda atau untuk menyelidiki kesesuaian di daerah erent untuk di? erent tanaman, ‘+ pemeriksaan buah dan sayuran membedakan produk yang baik dan segar dari lama. 3. Industri ‘© Otomatis pemeriksaan item pada lini produksi, ‘© pemeriksaan sampel kertas. 4, Pelaksanaan hukum «Fingerprint analisis, ‘© penajaman atau de-kabur kecepatan-kamera gambar. 1.6 Aspek Pengolahan Citra Akan lebih mudah untuk membagi algoritma di gambar pengolahan berbeda ke subclass yang Juas. Algoritma yang berbeda untuk tugas berbeda dan masalah, sering kita ingin membedakan sifat dari tugas di tangan. Gambar peningkatan, Hal ini mengacu pada pengolahan gambar sehingga hasilnya lebih cocok untuk aplikasi tertentu. Contoh meliputi © penajaman atau de-mengaburkan keluar gambar fokus, ‘© menyoroti tepi, © meningkatkan kontras gambar, atau mencerahkan gambar, © mengeluarkan suara, 13 Restorasi citra, Hal ini dapat dianggap sebagai membalikkan kerusakan yang dilakukan untuk ‘gambar dengan diketahui penycbabnya, misalnya: ‘+ menghapus blur yang disebabkan oleh gerakan linier, ‘+ penghapusan distorsi optik, ‘* menghapus gangguan periodik. Segmentasi citra, Ini melibatkan pengelompokan gambar menjadi bagian-bagian konstituen, atau mengisolasi aspek-aspek tertentu dari suatu gambar: smuan garis, Lingkaran, atau bentuk tertentu dalam gambar, ‘© dalam foto udara, mobil identifikasi, pohon, bangunan, atau jalan, Kelas-kelas ini tidak menguraikan, sebuah algoritma yang diberikan dapat digunakan untuk perbaikan citra baik atau untuk restorasi citra, Namun, kita harus mampu memutuskan apa yang kita coba lakukan dengan gambar kami: cukup membuatnya terlihat lebih baik (peningkatan), atau menghapus kerusakan (restorasi). 1.7 Sebuah Tugas Pengolahan Kami akan melihat dalam beberapa detail pada tugas dunia nyata tertentu, dan melihat bagaimana Kelas atas mungkin digunakan untuk menggambarkan berbagai tahapan dalam melakukan tugas ini, Pekerjaan adalah untuk memperoleh, oleh otomatis proses, kode pos dari amplop. Berikut adalah bagaimana hal ini dapat dicapai: Mendapatkan gambar. Pertama kita perlu untuk menghasilkan gambar digital dari amplop kertas, Ini suatu dilakukan baik menggunakan kamera CCD, atau scanner. Preprocessing. Ini adalah langkah yang diambil sebelum Utama citra tugas pengolahan. ‘Masalahnya di sini adalah untuk melakukan beberapa tugas dasar untuk membuat gambar yang dihasilkan lebih cocok untuk pekerjaan untuk mengikuti. Dalam bal ini mungkin melibatkan meningkatkan kontras, menghilangkan noise, atau mengidentifikasi mungkin mengandung kode posnya daerah. Segmentasi. Di sinilah kita benar-benar Dapatkan kode posnya, dengan kata lain kita ekstrak dari gambar bagian itu yang hanya berisi kode posnya, 14 Representasi dan deskripsi, Istilah-istilah ini mengacu pada penggalian fitur tertentu yang memungkinkan kita untuk perbedaan antara obyck, Di sini kita akan mencari kurva, lubang dan sudut yang memungkinkan kita untuk membedakan digit angka yang merupakan sebuah kode pos. Pengakuan dan interpretasi. Ini berarti menetapkan label untuk objek berdasarkan deskriptor mereka (Dari langkah sebelumnya), dan memberikan arti bagi mereka label. Jadi kita mengidentifikasi tertentu digit, dan kita menafsirkan string dari empat digit pada akhir alamat sebagai kode posnya. 1.8 Jenis Gambar Digital Kami akan mempertimbangkan empat tipe dasar gambar: Biner. Setiap piksel hanya berwarna hitam atau putih, Karena hanya ada dua nilai yang mungkin untuk setiap pixel, kita hanya perlu satu bit per pixel. Gambar tersebut bisa sangat efisien dalam hal penyimpanan, Gambar yang representasi biner mungkin tidak cocok menyertakan teks (dicetak atau tulisan tangan), sidik jari, atau rencana arsitektur. Contohnya adalah gambar yang ditampilkan pada Gambar 1.4 (b) di atas. Dalam gambar ini, kita hanya memiliki dua warna: putih untuk tepi, dan hitam untuk latar belakang. Lihat Gambar 1.16 di bawah ini. Toooo o1000 o 1000 oo1r0% oorio) ooo on Figure 1.16: A binary image Greyseale. Setiap pixel adalah warna abu-abu, biasanya dari 0 (hitam) sampai 255 (putih). Rentang ini berarti bahwa setiap piksel dapat diwakili oleh delapan bit, atau tepat satu byte, Ini 15 adalah sangat alami kisaran untuk penanganan file gambar. Selain rentang greyscale yang digunakan, umumnya digunakan juga kekuatan 2. Gambar tersebut muneul dalam kedokteran (X-ray), gambar karya cetak, dan memang 256 tingkat abu-abu yang berbeda sudah cukup untuk pengakuan benda-benda alam. Contohnya adalah _pemandangan jalan yang ditunjukkan pada gambar 1.1 di atas, dan dalam ‘gambar 1.17 di bawah ini, True colour, atau RGB. Di sini setiap pixel memiliki wama tertentu, warna yang sedang dijelaskan oleh jumlah warna merah, hijau dan biru di dalamnya. Jika masing-masing komponen memiliki rentang 0 — 255, Ini memberikan total 255° = 16,777,216 Kemungkinan warna yang berbeda dalam gambar. Ini adalah wana yang cukup untuk gambar apapun, Karena jumlah bit yang diperlukan untuk setiap pixel adalah 24 , Gambar tersebut adalah juga disebut 24-bit colour images. Citra seperti itu dapat dianggap terdiri dari "tumpukan" dari tiga matriks; mewakili merah, hijau dan biru nilai-nilai untuk setiap pixel, Ini berarti bahwa untuk setiap pixel ada sesuai tiga nilai Contoh ditunjukkan pada Gambar 1.18. Indexed. Kebanyakan gambar warma hanya memiliki sebagian kecil dari lebih enam belas juta kemungkinan wana, Untuk kenyamanan penanganan penyimpanan dan file, gambar memiliki peta warna yang terkait. 16 230 229 «232 234 25232148 237 236 236-234 283-234 152] y 255 255 (255 251 230-236 161 99 90 6r 37 94 247 130 222 162 285 129 129 246 132] 154 199 255 150 169241147 216 182 162 163170 239 122, Figure L17: A greyscale image atau wamna palet, yaitu daftar semua wara yang digunakan dalam gambar. Setiap piksel memiliki nilai yang tidak memberikan warna (seperti untuk gambar RGB), namun indeks ke warna dalam peta. Jika gambar memiliki 256 wama atau_kurang, untuk kemudian nilai-nilai_indeks hanya akan ‘membutuhkan satu setiap byte untuk menyimpan, Beberapa format file gambar (misalnya, CompuServe GIF), memungkinkan 256 wama saja atau lebih sedikit di setiap gambar, karena alasan ini. Gambar 1.19 menunjukkan contoh, Indeks dalam gambar, daripada menjadi abu-abu dari pixel, sebsiknya ke dalam peta warna, Tanpa peta wara, gambar akan menjadi sangat gelap dan tidak berwarna, Pada gambar, Misalnya, piksel berlabel 5 sesuai dengan 0,2627 0,2588 0,2549, yang ‘merupakan warna keabu-abuan gelap. 1.9 Ukuran File Gambar Gambar File cenderung besar. Jumlah informasi yang digunakan dalam jenis gambar yang berbeda dari berbagai ukuran. Sebagai contoh, misalkan kita mempertimbangkan 512 X 512 7 biner gambar. Jumlah bit yang digunakan dalam gambar ini (dengan asumsi tidak ada kompresi, dan mengabaikan, demi diskusi, setiap informasi header) adalah 512 x 512 x 1 = 262,144 32768 bytes se eo 60 se ss s7| | os 92 o: a1 a6 a6] |e: 02 96 o9 6 6 se sp si so ss 56| | co o2 se co 0 oo | | co 02 01 94 02 08 3 7e 72 69 08 69| |a25 129 119 108 111 110 | {138 228 126 212 107 208 ge a1 ot 9 53 92 | |as7 136 192 126 126 120 | |a41 229 320 217 115 201 62 76 e278 76 75| 105 108 114 128 116 113 | | 95 99 409 208 112 109 o1_o9 73 78 15 76 | 96 105 112 106 111 107 | | 64 93 07 201 105 302 Red Green Blue Figure 118: A seve colour image 18 0.1242 0.1211 0.1416 0.1807 0.2649 0.1729 a 5 8 5 8 s| 0.2197 0.9667 0.1807 s 4 ss [eke] 0.642 0.4769 0.1996 5 5 5 0 8 bl 0.2452 0.2871 0.1924 5 5 5 5 1 a |’ 0.2119 0.1963 0.2002 5 5 5 8 16 20) {0.2607 0.2508 0.2549 8 11 11 26 99 20) 0.2197 0.2882 0.2588 ii 20 83 93 58 97 Indices colour map Fignre 1.19% An indexed colour image 2.768 Kb = 0.033 Mb (Di sini kita menggunakan konvensi yang kilobyte adalah seribu byte, dan satu megabyte adalah satu juta byte.) Sebuah gambar grayscale dengan ukuran yang sama membutuhkan: 512 x 512 x 1 = 262.144 bytes = 262.14 Kb = 0.262 Mb Jika sekarang kita mengalihkan perhatian kita untuk gambar berwama, setiap pixel dikaitkan dengan 3 byte warna Informasi. Gambar $12 X $12 membutuhkan 521 x 512 x3 = 786.432 bytes = 786.43 Kb = 0.786 Mb Banyak gambar lebih besar, citra satelit mungkin urutan beberapa ribu piksel di setiap arah 19 1.10 Grayscale Images Misalkan Anda sedang duduk di depan komputer Anda dan telah mulai Matlab. Anda akan memiliki perintah Matlab jendela yang terbuka, dan di dalamnya prompt Matlab [Figure 1.21: Continuously varying intensities Siap menerima perintah. Ketik perintah >>weimread(‘wombats.tif); Ini mengambil nilai-nilai abu-abu dari semua piksel dalam wombats.tif’ grayscale dan menempatkan mereka semua ke dalam matriks w. Matriks w_sekarang menjadi variabel Matlab, sehingga kita dapat melakukan operasi berbagai matriks di atasnya, Secara umum fungsi imread membaca nilai pixel dari file Citra, dan mengembalikan matriks semua nilai pixel. Dua hal yang perlu diperhatikan tentang perintah ini 1, Berakhir di titik koma, memiliki efek tidak menampilkan hasil perintah ke layar. Sebagai hasil dari perintah tertentu adalah matriks ukuran 256 x 256, atau dengan 65536 elemen, kita tidak benar-benar ingin semua nilai yang ditampilkan, 20 2. Nama The wombats.tif diberikan dalam tanda kutip tunggal. Tanpa mereka, Matlab akan ‘menganggap yang wombats.tif adalah nama dari variabel, bukan nama dari sebuah file, Sekarang kita dapat menampilkan matriks ini sebagai grayscale: >ofigure.imahow(w).pixval on Ini benar-benar tiga perintah pada satu baris, Matlab memungkinkan banyak perintah yang akan dimasukkan pada baris yang sama, menggunakan koma untuk memisahkan perintah yang berbeda, Tiga perintah yang kita gunakan di sini adalah: figure, yang menciptakan figur pada layar. Figure adalah jendela di mana objek grafis dapat ditempatkan, Obyek dapat berupa gambar, atau berbagai jenis grafik. imshow (g), yang menampilkan g matriks sebagai gambar. pixval on, yang ternyata pada nilai-nilai pixel pada figur kita, Ini adalah tampilan dari nilai- nilai abu-abu piksel dalam figur. Mereka muncul di bagian bawah dari figure dalam bentuk cx P Dimana ¢ adalah nilai kolom dari pixel yang diberikan; r_nilai baris, dan p nilai abu-abu, Sejak wombats.tif adalah 8-bit grayscale gambar, nilai-nilai pixel muncul sebagai bilangan bulat dalam kisaran 0-255. Hal ini ditunjukkan dalam gambar 1,22. 2 =r BEE File Edit View Insert Tools Window Help \OeeS AA oS Fignre 1.22: The wombats image with pixval on Jika tidak ada figure terbuka, Maka perintah imshow, atau perintah lain yang menghasilkan objek grafis, akan membuka sosok baru? Untuk menampilkan objek. Namun, itu adalah praktik yang baik untuk menggunakan perintah angka setiap kali Anda ingin membuat sosok baru. Kita bisa menampilkan gambar ini secara langsung, tanpa menyimpan nilai-nilai abu-abu untuk matriks, dengan perintah, Imahow(‘wombats.tif) Namun, lebih baik menggunakan matriks, karena dapat mengatur lebih efisien dalam Matlab. 1,11 RGB Images Seperti yang akan kita bahas dalam bab 11, kita perlu mendefinisikan wama dalam beberapa cara standar, biasanya sebagai: subset dari suatu sistem koordinat tiga dimensi, seperti 2 subset disebut model warna. Ada pada kenyataannya sejumlah metode yang berbeda untuk ‘menggambarkan wama, tetapi untuk tampilan gambar dan penyimpanan model standar RGB, yang dapat _membayangkan semua wama duduk di dalam sebuah “kubus wara” dari sisi 1 seperti yang ditunjukkan pada gambar 1,23. Warna-warna sepanjang hitam-putih diagonal, ditunjukkan dalam diagram B 1,1) Cyan 1 0.0.1) i (1.0.1) Bine Magenta ‘ 11 (11.0) O1OKS 77 Nati Green . (0,0,0) i) Black Red Figure 1.28: The colour cube for the RGE colour model sebagai garis putus-putus, adalah titik dari ruang di mana semua nilai yang sama, Mereka adalah intensitas yang berbeda abu-abu. Kami juga mungkin berpikir tentang sumbu kubus wama sebagai yang didiskritisasi untuk bilangan bulat dalam kisaran 0-255 RGB adalah standar untuk tampilan wama: pada monitor komputer, di TV. Tapi itu tidak cara yang sangat baik untuk menggambarkan wama, Bagaimana, misalnya, Anda akan mendefinisikan cokelat muda baik menggunakan RGB? Seperti yang akan kita lihat juga dalam bab 11, ada beberapa warna yang tidak direalisasikan dengan RGB. Model; dalam bahwa mereka akan membutubkan nilai negatif dari satu atau dua Komponen RGB. Matlab menangani 24-bit RGB gambar dalam banyak cara yang sama seperti greyscale. Kita bisa menyimpan nilai warna ke matriks dan melihat hasilnya: >> acimred( autumn.tif}; >> figure.imahow(a).pixval on Perhatikan sekarang bahwa nilai pixel sekarang terdiri dari daftar tiga nilai, memberikan merah, hijau dan biru komponen wama pixel yang diberikan. Sebuah perbedaan penting antara jenis gambar dan gambar grayscale dapat dilihat oleh perintah >> size (a) Yang mengembalikan tiga nilai: jumlah baris, kolom, dan “halaman”, yang merupakan tiga dimensi matriks, juga disebut array multidimensi, Matlab dapat menangani array dimensi apapun, dan adalah sebuah contoh, Kita bisa memikirkan sebagai setumpuk tiga matriks, masing- masing ukuran yang sama. Untuk mendapatkan salah satu dari nilai-nilai RGB pada lokasi tertentu, kita menggunakan metode pengindeksan mirip dengan di atas. Misalnya >> a (100,200,2) Mengembalikan nilai warna kedua (hijau) pada pixel dalam baris dan kolom 100 200. Jika kita ingin semua nilai wama pada saat itu, kita dapat menggunakan >> a(100,200,1:3) Namun, Matlab memungkinkan pintas nyaman untuk daftar semua nilai sepanjang dimensi tertentu; hanya menggunakan usus sendiri >> a (100.200, :) Sebuah fungsi yang berguna untuk mendapatkan nilai RGB adalah impixel; perintah >> Impixel (a, 200100) ‘mengembalikan_nilai merah, hijau, dan biru dari pixel pada kolom 200, baris 100, Perhatikan bahwa urutan dari pengindeksan adalah sama dengan yang disediakan oleh pixval pada perintah. Hal ini berlawanan dengan baris, kolom agar pengindeksan matriks, Perintah ini juga berlaku untuk gambar greyscale: >> Impixel (g, 100.200) 24 akan kembali tiga nilai, tapi karena g adalah matriks dua dimensi tunggal, ketiga nilai akan sama, 1.12 Gambar Berwarna Indexed Perintah : >> figure.imashow (‘emu.tif), pixval on menghasilkan gambar warna yang bagus dari emu. Namun, nilai-nilai pixel, bukannya tiga bilangan bulat karena mereka untuk gambar RGB di atas, tiga fraksi antara 0 dan 1. Apa yang terjadi di sini Jika kita mencoba membuat untuk matriks terlebih dulu dan kemudian menampilkan hasilnya: >> em = imread (‘emu.tif); >> figure, imashow (em), pixval on kita memperoleh gambar gelap, hampir tidak bisa dibedakan, dengan satu nilai abu-abu integer, menunjukkan bahwa mereka sedang ditafsirkan sebagai grayscale tunggal. Bahkan emu.tif gambar adalah contoh gambar diindeks, yang terdiri dari dua matriks: a waa peta, dan indeks ke peta wana. Menetapkan foto ke matriks tunggal mengambil hanya indeks, kita perlu untuk mendapatkan peta warna serta: >> [em, emap] = imread (‘emustif); >> figure, imashow (em, emap), pixval on Matlab menyimpan nilai-nilai RGB dari gambar diindeks sebagai nilai dari tipe double, dengan nilai antara 0 dan 1. Informasi tentang gambar Anda Banyak informasi dapat diperoleh dengan fungsi imfinfo. Misalnya, kita ‘mengambil emu.tif gambar diindeks kami dari atas, 25 >> imfinfo(*em. tif") ‘ColorType: FormatSignature: ‘ByteOrder: NewSubtileType: BitsPerSample: Compress ion: PhotonetricInterpretat ion: Strip0ffsers: SamplesPerPixel: RowsPerStrip: StripByteCounts: Yemtit? °26-Nov-2002 14:28:01" 119804 cord) indexed? [73 73 42 0] )Little-endian? ° 8 *PackBits? RCE Palette? [16x1 double] 1 24 [16x1 double] 272 ResolutionUnit: Colormap: PlanarConf igurat ion: TileWidth: Tilelength: Tileoffeers: TileByteCounte: Orientation: Pillorder: GrayResponseUnit: MaxSampleValue: MinSampleValue: Thresholding: 72 "Inch? [25613 double] Banyak dari informasi ini tidak berguna bagi kita, tetapi kita bisa melihat ukuran gambar dalam pixel, ukuran dari jenis berbeda (dalam byte), jumlah bit per pixel (ini diberikan oleh BitDepth), dan tipe wama (dalam hal ini “diindeks”) Sebagai perbandingan, mari kita lihat output dari file true color (hanya menampilkan beberapa baris pertama dari output): 26 >> imfinfo(*flowers.tif’) Filename: [1x67 char] FileMedDave: '26-Oct-1996 02: FileSize: 543962 Format: "tif? oes FornatVersion: (] Wideh: 500 Hesght: 362 BitDepth: 24 ColerType: *truecoler’ Now wo shull test this function on a binary image >> imfinfo(’text. tit’) Filenare: [1x54 char] FilelodDate: ?26-Uct-1996 02:12:23" FileSize: 3474 Format: tif? FormatVersion: [ Waaen: 256 Hexght: 256 BitDepth: 1 ColerType: "grayscale? Apa yang terjadi di sini? Kami memiliki citra biner, namun jenis warna diberikan sebagai “grayscale”. Faktanya adalah bahwa Matlab tidak membedakan antara Skala abu-abu dan gambar biner: citra biner hanya kasus khusus dari grayscale yang hanya memiliki dua intensitas. ‘Namun, kita dapat melihat bahwa text.tif adalah citra biner karena jumlah bit per pixel hanya satu. 1.13 Tipe Data dan Konversi Unsur-unsur dalam matriks Matlab mungkin memiliki sejumlah berbagai jenis data numerik, yang paling umum tercantum dalam tabel 1.1. Ada yang lain, namun_ yang terdaftar akan cukup untuk semua pekerjaan kami dengan gambar. Jenis data juga fungsi, kita bisa mengkonversi dari satu jenis yang lain, Sebagai contoh: 27 >> 2-28; >> b=uint8(a); >b b Data type | Description inte Shit integer uinte | Sit unsigned integer intié 16-bit intexer uinti6 | 16-bit umsigmed integer double | Double precision real munber | Machine specific Table 1.1: Data types in Matias 23 >> whos ab Mane Size Bytes Class a txt & double array > tet 4 wint8 array Meskipun variabel a dan b memiliki nilai numerik yang sama, mereka adalah tipe data yang berbeda, Sebuah pertimbangan penting (yang kita akan lebih) adalah bahwa operasi aritmatika tidak diizinkan dengan tipe data int8, int16, uint8 dan uint16, Sebuah grayscale dapat terdiri dari piksel yang nilai-nilainya adalah dari tipe data uint8. Gambar-gambar ini sehingga cukup eeflicient dalam hal ruang penyimpanan, karena setiap pixel hanya membutubkan satu byte. Namun, operasi aritmatika tidak diizinkan pada jenis data, ‘gambar uint8 harus dikonversi ke dua kali lipat sebelum aritmatika pun dicoba. Kita dapat mengkonversi gambar dari satu jenis gambar yang lain. Tabel 1.2 daftar semua fumgsi Matlab yang untuk mengkonversi antara jenis gambar yang berbeda. Perhatikan bahwa fungsi gray2rgb, tidak meneiptakan 28 Function | Use Format ind2gray | Indexed to Greyscale | y=ind2gray (x,map) ; gray2ind | Greyscale to indexed | [y,map]=gray2ind(x) ; rgb2gray | RGB to greyscale y=rgb2gray (x) ; gray2rgd | Greyscale to RGB | y=gray2rgb(x); rgb2ind | RGB to indexed Ly map] =rgb2ind; ind2rgb | Indexed to RGB y=ind2rgb(x,map) ; Table 1.2: Converting images in MATLAB gambar wama, tapi gambar semua yang pixel wama yang sama seperti sebelumnya, Hal ini dilakukan dengan mereplikasi nilai-nilai abu-abu setiap pixel: abu-abu dalam gambar RGB diperoleh dengan persamaan merah, hijau dan biru nilai-nilai BABII PENGOLAHAN PIKSEL 2.1 Pendahuluan Setiap operasi pengolahan citra mengubah nilai-nilai abu-abu dari piksel. Namun, operasi pengolahan citra dapat dibagi menjadi menjadi tiga kelas berdasarkan informasi yang diperlukan untuk melakukan transformasi. Dari yang paling kompleks ke sederhana, yaitu: 1. Transforms. “Transform” mewakili nilai-nilai pixel dalam bentuk lain, tapi setara. ‘Transformasi memungkinkan untuk beberapa algoritma yang sangat efisien dan kuat, seperti yang akan kita lihat nanti, Kita mungkin menganggap bahwa dalam menggunakan transformasi, seluruh gambar diproses sebagai blok tunggal yang besar. Hal ini dapat diilustrasikan dengan diagram yang ditunjukkan pada gambar 2.1 Transform ansformed Image ansformed image Image processing operation Exoteandl. Inverse transform Processed DaEiel transformed image image Figure 2.1: Schema for transform processing ighbourhood pengolahan. Untuk mengubah tingkat keabuan dari piksel yang diberikan dengan hanya perlu mengetahui nilai tingkat abu-abu di lingkungan sekitar pixel yang diberikan, 3. Titik operasi, Nilai abu-abu sebuah pixel berubah tanpa mengetahui kelilingnya. Meskipun operasi titik yang paling sedethana, berisi beberapa yang paling kuat dan banyak digunakan dari semua operasi pengolahan citra, Operasi titik sangat berguna dalam gambar 30 pra-pengolahan, di mana gambar diperlukan untuk dimodifikasi sebelum pekerjaan utama dicoba, 2.2 Operasi Aritmatika Operasi ini bertindak dengan menerapkan fungsi sederhana y=f@) untuk setiap nilai abu-abu di gambar. Jadi f(x) adalah fumgsi yang memetakan dalam rentang 0..255 ke dirinya sendiri, Fungsi sederhana termasuk menambahkan atau mengurangi nilai konstan untuk setiap pixel: y=xtC atau memperbanyak pixel dengan sebuah konstanta: yacx Dalam setiap kasus kita mungkin harus output sedikit untuk memastikan bahwa hasil bilangan bulat dalam 0...255 jangkauan. Kita bisa melakukan ini dengan terlebih pembulatan hhasilnya (ika perlu) untuk mendapatkan integer, dan kemudian “Kliping” nilai dengan pengaturan: . pss if y > 255, y 0 ify<0, Kita dapat memperoleh pemahaman tentang bagaimana operasi ini mempengaruhi gambar dengan memplot y = f(x). Gambar 2.2 menunjukkan hasil menambah atau mengurangi 128 dari setiap pixel dalam gambar. Perhatikan bahwa 31 New values 0 J 0 eo Old values 28 a Old values Adding 128 to euch pixel Subtracting 128 from each pixel Viguee 23: Adal and ahtracting. a constant ketika kita menambahkan 128, semua nilai abu-abu dari 127 atau lebih besar akan dipetakan ke 255. Dan ketika kita kurangi 128, semua nilai abu-abu dari 128 atau kurang akan dipetakan ke 0, Dengan melihat grafik, kita amati bahwa pada umumnya menambahkan konstan akan meringankan gambar, dan mengurangkan sebuah konstanta akan gelap itu Kita dapat menguji ini pada “blok” image blocks.tif, yang telah kita lihat di gambar 1.4. Kita mulai dengan membaca gambar dalam: >> beimread(’blocks.tif’); >> whos b Name Size Bytes Class b 256x256 65536 uint array Titik perintah kedua adalah untuk menemukan tipe data numerik b; Itu adalah uint8. Unit8 adalah tipe data yang digunakan untuk penyimpanan data saja; kita tidak dapat melakukan operasi aritmatika, Jika kita mencoba, kita hanya mendapatkan pesan error >> bi=bi128 229 Error using ==> + Function ’+? not defined for variables of class *uint@? Kita bisa mendapatkan putaran ini dengan dua cara, Pertama b ke dalam matriks tipe double, tambahkan 128, dan kemudian kembali ke uint8 untuk tampilan: 32 >> bi-uints (double (b) +128) ; Cara kedua, dan lebih elegan, adalah dengan menggunakan imadd Matlab fungsi yang dirancang tepat untuk melakukan hal ini >> bi=imadd(b,128) ; Pengurangan serupa, kita dapat mengubah matriks keluar masuk dan keluar dari ganda, atau gunakan fungsi kurangi: >> b2=imeubtract (b, 128) ; Dan sekarang kita dapat melihat mereka: >> imshow(b1) , figure, imshow(b2) dan hasilnya terlihat pada gambar 2.3. bi: Adding 128 b2: Subtracting 128 ure 2.3: Arithmetic operations on an image: adding or subtracting a constant 33 Kami juga dapat melakukan keringanan atau penggelapan gambar dengan perkalian, gambar 2.4 menunjukkan beberapa contoh fungsi yang akan memiliki efek ini, Untuk melaksanakan fungsi ini, kita menggunakan fungsi immultiply. Tabel 2.1 menunjukkan perintah tertentu yang diperlukan untuk melaksanakan fungsi dari angka 2,4. Semua gambar- gambar ini dapat dilihat dengan imshow, mereka ditunjukkan pada gambar 2.5. Bandingkan hasil gelap b2 dan b3. Perhatikan bahwa b3, meskipun lebih gelap daripada yang asli, adalah 255 255 255 New values New values 6 0 Old values 7/2+128 0 0, 0 Old values 255 0 Old values yaa Figure 2.4: Using multiplication and division divido(b,2) madd (inmmltiply(b,0.5) 128) ; or bS=imadd individe(b.2) .128): Table 2.1: Implementing pixel multiplication by Marta commands ¥ v v3 y= 2/2 ba: y= 2a 6 y= 3/24 128 Figure 2.5: Anchanetic operations on au image: mnutioieation and division 34 masih cukup jelas, sedangkan banyak informasi telah hilang oleh proses pengurangan, seperti yang dapat dilihat pada gambar b2. Hal ini karena dalam b2. gambar semua piksel dengan nilai abu-abu 128 atau kurang telah menjadi nol. Sebuah kerugian serupa dari informasi telah terjadi dalam b1 gambar dan b4. Perhatikan khususnya tepi blok berwama terang di bagian tengah bawah, di kedua b1 dan b4 tepi kanan telah menghilang. Namun, tepi cukup terlihat dalam gambar bS. Complement Komplemen dari grayscale adalah negatif fotografi, Jika suatu gambar matriks m adalah tipe ganda dan sebagainya nilai abu-abu berada dalam jangkauan 0.0 hingga 1,0, untuk dapat ‘memperoleh negatif dengan perintah >in Jika gambar biner, kita dapat menggunakan >> “m Jika gambar jenis uint8, pendekatan terbaik adalah fungsi imcomplement. Gambar 2.6 menunjukkan fungsi pelengkap y = 255 — x, dan hasil dari perintah >> de=imcomplement (b) ; >> imshow (be) 35 255 3 E 0 55 9 Old values 2a y= 255-2 Figure 2.6: Image complementation Efek khusus yang menarik dapat diperoleh dengan melengkapib agian dari gambar, misalnya dengan mengambil komplemen dari nilai piksel abu-abu 128 atau kurang, dan meninggalkan piksel lainnya tidak tersentuh, Atau kita bisa mengambil komplemen dari piksel yang 128 atau lebih besar, dan meninggalkan piksel lainnya tersentuh, Gambar 2.7 ‘menunjukkan fungsi tersebut, Efek dari fungsi ini disebut solarisasi, 255 255 New values 0 : 2 Old values q Old values cd Complementing only dark pixels, Complementing only light pixels, Figure 2.7: Part complementation 36 2.3 Histogram Mengingat grayscale, histogram terdiri dari histogram tingkat abu-abu, yaitu grafik yang menunjukkan jumlah kali setiap tingkat abu-abu terjadi pada gambar. Kita dapat menyimpulkan banyak tentang penampilan gambar dari histogram, sebagai contoh berikut menunjukkan: ‘* Dalam gambar gelap, tingkat abu-abu (dan karenanya histogram) akan bergerombol di bawah: ‘* Dalam gambar seragam cerah, tingkat abu-abu akan bergerombol di ujung atas: * Dalam gambar dengan kontras, tingkat abu-abu akan baik tersebar di banyak rentang: Kita bisa melihat histogram dari gambar di Matlab dengan menggunakan fungsi imhist: >> peimread(’pout.tif’); >> imshow(p) ,figure,imhist(p),axis tight (perintah sumbu yang ketat menjamin sumbu histogram secara otomatis diskala untuk t semua nilai dalam), Hasilnya ditunjukkan pada gambar 2.8. Karena nilai-nilai abu-abu semua berkumpul bersama-sama di tengah histogram, kita akan mengharapkan gambar yang akan Kurang Kontras, karena memang itu, Mengingat citra kurangs kontras, kami ingin meningkatkan kontras, dengan menyebarkan keluar histogramnya. Ada dua cara untuk melakukan hal ini 2.3.1 Histogram peregangan (stretching Kontras) Misalkan kita memiliki sebuah gambar dengan histogram ditunjukkan pada gambar 2.9, terkait dengan tabel nomor n; nilai-nilai abu-abu: Grey leveli 0 1234 5 6 7 8 9 10 IL 12 1 14 15 n 15 000 0 70 10 4 7 35 0 0 0 0 0 15 37 6. — u 18 120 2 0 s oo ‘ wo) 1 2 4 OTST Fe obi ais Tia Figure 2.9: A histogram of a poorly eontrasteil image, and a stretching function (dengan n= 360 seperti sebelumnya.) Kita dapat meregangkan tingkat abu-abu di tengah rentang keluar dengan menerapkan fungsi linear sesepenggal ditampilkan di kanan dalam gambar 2.9. Fungsi ini memiliki efek peregangan tingkat abu-abu 5-9 ke tingkat abu-abu 2-14 ‘menurut persamaan: 38 dimana i tingkat abu-abu asli dan j hasilnya setelah transformasi. Tingkat abu-abu di luar kisaran ini baik dibiarkan saja (seperti dalam kasus ini) atau berubah sesuai dengan fungsi linear pada ujung grafik di atas. Ini menghasilkan: 156789 jo 2581114 dan histogram yang sesuai: v0 100. 80 oo 20 Tinian yang menunjukken gambar dengan kontras yang lebih besar daripada yang asli. Penggunaan imadjust Untuk melakukan peregangan histogram di Matlab fungsi imadjust dapat digunakan. Dalam inkarnasi yang paling sederhana, perintah imadjust (im, (a, b}, (c, d)) membentang gambar sesuai dengan fungsi yang ditampilkan pada Gambar 2.10, Karena imadjust dirancang untuk 39 a b1 Gambar 2.10: Fungsi peregangan diberikan oleh imadjust bekerja sama dengan baik pada gambar tipe ganda, uint8 atau uintl6 nilai-nilai a, 6, ¢, dan d harus antara 0 dan 1; fungsi secara otomatis mengkonversi gambar (jika diperlukan) untuk menjadi tipe ganda. Perhatikan bahwa imadjust tidak bekerja cukup dengan cara yang sama seperti yang ditunjukkan dalam gambar 2.9. Nilai pixel kurang dari a semua dikonversi ke nilai c, dan pixel yang lebih besar daripada b semua dikonversi ke d . Jika salah satu dari [a, b] atau fe, d] yang dipilih untuk menjadi [0,1], singkatan [] dapat digunakan. Jadi, misalnya, perintah >> imedjust (im, (0, (1) tidak apa-apa, dan perintah >> imadjust (an, 0, (1.01) membalikkan nilai abu-abu gambar, untuk menghasilkan hasil yang serupa dengan negatif fotografi Fungsi imadjust_ memiliki satu parameter opsional lainnya: nilai gamma, yang menggambarkan bentuk fungsi antara koordinat (a, c) dan (b, d). Jika gamma sama dengan 1, yang 40 baku, maka pemetaan linear digunakan, seperti yang ditunjukkan di atas dalam gambar 2.10. Namun, nilai kurang dari satu menghasilkan fungsi yang cekung ke bawah, seperti yang ditunjukkan di sebelah kiri di gambar 2.11, dan nilai-nilai yang lebih besar dari satu hasil gambar yang cekung ke atas, seperti yang ditunjukkan di sebelah kanan dalam gambar 2.11 a bi @ a gamma <1 gamma > 1 Gambar 2.11: Fungsi imadjust dengan gamma tidak sama dengan 1 Fungsi yang diguntakan adalah variasi kecil pada garis standar antara dua titik: y=()@-ore Penggunaan nilai gamma bisa saja cukup untuk secara substansial mengubah tampilan gambar. Sebagai contoh: nread( tire. tif’); adjust (t, 1, [1,0.5); >> imshow (t) figure, imshow(th) menghasilkan hasil yang ditunjukkan dalam gambar 2.12. Kita dapat melihat fungsi peregangan imadjust dengan plot fungsi. Sebagai contoh, >> plot(t,th,’.’) axis tight menghasilkan plot yang ditunjukkan dalam gambar 2.13. Karena p dan ph adalah matriks yang berisi nilai-nilai asli dan nilai-nilai setelah fungsi imadjust, fungsi plot yang hanya plotnya, ‘menggunakan titik untuk melakukannya. a Gambar 2.13: Fungsi yang digunakan dalam gambar 2.12 Sebuah fungsi piecewise linear peregangan Kita dapat dengan mudah menulis fungsi kita sendiri untuk melakukan per nvise egangan pie linear seperti yang ditunjukkan dalam gambar 2.14, Untuk melakukan ini, kita akan menggunakan fungsi find, untuk menemukan nilai piksel dalam gambar antara a; dan a; Karena garis antara koordinat (a; , 6) dan (ai+1 , bis1) memiliki persamaan a2 by a a a3 a Gambar 2.14: Sebuah fungsi peregangan piecewise linear y= BE (xa) + by fungsi utama kita akan menjadi garis pix = menemukan (im> =a (i) & im > thehistpwl(t, [0 .25 .5 .75 1],[0 .75 .25 .8 11); >> imshow(th) >> figure, plot (t,ch,?.?),axis tight ‘menghasilkan gambar yang ditampilkan pada gambar 2.16. 2.3.2 Pemerataan histogram Masalah dengan salah satu metode di atas peregangan histogram adalah bahwa itu membutuhkan input pengguna. Kadang-kadang pendekatan yang lebih baik disediakan oleh pemerataan histogram, yang sepenuhnya merupakan prosedur otomatis, Idenya adalah untuk mengubah histogram ke dalam satuan yang seragam (hitogramnya menyebar histogramnya sama); yaitu bahwa setiap bar di histogram memiliki ketinggian yang sama, atau dengan kata lain bahwa setiap tingkat keabuan dalam gambar terjadi dengan 43 frekuensi yang sama, Dalam praktek pada umumnya tidak mungkin, meskipun begitu (apa yang kita ajrkan itu lebih baik) kita akan melihat hasil dari pemerataan histogram memberikan hasil yang sangat baik. Misalkan gambar kita memiliki Z perbedanaan tingkat abu-abu 0, 1, 2,... L - 1, dan ‘tingkat abu-abu / terjadi n, kali dalam gambar. Misalkan juga bahwa jumlah piksel dalam gambar n (Sehingga (ao + ny + ny +... 2.7 =n). Untuk mengubah tingkat abu-abu agar mendapatkan gambar yang lebih baik kontrasnya, untuk kita mengubah tingkat keabuan i Dan hasil/ jumlah ini dibulatkan ke bilangan bulat terdekat, function out ~ histpei(ia,2,0) x 1L FISTPHLCIM,4,8) applies a piecewise Linear transformation to the pixel values 1 of image IM, where # and B are vectors coataining the x and y coordinates 1 cf the ends of the line sogants. IM can be of type VINTS or DIVELE, 4% and the values iz A and B must be between 0 and 1 x 4% For exaspie x 4% nistpeix, (0,11, 3,01) x 1 simply inverts the pixel values x etoetiereete Or Af “isaGa, double”), Sf Leagth(e) “ Leageh (8) crror(WVectors A and B must be of oqeal aize’); angth(a); out=zares(size(ia)); pixsfind(im=a(i) & inea(+1)) cut (piz)=(in(piz)-a(a))*(6(3+1) BD) /(aG+1)-2G))@); pirrina(am=200)); out (pix)-bOD 5 if classthanged=1 cut = uintS(255eext); Gambar 2.15: Sebuah fungsi MATLAB untuk menerapkan fungsi piecewise linear peregangan 44 Gambar 2.16: Gambar ban dan setelah disesuaikan dengan nilai gamma 2 0 a a a oss eet teins Gambar 2.17: histogram lain menunjukkan kontras miskin Contoh Misalkan gambar 4-bit greyscale memiliki histogram ditunjukkan dalam gambar 2.17. berhubungan dengan tabel angka n;nilai abu-abu: L=16, L-1-15 Gryleveli 0 12345678 9 1 11 12 1B OM 5 m 1500000000 70 110 45 99 40 0 0 45 0 0 = 0 0 a or sae Sets niin Gambar 2.18: Histogram dari gambar 2.17 setelah pemerataan (Dengan m = 360.) Kami harapkan gambar ini menjadi keseragaman yang cerah, dengan beberapa titik gelap di atasnya Untuk menyamakan histogram ini, kita membentuk penjumlahan agar berjalan dari 7; , dan kalikan masing-masing sebesar 15/360 = 1/24 : Grey level i_nj_Yin,_(1/24)¥im;_ Rounded value @ 1h 0.63 1 1 0 1b 0.63 1 2 o 15 0.3 1 3 0 1b 068 1 4 oO 1b 068 1 5 0 1b 0.63 1 6 oO 15 063 1 7 0 1b 0.68 1 8 0 1b 0.3 1 9 70 85 8.05 4 110 195 8 45 240 10 lo 803200 13.38 13 40 360 1b 6 0 360 6 5 0 360 15 15 Sekarang kita memiliki transformasi nilai dari abu-abu, yang diperoleh dengan membaca colom pertama dan terakhir dalam tabel di atas: Tingkat keabuan Asli i 0 1 3 4 5 6789 10 11 12 13 14 15 Hasil Akhir tingkat keabuan j 1 1 11111 1 4 8 10 13 15 15 15 46 dan histogram dari nilai j ditampilkan dalam gambar 2.18. Ini jauh lebih menyebar dibandingkan histogram asli, schingga gambar yang dihasilkan harus menunjukkan kontras yang lebih besar. Untuk menerapkan pemerataan histogram di MATLAB, gunakan fungsi histeq, misalnya: >> p=imread(*pout.tit?); >> phehisteq(p) : >> imshov(ph) figure, imhict (ph) axis tight berlaku pemerataan histogram pada gambar cemberut, dan menghasilkan hasil histogram. Hasilnya ditunjukkan dalam gambar 2.19. Perhatikan penyebaran jauh lebih besar dari histogram, Hal ini sesuai Gambar 2.19: Histogram dari gambar 2.8 setelah pemerataan dengan peningkatan yang lebih besar dari kontras pada gambar Kita memberikan satu contoh lagi, dengan gambar yang sangat gelap. Kita bisa ‘mendapatkan gambar gelap dengan mengambil gambar dan menggunakan imdivide. >> encimread engineer. tif*); >> e=imdivide(on,4); Karena matriks ¢ hanya berisi nilai-nilai rendah akan muncul sangat gelap ditampilkan, Kita dapat menampilkan matriks ini dan histogram ini dengan perintah biasa: >> imshou(e) figure, imhist(e),axis tight dan hasilnya ditunjukkan dalam gambar 2.20. 47 Seperti yang anda lihat, gambar yang sangat gelap memiliki histogram yang sesuai kelompoknya yang berada di ujung bawah skal Tapi kita dapat menerapkan pemerataan histogram untuk gambar ini, dan menampilkan hasil: >> ehchisteq(e); >> imshow(eh), figure, inhist(eh) ,axis tight dan hasilnya ditunjukkan dalam gambar 2.21 Mengapa ini bekerja Pertimbangkan histogram dalam gambar 2.17. Untuk menerapkan peregangan histogram, kita perlu nilai diluar peregangan tingkat abu-abu antara 9 dan 13. Dengan demikian, kita perlu menerapkan fungsi piecewise serupa dengan yang ditunjukkan dalam gambar 2.9. Mati kita mempertimbangkan histogram kumulatif, yang ditampilkan dalam gambar 2.22. Garis putus-putus hanya bergabung di atas bar histogram. Namun, dapat diartikan sebagai suatu histogram yang tepat Gambar 2.20: Versi gelap dari engineer.tif dan histogramnya 48 Gambar 2.21: Gambar dari 2.20 menyamakan kedudukan dan histogramnya 30) ain) 2a 20 0 a Gambar 2.22: kumulatif histogram fungsi peregangan. Untuk melakukan ini, kita perlu skala nilai y sehingga mereka di antara 0 dan 15, bukan lebih dari 0 dan 360. Tapi justru metode ini yang dijelaskan dalam bagian 2.3.2. Sebagaimana telah kita lihat, tidak ada contoh histogram, setelah pemerataan, menjadi seragam. Ini adalah hasil dari sifat alami gambar. Jika kita memperlakukan gambar sebagai fungsi kontinu f(x, y) dan histogram di antara daerah lain (lihat misalnya Castleman [1], maka kita dapat memperlakukan histogram sebagai fungsi kepadatan probabilitas. Tapi penyesuaian fungsi kepadatan kumulatif akan selalu memiliki histogram seragam, lihat misalnya Hogg dan Craig [6] 49 BAB III OPERASI TETANGGA 3.1 Pendahuluan Kita telah melihat dalam bab 2 bahwa gambar bisa modivkasi dengan menerapkan fungsi tertentu untuk masing-masing nilai pixel. Operasi tetangga dapat dianggap sebagai penerusan dari operasi titik, di mana fungsi diterapkan pada lingkungan masing-masing pixel. Idenya adalah untuk memindahkan mask: persegi panjang (biasanya dengan panjang terserah) atau bentuk lain atas citra yang diberikan, Ketika kita melakukan ini, kita membuat gambar baru yang tiap pixelnya telah ada nilai abu-abunya.Dari nilai-nilai abu-abu di pada mask dibawah, seperti yang ditunjukkan pada Figur 3.1. Kombinasi mask dan fungsi Boy) po — Pixel at posit mean? Pixel ab position (2,9) > Original image Innage after filtering Figure 3.1: Using a spatial mask on an image Ini disebut filter. Jika fungsi dimana nilai abu-abu baru dihitung adalah fungsi linear dari semua nilai-nilai abu-abu dalam mask, maka filter disebut filter yang linier. filter yang linear dapat diimplementasikan dengan mengalikan semua elemen dalam mask dengan sesuai elemen di Jingkungan, dan menambahkan semua produk ini, Misalkan kita memiliki 3x5 mask seperti digambarkan dalam Figur 3.1. Misalkan nilai mask diberikan oleh: 50 amt—t.—2) | ata mao) | maay (a) mio, 2) | m(@,—t) | mt,09 mitt) 1m(0,2) mit,—2)— ma,—t) | mae mitt) (2) Dan nilai-nilai yang sesuai pixel adalah W192) | En g—a) | pea) | wea gH) | pL +I Pig wing 1) | liad wed + | whi +2 pO+LJ-2) | ki+19-1) | wG+1) — | oH I+D | perLI+2) Sckarang kita kali dan jumlahkan: (s,t)p(i + 8,9 +4). Sebuah diagram yang menggambarkan proses untuk melakukan spasial Penyaringan diberikan dalam Figur 3.2. Maka Spasial filter memerlukan tiga langkah: 1, posisi masker selama pixel saat ini, 2. Nilai dari semua Elemen filter dengan unsur-unsur yang sesuai dari lingkungan, 51 3, menjumlahkan semua hasil. Langkah ini harus divlang untuk setiap pixel dalam gambar. Penunjang spasial filter adalah konvolusi spasial. Metode untuk melakukan suatu konvolusi adalah sama seperti filter, kecuali filter harus dirotasikan 180° dulu sebelum pengalian dan penjumlahan. mengguanakan notasi m(i,j) dan p (ij) sama seperti sebelumnya untuk keluaran dari konvolusi dengan sebuah 3x5 mask untuk sebuah singgel pixel. 1 2 SY ms, opt si +0. st 2 Sao ol po Pethatikan tanda-tanda negatif pada indeks m, Hasil yang sama dapat dicapai dengan YX DY mls.tpG-s+5-1- sa 112 Di sini kita telah memutar piksel gambar 180° . Ini tentu tidak mempengaruhi hasilnya. Yang penting Konvolusi akan menjadi jelas ketika kita menyelidiki Fourier transform, dan teorema 52 konvolusi. Perhatikan juga bahwa dalam prakteknya, kebanyakan Mask yang difilter adalah yang berotasi_simetris, schingga spasial filter dan Konvolusi spasial akan menghasilkan output yang sama, Contoh: Sebuah linear filter yang penting menggunakan 3x3 mask dan rata-rata mengambil. sembilan di setiap nilai-nilai dalam mask. Nilai ini menjadi nilai abu-abu dari pixel yang sesuai dalam gambar baru. Operasi ini dapat digambarkan sebagai berikut: alb[e dal atb+etdt+etf+gthti) g[ hi di mana e adalah nilai abu-abu dari pixel saat ini di gambar asli, dan rata-rat nya adalah nilai abu-abu pixel yang sesuai dalam gambar baru. Untuk menerapkan hal tersebut pada gambar, pertimbangan gambar 5x5 diperoleh: >> xeuints (10+magic(5)) 170 240 «10 «80 180 220 «5D 7014060 40 60 130 200 220 100 120 190 210 30 110 180 250 20 © 90 Kita mungkin menganggap array ini terbuat dari sembilan overlapping 3x3 neighbourhoods, Maka keluaranya hanya 9 nilai, Kita akan lihat nanti bagaimana mendapatkan 25 nilai untuk keluarnya, Pilih 3x3 di kiti atas neighbourhoods pada image x: 53 170 240 10] 80 150 230 50 70] 140 160 40 60 130] 200 220 100 120 190 210 30 110 180 250 20 90 Sekarang kita mengambil rata-rata dari semua nilai tersebut: >> mean2(x(1:3,1:3)) ans = 444.1111 yang dapat dibulatkan menjadi 111, Sekarang kita bisa pindah ke neighbourhood kedua: 170] 240 10 80] 150 230] 50 70 140] 160 40} 60 130 200] 220 100 120 190 210 30 110 180 250 20 90 Dan ambil nilai rata-ratanya >> mean2(x(1:3,2:4)) ans = 108.8889 dan ini dapat dibulatkan baik turun ke 108, atau ke bilangan bulat terdekat 109. Jika kita terus dalam cara ini, keluaran berikut ini didapat: 54 111.1111 108.8889 128.8889 110.0000 130.0000 150.0000 131.1111 151.1111 148.8889 Array ini adalah hasil dari filter x dengan 3x3 filter rata-rata. 3.2 Notation Lebih mudah untuk menggambarkan linear filter hanya dalam hal koefisien, Koefisien dari semua nilai-nilai abu-abu piksel dalam mask. Hal ini dapat ditulis sebagai matriks. Hasil rata-rata filter di atas, misalnya, bisa saja keluarannya ditulis sebagai berikut. 14 4 45,1, 19,4, 1,1 pat b+ oct dt et ch+o get get +9? otal git ght Dan filter ini dapat di deskripsikan dengan matriks: _— 7,77 i 1 4 PPP ity dy Petri Contoh: Filter 1-2 1 2 #4 -2 1-2 1 Dengan operator nilai abu-abunya sebagai berikut a | fa 2b+e-2Wd+ de W+g—BWN+i g\h 55 ‘Tepi gambar ‘Ada masalah yang jelas dalam menerapkan sebuah filter. Apa yang terjadi di tepi gambar, di mana mask sebagian jatuh di luar gambar? Dalam kasus seperti itu, seperti yang digambarkan dalam Figur 3.3 akan ada pengurang nilai-nilai abu-abu yang digunakan dalam fungsi filter. Figure 3.3: A mask at the edge of an ima, ‘Ada sejumlah pendekatan yang berbeda untuk menangani masalah ini. ‘Abaikan epi. Artinya, mask hanya diterapkan kepada piksel dalam gambar dengan Mask akan berada sepenubnya dalam gambar. Ini berarti semua piksel kecuali untuk tepi, dan hasil dalam Jinya, Jika mask sangat besar, signifikanya Tidak bisa output gambar yang lebih keeil dar jumlah informasi dapat hilang dengan metode ini Kami menerapkan metode ini dalam contoh kita di atas. Panel dengan nol. Kami berasumsi bahwa semua nilai yang diperlukan di luar gambar adalah nol. Ini memberi kita semua nilai untuk bekerja dan akan mengembalikan output gambar dengan ukuran yang sama seperti aslinya, tapi mungkin memiliki efek memperkenalkan artefak yang tidak diinginkan (misalnya, tepi) sekitar gambar 3.3 filter dengan methleb Fungsi filter linier filter2(filter, image, shape) dan hasilnya adalah matriks tipe data ganda. Parameter bentuknya opsional, itu menggambarkan ‘metode untuk berurusan dengan tepi: ‘+ filter2(filter,image,same’) : adalah default; menghasilkan matriks dengan ukuran yang sama dengan matriks gambar asli. Menggunakan panel nol 56 >> asones(3,3)/9 0.1111 0.1111 o.titt >> filter2(a,x, samo”) ans = 76.6567 87.7778 66.6567 67.7778 56.6567 filter2(filter,image,'valid’) berlaku hanya untuk mask dalam piksel. Hasilnya akan o.4111 0.4114 O.4ttt 85.5556 411.1111 110.0000 431.1111 105.5556 o.tn1t anit o.tntt 65.5556 108.8889 130.0000 151.1111 107.778, selalu lebih kecil dari aslinya: >> filter2(a,x,’valid’) ans = 111.1111 108.8889 128.8889 110.0000 130.0000 150.0000 148.8889 131 s11d1 151.1111 67.7778 128.8889 150.0000 148.8889 87.7778 58.8889 105.5556 108.6867 85.5556 38.8889 Hasil dari ‘same’ di atas juga dapat diperoleh dengan panel nol dan menggunakan “valid” >> x2-zoros(7,7); >> x2(2:6,2: o 0 170 240 230 50 40 60 100 120 110 180 0 0 o 0 10 80 7 140 130 200 190 210 250 20 0 0 >> filter2(a,x2, valid’) 150 160 220 30 20 0 ecoco0c] 57 ‘© filter2(filter,image, full’ mengembalikan hasiInya lebih besar daripada yang asli. ini dilakukan dengan panel nol, dan menerapkan filter di segala tempat dan di sekitar gambar dimana mask memotong matriks citra >> filter2(a,x, full’) ans = 18.8889 44.4444 48.8889 44.1411 27.7778 23.3333 12.2222 45. 76 87. 66. 67 56 32 5556 6667 7778 6667 1778 6667 2222 46.6667 85.5556 141.1111 110.0000 131.1111 105.5556 60.0000 36. 65 108. 130. 151 107. 50. 6667 26.6667 25.5556 16.6667 5556 67.7778 58.8889 34.4444 8889 128.8889 105.5556 58.8889 0000 150.0000 106.6667 45.5556 -1111 148.8889 85.5556 37.7778 7178 87.7778 38.8889 13.3333 0000 40.0000 12.2222 10.0000 Parameter bentuk, menjadi opsional, dapat dihilangkan; dalam hal nilai default adalah ‘sama’ Tidak ada pendekatan single yang terbaik; metode harus ditentukan oleh masalah yang dihadapi; oleh karena itu filter yang yang digunakan, untuk hasil yang dibutuhkan Kita dapat membuat filter dengan tangan, atau dengan menggunakan fungsi spasial. ini memiliki banyak pilihan yang membuat untuk penciptaan banyak perbeadaan yang mudah. Kita akan menggunakan opsi-rata, yang menghasilkan rata-rata filter dari ukuran tertentu; maka >> fspecial (’average’ , [5,71) akan mengembalikan rata-rata ukuran filter dengan Lebih sedethana >> fspecial average’ ,11) Kita akan mengembalikan rata-rata ukuran filter 11x 11. Jika kita meninggalkan nomor atau vektor, 3x3 rata-rata ukuran filter akan _dikembalikan, Sebagai contoh, misalkan kita menerapkan 3x3 rata-rata filter untuk gambar sebagai berikut: 58 >> c=imread(’ cameraman. tif’); >> fi=fspecial average’) ; >> cf1=filter2(f1,c); Kami sekarang memiliki matriks tipe data ganda, Untuk menampilkan ini, kita bisa melakukan hhal-hal berikut: ‘* mengubahnya ke matriks jenis uint®, untuk digunakan dengan imshow, ‘* membagi nilai-nilainya dengan 255 untuk mendapatkan matriks dengan nilai-nilai dalam jangkauan 0.1 -1.0, untuk digunakan dengan imshow, * menggunakan mat2gray untuk skala hasil untuk ditampilkan, Kita akan membahas penggunaan fungsi ini nant. Gunakan metode yang kedua, >> figure, imshow(c) figure, imshow(cf1/255) akan menghasilkan gambar yang ditampilkan di figure 3.4 (a) dan 3.4 (b). rata rata filter menghasilkan gambar ngeblure, pada tepi khusunya kurang jelas dari pada gambar aslinya, Gambar dapat lebih kabur dengan menggunakan rata-rata filter dari ukuran yang lebih besar, Hal ini ditunjukkan pada Figur 3.4 (c), di mana rata-rata filter 9x9 yang telah digunakan, dan dalam Figur 3.4 (d), di mana rata-rata filter 25x25 yang telah digunakan. iginal image (b) Average filtering 59 (¢) Using a9 x 9 filter (€) Using a 25 25 filter Piguro a4: Average filtering Perhatikan bagaimana nol bantalan yang digunakan di tepi telah menghasilkan perbatasan gelap muneul di sekitar gambar. Hal ini terutama terlihat ketika filter yang besar sedang digunakan. Jika ini adalah yang tidak diinginkan artefak dari penyaringan; jika misalnya perubahan kecerahan rata-rata gambar, maka mungkin lebih tepat untuk menggunakan ‘valid’ pilihan bentuk. Gambar yang dihasilkan setelah ini filter mungkin tampak banyak atau Buruk dati aslinya. ‘Namun, menerapkan filter yang kabur untuk mengurangi detail dalam gambar mungkin operasi yang sempurna untuk otonom pengakuan mesin, atau jika kita hanya berkonsentrasi pada? aspek kotor dari gambar: jumlah benda; jumlah daerah gelap dan terang. Dalam kasus tersebut, terlalu banyak detail dapat mengaburkan hasilnya, Sparasi filter Beberapa filter dapat diimplementasikan oleh aplikasi berturut-turut dari dua filter sederhana, Scbagai contoh, 1 i 1 1 ty, ft | 111] Fiaal 3fi]3 Rata rata filte 3x3r dapat diimplementasikan yang pertama dengan menerapkan 3x1 rat-rata filter, dan kemudian menerapkannya sebagai hasil 1x3. Rata-rata filter 3x3 demikian dipisahkan ‘menjadi dua buah filter yang lebih kecil. Sparasi dapat menghasilkan penghematan waktu yang besar. Mengira nx n filter adalah pemisahan dua filter berukuran nx1 dan Ixn, Tetapi pemisahan nxn filter membutuhakan perkalian n®, Perkalian n dan pemanbahan n-l, Karena ini harus dilakukan dua kali, jumlab total perkalian dan penambahan masing masing 2n dan 2n-2. Jika n besar penghematan efesiensi dapat dramatis. Semua sparasi filter adalah sparsai filter laplacian, 2 1 1 2 4 -2)=)] -2}]1 -2 1]. 1 -2 1 3.4 Frekuensi, Filter Lolos Tinggi dan Rendah ‘Akan sangat baik jika mempunyai beberapa istilah dasar yang mana kita dapat bicara tentang efek filter pada sebuah citra dan dapat menentukan filter yang tepat untuk sebuah pengolahan citra yang diberikan, Satu aspek penting pada sebuah citra yang memungkinkan kita untuk melakukan ini adalah frekuensi, Sederhananya, frekuensi pada citra adalah ukuran jumlah dari perubahan nilai keabu-abuan dengan jarak. Konsep ini akan memberikan beberapa pengaturan pada chapter 4, Bagian frekuensi tinggi ditandai dengan perubahan besar pada nilai keabu-abuan pada jarak yang pendek, contoh bagian frekuensi tinggi adalah tepi dan noise. Bagian frekuensi rendah,sisi lainnya, adalah bagian citra yang ditandai dengan perubahan keeil nilai keabu-abuan, Diantaranya, background, tekstur permukaan, Kemu filter adalah, kita dapat katakan Filter Lolos Tinggi, jika meloloskan bagian fiekuensi tinggi, dan mengurangi atau ‘menghilangkan bagian frekuensi rendah, Filter Lolos Rendah, jika meloloskan bagian frekuensi rendah, dan mengurangi atau menghilangkan bagian frekuensi tinggi 61 Contohnya, filter rata-rata 3x3 adalah filter lolos rendah, itu cenderung membentuk tepi buram. Filter adalah filter lolos tinggi. Kita tandai jumlah koefisien (Itu adalah, jumlah semua clemen ¢ pada matriks),pada filter lolos tinggi adalah nol, Ini berarti pada bagian frekuensi rendah sebuah citra, dimana nilai keabu-abuan adalah sama, Hasil menggunakan filter yang sesuai nilai abu-abu pada citra baru akan mendekati nol. Untuk melihat ini, tentukan 4x4 blok yang serupa nilai pikselnya dan terapkan filter lolos tinggi yang lebih tinggi menjadi empat pusat im [ime [Ts [9 147 [152 [a1 150 apo Taz [Tas | 49 | T5T = |=5, Tat [149 [150 [as Nilai hasil mendekati nol. Yang mana hasil tersebut diterapkan filter lolos tinggi ke bagian frekuensi | rendab, Kita akan melihat bagaimana hubungannya dengan nilai negatif dibawah. Filter lolos tinggi memiliki nilai tertentu dalam deteksi tepi dan peningkatan tepi (yang kita akan melihat lebih dalam bab 8). Tapi kita bisa memberikan sneak preview, menggunakan citra kamera. >> tetepocia (/2aplactan’) o.eser | -3.3233 0.6667 o.sse7 0.6867 0.1667 >> efotitter2tt,<); >> inenowCcr/100) >> tiefepecial log") n- 0.0m 0.0468 0.0564 0.0408 «.0448 0.0564 0.7145 4.9008 0.7146 0.0564 0.0448 010868 0.0504 0.0458 0,08 >> efterttser2(r1,<) >> #igira, feshow(2F1/100) 62 Foto akan ditampilkan di Figure 3.5. Gambar (a) adalah hasil dari Iter Laplacian?; gambar (b) ‘menunjukkan hasil Laplacian dari Gaussian ( log) Fillter, Dalam setiap kasus, jumlah dari semua elemen saringan adalah nol. Nilai di luar rentang 0 - 255 Kita telah melihat bahwa untuk tampilan gambar, kami ingin nilai-nilai abu-abu dari piksel berada diantara 0. dan 255. Namun, hasil dari penerapan linear Filter mungkin nilai-nilai yang berada di luar kisaran ini. Kami dapat mempertimbangkan cara untuk menghadapi nilai-nilai di Juar ini Dapat ditampitkan kisaran, ‘Membuat nilai negatif positif. Hal ini tentu akan berurusan dengan nilai-nilai negatif, tetapi tidak dengan nilai-nilai lebih besar dari 255. Oleh karena itu, ini hanya bisa digunakan dalam keadaan tertentu c; misalnya, ketika ada hanya beberapa nilai-nilai negatif, dan ketika nilai-nilai ini sendiri mendekati nol, Nilai klip. Kami menerapkan jenis thresholding operasi berikut untuk nilai abu-abu diproduksi oleh yang Iter untuk mendapatkan nilai dapat ditampilkan { 0 r 255 Hal ini akan menghasilkan gambar dengan semua nilai piksel dalam kisaran yang diperlukan, tetapi tidak cocok jika ada banyak nilai-nilai abu-abu di Iuar 0 -255 kisaran; Khususnya, jika nilai abu-abu sama-sama_tersebar di kisaran yang lebih besar. Dalam kasus seperti itu operasi ini akan cenderung untuk menghancurkan hasil Filter. Penskalaan transformasi. Misalkan nilai abu-abu terendah dihasilkan oleh Filter jika dan Nilai tertinggi adalah gH . Kita dapat mengubah semua nilai dalam kisaran gL-Gh ke kisaran 0- 255 oleh ‘Transformasi linear digambarkan di bawah ini: 63 =o gu ~ 9b. y = 255 dan menerapkan transformasi ini untuk semua tingkat abu-abu diproduksi oleh Filter akan menghasilkan (setelah setiap pembulatan diperlukan) dalam foto yang dapat ditampilkan Sebagai contoh, mari kita menerapkan high pass filter yang diberikan dalam bagian 3.4 ke ‘gambar kamera: >> elt -2 15-2 4 ~ >> cf2efilter2(#2,0); Beco Sekarang nilai-nilai maksimum dan minimum dari CF2 matriks 539 dan 541masing-masing. itu Fungsi mat2gray otomatis skala elemen matriks nilai-nilai dapat ditampilkan; untuk setiap matriks M_, Berlaku transformasi linear untuk ke unsur-unsumya, dengan nilai pemetaan terendah 0,0, dan nilai pemetaan tertinggi 1,0. Ini berarti output dari mat2gray selalu bertipe double. Fungsi ini juga mensyaratkan bahwa jenis input ganda. >> figure, imshow (nat2gray(cf2)); Untuk melakukan ini dengan tangan, schingga untuk berbicara, menerapkan transformasi linear di atas, kita dapat menggunakan: >> maxcf2enax(cf2(:))5 >> mincf2-min(cf2(:)); >> cf2ge(ct2-minct2)/ (naxct2-mot2) ; Hasilnya akan menjadi matriks tipe ganda, dengan entri dalam kisaran 0.0 — 1.0. Hal ini dapat dilihat dengan imshow. Kita bisa membuat gambar uint8 dengan mengalikan dengan 255 Pertama. Hasilnya dapat dilihat pada Figure 3.6. Kita umumnya dapat memperoleh hasil yang lebih baik dengan membagi hasil? Filtering dengan konstan sebelum menampilkan itu: >>Figure, imshow (CF2 / 60) >> figure, imshow (cf2/60) 64 dan ini juga ditunjukkan dalam Figure 3.6. High pass FiLters sering digunakan untuk deteksi tepi. Ini dapat terlihat cukup jelas di sebelah kanan gambar tangan Figure 3.6. 3.5 Mempertajam Tepi Penyaringan Spasial dapat digunakan untuk membuat tepi dalam gambar yang sedikit lebih tajam dan lebih renyah, yang umumnya menghasilkan gambar lebih menyenangkan untuk mata ‘manusia, Operasi ini berbagai cara yang disebut tepi peningkatan , tepi crispening atau masking unsharp . Istilah terakhir ini berasal dari pencetakan industri. masking unsharp Ide masking unsharp adalah untuk mengurangi diperkecil Unsharp versi gambar dari aslinya, Dalam prakteknya, kita dapat mencapai ini dengan mengurangi gambar kabur skala dari aslinya. itu skema untuk masking unsharp ditampilkan dalam Figure 3.7. Orie Blur with Seale wick |_| low pass filter kel Misalkan gambar x adalah tipe uint8. Masking unsharp dapat diterapkan oleh berikut urutan perintah: >> fofspecial(Yaverag >> xi-filter2lt,2); >> medouble ()-2f/1.5 >> inshow (20/70) Perintah terakhir sisik hasilnya schingga imshow menampilkan gambar yang sesuai; nilai ‘mungkin perlu disesuaikan sesuai dengan gambar input, Misalkan x adalah gambar yang 65 ditampilkan dalam Figur 3.8 (a), maka hasil masking unsharp diberikan dalam Figure 3.8 (b). Hasilnya tampaknya menjadi citra yang lebih baik daripada yang asli; ujung-ujungnya tajam dan lebih jelas dened. Untuk melihat mengapa ini bekerja, kita dapat mempertimbangkan fungsi nilai abu-abu ketika kami melakukan perjalanan melintasi tepi, seperti yang ditunjukkan dalam Figur 3.9. Sebagai blur skala dikurangi dari aslinya, hasinya adalah bahwa tepi ditingkatkan, seperti yang ditunjukkan dalam grafik (c) dari angka 3,9. Kita sebenamya bisa melakukan Filtering dan ‘mengurangkan operasi dalam satu perintah, menggunakan linearitas dari Filter, dan bahwa 3x3, Filter. f° 00 010 [ooo adalah identitas Filter . Oleh karena itu masking unsharp dapat diimplementasikan oleh filter dari bentuk ooo] fi v9 1/9 =]|010)-2) 1/9 1/9 1/9 z| 9 V9 1 a) 1/9 1/9 1/9 di mana k adalah konstanta yang dipilih untuk memberikan hasil terbaik. Atau, masking unsharp filter mungkin didefinisikan sebagai ooo 9 1/9 1/9 f=rlo1 ol] ayo 9 19 ooo 1/9 1/9 1/9 66 schingga kita berada dalam e ect mengurangi blur dari versi skala yang asli; faktor skala juga dapat dibagi antara identitas dan Filters kabur. Pilihan unsharp dari fspecial menghasilkan filter tersebut; itu filter dibuat memiliki bentuk ant a-1 dimana alfa adalah parameter opsional yang defaultnya 0,2 Perintah di atas jika menggunkan MATLAB >> primread(*pelicans tif); >> wfspecial Cunsharp’ ,0.5); >> pusfilter2(u,p); >> imshow(p) , figure, imshow(pu/255) Gambar 3.10 (b), muncul lebih tajam dan Bersih dari aslinya, Perhatikan khususnya batu dan pohon-pohon di latar belakang, dan riak-riak di atas air. 67 (a) The original (b) After tnsharp masking Figure 3.10: Edge enhncement sith unsharp masking ‘Meskipun kita telah menggunakan filter rata-rata di atas, kita sebenarnya bisa menggunakan low pass filter untuk unsharp masking. Penyaringan Tingkat Tinggi Sekutu ke masking unsharp filters adalah meningkatkan tinggi filters, yang diperoleh : high boost = A(original) — (low pass) di mana A adalah penguat faktor kation . Jika A-1, Maka dorongan yang tinggi filter menjadi ‘tinggi yang biasa lulu filter. Jika kita mengambil sebagai low pass filter tersebut rata-rata fillter, ‘maka dorongan yang tinggi filter akan memiliki bentuk =) 2 =i] Perintah pada MATLAB, Ei it tteie tte il7a, >> xf-filter2(x,4); >> imshow(xt/80) akan menghasilkan gambar mirip dengan yang di Figur 3.8. Nilai 80 diperoleh dengan trial and error untuk menghasilkan gambar dengan intensitas yang sama dengan aslinya. 68 Jika masing-masing filters HB1 dan HB2 diterapkan ke gambar dengan filter2, hasilnya akan ditingkatkan Tepi.Gambar di Figur 3.11 menunjukkan hasil ini; Figur 3.11 (a) diperoleh dengan >> xi-filter2(nb1,x); >> imshow(x1/258) Dan gambar 3.11 sama dengan (a) High boost filtering with kb (b) High boost filtering with nb2 3.6 Filter Non Linier Filter Linear, Sebagaimana telah kita lihat di bagian sebelumnya, mudah untuk menjelaskan, dan dapat diterapkan sangat_cepat dan efisien oleh Matlab. non-linear fillter diperoleh dengan fungsi non-linear dati nilai-nilai greyscale dalam topeng. Contoh sederhana adalah maksimal filter, yang memiliki sebagai output nilai maksimum di bawah masker, dan minimum yang sesuai filter, yang memiliki sebagai output nilai minimum di bawah masker. Baik maksimum dan minimum filters adalah contoh dari peringkat-order filters. Dalam sebuah filter, yang elemen di bawah topeng yang diperintahkan, dan nilai tertentu dikembalikan sebagai output. Jadi jika nilai- nilai diberikan dalam rangka meningkatkan, minimum filter adalah peringkat-order fillter dimana elemen pertama adalah kembali, dan maksimum filter adalah peringkat-order fillter yang elemen terakhir dikembalikan Untuk menerapkan umum Iter non-linear di Matlab, fungsi untuk digunakan adalah nifilter, yang menerapkan filter untuk gambar sesuai dengan fungsi didefinisikan. Jika fungsi tersebut belum de? Ned, kita harus membuat m-le yang itu. Berikut adalah beberapa contoh pertama untuk menerapkan maksimal fillte as 3x3 operasi tetangga 69 >> cmax-nlfilter(c, [3,3] ,’max(x(:))?); Fungsi nlfilter membutuhkan tiga argumen: matriks gambar, ukuran saringan, dan fungsi yang akan diterapkan, Fungsi harus menjadi fungsi matriks yang mengembalikan nilai skalar. Ttu hasil dari operasi ini ditunjukkan pada Figure 3.12 (a). Sebuah implementasi yang sesuai minimum Iter adalah: >> cmin-nlfilter(c, [3,3], ’min(x(: Hasilnya : (a) Using @ maximum filter (>) Using @ minimum filter Figure 3,12; Using non-linear filters, 70 BABIV TRANSFORMASI FOER 4.1 Pendahuluan ‘Transformasi Fourier sangat penting untuk pengolahan citra, Hal ini memungkinkan kita untuk melakukan tugas yang tidak mungkin dilakukan dengan cara lain; efisiensi yang memungkinkan kita untuk melakukan tugas lebih cepat. Transformasi Fourier menyediakan altematif lain yang lebih baik untuk spasial linear filtering; lebih efisien menggunakan ‘Transformasi Fourier dari pada filter spasial untuk sebuah filter besar. Fourier Transform juga memungkinkan kita untuk memisahkan dan memproses “Frekuensi” citra,dan melakukan low- pass dan high-pass filtering dengan derajat presisi yang baik .Sebelum kita membahas transformasi Fourier citra, kita akan menyelidiki transformasi Fourier satu dimensi, dan beberapa dari sifat-sifatnya, 4.2 Latar Belakaang Kita mulai dari pengamatan bahwa fungsi periodik dapat ditulis sebagai jumlah dari sinus dan cosinus dari berbagai amplitudo dan frekuensi. Misalnya, dalam Figure 4.1 kita memplot fungsi, dan dekomposisi ke dalam fungsi sinus. Beberapa fungsi akan membutubkan hanya sejumlah angka berhingga fungsi dalam dekomposisi mereka;lainnya akan membutuhkan angka tak berhingga. Sebagai contoh, gelombang persegi , Seperti ditunjukkan dalam Figure 4.2, memiliki penguraian 1 1 (2) = sing + bsinde+ bint + teins +4 sinde + 41) i 3 7 = ‘ Dalam figure 4.2 kita mengambil empat suku pertama hanya untuk memberikan pendekatan tersebut. Semakin banyak suku yang kita ambil, semakin dekat jumlahnya akan mendekati fungsi aslinya. n 4.3 Transformasi Fourier diskrit satu dimensi Ketika kita berurusan dengan fungsi diskrit, seperti yang akan kita lakukan pada citra, kondisinya akan sedikit berbeda dari sesi sebelumnya. Karena kita hanya membutuhkan angka berhingga dari Nilai-nilai, kita hanya perlu Jumlah fungsi behingga untuk melakukannya. Pertimbangkan misalnya urutan diskrit 4.3.1 Definisi DFT Satu dimensi Andaikata f= [fo.fisfoees Iva Kita definisikan transformasi Fourier diskrit menjadi F = (Fo. Fi. Fo... Fw—1 dimana Rumus untuk kebalikan DFT sangat mirip dengan transformasi biasa n Jika anda membandingkan persamaan ini dengan persamaan 4.2, anda akan melihat bahwa hanya terdapat dua perbedaan 1. Disini tidak terdapat faktor skala 1/N 2. Tanda dalam fungsi eksponensial telah berubah menjadi positif Fast Fourier Transform. Salah satu dari banyak aspek yang membuat DFT begitu menarik untuk pengolahan citra adalah adanya algoritma yang sangat cepat untuk menghitung itu, Ada beberapa sangat cepat dan e algoritma efisien untuk komputasi DFT; algoritma tersebut disebut Fast Fourier Transform, atau FFT, Penggunaan FFT sangat mengurangi waktu yang dibutuhkan untuk menghitung DFT. Salah satu metode FFT bekerja secara rekursif dengan membagi vektor asli menjadi dua bagian, komputasi FFT setiap setengah, dan kemudian menempatkan hasil bersama-sama, Ini berarti bahwa FFT paling efisien ketika panjang vektor adalah pangkat 2. 2" | Direct arithmetic [ FFT | Increase in speed a 16 8 20 8 84 24 2.67 16 256 64 4.0 32 1024 160 6A 64 4096 384 | 10.67 128 16384 896 | 18.3 256 65536 2048 | 32.0 512 262144 4608 | 56.9 1024 1048576 10240 | 102.4 ‘Table 4.1 : Perbandingan FFT dan Aritmatika Langsung 4.4 DET2 ensi Pada 2 dimensi, DFT mengambil matriks sebagai inputannya dan mengembalikanya dalam matriks bentuk Iain, dengan ukuran sam sebagai outputnya. Jika nilai matriks aslinya adalah f(x,y) dimana x dan y adalah indeks, kemudian matriks Keluarannya adalah F(u,v). Kita menyebut matriks F adalah transformasi Fourier dari f dan dituliskan B F=F(f) Kemudian matriks asli f adalah invers dari transformasi Fourier dari F dan dituliskan : f= FP). Kita tahu bahwa fungsi (1 dimensi) dapat dituliskan sebagai penjumlahan sinus dan cosinus. Mengingat bahwa gambar dapat dianggap sebagai fungsi 2 dimensi f(x,y). tampaknya masuk akal untuk berasumsi bahwa f dapat dinyatakan sebagai penjumlahan dari “kerut” fungsi yang ‘mana bentuk umumnya adalah 2 = asin(br + ey) Contoh sederhana seperti fungsi ditunjukkan seperti gambar 4.4, Dan ini adalah sebenamya yang dimaksud 2 dimensi, Gambar 4.4 Fungsi “Kerut” Transformasi Fourier melakukan: penulisan ulang matriks asli dalam hal jumlah dari lipatan.Definisi dari Fourier diskrit dua dimensi transformasi sangat mirip dengan yang untuk satu dimensi. Maju dan terbalik berubah untuk MxN matriks, dimana untuk mudahnya kita asumsikan x adalah indeks dari 0 sampai M-1 dan y adalah indeks dari 0 sampai N-1 adalah 74 4) (™_») , few) = Fy Y Fovon[ea( #2) (as) Ini adalah formula yang rumit , tetapi jika kita menghabiskan sedikit waktu menarik mereka terpisa, kita akan melihat bahwa mereka tidak sesulit itu. Sebelum melakukannya, perlu dicatat bahwa persamaan 4.4 dan 4.5 tidak digunakan oleh semua penulis. Perbedaannya terletak pada faktor pengali 1/MN. Beberapa orang meletakkannya didepan dari penjumlahan pada formula tersebut. Lainnya meletakan faktor 1/VMNV di depan kedua jumlah, Intinya adalah jumlah senditi akan menghasilkan hasil (setelah kedua maju dan transformasi inverse) yang terlalu besar dengan faktor dari MN. Jadi formula forrward-inverse seperti I/MN harus tetap ada, dimanapun letaknya. 4.4.1 Beberapa Hal Berkaitan dengan Transformasi Fourier 2D Semua sifat-sifat transfer DFT satu dimensi menjadi dua dimensi. Tapi ada beberapa properti lainnya tidak disebutkan sebelumnya, yang digunakan khusus untuk pengolahan gambar. DFT sebagai Spasial Filter. Catatan bahwa nilainya exp [2x1 (4 4 2) v [sam (H+ 2)] Adalah fungsi mandiri dari f atau F. Ini berarti bahwa mereka dapat dihitung di muka, dan hanya kemudian dimasukkan ke dalam rumus di atas. Ini juga berarti bahwa setiap nilai F(u,v) diperoleh dengan mengalikan setiap nilai f(x,y). dengan nilai tetap, dan menambahkan semua hasil. Tapi ini justru apa yang linear spasial filter lakukan: mengalikan semua elemen di bawah j-nilai yang tetap, dan menambahkan mereka semuanya, Dengan demikian topeng dengan nil kita dapat menentukan DFT sebagai filter linear spasial yang sebesar gambar, untuk menangani ‘masalah tepi, kita mengasumsikan bahwa gambar persegi di segala arah, sehingga topeng selalu memiliki nilai-nilai gambar untuk digunakan, Separasi. Ingat bahwa trasnformasi Fourier “elemen filter” dapat dinyatakan sebagai hasil : 8 #)|-enf lai pertama hasil : ep [omit exp [2aiz- Hanya bergantung pada x dan u dan tidak bergantung pada y dan v. Sebaliknya, nilai hasil kedua Bergantung pada y dan v dan tidak bergantung pada x dan u, Ini berarti bahwa kita dapat ‘memecah rumus di atas untuk formula sederhana yang bekerja pada baris tunggal atau kolom: M1 Flu) = ¥ fen Qe 20 ; ¥ Fees nit | Jika kita mengganti x dan u dengan y dan v, kita mendapatkan formula yang sesuai untuk DFT matriks kolom. Ini adalah formula yang didefinisikan sebagai DFT satu dimensi dari vektor atau mudahnya disebut DFT. DFT 2D dapat dihitung dengan menggunakan “separasi”untuk menentukan DET 2D dari sebuah matriks. Kita pertama menghitung DFT dari semua baris, dan kemudian menghitung DFT semua kolom hasilnya, seperti yang ditunjukkan dalam Gambar 4.5. Karena produk tidak tergantung pada urutan, kita bisa sama-sama juga menghitung 2-D DFT dengan menghitung DFT semua kolom pertama, kemudian menghitung DFT semua baris hasil 76 (a) Original im (b) DFT of each row of (a) (©) DFP of each column of (b) Gambar 4.5 Menghitung DFT 2D Teorema Konvolusi. Hasil ini adalah salah satu paling menguntungkan menggunakan DFT. Misalkan kita ingin mengolah gambar M dengan filter spasial S. Metode kita adalah meletakkan S diatas setiap piksel M secara bergiliran, kemudian menghitung produk dari semua nilai abu- abu yang sesuai dari M dan elemen S dan menambahkan sebagai hasilnya. Hasilnya biasa disebut dengan konvolusi digital dari M dan 8. Dan dilambangkan : M*5. Metode konvolusi sangat lambat, apalagi jika S besa. Teorema konvolusi yang hasilnya dapat dinyatakan dalam M* $ dapat diperoleh dengan urutan sebagai berikut 1. Pad $ dengan nol sehingga adalah ukuran yang sama dengan M, dapat dilambangkan dengan S° 2. Bentuk DFT M dan S, diperoleh F(M) dan F(S’) Bentuk elemen-oleh-clemen produk dari dua transformasi ini F(M)- F(S') 4, Invers dari hasil tersebut diperoleh : (FM) - F(S)) Sederhananya, menyatakan konvolusi teorema: M+» 8 =F-\(F(M)-F(8')) ‘Atau ekuivalen dengan 7 F(M « 8) = F(M)- F(S') Meskipun ini mungkin tampak seperti cara yang tidak perlu dilakukan dan bundaran komputasi sesuatu begitu sederhana seperti belit,tetapi dapat memiliki keunggulan kecepatan yang sangat besar jika S besar. Sebagai contoh kita akan mengolah 512 x 512 citra, dengan filter 32 x 32. Untuk melakukan ini akan dibutuhkan 32‘= 1024 perkalian untuk setiap piksel. Yang mana jika 512 x 512 = 262144. Ini berarti jika ditotal 1024 x 262144 = 268.435.456 perkalian dibutuhkan. Sekarang lihat jika menggunakan DFT (menggunakan algoritma FFT) . setiap baris membutuhkan 4608 perkalian oleh tabel 4.1; terdapat 512 baris jadi total 4608 x 512 = 2359296 perkalian, sama harus dilakukan lagi untuk kolom. Jadi untuk mendapatkan DET gambar ‘membutuhkan 4718592 perkalian, Kita membutuhkan jumlah yang sama untuk mendapatkan DFT dari filter, dan inverse DFT. Kami juga membutuhkan 512 x 512 perkalian untuk melakukan produk dari dua transformasi. Dengan demikian jumlah perkalian yang dibutuhkan untuk melakukan konvolusi dengan menggunakan DFT adalah 4718592 x 3 + 262144 — 14, 417,920 yang merupakan tabungan besar dibandingkan dengan metode langsung. Koefisen DC. Nilai F (0,0) dari DFT biasa disebut Koefisien DC. Jika kita meletakkan w-v-0 pada definisi yang diberikan persamaan 4.4 kemudian, wa wt F(0,0) SY fe wexp(o) = 3 SY f(xy). oy r Fa 30 Artinya, istilah ini sama dengan jumlah dari semua istilah dalam mattiks aslinya. Perpindahan, Untuk tujuan tampilan, akan lebih mudah untuk memiliki koefisien DC di tengah matriks. Hal ini akan terjadi jika semua elemen f(x,y) dalam matriks dikalikan dengan 1)" sebelum ditransformasikan. Gambar 4,6 mendemonstrasikan bagaimana matriks dipindahkan dengan metode ini. Dalam setiap diagram koefisien DC adalah atas unsur kiri submatrix A , Dan ditampilkan sebagai kotak hitam 78 . A B D Cc o D B A An FFT After shifting Gambar 4.6 Koefisen DC 4.5 Transformasi Fourier pada MATLAB Fungsi MATLAB yang relevan dengan ini adalah © Fft yang mana untuk memperoleh DFT sebuah vektor * ifft yang mana untuk memperoleh kebalikan DFT sebuah vektor © Ff2 yang mana untuk memperoleh DFT sebuah matriks * ifft yang mana untuk memperoleh kebalikan DFT sebuah matriks ‘* fftshift yang mana merubah transformasi seperti pada gambar 4.6 Sebelum mengaplikasikan beberapa gambar, mari kita Transformasi Fourier dari matriks kecil untuk mendapatkan lebih dari apa yang DFT “lakukan” Contoh 1. Misalkan kita mengambil matriks konstan f(x, . Kembali ke gagasan sejumlah corrugations, maka tidak ada lipatan yang diperlukan untuk membentuk Konstan, Dengan demikian kita berharap bahwa DFT terdiri dari koefiesen DC dan nol di tempat lain, Kita akan menggunakan sebuah fungsi yang mana hasil matriks n x n yang terdiri dari 1’s dimana n adalah sebuah input fungsi >> arones(8); >> fft2(a) Hasilnya adalah : 79 64 coococf coocooof eooccco] coos ocof eoooooo] ecoocco] eoococos Contoh 2 : Sekarang kita akan mengambil matriks yang terdiri dari corrugation tunggal >> a = [100 200; 100 200]; >> a = ropnat(a,4,4) 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 >> af - ££t2(a) 9600 eoaco00 eocoo0ce 20000000 eocooooe eocooooo eccoocoo Contoh 3 >> a= [zeros(@,4) ones(8,4)] 5 Sekarang kita akan melakukan transformasi Fourier dengan pergeseran, untuk menempatkan koefisien DC di tengah, dan karena itu mengandung beberapa nilai yang kompleks, untuk kesederhanaan kita akan hanya menunjukkan bulat mutlak nilai: >> af-fftshift (££t2(a)); >> round(abs(af)) as o 0 0 0 0 0 oO 6 0 0 9 0 © 0 oO Oo o 0 0 0 0 0 oO 0 0 0 0 60 © 6 oO 6 o 9 oO 2% 32 22 oO 9 o oa o 0 o 0 o 0 0 0 0 0 oO Oo o co 6 6 © 60 o o koefisien DC tentu saja jumlah semua dari nilai; nilai-nilai lain dapat dianggap yang koefisien fungsi sinus yang diperlukan untuk tepi, seperti yang diberikan pada persamaan 4.1, Mirroring nilai tentang koefisien DC merupakan konsekuensi dari simetri dari DFT. 4.6 Transformasi Fourier dari Citra Kita akan membuat gambar sederhana, dan melihat apa yang Transformasi Fourier hasilkan. Contoh 1 : Kita akan menghasilkan gambar yang sederhana yang terdiri dari satu ujung >> a= [zeros (256,128) ones(256,128)]; 81 Ini ditampitkan di sebelah kiri di gambar 4.9. Sekarang kita harus mengambil DFT nya, dan ‘mengubahnya : >> af-fftshift (£ft2(a)) ; Sckarang kita akan melihat spektrum; kita memiliki pilihan dari dua perintah 1. afl-log(1tabs (af)) imshow(afl/af1(129,129)) Ini bekerja karena setelah pergeseran, yang koefisien DC adalah pada posisi x-129 dan y~129. Kita meregangkan transformasi menggunakan log, dan membagi hasilnya dengan nilai tengah untuk mendapatkan matriks ketik ganda dengan nilai-nilai dalam kisaran 0.0 — 1.0 Hal ini kemudian dapat dilihat langsung dengan imshow 2. imshow (mat2gray (log(1+abs (af)))) Fungsi mat2gray otomatis skala matriks untuk ditampilkan sebagai gambar, seperti yang kita lihat dalam bab 3. Hal ini sebenamya mudah untuk menulis fungsi kecil untuk melihat transformasi, Salah satunya ditunjukkan pada gambar 4.8, Kemudian misalnya function fftshow(f, type) % Usage: FFISHOW(F, TYPE) a 4% Displays the fft matrix F using imshow, uhere TYPE must be one of % tabs? or *log?. If TYPE=’abs’, then then abs(f) is displayed; if % TYPE="1og? then log(1+abs(f)) is displayed. If TYPE is omitted, then % log? is chosen as a default. x % Example 4 c=imread( cameraman. tif?) ; 4% cf=fftshift(£#t2(c)); % ££tshow(cf, ’abs?) if nargin<2, type=?log?; end 82 if (type="log”) log(1#abs (4); im = max(41(:)) imshow (im2uint6: else error(?TYPE must be abs or log.’); end; Gambar 4.8 Fungsi untuk menampilkan Transformasi Fouri >> fttshow(at,"log’) Akan menampilkan logaritma dari nilai mutlak dari transformasi, dan >> fftshow(at,’abs’) Akan menampilkan nilai mutlak tanpa ada penskalaan, Hasil ditampilkan pada gambar 4.9 Gambar 4.9 Single edge dan DFT Contoh ekarang kita akan membuat kotak dan inilah transformasi fouriernya >> a=zeros (256,256) ; >> a(78:178,78:178)-1; >> imshow(a) >> af-fftshift(fft2(a)); >> figure,fftshow(af, ’abs’) 83 Kotak ditunjukkan pada gambar 4.10 Contoh ckarang kita akan melihat bagaimana kotak dengan rotasi 45° & (x, yl=meshgrid(1: 256, 1:256) ; >> De Ccty<829) 8 (497182) (x-y>-67) &(X-YS73) 5 >> imshow(b) >> bisfftehift(f£t2(b)); >> figure, tttshow (bt) Hasil ditunjukkan pada gambar 4.11 Contoh 4 : Kita akan membuat lingkaran kecil dan kemudian mentransformasikannya Gambar 4.10 kotak dan DFT-nya Gambar 4.11 Kotak yang dirotasi dan DFT-nya >> [x,y]=meshgrid (-128:217,-128:127) ; >> zesqrt(x.~24y.72); >> e=(2<15); 84 Hasil ditunjukkan pada gambar 4.12 sebelah kiri >> of-fft2shift (fft2(z)) ; >> fftshow(cf,?1og?) Hasil ditunjukkan pada gambar 4.12 sebelah kanan, Catatan “lingkara” pada transformasi fourier. Ini adalah Gambar 4.12 Lingkaran dan DFT-nya bayangan yang terkait dengan tepi tajam lingkaran, Sebagaimana telah kita lihat dari kedua tepi dan kotak gambar pada contoh sebelumnya, tepi muncul dalam transformasi sebagai garis nilai di sudut kanan ke tepi, Kita dapat mempertimbangkan nilai-nilai pada baris sebagai koefisien itu Koefisien dari yang sesuai fungsi kerut yang jumlah ke tepi. Dengan lingkaran, kita memiliki lini nilai_ memancar Keluar dari lingkaran; nilai-nilai ini muncul sebagai lingkaran dalam transformasi. Sebuah lingkaran dengan tepi lembut , sehingga tepi tampak kabur, akan memiliki transformasi tanpa dering. Lingkaran tersebut dapat dibuat dengan perintah (diberikan z di atas): b-t./(4+@./15).°2); Citra ini muncul sebagai lingkaran yang blurdan transformasinya sangat mirip. 4.7 Filter dalam Domain Frekuensi Kita telah melihat dalam bagian 4.4 bahwa salah satu alasan untuk penggunaan Fourier transform dalam pengolahan citra ini disebabkan oleh teorema Konvolusi: konvolusi spasial dapat dilakukan oleh elementwise perkalian transformasi Fourier oleh “matriks filter” yang cocok. Pada bagian ini kita akan menjelajahi beberapa metode filter 85 4.7.1 Penyaringan ideal Low pass filtering Misalkan kita memiliki F ourier matriks transformasi, bergeser schingga koefisien DC adalah di tengah. Karena komponen frekuensi w lo yang menuju pusat, kita dapat melakukan lo w lulus penyaringan dengan mengalikan transformasi dengan matriks sedemikian rupa sehingga pusat alues v dipelihara, dan nilai v jauh dari pusat baik dihapus atau diminimalkan. Salah satu cara untuk melakukan ini adalah untuk memperbanyak oleh ideal rendah p s matriks, yang merupakan matriks biner didefinisikan oleh: 1. if (x,y) is closer to the center than some value D, 0. if (2,y) is further from the center than D. m(zyy) = { Lingkaran ¢ ditampilkan pada gambar 4.12 adalah matriks tersebut, dengan, Kemudian dalam ayat F ourier mengubah produk elemen-bijaksana dan merupakan hasil yang kami butuhkan: Mari kita lihat apa yang terjadi jika kita menerapkan filter ini untuk gambar. Pertama kita ‘memperoleh gambar dan yang DFT >> cuvimread (*cazereman.tif”); >> efetteshife(e#e2(cm)) >> figure, fftshox(cf, ’10g") Juru kamera gambar dan yang DFT ditunjukkan pada Gambar 4.13. Sekarang kita bisa melakukan low pass filter 86 Gambar 4.13: "juru kamera” gambar dan yang DET dengan mengalikan matriks transformasi dengan matriks lingkaran (ingat bahwa "dot tanda bintang" adalah Matlab sintaks untuk perkalian elemen-bijaksana_ dua _matriks): >> eflscf.+c; >> figure, fftshow(cfl,, log”) ddan ini ditunjukkan pada gambar 4.14 (a). Sekarang kita dapat mengambil dalam ayat mengubah ddan menampilkan hasilnya: >> cflisifte2(cfl); >> figure, fftshow(cf1i, ‘abs?) dan ini ditunjukkan pada gambar 4.14 (b). Perhatikan bahwa meskipun Program Canada Fund diduga matriks nyata angka, kita masih menggunakan ffishow untuk menampilkannya, Hal ini arena ff2 dan fungsi fft2, menjadi numerik, tidak akan menghasilkan hasil. matematis sempuma, tapi perkiraan numerik agak sangat dekat, Jadi dengan menggunakan fitshow dengan ‘abs’ pilihan putaran keluar kesalahan yang diperoleh selama mengubeh dan dalam ayat tersebut. Perhatikan "dering" tentang tepi dalam gambar ini. 87 (a) penyaringan Ideal di DET (b) Setelah dalam versi Gambar 4.14: Menerapkan yang ideal low pass filtering dari cutoff tajam lingkaran. Dering seperti yang ditunjukkan pada gambar 4.12 ditransfer ke gambar. Kami akan betharap bahwa semakin kecil lingkaran, semakin kabur gambar, dan semakin besar lingkaran; kurang kabur. Gambar 4.15 menunjukkan ini, menggunakan celana dari 5 dan 30. Perhatikan bahwa dering masih ada, dan jelas terlihat dalam gambar 4.15 (b). High pass filtering Sama seperti kita dapat melakukan lo w pass filter dengan menjaga alues pusat v dari DFT dan menghilangkan yang lain, begitu tinggi pass filter dapat dilakukan dengan sebaliknya: menghilangkan alues pusat v dan menjaga orang lain. Hal ini dapat dilakukan dengan modifikasi kecil dari metode sebelumnya lo w pass filter. Pertama kita buat lingkaran: > byl > > j-moshgrid(-128:127,-128:127); wre (x."2+y.°2); 2>15) ; dan kalikan dengan DFT gambar >> cfh=of.*c5 >> figure, fftshow(cfh, *1og”) 88 (a) Cutoff dari 5 (b) cutoff dari 30 Gambar 4.15: Ideal low pass filtering dengan celana yang berbeda Hal ini ditunjukkan pada gambar 4.16 (a). The dalam ayat DFT dapat dengan mudah diproduksi dan ditampilkan: >> cfhi-iftt2(eth); >> figure, fftehow(cfhi,,’abs’) dan ini ditunjukkan pada gambar 4.16 (b). Seperti low pass filter, ukuran pengaruh lingkaran yang ersedia informasi av ke dalam ayat DFT, dan karenanya hasil akhir. Gambar 4.17 menunjukkan beberapa hasil lulus tinggi yang ideal penyaringan dengan celana yang berbeda. Jika cutoff besar informasi, kemudian lebih dihapus dari transformasi, lea Ving hanya frekuensi tertinggi. Hal ini dapat diamati pada mencari 4.17 (c) dan (d); hanya tepi gambar tetap. Jika kita memiliki cutoff kecil, seperti di mencari 4.17 (a), kita hanya mengeluarkan sejumlah kecil transformasi. Dengan demikian kita akan berharap bahwa hanya frekuensi barat lo gambar akan dihapus. Dan ini memang benar, seperti yang terlihat dalam Angka 4.17 (b); ada beberapa detail ‘greyscale di gambar akhir, tetapi daerah besar low frekuensi_yang dekat dengan nol, 4.7.2 Butterworth filtering Ideal filtering hanya memotong F ourier mengubah agak jauh dari pusat. Hal ini sangat mudah untuk implemen t, seperti telah kita lihat, namun memiliki kelemahan dalam troducing 89 artefak yang tidak diinginkan: dering, ke hasilnya, Salah satu cara untuk menghindari ini adalah dengan menggunakan scbagai matriks penyaring lingkaran dengan kurang cutoff tajam. Sebuah pilihan populer adalah dengan menggunakan filter Butterworth, Sebelum kita menjelaskan filter ini, kita akan lo ok lagi di filter yang ideal, Karena ini adalah radial simetris tentang pusat ‘transformasi, mereka dapat hanya dijelaskan dalam hal Tintas mereka bagian, Artinya, kita bisa menggambarkan filter sebagai fungsi jarak dari pusat. F atau low yang ideal pass filter, fungsi ini dapat dinyatakan sebagai 1 ifeD (@) DFT —setelah tinggi pass. filter (b)—Gambar yang —_dihasilkan Gambar 4.16: Menerapkan high pass filter yang ideal untuk gambar di mana jari-jari cutoff. Maka filter high pass yang ideal dapat dijelaskan sama: 1 ifz>D, s@) 1 fre D 90 Fungsi ini dilustrasikan pada Gambar 4.18, Fungsi filter Butterworth didasarkan pada data berikut fungsi untuk low pass filter: 1 jes 1 _ JO = FED dan untuk pass filter tinggi 1 1 =o di mana dalam setiap kasus parameter disebut atau der filter. Ukuran perintah yang ketajaman cutoff. Fungsi ini diilustrasikan dalam angka 4,19 dan 4,20, Sangat mudah untuk implemen t ini di Matlab; di sini adalah perintah untuk menghasilkan Butterworth rendah pass filter dengan ukuran dan order >> [x,y]-meshgrid(-128:217,-128:127)); >> BlHL./(1+ ((x.-2+y.-2)/15).°2)5 Karena high pass filter Butterworth dapat diperoleh dengan mengurangkan pass filter w lo dari 1, kita bisa menulis Matlab fungsi umum untuk menghasilkan Butterworth filter ukuran umum. Ini ditampilkan dalam angka 4,21 dan 4.22. Jadi untuk menerapkan Butterworth low pass filter untuk DFT gambar kamera: >> bl-Lbutter(c,16,1); >> cfbl=cf.+b1; >> figure, fftshow(cfb1, "1og’) 91 she (a) Cutoff of 5 (a) Cutoff of 30 D fa) Low pass Figure 4.18: Ide (b) The resulting image (b) The resulting image fist D (b) High pass filter functions 92 fizt f(z) D D (a) Low poss (b) igh pase Figure 4.19: Butterworth iter fimetions with n= 2 Fiz} filet (a) Low pase (b) High pase Figure 4.20: Butterworth filter fimetions with n function out=1but ter (im.d.n) X LOUITERCIM,D,w) craatex a low-pass Buctarverth filter K of the sane size as image IM, with cutoff D, and order 1 X Use: X wrtmrend( ‘cameraman. tif}; % Aelbuteer(x,28,2); i heighemaize(in, 1); wideheriea (im): lx, pl=meahgrid(-floor(eidsh/2) :#oart (widthet) /2) ,=floor(heigt/2): - floor ((baight-1)/2)) outed / (is (art (2)-1) x. ~24y 2/82) -w) Figure 4.91: A funetion to generate a low pass Butterworth filter functiea oursbbutter (im,d,n) % MBUTTENCIM,D.N) creates a high-pass Butterverth filter %of the samo size as image IM, vith cutoff D, and order % % Us % wetmread(*camaranan-tif"): % Uehburtar (x,28,2) % auts-lbutter(ie,4.0) Figure 4.22: A funetion to generate a high pass Butterworth filter dan ini ditunjukkan pada gambar 4.23 (a). Pethatikan bahwa tidak ada cutoff tajam seperti yang terlihat pada gambar 4.14; juga bahwa bagian Iuar dari transformasi tidak sama dengan nol, meskipun mereka redup jauh, Melakukan dalam ayat mengubah dan menampilkan sebagai yang telah kita lakukan sebelumnya menghasilkan angka 4,23 (b). Hal ini tentunya gambar kabur, tapi dering dilihat pada gambar 4.14 adalah benar-benar tidak ada, Membandingkan 94 (a) The DPT after Butterworth low pass filtering (b) The resulting image Figure 4.28: Butterworth low pass filtering transformasi setelah mengalikan dengan filter Butterworth (gambar 4.23 (a)) dengan aslinya mengubah (dalam gambar 4.13). The filter Butterworth tidak menyebabkan redaman alues v dari pusat, bahkan jika mereka tidak menjadi tiba-tiba nol, seperti dengan lo pass filter w yang ideal pada gambar 4.14. Kita bisa menerapkan pass filter tinggi Butterworth sama, pertama dengan menciptakan filter dan ‘menerapkan untuk gambar transformasi: >> bhehbatter (om,15,1)5 >> efbh=ct.*th; >> figure, fftshow(cfbh, ’1og”) dan kemudian di verting dan menampilkan hasilnya: >> efthisit#t2(cton); >> figure, fftshow(cfbhi , "abs’) Foto akan ditampilkan pada gambar 4.24 95 4.7.3 Gaussian filtering Kita telah bertemu filter Gaussian dalam bab 3, dan kami melihat bahwa mereka dapat digunakan untuk low pass filtering. Namun, kita juga bisa menggunakan filter Gaussian dalam domain frekuensi. Seperti ideal dan Butterworth filter, yang tasi implemen sangat sederhana membuat filter Gaussian, kalikan dengan mengubah gambar, dan vert hasilnya, Karena filter Gaussian memiliki sangat bagus matematika Properti bahwa F ourier mengubah dari Gaussian adalah Gaussian, kita harus mendapatkan persis sama. Hasil seperti ketika menggunakan filter Gaussian ruang linear. (a) The DFT after Butterworth high pass filtering (b) The resulting image Figure 4.24: Butterworth high pass filtering Filter Gaussian dapat dianggap paling "halus" dari semua filter yang telah kita bahas sejauh ini, dengan yang ideal filter yang paling halus, dan Butterworth filter di tengah. Kita bisa membuat filter Gaussian menggunakan fungsi fspecial, dan menerapkannya untuk mengubah kita. >> gismat2gray (fspecial Cgaussian’ ,256,10)); >> cgtect tet; >> fftshow(cgi,"1og") >> g2euat2gray (Especial (’gaussian’ ,256,30)); >> cgamcf +625 >> figure, tttshow(cg2,"1og') 96 Pethatikan penggunaan fungsi mat2gray. Fungsi {special sendiri menghasilkan low pass Gaussian filter dengan maksimal sangat kecil: >> gefspecial (*gaussian’ .256,10): >> format long, max(g(:)), format 0.00158787552679 Alasannya adalah bahwa fspecial menyesuaikan output untuk menjaga volume bawah fungsi Gaussian selalu 1. Ini berarti bahwa fungsi yang lebih luas, dengan standar deviasi yang besar, akan memiliki low maksimum, Jadi kita perlu skala hasilnya sehingga alue v sentral akan 1; dan ‘mat2gray tidak yang secara otomatis. The transformasi ditunjukkan pada Gambar 4.25 (a) dan (©). Dalam setiap kasus, parameter final Fungsi fspecial adalah standar deviasi; mengontrol lebar filter. Jelas, semakin besar deviasi standar, yang lebih Iuas fungsi, dan jumlah yang lebih besar dari transformasi yang diawetkan. Hasil transformasi pada gambar asli dapat diproduksi dengan menggunakan urutan biasa perintah: >> cgitmiftt2(egt): >> cgiznifit2(ce?); >> fftshow(cgil, abs’); >> fftshow(cgi2, ’abs?); dan hasilnya ditunjukkan pada gambar 4.25 (b) dan (4) (aye = 10 (6) Resulting image 7 (o=30 (@) Resulting image Figure 4.25: Applying a Gaussian low pass filter in the frequency domain Kita bisa menerapkan high pass filter Gaussian dengan mudah; kita membuat high pass filter dengan mengurangkan low pass filter dari 1. > chizct wht; ch2=ci .h2; cnii=itre2(cnt); chit=itet2(cht); chidmifft2(ch2); fftshou(chi1,’abs’) figure, fftshow(chi2,’abs’) dan gambar yang ditunjukkan pada Gambar 4.26. Seperti filter yang ideal dan Butterworth, pass filter yang lebih luas tinggi , lebih dari transformasi kita mengurangi, dan kurang dari gambar asli akan muncul dalam hasil. 98 (a) Using « b) Using Figure 4.26: Applying a Gaussian high pass filter in the frequency domain 99

Вам также может понравиться