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 terkonstektual
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 kedalam 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.
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 edge
detection dimana deteksi objek disini berdasarkan deteksi objek satu warna saja untuk
kemudian dilakukan segmentasi. Sebagai contoh pada ilustrasi di bawah ini setelah dilakukan
edge detection terlebih dahulu pada buah apel maka proses edge hanya dilakukan untuk buah
apel saja sedangkan objek daun dan lainnya tidak akan dibaca untuk proses edge. Kemudian
hasil dari deteksi edge pada buah apel ini digunakan untuk segmentasi pada warna buah apel.
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("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 saya 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 yang
berwarna merah saja.
Analisa
Pada mini project ini, kelompok kami membuat project untuk membuat deteksi object
berbentuk circle yang kemudian akan dilakukan segmentasi terhadap object tersebut.
Kesimpulan