Pengenalan peralatan bengkel motor secara real time menggunakan webcam berbasis metode ekstraksi ciri discrete cosine transform dan cosine similarity.

(1)

viii

INTISARI

Perkembangan teknologi yang semakin cepat diberbagai bidang termasuk bidang elektronik, sehingga banyak perusahaan yang bergerak dibidang elektronik saling bersaing untuk menciptakan inovasi yang baru dalam produk elektronik yang diciptakan.Untuk itu para teknisi yang bekerja di perusahaan tersebut harus mampu menggunakan dan mengambil berbagai peralatan untuk melakukan pekerjaannya, sehingga tenaga dan waktu menjadi tidak efisien. Sistem yang akan dibuat meniru kemampuan mata manusia untuk mengenali objek berupa peralatan bengkel motor. Sistem ini akan secara otomatis membandingkan objek berupa macam-macam peralatan bengkel motor dengan gambar yang telah di capture oleh user melalui webcam.

Sistem pengenalan peralatan bengkel motor secara real time pada tugas akhir ini menggunakan webcam dan komputer. Secara garis besar, sistem pengenalan perangkat elektronika secara real time yang dibuat dapat dideskripsikan bedasarkan urutan berikut: citra peraalatan bengkel motor dari webcam, grayscaling, cropping, resizing, ekstaksi ciri dengan DCT 2-D (Discrete Cosine Transform two Dimension), dan similaritas kosinus.

Sistem pengenalan peralatan bengkel motor secara real time menggunakan webcam berbasis ekstraksi ciri DCT berhasil dibuat dan bekerja dengan baik. Berdasarkan hasil pengujian variasi jumlah koefisien DCT dengan perangkat elektronika, sistem pengenalan peralatan bengkel motor secara real time yang dibuat mampu menghasilkan tingkat pengenalan hingga 100%. Parameter minimum untuk mendapatkan tingkat pengenalan hingga 100% tersebut adalah jumlah koefisien DCT 171.

Kata kunci: Webcam, DCT 2-D (Discrete Cosine Transform two Dimension), Similaritas Kosinus.


(2)

ix

ABSTRACT

The increasingly rapid technological development in various fields, including the fields of electronics, so a lot of companies engaged in competing electronics to create new innovations in electronic products created. Therefore technicians who works in the company was to use and taking various equipment for doing the work, so the energy and time of being inefficient. The system will be made imitate the human eyes ability to recognize object of motorcycle shap devices. The system will be automatically comparing object in the form of various motorcycle shap devices with images that have been captured by the user via webcam.

Recognition system of motorcycle workshop equipment and tools in real time on this final project using a webcam and the computer. In outline, recognition system electronic devices in real time will be made can ben descibed based on the following order: The image of a device electronics from the webcam, , grayscaling, cropping, resizing, feature extraction with DCT 2-D (Discrete Cosine Transform two Dimension), and the calculation of the distance to the cosinus similarity.

Recognition system of motorcycle workshop equipment and tools in real time use webcam based on DCT feature extraction successfully made and works well. Based on the testing number variation coefficient DCT with electronic device, Recognition system of motorcycle workshop equipment and tools in real time made, capable resulted in recognition rate up to 100%. The minimum parameters to obtain up to 100% recognition rate is the number of DCT coefficients 171. resulted in recognition rate up to 100%.

Key word: Webcam, DCT 2-D (Discrete Cosine Transform two Dimension), cosine similarity.


(3)

i

TUGAS AKHIR

PENGENALAN PERALATAN BENGKEL MOTOR

SECARA REAL TIME MENGGUNAKAN WEBCAM

BERBASIS EKSTRAKSI CIRI DISCRETE COSINE

TRANSFORM DAN COSINE SIMILARITY

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik

Program Studi Teknik Elektro

NILAWATI SEKARSUCI NIM : 125114019

PROGRAM STUDI TEKNIK ELEKTRO

JURUSAN TEKNIK ELEKTRO

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA YOGYAKARTA


(4)

ii

FINAL PROJECT

RECOGNITION OF MOTORCYCLE WORKSHOP

EQUIPMENT AND TOOLS IN REAL TIME USING

WEBCAM BASED ON DISCRETE COSINE

TRANSFORM FEATURE EXTRACTION AND COSINE

SIMILARITY

Presented as Partial Fullfillment of Requirements To Obtain the Sarjana Teknik Degree In Electrical Engineering Study Program

NILAWATI SEKARSUCI NIM :125114019

ELECTRICAL ENGINEERING STUDY PROGRAM

DEPARTMENT OF ELECTRICAL ENGINEERING

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY YOGYAKARTA


(5)

(6)

(7)

(8)

vi

HALAMAN PERSEMBAHAN DAN

MOTTO HIDUP

MOTTO:

“ A pessimist sees the difficultm in everm opportunitm,

An optimist sees the opportunitm in everm difficultm “

Dengan ini kupersembahkan karya tuuis ini kepada :

Tuhan Yang Maha Esa,

Keuuargaku Tercinta,

Teman – teman yang terkasih,


(9)

(10)

viii

INTISARI

Perkembangan teknologi yang semakin cepat diberbagai bidang termasuk bidang elektronik, sehingga banyak perusahaan yang bergerak dibidang elektronik saling bersaing untuk menciptakan inovasi yang baru dalam produk elektronik yang diciptakan.Untuk itu para teknisi yang bekerja di perusahaan tersebut harus mampu menggunakan dan mengambil berbagai peralatan untuk melakukan pekerjaannya, sehingga tenaga dan waktu menjadi tidak efisien. Sistem yang akan dibuat meniru kemampuan mata manusia untuk mengenali objek berupa peralatan bengkel motor. Sistem ini akan secara otomatis membandingkan objek berupa macam-macam peralatan bengkel motor dengan gambar yang telah di capture oleh user melalui webcam.

Sistem pengenalan peralatan bengkel motor secara real time pada tugas akhir ini menggunakan webcam dan komputer. Secara garis besar, sistem pengenalan perangkat elektronika secara real time yang dibuat dapat dideskripsikan bedasarkan urutan berikut: citra peraalatan bengkel motor dari webcam, grayscaling, cropping, resizing, ekstaksi ciri dengan DCT 2-D (Discrete Cosine Transform two Dimension), dan similaritas kosinus.

Sistem pengenalan peralatan bengkel motor secara real time menggunakan webcam berbasis ekstraksi ciri DCT berhasil dibuat dan bekerja dengan baik. Berdasarkan hasil pengujian variasi jumlah koefisien DCT dengan perangkat elektronika, sistem pengenalan peralatan bengkel motor secara real time yang dibuat mampu menghasilkan tingkat pengenalan hingga 100%. Parameter minimum untuk mendapatkan tingkat pengenalan hingga 100% tersebut adalah jumlah koefisien DCT 171.

Kata kunci: Webcam, DCT 2-D (Discrete Cosine Transform two Dimension), Similaritas Kosinus.


(11)

ix

ABSTRACT

The increasingly rapid technological development in various fields, including the fields of electronics, so a lot of companies engaged in competing electronics to create new innovations in electronic products created. Therefore technicians who works in the company was to use and taking various equipment for doing the work, so the energy and time of being inefficient. The system will be made imitate the human eyes ability to recognize object of motorcycle shap devices. The system will be automatically comparing object in the form of various motorcycle shap devices with images that have been captured by the user via webcam.

Recognition system of motorcycle workshop equipment and tools in real time on this final project using a webcam and the computer. In outline, recognition system electronic devices in real time will be made can ben descibed based on the following order: The image of a device electronics from the webcam, , grayscaling, cropping, resizing, feature extraction with DCT 2-D (Discrete Cosine Transform two Dimension), and the calculation of the distance to the cosinus similarity.

Recognition system of motorcycle workshop equipment and tools in real time use webcam based on DCT feature extraction successfully made and works well. Based on the testing number variation coefficient DCT with electronic device, Recognition system of motorcycle workshop equipment and tools in real time made, capable resulted in recognition rate up to 100%. The minimum parameters to obtain up to 100% recognition rate is the number of DCT coefficients 171. resulted in recognition rate up to 100%.

Key word: Webcam, DCT 2-D (Discrete Cosine Transform two Dimension), cosine similarity.


(12)

x

KATA PENGANTAR

Puji dan Syukur penulis panjatkan kepada Tuhan Yesus Kristus karena telah memberikan berkat-Nya sehingga penulis dapat menyelesaikan tugas akhir ini dengan baik.Penulis menyadari bahwa keberhasilan menyelesaikan tugas akhir ini tidak lepas dari bantuan dan bimbingan dari berbagai pihak. Oleh karena itu, pada kesempatan ini penulis mengucapkan terima kasih kepada:

1. Bapak Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D., selaku Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.

2. Bapak Petrus Setyo Prabowo, S.T.,M.T., selaku Ketua Program Studi Teknik Elektro Universitas Sanata Dharma Yogyakarta.

3. Ibu Bernadetta Wuri Handayani, S.T.,M.T., selaku dosen pembimbing akademik yang telah mendampingi dan membimbing penulis selama studi.

4. Bapak Dr.M.Linggo Sumarno, M.T., selaku dosen pembimbing yang dengan penuh pengertian dan ketulusan hati memberi bimbingan, kritik, saran, serta motivasi dalam penulisan sekripsi ini.

5. Ibu Rita dan Bapak B. Djoko Untoro Suwarno, S.Si., M.T., selaku dosen

penguji yang telah memberikan masukan, bimbingan, dan saran dalam merevisi sekripsi ini.

6. Bapak/ Ibu dosen yang telah mengajarkan banyak hal memberikan perhatian dan ilmu yang tak ternilai harganya selama penulis menempuh pendidikan di

Program Studi Teknik Elektro, Fakultas Sains dan Teknologi, Universitas Sanata Dharma.


(13)

xi

8. Teman - teman saya yang telah membimbing dalam penulisan sekripsi.

9. Laboran Teknik Elektro dan Staff Sekretariat ( Akademika ) Fakultas Sains dan Teknologi Universitas Sanata Dharma yang telah membantu dalam hal administrasi. 10. Semua pihak yang tidak dapat disebutkan satu per satu atas semua dukungan yang

telah diberikan dalam penyelesaian tugas akhir ini.

Dengan segala kerendahan hati Penulis menyadari bahwa dalam penyusunan tugas akhir ini masih mengalami kesulitan dan tidak lepas dari kesalahan.Oleh karena itu, penulis mengharapkan masukan, kritik dan saran yang membangun agar tugas akhir ini menjadi lebih baik.Dan semoga tugas akhir ini dapat bermanfaat sebagaimana mestinya.

Yogyakarta, 12 September 2016 Penulis,


(14)

xii

DAFTAR ISI

HALAMAN JUDUL ...i-ii

HALAMAN PERSETUJUAN ... iii

HALAMAN PENGESAHAN ... iv

PERNYATAAN KEASLIAN KARYA ... v

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP ... vi

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA

ILMIAH UNTUK KEPENTINGAN AKADEMIK ... vii

INTISARI ... viii

ABSTRACT ... ix

KATA PENGANTAR ...x-xi

DAFTAR ISI ...xii-xiv

DAFTAR GAMBAR ...xv-xvi

DAFTAR TABEL ...xvi

BAB I PENDAHULUAN

1.1 Latar Belakang

...

1-3 1.2Tujuan dan Manfaat

...

3

1.3 Batasan Masalah

...

4

1.4 Metodologi Penelitian

...

5

BAB II DASAR TEORI

2.1 Pengenalan Pola

...

6-8 2.2 Citra

...

7

2.2.1 Definisi Citra

...

8-10 2.3 Preprocessing Citra

...

10


(15)

xiii

