• Tidak ada hasil yang ditemukan

Penjelasan Program Pengolahan Citra Digital

Dalam dokumen 3. PERENCANAAN & IMPLEMENTASI SISTEM (Halaman 68-81)

9. z merupakan nilai koordinat z end-effector yang didapatkan dari hasil percobaan penggerakan robot lengan. Data ini khusus untuk tipe inverse

3.7.2.3. Penjelasan Program Pengolahan Citra Digital

Pada sistem ini terdapat dua metode pengolahan citra digital yaitu metode warp transformation dan blob detection. Program yang melakukan kedua metode tersebut adalah warp.py, blob_xy.py, dan blob_z.py. Warp.py bekerja pertama dengan mengurutkan data pada tabel warp_z berdasarkan nilai pada kolom y secara ascending. Setelah diurutkan, maka program akan melanjutkan proses dengan mengambil semua data pada kolom x, y pada tabel warp_z pada database robot.

Nilai-nilai terdiri atas 4 baris yang kemudian dilakukan pengurutan data pada baris 1-2 dan baris 3-4 berdasarkan nilai x secara ascending. Nilai x, y ini merupakan koordinat pixels dari stiker hitam lingkaran (dilingkari merah) yang ditunjukan pada gambar 3.67.

Gambar 3.67. Stiker lingkaran hitam yang data pixels disimpan pada tabel warp_z

Pemasukan nilai-nilai koordinat ini didapatkan dari menjalankan 2 program secara berurutan yaitu /home/pi/Desktop/kalibrasi/capture_kalibrasi.py kemudian /home/pi/Desktop/kalibrasi/kalibrasi_kamera_z.py yang memanfaatkan metode blob detection.

Kemudian sistem akan mengurutkan data pada tabel warp_xy berdasarkan nilai pada kolom y secara ascending. Setelah diurutkan, maka program akan melanjutkan proses dengan mengambil semua data pada kolom x, y pada tabel warp_xy pada database robot. Nilai-nilai terdiri atas 4 baris yang kemudian dilakukan pengurutan data pada baris 1-2 dan baris 3-4 berdasarkan nilai x secara

ascending. Nilai x, y ini merupakan koordinat pixels dari stiker hitam kotak (dilingkari merah) yang ditunjukan pada gambar 3.68.

Gambar 3.68. Stiker kotak hitam yang data pixels disimpan pada tabel warp_xy

Pemasukan nilai-nilai koordinat ini didapatkan dari menjalankan 2 program secara berurutan yaitu /home/pi/Desktop/kalibrasi/capture_kalibrasi.py kemudian /home/pi/Desktop/kalibrasi/kalibrasi_kamera_xy.py yang memanfaatkan metode blob detection.

Program dilanjutkan dengan melakukan warp transformation pada gambar home/pi/Desktop/foto.jpg yaitu gambar yang diambil Raspberry Pi camera ketika robot telah selesai bergerak dan sistem menyalakan laser dioda. Berikut cuplikan program yang melakukan warp transformation.

img = cv2.imread('/home/pi/Desktop/foto.jpg') rows,cols,ch = img.shape

pts1 = np.float32([data[0], data[1], data[2], data[3]]) pts2 = np.float32([(0,0),(1600,0),(0,560),(1600,560)]) M = cv2.getPerspectiveTransform(pts1,pts2)

dst = cv2.warpPerspective(img,M,(1600,560)) cv2.imwrite('/home/pi/Desktop/warp_z.jpg',dst)

pts3 = np.float32([data1[0], data1[1], data1[2], data1[3]]) pts4 = np.float32([(0,0),(500,0),(0,700),(500,700)])

M1 = cv2.getPerspectiveTransform(pts3,pts4) dst1 = cv2.warpPerspective(img,M1,(500,700)) cv2.imwrite('/home/pi/Desktop/warp_xy.jpg',dst1)

Gambar 3.69. Cuplikan program warp.py

Warp transformation berjalan dengan mendeklarasikan empat titik koordinat pixels pada gambar yang ingin ditransform, yaitu titik kiri atas, titik kanan atas, titik kiri bawah dan titik kanan bawah. Kemudian mendeklarasikan empat titik koordinat pixels baru pada gambar hasil. Program warp akan menghasilkan dua buah picture /home/pi/Desktop/warp_z.jpg dan /home/pi/Desktop/warp_xy.jpg. Berikut adalah gambar home/pi/Desktop/foto.jpg.

Gambar 3.70. Gambar home/pi/Desktop/foto.jpg

Sedangkan berikut adalah gambar hasil warp z dan xy.

Gambar 3.71. Gambar home/pi/Desktop/warp_z.jpg

Gambar 3.72. Gambar home/pi/Desktop/warp_xy.jpg

Untuk gambar hasil warp xy pada sistem ini akan menghasilkan gambar bidang xy dengan rotasi 90o searah jarum jam. Untuk flowchart program warp.py dapat dilihat pada gambar 3.73 dan gambar 3.74.

Start

Mengurutkan data pada tabel warp_z berdasarkan nilai pada kolom y

secara ascending

Mengambil seluruh data (kolom x, y) dari tabel warp_z pada database

robot

Data koordinat x, y pixels

Mengurutkan nilai baris 1-2 dan baris 3-4 berdasarkan data kolom x

secara ascending

Mengurutkan data pada tabel warp_z berdasarkan nilai pada kolom y

secara ascending

Mengambil seluruh data (kolom x, y) dari tabel warp_z pada database

robot

Data koordinat x, y pixels

Mengurutkan nilai baris 1-2 dan baris 3-4 berdasarkan data kolom x

secara ascending

A

Gambar 3.73. Flowchart (1) warp.py

Gambar /home/pi/

Desktop/foto.jpg

Melakukan perspective transform dengan nilai-nilai dari tabel warp_z yang telah

diurutkan

Melakukan warp perspective dengan resolusi hasil 1600 x

560 dari tabel warp_xy yang telah

diurutkan

Melakukan warp perspective dengan resolusi hasil 500 x

700

Gambar 3.74. Flowchart (2) warp.py

Hasil gambar dari proses warp akan dilanjutkan dengan proses pendeteksian cahaya laser dan mengkonversi posisi koordinat pixels cahaya laser tersebut menjadi koordinat end-effector dalam satuan sentimeter. Proses pendeteksian ini dilakukan oleh dua program yaitu blob_xy.py dan blob_z.py.

Berikut adalah flowchart dari program blob_xy.py.

Start

Gambar /home/pi/

Desktop/warp_xy.jpg Mengambil data tipe pada id antrian yang telah diambil dari

tabel data (database)

Data tipe

Melakukan invert gambar

Gambar im

Membuat sebuah detector dengan parameter-parameter

tertentu

Melakukan pendeteksian blob

Koordinat pixels objek

Jumlah objek terdeteksi = 1?

Yes

No

A B

Gambar 3.75. Flowchart (1) blob_xy.py

Melakukan perhitungan konversi

Gambar 3.76. Flowchart (2) blob_xy.py

Program ini dimulai dengan mengambil data kolom tipe berdasarkan baris yang memiliki id antrian yang sedang diproses. Kemudian dilanjutkan dengan mengambil gambar /home/pi/Desktop/warp_xy.jpg (gambar 3.72). Kemudian gambar ini akan diinvert dan disimpan dengan nama im. Kemudian program akan mendeklarasikan beberapa parameter blob yang tampak pada gambar 3.77. Setelah itu maka akan dilakukan pendeteksian objek dengan metode blob pada gambar im.

Proses ini akan menghasilkan koordinat pixels dari pusat objek yang terdeteksi.

Apabila objek yang terdeteksi tidak sama dengan 1 maka sistem akan mengupdate status pada id antrian menjadi error (2). Sedangkan apabila objek yang terdeteksi berjumlah satu maka akan dilanjutkan dengan mengolah nilai koordinat pixels menjadi koordinat x, y dalam satuan sentimeter. Karena gambar warp_xy memiliki ukuran 500 x 700 (dimana koordinat x memiliki range 15 cm sampai 40 cm dan

koordinat y memiliki range -20 cm sampai 15 cm) dimana 20 pixels sama dengan 1 cm. Berikut persamaan konversi untuk menghasilkan koordinat x dalam sentimeter.

𝑥 = 25 𝑝𝑖𝑥𝑒𝑙𝑠 𝑥

500 + 15 (3.25)

Keterangan :

x = nilai koordinat x end-effector dalam satuan sentimeter pixels x = nilai koordinat pixels x dari pusat objek yang terdeteksi

Sedangkan berikut adalah persamaan konversi untuk menghasilkan koordinat y dalam sentimeter.

𝑦 = 15 −35 𝑝𝑖𝑥𝑒𝑙𝑠 𝑦

700 (3.26)

Keterangan :

y = nilai koordinat y end-effector dalam satuan sentimeter pixels y = nilai koordinat pixels y dari pusat objek yang terdeteksi

# Setup SimpleBlobDetector parameters.

params = cv2.SimpleBlobDetector_Params()

# Change thresholds params.minThreshold = 20 params.maxThreshold = 76

# Filter by Area.

params.filterByArea = True params.minArea = 8

params.maxArea = 300

# Filter by Circularity

params.filterByCircularity = True params.minCircularity = 0.6195

# Filter by Convexity

params.filterByConvexity = True params.minConvexity = 0.87

# Filter by Inertia

params.filterByInertia = True params.minInertiaRatio = 0.1

Gambar 3.77. Cuplikan program blob_xy.py

Kemudian, jika nilai data tipe sama dengan forward maka sistem ini akan menyimpan kedua nilai koordinat x, y ke kolom coba 1, coba 2 pada baris dengan id antrian yang sedang diproses dalam tabel data database robot. Sedangkan apabila tipe tidak sama dengan forward maka nilai koordinat x, y disimpan ke kolom x, y pada baris dengan id antrian yang sedang diproses dalam tabel data database robot. Berikut adalah gambar hasil pendeteksian cahaya laser dengan program blob_xy.py yang menghasilkan koordinat y -6.88 cm dan x 25.88 cm.

Gambar 3.78. Hasil pendeteksian blob_xy.py (inverted image)

Sedangkan proses kerja program blob_z.py sama dengan blob_xy.py hanya saja gambar yang diproses adalah gambar /home/pi/Desktop/warp_z.jpg yang memiliki ukuran 1600 x 560 (dimana koordinat y memiliki range -40 cm sampai 40 cm dan koordinat z memiliki range 2 cm sampai 30 cm) dimana 20 pixels sama dengan 1 cm. Berikut persamaan konversi untuk menghasilkan koordinat z dalam sentimeter.

𝑧 = −28 𝑝𝑖𝑥𝑒𝑙𝑠 𝑦

560 + 30 (3.27)

Keterangan :

z = nilai koordinat z end-effector dalam satuan sentimeter pixels y = nilai koordinat pixels y dari pusat objek yang terdeteksi

Kemudian, jika nilai data tipe sama dengan forward maka sistem ini akan menyimpan nilai koordinat z ke kolom coba 3 pada baris dengan id antrian yang sedang diproses dalam tabel data database robot. Sedangkan apabila tipe tidak

sama dengan forward maka nilai koordinat z disimpan ke kolom z pada baris dengan id antrian yang sedang diproses dalam tabel data database robot. Berikut adalah gambar hasil pendeteksian cahaya laser dengan program blob_z.py yang menghasilkan koordinat z 15.34 cm.

Gambar 3.79. Hasil pendeteksian blob_z.py (inverted image)

Flowchart program blob_z.py dapat dilihat pada halaman 117-118.

Start

Gambar /home/pi/

Desktop/warp_z.jpg Mengambil data tipe pada id antrian yang telah diambil dari

tabel data (database)

Data tipe

Melakukan invert gambar

Gambar im

Membuat sebuah detector dengan parameter-parameter tertentu

Melakukan pendeteksian blob

Koordinat pixels objek

Jumlah objek terdeteksi = 1?

Yes No

A B

Gambar 3.80. Flowchart (1) blob_z.py

Melakukan perhitungan id antrian yang telah

diambil pada

Gambar 3.81. Flowchart (2) blob_z.py

3.7.3. Database

Pada sistem ini digunakan database MySQL local yang ada pada raspberry pi. Database yang digunakan memiliki nama robot dan memiliki 5 buah tabel, yaitu sebagai berikut.

1. Tabel user, yaitu tabel penyimpanan data id user, username dan

Dalam dokumen 3. PERENCANAAN & IMPLEMENTASI SISTEM (Halaman 68-81)

Dokumen terkait