LAPORAN WORKSHOP KOMPUTER VISI
MINI PROJECT
3 D4 TEKNIK KOMPUTER B
KELOMPOK 4
1. M. Johan Arifin
2. Lusiana Diyan Ningrum
3. Firja Hanif Maulana
2210181050
2210181051
2210181056
PRODI SARJANA TERAPAN TEKNIK KOMPUTER
DEPARTEMEN TEKNIK INFORMATIKA DAN KOMPUTER
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA
WORKSHOP KOMPUTER VISI
DETEKSI DAN SEGMENTASI OBJECT
Dasar Teori
Computer Vision adalah suatu proses transformasi atau perubahan dari data yang
berasal dari kamera video maupun foto/gambar kedalam sebuah hasil keputusan ataupun
sebuah presentasi yang baru, dimana hasil dari kegiatan transformasi tersebut memiliki
kepentingan untuk mencapai suatu tujuan. Data yang dimasukan kedalam kegiatan
transformasi tersebut memungkinkan untuk memiliki beberapa informasi yang ter kontekstual
seperti halnya sebuah foto/gambar yang didalamnya terdapat berbagai objek. Dengan
demikian akan didapatkan keputusan-keputusan yang akan diambil pada gambar, misalnya
berupa “adakah telapak tangan seseorang pada gambar tersebut?” atau “siapa sajakah orang
yang terdapat pada foto tersebut?”. Adapun perubahan kedalam presentasi yang baru seperti
perubahan gambar menjadi grayscale atau juga pemotongan objek pada gambar.
Grayscaling pada citra merupakan tahap pengkonversian citra gambar warna yang
terdiri dari tiga parameter warna yaitu merah, hijau, dan biru (RGB). Jika citra gambar RGB
diproses ke dalam sistem pengenalan wajah, maka akan lebih sulit untuk diproses karena
mengingat citra gambar RGB memiliki tiga parameter warna, oleh karena itu diperlukan
suatu penyempitan parameter kedalam warna abu sehingga menjadi lebih mudah dalam hal
penyamaan parameter yang akan digunakan pada implementasi sistem.
Segmentasi gambar merupakan salah satu aplikasi mendasar di bidang computer
vision. Secara umum, segmentasi gambar adalah proses “memisahkan” sebuah gambar utuh
menjadi beberapa grup-grup pixel yang kemudian dapat dikategorikan. Atau dengan kata
lain, proses untuk memahami peran dari tiap-tiap pixel dalam sebuah gambar.
Sebuah lingkaran direpresentasikan secara matematis dengan rumus:
Dimana
adalah pusat dari lingkaran,dan r adalah radius dari lingkaran.Dari
rumus maka kita bisa melihat kita mempunyai 3 parameter(xcenter,ycenter,r) sehingga kita
membutuhkan 3 parameter atau 3D accumulator untuk hough transform,dimana hal tersebut
kurang efektif.Jadi pada OpenCV digunakanlah metode yang lebih efektif bernama Hough
Gradient Method yang menggunakan informasi gradient dari edges pada gambar.fungsi ini
pada OpenCV dapat dipanggil dengan menggunakan instruksi cv.HoughCircles (image,
circles, method, dp, minDist, param1, param2 , minRadius , maxRadius )
Nama Parameter
Definisi
Image
Gambar input yang sudah dikonversi
grayscale
Circles
Output berupa vector dari lingkaran yang
ditemukan
method
Metode detection (Untuk sekarang yang
diimplementasikan adalah
HOUGH_GRADIENT)
dp
Rasio akumulator terhadap resolusi
gambar(jika dp=1 maka resolusi
dp=gambar)
minDist
Jarak minimal dari pixel ke pixel yang diacu
untuk mendeteksi pusat dari lingkaran
Param1
Nilai threshold dari canny edge detector
Param2
Nilai threshold akumulator untuk pusat
lingkaran
minRadius
Nilai minimum radius lingkaran
maxRadius
Nilai maximum radius lingkaran
Secara praktikal maka Hough Gradient Method bekerja seperti berikut
Gambar input akan di aplikasikan canny edge detector dengan threshold yang telah
ditentukan maka dengan mempertimbangkan parameter yang diinputkan seperti
radius,mindist dan param2 maka akumulator akan dimulai pada kuadran tertentu pada edge
yang telah dideteksi kemudian akan mengakumulasikan lingkaran hasil dari
lingkaran-lingkaran yang digambar melalui edge dimana dititik dimana banyak lingkaran
berpotongan maka disitulah yang nilainya paling besar dan bisa dideteksi sebagai center
sebuah lingkaran.Untuk penggambarannya dapat dilihat seperti berikut:
DESKRIPSI IDE
Pada mini project ini kami memiliki ide gagasan untuk membuat program yang dapat
menangkap gambar dari livecam yang kemudian pada gambar tersebut dilakukan segmentasi
warna menggunakan hsv terlebih dahulu sehingga dapat difokuskan pada benda circularnya
saja.Kemudian dari hasil segmentasi tersebut maka gambar selanjutnya akan dideteksi
edgenya menggunakan Hough Gradient Method yang merupakan penurunan dari Hough
Transform dan Canny Edge Detector.
Peralatan & Bahan
1. Visual Studio 2017+
2. OpenCV3.1+
Source Code
#include
#include
#include
#include
#include
<opencv2\opencv.hpp>
<opencv2/core/core.hpp>
<opencv2/highgui/highgui.hpp>
"opencv2/imgproc/imgproc.hpp"
<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
VideoCapture cap(0);
if (!cap.isOpened())
return -1;
Mat
Mat
int
int
edges, edges2;
frame, hsv, out, mask, awal, out2, out3;
iLowH = 170;
iHighH = 179;
int iLowS = 150;
int iHighS = 255;
int iLowV = 60;
int iHighV = 255;
int min_dist = 16, p1 = 100, p2 = 24, minrad = 100, maxrad = 300;
while (1)
{
cap >> frame;
Mat drawedframe = frame;
Mat gray, hsv, mask, segmentout, treck;
char c = (char)waitKey(1);
if (c == 27)
break;
//HSV
cvtColor(frame, hsv, COLOR_BGR2HSV);
inRange(hsv, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS,
iHighV), mask);
namedWindow("Control", CV_WINDOW_AUTOSIZE); //create a window called
"Control"
//Create trackbars in "Control" window
createTrackbar("LowH", "Control", &iLowH, 179); //Hue (0 - 179)
createTrackbar("HighH", "Control", &iHighH, 179);
createTrackbar("LowS", "Control", &iLowS, 255); //Saturation (0 - 255)
createTrackbar("HighS", "Control", &iHighS, 255);
createTrackbar("CnTrs”: ", "Control", &p1, 255);
createTrackbar("CtrTs”: ", "Control", &p2, 255);
createTrackbar("LowV", "Control", &iLowV, 255);//Value (0 - 255)
createTrackbar("HighV", "Control", &iHighV, 255);
createTrackbar("Minrad", "Control", &minrad, 400);
createTrackbar("Maxrad", "Control", &maxrad, 400);
bitwise_and(frame, frame, segmentout, mask); imshow("RED", segmentout);
Mat edgeout, viewer;
edgeout = segmentout;
viewer = drawedframe;
cv::cvtColor(segmentout, edgeout, COLOR_BGR2GRAY);
medianBlur(edgeout, edgeout, 5);
vector<Vec3f> circles;
cv::HoughCircles(edgeout, circles, HOUGH_GRADIENT, 1, frame.rows /
min_dist, p1, p2, minrad, maxrad);
for (size_t i = 0; i < circles.size(); i++) {
Vec3i c = circles[i];
Point center = Point(c[0], c[1]);
circle(viewer, center, 1, Scalar(0, 100, 100), 3, LINE_AA);
int radius = c[2];
circle(viewer, center, radius, Scalar(0, 150, 255), 3, LINE_AA);
}
imshow("Detected Circle", viewer);
cap.read(frame);
}
waitKey();
return EXIT_SUCCESS;
}
Hasil Program
Ketika program digunakan untuk mendeteksi object berupa buah jeruk, untuk deteksi
circle belum bisa muncul tetapi program dapat melakukan segmentasi pada buah jeruk
tersebut.
Sedangkan ketika kami gunakan untuk membaca tempat headset yang memiliki corak
banyak lingkaran dan berwarna merah, deteksi circle membaca banyak lingkaran dan terjadi
kerancuan pada deteksi seperti yang terlihat pada gambar diatas. Sedangkan untuk
segmentasinya, program sudah dapat melakukan segmentasi untuk objek lingkaran
tergantung dengan konfigurasi HSV dari trackbar.
Setelah nilai parameter yang diinputkan sudah dikalibrasikan dengan benar maka bisa
didapatkan hasil deteksi yang cukup akurat seperti pada hasil berikut:
Analisa
Pada mini project ini, kelompok kami membuat project untuk membuat deteksi object
berbentuk circle yang kemudian akan dilakukan segmentasi terhadap object tersebut.
Segmentasi ini menggunakan color space HSV dikarenakan dibandingkan RGB ketika kita
mensegmentasi suatu warna misalkan merah maka dalam HSV semua warna merah dari yang
tergelap ataupun terang,tersaturasi ataupun tidak tersaturasi masih masuk dalam nilai Hue(H)
yang sama sedangkan pada RGB maka hanya satu output nilai yang di threshold sehingga
tidak menangkap semua warna merah. Kemudian setelah di segmentasi untuk menyortir
benda yang perlu dideteksi maka selanjutnya dilakukan edge detection menggunakan Hough
Gradient Method, tergantung dengan parameter kalibrasinya maka tingkat error akan
terdeteksi lingkaran atau tidaknya benda akan terlihat pada hasil akhir seperti pada buah jeruk
tidak dapat terdeteksi. Parameter inti tersebut yakni minDist(dimana nilai ini akan menjadi
acuan untuk per berapa pixel akumulator berpindah dari edge satu ke lainnya untuk
menghitung lingkaran),param1[cnTrs](nilai yang menjadi acuan threshold canny edge
detector untuk seberapa tepat hasil pendeteksian edge),param2[ctrTs](nilai yang menjadi
acuan threshold nilai yang dinilai sebagai pusat dari lingkaran) dan minRad,maxRad yang
mengacu pada nilai minimal radius lingkaran yang dideteksi dan nilai maximal radius
lingkaran yang dideteksi secara respektif.
Kesimpulan
Dari hasil projek dan analisa yang telah dilakukan maka dapat disimpulkan bahwa:
1. Segmentasi dilakukan lebih mudah di color space HSV dikarenakan pada colorspace
tersebut jangkauan warna yang ditangkap lebih menyeluruh terhadap 1 tipe warna.
2. Pada edge detection ini digunakan Hough Gradient Method yang merupakan
penurunan dari Hough Transform dan Canny Edge Detector dimana program akan
menggunakan akumulator untuk mencari pusat dari sebuah lingkaran melalui
penggambaran lingkaran secara iteratif.