Penerapan watershed

By | November 12, 2021
Print Friendly, PDF & Email
2,579 Views

Metode watershed merupakan salah satu metode dalam segmentasi citra yang membagi citra menjadi region yang berbeda dengan menggambarkan citra sebagai relief topografi. Metode watershed menghasilkan terlalu banyak region yang menyebabkan bagian penting objek terpisah atau disebut oversegmentasi, sehingga perlu dilakukan pengembangan metode. Cara mengurangi oversegmentasi pada metode watershed dapat meliputi watershed dengan memanfaatkan perbedaan gradien untuk menentukan arah dari kemiringan topografi, penambahan marker yang dapat digunakan untuk mensegmentasi sebagian objek yang dipilih, serta dengan menggunakan multiresolusi yang mengurangi oversegmentasi dengan skala ruang.

Watershed biasa digunakan untuk memisahkan objek yang saling berhimpitan, biasanya bisa disiasati menggunakan teknik morfologi seperti erotion, dilation, close, open tapi terkadang teknik tersebut kurang efektif, sehingga perlu menggunakan teknik watershed. Berikut disajikan contoh gambar yang saling berhimpitan terdiri dari 2 objek yang saling berhimpitan.

Morphological Watershed adalah salah satu pendekatan untuk segmentasi. Konsep dari Morphological Watershed adalah menggambarkan sebuah gambar dalam bentuk 3 dimensi. Prinsip dari Morphological Watershed adalah mencari garis watershed ( batas air ) yaitu garis dimana titik-titiknya merupakan titik tertinggi dari penggambaran sebuah gambar ke dalam bentuk 3 dimensi yaitu posisi x dan y.

Posisi x dan y merupakan bidang dasar dan tingkat warna pixel, yang dalam hal ini adalah gray level merupakan ketinggian dengan anggapan nilai yang makin mendekati warna putih mempunyai ketinggian yang semakin tinggi. Dengan anggapan bentuk topografi tersebut, maka didapat tiga macam titik yaitu :

  • titik yang merupakan minimum regional
  • titik yang merupakan tempat dimana jika setetes air dijatuhkan, maka air tersebut akan jatuh hingga ke sebuah posisi minimum tertentu
  • titik yang merupakan tempat dimana jika air dijatuhkan, maka air tersebut mempunyai kemungkinan untuk jatuh ke salah satu posisi minimum (tidak pasti jatuh ke sebuah titik minimum, tetapi dapat jatuh ke titik minimum tertentu atau titik minimum yang lain). Untuk sebuah minimum regional tertentu, sekumpulan titik yang memenuhi kondisi (b) disebut sebagai catchment basin, sedangkan sekumpulan titik yang memenuhi kondisi (c) disebut sebagai garis Watershed (Gonzalez, 2002; Pratt, 2007).

Ide dasar untuk cara kerja segmentasi ini adalah diasumsikan terdapat sebuah lubang yang dibuat pada minimum regional dan kemudian seluruh topography dialiri air yang berasal dari lubang tersebut dengan kecepatan konstan. Ketika air yang naik dari dua catchment basin hendak bergabung, maka dibangun sebuah dam untuk mencegah penggabungan tersebut. Aliran air akan mencapai tingkat yang diinginkan dan berhenti mengalir ketika hanya bagian atas dari dam yang terlihat. Tepi dam yang terlihat inilah yang disebut dengan garis Watershed. Dan garis Watershed inilah yang merupakan hasil dari segmentasi, dengan anggapan bahwa garis Watershed tersebut merupakan tepi dari obyek yang hendak disegmentasi.

Ide dasar untuk cara kerja segmentasi ini adalah diasumsikan terdapat sebuah lubang yang dibuat pada minimum regional dan kemudian seluruh topography dialiri air yang berasal dari lubang tersebut dengan kecepatan konstan. Ketika air yang naik dari dua catchment basin hendak bergabung, maka dibangun sebuah dam untuk mencegah penggabungan tersebut. Aliran air akan mencapai tingkat yang diinginkan dan berhenti mengalir ketika hanya bagian atas dari dam yang terlihat. Tepi dam yang terlihat inilah yang disebut dengan garis Watershed. Dan garis Watershed inilah yang merupakan hasil dari segmentasi, dengan anggapan bahwa garis Watershed tersebut merupakan tepi dari obyek yang hendak disegmentasi

Berikut contoh Penerapan watershed menggunakan  OpenCV

eucleid distance transform, untuk mendapatkan ‘puncak’

Kita ambil bagian titik tertinggi nya

Ambil bagian titik rendah nya juga

Terapkan operasi labelling, terdapat 3 objek

Terapkan watershed, sehingga terpisah antara objek yang saling berhimpit

Contoh real dalam penerapan watershed yaitu segmentasi objek seperti berikut
http://www.softscients.web.id/2019/02/python-watershed-segmentation.html

Berikut kode yang menggunakan numpy, opencv, dan matplotlib

# %% # Tahap cara kerja watershed
#' 14/06/2019 #'mulkan.ms@gmail.com

#'pustaka yang diperlukan

import cv2
import numpy as np
from matplotlib import pyplot as plt
from scipy import ndimage

from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter

cv_img = cv2.imread('2 objek.png',0)
sure_bg = cv_img.copy()
#'Kita mempunyai gambar berikut
#'terdiri dari 2 objek yang saling berhimpitan
plt.figure(),plt.imshow(sure_bg,cmap='gray'),plt.title('image original')
plt.show()

#'terapkan distanceTransform
dist_transform = cv2.distanceTransform(sure_bg,cv2.DIST_L2,5)
plt.figure(),plt.imshow(dist_transform,cmap='gray'),plt.title('Eucleid Distance Transform')
plt.show()


#'ambil bagian titik tertinggi
ret, titik_puncak = cv2.threshold(dist_transform,0.75*dist_transform.max(),255,0)
plt.figure(),plt.imshow(titik_puncak,cmap='gray'),plt.title('titik_puncak')
plt.show()

#'ambil bagian bagian luar nya
threshold = titik_puncak.copy()
titik_puncak = np.uint8(titik_puncak)
titik_rendah = cv2.subtract(sure_bg,titik_puncak)
plt.figure(),plt.imshow(titik_rendah,cmap='gray'),plt.title('titik_rendah')
plt.show()

#'terapkan labelling
ret, markers = cv2.connectedComponents(titik_puncak) 
markers = markers+1 
markers[titik_rendah==255] = 0
plt.figure(),plt.imshow(markers,cmap='Spectral'),plt.title('markers '+str(np.max(markers)))


#'input image watershed harus berupa RBG
#'maka diubah terlebih dahulu
backtorgb = cv2.cvtColor(cv_img,cv2.COLOR_GRAY2RGB)


#'terapkan watershed
markers = cv2.watershed(backtorgb,markers)
plt.figure()
plt.imshow(np.uint8(markers),cmap='gray'),plt.title('Batas Watershed')
plt.show()

[3] Gonzalez, Rafael C., Woods, R.E., 2002. Digital Image Processing. New Jersey : Prentice-Hall, Inc., Upper Saddle River.

SEGMENTASI CITRA DIGITAL DENGAN MENGGUNAKAN ALGORITMA WATERSHED DAN LOWPASS FILTER SEBAGAI PROSES AWAL.  2013. Pramuda Akariusta Cahyan, Muhammad Aswin, Ir., MT., Ali Mustofa, ST., MT. Jurusan Teknik Elektro, Universitas Brawijaya Email: akariusta@gmail.com

Leave a Reply