deteksi dan perhitungan jumlah jeruk matang dan non matang …rinaldi.munir/citra/... · 2019. 12....
TRANSCRIPT
-
Deteksi dan Perhitungan Jumlah Jeruk Matang dan Non
Matang berdasarkan Citra Digital
Hagai Raja Sinulingga1
1 Program Studi Sarjana Teknik Informatika, Sekolah Teknik Elektro dan Informatika,
Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia
E-mail: [email protected]
Abstrak. Estimasi jumlah dan waktu panen jeruk sangat penting bagi petani untuk mengestimasi
usaha yang dibutuhkan untuk memanen tanamannya. Hal ini dapat dilakukan dengan cara
menghitung jumlah buah matang dan non matang pada pohon jeruk. Namun jika dilakukan
manual akan sulit terutama jika terdapat banyak pohon dan lahan yang luas. Untuk itu pada
penelitian ini diajukan solusi deteksi dan perhitungan jumlah jeruk menggunakan teknik-teknik
pengolahan citra. Jeruk dideteksi dengan memanfaatkan fitur deteksi tepi dan perbedaan warna
(color space) antara jeruk dan lingkungannya. Selanjutnya klasifikasi dan perhitungan dilakukan
dengan analisis histogram hasil pemotongan (cropping) gambar jeruk yang dideteksi. Hasil
eksperimen menunjukkan bahwa solusi yang diajukan sudah mampu melakukan perhitungan
jumlah jeruk matang dan non matang untuk input citra pohon jeruk statis.
1. Pendahuluan Permasalahan menghitung jumlah buah yang terdapat dalam pohon penting dilakukan untuk
mengestimasi jumlah panen dan seberapa besar usaha yang diperlukan untuk memanennya. Namun hal
ini akan sangat sulit dilakukan secara manual apalagi ketika jumlah pohon sangat banyak dan ukuran
lahan sangat luas seperti yang diilustrasikan pada gambar 1. Untuk menjawab persoalan perhitungan
dapat dilakukan dengan cara pendekatan teknologi ditambah pendekatan matematis. Pendekatan
teknologi dilakukan dengan menghitung buah secara otomatis dibantu dengan alat-alat yang dapat
memproses citra, sedangkan pendekatan matematis dilakukan dengan perhitungan regresi untuk
mengestimasi jumlah keseluruhan buah. Untuk pendekatan teknologi sendiri pertama sekali harus dapat
dilakukan deteksi buah pada pohon.
Gambar 1. Ilustrasi Kebun Jeruk (Sumber: sevenfields.com)
-
Saat ini penelitian untuk mendeteksi buah sudah banyak dilakukan. Untuk kasus jeruk, yakni salah
satu buah produksi Indonesia, beberapa penelitian sudah melakukan pendekatan computer vision untuk
memperbaiki gambar pohon yang terkena bayangan, lalu menghitung buah dengan metode K-Means
(Zeeshan, dkk, 2016). Ada juga yang melakukan deteksi menggunakan metode SVM dibantu dengan
pre-processing gambar menggunakan Sobel Operator dan Laplacian Operator (Walter, dkk, 2016) untuk
kasus deteksi buah non matang yang tentunya lebih sulit karena warnanya yang sulit dibedakan dengan
daun pohon jeruk sendiri. Namun dari penelitian-penelitian ini akurasi yang dimiliki dari sistem masih
cukup rendah yakni 49.03 ± 1,4% (Walter, dkk, 2016) dalam hal deteksi jeruk non matang dan 91.3%
untuk kasus deteksi jeruk yang matang dengan pohon berbayangan (Zeeshan, dkk, 2016).
Pada makalah ini akan dibahas bagaimana menggabungkan tantangan kedua penelitian ini dengan
pendekatan deteksi tepi dan penggunaan color-space. Selain itu, penelitian ini akan mencoba
memisahkan antara jeruk matang dan non-matang dengan perhitungan histogram serta menghitung
jumlahnya agar dapat menjadi pertimbangan petani nantinya dalam mengestimasi waktu panen.
Penelitian ini diharapkan dapat menjadi pengetahuan untuk penelitian selanjutnya dalam
mengembangkan sistem yang dapat membantu petani jeruk Indonesia untuk mengoptimalkan panen atas
ladangnya.
2. Landasan Teori Pada bagian ini akan dibahas teori-teori pengolahan citra yang dipakai dalam mengimplementasi
solusi yang dirancang pada makalah ini.
2.1. Citra Digital Citra digital adalah sekumpulan titik yang disebut pixel yang membentuk informasi gambar pada
komputer. Disebut digital karena gambar yang sebelumnya adalah gelombang kontinu dilakukan
digitalisasi sehingga dapat direpresentasikan pada komputer yang datanya berupa diskrit. Proses
digitalisasi citra ada dua tahap yaitu (Rinaldi, 2019):
1. Penerokan (sampling), yakni proses digitalisasi citra dalam ranah spasial (x,y)
2. Kuantisasi, yakni proses penangkaan nilai intensitas gelombang menjadi bilangan bulat
Dari kedua tahap ini, dapat dihasilkan sebuah citra digital yang berbentuk matriks berisi informasi
warna. Gambar 2 adalah ilustrasi contoh hasil digitalisasi pada citra.
Gambar 2. Citra asli (kiri) dan citra hasil digitalisasi (kanan) (Sumber: Dr. George Bebis, Image
Formation and Representation, CS485/685 Computer Vision)
-
2.2. Color-space Setiap titik pada citra berisi informasi warna yang direpresentasikan dengan model warna tertentu
sehingga dapat ditampilkan dengan benar di layar komputer. Model warna ini merupakan kesepakatan
bersama yang disepakati oleh lembaga yang merancangnya. Beberapa model yang banyak digunakan
saat ini adalah seperti model RGB, CMYK, HSV, dan HSL. Masing-masing model memiliki kasus
penggunaan yang cocok untuk membantu penyelesaian masalah tertentu baik dari sisi pemampatan
ukuran penyimpanan citra maupun teknik mengenali citra. Pada makalah ini akan dipakai dua model
saja dalam pemrosesan citra yang dilakukan yakni RGB dan HSV.
2.2.1. Red Green Blue (RGB) Seperti namanya, model warna ini didefinisikan dengan nilai percampuran merah-hijau-biru yang
dapat direpresentasikan dalam vektor warna 3D berbentuk kubus seperti yang diilustrasikan pada
gambar 3. Warna ini dibakukan pada tahun 1931 oleh CIE (Commission International de l’Eclairage)
atau International Lighting Committee. CIE menstandarkan gelombang warna kontinu untuk RGB
adalah sebagai berikut.
R : 700nm G: 546.1 nm B: 435.8 nm
Gambar 3. Ilustrasi spektrum warna RGB (Sumber: Slide Kuliah IF4073 oleh Rinaldi Munir)
Selain dari representasinya yang sederhana. Transformasi citra berwarna RGB menjadi citra
Grayscale yakni citra berwarna hitam-putih dengan rentang 0-255 juga mudah dilakukan yakni dengan
mengubah nilai setiap pixel dengan rumus berikut.
(1)
Dengan pewarnaan grayscale citra nantinya dapat diolah untuk dilakukan pendeteksian tepi dalam
pengenalan citra.
2.2.2. Hue Saturation Value (HSV) Model ini mendefinisakan warna terdiri dari Hue, Saturation dan Value yang masing-masing
memiliki arti berikut:
1. Hue, jenis warna sebenarnya (merah, ungu, dll) dengan rentang nilai 0 sampai 2 2. Saturation, kemurnian warna dengan rentang nilai [0,1] 3. Value, nilai kecerahan sebuah warna dengan rentang nilai [0,1]
Hasil dari pemodelan ini adalah vektor warna yang berbentuk prisma segi enam yang ditunjukkan pada
gambar 4. Dapat dilihat bahwa perbedaan mencolok atas HSV dan RGB adalah pemisahan yang jelas
atas satu warna dengan warna lain. Setiap warna disatukan dalam satu irisan vertical atas prisma yang
menghasilkan rentang warna tersebut dari terang ke gelap jika dilihat dari atas ke bawah.
-
Gambar 5. Perbandingan RGB dan HSV (Sumber: Slide Kuliah IF4073 oleh Rinaldi Munir)
2.3. Deteksi Tepi Tepi adalah salah satu fitur utama dalam pengenalan citra. Tepi yang disebut juga edge adalah
bagian pinggiran dari sebuah objek yang dihasilkan dari perbedaan intensitas warna yang drastis dari
satu pixel ke pixel tetangganya. Deteksi tepi adalah proses pencarian bagian pada citra yang merupakan
posisi terjadinya perubahan intensitas warna (gradien) tersebut.
Saat ini terdapat berbagai metode yang digunakan untuk mendeteksi tepi. Seluruh metode ini pasti
menggunakan konvolusi. Konvolusi sendiri adalah proses perkalian nilai matriks warna pada citra
dengan suatu matriks pengali yang disebut kernel. Masing-masing metode memiliki hasil yang berbeda
satu sama lain akibat perbedaan kernel tersebut.
Pada makalah ini sendiri, akan digunakan metode deteksi tepi yang bernama Operator Canny.
Nama ini diambil dari penemunya yang bernama John Canny yang mengusulkan pendeteksian tepi
dengan langkah-langkah sebagai berikut (Rinaldi, 2019):
1. Haluskan citra dengan penapisan Gaussian (kernel gaussian tidak dijelaskan disini) 2. Hitung gradien setiap pixel dengan satu operator seperti Sobel, Roberts, Prewitt, dll. 3. Jika nilai gradien melebihi nilai ambang T, maka pixel diubah menjadi biner yang
menandakan pixel tepi.
Metode deteksi tepi ini dipilih karena hasilnya yang berupa pixel biner yang menandakan lokasi
tepi dapat langsung dipakai untuk dianalisis dalam pengenalan objek terkhusus buah jeruk pada makalah
ini. Gambar 5 adalah contoh hasil deteksi tepi operator Canny.
Gambar 5. Citra asli (kiri) dan citra hasil deteksi tepi dengan Operator Canny (kanan) (Sumber: Slide
Kuliah IF4073 oleh Rinaldi Munir)
-
2.4. Histogram Citra Histogram citra adalah informasi terkait persebaran intensitas warna pada citra digital. Dari
histogram dapat diketahui frekuensi kemunculan suatu warna pada citra. Dari histogram juga dapat
dilihat tingkat kecerahan (brightness) ataupun kontras (contrast) dari sebuah citra. Dengan bantuan nilai
ini citra juga nantinya dapat dilakukan klasifikasi ataupun analisis lebih lanjut terhadap citra.
Perhitungan histogram dapat dilakukan dengan mengiterasi pixel-pixel citra dan menghitung
setiap kemunculan intensitas pada sebuah tabel. Kemudian dari tabel kemunculan tersebut dapat
digambarkan menjadi diagram horizontal bar sehingga dapat dengan mudah dianalisis. Gambar 6 adalah
contoh histogram atas suatu citra berukuran 4x4 dengan model warna grayscale [0,9].
Gambar 6. Ilustrasi citra (kiri) dan Histogramnya (kanan) (Sumber: Slide Kuliah IF4073 oleh Rinaldi
Munir)
2.5. Jeruk Jeruk merupakan buah tropis yang dapat tumbuh pada tempat-tempat yang memiliki kadar hujan
yang tinggi dan sangat bagus apabila ditanam pada wilayah dataran tinggi. Jeruk tumbuh besar menjadi
pohon berkambium yang berdaun hijau berbentuk lonjong menyerupai telur. Buah jeruk sendiri
berbentuk semi bundar yang jika matang akan berwarna kuning. Buah jeruk yang belum/non matang
akan berwarna hijau yang semakin lama akan semakin kekuningan. Gambar 7 adalah contoh gambar
jeruk.
Gambar 7. Jeruk matang (kiri atas), Jeruk non matang (kanan atas) dan tampilan dalam jeruk (bawah)
(Sumber: pxhere.com)
-
3. Implementasi Solusi Secara umum, tahapan solusi yang diajukan untuk menyelesaikan masalah deteksi dan
perhitungan jumlah jeruk matang dan non matang berdasarkan citra digital dapat dilihat pada gambar 8.
Untuk penjelasan masing-masing tahap akan dijelaskan pada masing-masing subbab.
Gambar 8. Alur rancangan solusi
Dalam mengimplementasikan solusi, penulis menggunakan kakas python dengan bantuan library
OpenCV, Numpy dan Matplotlib. Masing-masing penggunaan library akan dijelaskan pada modul
tarkait.
3.1. Akuisisi Citra Pada tahap ini citra yang sudah bersifat statis berekstensi jpg atau png dibaca sehingga siap untuk
diolah. Pembacaan citra dibantu dengan library OpenCV dengan perintah berikut.
img = cv2.imread('./img/')
Hasil dari pembacaan ini adalah citra dengan model warna BGR yaitu RGB yang terbalik. Sehingga
pada tahap ini juga dilakukan konversi model BGR ke dalam model HSV dengan perintah berikut.
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
Kedua hasil citra ini nantinya akan dipakai untuk diolah. Citra dengan model RGB dipakai untuk deteksi
tepi dan citra dengan model HSV dipakai untuk deteksi color-space.
3.2. Deteksi Tepi Pada tahap ini dilakukan ekstrasi fitur tepi yang nantinya akan dipakai untuk mengenali bagian
mana yang merupakan jeruk sehingga jeruk dapat dipisahkan dari pohon dan daun yang berada di
sekitarnya. Proses ini juga dibantu dengen library OpenCV dengan perintah berikut.
edges = cv2.Canny(img,150,220)
Deteksi tepi dilakukan dengan operator Canny dengan nilai ambang 150-220. Nilai ini diambil
dari hasil percobaan manual dengan melihat hasil pembentukan tepi yang paling tepat untuk kasus
deteksi pohon jeruk. Gambar 9 adalah contoh hasil dari proses ini. Gambar ditampilkan dengan bantuan
library Matplotlib dengan perintah serangkaian perintah berikut.
plt.subplot(121),plt.imshow(img,cmap = 'gray') plt.title('Original Image'), plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(edges,cmap = 'gray') plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
-
Dapat dilihat bahwa jeruk adalah bagian-bagian pada gambar tepi yang membentuk lubang-
lubang bundar pada pohon. Oleh karena sulit dalam memisahkan jeruk dengan pohon hanya dengan fitur
tepi, maka perlu dikombinasikan dengan fitur color-space agar seperasi dapat dilakukan dengan tepat.
Gambar 9. Citra pohon jeruk grayscale (kiri) dan hasil deteksi tepi (kanan)
3.3. Deteksi Color-space Jeruk memiliki warna yang unik dibanding dengan lingkungan sekitarnya yaitu batang, daun serta
langit. Pada umumnya langit berwarna putih atau biru, batang pohon berwarna coklat dan daun berwarna
hijau. Sementara buah jeruk berwarna hijau kekuningan. Oleh karena itu sifat ini dapat dimanfaatkan
untuk menambah informasi tentang pemisahan antara pohon dan jeruk. Dapat dilakukan pemisahan
dengan mengambil bagian gambar yang memiliki rentang hijau kekuningan dari gambar. Hal ini dapat
dilakukan dengan perintah berikut dengan bantuan library OpenCV dan Numpy.
hsv_color1 = np.asarray([0, 0, 255]) # white hsv_color2 = np.asarray([60, 255, 255]) # orange mask = cv2.inRange(img_hsv, hsv_color1, hsv_color2) Dilakukan pembuatan rentang terlebih dahulu yang mendefiniskan rentang warna putih ke jingga
untuk nantinya digunakan sebagai parameter fungsi dari OpenCV. Selanjutnya OpenCV akan
mengambil bagian dari gambar yang memiliki rentang warna sesuai parameter sehingga tersisa hanya
bagian kecil dari buah jeruk pada pohon. Gambar 10 adalah contoh hasil dari proses ini.
Gambar 10. Citra hasil deteksi color-space (buah ditandai titik warna biru)
-
3.4. Deteksi Jeruk Pada tahap ini dengan bantuan fitur yang dihasilkan tahap deteksi tepi dan deteksi color-space
dapat dilakukan deteksi jeruk pada pohon. Hal ini dilakukan dengan mengiterasi pixel-pixel pada
gambar hasil color-space. Secara garis besar berikut adalah alur pemrosesan yang dilakukan:
1. Satukan himpunan kandidat lokasi antara titik-titik pada gambar hasil color-space. 2. Bandingkan himpunan kandidat lokasi dengan deteksi tepi. 3. Lakukan pengembangan diameter dari lokasi titik color-space sampai ditemukan tepi di
segala sisi dari hasil deteksi tepi lalu beri pewarnaan.
4. Lakukan langkah 3 untuk semua anggota himpunan kandidat. Contoh hasil dari tahap ini dapat dilihat pada gambar 11. Dapat dilihat bahwa sudah dapat dipisahkan
untuk sebagian besar kasus jeruk dengan pohonnya.
Gambar 11. Citra hasil deteksi jeruk (buah ditandai titik warna biru)
3.5. Klasifikasi Jeruk Klasifikasi jeruk matang dan non matang dapat dilakukan dengan melihat distribusi
kekuningannya seperti yang sudah dijelaskan pada dasar teori. Untuk melakukan klasifikasi jeruk
pertama bagian gambar yang merupakan Jeruk dipisahkan dari gambar lainnya dengan melakukan
pemotongan gambar (cropping). Hal ini dilakukan dengan bantuan library OpenCV dengan perintah
berikut.
cropped_fruit = img[y:y+h, x:x+w]
Setelah gambar sebuah jeruk didapat, klasifikasi dapat dilihat dari jumlah bagian yang hijau dan
bagian yang kuning. Buah yang dikatakan matang diasumsikan ialah buah dengan jumlah warna
kuningnya lebih mendominasi daripada warna hijau. Gambar 12 adalah tampilan histogram yang sangat
berbeda dari jeruk matang dan jeruk non matang.
Gambar 12. Histogram jeruk non matang (kiri) dan jeruk matang (kanan)
-
Dapat dilihat bahwa jeruk non matang cenderung memiliki persebaran histogram di tengah setelah
citra RGB diubah menjadi Grayscale. Sedangkan untuk jeruk matang cenderung memiliki persebatan
histogram di kanan mengingat tingkat kecerahahan warna kuning lebih mendekati warna putih
disbanding warna hijau. Sifat inilah yang dipakai untuk mengklasifisikasikan buah non matang dan buah
matang.
3.6. Perhitungan Jeruk Saat melakukan klasifikasi jeruk tentu saja juga dilakukan iterasi perhitungan antara jeruk matang
dan jeruk non matang. Diawal, kedua variabel dimulai dari nol dan untuk setiap penemuan jeruk akan
ditambahkan nilai satu untuk variabel matang jika hasil klasifikasi menunjukkan matang dan akan
menambahkan satu untuk variabel non matang jika hasil klasifikasi menunjukkan non matang. Hasil
akhir akan ditampilkan dalam konsol program. Gambar 13 adalah contoh hasil eksekusi akhir dari solusi
yang dibangun.
Gambar 12. Tampilan console dari hasil akhir eksekusi
4. Hasil Eksperimen Eksperimen dilakukan pada dua gambar yang didapat dari internet. Hasil eksperimen
menunjukkan bahwa solusi yang dibangun sudah dapat menyelesaikan masalah deteksi dan perhitungan
jumlah jeruk matang dan non matang berdasarkan citra digital. Hanya saja kasusnya hanya terbatas pada
gambar yang memiliki sudut yang tepat yakni gambar pohon statis dan terpisah dari pohon lain. Tabel
1 berisi rangkuman dari hasil eksperimen yang dilakukan.
Tabel 1. Rangkuman hasil eksperimen
Gambar Asli Gambar Hasil Deteksi Output Program
(sumber: bibitunggul.co.id)
MATANG : 108
NON MATANG : 3
(sumber: Balitjestro Indonesia)
MATANG : 74
NON MATANG : 2
-
5. Kesimpulan dan Saran Dari percobaan yang dilakukan dapat disimpulkan bahwa rancangan solusi yang diajukan oleh
penulis dapat menjadi solusi atas permasalahan deteksi dan perhitungan jumlah jeruk matang dan non
matang berdasarkan citra digital. Walaupun dari sisi akurasi belum dihitung secara kuantitatif mengingat
sulitnya menghitung banyaknya buah jeruk pada pohon, dapat dikatakan secara umum bahwa metode
ini dapat digunakan untuk mengestimasi jumlah panen oleh petani nantinya.
Saran untuk penelitian selanjutnya adalah dapat dicoba penerapannya pada input video serta
implementasi pada platform yang siap dipakai langsung oleh petani seperti pada platform android
ataupun iOS. Penulis juga menyadari bahwa kasus eksperimen masih belum terlalu banyak, untuk itu
pada penelitian selanjutnya disarankan untuk menggunakan kasus uji yang lebih banyak dan majemuk
seperti kasus tidak ada buah dan kasus buah non matang yang lebih banyak dari buah matang. Selain
itu, untuk penelitian yang lebih kompleks dapat juga lingkup deteksi diperluas hingga mampu
mendeteksi buah busuk ataupun buah sakit.
6. Daftar Pustaka [1] Zeeshan Malik, et al. 2016. Detection and Counting of On-Tree Citrus Fruit for Crop Yield
Estimation. International Journal of Advanced Computer Science and Applications.
[2] Walter Maldonado Jr., José Carlos Barbosa. 2016. Automatic green fruit counting in orange trees
using digital images. Computers and Electronics in Agriculture 127 (2016) 572-581.
[3] Cuevas, E., Wario, F., Osuna-Enciso, V., Zaldivar, D., Pérez-Cisneros, M. 2012. Fast algorithm for
multiple-circle detection on images using learning automata, IET Image Processing (8), pp. 1124-
1135
[4] Rinaldi Munir. 2019. Bahan Kuliah IF4073 Interpretasi dan Pengolahan Citra Sem. I Tahun Ajaran
2019/2020. Disadur dari http://informatika.stei.itb.ac.id/~rinaldi.munir/Citra/2019-2020/citra19-
20.htm
[5] OpenCV Documentation. Disadur dari https://opencv-python-tutroals.readthedocs.io/
Ucapan Terima kasih
Penulis mengucapkan syukur kepada Tuhan Yang Maha Esa karena atas hikmat, berkat dan
rahmat-Nya penulis mampu menyelesaikan tugas ini dengan baik. Penulis juga berterima kasih kepada
Bapak Dr. Ir. Rinaldi Munir, MT. selaku dosen pengampu mata kuliah IF4073 Interpretasi dan
Pengolahan Citra yang selama satu semester ini telah membimbing saya dan mengajar saya tentang
konsep-konsep penting dalam pengolahan citra. Serta tidak lupa penulis berterima kasih atas dukungan
orang tua dan teman-teman seperjuangan di kelas maupun luar kelas. Kiranya damai sejahtera selalu
menyertai kita semua.
http://informatika.stei.itb.ac.id/~rinaldi.munir/Citra/2019-2020/citra19-20.htmhttp://informatika.stei.itb.ac.id/~rinaldi.munir/Citra/2019-2020/citra19-20.htmhttps://opencv-python-tutroals.readthedocs.io/