Back

Image Processing Menggunakan OpenCV

April 2, 2023

Kita akan belajar bagaimana caranya memproses sebuah gambar dengan menggunakan beberapa library. Untuk memudahkan proses belajar dan iterasi, silahkan gunakan Jupyter Notebook atau Google Colab yaa. Kemudian import librarynya seperti yang ada di bawah ini.


test.jpg

Jadi kita akan menggunakan gambar burung diatas ini sebagai contoh untuk memahami bagaimana sebuah gambar diproses.


Kita akan baca gambar diatas, pastikan sudah melakukan import library yang sudah dibutuhkan dan simpan gambar diatas di root directory kalian.

Ketika dijalankan, pasti teman-teman akan menemukan kumpulan array. Betul, jadi gambar tadi akan dibaca berdasarkan channel warnanya.

RGB Channel

Semua gambar umumnya memiliki 3 channel warna yang kita sebut RGB. Contohya pada gambar burung diatas artinya dia memiliki lebar 10px, tinggi 5px, dan kedalaman 3 channel warna.

Cara mencek-nya seperti ini:

(1200, 1600, 3)

3 channel warna ini bisa memiliki valuenya masing-masing. Skalanya dari 0 - 255. Value inilah yang akhirnya akan menghasilkan warna pada gambar.


Contohnya channel warna Red 240, Green 60, Blue 234 pasti akan menghasilkan warna pink. Tidak percaya? Silahkan cek di RGB Calculator


Namun ada yang sedikit berbeda dengan OpenCV. Jika umumnya kita sering mendengar istilah RGB, OpenCV justru membaca sebuah gambar dengan channel BGR (Blue Green Red). Sehingga nanti warna dari output gambarnya akan berbeda.

Baca gambar dengan OpenCV

Cek shape gambar

Tampilkan gambar yang dibaca dengan OpenCV


Tada!! Harusnya kamu sudah melihat gambar burung tadi dengan channel warna yang dimulai dengan BGR.

Gambar BGR

Jujur saya belum tahu alasan kenapa OpenCV membaca warna dari BGR bukan RGB.

Namun di beberapa kasus, kita kadang hanya membutuhkan 1 channel warna saja, atau yang biasa kita sebut Grayscale image. Dalam grayscale juga hanya memiliki value dari skala 0 - 255. Dimana semakin ke tinggi, warnanya akan semakin cerah.

Atau mudahnya, 0 adalah hitam dan 255 adalah putih.

Tujuan dari konversi gambar ke grayscale ini adalah untuk membantu komputer lebih mudah memahami gambar kita. Secara logika memahami 1 hal lebih mudah daripada memahami 3 hal sekaligus.

Grayscale image

Untuk melakukan convert ke grayscale kita akan menggunakan fungsi convert color dari OpenCV, menggunakan image yang tadi sudah kita proses yaa.

Membaca gambar burung dan membaca shapenya. Terdeteksi gambar masih memiliki 3 channel warna.

(1200, 1600, 3)

Convert ke grayscale

(1200, 1600)

Tampilkan gambarnya

Grayscale Image

Viola! Kamu sudah berhasil mengubah sebuah gambar ke dalam bentuk grayscale dengan menggunakan fungsi convert color di OpenCV.

Mari kita lihat pixel per pixel dari pojok kiri gambar yang sudah diconvert ke grayscale ini

# Hasil
array([[63, 59, 54, 50, 52, 57, 58, 56, 55, 54],
          [60, 59, 56, 53, 53, 56, 56, 54, 57, 55],
         [56, 58, 58, 55, 54, 54, 54, 53, 55, 52],
         [52, 56, 58, 56, 53, 53, 55, 55, 54, 52],
         [51, 55, 58, 55, 52, 54, 56, 58, 56, 55],
         [51, 55, 58, 55, 53, 55, 57, 58, 56, 56],
         [52, 56, 59, 58, 56, 56, 56, 54, 55, 54],
         [52, 57, 60, 60, 59, 57, 54, 50, 58, 55],
         [60, 62, 56, 64, 58, 65, 57, 58, 59, 60],
         [58, 59, 57, 60, 58, 61, 57, 57, 60, 60]], dtype=uint8)

Tampilkan gambar dengan Matplotlib

Pixels

Di atas ini adalah pojok kiri gambar atas dengan ukuran 10x10 pixel, dari ukuran gambar aslinya 1200x1600 pixel.

Kemudian akan ada saatnya kita perlu meresize gambar kita, baik itu menjadi lebih kecil atau lebih besar. Kita juga bisa menggunakan fungsi resize yang ada di dalam OpenCV.

(400, 500)

Tampilkan gambar yang sudah dikecilkan

Resize Image

Kita juga bisa memperbesarnya

(1600, 2000)

Tampilkan gambarnya

Resize Image

Tada!!! Kamu sudah berhasil mempelajari image processing sederhana yang nantinya akan berguna ketika masuk mendalami tentang computer vision. Namun masih banyak yang bisa kamu eksplor dalam library OpenCV ini seperti Contour, Edge detection, Median blur, dan lain-lain. Ada juga library lainnya yang bisa kamu gunakan, seperti Glob, Pillow, dan Scikit-image.


Sekian modul tentang image processing ini, sampai jumpa di tulisan berikutnya! 😁

Eric Julianto

Research Analyst at Braincore

β€œHe, who has a why to live for, can bear with almost any how.”