Post on 22-Jan-2023
PENGOLAHAN TITIK
2.1 Pendahuluan
Setiap operasi pengolahan citra mengubah nilai-nilai abu-abu dari piksel. Namun,
operasi pengolahan citra dapat dibagi menjadi tiga kelas berdasarkan informasi yang
diperlukan untuk melakukan transformasi. Dari yang paling kompleks sampai dengan yang
paling sederhana, mereka adalah:
1. Transformasi. Sebuah transformasi 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. Kami dapat mempertimbangkan bahwa dalam
menggunakan transform, seluruh gambar diproses sebagai blok tunggal yang besar.
Hal ini dapat diilustrasikan dengan diagram yang ditunjukkan pada Gambar 2.1.
2. Pengolahan Neighbourhood. Untuk mengubah tingkat keabuan dari piksel yang
diberikan kita hanya perlu tahu nilai dari tingkat abu-abu di lingkungan kecil piksel
sekitar piksel yang diberikan.
3. Pengolahan Point. Nilai abu-abu Sebuah pixel diubah tanpa pengetahuan sekelilingnya.
Meskipun pengolahan point itu sederhana, mereka berisi beberapa yang paling kuat dan
luas digunakan dari semua operasi pengolahan citra. Mereka terutama berguna dalam
gambar pra-pengolahan, dimana gambar dituntut untuk dimodifikasi sebelum pekerjaan
utama dicoba.
2.2 Operasi Aritmatik
Operasi ini berperan dengan menggunakan sebuah fungsi sederhana
𝑦 = 𝑓 𝑥
Untuk setiap nilai abu-abu dalam gambar. f(x) ini merupakan fungsi yang memetakan
rentang 0...255 pada dirinya sendiri. Fungsi sederhana termasuk penambahan atau
pengurangan sebuah nilai konstant untuk setiap piksel:
𝑦 = 𝑥 ± 𝐶
Atau perkalian tiap piksel dengan sebuah konstanta:
𝑦 = 𝐶𝑥
Dalam setiap kasus mungkin kita harus sedikit mengubah outputnya untuk memastikan
bahwa hasilnya adalah bilangan bulat dalam rentang 0-255. Kita dapat melakukan ini
dengan pembulatan pertama hasilnya (jika diperlukan) untk mendapatkan bilangan bulat,
dan kemudian mengumpulkan nilai-nilainya dengan menetapkan:
Kita dapat memperoleh pemahaman tentang bagaimana operasi ini mempengaruhi gambar
dengan memplot y = f(x). Gambar 2.2 memperlihatkan hasil dari penambahan atau
pengurangan 128 dari setiap piksel dalam gambar. Perhatikan bahwa
Ketika kita menambahkan 128, semua nilai abu-abu dari 127 atau lebih akan terplot ke
255. Dan ketika kita mengurangkan 128, semua nilai abu-abu dari 128 atau kurang akan
terplot ke 0. Dengan melihat pada grafik ini, kita dapat meneliti bahwa secara umum
penambahan konstanta akan mempercerah sebuah gambar, dan pengurangan sebuah
konstanta akan mempergelapnya.
Kita dapat mengetesnya pada gambar “blocks” blocks.tif., yang telah kita liha
dalam gambar 1.4. kita mulai dengan membaca gambarnya dalam:
Point dari perintah kedua adalah untuk menemukan tipe dat numerik b: itu adalah uint8.
Tipe data unit8 digunakan hanya untuk data penyimpanan; kita tidak dapat melakukan
operasi aritmatik. Jika kita mencoba melakukannya, kita hanya akan mendapat sebuah
pesan error:
Kita dapat melakukan ini dalam dua cara. Pertama kita dapat mengganti b kedalam
sebuah matrik tipe ganda: menambah 128 dan mengubah kembali ke uint8 untuk tampilan:
Kedua, dan merupakan cara yang lebih elegan, yaitu menggunakan fungsi Matlab imadd
yang didesain secara tepat untuk melakukan ini:
Pengurangan serupa, kita dapat mengubah matriks keluar masuk dan keluar dari ganda,
atau menggunakan fungsi imsubtract:
Dan sekarang kita dapat melihat mereka:
Dan hasilnya terlihat pda Gambar 2.3.
Kami juga dapat melakukan pencerahan 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 gambar 2.4. Semua
gambar-gambar ini dapat dilihat dengan imshow, mereka ditunjukkan dalam Gambar 2.5.
Bandingkan hasil gelap b2 dan b3. Perhatikan bahwa b3, meskipun lebih gelap daripada
yang asli, masih tetap lebih jelas, sedangkan banyak informasi telah hilang oleh proses
pengurangan, seperti dapat terlihat dalam gambar b2. Hal ini karena dalam b2 gambar
semua piksel dengan nilai-nilai abu-abu 128 atau kurang telah menjadi
nol.
Sebuah kerugian serupa informasi telah terjadi dalam gambar b1 dan b4. Catatan
khususnya tepi balok berwarna terang di bagian tengah bawah, di kedua b1 dan b4 tepi
kanan telah menghilang. Namun, tepi cukup terlihat dalam b5 gambar.
Complements
Komplemen dari gambar grayscale adalah fotografi negatif. Jika matriks gambar m
adalah tipe ganda dan sehingga nilai-nilai abu-abu berada di kisaran 0,0 sampai 1,0, Kita
bisa memperoleh negatif dengan perintah
Jika gambarnya biner, kita dapat menggunakan:
Jika gambarnya adalah jenis uint8, pendekatan yang terbaik adalah fungsi
imcomplement. Gambar 2.6 menunjukkan fungsi pelengkap y=255-x , dan hasil dari
perintah itu
Efek khusus menarik dapat diperoleh dengan melengkapi hanya bagian 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, dan meninggalkan piksel lainnya tidak tersentuh.
Gambar 2.7 menunjukkan fungsi tersebut. Efek dari fungsi ini disebut solarisasi.
2.3 Histogram
Mengingat grayscale, histogram terdiri dari histogram tingkat abu-abu, yaitu, grafik
yang menunjukkan jumlah kali setiap tingkat keabuan terjadi dalam gambar. Kita dapat
menyimpulkan banyak tentang penampilan gambar dari histogram, seperti contoh berikut
menunjukkan:
� Dalam gambar gelap, tingkat abu-abu (dan karenanya histogram) akan bergerombol di
ujung bawah:
� Dalam gambar seragam terang, tingkat abu-abu akan berkerumun di ujung atas:
� Dalam gambar dengan kontras, tingkat abu-abu akan baik tersebar di banyak kisaran:
Kita bisa melihat histogram dari gambar di Matlab dengan menggunakan fungsi imhist:
(Perintah sumbu ketat menjamin sumbu histogram secara otomatis diskala untuk
menyesuaikan semua nilai dalam). Hasilnya ditunjukkan dalam gambar 2.8. Karena nilai
abu-abu semua berkumpul bersama-sama dipusat histogram, kita akan mengharapkan
gambar yang kontrasnya akan buruk, karena memang itu. Mengingat citradengan kontras
buruk, kami ingin meningkatkan kontras, dengan menggelar histogramnya. Ada dua cara
untuk melakukan hal ini.
2.3.1 Histogram peregangan (stretching Kontras)
Misalkan kita memiliki sebuah gambar dengan histogram ditunjukkan dalam Gambar 2.9,
terkait dengan tabel dari nomor n nilai-nilai abu-abu:
(dengan n-360, Seperti sebelumnya.) Kita dapat meregangkan tingkat abu-abu di tengah
kisaran keluar dengan menerapkan fungsi linier piecewise ditunjukkan di sebelah kanan
dalam gambar 2.9. Fungsi ini memiliki? Dll e peregangan tingkat abu-abu5-9 ke tingkat
abu-abu 2-14 menurut persamaan:
Dimana i adalah tingkat keabuan asli danj hasilnya setelah transformasi. Tingkat abu-
abu ini di luar range baik ditinggalkan sendirian (seperti dalam kasus ini) atau diubah
sesuai dengan fungsi linear di ujung grafik di atas. Ini menghasilkan:
Dan histogram yang sesuai:
yang menunjukkan gambar dengan kontras yang lebih besar daripada yang asli.
Penggunaan imadjust
Untuk melakukan histogram peregangan di Matlab fungsi imadjust dapat digunakan.
Dalam inkarnasi paling sederhana, perintahnya
bentangkan gambar sesuai dengan fungsi yang ditampilkan dalam Gambar 2.10. Karena
imadjust dirancang untuk
bekerja sama dengan baik pada gambar tipe ganda, uint8 atau uint16 nilai-nilai a, b, c,
dan d harus diantara 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 [c, d] yang dipilih untuk menjadi [0,1], singkatan [] dapat digunakan. Jadi,
misalnya, perintah
Tidak melakukan apa-apa, dan perintahnya
Invers nilai-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 adalah sama
dengan 1, yang default, 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
lebih besar dari satu menghasilkan Gambar yang cekung ke atas, seperti yang
ditunjukkan di sebelah kanan dalam Gamnbar 2.11.
Fungsi yang digunakan adalah variasi kecil pada garis standar antara dua titik:
Penggunaan nilai gamma bisa saja cukup untuk secara substansial mengubah tampilan
gambar. Sebagai contoh:
menghasilkan hasil yang ditunjukkan dalam Gambar 2.12.
Kita dapat melihat fungsi peregangan imadjust dengan plot fungsi. Sebagai contoh,
menghasilkan plot 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 plot
mereka, menggunakan titik untuk melakukannya.
Sebuah fungsi piecewise linear peregangan
Kita dapat dengan mudah menulis fungsi kita sendiri untuk melakukan piecewise linear
peregangan seperti yang ditunjukkan dalam Gambar2.14. Untuk melakukan ini, kita akan
menggunakan fungsi find, untuk menemukan nilai piksel dalam gambar antara ai dan ai+1.
Karena garis antara koordinat (ai,bj) dan (ai+1, bi+1) memiliki persamaan
pusat fungsi kita akan menjadi garis
dimana im adalah gambar input dan out adalah gambar output. Sebuah prosedur
sederhana yang mengambil sebagai masukan gambar tipe uint8 atau ganda ditampilkan
dalam Gambar 2.15. Sebagai contoh penggunaan fungsi ini:
hasil gambarnya terlihat pada Gambar2.16.
2.3.2 pemerataan Histogram
Masalah dengan salah satu metode di atas histogram peregangan adalah bahwa mereka
membutuhkan input pengguna. Kadang-kadang pendekatan yang lebih baik disediakan
oleh pemerataan histogram, yang merupakan sepenuhnya prosedur otomatis. Idenya
adalah untuk mengubah histogram satu yang seragam, yaitu bahwa setiap bar di
histogram adalah ketinggian yang sama, atau dengan kata lain bahwa setiap tingkat
keabuan dalam gambar terjadi dengan frekuensi saem. Dalam praktek ini umumnya tidak
mungkin, meskipun kita akan melihat hasil dari pemerataan histogram memberikan hasil
yang sangat baik. Misalkan image memiliki L ditingkat 0,1,2,...L-1 abu-abu yang berbeda,
Dan tingkat i abu-abu terjadi ni kali dalam gambar. Misalkan juga bahwa jumlah piksel
dalam gambar n (sehingga n0+ n1 + n2 +....+ nL-1=n. Untuk mengubah tingkat abu-abu
untuk mendapatkan gambar yang lebih baik kontras, kita mengubah tingkat keabuan i ke
contoh
Misalkan greyscale gambar 4-bit memiliki histogram ditunjukkan dalam Gambar 2.17.
berhubungan dengan tabel angka ni nilai-nilai abu-abu:
(Dengan n=360.) Kami harapkan gambar ini menjadi cerah secara seragam, dengan
beberapa titik gelap di atasnya. Untuk menyamakan histogram ini, kita membentuk total
running dari ni, Dan kalikan masing-masing sebesar 15/360=1/24:
Kami sekarang memiliki transformasi nilai berikut abu-abu, yang diperoleh dengan
membaca kolom pertama dan terakhir kolom dalam tabel di atas:
dan histogram dari nilai j ditampilkan dalam Gambar 2.18. Ini jauh lebih menyebar
dibandingkan histogram asli, sehingga gambar yang dihasilkan harus menunjukkan
kontras yang lebih besar. Untuk menerapkan pemerataan histogram di Matlab, gunakan
fungsi histeq, misalnya:
Gunakanlah pemerataan histogram ke gambar cemberut, dan menghasilkan yang
dihasilkan histogram. Ini Hasilnya ditunjukkan dalam Gambar 2.19. Perhatikan
penyebaran jauh lebih besar dari histogram. Hal ini sesuai
dengan peningkatan yang lebih besar dari kontras pada gambar.
Kami memberikan satu contoh lagi, bahwa gambar yang sangat gelap. Kita bisa
mendapatkan gambar gelap dengan mengambil gambar dan menggunakan imdivide.
Karena matriks e hanya berisi nilai-nilai rendah akan muncul sangat gelap ketika
ditampilkan. Kita dapat menampilkan matriks ini dan histogram dengan perintah biasa:
dan hasilnya ditunjukkan dalam Gambar 2.20. Seperti yang Anda lihat, gambar yang
sangat gelap memiliki histogram yang sesuai berat bergerombol di ujung bawah
skala.
Tapi kita dapat menerapkan pemerataan histogram untuk gambar ini, dan menampilkan
hasil:
dan hasilnya terlihat pada Gambar2.21.
Mengapa ia bekerja
Pertimbangkan histogram dalam Gambar 2.17. Untuk menerapkan histogram peregangan,
kita perlu untuk merentangkan nilai-nilai antara tingkat abu-abu 9 dan 13. Dengan
demikian, kita perlu menerapkan fungsi piecewise serupa dengan yang ditunjukkan dalam
Gambar 2.9. Mari kita mempertimbangkan histogram kumulatif, yang ditampilkan dalam
Gambar2.22. Garis putus-putus hanya bergabung atas bar histogram. Namun, dapat
diartikan sebagai suatu histogram yang tepat
peregangan fungsi. Untuk melakukan ini, kita perlu skala nilai-nilai y sehingga mereka
antara 0 dan 15 bukan 0 dan 360. Tapi ini justru metode yang dijelaskan dalam bagian
2.3.2.
Sebagaimana telah kita lihat, tidak ada contoh histogram, setelah pemerataan, seragam.
Ini adalah hasil sifat diskrit gambar. Jika kita memperlakukan gambar sebagai fungsi
kontinu f(x,y), dan histogram sebagai daerah antara kontur yang berbeda (lihat misalnya
Castleman [1], maka kita dapat mengobati histogram sebagai fungsi kepadatan