BAB II
LANDASAN TEORI
Dalam bab ini akan dipaparkan mengenai teori – teori dasar yang digunakan sebagai landasan yang digunakan dalam menyelesaikan tugas akhir ini. Berikut teori – teori yang digunakan :
2.1 Traffic Sign Detection and Recognition
Traffic Sign Detection and Recogniton (TSDR) adalah fungsi pendukung driver yang dapat digunakan untuk memberi tahu dan memperingatkan pengemudi tentang peringatan,perintah,larangan serta batasan mana yang mungkin efektif pada rentang jalan yang dilalui. Sistem dapat membantu sopir untuk mempertahankan kecepatan dengan normal, dan mematuhi rambu lalu lintas.. Karena sistem pendeteksi dan mengenali rambu lalu lintas di sisi jalan hanya menggunakan informasi penglihatan mungkin rambu yang kabur atau tertutup pohon mungkin tidak dikenali.(Gudigar, 2017)
2.2 Advanced Driver Asysten System (ADAS)
Ada banyak minat dari industri otomotif, pengemudi, pemilik armada dan otoritas angkutan umum untuk Advanced Driver Asysten System (ADAS) dalam lalu lintas jalan. Sistem ini merujuk ke perangkat elektronik untuk mendukung driver dalam melakukan berbagai tugas mengemudi (seperti penggabungan, kontrol kecepatan atau pemeliharaan jalur). Sehubungan dengan tugas pengemudi sebagai contoh dari sistem tersebut adalah menjaga kecepatan headway, menghindari tabrakan depan atau samping, sistem pemeliharaan jalur, sistem untuk kontrol kendaraan atau kesiapan keselamatan. Teknologi itu umumnya didasarkan pada konsep pengumpulan data tentang perilaku dan kendaraan lingkungan secara langsung untuk menganalisis pola dalam data sambil mencocokkan pola-pola dengan aturan keputusan (intelijen) dan aktivasi fungsi dukungan driver tertentu (Hall, 1995).
2.3 Pengolahan citra 2.3.1 Dasar Teori
Sebuah citra diubah ke bentuk digital agar dapat disimpan dalam memori komputer atau media lain. Proses mengubah citra ke bentuk digital bisa dilakukan
dengan beberapa perangkat, misalnya scanner, kamera digital, dan handycam.
Ketika sebuah citra sudah diubah ke dalam bentuk digital (selanjutnya disebut citra digital), bermacam-macam proses pengolahan citra dapat diperlakukan terhadap citra tersebut. (Beyeler, 2015)
Image processing atau sering disebut dengan pengolahan citra digital merupakan suatu proses dari gambar asli menjadi gambar lain yang sesuai dengan keinginan kita. Misal suatu gambar yang kita dapatkan terlalu gelap maka dengan image processing gambar tersebut bisa kita proses sehingga mendapat gambar yang jelas. Secara garis besar dapat diilustrasikan sebagai berikut :
Gambar 2.1 Blok Diagram Pengolahan Citra
Prinsip dasar dari pengolahan citra adalah pengolahan warna RGB pada posisi tertentu. Dalam pengolahan citra warna dipresentasikan dengan nilai hexadesimal dari 0x00000000 sampai 0x00ffffff. Warna hitam adalah 0x00000000 dan warna putih adalah 0x00ffffff. Definisi nilai warna di atas seperti gambar 2.2, variabel 0x00 menyatakan angka dibelakangnya adalah hexadesimal.
Gambar 2.2 Nilai warna RGB dalam hexadecimal
Terlihat bahwa setiap warna mempunyai range nilai 00 (angka desimalnya adalah 0) dan ff (angka desimalnya adalah 255), atau mempunyai nilai derajat keabuan 256 = 28. Dengan demikian range warna yang digunakan adalah (28)(
28)(28) = 224 (atau yang dikenal dengan istilah True Colour pada Windows). Nilai warna yang digunakan di atas merupakan gambungan warna cahaya merah, hijau dan biru seperti yang terlihat pada gambar 2.3. Sehingga untuk menentukan nilai dari suatu warna yang bukan warna dasar digunakan gabungan skala kecerahan dari setiap warnanya.
Gambar 2.3 Komposisi warna RGB(forums.sketchup.com)
Dari definisi diatas untuk menyajikan warna tertentu dapat dengan mudah dilakukan, yaitu dengan mencampurkan ketiga warna dasar RGB, table 2.1. berikut memperlihatkan contoh warna yang bisa digunakan.
Tabel 2.1 Contoh warna dalam hexadecimal
Nama Warna HEX RGB
Black #000000 rgb(0, 0, 0)
Green #008000 rgb(27, 128, 1)
Orange #FFA500 rgb(252, 165, 3)
Red #FF0000 rgb(255, 0, 0)
Yellow #FFFF00 rgb(255, 255, 0)
Blue #0000FF rgb(0, 0, 255)
Sumber : www.dianagung.com
Untuk mengetahui kombinasi warna, perlu dibuat suatu program yang dapat menampilkan warna sesuai dengan nilai yang dimasukkan sehingga dapat dicoba berbagai macam kombinasi warna RGB seperti gambar 2.3.
2.3.2 Pixel dan Resolusi Citra
Piksel merupakan satuan komponen terkecil dari gambar yang menentukan ukuran dari suatu gambar. Resolusi citra menyatakan ukuran bit dari suatu citra dalam satuan piksel. Untuk citra biner, piksel gambar yang kecerahannya dibawah tingkat tertentu diwakili oleh “0” sedangkan diatasnya diwakili oleh “1”, dengan demikian semua citra didalam memory komputer dapat diwakili oleh logika “1”
dan “0”. (Beyeler, 2015)
Sekarang kita dapat menghitung jumlah memory yang dibutuhkan untuk menyimpan citra tersebut. Sebagai contoh citra yang memiliki resolusi 256 x 256 piksel (jumlah total 65536), karena setiap piksel diwakili oleh “1” dan “0” dan computer membutuhkan satu bit untuk menyimpan setiap piksel, sehingga dibutuhkan total bit sekitar 64 Kb.
2.3.3 Hubungan Antara Pixel
Dalam masalah pengolahan citra, hubungan antar piksel merupakan hal yang sangat penting. Sebuah piksel p pada koordinat (x,y) mempunyai 4 tetangga horizontal dan vertical.
Hubungan antar piksel merupakan suatu konsep yang sangat penting yang digunakan untuk mendefinisikan batas-batas dari suatu objek serta bagian-bagian daerah kecil dari suatu gambar. Sebagai pertimbangan apakah dua piksel dihubungkan atau tidak, diperlukan beberapa kriteria. Diantaranya adalah apakah kedua piksel tersebut mempunyai prinsip kedekatan yang sesuai dengan konsep yang telah ditentukan, seperti konsep 4 neighbours atau 8-neighbours. Selain itu, apakah kedua piksel tersebut memiliki gray level yang sesuai dengan kriteria yang diinginkan. Sebagai contoh, jika dua piksel mempunyai nilai masing-masing 0 dan 1 dan keduanya merupakan bagian dari 4 neighbours, maka dinyatakan bahwa kedua piksel tersebut tidak ada hubungan, hal ini karena keduanya memiliki nilai yang berbeda.(Beyeler, 2015)
2.3.4 Ciri Gambar
Ciri merupakan suatu tanda yang khas, yang membedakan antara satu dengan yang lain. Ciri – ciri dasar dari gambar adalah:
Warna
 Ciri warna suatu gambar dapat dinyatakan dalam bentuk histogram dari gambar tersebut yang dituliskan dengan: H(r,g,b), dimana H(r,g,b) adalah jumlah munculnya pasangan warna r (red), g (green) dan b (blue) tertentu.
Bentuk
 Ciri bentuk suatu gambar dapat ditentukan oleh tepi (sketsa), atau besaran moment dari suatu gambar. Pemakaian besaran moment pada ciri bentuk
ini banyak digunakan orang dengan memanfaatkan nilai-nilai transformasi fourier dari gambar.
 Proses yang dapat digunakan untuk menentukan ciri bentuk adalah deteksi tepi, threshold, segmentasi dan perhitungan moment seperti (mean, median dan standard deviasi dari setiap lokal gambar).
Tekstur
 Ciri tekstur dari suatu gambar dapat ditentukan dengan menggunakan filter.
 Ciri tekstur ini sangat handal dalam menentukan informasi suatu gambar bila digabungkan dengan ciri warna gambar.
2.3.5 Citra Grayscale
Citra grayscale adalah citra yang hanya memiliki 1 buah kernel sehingga yang ditampilkan hanyalah nilai intensitas atau dikenal juga dengan istilah derajat keabuan. Karena jenis citra ini hanya memiliki 1 kanal saja, maka citra grayscale memiliki tempat penyimpanan yang lebih hemat. Jenis citra ini disebut juga sebagai 8-bit image karena untuk setiap nilai pikselnya memerlukan penyimpanan sebesar 8-bit.(Hidayatullah, 2017)
Gambar menunjukan perbedaan antara citra berwarna dengan citra grayscale.
Citra berwarna Citra grayscale
Gambar 2.4 Perbedaan citra berwarna dan citra grayscale
Secara teori ada beberapa cara dalam mengonversi citra berwarna RGB ke dalam citra grayscale. Cara yang paling mudah adalah dengan merata-ratakan semua nilai piksel RGB sesuai dengan persamaan (2.1) berikut.
𝒚 =𝟏
𝟑(𝑹 + 𝑮 + 𝑩) (2.1)
Didalam Python terdapat fungsi library OpenCV untuk mengkonversi citra berwarna menjadi citra grayscale dengan fungsi cv2.cvtColor. Berikut ini adalah cara mengkonversi citra berwarna manjadi citra grayscale.
import cv2
# Reading color image
img = cv2.imread("citra.png")
# Converting color image to grayscale image
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Dalam citra ini tidak ada lagi warna, yang ada adalah derajat keabuan. Untuk mengubah citra berwarna yang mempunyai nilai matrik masing-masing r, g dan b menjadi citra grayscale dengan nilai s, maka konversi dapat dilakukan dengan mengambil rata-rata dari nilai r, g dan b.
Gambar 2.5 Contoh Sample Grayscale (www.dfrobot.com) 2.3.6 Operator Canny
Metode yang sangat terkenal dalam pendeteksian tepi adalah metode Canny yang ditemukan pada tahun 1986. Pendekatan ini dapat menemukan tepi dengan ketebalan 1 piksel (Moeslund, 2012). Langkah pertama adalah menghaluskan citra menggunakan filter gaussian yang dilanjutkan dengan menerapkan kernel sobel.
Dari kernel sobel arah gradien disetiap titik diestimasi. Selanjutnya, prinsip non- maximum suppression diterapkan. Untuk setiap piksel besarnya gradien dibandingkan dengan besaran dua tetangga terdekat yang searah dengan gradienya.
Dua piksel dengan nilai gradien terkecil akan dihapus. Hal ini kemudian diterapkan pada semua piksel sampai menghasilkan tepi dengan ketebalan 1 piksel.
Langkah terakhir adalah menerapkan sebuah nilai ambang untuk memangkas tepi
dengan besaran gradien yang terlalu kecil. Namun, jika sebuah tepi memiiki besaran gradien yang terlalu kecil terhubung pada sebuah piksel dengan besaran gradien di atas ambang batas, maka tepi tersebut tiding dipangkas. Hal ini membuat proses pemangkasan lebih adiptif yang dikenal sebagai prinsip hysteresis thresholding.(Hidayatullah, 2017)
OpenCV menempatkan semua hal di atas dalam fungsi tunggal, cv2.Canny (). Argumen pertama adalah gambar input. Argumen kedua dan ketiga adalah minVal dan maxVal. Argumen ketiga adalah aperture_size sebagai ukuran kernel Sobel yang digunakan untuk menemukan gradien gambar.
𝑬𝒅𝒈𝒆 𝑮𝒓𝒂𝒅𝒊𝒆𝒏𝒕 (𝑮) = |𝑮𝒙| + |𝑮𝒚| (2.2)
Berikut ini adalah cara mengkonversi citra grayscale manjadi citra tepi pada Python.
import cv2
img = cv2.imread(“citra.jpg”,0) edges = cv2.Canny(img,100,200) 2.3.7 Korelasi matriks
Penerapan pada program menggunakan library OpenCV dengan contoh sebagai berikut.
# detect edges in the resized, grayscale image and apply template
# matching to find the template in the image edged = cv2.Canny(resized, 50, 200)
result= cv2.matchTemplate(edged, template, cv2.TM_CCOEFF)
(_, maxVal, _, maxLoc) = cv2.minMaxLoc(result)
# if we have found a new maximum correlation value, then update
# the bookkeeping variable
if found is None or maxVal > found[0]:
found = (maxVal, maxLoc, r)
# unpack the bookkeeping variable and compute the (x, y) coordinates
# of the bounding box based on the resized ratio
(_, maxLoc, r) = found
(startX, startY) = (int(maxLoc[0] * r), int(maxLoc[1]
* r))
(endX, endY) = (int((maxLoc[0] + tW) * r), int((maxLoc[1] + tH) * r))
# draw a bounding box around the detected result and display the image
cv2.rectangle(self.img, (startX, startY), (endX, endY), (0, 255, 0), 3)
Penerapan pada Python menggunakan funsgi library OpenCV yaitu cv2.minMaxLoc() utntuk mengambil hasil korelasi dan mengembalikan 4- tuple yang mencakup nilai korelasi minimum, nilai korelasi maksimum, kordinat (x, y) dari nilai minimum, dan kordinat (x, y) dari nilai maksimum, masing-masing.
Pada penerapan hanya mengambil nilai maksimum dan kordinat (x, y) sehingga menyimpan nilai maksimum dan membuang nilai minimum.
Variabel found untuk melacak nilai korelasi maksimum yang ditemukan selama perulangan, dan kordinat (x, y) nilai maksimum, bersama dengan rasio lebar gambar asli ke saat ini, dan lebar gambar yang diubah ukurannya.
Setelah perulangan semua skala gambar, kemudian nilai ditampung pada variable (_, maxLoc, r) = found , dan kemudian menghitung kordinat awal dan akhir (x, y) untuk membuat kotak citra gambar yang terdeteksi menggunakan fungsi cv2.Rectangle().
2.3.8 Tresholding
Tresholding digunakan untuk mengatur jumlah derajat keabuan yang ada pada citra. Dengan menggunakan thresholding maka derajat keabuan bisa diubah sesuai keinginan, misalkan diinginkan menggunakan derajat keabuan 16, maka tinggal membagi nilai derajat keabuan dengan 16. Proses tresholding ini pada dasarnya adalah proses pengubahan kuantisasi pada citra, sehingga untuk melakukan tresholding dengan derajat keabuan dapat digunakan rumus:
𝒙 = 𝒘
𝒃 (2.3) Keterangan :
x adalah nilai derajat keabuan setelah thresholding w adalah nilai derajat keabuan sebelum tresholding b adalah jumlah derajat keabuan yang diinginkan
Gambar 2.6 Contoh Gambar Thresholding 2.3.9 Connected Component
Connected component labeling adalah aplikasi algoritmik dari teori grafik, di mana himpunan bagian dari komponen yang terhubung diberi label unik berdasarkan heuristik yang diberikan. Pelabelan komponen yang terhubung tidak disamakan dengan segmentasi. Connected component digunakan dalam visi komputer untuk mendeteksi daerah yang terhubung dalam gambar digital biner, meskipun gambar berwarna dan dengan data dimensi yang lebih tinggi juga dapat diproses. Ketika diintegrasikan ke dalam sistem pengenalan gambar atau antarmuka
interaksi manusia-komputer, pelabelan komponen yang terhubung dapat beroperasi pada berbagai informasi. (Di Stefano, L., & Bulgarelli, A, 1999)
Ekstraksi gumpalan umumnya dilakukan pada gambar biner yang dihasilkan dari langkah thresholding, tetapi dapat juga berlaku untuk gambar skala abu-abu dan warna. Selanjutnya gumpalan dapat dihitung, disaring, dan dilacak
2.3.10 Morphological transformations
Transformasi morfologis adalah beberapa operasi sederhana berdasarkan bentuk gambar. Ini biasanya dilakukan pada gambar biner. Dibutuhkan dua input, satu adalah gambar asli, yang kedua disebut elemen penataan atau kernel yang menentukan sifat operasi. Dua operator dasar morfologi adalah Erosi dan Dilasi.
Kemudian bentuk variannya seperti Opening, Closing, Gradient dll juga ikut berperan. (Beyeler, 2015)
A. Erosion
Ide dasar erosi adalah seperti erosi tanah saja, ini mengikis batas-batas objek latar depan (Selalu mencoba untuk menjaga latar depan putih). Jadi apa fungsinya? Kernel slide melalui gambar (seperti dalam konvolusi 2D). Sebuah piksel dalam gambar asli (baik 1 atau 0) akan dianggap hanya 1 jika semua piksel di bawah kernel adalah 1, jika tidak maka akan tererosi (dibuat menjadi nol). Jadi apa yang terjadi adalah, semua piksel di dekat batas akan dibuang tergantung pada ukuran kernel.
Jadi ketebalan atau ukuran objek latar depan berkurang atau hanya bagian putih berkurang dalam gambar. Berguna untuk menghilangkan gangguan putih untuk melepaskan dua objek yang terhubung dll.
Gambar 2.7 Contoh gambar hasil erosion (www.OpenCV.org)
B. Dilation
Ini kebalikan dari erosi. Di sini, elemen piksel adalah '1' jika setidaknya satu piksel di bawah kernel adalah '1'. Sehingga meningkatkan wilayah putih pada gambar atau ukuran objek foreground bertambah. Biasanya, dalam kasus seperti penghapusan gangguan, erosi diikuti oleh pelebaran. Karena erosi menghilangkan gangguan putih, tetapi juga menyusutkan objek. Karena gangguan hilang, mereka tidak akan kembali, tetapi area objek kami meningkat.
Ini juga berguna untuk menggabungkan bagian-bagian yang rusak dari suatu objek.
Gambar 2.8 Contoh gambar hasil dilation (www.OpenCV.org) 2.3.11 Contour
Penelusuran kontur adalah salah satu dari banyak teknik praproses yang dilakukan pada gambar digital untuk mengekstraksi informasi tentang bentuk umumnya. Setelah pola contour yang diberikan diekstraksi, karakteristik yang berbeda akan diperiksa dan digunakan sebagai fitur yang nantinya akan digunakan dalam klasifikasi pola. Oleh karena itu, ekstraksi kontur yang benar akan menghasilkan fitur yang lebih akurat yang akan meningkatkan peluang mengklasifikasi pola yang diberikan dengan benar.
2.4 Visi Komputer (Computer Vision)
Computer Vision merupakan proses otomatis yang mengintegrasikan sejumlah besar proses untuk persepsi visual,seperti akusisi citra,pengolahan citra,pengenalan dan membuat keputusan. Computer Vision mencoba meniru cara kerja sistem visual manusia (human vision) yang sesungguhnya sangat kompleks. Untuk itu, computer vision diharapkan memiliki kemampuan tingkat tinggi sebagaimana human visual.
Kemampuan itu diantaranya adalah :
 Object detection
 Recognition
 Description
 3D Inference
 Interpreting motion
Computer vision terdiri dari teknik-teknik untuk mengestimasi ciri-ciri objek dalam citra, pengukuran ciri yang berkaitan dengan geometri objek, dan menginterpretasi informasi geometri tersebut. Secara ringkas bias dilihat persamaan berikut :
Vision = Geometry + Measurement + Interpretation
Proses-proses dalam computer vision dibagi dalam 3 (tiga) aktifitas :
 Memperoleh atau mengakusisi citra digital
 Melakukan teknik komputasi untuk memproses atau memodifikasi data citra. (operasi-operasi pengolahan citra)
 Menganalisis dan menginterpretasi citra menggunakan hasil pemrosesan untuk tujuan tertentu, misalnya memandu robot, mengontrol peralatan, memantau manufaktur dan lain-lain.
Computer Vision sering didefinisikan, sebagai salah satu cabang ilmu pengetahuan yang mempelajari bagaimana komputer dapat mengenali objek yang diamati / diobservasi. Cabang ilmu ini adalah kecerdasan buatan (Artificial Intelligence) yang akan mampu menghasilkan sistem intelijen visual (Visual Intelligence System).
Computer Vision terdiri dari 2 bidang ilmu yaitu : 1. Pengolahan Citra ( Image Processing)
Pengolahan citra adalah suatu metode yang digunakan untuk mengolah gambar sehingga menghasilkan gambar yang sesuai dengan yang diinginkan kita. Pengambilan gambar bisa dilakukan dengan menggunakan kamera atau alat lain yang bias digunakan untuk mentransfer gambar misalnya scanner atau kamera digital.
2. Pengenalan Pola (Pattern Recognition)
Pengenalan pola adalah proses mengenali pola dengan menggunakan algoritma pembelajaran mesin. Pengenalan pola dapat didefinisikan sebagai klasifikasi data berdasarkan pengetahuan yang telah diperoleh atau informasi statistik yang diambil dari pola dan / atau perwakilannya. Salah satu aspek penting dari pengenalan pola adalah potensi penerapannya.
Gambar 2.9 Hubungan Computer Vision 2.4.1 Citra Digital
Citra digital adalah kumpulan data diskrit yang berbentuk matriks dua dimensi dimana angka dari matriks tersebut menunjukkan tingkat kecerahan dari titik-titik tersebut. Titik-titik yang membangun citra digital inilah yang sering disebut dengan pixel, tingkat kecerahan dari pixel tersebut berkisar antara 0-255 dimana untuk pixel yang bernilai 0 maka pixel tersebut akan dikatakan gelap atau hitam, sedangkan untuk pixel dengan nilai 255 dapat dapat dikatakan terang. Suatu citra berukuran N x M pixel yang memiliki intensitas beragam pada tiap pixelnya, direpresentasikan secara numerik dalam bentuk matriks yang berukuran N baris dan M kolom. (Beyeler, 2015)
Gambar 2.10 Representasi citra secara numerik 2.4.2 Citra Biner
Citra biner adalah citra digital yang hanya memiliki 2 nilai piksel yaitu 1 (putih) dan 0 (hitam), Mode warna ini banyak dipakai dalam proses-proses pengenalan citra yang tidak membutuhkan informasi warna, seperti proses pengenalan morphology dari suatu objek, penipisan objek, manipulasi bentuk objek, dan lain- lain. (Beyeler, 2015) Terdapat beberapa alasan perlunya dilakukan perubahan dari citra RGB menjadi citra biner, yaitu :
1. Mengenali keberadaan objek, yang divusualisasikan sebagai daerah (region) di dalam citra. Contohnya kita akan memisahkan (segmentasi) objek dari gambar latar belakangnya. Piksel-piksel objek dinyatakan dengan nilai 1 (putih) sedangkan piksel lain dengan 0 (hitam).
2. Lebih memfokuskan pada analisis bentuk morfologi, yang dalam hal ini intensitas piksel tidak terlalu penting dibandingkan bentuknya.
3. Mengkonversikan citra yang telah ditingkatkan kualitas tepinya ke penggambaran garis-garis tepi.
Sebelum mendapatkan citra biner dari warna piksel, harus dilakukan teknik thresholding, maka nilai biner dari suatu piksel akan diperoleh dengan melakukan klasifikasi nilai piksel berdasarkan nilai thresholding tersebut, seperti yang terlihat pada pernyataan di bawah ini :
𝑓(𝑚, 𝑛) = {1, 𝑗𝑖𝑘𝑎 𝑓𝑏(𝑚, 𝑛) ≥ 𝑡ℎ 0, 𝑗𝑖𝑘𝑎 𝑓𝑏(𝑚, 𝑛) ≤ 𝑡ℎ 2.4.3 OpenCV
Open Source Computer Vision (OpenCV) adalah suatu library computer vision yang dibuat oleh para developer Intel Corporation yang bersifat Open Source, library tersebut merupakan kumpulan fungsi-fungsi C dan beberapa kelas C++
yang mengimplementasikan banyak algoritma-algoritma Image Processing dan Computer Vision. Salah satu penerapan program OpenCV yaitu dalam dunia robotika.
Library OpenCV mempunyai lebih dari 2500 algoritma yang telah dioptimalkan dimana meliputi sebuah himpunan menyeluruh dari keduanya yaitu klasik dan seni beberapa algoritma computer vision dan machine learning.
Algoritma-algoritma tersebut dapat digunakan untuk mendeteksi dan mengenali wajah, mengidentifikasi obyek, mengklasifikasi tindakan manusia dalam video, mengikuti jejak perpindahan obyek, mengekstrak model-model 3D obyek, menghasilkan titik awan 3D dari kamera stereo, dan lain sebagainya. OpenCV dapat diterapkan pada pemrograman C++, C. Python, Java dan MATLAB. OpenCV mendukung untuk sistem operasi Windows, Linux, Android dan Mac OS.
2.5 Sum of Absolute Differences
Algoritma SAD digunakan secara luas karena sederhana dan mudah diimplementasikan untuk menemukan kesamaan dua gambar. Intinya adalah bahwa menghitung perbedaan antara setiap titik di gambar itu diidentifikasi sebagai wilayah objek dalam gambar citra biner dan titik yang sesuai di template akan digunakan untuk perbandingan. Kemudian, perbedaan-perbedaan ini akan ditambahkan bersama-sama untuk mengukur kesamaan antara dua gambar. Ada banyak aplikasi untuk SAD seperti estimasi gerakan, pengenalan objek dan kompresi video.(Greeshma A, 2014) Ini diilustrasikan dengan contoh berikut:
1 2 3 4 5 6 7 8 9 Gambar 2.11 Matriks A
6 3 0 2 5 1 8 7 1
Gambar 2.12 Matriks B -5 -1 3 2 0 5 -1 1 8
Gambar 2.13 Perbedaan Antara Matriks A dan Matriks B
Dalam matriks yang dihasilkan ada beberapa nilai negatif. Jadi kita akan mengambil nilai absolut dari semua elemen matriks dan kemudian merangkum elemen-elemen ini.Ini memberikan nilai SAD antara gambar template dan gambar kandidat. Persamaan untuk SAD adalah :
𝑑(𝑎, 𝑏) = ∑ ∑ |𝐴(𝑖, 𝑗) − 𝐵(𝑖, 𝑗)|
𝑗 𝑖
2.6 Perangat Lunak
Perangkat lunak yang digunakan dalam tugas akhir ini adalah program bahasa Python yang digunakan untuk proses pengolahan citra pada Odroid. Berikut adalah uraian secara garis besar dari masing-masing perangkat lunak tersebut.
2.6.1 Bahasa Python
Python adalah bahasa pemrograman interpretatif yang dianggap mudah dipelajari serta berfokus pada keterbacaan kode. Dengan kata lain, Python diklaim sebagai bahasa pemrograman yang memiliki kode-kode pemrograman yang sangat jelas,lengkap, dan mudah untuk dipahami. Python secara umum berbentuk pemrograman berorientasi objek,pemrograman imperative, dan pemrograman fungsional. Python dapat digunakan untuk berbagai keperluan pengembangan perangkat lunak dan dapat berjalan diberbagai platform sistem operasi. (Jubilee, 2017 )
Python merupakan bahasa pemrograman yang freeware atau perangkat bebas dalam arti sebenarnya, tidak ada batasan dalam penyalinannya atau mendistribusikannya. Lengkap dengan source codenya, debugger dan profiler,
antarmuka yang terkandung di dalamnya untuk pelayanan antarmuka, fungsi sistem, GUI (antarmuka pengguna grafis), dan basis datanya. Python dapat digunakan dalam beberapa sistem operasi, seperti kebanyakan sistem UNIX, PCs (DOS, Windows, OS/2), Macintosh, dan lainnya. Pada kebanyakan sistem operasi linux, bahasa pemrograman ini menjadi standarisasi untuk disertakan dalam paket distribusinya.
1. Tipe Data di Python
Variabel menyimpan data yang dilakukan selama program dieksekusi dan isinya dapat diubah oleh operasi – operasi tertentu pada program yang menggunakan variabel tersebut. Di dalam Python, terdapat beberapa tipe data yang cukup unik bila dibandingkan dengan bahasa pemrograman seperti C, Java, dan yang lainnya. Tipe data pada Python adalah sebagai berikut :
 Boolean, contoh True and False
 Complex, pasangan angka real dan imajiner, misalnya 1 + 5j
 Date, bilangan yang dapat dikonversi menjadi format tanggal, misalnya 26-09-2013
 Float, bilangan yang mempunyai koma, misalnya 3.14, 6.387
 Hexadecimal, bilangan dalam format heksa, misalnya 7b, 4d2
 Integer, bilangan bulat, misalnya 10, 20, 30, 15, 37
 Long, bilangan bulat yang panjang, misal 123456789123456789L
 None, data yang tidak terdefinisi tipe data apapun
 String, data yang berisi kalimat. Bisa dibentuk dengan diapit tanda ' dan ', atau diapit “ dan“, atau diapit “”” dan “”” untuk membentuk paragraf.
 List, sebuah data berupa untaian yang menyimpan berbagai tipe data dan isinya bisa diubah.
 Tuple, sebuah data berupa untaian yang menyimpan berbagai tipe data tapi isinya tidak bisa diubah.
 Dictionary, sebuah data berupa untaian yang menyimpan berbagai tipe data berupa pasangan penunjuk dan nilai. Object, sebuah data yang berisi atribut dan metode.
2. Operator pada Python
Selain variabel diatas, terdapat juga beberapa operator untuk pemrosesan data di Python. Agar lebih memahami seperti apa cara kerja operator di python, bukalah console python dan coba contoh disamping penjelasan tiap operator. Berikut operator yang ada di Python :
A. Aritmatika (Aritchmetic Operator) B. Perbandingan (Comparison Operator) C. Penugasan (Assignment Operator) D. Biner (Bitwiser Operator)
E. Logika (logical Operator)
F. Keanggotaan (Membership Operator) G. Identitas (Identity Operator)
Beberapa teknologi yang menggunakan Python yaitu Django, PyGame, Panda 3D, SimpleCV, NLTK, dan Flask.
2.6.2 Numpy
Numpy adalah paket umum pemrosesan array. Ini menyediakan objek array multidimensi berkinerja tinggi, dan alat untuk bekerja dengan array. Numpy adalah paket mendasar untuk komputasi ilmiah dengan Python. Selain penggunaan ilmiahnya yang jelas, Numpy juga dapat digunakan sebagai wadah data generik multi dimensi yang efisien. Array dalam Numpy adalah tabel elemen (biasanya angka), semua dari tipe yang sama, diindeks oleh tuple bilangan bulat positif.
Dalam Numpy, jumlah dimensi array disebut peringkat array.
Tupel bilangan bulat yang memberikan ukuran array di setiap dimensi dikenal sebagai bentuk array. Kelas array di Numpy disebut sebagai ndarray. Elemen dalam array Numpy diakses dengan menggunakan tanda kurung siku dan dapat diinisialisasi dengan menggunakan daftar Python bersarang.
2.6.3 Pygame
Pygame adalah seperangkat modul Python lintas-platform yang dirancang untuk menulis video game. Ini termasuk grafik komputer dan pustaka suara yang dirancang untuk digunakan dengan bahasa pemrograman Python. Pygame menggunakan perpustakaan Simple DirectMedia Layer (SDL), dengan tujuan
memungkinkan pengembangan game komputer waktu nyata tanpa mekanisme tingkat rendah dari bahasa pemrograman C dan turunannya. Ini didasarkan pada asumsi bahwa fungsi paling mahal di dalam game dapat diabstraksikan dari logika game, sehingga memungkinkan untuk menggunakan bahasa pemrograman tingkat tinggi, seperti Python, untuk menyusun game.
2.6.4 OS Ubuntu Mate 18.04
Gambar 2.14 Logo Ubuntu Mate (www.ubuntu-mate.org)
Ubuntu merupakan salah satu distribusi Linux yang berbasis Debian dan didistribusikan sebagai perangkat lunak bebas. Ubuntu ditawarkan dalam tiga edisi resmi: Ubuntu Desktop untuk komputer pribadi, Ubuntu Server untuk server dan komputasi awan, dan Ubuntu Core untuk "Internet untuk Segala", perangkat kecil dan robot.
2.7 Perangkat keras
Berikut akan dijelaskan secara garis besar mengenai landasan teori perangkat keras dan komponen yang digunakan pada perangkat yang di rancang.
2.7.1 Odroid XU4
ODROID-XU4 adalah perangkat komputasi generasi baru dengan perangkat keras yang lebih kuat dan hemat energi serta faktor bentuk yang lebih kecil.
Menawarkan dukungan sumber terbuka, board dapat menjalankan berbagai rasa Linux, termasuk Ubuntu 16.04 terbaru dan Android 4.4 KitKat dan 7.1 Nougat.
Dengan mengimplementasikan antarmuka eMMC 5.0, USB 3.0 dan Gigabit Ethernet, ODROID-XU4 menawarkan kecepatan transfer data yang luar biasa, sebuah fitur yang semakin dibutuhkan untuk mendukung daya pemrosesan tingkat lanjut pada perangkat ARM. Hal ini memungkinkan pengguna untuk benar-benar mengalami peningkatan dalam komputasi, terutama dengan booting lebih cepat, penelusuran web, jaringan, dan game 3D.
2.7.2 HDMI LCD
Gambar 2.16 HDMI LCD 7inch, 1024×600, IPS
Merupakan LCD grafik dengan jenis layar IPS (In-Plane-Switching) beresolusi 1024 x 600. LCD ini memiliki output grafik melalui port HDMI serta telah mendukung panel touchscreen berjenis kapasitif.
2.7.3 Camera Logitech C270
Gambar 2.17 Camera Logitech C270(www.logitech.com)
Webcam adalah kamera video yang mengumpankan atau mengalirkan gambarnya secara real time ke atau melalui komputer ke jaringan komputer. Istilah
"webcam" (senyawa terpotong) juga dapat digunakan dalam arti aslinya dari kamera video yang terhubung ke Web secara terus menerus untuk waktu yang tidak terbatas, daripada untuk sesi tertentu, umumnya memberikan pandangan bagi siapa saja yang mengunjungi halaman webnya.
Untuk mendapatkan hasil penangkapan yang real time, secara umum media yang digunakan adalah kamera digital. Sebuah kamera digital mampu menjangkau hingga resolusi tertentu. Biasanya resolusi yang mampu dijangkau mencapai 320x460 sampai 768x1024 piksel. Kemampuan kamera menangkap gambar utuh (frame) setiap detiknya sangatlah signifikan untuk menghasilkan video yang halus.
Secara umum kamera dapat dikatakan real time jika mampu menangkap paling tidak 25 gambar utuh (frame) setiap detiknya.