Academia.eduAcademia.edu

Deteksi dan Segmentasi Object

2020

Mini Project Computer Vision

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.