Anggri Yulio P
Web Developer, sekarang mulai jatuh hati pada Computer Vision.
October 1, 2018 6:40 am

Pengolahan Citra: Menemukan Perbedaan Dua Gambar dengan OpenCV

Sudah setahun lebih sejak saya menulis artikel tentang Operasi Morfologi pada Pengolahan Citra, sekarang saya mencoba menulis kembali tentang pengolahan citra. Ide awal nya sederhana, beberapa waktu lalu saya menemukan teka-teki di Instagram dimana kita diharuskan mencari perbedaan antara dua buah gambar.

Nah apesnya kedua gambar tersebut jika dilihat sepintas cukup sulit untuk menemukan perbedaannya, coba perhatikan kedua gambar dibawah.

Gambar Pertama

Lalu bandingkan dengan gambar dibawah:

Gambar Kedua

Gambar Kedua

Ada tiga perbedaan antara kedua gambar tersebut. Oke jika kalian menemukan perbedaannya tak usah lanjutkan membaca artikel ini 😀 Jika tidak, mari kita selesaikan masalah ini.


Ditulisan ini saya juga akan sedikit membahas tentang Structural Similarity Index (SSIM)Structural Similarity Index (SSIM) adalah sebuah metode yang biasa digunakan untuk mengukur kualitas sebuah gambar, atau mengukur penurunan kualitas sebuah gambar (degradasi) yang bisa diakibatkan oleh kompresi data atau kehilangan data pada saat transmisi. Pada beberapa kasus, SSIM juga bisa digunakan untuk membandingkan dua gambar, tentunya juga berlaku untuk kasus yang telah saya sampaikan diatas.

Disini saya menggunakan Python versi 3.6 yang telah ter-install library OpenCV dan library scikit-image yang nantinya digunakan untuk menghitung Structural Similarity Index (SSIM) pada kedua gambar, serta library imutils yang digunakan untuk pemrosesan gambar.

Kabar baiknya semua library tersebut bisa kita install dengan mudah menggunakan pip :

 

Secara garis besar, langkah-langkah dalam menentukan perbedaan kedua gambar tersebut adalah :

  • Membaca gambar dalam bentuk grayscale
  • Menghitung Structural Similarity Index (SSIM) kedua gambar dengan library scikit-image
  • Menentukan ambang batas (threshold) perbedaan gambar
  • Menandai perbedaan gambar (optional)

 

Membaca Gambar

Kode diatas digunakan memanggil library yang akan digunakan diteruskan dengan membaca kedua gambar yang akan diproses dan mengubah gambar tersebut kedalam bentuk grayscale

 

Menghitung Structural Similarity Index (SSIM)

Kode diatas digunakan untuk mengambil nilai dan perbedaan kedua gambar. Fungsi compare_ssim() merupakan fungsi dari library scikit-image yang digunakan untuk membandingkan SSIM kedua gambar tersebut.

 

Menentukan Nilai Threshold

Perlu diperhatikan bahwa sedikit saja perbedaan gambar () sangat akan menentukan nilai akhir dari SSIM. Ditahap ini kedua gambar akan diubah menjadi binary, dilanjutkan dengan menemukan kontur yang menjadi perbedaan kedua gambar tersebut. Silahkan baca artikel saya sebelumnya tentang mengubah gambar menjadi binary image.

Fungsi cv2.findContours() adalah mendapatkan kontur atau struktur dari gambar binary sebelumnya yang disimpan kedalam bentuk list. List ini nantinya akan kita looping untuk menandai titik perbedaan gambar.

Menandai perbedaan gambar

Lakukan perulangan list kontur yang telah kita dapatkan melalui fungsi cv2.findCountours() diatas, kemudian gambarkan sebuah kotak warna merah pada titik yang berbeda tersebut.

Kode diatas melakukan perulangan pada setiap list dan menandai titik yang berbeda dengan fungsi cv2.rectangle(). Sekarang kita tampilkan hasil gambar yang telah ditandai tersebut.

Jalankan skrip tersebut dan lihat hasil akhirnya.

Hasil Akhir Menemukan Perbedaan Dua Gambar dengan OpenCV

Hasil Akhir Menemukan Perbedaan Dua Gambar dengan OpenCV

Cukup gampang ternyata untuk menemukan perbedan dua buah gambar dengan pengolahan citra digital, kalian bisa download source codenya melalui link dibawah.

[Download Source Code]

 

%d bloggers like this: