Bab 1 - 7 Pengantar Machine Visiondan FeatureDetection2
Bab 1 - 7 Pengantar Machine Visiondan FeatureDetection2
2015
Bab 1
Pengantar Machine Vision
1. Mahasiswa mampu menjelaskan fungsi dari Computer Vision dan Machine Vision
2. Mahasiswa dapat menyebutkan beberapa penerapan dari Machine Viion
3. Menjelaskan fungsi dari program OpenCV
4. Mahasiswa dapat menjelaskan penelitian di bidang Computer Vision
5. Mahasiswa dapat menginstal program OpenCV dan membuat program loading image.
1
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
disiplin ilmu. Pada jaman Nabi Muhammad dan para pengikut sesudah jamannyapun,
sudah ada para pemikir yang mengembangkan ilmu pengetahuan dengan sangat dahsyat,
sehingga Arab pernah menjadi pusat ilmu pengetahuan dunia di Abad pertengahan.
Disiplin-disiplin yang saat ini dipelajari manusia saat ini terbagi menjadi 3 kelompok yaitu
ilmu Sains (bersumber dari bahasa latin scientia yang berarti memiliki pengetahuan atau
mengetahui), Ilmu Kesusastraan dan Seni serta kelompok ketiga seperti Metafisika, Filsafat
dan Agama. Ketiga disiplin ilmu tersebut berkembang pesat seiring dengan aktifitas
penelitian dan pengungkapan gagasan dan ide baik melalui buku, jurnal maupun media.
Kata “intelligence” berasal dari bahasa Latin “intelligo” yang berarti “saya paham”.
Berarti dasar dari intelligence ialah kemampuan untuk memahami dan melakukan aksi.
Sebenarnya, area Kecerdasan Buatan (Artificial Intelligence) atau disingkat dengan AI,
bermula dari kemunculan komputer sekitar tahun 1940-an, meskipun sejarah
perkembangannya dapat dilacak sejak zaman Mesir kuno. Pada masa ini, perhatian
difokuskan pada kemampuan komputer dalam mengerjakan sesuatu yang dapat dilakukan
oleh manusia. Dalam hal ini, komputer tersebut dapat meniru kemampuan kecerdasan dan
perilaku manusia. Salah satu cabang dari Kecerdasan buatan ialah Computer Vision.
Menurut Forsyth dan Ponece, Computer Vision adalah:
Machine vision (MV) is the technology and methods used to provide imaging-based
automatic inspection and analysis for such applications as automatic inspection, process
control, and robot guidance in industry.
Machine vision merupakan teknologi untuk inspeksi otomatis berbasiskan image, misalnya
pada:
2
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Gambar di bawah menampilkan relasi antara computer vision dengan bidang riset lainnya :
3
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Setelah image diperoleh lalu diproses, Metode Machine Vision antara lain:
Output yang umum dari Machine Vision ialah keputusan pass/fail. Penerapan terkini
misalnya pada system industry HP dan Robot Vision, dimana robot dapat melihat
4
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
menggunakan kamera dan unit pendukung berupa sensor dan controller berkecepatan
tinggi.
Statistical process control has been around for many years and the benefits for adopting
these methodologies are well documented throughout quality circles. Statistical process
control does not require 100% inspection and for most industries process variation can be
reduced if not completely eliminated when the appropriate sampling plans and inspection
procedures are put into place.
Robot vision menerapkan Machine Vision. Ada beberapa istilah penting di dalam robot
vision yang saling berhubungan, diantaranya computer vision, machine vision dan robot
vision. Computer vision merupakan teknologi paling penting di masa yang akan datang
dalam pengembangan robot yang interaktif. Computer Vision merupakan bidang
pengetahuan yang berfokus pada bidang sistem kecerdasan buatan dan berhubungan
dengan akuisisi dan pemrosesan image. Machine vision merupakan proses menerpakan
teknologi untuk inspeksi automatis berbasis image, kontrol proses dan pemanduan robot
pada berbagai aplikasi industri dan rumah tangga. Robot vision merupakan pengetahuan
5
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
mengenai penerapan computer vision pada robot. Robot membutuhkan informasi vision
untuk memutuskan aksi apa yang akan dilakukan.
Penerapan saat ini vision pada robot antara lain sebagai alat bantu navigasi robot, mencari
obyek yang diinginkan, inspeksi lingkungan dan lainnya. Vision pada robot menjadi
sangat penting karena informasi yang diterima lebih detail dibanding hanya sensor jarak
atau sensor lainnya. Misalnya dengan vision, robot dapat mengenal apakah obyek yang
terdeteksi merupakan wajah orang atau bukan. Lebih jauh lagi, sistem vision yang canggih
pada robot membuat robot dapat membedakan wajah A dengan wajah B secara akurat
(Face recognition system menggunakan metode PCA, LDA dan lainnya). Proses
pengolahan dari input image dari kamera hingga memiliki arti bagi robot dikenal sebagai
visual perception, dimulai dari akuisisi image, image preprocessing untuk memperoleh
image yang diinginkan dan bebas noise misalnya, ekstrasi fitur hingga interpretasi..
Misalnya saja untuk identifikasi pelanggan dan penghindaran multiple moving obstacles
berbasis vision, atau untuk menggerakan servo sebagai aktuator untuk mengarahkan
kamera agar tetap mengarah ke wajah seseraong (face tracking).
OpenCV ialah program open source berbasiskan C++ yang saat ini banyak
digunakan sebagai program computer vision, salah satu penerapannya ialah pada robotika.
6
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Dengan OpenCV, Anda dapat membuat interaksi antara manusia dan robot (Human Robot
Interaction. Misalnya, wajah dari manusia dideteksioleh camera/webcam, lalu diproses
oleh komputer, untuk kemudian diproses oleh robot untuk melakukan aksi tertentu,
misalnya mengikuti/mengenal wajah orang tersebut. Kesemuanya itu membutuhkan
OpenCV sebagai program utama antara webcam dan pengolahnya yaitu komputer.
Silahkan kunjungi situs opencv.org untuk download atau mengetahui berita terbaru tentang
software ini. Program OpenCV 2.4.11 merupakan edisi terbaru yang harus Anda gunakan,
program ini penting untuk dapat melakukan tugas 3D pada Machine Vision
Anda membutuhkan editor dan kompiler Visual C++ 2012/ Visual Studio 2012
Express Edition untuk mengedit dan kompilasi program OpenCV. Anda terlebih dahulu
harus mengkonfigurasi Visual C++ .Net tersebut dimana file library dan sourcenya harus
disertakan. Beberapa file library juga harus ditambahkan pada input linker di Visual C++.
1. Jalankan program dan install pada suatu direktori, misalnya f:/OpenCV248 atau
f:/OpenCV248 jika menggunakan versi OpenCV 2.4.9.
7
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
f:\OpenCV246\opencv\build\x86\vc10\bin
f:\OpenCV246\opencv\build\common\tbb\ia32\vc10
3. Lalu, buat proyek baru untuk OpenCV menggunakan Visual C++ 2012, dengan memilih
create a new Win32 console Application. Klik kanan Project dan pilh properties
Pada bagian kiri, pilih C/C++ lalu edit Additional Include Directories dengan
menambahkan :
f:\OpenCV246\opencv\build\include\opencv
f:\OpenCV246\opencv\build\include
8
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
f:\OpenCV246\opencv\build\x86\vc10\lib
opencv_core246d.lib
opencv_imgproc246d.lib
opencv_highgui246d.lib
opencv_ml246d.lib
opencv_video246d.lib
opencv_features2d246d.lib
opencv_calib3d246d.lib
opencv_objdetect246d.lib
opencv_contrib246d.lib
opencv_legacy246d.lib
opencv_flann246d.lib
9
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Jika sudah selesai, sebagai contoh buatlah program Win32 console application untuk
menampilkan sebuah gambar di Windows, berikut contohnya:
Displayimage.cpp:
// Menampilkan Image menggunakan cvLoadImage
//Dibuat oleh Widodo Budiharto
#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[]){ // meload image
IplImage *img = cvLoadImage("f:\handsome.jpg");
cvNamedWindow("OpenCV",1);
cvShowImage("OpenCV",img);
//tunggu sembarang input dari user untuk exit
cvWaitKey(0);
cvDestroyWindow("OpenCV ");
cvReleaseImage(&img);
return 0;
}
10
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Pada program di atas, dibutuhkan library seperti cv.h, sxcore.h dan highgui.h agar fungsi dikenal
oleh compiler. Hasil dari program di atas ialah :
Jika Anda menginginkan pemrograman dengan style 2.x C++, berikut contohnya
menggunakan cv::Mat. Cv::Mat muncul di OpenCV versi terkini yang secara mendasar ialah
sebuah class dengan 2 bagian data, yaitu header matrik (berisi informasi ukuran matrik, metode
yang digunakan untuk menyimpan) dan sebuah pointer ke matrik berisi nilai pixel, berikut
contohnya:
Pada program di atas, kita meload image menggunakan fungsi imread(). Berikut contoh
program untuk loading image berbasis C++:
DisplayImage2.cpp:
11
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
#include <stdlib.h>
#include <cv.hpp>
#include <cxcore.hpp>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[]){
cv::Mat img = cv::imread("f:\handsome.jpg");
cv::imshow("OpenCV",img);
//tunggu sembarang input dari user untuk exit
cv::waitKey();
return EXIT_SUCCESS;
}
(a) (b)
Gambar 1.10 Image greyscale 8 bit (a), dan image true color yang tersusun dari 3 greyscale
image berwarna merah, hijau dan biru yang dapat berisi hingga 16 juta warna berbeda (b).
Image standar dikenal sebagai image RGB (terdiri dari komponen Merah, Hijau dan biru)
dan memiliki sistem warna 24 bit yang masing masing terdiri dari 8 bit. Representasi
warna bertipe integer bervariasi dari 0-255, sedangkan untuk tipe float berkisar antara 0-1.
12
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Nilai warna tersebut disimpan pada matrik 3 dimensi yang dilambangkan dalam Intensitas I
(X,Y, channel). Nilai warna RGB dapat dinormalisasi menggunakan persamaan :
� � �
� � = � � = � � = (1.1)
�+�+� �+�+� �+�+�
Kadang citra yang kita miliki perlu kita olah untuk tujuan tertentu yang dikenal dengan
istilah Pengolahan Citra, misalnya proses penjumlahan nilai RGB pada images. Awal mula
pemrosesan image digital dimulai pada sekitar tahun 1960an pada Jet Propulsion
Laboratory, Massachusetts Institute of Technology, Bell Laboratories, University of
Maryland, untuk aplikasi satelit, medical imaging dan character recognition.
Classification
Feature extraction
Pattern recognition
Multi-scale signal analysis
Beberapa teknik yang digunakan pada pemrosesan image digital antara lain :
Pixelization
Linear filtering
Erosi dan dilasi
Principal components analysis
Independent component analysis
Hidden Markov models
Anisotropic diffusion
Partial differential equations
13
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Pada pengolahan citra dasar, biasanya edge detection, threshold dan countour sangat
dibutuhkan, berikut contohnya :
Countour.cpp:
14
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Pada pengolahan citra, untuk mengambil sebagian daerah penting dari suatu image, biasa dikenal
sebagai ROI (region of interest), dapat digunakan fungsi berikut :
cvSetImageROI(src, cvRect(x,y,width,height));
ROI.cpp:
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
IplImage* src;
cvNamedWindow("Contoh awal", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Contoh akhir", CV_WINDOW_AUTOSIZE);
if( argc == 7 && ((src=cvLoadImage(argv[1],1)) != 0 ))
{
int x = atoi(argv[2]);
int y = atoi(argv[3]);
15
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
16
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
sebelumnya, kita dapat mengonstruksikan hipotesis. Hipotesis atau hipotesa adalah jawaban
sementara terhadap masalah yang masih bersifat praduga karena masih harus dibuktikan
kebenarannya. Desain dan metode penelitian pada bidang computer vision harus dipilih yang
sesuai agar dapat dilaksanakan dengan optimal, misalnya menggunakan metode penelitian
kuantitatif karena jumlah sampel yang banyak dan menggunakan pengamatan/observasi dan survei.
Mengonstruksikan hipotesis
Menguji hipotesis
Membuat kesimpulan
Hasil hipotesis dapat digunakan untuk mengambil kesimpulan dari penelitian yang telah
dilaksanakan. Kesimpulan yang diambil menyimpulkan apakah hasil penelitian yang dilakukan
dapat membuktikan hipotesis yang ada. Ketika informasi yang dikumpulkan melalui tes, peneliti
mencoba untuk memastikan bahwa tes tersebut :
Valid: apakah instrumen pengukurannya mampu mengukur apa yang seharusnya diukur sesuai
dengan tujuan penelitan.
Reliable: Menyediakan hasil yang konsisten bila diberikan pada kesempatan yang berbeda.
Latihan :
1. Jelaskan definisi dari Machine Vision
17
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Referensi:
1. Milan Sonka et al(2015), Image Processing, Analysis, and Machine Vision, 4th edition, Cengage
Learning, USA.
2. Forsyth, D., Ponce, J. (2012). Computer Vision: A Modern Approach. 2nd ed. Prentice Hall. ISBN:
978-0-27-376414-4
3. Opencv.org
5. Okasha, S. (2002) Philosophy of Science: A Very Short Introduction. Oxford: Oxford University
Press.
6. Stuart Russel and Peter Norvig, (2011), Artificial Intelligence, A Modern Approach, Pearson
Publisher.
18
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Bab 7
Feature Detection 2
7.1 Pendahuluan
Computer Vision adalah ilmu pengetahuan dan teknologi dari suatu sistem komputer mampu
memiliki kemampuan akuisisi, memroses dan memahami (understanding) dari suatu
image/streaming video. Sehingga apabila dirumuskan, Computer Vision adalah:
Untuk representasi pada komputer, fungsi (misalnya intensitas) harus disampling pada
interval diskrit. Sampling adalah memetakan nilai intensitas ke interval diskrit. Titik-titik dimana
image disampling disebut element gambar atau piksel. Sedangkan resolusi menentukan jarak
diantara titik-titik. Pada spatial digitization(sampling) persamannya adalah:
Metode point prosessing adalah yang paling primitive dimana piksel lama dikonversi ke
piksel baru berdasarkan fungsi yang telah ditentukan. Pada pengolahan citra dasar,
19
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
biasanya edge detection, threshold dan countour sangat dibutuhkan. Konsepnya dapat
menggunakan triangle algorithm untuk mencari nilai threshold seperti gambar di bawah:
7.2 Threshoding
20
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
1. Discontinuity: partisi image berdasarkan abrupt changes pada intensitas seperti edges
2. Similarity: partisi image ke regiton yang mirip sesuai pada criteria yang ditentukan.
Thresholding merupakan pendekatan dasar dari segmentasi. Single value thresholding secara
matematis adalah:
1 if f (x, y ) T
g(x, y )
0 if f (x, y ) T
Threshold.cpp:
//Thresholding Demo
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
21
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
#include <stdio.h>
22
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
}
}
void Threshold_Demo( int, void* ){
/* 0: Binary
1: Binary Inverted
2: Threshold Truncated
3: Threshold to Zero
4: Threshold to Zero Inverted
*/
threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
imshow( window_name, dst );
}
Partisi image histogram menggunakan single global threshold. Basic global threshold, T,
dihitung menggunakan algoritma:
1. Select an initial estimate for T (typically the average grey level in the image)
23
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
2. Segment the image using T to produce two groups of pixels: G1 consisting of pixels with grey
levels >T and G2 consisting pixels with grey levels ≤ T
Menggunakan global threshold mungkin bukan pilihan bagus dimana image memili
pencahayaan berbeda pada beda tempat, sehingga dibutuhkan adaptive thresholding, pada
Phyton:
adaptiveThreshold.py:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('bw.png',0)
img = cv2.medianBlur(img,5)
ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
24
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\
cv2.THRESH_BINARY,11,2)
th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY,11,2)
for i in xrange(4):
plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
25
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Berikut kode demo Histogram Equalization yang dapat digunakan pada pendeteksi objek
di system robotika [4]:
Histogram.cpp:
//Demo Histogram Eequalization
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main( int argc, char** argv ){
Mat src, dst;
char* source_window = "Source image";
char* equalized_window = "Equalized Image";
/// Load image
src = imread( argv[1], 1 );
if( !src.data )
{ cout<<"Usage: ./Histogram_Demo <path_to_image>"<<endl;
return -1;}
/// konversi ke grayscale
cvtColor( src, src, CV_BGR2GRAY );
/// Apply Histogram Equalization
equalizeHist( src, dst );
/// Menampilkan hasil
namedWindow( source_window, CV_WINDOW_AUTOSIZE );
namedWindow( equalized_window, CV_WINDOW_AUTOSIZE );
imshow( source_window, src );
imshow( equalized_window, dst );
/// Wait until user exits the program
26
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
waitKey(0);
return 0;
}
7.5 Boundary
OpenCV menggunakan marker-based watershed algorithm yang merupakan interactive image
segmentation. Kita memberikan label yang berbeda untuk obyek yang kita kenal sehingga kita dapatkan
boundary dengan nilai -1.
Boundary.py:
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('coins.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
27
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
markers = cv2.watershed(img,markers)
img[markers == -1] = [255,0,0]
Kita dapat merepresentasikan contour dengan urutan koordinat pikel pada image.
Himpunan piklse pada batas dari suatu bentuk ditraslasi ke himpunan koneksi diantara mereka.
28
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
2. Region descriptor: characterize an arrangement of pixels within the area of the object
7.7 Descriptor
Terdapat 2 region descriptor:
29
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Untuk extracting keypoints and computing descriptors menggunakan SIFT (Scale Invariant
Feature Transform) algorithm oleh D. Lowe dapat membaca:
7.8 Moments
Moment menjelaskan layout bentuk. Perhitungan seluruh moment hingga order ke tiga dari
sebuah polygon atau bentuk teraster:
Catatan:
30
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Moments.cpp:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
31
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
waitKey(0);
return(0);
}
/// Calculate the area with the moments 00 and compare with the result of
the OpenCV function
printf("\t Info: Area and Contour Length \n");
for( int i = 0; i< contours.size(); i++ )
{
32
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace cv;
using namespace std;
Mat src; Mat src_gray;
int thresh = 100;
int max_thresh = 255;
RNG rng(12345);
void thresh_callback(int, void* );
int main( int, char** argv )
{
src = imread( argv[1], 1 );
cvtColor( src, src_gray, COLOR_BGR2GRAY );
blur( src_gray, src_gray, Size(3,3) );
const char* source_window = "Source";
namedWindow( source_window, WINDOW_AUTOSIZE );
imshow( source_window, src );
createTrackbar( " Canny thresh:", "Source", &thresh, max_thresh,
thresh_callback );
thresh_callback( 0, 0 );
waitKey(0);
return(0);
}
void thresh_callback(int, void* )
{
Mat canny_output;
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
Canny( src_gray, canny_output, thresh, thresh*2, 3 );
findContours( canny_output, contours, hierarchy, RETR_TREE,
CHAIN_APPROX_SIMPLE, Point(0, 0) );
vector<Moments> mu(contours.size() );
for( size_t i = 0; i < contours.size(); i++ )
{ mu[i] = moments( contours[i], false ); }
vector<Point2f> mc( contours.size() );
for( size_t i = 0; i < contours.size(); i++ )
33
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
34
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Pada saat ini, beberapa sistem embedded yang terkenal untuk dapat melakukan image
processing ialah Raspberry Pi yang dilengkapi dengan kamera parallel kecepatan tinggi dan
Odroid-XU berbasiskan quad prosesor, misalnya untuk tracking pada robot[5]. Gambar di bawah
ini menampilkan Raspberri Pi dan Odroid-XU.
(a) (b)
Gambar 7.14 Raspberry Pi model B 512M dengan kamera parallel (a) dan Odroid-XU (b)
Agar dapat bekerja dengan power yang rendah dan cepat, sistem embedded memiliki 2
komponen utama, yaitu:
35
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
1. Hardware
2. Software
Sistem Embedded memiliki software yang ditulis dalam bahasa yang lebih dekat/dikenali
oleh hardware, misalnya C++ dan Java, dengan sistem Operasi seperti Linux Ubuntu jika
menggunakan Odroid dan Raspbian jika menggunakan Raspberry Pi.
Latihan :
1. Jelaskan fungsi dari Histogram equalization
2. Buat program untuk mengambil obyek bola dari lingkungannya menggunakan
thresholding, smoothing dan histogram equalization.
3. Jelaskan mengenai contour:
The cv::findCountours function will detect contours on the input binary image:
void MarkerDetector::findContours(const cv::Mat& thresholdImg,
std::vector<std::vector<cv::Point>
>& contours,
int minContourPointsAllowed)
{
std::vector< std::vector<cv::Point> > allContours;
cv::findContours(thresholdImg, allContours, CV_RETR_LIST, CV_
CHAIN_APPROX_NONE);
contours.clear();
for (size_t i=0; i<allContours.size(); i++)
{
int contourSize = allContours[i].size();
if (contourSize > minContourPointsAllowed)
{
contours.push_back(allContours[i]);
}
}
36
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto
2015
Referensi:
1. Milan Sonka et al(2015), Image Processing, Analysis, and Machine Vision, 4 th edition, Cengage
Learning, USA.
2. Forsyth, D., Ponce, J. (2012). Computer Vision: A Modern Approach. 2nd ed. Prentice Hall. ISBN:
978-0-27-376414-4
3. Opencv.org
4. Walliman, N. (2011) Research Methods: The Basics. London: Roudlege
5. Okasha, S. (2002) Philosophy of Science: A Very Short Introduction. Oxford: Oxford University
Press.
6. Stuart Russel and Peter Norvig, (2011), Artificial Intelligence, A Modern Approach, Pearson
Publisher.
7. Stuart Russel and Peter Norvig, (2011), Artificial Intelligence, A Modern Approach,
Pearson Publisher.
8. Widodo Budiharto (2015), Robot Modern, Andi Offset Publisher- Yogyakarta.
9. Widodo Budiharto et al, Ball Distance Estimation and Tracking System of Humanoid
Soccer Robot, Lecturer Notes on Information Technology, Springer Publisher, 2014.
37