2.3.2 Resizing...11-12 2.3.3Citra Grayscale...12-14 A Citra RGB ...14-15 B Model Sistem Ruang Warna RGB...15 2.3.4 Thresholding

...

16 2.3.5 Transformasi Geometris Spasial

...

16-17 2.4 Discrete Cosine Transform Dua Dimensi ( DCT 2-D)

...

18-19 2.5 Zigzag Scanning

...

19-20 2.6 Fungsi Cosine Similarity

...

21 2.6 Template Matching

...

21-22

BAB III PERANCANGAN

3.1 Perancangan Sistem Hardware

...

23 3.1.1 Webcam

...

24-25 3.1.2 Lampu LED

...

25-26 3.2 Microsoft Visual Studio Express 2012 Aplikas C++

...

26 3.3 Alat - Alat Bengkel Motor

...

27 3.4 Perancangan Sistem Pengenalan Peralatan Bengkel Motor

...

28

3.4.1 Pengenalan Peralatan Bengkel Motor dengan

menggunakan Ekstraksi Ciri...28-31 A Perancangan Database Citra

Peralatan Bengkel Motor

...

32 3.4.2 Pengenalan Peralatan Bengkel Motor tanpa

menggunakan Ekstraksi Ciri...33 3.5 Aplikasi Sistem Peralatan Bengkel Motor

...

34


(16)

xiv

BAB IV HASIL DAN PEMBAHASAN

4.1Antarmuka Program Pengenalan Peralatan Bengkel Motor

secara Real Time menggunakan Webcam berbasis Ekstrasi Ciri Discrete Cosine

Transform dan Cosine Similarity

...

35-38 4.1.1 Tampilan Software Peralatan Bengkel Motor

secara Real Time.

...

39

4.1.2 Coding User Interface Aplikasi Pengenalan Alat Bengkel Motor

...

40

4.2 Coding Program Pengenalan Alat Bengkel Motor

...

41

4.2.1 Inisialisasi Webcam...41

4.2.2 Pembuatan Database Citra Training...

...

41-42 4.2.3 Preprocessing...

...

43-46 A Grayscale...43

B Threshold...43

C Cropping...44-46 D Resizing...46

4.2.4 Program Ekstraksi Ciri Discrete Cosine Transform

...

47-48 4.2.5 Fungsi Similaritas Kosinus

...

48-49 4.2.6 Tanpa Ekstraksi Ciri...

...

49-50 4.3 Pengujian Software Aplikasi Peralatan Bengkel Motor secara Real Time

...

50-51 4.3.1 Tabel Validasi...

...

.51-53 4.3.2 Hasil Testing

...

54-55

BAB V KESIMPULAN DAN SARAN

Kesimpulan

...

56

Saran

...

56

DAFTAR PUSTAKA ...

57-59

LAMPIRAN


(17)

xv

DAFTAR GAMBAR

Gambar 2.1. Sistem Pengenalan Pola dengan Pendekatan Statistik

...

6

Gambar 2.1. Sistem Pengenalan Pola dengan Pendekatan Struktural

...

8

Gambar 2.3.1.Proses Pemotongan Citra

...

.11

Gambar 2.3.2.(a) Citra Grayscale sebelum diresizing.

...

.12

Gambar 2.3.2.(b) Citra hasil resizing.

...

.12

Gambar 2.2.3. Intesitas Grayscale

...

13

Gambar 2.2. Citra Grayscale yang diubah menjadi nilai matriks

...

13

Gambar 2.3.3.(a) Citra RGB...14

Gambar 2.3.3.(a) Citra Grayscale ...14

Gambar 2.3.3. Pengaturan Citra RGB...15

Gambar 2.3.3. Skema Warna RGB dalam kubus...15

Gambar 2.3.3. Citra Warna RGB...15

Gambar 2.3.5. Transformasi Spasial

...

16

Gambar 2.4.(a) Citra Grayscale....

...

19

Gambar 2.4.(b) Citra Hasil Proses DCT...

...

19

Gambar 2.5. Urutan Zigzag Scanning DCT Blocks

...

20

Gambar 2.5. Path Zigzag Scanning...20

Gambar 3.1. Block System....

...

23

Gambar 3.1.1. Webcam M-Tech......

...

24

Gambar 3.1.2. Lampu LED......

...

26

Gambar 3.2.kunci inggris, kunci soket, obeng plus, senter, kunci ring, kunci L, kunci pass, palu, tang, penggaris

...

.27

Gambar 3.4.1. Diagram Alir Program Keseluruhan

...

..28

Gambar 3.4.1.(a) Diagram Alir Preprocessing...30

Gambar 3.4.1.(b) Diagram Alir Ekstraksi Ciri...

...

30

Gambar 3.4.1.(a) Diagram Alir Fungsi Jarak...31

Gambar 3.4.1.(b) Diagram Alir Penentuan Hasil Pengenalan..

...

31


(18)

xvi

Gambar 3.6. Diagram Alir Pengenalan Tanpa Ekstraksi Ciri

...

.33

Gambar 3.5. Tampilan Utama Program Pengenalan Bengkel Motor

...

34

Gambar 4.1. Ikon Microsoft Visual Studio Express 2012...37

Gambar 4.2. Microsoft Visual Studio Express 2012...37

Gambar 4.3. Tampilan Coding Test...38

Gambar 4.4. Tampilan User Interface...

...

38

Gambar 4.5. Tampilan Testing Alat Bengkel Motor

...

39

Gambar 4.6. Tampilan Hasil Nilai DCT dan Tanpa Ekstraksi Ciri

...

39

Gambar 4.7. Tampilan Output Alat Bengkel Motor....

...

40

DAFTAR TABEL Tabel 2.3.3. Jenis-jenis Transformasi Affine ...17

Tabel 3.1.2. Spesifikasi Webcam M-Tech WB-200...24

Tabel 3.5. Keterangan Tampilan Utama Program...34 Tabel 4.8. Tabel Validasi Testing...…………. 51-53


(19)

BAB I

PENDAHULUAN

1.1 . Latar Belakang

Perkembangan teknologi yang semakin pesat dan maju diberbagai bidang termasuk bidang elektronika, sehingga banyak perusahaan yang bergerak dibidang elektronika saling bersaing untuk menciptakan inovasi yang baru dalam produk elektronika. Oleh karena itu, para teknisi yang bekerja di perusahaan tersebut harus mampu menggunakan dan mengambil berbagai peralatan untuk melakukan pekerjaannya, sehingga tenaga dan waktu menjadi tidak efisien. Alat yang bisa menggantikan tugas seorang teknisi dalam mengambil peralatan sangat dibutuhkan untuk mengatasi hal tersebut adalah sebuah robot seperti robot visual. Robot visual adalah robot yang mampu melihat obyek disekitarnya dan dilengkapi dengan lengan yang mampu mengambil obyek tersebut.

Robot visual dilengkapi sebuah sensor yang mampu melihat obyek. Sensor tersebut diharapkan mampu bekerja seperti mata pada manusia. Untuk itu dibutuhkan piranti keras dan piranti lunak untuk mengatasi persoalan tersebut. Berdasarkan pernyataan di atas, penulis ingin membuat bagian dari suatu robot visual yang mampu melihat seperti indera manusia yaitu mata manusia yang mampu melihat dan mengenali suatu peralatan bengkel motor.

Indera penglihatan manusia memiliki kemampuan mengidentifikasi bentuk atau obyek yang memiliki kemiripan tidak sempurna memiliki ketidakpresisian, mata manusia akan mengumpulkan benda atau obyek yang dilihatnya sesuai dengan kategori yang telah ditentukan oleh manusia ke dalam kelompok sejenis. Contoh kemampuan indera penglihatan manusia dalam membedakan atau mengklasifikasikan bentuk atau obyek yang dilihatnya misalkan meja. Melihat dari fungsi, ciri dan karakterisktik meja yang pernah dilihat akan disimpan dalam otak manusia. Meskipun indera penglihatan manusia tidak melihat segala jenis dan bentuk meja yang ada, namun indera penglihatan manusia dapat mengidentifikasi suatu obyek yang sejenis.


(20)

Indera penglihatan manusia yang mampu mengidentifikasi suatu obyek telah mengembangkan akal dan pikiran manusia dalam menciptakan penemuan–penemuan yangsangat penting dan dapat diterima secara luas oleh masyarakat umum dari berbagai lapisan untuk mengurangi ketertinggalan dalam proses kehidupan bermasyarakat. Salah satu penemuan hebat manusia adalah terciptanya suatu alat yang dapat membantu aktivitas manusia seperti komputer. Komputer dari tahun ke tahun selalu berkembang, mulai dari kegunaan maupun bentuknya. Dulu komputer hanya berfungi untuk alat bantu menghitung saja, namun seiring perkembangan zaman yang semakin maju, berkembang pesat, serba

modern dan praktis yang disertai dengan kemajuan ilmu pengetahuan dan teknologi yang

sangat pesat telah mendatangkan banyak manfaat bagi peningkatan taraf hidup, peradaban, serta martabat manusia. Kini komputer tidak hanya digunakan untuk alat bantu hitung semata namun telah membantu manusia dalam bekerja. Kini komputer telah dapat digunakan untuk mengidentifikasi pola golongan darah, pengenalan jenis ikan, tulisan/abjad, angka, alat, tanda tangan seseorang, sidik jari, iris mata, bahkan wajah manusia sekalipun. Dalam mengidentifikasi pengenalan pola–pola seperti yang telah disebutkan diatas banyak metode yang dapat digunakan seperti menggunakan Fast

FourierTransform (FFT), Metode Hidden Markov, Discrete Cosine Transform (DCT)[1],

Transformasi Wavelet Diskrit[1], Transformasi Walsh, Metode Korelasi[9], Jaringan Syaraf Tiruan (JST)[8], dan masih banyak lainnya. Saat sekarang perkembangan ilmu dan teknologi bidang otomatisasi yang cenderung meningkat adalah kebutuhan akansoftware pengenalan atau pengolahan citra, sebagai salah satu sarana pengidentifikasian suatu alat dalam rupa gambar yangdigunakan dalam kegiatan belajar sehari–hari dan bekerja. Alat yang digunakan berupa peralatan tulis–menulis maupun peralatan kantor atau kerja. Banyak penelitian–penelitian yang telah dilakukan tentang pengenalan obyek. Contoh pengenalan obyek yang pernah dilakukan antara lain pengenalan pola sidik jari menggunakan Jaringan Syaraf Tiruan dengan metode pembelajaran Backpropogation[16], Pengenalan pola golongan darah menggunakan jaringan syaraf tiruan (JST) backpropogation, Pengenalan Wajah Menggunakan Alih Ragam Wavelet Haar dan Jarak

Euclidean, Pengenalan rumput laut menggunakan Euclidean distance berbasis ekstraksi

fitur, Pengenalan sidik jari manusia dengan matriks kookurensi aras keabuan (Gray Level


(21)

Sistem yang akan dibuat hanya pengenalan peralatan bengkel motor secara real

time menggunakan webcam. Penulis menemukan penelitian – penelitian sebelumnya yang

berkaitan dengan pengenalan suatu obyek, diantaranya pernah diteliti oleh Khrisna [1] tentang indentifikasi obyek berdasarkan bentuk dan ukuran dengan metode pengenalan

pola secara statistik menggunakan teori peluang dengan obyek-obyek yang dapat dikenali

adalah lingkaran, bujur sangkar, persegi panjang. Selain itu, penulis juga menemukan penelitian lain oleh Amrullah [2] yang melakukan penelitian tentang pengenalan benda (mobil) di jalan raya dengan metode Kalman Filter.

Sistem yang akan dibuat meniru kemampuan mata manusia untuk mengenali obyek berupa peralatan bengkel motor. Sistem ini akan secara otomatis membandingkan obyek berupa macam-macam peralatan bengkel motor dengan gambar yang telah di capture oleh user melalui webcam, sehingga akan dihasilkan perbandingan jarak terkecil. Obyek peralatan bengkel motor diproses terlebih dahulu melalui preprocessing. Selanjutnya diproses dengan menggunakan ekstraksi ciri Discrete Cosine Transform (DCT) kemudian digunakan sebagai database. Karakter yang telah dicapture dibandingkan dengan database dengan menggunakan fungsi similaritas kosinus dan hasil perbandingannya terkecil merupakan obyek yang telah dicapture. Semua proses dilakukan menggunakan software Microsoft Visual Studio Express 2012 Aplikasi C++ baik dalam pemrogramannya maupun visualisasi pengambilan gambarnya. Jika proses pengambilan gambar telah sesuai dengan

database, maka user dapat melihat hasil yang telah dicapture berupa teks pada layar

monitor.

1.2. Tujuan dan Manfaat Penelitian

Tujuan dari penulisan tugas akhir ini adalah membuat sebuah sistem yang dapat mengenali berbagai macam peralatan bengkel motor secara real time menggunakan ekstraksi ciri Discrete Cosine Transform (DCT) dan similaritas kosinus.

Manfaat penelitian ini adalah membantu pengguna aplikasi dalam mengenali jenis-jenis peralatan bengkel motor dan sebagai dasar dalam penelitian selanjutnya untuk membuat sebuah sistem yang dapat mengenali dan mengambil suatu obyek.


(22)

1.3. Batasan Masalah

Sistem pengenalan peralatan bengkel motor terdiri dari perangkat keras (hardware) dan perangkat lunak (software). Hardware berupa webcam dan Fixture Software yang digunakan adalah Microsoft Visual Studio Express 2012 Aplikasi C++. Microsoft Visual Studio Express 2012 Aplikasi C++ digunakan untuk mengatur seluruh proses pengolahan data yang dicapture oleh webcam.

Pada perancangan sistem ini, penulis fokus pada pembuatan software komputer untuk memproses pengenalan peralatan bengkel motor sedangkan untuk hardware berupa

webcam dengan merk “M-Tech WB-200” dan fixture. Penulis menetapkan beberapa

batasan masalah pada perancangan ini, yaitu sebagai berikut :

a. Masukkan citra berupa 10 peralatan bengkel motor meliputi Kunci L, obeng plus, Senter, kunci ring, kunci soket, kunci pas, palu, tang, Penggaris.

b. Pada fixture sudah disediakan tempat berupa foam / busa cat warna hitam dop untuk meletakkan peralatan bengkel motor.

c. Pengambilan citra menggunakan webcam M-Tech WB-200 yang diletakkan tegak lurus diatas peralatan bengkel motor dengan jarak ± 50 cm.

d. Posisi kamera untuk pengambilan citra fix (terkunci) e. Rotasi pengambilan citra 0º, 90º, 180º dan 270º

f. Posisi peletakkan peralatan bengkel motor tetap, yaitu dengan cara menempelkan peralatan bengkel motor dengan kayu yang sudah diberi foam cat hitam dop dibentuk sesuai dengan ukuran 20cm x 25cm .

g. Intensitas cahaya diberi lampu LED pada alat tersebut

h. Menggunakan fungsi similaritas kosinus sebagai metode perbandingan untuk mengenali peralatan bengkel motor.

i. Pengenalan peralatan bengkel motor ini dibuat dengan menggunakan

software pemrograman Microsoft Visual Studio Express 2012 aplikasi C++.

j. Ditambahkan dalam tahap preprocessing threshold.

k. Citra untuk masukkan DCT berupa citra grayscale yang kemudian diberi

threshold untuk memperjelas batas hitam dan putih .

l. Ukuran citra masukan DCT adalah 256 x 256 pixel.


(23)

1.4. Metodologi Penelitian

1.4.1. Metode Studi Pustaka

Melakukan studi pustaka yaitu membaca dan mempelajari buku-buku dan jurnal ilmiah mengenai pengenalan suatu objek serta informasi dari website, pemograman

Visual Basic, Image Processing, Discrete Cosine Transform, Cosine Similarity, Threshold dan media-media lain yang berkaitan dengan topik yang diambil.

1.4.2. Langkah - langkah dalam Pengerjaan Tugas Akhir

a. Pengumpulan bahan-bahan referensi berupa buku-buku dan jurnal-jurnal ilmiah mengenai pengenalan suatu obyek, pemograman Microsoft Visual Studio Express 2012 Aplikasi C++, Image Processing, Discrete Cosine Transform,

Cosine Similarity, Threshold.

b. Perancangan subsistem software dan hardware

Tahap ini bertujuan untuk mencari bentuk model yang optimal dari sistem yang akan dibuat dengan mempertimbangkan berbagai faktor-faktor permasalahan dan kebutuhan-kebutuhan yang ditentukan.

c. Pembuatan subsistem software dan hardware

Sistem akan bekerja apabila user menekan tombol push button yang ditampilkan dalam tampilan visual yang disediakan dalam software. Kemudian sistem akan mengolah data yang diterima dari webcam dan mulai menampilkan proses menampilkan video (record) sampai user memberikan perintah untuk pengambilan gambar (capture). Kemudian user memberikan interupsi untuk memulai pengenalan peralatan bengkel motor. Setelah itu, Microsoft Visual Studio Express 2012 Aplikasi C++ akan melakukan proses pengolahan gambar peralatan bengkel motor yang sudah di capture oleh webcam dan ditampilkan berupa teks pada layar monitor.

d. Analisa data

Dilakukan dengan menyelidiki pengaruh variasi jumlah koefisien DCT dengan 5 kali percobaan (10 peralatan bengkel motor x5) terhadap tingkat pengenalan. Penyimpulan hasil dilakukan dengan mencari jumlah koefisien DCT yang menghasilkan tingkat pengenalan yang terbaik.


(24)

6

BAB II

DASAR TEORI

2.1 Pengenalan Pola

Pengenalan pola adalah suatu ilmu untuk mengklasifikasikan atau menggambarkan sesuatu berdasarkan kuantisasi fitur (ciri) atau sifat utama dari suatu obyek. Ciri – ciri tersebut digunakan untuk membedakan suatu pola yang lainnya. Ciri yang baik adalah ciri yang memiliki daya pembeda yang tinggi, sehingga pengelompokkan pola berdasarkan ciri yang dimiliki dapat dilakukan dengan tingkat keakuratan yang tinggi. Pengenalan pola bertujuan menentukan kelompok atau kategori pola berdasarkan ciri – ciri yang dimiliki oleh pola tersebut. Terdapat dua pendekatan dalam pengenalan pola yaitu pendekatan statistik dan pendekatan struktural[19].

a. Pendekatan Statistik

Pendekatan ini menggunakan teori-teori ilmu peluang dan statistik. Ciri-ciri yang dimiliki oleh suatu pola ditentukan distribusi statistiknya. Pola yang berbeda memiliki distribusi yang berbeda pula. Dengan menggunakan teori keputusan di statistik menggunakan distribusi ciri untuk mengklasifikasikan pola. Sistem pengenalan pola dengan pendekatan statistik ditunjukkkan oleh diagram pada Gambar 2.1.

Gambar 2.1. Sistem Pengenalan Pola dengan Pendekatan Statistik[4]

Gambar Preprocessing Feature extraction Pola Clasification

Feature selection Learning Pola terokan

Pengenalan ( recognition )


(25)

Ada dua fase dalam sistem pengenalan pola: (i) fase pelatihan dan (ii) fase pengenalan. Pada fase pelatihan, beberapa contoh citra dipelajari untuk menentukan ciri yang akan digunakan dalam proses pengenalan serta prosedur klasifikasinya. Pada fase pengenalan, citra diambil cirinya kemudian ditentukan kelas kelompoknya.

Preprocessing

Proses awal yang dilakukan untuk memperbaiki kualitas citra (edge enhancement) dengan menggunakan teknik-teknik pengolahan citra yang sudah diejelaskan pada bab-bab sebelum ini.

Feature Extraction

Proses mengambil ciri-ciri yang terdapat pada objek di dalam citra. Pada proses ini objek di dalam citra mungkin perlu dideteksi seluruh tepinya, lalu menghitung properti-properti objek yang berkaitan sebagai ciri. Beberapa proses ekstraksi ciri mungkin perlu mengubah citra masukan sebagai citra biner, melakukan penipisan pola, dan sebagainya.

Classification

Proses mengelompokkan objek ke dalam kelas yang sesuai. Feature Selection

Proses memilih ciri pada suatu objek agar diperoleh ciri yang optimum, yaitu ciri yang dapat digunakan untuk membedakan suatu objek dengan objek lainnya. Learning

Proses belajar membuat aturan klasifikasi sehingga jumlah kelas yang tumpang tindih dibuat sekecil mungkin.

b. Pendekatan Struktural

Pendekatan ini menggunakan teori bahasa formal. Ciri-ciri yang terdapat pada suatu pola ditentukan primitif dan hubungan struktural antara primitif kemudian menyusun tata bahasanya. Dari aturan produksi pada tata bahasa tersebut dapat menentukan kelompok pola. Gambar 2.1. memperlihatkan sistem pengenalan pola dengan pendekatan struktural.


(26)

dilakukan manusia, namun secara praktek penerapannya relatif sulit dibandingkan pengenalan pola secara statistik.

Gambar 2.1. Sistem Pengenalan Pola dengan Pendekatan Struktural[4]

Pendekatan yang digunakan dalam membentuk tata bahasa untuk mengenali pola adalah mengikuti kontur (tepi batas) objek dengan sejumlah segmen garis terhubung satu sama lain, lalu mengkodekan setiap garis tersebut (misalnya dengan kode rantai). Setiap segmen garis merepresentasikan primitif pembentuk objek.

2.2 Citra

2.2.1 Definisi Citra

Citra adalah gambar dua dimensi yang dihasilkan dari gambar digital dua dimensi yang kontinus menjadi gambar diskrit melalui proses sampling. Gambar analog dibagi menjadi N baris dan M kolom sehingga menjadi gambar diskrit. Persilangan antara baris dan kolom tertentu disebut dengan piksel.Contohnya adalah gambar/titik diskrit pada baris n dan kolom m disebut dengan piksel[n,m] [10]. Definisi lain dari citra menurut

Gambar Preprocessing

Primitive

extraction Clasification

Learning Pengenalan ( recognition )

Pelatihan ( training )

Pola terokan

Primitive selection


(27)

Kamus Webster adalah “suatu representasi, kemiripan, atau imitasi dari suatu obyek atau benda”. Secara harafiah, citra (image) adalah gambar pada bidang dwimatra (dua dimensi). Sedangkan ditinjau dari sudut pandang matematis, citra merupakan fungsi kontinu (continue) dari intensitas cahaya pada bidang dwimatra. Sumber cahaya menerangi obyek, obyek memantulkan kembali sebagian dari berkas cahaya tersebut. Pantulan cahaya ini ditangkap oleh alat-alat optik, misalnya mata pada manusia, kamera pemindai (scanner), dan sebaginya, sehingga bayangan obyek yang disebut citra tersebut terekam [11].

Citra (image) merupakan istilah lain untuk gambar, salah satu komponen multimedia yang memegang peranan sangat penting sebagai bentuk informasi visual. Citra mempunyai karakteristik yang tidak dimiliki oleh data teks dan kaya dengan informasi. Citra dapat diartikan sebagai gambar pada bidang dwimatra (dua dimensi).

Bila ditinjau dari sudut pandang matematis, maka citra merupakan fungsi kontinu (continue) dari intensitas cahaya pada bidang dwimatra. Sumber cahaya yang menerangi suatu obyek dan obyek akan memantulkan kembali sebagian dari berkas cahaya yang menerangi obyek tersebut. Pantulan cahaya ini ditangkap oleh alat–alat optic misalnya mata pada manusia, kamera, pemindai (scanner), dan sebagainya sehingga bayangan obyek yang disebut citra tersebut terekam[20].

Citra dibedakan menjadi dua: a. Citra diam (still images)

Citra diam adalah citra tunggal yang tidak bergerak sering di sebut citra saja. b. Citra bergerak (moving images)

Citra bergerak ialah rangkaian citra diam yang ditampilkan secara beruntun yang memberi kesan pada mata sebagai gambar bergerak.Setiap citra dalam rangkaiandisebut frame. Digitalisasi citra merupakan suatu representasi citra secara numerik dengan nilai–nilai diskrit. Digitalisasi adalah representasi citra dari fungsi malar (kontinu) menjadi nilai–nilai diskrit sehingga citra yang dihasilkan dari proses ini disebut citra digital (digitalimage)[11]. Derau (noise) merupakan suatu masalah yang terjadi pada proses pengolahan citra. Derau adalah gambar atau piksel yang mengganggu kualitas citra. Derau dapat disebabkan oleh gangguan fisis (optik) pada alat akuisisi maupun secara


(28)

disengaja akibat proses pengolahan yang tidak sesuai. Contoh terdapat bintik hitam atau putih yang muncul secara acak yang tidak diinginkan dalam citra, bintik acak ini disebut derau salt and pepper[9]. Salah satu proses awal pengolahan citra yaitu memperbaiki kualitas citra yang mengalami masalah atau gangguan. Perbaikan kualitas citra sangat diperlukan karena citra yang dijadikan obyek pembahasan, mempunyai kualitas yang buruk, misal citra mengalami derau pada saat pengiriman melalui saluran transmisi, citra terlalu terang atau gelap, kurang tajam, kabur, dan sebagainya. Melalui operasi pemrosesan awal inilah kualitas citra[10].

2.3 Preprocessing Citra

Proses preprocessing citra dilakukan untuk mendapatkan citra yang kualitas lebih baik dari pada citra sebelumnya dengan cara memanipulasi parameter-parameter citra, sehingga menghasilkan bentuk yang lebih cocok terhadap nilai-nilai piksel citra tersebut untuk proses selanjutnya. Proses preprocessing terdiri dari cropping, resizing, grayscale, dan threshold. Proses ini juga bertujuan untuk mempersiapkan citra yang akan diekstraksi ciri agar dapat dilanjutkan ke proses selanjutnya.

2.3.1 Cropping

Cropping adalah proses pemotongan citra pada koordinat tertentu pada area

citra[24]. Untuk memotong bagian dari citra digunakan dua koordinat, yaitu koordinat awal merupakan awal koordinat bagi citra hasil pemotongan dan koordinat akhir merupakan titik koordinat akhir dari citra hasil pemotongan. Sehingga akan membentuk bangun segi empat yang mana tiap-tiap pixel yang ada pada area koordinat tertentu akan disimpan dalam citra yang baru.


(29)

Citra asli Hasil Cropping

Gambar 2.3.1 Gambar Proses Pemotongan Citra

Dari gambar 2.4. dijelaskan bahwa terjadi proses pemotongan citra. Ukuran pixel awal citra asli adalah 5×5 pixel, setelah dilakukan proses pemotongan koordinat awal (1,1)dan koordinat akhir (3,3) dengan lebar 3 pixel dan tinggi 3 pixel akan terbentuk citra barudengan ukuran 3×3 pixel. Citra baru berisi nilai pixel dari koordinat (1,1) sampai koordinat(3,3).

2.3.2 Resizing

Resizing adalah suatu proses mengubah besarnya ukuran suatu citra dalam

piksel.Proses yang dilakukan pada resizing ini dengan cara mengurangi atau menambah jumlah piksel yang menyusun dalam suatu citra. Contoh hasil Resizing yang dilakukan dapat dilihat pada gambar 2.3.2


(30)

(a)

(b)

Gambar 2.3.2 (a) Citra Grayscale sebelum di resizing (b) Citra hasil resizing

2.3.3 Citra Grayscale

Citra dikatakan sebagai citra grayscale apabila sebuah citra tidak memiliki warna RGB atau dapat dikatakan sebuah citra yang memiliki nilai dari putih yang memiliki intensitas paling besar sampai hitam yang memiliki intensitas paling rendah seperti yang dapat dilihat pada gambar 2.2. Citra Grayscale terdiri dari x dan y dalam spasial koordinat dan memiliki nilai intensitasnya masing–masing. Pada citra grayscale setiap gambar memiliki intensitas antara 0 (hitam) hingga 255 (putih) dalam citra 8 bitnya[9].


(31)

Gambar 2.2. citra grayscale yang diubah menjadi nilai matriks[12].

Dengan algoritma perhitungan tingkat keabuan, piksel dari suatu citra yang mengandung warna–warna RGB (red, green and blue) diubah menjadi warna dalam berbagai tingkat keabuan (I) dengan menjumlahkan nilai warna red, green, and blue kemudian dibagi tiga sehingga didapatkan nilai rata–rata dari ketiga warna[10].

Proses awal yang banyak dilakukan dalam image processing adalah mengubah citra berwarna menjadi citra grayscale, hal ini digunakan untuk menyederhanakan model citra. Seperti telah dijelaskan di depan, citra berwarna terdiri dari 3 layer matrik yaitu R-layer, G-layer dan B-layer. Sehingga untuk melakukan proses - proses selanjutnya tetap diperhatikan tiga layer di atas.

Bila setiap proses perhitungan dilakukan menggunakan tiga layer, berarti dilakukan tiga perhitungan yang sama. Sehingga konsep itu diubah dengan mengubah 3 layer di atas menjadi 1 layer matrik grayscale dan hasilnya adalah citra grayscale. Dalam citra ini tidak ada lagi warna, yang ada adalah derajat keabuan. [10]

Salah satu cara untuk melakukan konversi gambar ke grayscale adalah dengan menggunakan sistem warna YUV, yaitu dengan mengkonversi RGB ke YUV lalu mengambil komponen Y ( iluminasi ). Hal ini dilakukan menggunakan persamaan sebagai berikut :

Gray = Y = ( 0.2989 x R ) + ( 0.5870 x G ) + ( 0.1140 x B ) (2.1)

Untuk mencoba proses konversi citra berwarna menjadi citra grayscale ini dapat dibuat program seperti gambar 2.2.


(32)

Gambar 2.3.3 (a) Citra RGB. (b) Citra Grayscale

A. Citra Red Green Blue ( RGB )

Suatu citra biasanya mengacu ke citra RGB. Sebenarnya bagaimana citra disimpan dan dimanipulasi dalam komputer diturunkan dari teknologi televisi, yang pertama kali mengaplikasikannya untuk tampilan grafis komputer. Jika dilihat dengan kaca pembesar, tampilan monitor komputer akan terdiri dari sejumlah triplet titik warna merah (RED), hijau (GREEN) dan biru (BLUE). Tergantung pada pabrik monitornya untuk menentukan apak titik tersebut merupakan titik bulat atau kotak kecil, tetapi akan selalu terdiri dari 3 triplet red, green dan blue.

Citra dalam komputer tidak lebih dari sekumpulan sejumlah triplet dimana setiap triplet terdiri atas variasi tingkat keterangan (brightness) dari elemen red, green dan blue. Representasinya dalam citra, triplet akan terdiri dari 3 angka yang mengatur intensitas dari Red (R), Green (G) dan Blue (Blue) dari suatu triplet. Setiap triplet akan merepresentasikan 1 pixel (picture element). Suatu triplet dengan nilai 67, 228 dan 180 berarti akan mengeset nilai R ke nilai 67, G ke nilai 228 dan B ke nilai 180. Angka-angka RGB ini yang seringkali disebut dengan color values. Pada format .bmp, citra setiap pixel pada citra direpresentasikan dengan dengan 24 bit, 8 bit untuk R, 8 bit untuk G dan 8 bit untuk B. Pengaturan citra RGB dapat dilihat pada gambar 2.2.


(33)

Gambar 2.3.3 Pengaturan citra RGB[11]

B. Model Sistem Ruang Warna RGB

Dalam model RGB, setiap warna memperlihatkan komponen spectral primary red,

green dan blue. Model ini didasarkan pada sistem koordinat kartesian. Sub space warna

yang dicari adalah kubus yang ditunjukkan pada Gambar 2.2. Nilai RGB pada tiga sudut adalah cyan, magenta dan yellow. Perbedaan warna dalam model ini adalah titik yang berada di dalam kubus dan didefinisikan oleh penyebarannya dari faktor origin.

Gambar 2.3.3 Skema Warna RGB Dalam Kubus

Jumlah bit yang digunakan untuk mempresentasikan setiap piksel dalam space RGB disebut pixel dept, jumlah bit dalam citra RGB dimana setiap citra red, green dan

blue adalah citra 8 bit. Dalam kondisi setiap warna piksel RGB mempunyai 24 bit. Citra full color sering digunakan untuk menyatakan citra berwarna RGB 24 bit. Total jumlah

warna dalam citra 24 bit adalah (224) = 16.777.216.

Gambar 2.3.3 Citra Warna RGB[10]


(34)

Thresholding digunakan untuk mengatur derajat keabuan yang ada pada citra, thresholding juga untuk memisahkan bagian citra yang sesuai dengan objek (foreground)

dan latar belakangnya (background), serta mengkonversi data citra menjadi data biner (binerisasi), dengan tujuan agar proses selanjutnya menjadi mudah. Setiap citra meskipun mengandung objek yang sama, tentunya memiliki karakteristik yang berbeda dalam sifat-sifat pencahayaannya. Hal ini menyebabkan sulitnya menentukan nilai threshold yang cocok untuk diterapkan ke semua kondisi citra. Oleh karena setiap citra mempunyai nilai threshold masing-masing, maka dapat dilakukan pembelajaran berupa pengetahuan sifat-sifat dari masing - masing citra yang akan diproses sebelum menentukan nilai

threshold yang cocok. Dengan demikian, setelah melalui trial and error akan ditemukan

nilai threshold yang kurang lebih cocok diterapkan untuk semua citra.

2.3.5 Transformasi Geometris Spasial

Citra f didefinisikan sebagai sistem koordinat a(w,z), yang mengalami distorsi geometris yang menghasilkan citra g dengan sistem koordinat (x,y) maka transformasi dapat dinyatakan dengan (x,y) = T{(w,z)}[25]. Contoh dalam trasnformasi spasial sebagai berikut:

Jika (x,y) =T{(w,z)} = (w/2, z/2), distrosi adalah penyusutan f dengan setengah dimensi spasial seperti ditunjukkan pada gambar 2.6.

Gambar 2.3.5 Transformasi Spasial[11]

Bentuk umum yang digunakan pada transformasi spasial adalah affine transform (Wolberg [1990] ). Transformasi affine dapat ditulis dalam bentuk matrik


(35)

Transformasi ini dapat menskalakan , men-translate, atau menggunting sejumlah titik, tergantung pada pilihan nilai T. Jenis-jenis transformasi affine terdapat pada tabel 2.1.


(36)

2.4 Discrete Cosine Transform Dua Dimensi ( DCT 2-D)

DCT dimensi satu untuk mengolah sinyal-sinyal dimensi satu seperti bentuk gelombang suara. Sedangkan untuk citra sinyal dua dimensi, diperlukan versi dua dimensi dari DCT.. Rumus DCT 2-D adalah:

Rumus DCT 2-D diatas sering juga disebut sebagai Forward Discrete Cosine

Transform (FDCT). DCT 2-D dihitung dengan menerapkan transformasi 1-D secara

terpisah pada baris dan kolomnya, sehingga dapat dikatakan bahwa 2-D DCT sparable dalam dua dimensi. Seperti kasus satu-dimensi, setiap elemen dari transformasi merupakan inner product dari masukan dan basis fungsinya, dalam kasus ini, basis fungsinya adalah matriks n x m. Setiap dua dimensi basis matriks merupakan outer

product dua basis vektor satu-dimensinya.

Setiap basis matriks dikarakterisasikan frekuensi spasial horizontal dan vertikal. Frekuensi horizontal meningkat dari kiri ke kanan, dan dari atas ke bawah secara vertikal.


(37)

Ini menunjukkan tingkat signifikansi secara perceptual artinya basis fungsi dengan frekuensi rendah memiliki sumbangan lebih besar bagi perubahan penampakan citra dibandingkan basis fungsi yang memiliki frekuensi tinggi. Nilai konstanta basis fungsi terletak di bagian kiri atas sering disebut sebagai basis fungsi DC, dan DCT koefisien yang bersesuaian disebut koefisien DC (DC coefficient) [16]

Gambar 2.4. (a) Citra Grayscale. (b) Citra hasil proses DCT

2.5 Zig Zag Scanning

ZigZag scanning berfungsi untuk merepresentasikan Matriks 2-D dari koefisien

DCT terkuantisasi dalam bentuk vektor satu dimensi. Setelah kuantisasi, sebagian besar koefisien frekuensi rendah (pojok kiri atas) adalah nol. Dengan memanfaatkan (menghilangkan) nilai frekunsi rendah hasil dari zig-zag scanning.

ZigZag scanning mumungkinkan semua koefisien DC (Direct Current) dan AC

(Alternanting Current) dengan nilai yang terendah akan diproses terlebih dahulu. Gambar 2.5 menunjukkan urutan zigzag scanning [11].


(38)

Gambar 2.5 Urutan zigzag scanning DCT Blocks

Proses yang merubah matriks 8 x 8 hasil proses kuantisasi kedalam vektor 1 x 28, dengan pembacaan secara zig-zag scanning. Pada proses zig-zag scanning ini nilai nol pada frekuensi tinggi cenderung terbaca secara berurutan.

Contoh hasil proses zig-zag scanning yang merubah matrks 8 x 8 hasil proses kuantisasi ke dalam vector 1 x 64.


(39)

2.6 Fungsi Cosine Similarity

Proses ini membandingkan peralatan bengkel motor yang dicapture dengan

database. Hasil dari perbandingan adalah jarak minimum yang kemudian akan digunakan

dalam proses selanjutnya. Dalam sistem ini yang digunakan adalah fungsi similaritas kosinus ( Cosine Similarity ).

Cosine similarity adalah salah satu metode perhitungan similarity yang paling

populer untuk diterapkan pada dokumen teks.

Keterangan :

Jika A == B Maka Similaritas Kosinus adalah 1 Jika A == - B Maka Similaritas Kosinus adalah - 1

2.7 Template Matching

Template matching adalah sebuah teknik dalam pengolahan citra digital untuk menemukan bagian-bagian kecil dari gambar yang cocok dengan template gambar. Template matching merupakan salah satu ide yang digunakan untuk menjelaskan bagaimana otak kita mengenali kembali bentuk-bentuk atau pola-pola. Template dalam konteks rekognisi pola menunjuk pada konstruk internal yang jika cocok (match ) dengan stimulus penginderaan mengantar pada rekognisi suatu obyek. Atau pengenalan pola terjadi jika terjadi kesesuaian antara stimulus indera dengan bentuk mental internal.


(40)

Gagasan ini mendukung bahwa sejumlah besar template telah tercipta melalui pengalaman hidup kita. Tiap-tiap template berhubungan dengan suatu makna tertentu. Kenggulan Template Matching yaitu :

a. Untuk mengenal bentuk, huruf, maupun bentuk visual lainnya diperlukan kontak dengan bentuk internal.

b. Template matching didasarkan pada ketepatan konfigurasi informasi penginderaan misalnya barcode.

Kelemahan Template Matching yaitu :

Jika perbandingan eksternal obyek dgn internal obyek 1:1, maka obyek yang berbeda sedikit saja dengan template tidak akan dikenali. Oleh karena itu, jutaan template yang spesifik perlu dibuat agar cocok dengan berbagai bentuk geometri yang kita lihat dan kenal. Jika memang penyimpanan memori di otak seperti ini, otak tentu seharusnya sangat kewalahan dan pencarian informasi akan memakan waktu, padahal pada kenyataannya tidak demikian.

Template Matching dapat dibagi antara dua pendekatan, yaitu : pendekatan berbasis fitur dan pendekatan berbasis template. Pendekatan berbasis fitur menggunakan fitur pencarian dan template gambar seperti tepi atau sudut, sebagai pembanding pengukuran matrik untuk menemukan lokasi template matching yang terbagus di sumber gambar[9].


(41)

23

BAB III

PERANCANGAN

3.1 Perancangan Sistem Hardware

Unit Perekam Unit Pengenalan dan Penampil

Input citra peralatan Output citra peralatan

bengkel motor bengkel motor

Gambar 3.1. Block System

Preprocessing Kunci Inggris

Deteksi Alat (DCT + Similaritas kosinus dan Template Matching

Proses pengenalan peralatan bengkel motor


(42)

3.1.1 WebCam

Webcam atau web camera adalah sebuah kamera video digital kecil yang dihubungkan ke computer melalui (biasanya) USB port. Banyak merk webcam yang tersedia, misalnya Logitech, SunFlower, dan lainnya. Resolusi dari webcam biasanya sama berkisar antara 352×288 atau 640×480 piksel atau bahkan lebih besar, ada yang kualitasnya hingga 5 Megapiksel. Webcam sebuah kamera video digital berukuran kecil dihubungkan ke komputer melalui port USB atau port COM.[5].Contoh gambar webcam dapat dilihat pada gambar 3.1.1

Gambar 3.1.1 Webcam M-Tech[5]

Tabel 3.1.2 Spesifikasi Webcam M-Tech WB-200

Interface to PC High Speed USB 2.0

Sensor Type CMOS Color Sensor

Resolution Up to 5.0 Mega Pixel (Software Interpolation)

Lens Features F/2.0 (F=4.8mm - Infinity )

Frame Rate 640 x 480 @30fps (VGA)


(43)

Focus Type Adjustable Manual Focus Ring

3.1.2 Lampu LED

Lampu LED atau kepanjangannya Light Emitting Diode adalah suatu lampu indikator dalam perangkat elektronika yang biasanya memiliki fungsi untuk menunjukkan status dariperangkat elektronika tersebut.Misalnya pada sebuah komputer, terdapat lampu LED power dan LED indikator untuk processor, atau dalam monitor terdapat juga lampu LED power dan power saving. Lampu LED terbuat dari plastik dan dioda semikonduktor yang dapat menyala apabila dialiri tegangan listrik rendah (sekitar 1.5 volt DC). Bermacam-macam warna dan bentuk dari lampu LED, disesuaikan dengan kebutuhan dan fungsinya.

Built-In Microphone Available, with 3.5mm Audio Plug

Face Tracking Not Available

Still Image Capture By Software / OS Application

Night Vision Support Not Available

LED Lightning Support Not Available

Pan / Tilt Model Yes (All Direction with Tilt and Swivel Base)

Operating System Support Windows XP SP2 / Linux

Dimension (WHD) (53.5 x 53.2 x 24.4) mm Folding, Cable Length : 125 cm


(44)

Fungsi Lampu LED

LED (Light Emitting Diode) merupakan sejenis lampu yang akhir-akhir ini muncul dalam kehidupan kita. LED dulu umumnya digunakan pada gadget seperti ponsel atau PDA serta komputer. Sebagai pesaing lampu bohlam dan neon, saat ini aplikasinya mulai meluas dan bahkan bisa kita temukan pada korek api yang kita gunakan, lampu emergency dan sebagainya.

Gambar 3.1.2 Lampu LED

3.2 Microsoft Visual Studio Express 2012 Aplikasi C++

Visual C++ adalah sebuah produk Integrated Development Environment (IDE) untuk bahasa pemrograman C dan C++ yang dikembangkan Microsoft. Visual C++ merupakan salah satu bagian dari paket Microsoft Visual Studio. Bahasa ini merupakan bahasa pemrograman tingkat tinggi (kompleks). Visual C++ adalah bahasa pemrograman yang cukup populer. Hampir semua file DLL pada sistem operasi Windows dibuat menggunakan bahasa ini.

Visual C++ dapat berjalan lebih cepat pada windows karena hanya memerlukan memori yang kecil. Dalam hal ini, Ms. Visual C++ lebih unggul jika dibandingkan dengan Ms. Visual Basic. Ini menjadi salah satu alasan Microsoft Visual C++ lebih dipilih programmer untuk membuat berbagai aplikasi desktop maupun antivirus.


(45)

3.3 Alat-Alat Bengkel Motor

Alat – alat bengkel motor digunakan sesuai dengan alat-alat bengkel motor yang sering digunakan pada umumnya oleh para teknisi di bengkel motor. Dari berbagai macam alat- alat bengkel motor dipilih 10 alat yang meliputi kunci inggris, kunci soket, obeng plus, Senter, kunci ring, kunci L,kunci pas, palu, tang, dan penggaris dapat dilihat pada gambar 3.3

1. Kunci inggris 2. kunci soket 3.Obeng Plus 4. Senter

5. Kunci Ring 6. Kunci L 7. kunci pas


(46)

3.4 Perancangan Sistem Pengenalan Alat Bengkel Motor

3.4.1 Pengenalan Peralatan Bengkel Motor dengan

Menggunakan Ekstraksi Ciri

Gambar 3.4.1 Diagram Alir Program Keseluruhan Masukkan : Peralatan

Bengkel Motor

Perekaman dan Pengambilan Citra Peralatan Bengkel Motor

Pemrosesan Citra (Preprocessing )

Ekstraksi Ciri (DCT – 2D)

Fungsi Similaritas

Kosinus Database training

Penentuan Keluaran

Keluaran : Teks

Stop


(47)

Program pengenalan peralatan bengkel motor secara real time akan dieksekusi saat

user menjalakan program ini. Setelah tampilan utama terlihat, proses pengenalan sudah

dapat dilakukan.User pertama kali menekan tombol “Camera ON” maka program akan mulai melakukan proses perekaman dari webcam. Jika citra peralatan bengkel motor sudah terekam, proses pengenalan peralatan bengkel motor dapat dilakukan dengan menekan tombol “Proses”, “Ekstraksi Ciri”, “Pengenala”. Proses pengenalan akan berhenti apabila

user menekan tombol “Selesai”. Alur keseluruhan pengenalan peralatan bengkel motor

secara real time diperlihatkan pada gambar 3.6 .

Alur program keseluruhan meliputi perekaman dan pengambilan citra peralatan bengkel motor dengan menggunakan webcam, setelah melakukan proses pengambilan citra (capture) kemudian citra diproses melalui pemrosesan citra (preprocessing) setelah itu kemudian diekstraksi ciri menggunakan ekstraksi ciri (DCT) Discrete Cosine Transform. Kemudian citra uji tersebut dibandingkan dengan citra database menggunakan fungsi similaritas kosinus. Setelah dibandingkan dengan menggunakan fungsi similaritas kosinus maka akan didapat hasil yang mendekati dan hasil yang mendekati tersebut kemudian ditampilkan dalam text box. Setelah hasil pengenalan diperoleh maka user dapat menekan tombol “Selesai”.

Alur program perekaman dan pengambilan citra peralatan bengkel motor dapat dilihat pada Gambar 3.7. Pada saat user menekan tombol camera on maka webcam akan berstatus on / terkoneksi dengan program. Setelah camera on maka peralatan bengkel motor disiapkan pada tempat yang telah disediakan untuk proses pengambilan citra. Kemudian untuk mengambil citra peralatan bengkel motor maka user dapat menekan tombol capture.

Setelah user melakukan proses pengambilan citra (capture), kemudian citra peralatan bengkel motor tersebut memasuki tahap pemrosesan citra (preprocessing).

Preprocessing yang dilakukan meliputi proses cropping dan resizing dengan ukuran piksel

256 x 256. Alur program pemrosesan citra dapat dilihat pada gambar 3.8a.

Setelah proses pemrosesan citra (preprocessing) selesai, maka proses yang dilakukan sselanjutnya adalah proses ekstraksi ciri Discrete Cosine Transform two

dimesion (DCT 2-D) yang mengacu pada persamaan (2.3) dengan tujuan untuk membagi

citra dengan piksel 256 x 256 ke dalam blok-blok kecil dengan ukuran tetap yang kemudian dikonveriskan dari domain spasial ke domain DCT dan membentuk lapisan DCT.


(48)

Setelah memperoleh nilai jarak minimun antara nilai ekstraksi ciri citra input dengan nilai ekstraksi ciri pada database. Kemudian hasil dari nilai jarak minimum tersebut akan ditampilkan berupa teks (Kunci L, Kunci Inggris , Obeng plus, Senter, Kunci ring, Kunci soket, Kunci pas, Palu, Tang, Penggaris). Alur program penentuan hasil pengenalan dapat dilihat pada gambar 3.9b.

(a) (b)

Gambar 3.4.1. (a) Diagram Alir Preprocessing (b) Diagram Alir Ekstraksi Ciri

Start

Masukkan :

Peralatan Bengkel Motor

Grayscalling, Thresholding

Cropping

Resizing

Keluaran :

Citra Hasil Preprocessing

Stop Stop

Masukkan :

Citra Hasil Preprocessing

DCT – 2D

Hitung Nilai Absolut DCT – 2D

Zigzag Scanning

Keluaran :

Matriks Citra Terekstraksi


(49)

(a) (b)

Gambar 3.4.1 (a) Diagram Alir Fungsi Jarak (b) Diagram Alir Penentuan Hasil Pengenalan

Start

Masukkan :

Matrik citra terekstraksi Matrik citra database

Hitung Similaritas : r = sqrt (matrik citra terekstraksi – matrik citra database)^2

Keluaran : Hasil perhitungan Similaritas (r1……...r7)

Stop

Stop

Start

Masukkan :

Matrik perhitungan Similaritas (r1……...r7)

Penginisialisaikan (r1……...r7) dengan nama :

Kunci L, Kunci Inggris , Obeng

plus,Senter, Kunci ring, Kunci inggris, Kunci pas, Palu, Tang, Penggaris

Citra keluaran = Similaritas maksimum (r1……...r7)


(50)

A. Perancangan Database Citra Peralatan Bengkel Motor

Sebagai penentuan pengenalan peralatan bengkel motor, dibutuhkan citra acuan yang disebut database. Database hendaknya memiliki ciri yang sudah diketahui oleh sistem. Untuk memperoleh database pada setiap peralatan bengkel motor yang akan dikenali pada sistem pengenalan peralatan bengkel motor, penulis mengambil 10 jenis peralatan bengkel motor (Kunci L, Kunci Inggris, Obeng plus, Senter, Kunci ring, Kunci soket, Kunci pas, Palu, Tang, Penggaris).

Proses pembuatan database peralatan bengkel motor harus melalui proses dari input citra peralatan bengkel motor, preprocessing dan ekstraksi ciri Discrete Cosine Transform

two dimension (DCT-2D) dapat dilihat pada Gambar 3.2

Dalam pemrosesan citra training seharusnya tidak perlu fungsi ini (Fungsi SK)

Citra Training

Citra Testing

Gambar 3.4.1 Model pembuatan database peralatan bengkel motor

Proses pengambilan citra peralatan bengkel motor terdiri dari 10 peralatan bengkel motor yaitu Kunci L, Kunci Inggris , obeng plus, Senter, kunci ring, kunci soket, kunci pas, palu, tang, Penggaris. Kemudian citra peralatan bengkel motor akan di proses melalui

preprocessing yang terdiri dari grayscale, threshold, cropping, resizing, setelah citra

peralatan bengkel motor diproses melalui preprocessing, selanjutnya citra peralatan bengkel motor hasil preprocessing masuk ke dalam proses ekstraksi ciri DCT-2D untuk diambil data matriknya, kemudian data matrik tersebut disimpan dalam format .mat yang digunakan sebagai database.

Preprocessing (Cropping,Resizing,

Grayscale,dan Threshold )

Ekstraksi ciri DCT (Zig-zag scanning) Database Training (peralatan bengkel motor) Ekstraksi ciri DCT (Zig-zag scanning) Fungsi similaritas kosinus Output Preprocessing (Cropping,Resi zing,Grayscale, dan Threshold)


(51)

3.4.2 Pengenalan Peralatan Bengkel Tanpa Ekstraksi Ciri

Gambar 3.4.2 Diagram Alir Pengenalan Tanpa Ekstraksi Ciri Masukkan :Peralatan

Bengkel Motor

Perekaman dan Pengambilan Citra Peralatan Bengkel Motor

Pemrosesan Citra (Preprocessing )

Template Matching Database training (tanpa DCT)

Penentuan Keluaran

Keluaran : Teks

Start


(52)

3.5 Aplikasi Sistem Pengenalan Peralatan Bengkel Motor

Tampilan utama program pada Microsoft Visual Studio Express 2012 Aplikasi C++ yang digunakan dalam penelitian ini diperlihatkan pada Gambar 3.5

Gambar 3.5. Tampilan utama program pengenalan peralatan bengkel motor

Tampilan ini dibuat agar user dapat dengan mudah mengoperasikan program ini serta mengerti hasil dari sistem pengenalan peralatan bengkel motor. Beberapa keterangan dari tampilan program dijelaskan pada tabel 3.5

Tabel 3.5 Keterangan Tampilan Utama Program

Nama Bagian Deskripsi

Window tampilan citra Bidang tampilan citra untuk menampilakan

streaming kamera yang digunakan untuk mengambil data citra testing

[Push Button] Output [Push Button] Output untuk mengeksekusi hasil

tampilan citra pada bidang no.1

sehingga menghasilkan teks berupa hasil Ektraksi Ciri dan Tanpa Ekstraksi Ciri

Teks Output Ektraksi Ciri

Teks Output Tanpa Ekstraksi Ciri


(53)

35

BAB IV

PEMBAHASAN

Pada bab ini akan dibahas tentang hasil dari program aplikasi Pengenalan Peralatan Bengkel Motor Secara Real Time. Uji coba dilakukan untuk mengetahui ketepatan program untuk dapat mengenali beberapa peralatan bengkel dengan menggunakan metode DCT (Discrete Cosine Transform). Uji coba dilakukan dengan menggunakan 10 peralatan bengkel yang digunakan sebagai citra training dan juga citra uji serta alat bengkel lain yang juga digunakan sebagai alat uji.

4.1. Antarmuka Program Pengenalan Peralatan Bengkel Motor

secara Real Time menggunakan webcam berbasis Ekstrasi Ciri

Discrete cosine Transfrom dan Cosine Similarity.

Perancangan program menggunakan Microsoft Visual Studio Express 2012 Pada pengujian program menggunakan laptop dengan spesifikasi:

Prosesor : Intel (R) Core(TM) Duo CPU P8600 @ 2.40GHz 2.40 GHz

RAM : 3.00 GB

Tipe sistem : 64-bit Operating System

Dalam tampilan antarmuka Program “PENGENALAN PERALATAN BENGKEL” terdapat tombol “Deteksi Alat” yang akan memproses DCT (Discrete Cosine Transfrom) dan Tanpa Ekstraksi Ciriberupa nilai kemiripan untuk mendeteksi alat bengkel pada saat melakukan testing .

Proses menjalankan program untuk pengenalan alat bengkel dapat dilakukan dengan menjalankan langkah-langkah di bawah ini:

1. Mengklik dua kali ikon Microsoft Visual Studio Express 2012 Aplikasi C++ pada layar desktop dengan gambar ikon seperti Gambar 4.1.


(54)

Gambar 4.1. Ikon Microsoft Visual Studio Express 2012

2. Setelah melakukan langkah 1, akan tampil tampilan utama software Microsoft Visual Studio Express 2012 seperti Gambar 4.2.

Gambar 4.2 Microsoft Visual Studio Express 2012

3. Sebelum membuka tampilan program utama dari software Microsoft Visual Studio Express 2012, perlu memastikan terlebih dahulu pada Current Directory (1) sudah sesuai dengan tempat penyimpanan program yang telah dirancang.


(55)

4. Pilih “Solution Explorer” lalu buka file coding “test.cpp” seperti gambar 4.3

Gambar 4.3 Tampilan Coding Test

5. Dari hasil diatas akan muncul coding program test.cpp lalu “klik” tombol “Local

Windows Debugger” akan muncul tampilan antarmuka / User Interface


(56)

6. Setelah langkah ke 5 selesai, lakukan testing alat bengkel motor, kemudian letakkan alat bengkel motor sample “Palu” ke dalam foam yang sudah dibentuk seperti pola “palu” yang terdapat di alat pengetesan. Seperti gambar 4.5

Gambar 4.5 Tampilan Testing Alat Bengkel Motor

7. Setelah langkah ke 6 klik tombol “deteksi alat” , maka akan muncul hasil DCT dan Template Matching, dan nilai jarak / batas testing dan training. Seperti gambar 4.6


(57)

4.1.1Tampilan Software Aplikasi Pengenalan Peralatan Bengkel

Secara Real Time.

Gambar 4.7 Tampilan Output Alat Bengkel Motor

1. Bidang tampilan citra : Untuk menampilakan streaming kamera yang digunakan untuk mengambil data citra testing

2. [Push Button] Deteksi Alat : Untuk mengeksekusi hasil tampilan citra pada bidang no.1 sehingga menghasilkan teks berupa hasil DCT dan Template matching

3. Teks Output Ektraksi Ciri

4. Teks Output Tanpa Ekstraksi Ciri 5. Pilihan resizing


(58)

4.1.2 Coding User Interface Aplikasi Pengenalan Alat Bengkel

Motor

std::vector<cv::Point> tombol;

tombol.emplace_back(cv::Point(length+margin, margin)); tombol.emplace_back(cv::Point(length+panel-margin, margin));

tombol.emplace_back(cv::Point(length+panel-margin, margin+thickness)); tombol.emplace_back(cv::Point(length+margin, margin+thickness)); cv::polylines(canvas, tombol, true, cv::Scalar(50), 1);

cv::putText(canvas, "deteksi alat", cv::Point(length+margin+30, margin+13),

CV_FONT_NORMAL, 0.5, cv::Scalar(0), 1); std::vector<cv::Point> blank;

blank.emplace_back(cv::Point(length+margin, margin+thickness+1)); blank.emplace_back(cv::Point(length+panel-margin, margin+thickness+1)); blank.emplace_back(cv::Point(length+panel-margin, length-margin)); blank.emplace_back(cv::Point(length+margin, length-margin)); std::vector< std::vector<cv::Point> > blanks;

blanks.push_back(blank); cv::Rect viewPort(0,0

, length, length);

while (key != 27) {

HWND hwnd = (HWND)cvGetWindowHandle(nameWindow.c_str()); key = cv::waitKey(50);

if (hwnd == 0 || !IsWindowVisible(hwnd)) { key = 27;

break; }

vc >> frame;

cv::Mat bin = frame(crop);

cv::cvtColor(bin, bin, CV_RGB2GRAY);

cv::resize(bin, bin, cv::Size(length, length)); cv::Mat feed = canvas(viewPort);

bin.copyTo(feed);

switch(mouse) {

case 67: // (C)heck

key = mouse; mouse = 0;


(59)

4.2 Coding Program Pengenalan Peralatan Bengkel Motor

4.2.1 Inisialisasi Webcam

int idCamera = -1; // cek di aplikasi camera (index mulai dari 0

config cfg("..\\..\\sample\\dct.xml");

// TO_DO: get cameraid

idCamera = 1;

cv::VideoCapture vc(idCamera); std::string nameWindow = "DCT - CS";

cv::namedWindow( nameWindow, cv::WINDOW_AUTOSIZE ); cv::Mat frame;

cv::Rect crop(0,0 // ujung kiri atas

, 479, 479); // ukuran crop

4.2.2 Pembuatan Database Citra Training

Pembuatan Database citra training dilakukan dengan terlebih dahulu menentukan jumlah dan jenis tool yang akan digunakan. Tool yang digunakan disini berjumlah 10 dengan jenis sebagai berikut:

Kunci Soket Kunci Inggris kunci L Kunci Ring Senter Obeng Plus Penggaris Palu Tang Kunci Pas

Masing-masing tool akan diambil data citra nya dengan dilakukan rotasi 0o, 90o, 180o, dan 270. Sehingga total citra dari tool yang digunakan untuk database berjumlah 40buah.


(60)

Coding pembuatan database training :

<?xml version="1.0" encoding="utf-8"?>

<BasisData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Persentase>100</Persentase>{

<Alat batas="0.5" nama="kunci_ring">..\..\sample\kunci_ring.png</Alat> <Alat batas="0.5" nama="kunci_ring_90">..\..\sample\kunci_ring_90.png</Alat> <Alat batas="0.5" nama="kunci_ring_180">..\..\sample\kunci_ring_180.png</Alat> <Alat batas="0.5" nama="kunci_ring_270">..\..\sample\kunci_ring_270.png</Alat> <Alat batas="0.5" nama="palu">..\..\sample\palu.png</Alat>

<Alat batas="0.5" nama="palu_90">..\..\sample\palu_90.png</Alat> <Alat batas="0.5" nama="palu_180">..\..\sample\palu_180.png</Alat> <Alat batas="0.5" nama="palu_270">..\..\sample\palu_270.png</Alat> <Alat batas="0.5" nama="senter">..\..\sample\senter.png</Alat> <Alat batas="0.5" nama="senter_90">..\..\sample\senter_90.png</Alat> <Alat batas="0.5" nama="senter_180">..\..\sample\senter_180.png</Alat> <Alat batas="0.5" nama="senter_270">..\..\sample\senter_270.png</Alat> <Alat batas="0.5" nama="kunci_L">..\..\sample\kunci_L.png</Alat> <Alat batas="0.5" nama="kunci_L_90">..\..\sample\kunci_L_90.png</Alat> <Alat batas="0.5" nama="kunci_L_180">..\..\sample\kunci_L_180.png</Alat> <Alat batas="0.5" nama="kunci_L_270">..\..\sample\kunci_L_270.png</Alat> <Alat batas="0.5" nama="kunci_inggris">..\..\sample\kunci_inggris.png</Alat> <Alat batas="0.5" nama="kunci_inggris_90">..\..\sample\kunci_inggris_90.png</Alat> <Alat batas="0.5"nama="kunci_inggris_180">..\..\sample\kunci_inggris_180.png</Alat> <Alat batas="0.5"nama="kunci_inggris_270">..\..\sample\kunci_inggris_270.png</Alat> <Alat batas="0.5" nama="obeng_plus">..\..\sample\obeng_plus.png</Alat>

<Alat batas="0.5" nama="obeng_plus_90">..\..\sample\obeng_plus_90.png</Alat> <Alat batas="0.5" nama="obeng_plus_180">..\..\sample\obeng_plus_180.png</Alat> <Alat batas="0.5"nama="obeng_plus_270">..\..\sample\obeng_plus_270.png</Alat> <Alat batas="0.5" nama="tang">..\..\sample\tank.png</Alat>

<Alat batas="0.5" nama="tang_90">..\..\sample\tank_90.png</Alat> <Alat batas="0.5" nama="tang_180">..\..\sample\tank_180.png</Alat> <Alat batas="0.5" nama="tang_270">..\..\sample\tank_270.png</Alat> <Alat batas="0.5" nama="kunci_pas">..\..\sample\kunci_pas.png</Alat> <Alat batas="0.5" nama="kunci_pas_90">..\..\sample\kunci_pas_90.png</Alat> <Alat batas="0.5" nama="kunci_pas_180">..\..\sample\kunci_pas_180.png</Alat> <Alat batas="0.5" nama="kunci_pas_270">..\..\sample\kunci_pas_270.png</Alat> <Alat batas="0.5" nama="kunci_soket">..\..\sample\kunci_soket.png</Alat> <Alat batas="0.5"nama="kunci_soket_90">..\..\sample\kunci_soket_90.png</Alat> <Alatbatas="0.5"nama="kunci_soket_180">..\..\sample\kunci_soket_180.png</Alat> <Alat batas="0.5"nama="kunci_soket_270">..\..\sample\kunci_soket_270.png</Alat> <Alat batas="0.5" nama="penggaris">..\..\sample\penggaris.png</Alat>

<Alat batas="0.5" nama="penggaris_90">..\..\sample\penggaris_90.png</Alat> <Alat batas="0.5" nama="penggaris_180">..\..\sample\penggaris_180.png</Alat> <Alatbatas="0.5"nama="penggaris_270">..\..\sample\penggaris_270.png</Alat> </BasisData>


(61)

4.2.3 Preprocessing

Proses preprocessing terdiri dari grayscale, threshold, cropping, dan resizing sebagai berikut :

A. Grayscale

cv::Rect viewPort(0,0 , length, length);

while (key != 27) {

HWND hwnd = (HWND)cvGetWindowHandle(nameWindow.c_str()); key = cv::waitKey(50);

if (hwnd == 0 || !IsWindowVisible(hwnd)) { key = 27;

break; }

vc >> frame;

cv::Mat bin = frame(crop);

cv::cvtColor(bin, bin, CV_RGB2GRAY);

cv::resize(bin, bin, cv::Size(length, length)); cv::Mat feed = canvas(viewPort);

bin.copyTo(feed);

switch(mouse) {

case 67: // (C)heck

key = mouse; mouse = 0;

break; }

B. Threshold

cv::Mat dTrain;

if (cfg.toApply) { cv::Mat temp;

if (cfg.method == 0) {

cv::threshold(training, temp, cfg.param1, 225,CV_THRESH_BINARY); } else {

cv::threshold(training, temp, 0, 225,CV_THRESH_BINARYCV_THRESH_OTSU); }

res = dct::FastDct(temp, dTrain); } else {

res = dct::FastDct(training, dTrain); }


(62)

C.

Cropping

static void onMouse( int event, int x, int y, int flag, void *data ) {

if( event != CV_EVENT_LBUTTONDOWN )

return;

if (data == 0) return;

int length = 256;

int panel = 200;

int margin = 10;

int thickness = 23;

if ( (length+margin) > x || x > (length+panel-margin)) return;

if ( (margin) > y || y > (panel-margin)) return;

unsigned char temp = 0;

if ( (margin) <= y && y <= (thickness+margin)) { temp = 67; // "C"

}

if (temp == 0) return;

unsigned char *sel;

try {

sel = static_cast<unsigned char *>(data); } catch(...) {

return; }

*sel = temp; }

int TestCroppedStreaming() {

int idCamera = -1; // cek di aplikasi camera (index mulai dari 0

config cfg("..\\..\\sample\\dct.xml");

// TO_DO: get cameraid

idCamera = 1;

cv::VideoCapture vc(idCamera); std::string nameWindow = "DCT - CS";

cv::namedWindow( nameWindow, cv::WINDOW_AUTOSIZE ); cv::Mat frame;

cv::Rect crop(0,0 // ujung kiri atas

, 479, 479); // ukuran crop

unsigned char key = 0;

unsigned char mouse = 0; detection det(cfg);

cv::setMouseCallback( nameWindow, onMouse, static_cast<void *>(&mouse) );

unsigned int i = 0;

int length = 256;


(63)

int margin = 10;

int lenZigzag = 35;

int thickness = 23; cv::Mat canvas(cv::Size(length+panel, length+thickness+margin), CV_8UC1, cv::Scalar(200));

Tombol utama(cv::Point(length+margin+40, margin+13), 'C', "Deteksi Alat", false); utama.sudut.emplace_back(cv::Point(length+margin, margin));

utama.sudut.emplace_back(cv::Point(length+panel-margin, margin));

utama.sudut.emplace_back(cv::Point(length+panel-margin, margin+thickness)); utama.sudut.emplace_back(cv::Point(length+margin, margin+thickness)); Tombol dct256(cv::Point(margin/2+3, length+margin/2+15), '8', "256", true); dct256.sudut.emplace_back(cv::Point(margin/2, length+margin/2));

dct256.sudut.emplace_back(cv::Point(margin/2 + lenZigzag, length+margin/2));

dct256.sudut.emplace_back(cv::Point(margin/2 + lenZigzag,length+thickness+margin/2)); dct256.sudut.emplace_back(cv::Point(margin/2 , length+thickness+margin/2));

Tombol dct128(cv::Point(margin/2+52, length+margin/2+15), '7', "128", true); dct128.sudut.emplace_back(cv::Point(margin/2+50, length+margin/2));

dct128.sudut.emplace_back(cv::Point(margin/2+50 + lenZigzag, length+margin/2)); dct128.sudut.emplace_back(cv::Point(margin/2+50lenZigzag,length+thickness+margin/2)); dct128.sudut.emplace_back(cv::Point(margin/2+50 , length+thickness+margin/2));

Tombol dct64(cv::Point(margin/2+108, length+margin/2+15), '6', "64", true); dct64.sudut.emplace_back(cv::Point(margin/2+100, length+margin/2));

dct64.sudut.emplace_back(cv::Point(margin/2+100 + lenZigzag, length+margin/2)); dct64.sudut.emplace_back(cv::Point(margin/2+100lenZigzag,length+thickness+margin/2)); dct64.sudut.emplace_back(cv::Point(margin/2+100 , length+thickness+margin/2));

Tombol dct32(cv::Point(margin/2+157, length+margin/2+15), '5', "32", true); dct32.sudut.emplace_back(cv::Point(margin/2+150, length+margin/2));

dct32.sudut.emplace_back(cv::Point(margin/2+150 + lenZigzag, length+margin/2)); dct32.sudut.emplace_back(cv::Point(margin/2+150lenZigzag,length+thickness+margin/2)); dct32.sudut.emplace_back(cv::Point(margin/2+150 , length+thickness+margin/2));

Tombol dct16(cv::Point(margin/2+206, length+margin/2+15), '4', "16", true); dct16.sudut.emplace_back(cv::Point(margin/2+200, length+margin/2));

dct16.sudut.emplace_back(cv::Point(margin/2+200 + lenZigzag, length+margin/2)); dct16.sudut.emplace_back(cv::Point(margin/2+200 +lenZigzag,

length+thickness+margin/2));

dct16.sudut.emplace_back(cv::Point(margin/2+200 , length+thickness+margin/2)); Tombol dct8(cv::Point(margin/2+262, length+margin/2+15), '3', "8", true); dct8.sudut.emplace_back(cv::Point(margin/2+250, length+margin/2));

dct8.sudut.emplace_back(cv::Point(margin/2+250 + lenZigzag, length+margin/2)); dct8.sudut.emplace_back(cv::Point(margin/2+250 + lenZigzag,

length+thickness+margin/2));

dct8.sudut.emplace_back(cv::Point(margin/2+250 , length+thickness+margin/2)); TombolPlus kontrolUi;

kontrolUi.tombols.emplace_back(utama); kontrolUi.tombols.emplace_back(dct256); kontrolUi.tombols.emplace_back(dct128); kontrolUi.tombols.emplace_back(dct64);


(64)

kontrolUi.tombols.emplace_back(dct32); kontrolUi.tombols.emplace_back(dct16); kontrolUi.tombols.emplace_back(dct8);

cv::setMouseCallback( nameWindow, onMouse, static_cast<void *>(&kontrolUi) ); std::vector<cv::Point> blank;

blank.emplace_back(cv::Point(length+margin, margin+thickness+1)); blank.emplace_back(cv::Point(length+panel-margin, margin+thickness+1)); blank.emplace_back(cv::Point(length+panel-margin, length-margin)); blank.emplace_back(cv::Point(length+margin, length-margin)); std::vector< std::vector<cv::Point> > blanks;

blanks.push_back(blank); cv::Rect viewPort(0,0

, length, length);

while (key != 27) {

GambarTombol(canvas, kontrolUi.tombols, key);

HWND hwnd = (HWND)cvGetWindowHandle(nameWindow.c_str()); key = cv::waitKey(50);

if (hwnd == 0 || !IsWindowVisible(hwnd)) { key = 27;

break; }

D. Resizing

vc >> frame;

cv::Mat bin = frame(crop);

cv::cvtColor(bin, bin, CV_RGB2GRAY);

cv::resize(bin, bin, cv::Size(length, length)); cv::Mat feed = canvas(viewPort);

feed.setTo(cv::Scalar(0)); // set item semua

cv::Rect viewSelected(0,0 , length, length); feed = canvas(viewSelected); bin.copyTo(feed);

switch(kontrolUi.terpilih) {

case '8': length = 256; break;

case '7': length = 128; break;

case '6': length = 64; break;

case '5': length = 32; break;

case '4': length = 16; break;

case '3': length = 8; break;

case 67: // (C)heck

key = kontrolUi.terpilih;

kontrolUi.terpilih = 1; // reset

break; }


(65)

4.2.4 Program Ekstraksi Ciri (Discrete Cosine Transform)

#include "stdafx.h"

#include "dct.h"

#include "error.h"

#include <iostream>

namespace dct {

int ConvertToDct(const cv::Mat &src, cv::Mat &dst) {

if (src.data == 0) return ErrorCode::ARG_ZERO_SIZED_IMAGE;

if (src.rows != src.cols) return ErrorCode::ARG_IMAGE_NOT_SQUARE; cv::Mat tmp1, tmp2;

src.convertTo(tmp1, CV_32FC1, 1.0/255); // , 1.0/255

cv::dct(tmp1, tmp2);

tmp2.convertTo(dst, CV_8UC1, 255);

return 0; }

int InverseDct(const cv::Mat &src, cv::Mat &dst) {

if (src.data == 0) return ErrorCode::ARG_ZERO_SIZED_IMAGE;

if (src.rows != src.cols) return ErrorCode::ARG_IMAGE_NOT_SQUARE; cv::Mat tmp1, tmp2;

src.convertTo(tmp1, CV_32FC1); // , 1.0/255

cv::idct(tmp1, tmp2);

tmp2.convertTo(dst, CV_8UC1);

return 0; }

// TO_DO: optimize this

const cv::Mat GenerateDctMatrix(unsigned int order) {

// TO_DO: make sure order is the power of 2

cv::Mat kernel(order, order, CV_64F);

double valRow0 = sqrt(1.0 / static_cast<double>(order));

double alpha = sqrt(2.0 / static_cast<double>(order));

double denominator = static_cast<double>(2*order);

for (unsigned int j = 0; j < order; j++) { kernel.at<double>(0, j) = valRow0;

for (unsigned int i = 1; i < order; i++) {

double numerator = CV_PI * static_cast<double>(i * (2*j + 1)); kernel.at<double>(i, j) = alpha * cos(numerator / denominator); }

}

return kernel; }

int FastDct(const cv::Mat &src, cv::Mat &dst) {

if (src.data == 0) return ErrorCode::ARG_ZERO_SIZED_IMAGE;

if (src.rows != src.cols) return ErrorCode::ARG_IMAGE_NOT_SQUARE;

// TO_DO: make sure order is the power of 2

cv::Mat tmp1;

src.convertTo(tmp1, CV_64F);

cv::Mat kernel = GenerateDctMatrix(src.rows);


(66)

return 0; }

int FastInverseDct(const cv::Mat &src, cv::Mat &dst) {

if (src.data == 0) return ErrorCode::ARG_ZERO_SIZED_IMAGE;

if (src.rows != src.cols) return ErrorCode::ARG_IMAGE_NOT_SQUARE;

if (src.type() != CV_64F) return ErrorCode::ARG_IMAGE_HAS_INVALID_TYPE;

// TO_DO: make sure order is the power of 2

cv::Mat tmp1;

src.convertTo(tmp1, CV_64F);

cv::Mat kernel = GenerateDctMatrix(src.rows); cv::Mat tmp2 = kernel.t() * tmp1 * kernel; tmp2.convertTo(dst, CV_8U);

return 0; }

Zig Zag Scanning

int zigzag(const cv::Mat &src, cv::Mat &dst) {

if (src.data == 0) return ErrorCode::ARG_ZERO_SIZED_IMAGE;

if (src.rows != src.cols) return ErrorCode::ARG_IMAGE_NOT_SQUARE;

unsigned int size = src.rows;

unsigned int totalData = size * size;

dst = cv::Mat(1, totalData, src.type());

unsigned int i, j, n;

for (i = n = 0; i < size * 2; i++) {

for (j = ((i < size) ? 0 : i-size+1); j <= i && j < size; j++) {

int idx = (i&1)? j*(size-1)+i : (i-j)*size+j;

//s[idx] = n++;

int row = idx / size;

int col = idx % size;

dst.at<double>(0, n++) = src.at<double>(row, col);

//s[n++] = static_cast<unsigned int>(m.at<unsigned char>(row, col));

} }

return 0; }

4.2.5 Fungsi Similaritas Kosinus

double CheckSimilarity(const cv::Mat &m1, const cv::Mat &m2, unsigned int persentase){

cv::Mat z1, z2;

unsigned int size;

if (persentase <= 0 || persentase >= 100) { pixelscanning(m1, z1);

pixelscanning(m2, z2); size = z1.cols;

unsigned int size = z1.cols; } else {


(1)

posY += t hi ckness; } el se {

cv: : put Text ( canvas, r es. al at Templ at e, cv: :Poi nt( posX, posY) , CV_FONT_NORMAL, 0. 5, cv: :Scal ar( 0) , 1) ;

posY += t hi ckness;

cv: : put Text ( canvas, " ni l ai : " +

pat ch: : t o_st r i ng( r es. ni l ai Templ at e) , cv: :Poi nt( posX, posY) , CV_FONT_NORMAL, 0. 5, cv: :Scal ar( 0) , 1) ;

} }

br eak; }

cv: : i mshow( nameWi ndow, canvas) ; }

r et ur n 0; }

i nt Det eksi Al at ( ) {

conf i g cf g(" . . \ \ . . \ \ sampl e\ \ dct . xml ") ;

/ / Basi sDat a db( " . . \ \ . . \ \ s ampl e\ \ basi sdat a. xml " ) ; Basi sDat a db( cf g. basi sDat a) ;

i f ( ! db. I sVal i d( ) ) {

st d: : cout << " Conf i g t i dak bi sa di baca. " << " \ n";

r et ur n - 1; }

st d: :vect or<cv: :Mat> t empl at es;

f or (unsi gned i nt i = 0; i < db. Dat a( ) . s i ze( ) ; i ++) {

cv: :Mat t r ai ni ng = cv: : i mr ead( db. Dat a( ) [ i ] . l okasi Gambar , CV_LOAD_I MAGE_GRAYSCALE) ;

i f ( t r ai ni ng. dat a == 0) {

st d: : cout << " Dat abase unt uk al at ' " << db. Dat a( ) [ i ] . namaAl at << " ' t i dak bi sa di baca. " << " \ n"

<< " Past i kan gambar ' " << db. Dat a( ) [ i ] . l okasi Gambar << " ' t er sedi a. " << " \ n";

r et ur n - 1; }

cv: :Mat dTr ai n;

i nt r es = dct : : Fast Dct ( t r ai ni ng, dTr ai n) ; t empl at es. empl ace_back( dTr ai n) ;

}

f or (unsi gned i nt i = 0; i < cf g. pat hTes t Cases. si ze( ) ; i ++) { cv: :Mat t est 1 = cv: : i mr ead( cf g. pat hTest Cases[ i ] , CV_LOAD_I MAGE_GRAYSCALE) ;

doubl e ni l ai Kemi r i panMaksi mal = - 2. 0;

unsi gned i nt i ndexMi r i p = 0; cv: :Mat d2;

i nt r es = dct : : Fast Dct ( t est 1 , d2) ;

f or (unsi gned i nt j = 0; j < t empl at es. s i ze( ) ; j ++) {

doubl e cs = dct : : Chec kSi mi l ar i t y( t empl at es[ j ] , d2, db. Per sent ase( ) ) ;

i f ( cs < db. Dat a( ) [ j ] . bat asMi ni mum) cont i nue;

i f ( cs > ni l ai Kemi r i panMaksi mal ) { ni l ai Kemi r i panMaksi mal = cs; i ndexMi r i p = j ;


(2)

i f ( ni l ai Kemi r i panMaksi mal > 0. 0f ) {

st d: : cout << " Gambar ' " << cf g. pat hTest Cases[ i ] << " ' kemungki nan adal ah ' "

<< db. Dat a( ) [ i ndex Mi r i p] . namaAl at << " ' dengan t i ngkat ki mi r i pan: " << ni l ai Kemi r i panMaksi mal << " \ n";

} el se {

st d: : cout << " Gambar ' " << cf g. pat hTest Cases[ i ] << " ' t i dak di kenal i " << " \ n";

} }

r et ur n 0; }

i nt _t mai n(i nt ar gc, _TCHAR* ar gv[ ] ) {

r et ur n Test Cr oppedSt r eami ng( ) ; / / Cr eat eConf i g( ) ;

/ / r et ur n 0;

i nt keySt r oke = 49; {

st d: : cout << " Pl ease sel ect what you i nt end t o do: \ n"; st d: : cout << " \ t <1> Get Sampl e\ n";

st d: : cout << " \ t <2> Test \ n";

st d: : cout << " \ t <3> Per bandi ngan\ n";

st d: : cout << " \ t <Esc> For get about i t , l et me out \ n";

bool noVal i dI nput = t r ue;

whi l e ( noVal i dI nput ) { keySt r oke = _get ch( ) ;

swi t ch ( keySt r oke) {

case 27: r et ur n 0;

case 49: noVal i dI nput = f al se; br eak; / / 1

case 50: noVal i dI nput = f al se; br eak; / / 2

case 51: noVal i dI nput = f al se; br eak; / / 3

def aul t: br eak; }

} }

swi t ch ( keySt r oke) {

case 49: Test Cr oppedSt r eami ng( ) ; br eak;/ / buat ambi l sampl e

case 50: Test Cosi neSi mi l ar i t y( ) ; br eak;/ / buat t est i ng

case 51: Det eksi Al at ( ) ; br eak;/ / apl i kasi akhi r j adi kaya gi ni ? }

st d: : cout << " Sel esai \ n"; _get ch( ) ;

r et ur n 0; }


(3)

LAMPIRAN II

HASIL TESTING


(4)

(5)

(6)