bab 1 pengantar machine vision - widodo.comwidodo.com/lecturer/bab 1_7 pengantar machine...

37
Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto 2015 1 Bab 1 Pengantar Machine Vision Tujuan Instruksional Umum : 1. Mahasiswa mampu menjelaskan peranan dan konsep pemrograman Computer Vision dan Machine Vision Tujuan Instruksional Khusus : 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.1 Mengenal Machine Vision Kecerdasan Buatan / Artificial Intelligence (AI) merupakan bidang ilmu komputer yang sangat penting di era kini dan masa akan datang untuk mewujudkan sistem komputer yang cerdas. Bidang ini telah berkembang sangat pesat di 20 tahun terakhir seiring dengan kebutuhan perangkat cerdas pada industri dan rumah tangga. Salah satu bidang di AI yang mengakuisisi, mengolah, memahami dan untuk mengambil informasi/keputusan dikenal sebagai Computer Vision. Oleh karena itu, buku ini memaparkan berbagai pandangan modern dan hasil riset terkini di bidang Computer Vision yang perlu dikuasai oleh para akademisi, mahasiswa, pelajar dan bahkan praktisi. Okasha pada buku Philosophy of Science: A Very Short Introduction, menyatakan bahwa Manusia sebagai mahluk Tuhan paling sempurna memiliki keingintahuan yang tinggi serta daya rekayasa yang luar biasa, yang berujung pada munculnya pengetahuan dan

Upload: duongcong

Post on 05-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

1

Bab 1

Pengantar Machine Vision

Tujuan Instruksional Umum :

1. Mahasiswa mampu menjelaskan peranan dan konsep pemrograman Computer Vision

dan Machine Vision

Tujuan Instruksional Khusus :

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.1 Mengenal Machine Vision

Kecerdasan Buatan / Artificial Intelligence (AI) merupakan bidang ilmu komputer

yang sangat penting di era kini dan masa akan datang untuk mewujudkan sistem komputer

yang cerdas. Bidang ini telah berkembang sangat pesat di 20 tahun terakhir seiring dengan

kebutuhan perangkat cerdas pada industri dan rumah tangga. Salah satu bidang di AI yang

mengakuisisi, mengolah, memahami dan untuk mengambil informasi/keputusan dikenal

sebagai Computer Vision. Oleh karena itu, buku ini memaparkan berbagai pandangan

modern dan hasil riset terkini di bidang Computer Vision yang perlu dikuasai oleh para

akademisi, mahasiswa, pelajar dan bahkan praktisi.

Okasha pada buku Philosophy of Science: A Very Short Introduction, menyatakan

bahwa Manusia sebagai mahluk Tuhan paling sempurna memiliki keingintahuan yang

tinggi serta daya rekayasa yang luar biasa, yang berujung pada munculnya pengetahuan dan

Page 2: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

2

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:

Extracting descriptions of the world from pictures or sequences of pictures

Sedangkan Machine vision:

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:

Pengontrolan proses industri

Pendeteksi nomor plat kendaraan

Wood quality inspection

Page 3: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

3

Final inspection of sub-assemblies

Engine part inspection

Label inspection on products

Checking medical devices for defects

3D model building (photogrammetry)

Robot Vision

Surveillance (monitor penyusup, analisa trafik jalan tol dan lainnya)

Interaksi manusia dan robot (Human Robot Interaction)

Gambar di bawah menampilkan relasi antara computer vision dengan bidang riset lainnya :

Gambar 1.1 Hubungan Computer vision dengan bidang lainnya

Pada penerapannya, computer vision menerapkan digital image processing untuk

menerapkan algoritma komputer untuk pemrosesan image pada image digital. Menurut

Forsyth dan Ponce, Computer Vision adalah mengekstrak deskripsi dunia dari gambar atau

urutan gambar. Computer vision secara umum merupakan area yang menyertakan metode

metode untuk mengambil, pemroses menganalisa dan memahami image untuk

menghasilkan informasi numeric atau simbolik. Image processing merupakan proses

mengubah image 2D menggunakna metode Edge detection, fourirer transform atau

Page 4: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

4

enhancement untuk memperoleh output image 2D yang diinginkan (misalnya smoothing

gambar).

Gambar 1.2 Proses Image processing

Setelah image diperoleh lalu diproses, Metode Machine Vision antara lain:

Stitching/Registration: Combining of adjacent 2D or 3D images.

Filtering (e.g. morphological filtering)

Thresholding: Thresholding starts with setting or determining a gray value that will be

useful for the following steps. The value is then used to separate portions of the image,

and sometimes to transform each portion of the image simply black and white based on

whether it is below or above that grayscale value.

Pixel counting: counts the number of light or dark pixels

Segmentation: Partitioning a digital image into multiple segments to simplify and/or

change the representation of an image into something that is more meaningful and easier

to analyze

Inpainting

Edge detection: finding object edges

Color Analysis: Identify parts, products and items using color, assess quality from color,

and isolate features using color.

Blob discovery & manipulation: inspecting an image for discrete blobs of connected

pixels (e.g. a black hole in a grey object) as image landmarks. These blobs frequently

represent optical targets for machining, robotic capture, or manufacturing failure.

Pattern recognition including template matching. Finding, matching, and/or counting specific patterns. This may include location of an object that may be rotated,

partially hidden by another object, or varying in size.

Barcode, Data Matrix and "2D barcode" reading

Output yang umum dari Machine Vision ialah keputusan pass/fail. Penerapan terkini

misalnya pada system industry HP dan Robot Vision, dimana robot dapat melihat

Page 5: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

5

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.

Gambar 1.3 Proses Machine Vision pada Pabrik

1.2 Robot Vision

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

Page 6: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

6

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).

1.3 Program OpenCV

OpenCV ialah program open source berbasiskan C++ yang saat ini banyak

digunakan sebagai program computer vision, salah satu penerapannya ialah pada robotika.

Page 7: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

7

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

Gambar 1.4 Beberapa task 3D [1]

1.3.1 Pemrograman Dasar OpenCV

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.

Page 8: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

8

Gambar 1.5 Proses instalasi pada satu direktori

2. Tambahkan path ke Path Variable:

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

Gambar 1.6 Memilih 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

4. PIlih linker dan tambahkan direktori ke Additional Library Directories:

Page 9: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

9

f:\OpenCV246\opencv\build\x86\vc10\lib

Gambar 1.7 Menambahkan Additional library Directories

5. Buka Linker dan pilih input, tambahkan Additional Dependencies berikut:

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

Page 10: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

10

Gambar 1.8 Menambahkan dependencies

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;

}

Page 11: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

11

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 :

Gambar 1.9 Hasil program menampilkan image

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:

cv::Mat A, C; // membuat bagian header

A = imread(argv[1], CV_LOAD_IMAGE_COLOR); // alokasi matrik

cv::Mat B(A); // menggunakan kopi constructor

C = A; // operator assignment

Pada program di atas, kita meload image menggunakan fungsi imread(). Berikut contoh

program untuk loading image berbasis C++:

DisplayImage2.cpp:

#include "stdafx.h" // Program demo C++ untuk display image.

Page 12: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

12

#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;

}

1.4 Digital Image Processing

Sebuah image ialah sebuah array, atau matrik dari piksel persegi yang disusun

dalam format kolom dan baris. Pada image greyscale (8bit), tiap elemen gambar memiliki

intesitas antara 0-255, sedangkan image true color terdiri dari 24 bit( 8x8x8 =16 juta

warna) seperti gambar di bawah :

(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.

Page 13: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

13

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)

Sedangkan proses grascale menggunakan persamaan

���� = �+�+�� (1.2)

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.

Pemrosesan image digital memungkinkan penggunaan algoritma komplek untuk

pemrosesan image sehingga menghasilkan performa sistem yang robust dan berbiaya

murah. Klasifikasi merupakan metode yang sangat penting dalam image processing.

Pemrosesan image digital umumnya digunakan pada proses :

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

Page 14: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

14

Pada pengolahan citra dasar, biasanya edge detection, threshold dan countour sangat

dibutuhkan, berikut contohnya :

Countour.cpp:

//Program membuat countour dan variasi threshold

#include <cv.h>

#include <highgui.h>

IplImage* image = 0; int thresh = 100;

void on_trackbar(int) {

IplImage* gray = cvCreateImage( cvGetSize(image), 8, 1 );

CvMemStorage* storage = cvCreateMemStorage(0);

CvSeq* contours = 0;

cvCvtColor( image, gray, CV_BGR2GRAY );

cvThreshold( gray, gray, thresh, 255, CV_THRESH_BINARY );

cvFindContours( gray, storage, &contours );

cvZero( gray );

if( contours )

cvDrawContours( gray, contours, cvScalarAll(255),

cvScalarAll(255), 100 );

cvShowImage( "Contours", gray );cvReleaseImage( &gray );

cvReleaseMemStorage( &storage );

}

int main( int argc, char** argv ) {

IplImage* image;

if( argc != 2 || !(image = cvLoadImage(argv[1])) )

return -1;

cvNamedWindow( "Contours", 1 );

cvCreateTrackbar( "Threshold", "Contours",

&thresh, 255, on_trackbar );

on_trackbar(0);

cvWaitKey();

return 0;

Page 15: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

15

}

Gambar 1.11 Program countour pada Lena.jpg

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));

Berikut ini contoh program ROI:

ROI.cpp:

#include "stdafx.h"

#include <cv.h>

#include <highgui.h>

int main(int argc, char** argv) {

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]);

Page 16: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

16

int width = atoi(argv[4]);

int height = atoi(argv[5]);

int add = atoi(argv[6]);

cvShowImage( "Contoh awal", src);

cvSetImageROI(src, cvRect(x,y,width,height));

cvAddS(src, cvScalar(add),src);

cvResetImageROI(src);

cvShowImage( "Contoh akhir",src);

cvWaitKey();

}

cvReleaseImage( &src );

cvDestroyWindow("Contoh awal");

cvDestroyWindow("Contoh akhir");

return 0;

}

Gambar 1.12 Area ROI pada image

1.5 Penelitian di Bidang Machine dan Computer Vision

Penelitian di bidang Machine dan Computer Vision biasanya dimulai dengan adanya masalah

yang ada dan teridentifiaksi di sekitar kita atau di bidang kerja kita, diikuti dengan tujuan yang

ingin dicapai dari penyelesaian masalah tersebut. Pertanyaan penelitian kemudian dapat diajukan

untuk memfokuskan permasalahan yang ada. Dengan didukung literatur yang diperoleh

Page 17: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

17

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.

Gambar 1.13 Langkah-langkah dalam penelitian

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

Identifikasi masalah dan tujuan

Mengajukan sebuah pertanyaan penelitian

Mengonstruksikan hipotesis

Mereview literatur sebelumnya

Memilih desain dan metode penelitian

Menguji hipotesis

Membuat kesimpulan

Page 18: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

18

2. Berikan penjelasan mengenai system inspeksi industry seperti pengukuran dimensi

Gambar 1.14 Inspeksi industri

3. Jelaskan peranan Computer Vision dan Machine Vision pada bidang Industri dan pendidikan

4. Buatah program untuk menampilkan image dan jelaskan tiap fungsi dari kode yang digunakan.

5. Jelaskan beberapa metode di Machine Vision

6. Sebutkan beberapa topic penelitian menarik di bidang Machine Vsiion Vision

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

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. Widodo Budiharto (2015), Robot Modern, Andi Offset Publisher- Yogyakarta.

Page 19: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

19

Bab 7

Feature Detection 2

Tujuan Instruksional Umum :

1. Mahasiswa mampu menjelaskan peranan dan konsep Segmentation, thresholding dan

boundary serta descriptor.

Tujuan Instruksional Khusus :

1. Mahasiswa mampu menjelaskan fungsi thresholding dan segmentation

2. Mahasiswa dapat menjelaskan megnenai fourier descriptor dan region descriptor

3. Mahasiswa dapat membuat program segmentasi

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:

Computer Vision = Camera + Computer + Pattern Recognition

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:

I(x,y) =f(x,y).s(x,y) (7.1)

Dimana s(x,y) =1 untuk setiap nilai dari x dan y

Metode point prosessing adalah yang paling primitive dimana piksel lama dikonversi ke

piksel baru berdasarkan fungsi yang telah ditentukan. Pada pengolahan citra dasar,

Page 20: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

20

biasanya edge detection, threshold dan countour sangat dibutuhkan. Konsepnya dapat

menggunakan triangle algorithm untuk mencari nilai threshold seperti gambar di bawah:

Gambar 7.1 Triangle algorithm

Untuk mengubah image warna ke grayscale digunakan persamaan beriut

grayscale image = ( (0.3 * R) + (0.59 * G) + (0.11 * B) ).

Tujuan dari image processing adalah :

1. Visualization – observasi obyek yang tidak terlihat.

2. Image sharpening and restoration – untuk membuat image yang lebih bagus terlihat

3. Image retrieval - menjcari image of interest.

4. Measurement of pattern – mengukur berbagai obyek pada image

5. Image Recognition – membedakan antara obyek di image

Gambar 7.2 color image (a) and grayscale image (b)

7.2 Threshoding

Page 21: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

21

Thresholding merupakan method segmenetasi yang paling mudah, sebagai contoh

memisahkan area image suatu obyek dengan area lainnya dengan cara variasi intensitas (dengan

membuat image orisinal menjadi gray) diantara piksel obyek tersebut dengan piksel background

dengan nilai ambang(threshold) tertentu. Thresholding merupakan proses dasar segmentasi.

Segmentasi merupakan salah satu tugas tersulit dalam pemrosesan image. Akurasi segmentasi

ditentukan oleh sukses atau gagalnya prosedur analisis otomatis. Aksi Segmentasi terdiri dari

membagi image ke region atau obyek yang sesuai. Tujuan dari segmentasi image untuk

dekomposisi image ke bagian yang berarti.

Gambar 7.3 Inspeksi PCB otomatis

Segmentasi image secara umum berdasarkan property nilai intensitas:

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:

Proses melakukan thresholding pada OpenCV menggunakan fungsi threshold. Berikut

contohnya :

Threshold.cpp:

//Thresholding Demo

#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/highgui/highgui.hpp"

#include <stdlib.h>

Tyxfif

Tyxfifyxg

),( 0

),( 1),(

Page 22: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

22

#include <stdio.h>

using namespace cv;

/// Global variables

int threshold_value = 0;

int threshold_type = 3;;

int const max_value = 255;

int const max_type = 4;

int const max_BINARY_value = 255;

Mat src, src_gray, dst;

char* window_name = "Threshold Demo";

char* trackbar_type = "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero

Inverted";

char* trackbar_value = "Value";

/// Function headers

void Threshold_Demo( int, void* );

int main( int argc, char** argv ){

/// Load image

src = imread( argv[1], 1 );

/// Ubah image ke gray

cvtColor( src, src_gray, CV_RGB2GRAY );

/// buat window

namedWindow( window_name, CV_WINDOW_AUTOSIZE );

/// Buat Trackbar

createTrackbar( trackbar_type, window_name, &threshold_type, max_type, Threshold_Demo );

createTrackbar( trackbar_value, window_name, &threshold_value, max_value, Threshold_Demo );

Threshold_Demo( 0, 0 );

while(true)

{

int c;

c = waitKey( 20 );

if( (char)c == 27 )

{ break; }

Page 23: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

23

}

}

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 );

}

Gambar 7.4 Program Threshold pada Lena.jpg

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)

Page 24: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

24

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

3. Compute the average grey levels of pixels in G1 to give μ1 and G2 to give μ2

4. Compute a new threshold value:

5. Repeat steps 2 – 4 until the difference in T in successive iterations is less than a predefined limit

T∞

Gambar 7.5 Hasil thresholding

Menggunakan global threshold mungkin bukan pilihan bagus dimana image memili

pencahayaan berbeda pada beda tempat, sehingga dibutuhkan adaptive thresholding, pada

Phyton:

cv.AdaptiveThreshold(src, dst, maxValue, adaptive_method=CV_ADAPTIVE_THRESH_

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)

2

21 T

Page 25: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

25

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) titles = ['Original Image', 'Global Thresholding (v = 127)', 'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding'] images = [img, th1, th2, th3] 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()

Gambar 7.6 global threshold

7.3 Histogram Equalization

Histogram equalization merupakan representasi grafis dari distribusi intensitas dari image, yang

mengkuantifikasi jumlah piksel untuk tiap intensitas. Histogam equalization merupakan representasi

grafis dari distribusi intensitas image, perhatikan gambar di bawah dimana idealnya intensitas pixel

menyebar.

Page 26: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

26

Gambar 7.7 Histogram equalization

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

Page 27: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

27

waitKey(0);

return 0;

}

Gambar 7.8 Hasil Histogram equalization

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)

Page 28: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

28

Gambar 7.9 Hasil thresholding

markers = cv2.watershed(img,markers) img[markers == -1] = [255,0,0]

OpenCV memiliki sample watershed segmentation bernama watershed.py.

Gambar 7.10 Hasil labelling

Kita dapat merepresentasikan contour dengan urutan koordinat pikel pada image.

Himpunan piklse pada batas dari suatu bentuk ditraslasi ke himpunan koneksi diantara mereka.

Page 29: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

29

Gambar 7.11 Berbagai Konektifitas

7.6 Identifikasi Boundary

Obyek dipresentasikan sebagai kumpulan pixel di image. Untuk mendukung pengenalan

obyek, dibutuhkan penjelasan property dari pixel grup object descriptor. 2 bentuk object

descriptor:

1. Boundary descriptor: characterize an arrangement of pixels in the object perimeter or

boundary

2. Region descriptor: characterize an arrangement of pixels within the area of the object

7.7 Descriptor

Terdapat 2 region descriptor:

1. Basic: characterize the geometric properties of the region

2. Moment: characterize the density of the region

Sebuah region dapat dijelaskan dengan memperhatikan pengukuran scalar berdasarkan

property geometris. Anggap x[m] dan y[m] koordinat m-th pixel pada boundary, bilangan

komplek z[m]=x[m]+jy[m], dan Fourier Descriptor (FD) dari bentuk didefinisikan sebagai DFT

dari z[m]:

Page 30: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

30

Untuk extracting keypoints and computing descriptors menggunakan SIFT (Scale Invariant

Feature Transform) algorithm oleh D. Lowe dapat membaca:

Lowe, D. G., “Distinctive Image Features from Scale-Invariant Keypoints”, International Journal of Computer Vision, 60, 2, pp. 91-110, 2004.

7.8 Moments

Moment menjelaskan layout bentuk. Perhitungan seluruh moment hingga order ke tiga dari

sebuah polygon atau bentuk teraster:

In case of a raster image, momen spasial dihitung:

Momen pusat dhitung:

Dimana adalah center massa:

normalized central moments dihitung:

Catatan:

, , hence the values are not stored.

Fungsi menghitung 7 Hu invariants:

Page 31: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

31

Gambar 7.12 Invariant moments

Moments.cpp:

#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); /// Function header void thresh_callback(int, void* ); /** @function main */ int main( int argc, char** argv ) { /// Load source image and convert it to gray src = imread( argv[1], 1 ); /// Convert image to gray and blur it cvtColor( src, src_gray, CV_BGR2GRAY ); blur( src_gray, src_gray, Size(3,3) );

Page 32: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

32

/// Create Window char* source_window = "Source"; namedWindow( source_window, CV_WINDOW_AUTOSIZE ); imshow( source_window, src ); createTrackbar( " Canny thresh:", "Source", &thresh, max_thresh, thresh_callback ); thresh_callback( 0, 0 ); waitKey(0); return(0); } /** @function thresh_callback */ void thresh_callback(int, void* ) { Mat canny_output; vector<vector<Point> > contours; vector<Vec4i> hierarchy; /// Detect edges using canny Canny( src_gray, canny_output, thresh, thresh*2, 3 ); /// Find contours findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); /// Get the moments vector<Moments> mu(contours.size() ); for( int i = 0; i < contours.size(); i++ ) { mu[i] = moments( contours[i], false ); } /// Get the mass centers: vector<Point2f> mc( contours.size() ); for( int i = 0; i < contours.size(); i++ ) { mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); } /// Draw contours Mat drawing = Mat::zeros( canny_output.size(), CV_8UC3 ); for( int i = 0; i< contours.size(); i++ ) { Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() ); circle( drawing, mc[i], 4, color, -1, 8, 0 ); } /// Show in a window namedWindow( "Contours", CV_WINDOW_AUTOSIZE ); imshow( "Contours", drawing ); /// 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++ ) {

Page 33: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

33

printf(" * Contour[%d] - Area (M_00) = %.2f - Area OpenCV: %.2f - Length: %.2f \n", i, mu[i].m00, contourArea(contours[i]), arcLength( contours[i], true ) ); Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() ); circle( drawing, mc[i], 4, color, -1, 8, 0 ); } }

Pada Versi OpenCV 3.0

#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++ )

Page 34: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

34

{ mc[i] = Point2f( static_cast<float>(mu[i].m10/mu[i].m00) , static_cast<float>(mu[i].m01/mu[i].m00) ); } Mat drawing = Mat::zeros( canny_output.size(), CV_8UC3 ); for( size_t i = 0; i< contours.size(); i++ ) { Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawContours( drawing, contours, (int)i, color, 2, 8, hierarchy, 0, Point() ); circle( drawing, mc[i], 4, color, -1, 8, 0 ); } namedWindow( "Contours", WINDOW_AUTOSIZE ); imshow( "Contours", drawing ); printf("\t Info: Area and Contour Length \n"); for( size_t i = 0; i< contours.size(); i++ ) { printf(" * Contour[%d] - Area (M_00) = %.2f - Area OpenCV: %.2f - Length: %.2f \n", (int)i, mu[i].m00, contourArea(contours[i]), arcLength( contours[i], true ) ); Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawContours( drawing, contours, (int)i, color, 2, 8, hierarchy, 0, Point() ); circle( drawing, mc[i], 4, color, -1, 8, 0 ); } }

Gambar 7.13 Hasil moment

Page 35: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

35

7.9 Embedded System untuk Machine Vision

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)

Sistem embedded biasanya digunakan untuk aplikasi-aplikasi akuisisi data, pengontrol

multifungsi dengan daya yang dibutuhkan minimal, misalnya :

1. Pengontrolan robot berbasis vision

2. Transaksi dan display di jalan toll.

3. Telemetri di tempat-tempat remote.

4. Industri mainan anak-anak/games

5. Electronics smart devices di mall dan industry

6. Telepresence robot

7. Robot humanoid dan robot soccer

Agar dapat bekerja dengan power yang rendah dan cepat, sistem embedded memiliki 2

komponen utama, yaitu:

Page 36: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

36

1. Hardware

Catu daya stabil bertegangan dan berarus rendah

Mikrorosesor ARM Cortex, Propeller, Intel dan lainnya

Memori DRAM

Timer

Port HDMI

Port USB

Port Audio stereo

Port I/O

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]);

}

}

Page 37: Bab 1 Pengantar Machine Vision - Widodo.comwidodo.com/lecturer/Bab 1_7 Pengantar Machine Visiondan... · Kecerdasan Buatan / Artificial Intelligence ... Tambahkan path ke Path Variable:

Machine Vision, Prinsip dan Penerapan MTI BINUS University - Widodo Budiharto

2015

37

}

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

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.