Perangkat lunak open-source memenuhi kebutuhan luas pengembang robot-vision
Artikel ini adalah bagian dari Proyek Khusus AspenCore tentang robot yang dipandu penglihatan.
Aplikasi visi robot dapat menghadirkan serangkaian persyaratan yang kompleks, tetapi perpustakaan sumber terbuka siap memberikan solusi untuk hampir semua kebutuhan. Pengembang dapat menemukan paket sumber terbuka mulai dari pemrosesan gambar dasar dan pengenalan objek hingga perencanaan gerak dan penghindaran tabrakan dan lebih dari yang dapat disebutkan apalagi diberikan secara lengkap dalam artikel singkat. Namun demikian, berikut adalah beberapa paket pemrosesan gambar sumber terbuka utama yang dapat membantu pengembang menerapkan sistem robot canggih. (Catatan:laporan ini berfokus pada pustaka untuk algoritme berbasis gambar yang lebih mendasar dan secara khusus mengecualikan perangkat lunak sumber terbuka untuk visi robot berbasis AI.)
Tidak ada artikel tentang perangkat lunak visi robot yang dapat gagal untuk menyoroti Perpustakaan Visi Komputer Sumber Terbuka (OpenCV) [sumber]. Di antara paket perangkat lunak sumber terbuka yang tersedia, OpenCV mungkin yang paling banyak digunakan dan kaya fungsi. Menerapkan lebih dari 2.500 algoritme, distribusi OpenCV membahas persyaratan pemrosesan gambar dalam serangkaian modul, yang mencakup hal berikut antara lain:
core, yang mendefinisikan struktur dan fungsi data dasar yang digunakan oleh semua modul lain;
imgproc, yang menyediakan fungsi pemrosesan gambar termasuk pemfilteran gambar linier dan non-linier, transformasi gambar geometris, konversi ruang warna, histogram, dan banyak lagi;
video, yang mendukung estimasi gerakan, pengurangan latar belakang, dan algoritme pelacakan objek;
calib3d, yang menyediakan algoritme geometri dasar, kalibrasi kamera, estimasi pose objek, dan banyak lagi;
features2d, yang menyediakan pendeteksi fitur, deskriptor, dan pencocokan deskriptor;
objdetect, yang menyediakan deteksi objek dan instance kelas yang telah ditentukan sebelumnya;
Ditulis dalam C++, OpenCV tersedia dengan antarmuka untuk C++, Python, Java, dan Matlab dan mendukung Windows, Linux, Android dan Mac OS. Seiring dengan dukungannya untuk set instruksi tunggal, banyak data (SIMD), OpenCV menyediakan akselerasi GPU berbasis CUDA untuk banyak fungsi melalui modul gpu dan akselerasi OpenCL melalui modul ocl-nya. Baru-baru ini dirilis, OpenCV 4.0 membawa sejumlah peningkatan kinerja dan kemampuan termasuk penerapan algoritma Kinect Fusion yang populer.
Untuk fungsionalitasnya, OpenCV memerlukan kurva pembelajaran yang melebihi kesabaran pengembang yang ingin bergerak cepat dengan visi robot. Bagi para developer ini, SimpleCV [source] berbasis Python mungkin bisa menjadi jawabannya. Dibangun di OpenCV, SimpleCV menyediakan fungsionalitas yang dibutuhkan oleh pengembang robot-vision tingkat lanjut tetapi menyediakan kerangka kerja yang dapat diakses yang membantu pengembang yang kurang berpengalaman menjelajahi fungsi penglihatan mesin dasar dengan panggilan fungsi Python sederhana. Misalnya, pengembang dapat dengan cepat mengimplementasikan fungsi yang umum digunakan seperti ambang batas gambar menggunakan metode bawaan sederhana di kelas Gambar SimpleCV (img.binarize() dalam daftar di bawah) dan akhirnya menampilkan hasil yang ditunjukkan pada Gambar 1.
dari SimpleCV impor Gambar, Warna, Tampilan # Buat fungsi yang melakukan setengah setengah image.def halfsies(kiri,kanan):result =kiri # memotong gambar kanan menjadi sisi kanan. crop =right.crop(right.width/2.0,0,right.width/2.0,right.height) # sekarang rekatkan crop pada gambar kiri. result =result.blit(crop,(left.width/2.0)) # mengembalikan hasil. kembali hasil# Muat gambar dari imgur.img =Gambar('http://i.imgur.com/lfAeZ4n.png')# binerisasi gambar menggunakan ambang 90# dan balikkan hasil.output =img.binarize( 90).invert()# buat gambar berdampingan image.result =halfsies(img,output)# tampilkan gambar yang dihasilkan.result.show()# simpan hasilnya ke file.result.save('juniperbinary.png' )
Gambar 1. Hasil dari kode Python yang tercantum di atas (Sumber:SimpleCV)
Seiring dengan fungsi pemrosesan gambar dasar, OpenCV dan SimpleCV mengimplementasikan sejumlah algoritma pemrosesan gambar tingkat tinggi yang dibutuhkan sistem robot untuk bekerja dengan objek atau beroperasi dengan aman dalam lingkungan fisiknya. Salah satu struktur data fundamental yang digunakan dalam banyak komputasi ini adalah point cloud – kumpulan titik data multi-dimensi yang mewakili suatu objek (Gambar 2). Diperoleh dari kamera, titik awan suatu objek digunakan untuk operasi robotik mendasar seperti identifikasi objek, penyelarasan, dan pemasangan. Untuk bekerja dengan point cloud, Point Cloud Library (PCL) [source] mengimplementasikan algoritme untuk pemfilteran, pemasangan, ekstraksi keypoint, segmentasi, dan banyak lagi.
Gambar 2. Kumpulan data point cloud untuk torus dasar. (Sumber:Wikimedia Commons/Kieff).