Mata Digital

Saya ingin mengajak bertualang dengan mata digital, kita akan mencoba seru-seruan dengan kamera hand-phone. Contohnya ini, Tapi akan kita runut satu-satu. Kita deteksi batu yang kecil itu dengan lingkaran merah, kelihatan kan.

Teman-teman pernah makan batu? Saya yakin pernah, tentu tidak sengaja terselip diantara nasi. Rasanya sebal banget-nget. Nah kita akan mencoba mendeteksi batu di dalam beras.

Kalau di cari di youtube Rice How it’s made di 3:15 – 3:30 menggunakan laser scanner untuk memfilter, beras yang berwarna cokelat. Kita gunakan prinsip yang mirip untuk mencari batu, tapi pakai kamera saja. Coba bayangkan kalau berasnya banyak, bisa jereng kan kalau pakai mata.

Tentu namanya seru-seruan ini tidak production ready, dan belum real-time.

Software yang kita gunakan adalah OpenCV, platform Computer Vision gratis dari Intel. Dan programming menggunakan python. Sederhana Setup nya, dan sangat cepat.

Fitur yang kita gunakan adalah Blob Detection. Karena saya masih belajar, saya buatkan saja blob pakai ms-paint, kira-kira begini:

Gambar 1

Kemudian browsing sebentar, copy-paste effortless langsung ke detect:

wah jadi pede nih detect batu pasti bisa, ini gambar aslinya:

small-rock

Gambar 2

Ternyata kontrasnya beda, dan akibat kompresi warna tidak rata, percobaan pertama tidak terdeteksi apa-apa, kemudian semua filter di off kan, ke deteksi banyakk banget, gambar 3 sebelah kiri. Akhirnya ada settingan yang lumayan pas, tp masih banyak false detection, gambar 3 sebelah kanan, titik merah kecil ada beberapa, tidak terlalu kelihatan.

Gambar 3

Wah tampaknya gambarnya harus di haluskan dahulu. Tapi itulah nikmatnya opencv, sudah tersedia semua. Gunakan gaussian filter.

Voila, hasilnya si batu terdeteksi seperti di atas:

Gambar 5

Lumayan lah untuk percobaan beberapa jam. Beberapa yang mejadi catatan saya tentang computer vision:

  • Mata digital apabila dapat dikondisikan, proses deteksi jadi mudah dan efisien. Semisal diatas kita gunakan background warna putih dengan pencahayaan cukup
  • Menggunakan modul opencv, development menjadi cepat, prosesing juga cepat
  • Mata Digital bisa dikembangkan untuk berbagai keperluan sederhana : Menghitung orang, deteksi kebakaran, mencari batu, dll

Dan ini source-code nya sangat sederhana, yang mana 95% nya saya copas dari Internet, supaya teman-teman tidak terintimidasi dengan hasilnya.

# Standard imports
import cv2
import numpy as np;
# Read image
img = cv2.imread("small-rock.jpg", cv2.IMREAD_GRAYSCALE)
im = cv2.GaussianBlur(img,(5,5),0)
# Setup SimpleBlobDetector parameters.
params = cv2.SimpleBlobDetector_Params()
# Change thresholds
params.minThreshold = 0;
params.maxThreshold = 150;
# Filter by Area.
params.filterByArea = False
params.minArea = 1500
# Filter by Circularity
params.filterByCircularity = False
# Filter by Convexity
params.filterByConvexity = False
# Filter by Inertia
params.filterByInertia = False
# Set up the detector with default parameters.
detector = cv2.SimpleBlobDetector_create(params)
# Detect blobs.
keypoints = detector.detect(im)
# Draw detected blobs as red circles.
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures the size of the circle corresponds to the size of blob
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# Show keypoints
cv2.imshow("Keypoints", im_with_keypoints)
cv2.waitKey(0)

Terimakasih sudah mampir, next percobaan kita test pakai realtime capture yaa, kalau sempat.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

%d bloggers like this: