• Tidak ada hasil yang ditemukan

Bab 1 Pengantar Machine Vision - Bab 1 7 Pengantar Machine Visiondan FeatureDetection2

N/A
N/A
Protected

Academic year: 2019

Membagikan "Bab 1 Pengantar Machine Vision - Bab 1 7 Pengantar Machine Visiondan FeatureDetection2"

Copied!
37
0
0

Teks penuh

(1)

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

(2)

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:

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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:

(12)

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

(13)

13 Nilai warna tersebut disimpan pada matrik 3 dimensi yang dilambangkan dalam Intensitas I

(X,Y, channel). Nilai warna RGB dapat dinormalisasi menggunakan persamaan :

� � = �

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 :

(14)

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

(15)

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

{

(16)

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

(17)

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

(18)

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.

(19)

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

(20)

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)

(21)

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

(22)

22

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

(23)

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:

(24)

24 2. Segment the image using T to produce two groups of pixels: G1 consisting of pixels with grey

levels >T and G2consisting pixels with grey levels ≤ T

3. Compute the average grey levels of pixels in G1to give μ1 and G2to 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

2 1 

 

(25)

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

(26)

26

Gambar 7.7 Histogram equalization

Berikut kode demo Histogram Equalization yang dapat digunakan pada pendeteksi objek

di system robotika [4]:

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

(27)

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)

(28)

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.

(29)

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]:

(30)

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.

(31)

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

(32)

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

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

namedWindow( "Contours", CV_WINDOW_AUTOSIZE ); imshow( "Contours", drawing );

/// Calculate the area with the moments 00 and compare with the result of the OpenCV function

(33)

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

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

Canny( src_gray, canny_output, thresh, thresh*2, 3 );

(34)

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

(35)

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

(36)

36 1. Hardware

 Catu daya stabil bertegangan dan berarus rendah

 Mikrorosesor ARM Cortex, Propeller, Intel dan lainnya  Memori DRAM

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,

(37)

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.

Gambar

Gambar di bawah menampilkan relasi antara computer vision dengan bidang riset lainnya :
gambar).
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)
Gambar 7.2  color image (a)  and grayscale image (b)
+2

Referensi

Dokumen terkait

Tujuan dari penelitian ini adalah (i) menerapkan fungsi monitoring pertumbuhan tanaman yang menggunakan teknologi machine vision terintegrasi dengan jaringan komputer berbasis

Penelitian yang ada dalam bidang Ilmu Komputer dapat dilihat dari beberapa sisi diantaranya, topik yang dipilih, metode yang digunakan dan pendekatan

Berdasarkan pada permasalahan dan solusi diatas, maka ide dalam penelitian yang akan diajukan adalah merancang desain metode kontrol optimal untuk mengontrol

Hasil yang akan diperoleh dari penelitian ini adalah mengetahui cara kerja computer vision, yang dimana salah satunya metode Haar Cascade Classifier adalah salah satu

Berdasarkan pada permasalahan dan solusi diatas, maka ide dalam penelitian yang akan diajukan adalah merancang desain metode kontrol optimal untuk mengontrol

Berdasarkan pada permasalahan dan solusi diatas, maka ide dalam penelitian yang akan diajukan adalah merancang desain metode kontrol optimal untuk mengontrol

Berdasarkan tujuan penelitian yang hendak dicapai, penelitian ini dilaksanakan dengan metode eksperimen semu, dengan desain yang dilaksanakan adalah randomized

Desain penelitian dilaksanakan dengan metode survey. Penelitian survey menggunakan alat kuesioner dalam mengukur komunikasi interpersonal antara perawat dan pasien