Citra sebagai Fungsi (Part 2)

Shafwan Aminudin M.
5 min readMar 29, 2020

--

Belajar #2 Computer Vision

Image from StudioBinder

Hello again!

Ayo, kita lanjutkan materi Citra sebagai Fungsi yang sebelumnya telah dibahas pada Part 1. Coba kita review bahasan sebelumya:

Citra dapat diartikan sebagai fungsi dari x dan y.
Dapat pula diartikan sebagai array 2 dimensi yang berisi nilai rentang suatu minimum hingga suatu maksimum.

Kita telah sepakat bahwa citra merupakan sebuah fungsi. Pada fungsi f(x, y), kita memberikan nilai intensitas cahaya pada posisi (x, y).

Pada prakteknya, kita mendefinisikan citra sebagai sebuah persegi dengan rentang yang terbatas (finite range):

Fungsi f memiliki nilai x dengan rentang dari a hingga b.
Kemudian, nilai y dengan rentang c hingga d.
Menghasilkan nilai intensitas dari suatu minimum hingga suatu maksimum.

Siapa di antara kalian yang meyakini bahwa nilai intensitas citra berkisar dari 0 hingga 255?

Well, sebetulnya rentang 0 hingga 1 lebih masuk akal. 0 berarti hitam, 1 berarti putih. Lalu, dari mana angka 255 muncul? Sebagian dari kalian mungkin sudah menjawabnya dengan lantang. Yap! Komputer menyimpan rentang 0 hingga 1 pada citra dalam ukuran 1 byte yang artinya memiliki 8 bit (1 byte = 8 bit). Ada yang belum paham tentang hal ini?

( Bagi yang belum paham, mungkin pelajari dulu tentang representasi informasi pada komputer. )

Jadi, singkatnya karena disimpan pada 1 byte, maka nilai terkecil adalah 0, sedangkan nilai maksimal ( 1 ) adalah 255. Tidak ada yang spesial pada angka 255. Oya, spoiler sedikit. Di bahasan kedepan kita akan menggunakan juga angka negatif pada citra.

Yang perlu kalian pahami dan ingat adalah kita akan mengisi fungsi kita dengan nilai intensitas cahaya dari suatu minimum ke suatu maksimum. Suatu minimum akan mewakili warna terhitam dan suatu maksimum akan mewakili warna terputih.

Kita pelajari contoh Gambar A berikut agar lebih paham.

Gambar A. Dwayne Johnson dengan sedikit perubahan ( Image from FansShare )

Menyesuaikan citra Gambar A, kita dapat menuliskan fungsi sebagai berikut:
f : [0, 150] x [0, 200] -> [0, 10]

Citra Berwarna sebagai Fungsi

Citra hitam-putih dengan citra yang berwarna memiliki kemiripan, hanya saja kita menggunakan 3 kanal atau channel pada citra berwarna. Perhatikan fungsi f pada Gambar A.

Gambar B. Fungsi citra berwarna

Fungsi f bernilai sebuah vektor yang berisi fungsi r, g dan b (red, green and blue). Kita juga bisa mendefinisikannya dengan fungsi berikut:
f : [a, b] x [c, d] -> [min, max] x [min, max] x [min, max]

Mudah kan memahami citra berwarna? Intinya memiliki tiga kanal: r, g dan b.

Image Value

Kita perdalam lagi pemahaman tentang seperti apa nilai pada suatu citra. Perhatikan Gambar C.

Gambar C. Citra berukuran 5x5

Kita bisa merepresentasikan Gambar C sebagai citra berukuran 5x5. Kita akan menggunakan istilah baris dan kolom dibandingkan dengan menggunakan x dan y. Baris merupakan daerah horizontal (kanan-kiri), sedangkan kolom merupakan daerah vertikal (atas-bawah). Kita akan menggunakan notasi fungsi image(baris, kolom) untuk menentukan titik atau bagian tertentu dari citra. Baris ke-1, kolom ke-2 pada citra akan direpresentasikan dengan image(1, 2). Jika digunakan image(:, 1) artinya citra pada semua baris ( perhatikan penggunaan titik dua berarti semua ), kolom ke-1.

Jika, kita perhatikan image(5, 1) memiliki nilai intensitas cahaya paling tinggi, sehingga citra pada titik tersebut memiliki warna putih atau mendekati putih, sedangkan image(: , 5) memiliki nilai terendah sehingga memiliki warna hitam atau mendekati hitam.

Bagaimana jika pada citra warna?

Gambar D. Representasi kanal citra berwarna

Gambar D merupakan citra warna, memiliki kanal r, g dan b (dari kiri ke kanan). Nilai intensitas yang digunakan hanya ilustrasi saja, pada kenyataannya mungkin tidak seperti itu. Kita dapat menggunakan fungsi image(baris, kolom, kanal). Nilai kanal yang digunakan 1=r, 2=g dan 3=b. Contoh mengakses seluruh nilai citra kanal g: image(:, :, 2).

The Image Processing

Ketika kita sudah memahami bahwa citra merupakan suatu fungsi, artinya kita bisa melakukan operasi seperti tambah, kurang, kali dan bagi. Kita akan mencoba melakukan operasi antara dua citra dan kemudian kita akan lihat hasil citra yang diperoleh seperti apa ( Ya, ini termasuk image processing. Memberi input citra, kemudian dihasilkan citra baru )

Gambar E. Pengurangan dua citra

Mari lihat Gambar E yang terdiri dari dua citra yang berbeda dengan rentang nilai 0 hingga 255. Bagaimana operasi dilakukan? Syarat agar operasi dapat dilakukan adalah ukuran citra harus sama. Kedua citra di Gambar E berukuran sama, yaitu 5x5. Kemudian, kita mengoperasikan titik yang sama dari kedua citra, artinya baris ke-1, kolom ke-1 citra pertama hanya dioperasikan dengan baris ke-1, kolom ke-1 pula pada citra kedua. Pun dengan kanal, kanal 1 hanya dioperasikan dengan kanal 1 pula. Hasil pengurangan citra akan menghasilkan citra seperti pada Gambar F.

Gambar F. Hasil pengurangan citra pada Gambar E yang SALAH

Citra Gambar F merupakan hasil yang salah. Kenapa? Karena rentang yang nilai hanya dari 0 hingga 255. Setiap nilai hasil pengurangan yang kurang dari 0 akan menjadi 0 dan setiap nilai hasil pengurangan yang lebih besar dari 255 akan menjadi 255. Maka, seharusnya citra yang dihasilkan seperti pada Gambar G.

Gambar G. Hasil pengurangan citra pada Gambar E yang tepat

Yap, all zero atau citra yang berwarna hitam.
Lalu, bagaimana jika operasi pada Gambar E adalah operasi tambah? Citra seperti apa yang dihasilkan?
Jika kalian benar dalam menjumlahkannya, maka seharusnya terdapat banyak sekali titik yang bernilai 255.

Keep #WorkFromHome #DiRumahAja 🏠!
See you on the next post!
Cheers!

--

--