Seri: Python dan Geosains
Hi semua, kali ini kita akan mencoba untuk bermain image processing pada python untuk menghitung porositas pada sayatan tipis batuan. Tanpa banyak menulis panjang mari kita lanjut saja ke prosesnya.
Importing Library
import numpy as np
import matplotlib.pyplot as plt
import cv2
%matplotlib inline
mineral = ‘/content/drive/My Drive/rawdata/quartz2.jpg
Pertama-tama kita import data dan library yang dibutuhkan untuk keperluan menghitung rasio gambar. Library yang terpenting pada proses ini adalah cv2 dikarenakan library ini merupakan library untuk image processing. Library seperti numpy dan matplotlib digunakan untuk keperluan menghitung dan menge-plot gambar.
Processing the data
Langkah berikutnya adalah memasukkan gambar menjadi sebuah variabel pada python. Setelah gambar menjadi sebuah variabel, kita harus menyederhanakan gambar menggunakan kombinasi gaussian blur dan otsu’s thresholding.
#untuk membaca gambar
img = cv2.imread(mineral,0)#Otsu’s thresholding setelah Gaussian filteringblur = cv2.GaussianBlur(img,(5,5),0)ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
Otsu thresholding berfungsi untuk membagi biner sebuah gambar. Langkah berikutnya yaitu menge-plot gambar hasil olahan opencv.
plt.imshow(img)#MENGEPLOT GAMBAR
plt.figure(figsize=(15,5))
images = [blur, 0, th3]
titles = [‘Blur’,’Histogram’,”Otsu’s Thresholding”]
plt.subplot(1,3,1),plt.imshow(images[0],’gray’)
plt.title(titles[0]), plt.xticks([]), plt.yticks([])
plt.subplot(1,3,2),plt.hist(images[0].ravel(),256)
plt.title(titles[1]), plt.xticks([]), plt.yticks([])
plt.subplot(1,3,3),plt.imshow(images[2],’gray’)
plt.title(titles[2]), plt.xticks([]), plt.yticks([])
Dari sini kita dapat melihat, dengan melakukan thresholding, kita dapat memisahkan antara object dan latar suatu gambar, atau dengan kata lain bisa memisahkan mineral dengan porositas.
plt.imshow(th3)
Hasil Otsu Thresholding berhasil memisahkan mineral menjadi warna putih dan porositas menjadi warna hitam. Hasil pemisahan inilah yang selanjutnya akan kita hitung rasionya untuk menghasilkan angka porositas dari sayatan batuan ini.
n_white_pix = np.sum(th3 == 255) #255 dan 0 adalah RGB code
n_black_pix = np.sum(th3 == 0)porositas = n_black_pix/(n_white_pix+n_black_pix)
porositas
Hasil porositas pada sampel sayatan ini adalah 0.28283462374149326
Penutup
Demikianlah hasil tutorial singkat dalam menghitung porositas pada sayatan tipis batuan. Tentunya dengan memperdalam opencv kita bisa meng-scale up penggunaannya dalam membantu geologis mempercepat scaling-up hasil interpretasinya ke lebih banyak data. Akhir kata pastinya tulisan ini akan banyak kekurangannya, semoga bisa bermanfaat.