RANCANG BANGUN APLIKASI PERHITUNGAN LUAS DAUN BERBASIS ANDROID

(1)

TUGAS AKHIR

Disusun sebagai salah satu syarat untuk menyelesaikan Program Strata Satu (S1) pada Program Studi Teknik Elektro

Universitas Muhammadiyah Yogyakarta

Disusun oleh :

FADHOLI ZULFAN AHMAD

20110120005

JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH YOGYAKARTA


(2)

i

TUGAS AKHIR

Disusun sebagai salah satu syarat untuk menyelesaikan Program Strata Satu (S1) pada Program Studi Teknik Elektro

Universitas Muhammadiyah Yogyakarta

Disusun oleh:

FADHOLI ZULFAN AHMAD 20110120005

JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH YOGYAKARTA


(3)

iii

yang secara tertulis dijadikan acuan dalam penulisan naskah ini dan disebutkan dalam daftar pustaka. Apabila di kemudian hari pernyataan ini tidak benar, maka saya siap menerima sanksi dari Universitas Muhammadiyah Yogyakarta sesuai dengan peraturan yang berlaku.

Yogyakarta, 26 Desember 2016


(4)

iv

Alhamdulillah, puji syukur penulis panjatkan kehadirat Allah SWT, yang telah memberikan kebaikannya, sehingga atas kehendak-Nya penulis dapat menyelesaikan laporan Tugas Akhir ini dengan judul “Rancang Bangun Aplikasi Perhitungan Luas Daun Berbasis Android”.

Laporan Skripsi ini dimaksudkan untuk memenuhi persyaratan mendapatkan gelar Sarjana Teknik Program Strata 1 (S1) yang telah ditetapkan oleh Jurusan Teknik Elektro Universitas Muhammadiyah Yogyakarta.

Penulis menyadari terselesaikannya laporan ini tidak terlepas dari dukungan, bantuan, dan bimbingan, saran-saran yang berharga dari semua pihak, oleh karena itu dengan tulus hati penulis ingin mengucapkan terima kasih kepada : 1. Bapak dan Ibu saya, Mucharom S. dan Almh. Noor Endrartie N. yang senantiasa memberikan penulis nasehat, motivasi dan petuah teramat besar untuk hidup ini.

2. Kedua saudara tersayang, Fadhila Sanaz A. dan Fayeza Shasliz A. yang selalu memberikan semangat dan motivasi kepada penulis.

3. Pak Ir. Tony K. Hariadi, M. T. dan Bu Anna Nur Nazilah Chamim, S.T., M.Eng selaku Dosen Pembimbing yang telah berkenan meluangkan banyak waktu dan pikiran dalam penyelesaian tugas akhir ini.


(5)

v

5. Teman – teman PAGARDEPAN 53RDADU.

6. Semua Dosen Jurusan Teknik Elektro Universitas Muhammadiyah Yogyakarta.

7. Teman - teman Angkatan 2011 dan 2012 Teknik Elektro UMY, Keluarga Besar Teknik Elektro UMY, Laboran, Staff Lab Elektro dan Karyawan yang senantiasa memberikan dukungan selama penulis kuliah di Universitas Muhammadiyah Yogyakarta.

8. Semua pihak yang telah membantu baik secara langsung maupun tidak langsung dalam penulisan laporan ini.

Selanjutnya penulis sangat mengharapkan kritik dan saran untuk memperbaiki laporan ini yang masih jauh dari sempurna. Semoga laporan skripsi ini dapat bermanfaat.

Wassalamu’alaikum Wr. Wb.

Yogyakarta, 26 Desember 2016


(6)

vi

Program Studi : Teknik Elektro Fakultas : Teknik

Jenis karya : Skripsi

Judul karya : Rancang Bangun Aplikasi Perhitungan Luas Daun Berbasis Android

Menyatakan dengan benar dan tanpa paksaan bahwa:

1. Karya ini adalah asli hasil karya saya sendiri dengan arahan dan bimbingan dosen pembimbing dan merupakan sebagian hasil dari penelitian di

Universitas Muhammadiyah Yogyakarta dengan:

Judul : Sistem Aplikasi Mobile Untuk Penggunaan Praktis Pada Penghitungan

Luas Daun Sumber

dana

: LP3M UMY Tahun : 2015

Ketua Peneliti

: Ir. Tony K. Hariadi, M.T.

2. Karya ini tidak memuat hasil karya orang lain kecuali acuan atau kutipan yang telah disebutkan sumbernya.

3. Karya ini belum pernah diajukan untuk memperoleh gelar akademik (sarjana, magister dan/doktor) di Universitas Muhammadiyah Yogyakarta atau institusi lainnya.

4. Demi pengembangan ilmu pengetahuan, saya menyetujui memberikan hak kepada dosen pembimbing dan Universitas Muhammadiyah Yogyakarta untuk menyimpan, menggunakan dan mengelola karya ini dan perangkat lainnya (jika ada) serta mempublikasikannya dalam bentuk lain baik itu semua maupun sebagian dengan tetap mencantumkan nama saya.

Yogyakarta, 26 Desember 2016 Yang menyatakan,


(7)

vii

HALAMAN PERNYATAAN ... iii

KATA PENGANTAR ... iv

SURAT PERNYATAAN KEASLIAN DAN PERSETUJUAN PUBLIKASI ... vi

DAFTAR ISI ... vii

DAFTAR GAMBAR ... ix

DAFTAR TABEL ... xi

INTISARI ... xii

ABSTRACT ... xiii

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang Masalah ... 2

1.2 Rumusan Masalah ... 2

1.3 Tujuan Penelitian ... 2

1.4 Batasan Masalah ... 2

1.5 Manfaat Penelitian ... 2

1.6 Sistematika Penulisan ... 2

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI ... 4

2.1 Tinjauan Pustaka ... 4

2.2 Landasan Teori ... 6

2.2.1 Umum ... 6

2.2.2 Model Citra ... 7

2.2.3 Citra Digital ... 7

2.2.4 Piksel ... 9

2.2.5 Smartphone ... 11

2.2.5.1 Android ... 12

2.2.5.2 Device Android ... 13

2.2.5.3 Android Studio ... 13

2.2.6 Pustaka OpenCV ... 15

2.2.6.1 Segmentasi Citra ... 17

2.2.6.2 Thresholding ... 17

2.2.6.2.1 Dasar Thresholding ... 17


(8)

viii

3.2.1.1 Android Studio 1.5 ... 21

3.2.1.2 Pustaka OpenCV ... 25

3.2.1.3 Algoritma Program ... 29

3.2.1.3.1 Algoritma Pengambilan Citra ... 30

3.2.1.3.2 Algoritma Pemotongan Citra ... 30

3.2.1.3.3 Algoritma Pemilihan Citra ... 31

3.2.1.3.4 Algoritma Threshold Citra ... 31

3.2.1.3.5 Algoritma Penghitungan Luas Citra(Daun) ... 32

BAB IV HASIL AKHIR DAN ANALISIS ... 34

4.1 Prinsip Kerja Perangkat Lunak Leaf App ... 34

4.2 Analisis ... 34

4.2.1 Pengujian Tiap Fungsi ... 34

4.3 Pengukuran Luas Citra Terhadap Objek Citra... 53

4.4 Pengujian Aplikasi Terhadap Citra Daun ... 58

4.5 Prosedur Penempatan Objek Yang Akan Dihitung ... 59

4.6 Prosedur Penggunaan Aplikasi Perhitungan Luas Daun ... 59

BAB V KESIMPULAN DAN SARAN ... 60

5.1 Kesimpulan ... 60

5.2 Saran ... 60

DAFTAR PUSAKA ... 61 LAMPIRAN - LAMPIRAN


(9)

ix

Gambar 2.3 Citra Biner dan Representasinya Dalam Data Digital ... 8

Gambar 2.4 Representasi Citra Digital Dalam Berbagai Macam Ukuran Piksel ... 10

Gambar 2.5 Lokasi Dalam Setiap Piksel ... 10

Gambar 2.6 Struktur Proyek Android Studio ... 14

Gambar 2.7 Antarmuka Android Studio ... 15

Gambar 2.8 Histogram Derajat Keabuan yang dapat dibagi oleh (a) single threshold , dan (b) multi threshold ... 18

Gambar 2.9 Gambar Formula Threshold ... 18

Gambar 2.10 Gambar Formula Citra Setelah Threshold ... 18

Gambar 2.11 Hasil Segmentasi Menggunakan Adaptive Thresholding. (a) Gambar Asli. (b) Gambar Setelah Proses Adaptive Threshold... 19

Gambar 3.1 Diagram Alir Penelitian ... 20

Gambar 3.2 Jendela Start Menu ... 21

Gambar 3.3 Tampilan Android Studio ... 22

Gambar 3.4 Jendela Android Studio Untuk Memulai Project Baru... 22

Gambar 3.5 Jendela Untuk Memberi Nama Project yang Akan Dibuat ... 23

Gambar 3.6 Jendela Untuk Memilih API ... 23

Gambar 3.7 Jendela Untuk Memilih Activity yang Digunakan ... 24

Gambar 3.8 Jendela Untuk Mengakhiri Penyetelan Pada Project... 24

Gambar 3.9 Jendela Untuk Menulis Kode Sumber Program ... 25

Gambar 3.10 Jendela Android Studio untuk mengkonfigurasi OpenCV ... 25

Gambar 3.11 Jendela Android Studio Mencari Pustaka OpenCV... 26

Gambar 3.12 Jendela Android Studio Memilih Pustaka OpenCV ... 26

Gambar 3.13 Jendela Android Studio Setelah Memilih Pustaka OpenCV ... 27

Gambar 3.14 Jendela Untuk Mengakahiri Penyetelan Pada Module ... 27

Gambar 3.15 Jendela Untuk Mengintegrasi Pustaka OpenCV dan Android Studio ... 28

Gambar 3.16 Jendela Untuk Mengkonfigurasi Pustaka OpenCV ... 28

Gambar 3.17 Jendela Untuk Mengakhiri Konfigurasi Pustaka OpenCV ... 29

Gambar 3.18 Flowchart Algoritma Singkat Program ... 29

Gambar 3.19 Flowchart Algoritma Pengambilan Citra ... 30

Gambar 3.20 Flowchart Algoritma Pemotongan Citra ... 31

Gambar 3.21 Flowchart Algoritma Pemilihan Citra ... 31

Gambar 3.22 Flowchart Algoritma Threshold Citra ... 32

Gambar 3.23 Flowchart Algoritma Penghitungan Luas Daun ... 32

Gambar 4.1 Blok Pengujian Mendapatkan Citra Gambar ... 35

Gambar 4.2 Pengambilan Citra dan Pemotongan Citra ... 48

Gambar 4.3 Blok Pengujian Gambar Threshold dan Luas Citra ... 49

Gambar 4.4 Penggunaan Threshold Pada Citra ... 53


(10)

x

Gambar 4.11 Hasil Threshold pada Luas A4 ... 56


(11)

xi

Tabel 4.3 Pengukuran Citra Bintang ... 54

Tabel 4.4 Pengukuran Citra Lingkaran ... 55

Tabel 4.5 Pengukuran Citra Waru ... 55

Tabel 4.6 Pengukuran Citra Segitiga ... 56


(12)

ii

BERBASIS ANDROID

Disusun oleh:

FADHOLI ZULFAN AHMAD 20110120005

Telah Dipertahankan Didepan Tim Penguji Pada Tanggal 14 Desember 2016 Susunan Tim Penguji

Tugas Akhir ini telah dinyatakan sah sebagai salah satu Persyaratan Untuk Memperoleh Gelar Sarjana Teknik

Penguji,

Rama Okta Wiyagi, S.T.,M.Eng NIK. 19861017201504 123 070

Dosen Pembimbing II

Anna Nur Nazilah Chamim, S.T.,M.Eng. NIK. 197608062005012001

Dosen Pembimbing I

Ir. Tony K. Hariadi, M.T. NIK. 196803271999 123 039

Yogyakarta, 26 Desember 2016 Mengesahkan

Ketua Program Studi Teknik Elektro

Ir. Agus Jamal, M.Eng. NIK. 19660829199502123020


(13)

xii

Daun juga memiliki fungsi sebagai pembuat makanan yang utama. Luas daun adalah parameter yang sangat penting dalam ilmu nutrisi tanaman, pengukuran proteksi tanaman, hubungan antara air dan tanah dalam tanaman, ekosistem hasil panen, kesuburan tanaman, dll.

Penggunaan alat pengukuran luas daun yang ada saat ini memiliki kekurangan dari segi portabilitas dan praktibilitas. Dengan semakin berkembangnya teknologi

smartphone, maka salah satu solusi yang bisa digunakan untuk mengatasi hal tersebut

adalah dengan merancang perangkat lunak (software) untuk mengukur luas daun

dengan memanfaatkan kamera smartphone yang berbasiskan Android.

Dalam penelitian ini telah berhasil dibuat aplikasi perhitungan luas daun yang memanfaatkan kamera smartphone dengan menggunakan pustaka OpenCV. Aplikasi

yang diberikan pada penelitian ini menampilkan operasi Adaptive Threshold seperti

perubahan warna pada citra daun.


(14)

xiii

function as a major food maker. Leaf area is a very important parameter in the science of plant nutrition, plant protection measurement, the relationship between water and land in crops, crop ecosystem, the fertility of crops, etc.

The use of leaf area measurement tools available today have shortcomings in terms of portability and practicability. With the development of smartphone technology, then one solution that can be used to overcome this is by designing software to measure leaf area by utilizing the camera-based Android smartphone.

In this research has been successfully made the leaf area calculation application that utilizes the smartphone's camera using OpenCV library. Applications are given in this study featuring Adaptive Threshold operations such as discoloration on the leaf image.


(15)

BAB I PENDAHULUAN

1.1Latar Belakang Masalah

Pertumbuhan adalah proses dalam kehidupan tanaman yang mengakibatkan perubahan ukuran tanaman semakin besar dan juga yang menentukan hasil tanaman. Pertambahan ukuran tubuh tanaman secara keseluruhan merupakan hasil dari pertambahan ukuran bagian-bagian (organ-organ) tanaman akibat dari pertambahan jaringan sel yang dihasilkan oleh pertambahan ukuran sel.

Daun adalah organ tumbuhan yang paling penting dalam proses fotosintesis dan hal tersebut akan mempengaruhi pertumbuhan hasil panen dan produktivitasnya. Daun juga memiliki fungsi sebagai pembuat makanan yang utama. Luas daun adalah parameter yang sangat penting dalam ilmu nutrisi tanaman, pengukuran proteksi tanaman, hubungan antara air dan tanah dalam tanaman, ekosistem hasil panen, kesuburan tanaman, dll.

Saat ini untuk mengukur luas daun digunakan alat elektronik yang dikenal dengan nama leaf area meter. Alat ini bekerja berdasarkan transmisi cahaya yang

dimonitor oleh suatu lensa. Secara teratur, alat ini perlu dikalibrasi dengan mengukur suatu luas lempengan yang telah diketahui.

Alat tersebut mempunyai kekurangan dari segi praktibilitas dan portabilitas untuk mengukur luas daun. Pengukuran luas daun menggunakan leaf area meter yang hanya dilakukan di laboratorium atau jika tidak tersedianya alat

ini, maka diperlukan suatu solusi untuk mengatasi hal tersebut.

Dengan semakin berkembangnya teknologi smart phone, maka salah satu solusi yang bisa digunakan untuk mengatasi hal tersebut adalah dengan merancang perangkat lunak (software) untuk mengukur luas daun dengan


(16)

1.2Rumusan Masalah

Berdasarkan latar belakang yang dikemukakan di atas, rumusan masalahnya adalah meningkatkan portabilitas dan praktibilitas aplikasi pengukuran luas daun yang berbasis smartphone.

1.3Tujuan Penelitian

Tujuan dari penelitian ini adalah merancang perangkat lunak (software)

untuk menghitung luas daun dengan menggunakan smartphone dengan

memanfaatkan kamera yang terintegrasi. 1.4Batasan Masalah

Luas daun merupakan luas suatu bidang yang memiliki bentuk tak tentu. Salah satu metode yang bisa diterapkan untuk mencari luasan bidang tak tentu tersebut adalah dengan menggunakan metode Adaptive Threshold yang

memanfaatkan Pustaka OpenCV yang diintegrasikan dengan kamera smartphone.

Dalam penelitian ini, waktu yang digunakan untuk pengambilan luas citra daun dilakukan pada kondisi intensitas cahaya matahari yang mencukupi.

1.5Manfaat Penelitian

Aplikasi pengukuran luas daun berbasis smartphone ini diharapkan dapat

digunakan sebagai alternatif untuk pengukuran daun sehingga memudahkan pengguna dalam mengukur luas daun di dalam ruangan maupun di lapangan. 1.6Sistematika Penulisan

Sistematika penulisan skripsi ini adalah sebagai berikut: 1. BAB I PENDAHULUAN

Bab ini berisi latar belakang masalah, rumusan masalah, tujuan penelitian, batasan masalah, manfaat penelitian, dan sistematika penulisan.

2. BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI

Bab ini menjelaskan mengenai teori – teori penunjang yang digunakan dalam mengerjakan skripsi ini.

3. BAB III METODE PENELITIAN

Bab ini berisi tentang uraian mengenai alat dan bahan yang digunakan, langkah – langkah penelitian, perancangan sistem dan pembuatan alat.


(17)

4. BAB IV HASIL AKHIR DAN ANALISIS

Bab ini berisi data – data pengamatan pengujian pada bagian – bagian tertentu dari keseluruhan program, serta pembahasan atau analisis data hasil pengujian dengan melakukan perbandingan terhadap teori yang mendukung.

5. BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan, saran dan rekomendasi untuk penelitian selanjutnya.


(18)

BAB II

TINJAUAN PUSTAKA DAN LANDASAN TEORI

2.1. Tinjauan Pustaka

Berikut beberapa penelitian atau karya yang berkaitan dengan pengolahan citra untuk pengukuran luas daun dan pengolahan citra berbasis Android :

Mahdi M. Ali, Ahmed Al – Ani, Derek Eamus dan Daniel K.Y. Tan (2012) dalam penelitiannya A New Image-Processing-Based Technique for Measuring Leaf Dimension memaparkan bahwa untuk mencari teknik baru dalam pengukuran

luas daun dengan memanfaatkan pengolahan citra. Metode yang digunakan adalah dengan menggunakan metode konvensional yaitu metode Non – Digital dan metode Digital sebagai pendekatannya sedangkan untuk metode yang digunakan adalah sebuah software yang diintegrasikan dengan alat digital yang ada. Hasilnya

menunjukkan perbedaan atau error yang kecil pada pengukuran luas daun.

Sapan Thakker dan Prof. Harsh Kapadia (2015) dalam penelitiannya Image Processing on Embedded Platfrom Android memaparkan bahwa pendekatan

inovatif terhadap desain, perkembangan, dan implementasi dari pengolahan citra berbasis aplikasi embedded vision platform. Dengan menggunakan library

OpenCV, pengolahan citra berbasis algoritma dapat diaplikasikan pada perangkat

android. Dengan menggunakan OpenCV dan android yang berbasis sistem embedded vision dapat dikembangkan yang mana dapat menggantikan sistem

berbasis machine vision. Android berbasis sistem embedded vision mengurangi

ukuran dari sistem dan juga solusi biaya efektif untuk industri. Aplikasi android

yang diberikan pada penelitian ini menampilkan operasi dasar seperti perubahan warna, deteksi tepi, operasi morfologi, dll.

Piyush Chaudhary, Sharda Godara, A.N. Cheeran, dan Anand K. Chaudhari (2012) dalam penelitiannya Fast and Accurate Method for Leaf Area Measurement memaparkan bahwa implementasikan pengolahan citra secara

sederhana, cepat, dan algoritma yang akurat untuk menghitung luas daun. Citra diambil menggunakan kamera digital dan disimpan dalam format JPEG. Citra RGB diubah warnanya ke dalam ruang warna CIELAB. Citra yang telah diubah


(19)

warnanya disegmentasi menggunakan teknik threshold. Threshold dihitung

menggunakan metode OTSU. Lubang di dalam area daun diisi menggunakan

region filling technique. Jumlah piksel di dalam objek kotak dan area daun

dihitung dan luas daun diukur dengan menggunakan statistik jumlah pikselnya. Keakuratan dari algoritmanya diatas 99% yang mana dibuktikan dengan menbandingkan hasil dari algoritma yang digunakan dengan metode hitungan

grid.

Parmar D. K., Ghodasara Y.R., Patel K. P., Patel K. V., dan Kathiriya D. R. (2015) dalam penelitiannya Estimation of Plant Leaf Area using Java Image Processing Techniques memaparkan bahwa luas daun merepresentasikan jumlah

dari material daun dalam ekosistem dan mengendalikan hubungan antara biosfer dan atmosfer melalui berbagai macam proses seperti fotosintesis, respirasi, transpirasi dan penangkapan air hujan. Hal tersebut juga membantu parameter dalam mengevaluasi kerusakan yang disebabkan penyakit daun, kekurangan mikronutrisi, air dan tekanan lingkungan, kebutuhan fertilisasi untuk pengelolaan yang efektif dan pemeliharaan. Produksi ketelitian pertanian mengadopsi metode kecepatan dan keakuratan untuk menghitung luas daun tanaman. Pada saat ini, penghitungan grid dan Leaf Area Meter (Li3100) digunakan sebagai metode

konvensional untuk estimasi luas daun. Metode ini sederhana dalam prinsip dan sangat akurat tetapi cenderung menghabiskan waktu. Permasalahan di atas dapat diatasi dengan Leaf Area Meter yang rancang; Aplikasi Pengolahan Citra Berbasis Java. Aplikasi tersebut memiliki banyak keuntungan seperti User Friendly, cepat,

akurat dan reusable. Jurnal ini mendiskusikan perbedaan metode estimasi luas

daun yang menggunakan Mesin Li 3100, Metode Manual Grafir dan Metode berbasis Software. Hasil menunjukkan bahwa software luas daun memberikan hasil 99.96% sampai 95.31% keakurasiannya untuk daun yang berbeda kecuali Jasud. Diantara format dua citra, .jpg menunjukkan komparasi yang lebih sedikit eror dibanding format .png.

Wang Jingwen dan Liu Hong (2012) dalam penelitiannya Measurement and Analysis of Plant Leaf Area Based on Image Processing memaparkan bahwa


(20)

dari luas daun tanaman berbasis dari Snake Model diadaptasi dalam studi ini.

Dalam jurnal ini, kita mengambil kontur daun dengan peningkatan Snake Model,

membuat tabel kode berantai 8 arah, menghitung luas daun dengan piksel di kontur daun dan menvisualkan hasilnya secara statistik dengan histogram area. Metode ini membuktikan lebih akurat dari metode pada umumnya, yang mana memiliki potensi yang baik untuk aplikasi praktis.

Hsien Ming Easlon dan Arnold J. Bloom (2014) dalam penelitiannya Easy Leaf Area : Automated Digital Image Analysis for Rapid and Accurate Measurement of Leaf Area memaparkan bahwa pengukuran luas daun dari foto

digital membutuhkan masukan dari pengguna secara signifikan kecuali latar dari gambar di hilangkan. Easy Leaf Area dikembangkan untuk sejumlah proses dari

Arabidopsis dalam hitungan menit, menghilangkan latar dari gambar daun dan

menyimpan hasilnya ke dalam sebuah file CSV. Easy Leaf Area menggunakan

rasio warna dari setiap piksel untuk membedakan daun dan area kalibrasi dari latar gambar dan membandingkan jumlah piksel daun dengan kalibrasi warna merah untuk mengeliminasi kebutuhan jarak kamera dari latarnya atau skala manual dengan penggaris yang mana software lainnya membutuhkannya. Leaf

Area menaksir dengan software ini gambar yang di ambil menggunakan ponsel kamera lebih akurat dari pada ImageJ yang menggunkan flatbed scanner. Easy Leaf Area menyediakan easy-to-use metode untuk pengukuran cepat dari luas

daun dan penaksiran non destruktif dari daerah canopy dari gambar digital.

2.2 Landasan Teori 2.2.1 Umum

Pengolahan citra (image processing) merupakan proses mengolah

piksel-piksel yang terdapat didalam citra digital( Ir. Balza Achmad, M.Sc.E dan Kartika Firdausy, S.T.,M.T, 2005). Dengan adanya informasi yang bisa diperoleh dari suatu citra digital dan telah dikembangkannya beberapa metode numerik yang diformulasikan untuk perhitungan integral, maka hal tersebut dapat digunakan untuk tujuan tertentu. Dapat digambarkan pada blok diagram berikut ini:


(21)

Gambar 2.1 Pemrosesan citra digital

2.2.2 Model Citra

Citra ada dua macam, yaitu citra kontinyu dan citra diskrit. Citra kontinyu dihasilkan dari sistem optik yang menerima sinyal analog, misalnya mata manusia, dan kamera analog. Citra diskrit dihasilkan melalui proses digitalisasi terhadap citra kontinyu. Beberapa sistem optik dilengkapi dengan fungsi digitalisasi sehingga ia mampu menghasilkan citra diskrit, misalnya kamera digital dan scanner. Citra diskrit disebut juga citra digital.

Citra agar dapat diolah dengan komputer, maka harus direpresentasikan secara numerik dengan nilai-nilai diskrit. Representasi citra dari fungsi kontinyu menjadi diskrit disebut digitalisasi. Citra yang dihasilkan inilah yang disebut citra digital (digital image). Pada umumnya citra digital berbentuk empat persegi

panjang, dan dimensi ukurannya dinyatakan sebagai lebar x tinggi ( Rinaldi

Munir, 2004).

Citra digital yang berukuran N x M lazim dinyatakan dengan matrik yang

berukuran N baris dan M kolom sebagai berikut:

Gambar 2.2 Matrik Citra Digital

2.2.3 Citra Digital 1. Pengertian Citra digital

Citra digital adalah gambar pada bidang dua dimensi, merupakan representasi keadaan visual yang disimpan secara elektronik dengan bit data

Image processing Metode numerik

Citra digital Informasi keluaran

 

 

 

 

 

 

                 1 , 1 ... 1 , 1 0 , 1 ... ... ... ... , 1 ... 1 , 1 0 , 1 , 0 ... 1 , 0 0 , 0 , M N f N f N f M f f f M f f f y x f


(22)

yang merepresentasikan warna. Seringkali citra digital mengalami penurunan mutu (degradasi), misalnya mengandung cacat atau derau (noise) sehingga

sulit diinterpretasi karena informasi yang disampaikan oleh citra tersebut menjadi berkurang. Agar citra yang mengalami gangguan mudah diinterpretasi baik oleh manusia maupun mesin, maka citra digital perlu dimanipulasi menjadi citra digital lain yang kualitasnya lebih baik atau disebut pengolahan citra (image processing).

2. Format Citra digital

Format citra digital yang banyak dipakai adalah: 1. Citra Biner

Pada citra biner, setiap titik bernilai 0 atau 1, masing-masing merepresentasikan warna tertentu. Contoh yang paling lazim: warna hitam bernilai 0 dan warna putih bernilai 1. Setiap titik pada citra hanya membutuhkan 1 bit, sehingga seitap byte dapat menampung informasi 8 titik. Gambar berikut

menunjukkan contoh representasi citra biner kedalam data digital.

Gambar 2.3 Citra biner dan representasinya dalam data digital

2. Citra skala keabuan (grayscale)

Citra skala keabuan memberi kemungkinan warna yang lebih banyak daripada citra biner, karena ada nilai-nilai lain diantara nilai minimum (biasanya = 0) dan nilai maksimumnya. Banyaknya kemungkinan nilai dan nilai maksimumnya bergantung pada jumlah bit yang digunakan. Contohnya untuk skala keabuan 4 bit, maka jumlah kemungkinan nilainya adalah 24 = 16, dan nilai maksimumnya adalah 24-1 = 15; sedangkan untuk skala keabuan 8 bit, maka jumlah kemungkinan nilainya adalah 28 = 256, dan nilai maksimumnya adalah 28 -1 = 255.

= 01101110 = 01101101 = 10011110 = 10011101


(23)

Format citra ini disebut skala keabuan karena pada umumnya warna yang dipakai adalah antara hitam sebagai warna minimal dan warna putih sebagai warna maksimalnya, sehingga warna antaranya adalah abu-abu. Namun pada prakteknya warna yang dipakai tidak terbatas pada warna abu-abu; sebagai contoh dipilih warna minimalnya adalah putih dan warna maksimalnya adalah merah, maka semakin besar nilainya semakin besar pula intensitasnya warna merahnya. Format citra ini sering juga disebut citra intensitas.

3. Citra warna (true color)

Pada citra warna, setiap titik mempunyai warna yang spesifik yang merupakan kombinasi dari 3 warna dasar, yaitu: merah, hijau, dan biru. Format citra ini sering disebut sebagai citra RGB (red-green-blue). Setiap warna dasar

mempunyai intensitas sendiri dengan nilai maksimum 255 (8 bit). Jumlah kombinasi warna yang mungkin untuk format citra ini adalah 224 atau lebih dari 16 juta warna, dengan demikian bisa dianggap mencakup semua warna yang ada, inilah sebabnya format ini dinamakan true color.

4. Citra warna berindeks

Pada format ini, informasi setiap titik merupakan indeks dari suatu tabel yang berisi informasi warna yang tersedia, yang disebut palet warna (color map).

Jumah bit yang dibutuhkan oleh setiap titik pada citra bergantung pada jumlah warna yang tersedia dalam palet warna. Sebagai contoh, untuk palet berukuran 16 warna, setiap titik membutuhkan 4 bit; dan untuk palet berukuran 256 warna, setiap titik membutuhkan 8 bit atau 1 byte. Palet warna merupakan bagian dari

cira warna berindeks, sehingga pada saat menyimpan citra ini kedalam file,

informasi palet warna juga harus disertakan ( Ir. Balza Achmad, M.Sc.E dan Kartika Firdausy, S.t.,MT, 2005).

2.2.4 Piksel

Piksel adalah unsur citra atau representasi sebuah titik terkecil dalam sebuah citra digital yang dihitung perinci. Piksel berasal dari akronim bahasa inggris yaitu Picture Element yang disingkat menjadi Pixel.


(24)

Dimensi dari setiap piksel dapat ditentukan ukurannya sesuai dengan kebutuhan. Ukuran piksel menentukan bagaimana kasar atau halusnya citra yang akan di representasikan. Semakin banyak piksel yang digunakan, maka akan semakin halus atau lebih detail citra yang ditampilkan dan akan berpengaruh terhadap penyimpanan dan kecepatan proses. Apabila semakin sedikit piksel yang digunakan, maka akan tejadi kehilangan informasi atau kehalusan citra akan terlihat lebih kasar.

Gambar 2.4 Representasi citra digital dalam berbagai macam ukuran piksel

Lokasi dalam setiap piksel di definisikan dalam bentuk baris dan kolom dimana didalamnya terdapat informasi mengenai posisi piksel. Apabila piksel memuat sistem koordinat kartesian, maka setiap baris merupakan paralel dengan sumbu x (x-axis), dan kolom paralel dengan sumbu y (y-axis).

Gambar 2.5 Lokasi dalam Setiap Piksel

Luas suatu citra digital direpresentasikan dalam setiap piksel dengan lebar dan panjang yang sama. Sebagai contoh : 92 x 92 piksel, berarti 92 titik pada


(25)

bidang horizontal dan 92 titik pada bidang vertikal, atau sama dengan 8464 piksel persegi ( www.ilmukomputer.com).

DPI (dots per inch) menunjukkan banyaknya titik per inchi, merupakan

ukuran penskalaan resolusi citra yang digunakan sebagai patokan untuk kualitas pencetakan suatu citra digital dari scanner atau printer. Tiap dots dari scanner

akan menjadi piksel pada citra digital. Scanner adalah alat yang digunakan untuk

membuat citra digital dari sumber asli, sehingga diperlukan penskalaan resolusi citra sebagai patokan untuk kualitas pencetakan atau sering disebut dpi (dots per inch). Formula hubungannya adalah sebagai berikut:

Detail akurasi (dpi) = dimensi citra digital (piksel) ÷ dimensi asli (inch)

(http://fred.dsimprove.be).

Piksel tidak memiliki ukuran dalam sebuah komputer dan tidak juga memiliki ukuran digital. Komputer mengkonversi piksel kedalam angka, dan susunan angka ini dikenali sebagai citra digital. (http://202.46.4.53/ Suplemen Petunjuk Teknis Pencitraan Digital 20 JIKN-2007.pdf).

2.2.5 Smartphone

Ponsel pintar atau yang lebih populer dengan smartphone merupakan

sebuah ponsel yang memiliki OS (Operating System) yang terdiri dari atas

kombinasi dari fitur sebuah PC (Personal Computer) dan fitur yang terdapat pada

ponsel juga tentunya. Sebagian besar smartphone dapat digunakan untuk

mengakses internet, dengan layar sentuh, dan dilengkapi dengan kamera.

Mobile Operating System yang digunakan untuk smartphone terdiri dari

beberapa jenis, yaitu: 1. Android

2. iOS

3. Windows Phone 4. Blackberry 5. Firefox OS 6. Sailfish OS 7. Ubuntu Touch


(26)

2.2.5.1Android

Android adalah sebuah operating sistem yang digunakan untuk menjalankan sebuah smartphone. Android pada awalnya dikembangkan oleh

Android Inc., yang kemudian dibeli oleh google pada tahun 2005 setelah

diberikan dukungan secara finansial oleh google. Sistem operasi Android tersebut

resmi dirilis pada tahun 2007, bersamaan dengan didirikannya sebuah perusahaan Open Handset Alliance, konsorsium dari beberapa perusahaan – perusahaan perangkat keras, perangkat lunak, serta telekomunikasi yang memiliki tujuan untuk memajukan standar terbuka dari perangkat seluler.

Android adalah sistem operasi yang bersifat open source, yang berarti,

bahwa perangkat lunaknya dapat dimodifikasi dan dikembangkan secara bebas. Saat ini sudah ada banyak sekali komunitas pengembang aplikasi (apps) yang memperluas fungsionalitas perangkat, umumnya ditulis dalam versi kustomisasi bahasa pemrograman Java. Pada bulan Oktober 2013, ada lebih dari satu juta

aplikasi yang tersedia untuk Android, dan sekitar 50 miliar aplikasi telah diunduh dari Google Play, toko aplikasi Android.

Sejak tahun 2008, Android mulai secara bertahap melakukan sejumlah pembaruan atau update untuk meningkatkan kinerja dari sistem operasi tersebut dengan menambahkan fitur baru, memperbaiki bug pada versi android yang

sebelumnya. Setiap vesi yang dirilis dinamakan secara alfabetis dengan berdasarkan nama sebuah makanan pencuci mulut, seperti cupcake, donut, dan sebagainya. Berikut nama – nama versi android:

a. Android (1.0) b. Cupcake (1.2 – 1.5) c. Donut (1.6)

d. Èclair (2.0 – 2.1) e. Froyo (2.2 – 2.2.3) f. Gingerbread (2.3 – 2.3.7) g. Honeycomb (3.0 – 3.2.6)

h. Ice Cream Sandwich (4.0 – 4.0.4) i. Jelly Bean (4.1 – 4.3)


(27)

j. Kit Kat (4.4+) k. Lollipop (5.0) l. Marshmallow (6.0) 2.2.5.2Device Android

Device android yang digunakan untuk penelitian skripsi adalah ponsel pintar dengan merk Sony dengan tipe ST27i dan menggunakan OS android dengan

versi JellyBean.

2.2.5.3Android Studio

Android Studio adalah lingkungan pengembangan terpadu – Integrated Development Environment (IDE) untuk pengembangan aplikasi Android,

berdasarkan IntelliJ IDEA. Selain merupakan editor kode IntelliJ dan alat

pengembang yang berdaya guna, Android Studio menawarkan fitur lebih banyak

untuk meningkatkan produktivitas saat membuat aplikasi Android., misalnya :

1. Sistem pembuatan berbasis Gradle yang fleksibel

2. Emulator yang cepat dan kaya fitur

3. Lingkungan yang menyatu untuk pengembangan bagi semua perangkat

Android

4. Instan Run untuk mendorong perubahan ke aplikasi yang berjalan tanpa

membuat APK baru

5. Template kode dan integrasi Github untuk membuat fitur aplikasi yang

sama dan mengimpor kode contoh.

6. Alat penguji dan kerangka kerja yang ekstensif 7. Dukungan C++ dan NDK


(28)

Struktur Proyek

Gambar 2.6 Struktur Proyek Android Studio

Setiap proyek di Android Studio berisi satu atau beberapa modul dengan file kode

sumber dan file sumber daya. Jenis – jenis modul mencakup :

 Modul Aplikasi Android  Modul Perpustakaan

 Modul Google App Engine

Secara default, Android Studio menampilkan file proyek dalam tampilan proyek Android seperti yang ditunjukkan dalam gambar 1. Tampilan ini diatur menurut

modul untuk memberi akses cepat ke file sumber kunci proyek.

Semua file versi terlihat di bagian atas di bawah Gradle Scripts dan

masing - masing modul aplikasi berisi folder berikut :

Manifest : berisi file AndroidManifest.xml.

Java : berisi file kode sumber Java, termasuk kode pengujian Junit.  Res : berisi semua sumber daya bukan kode, seperti tata letak XML, string UI, dan gambar bitmap.


(29)

Antarmuka Pengguna

Gambar 2.7 Antarmuka Android Studio

1. Bilah alat : Untuk melakukan berbagai jenis tindakan, termasuk menjalankan aplikasi dan meluncurkan alat Android.

2. Bilah Navigasi : Untuk menavigasi di antara proyek dan file yang dibuka untuk pengeditan. Di sini tampilan struktur yang terlihat tampak lebih ringkas dari pada jendela Project.

3. Jendela editor : Untuk membuat dan mengubah kode. Bergantung pada jenis file saat ini, editor dapat berubah. Misalnya, ketika melihat file tata letak, editor akan menampilkan Layout Editor.

4. Jendela alat : Untuk memberi akses ke tugas – tugas spesifik pengelolaan proyek, penelusuran, kontrol versi, dan banyak lagi.

5. Bilah status : menampilkan status proyek dan IDE itu sendiri, serta setiap

peringatan pesan.

2.2.6 Pustaka OpenCV

OpenCV adalah singkatan dari Open Source Computer Vision Library


(30)

dinamis secara real time yang dibuat oleh Intel dan saat ini didukung oleh Willow

Garage and Itseez. Program ini bebas dan berada dalam naungan sumber terbuka dari lisensi BSD. Pustaka ini merupakan pustaka lintas platform. Program ini didedikasikan sebagian besar untuk pengolah citra secara real time. OpenCV

pertama kali diluncurkan secara resmi pada tahun 1999 oleh Inter Research sebagai lanjutan dari bagian proyek bertajuk aplikasi intensif berbasis CPU, real tim ray tracking, dan tembok penampil 3D. Para kontributor utama dalam proyek

ini termasuk mereka yang berkecimpung dalam bidang optimasi di Intel Rusia dan juga tim pustaka performasi intel. Pada awalnya tujuan utama dari proyek OpenCV ini dideskripsikan sebagai berikut :

a. Penelitian penginderaan citra lanjutan tidak hanya melalui kode program terbuka, tetapi juga kode yang telah teroptimasi untuk infrastruktur penginderaan citra

b. Menyebarluaskan ilmu penginderaan citra dengan menyediakan infrastruktur bersama di mana para pengembang dapat menggunakan secara bersama – sama sehingga kode akan tampak lebih mudah dibaca dan ditransfer

c. Membuat aplikasi komersial berbasiskan penginderaan citra, di mana kode yang telah teroptimasi tersedia secara bebas dengan lisensi yang tersedia secara bebas yang tidak mensyaratkan program harus terbuka atau gratis.

OpenCV dioptimasikan dengan 2.500 lebih pustaka algoritma OpenCV menyediakan fitur Integrated Performance Primitive (IPP) Intel sehingga bisa

lebih mengoptimalisasikan aplikasi vision jika menggunakan processor Intel.

OpenCV terdiri dari lima pustaka yaitu :

 CV : pustaka untuk algoritma pengolahan citra dan penglihatan

 ML : pustaka untuk pembelajaran mesin

 Highgui : pustaka untuk GUI, gambar, video input/output

 CXCORE : pustaka untuk struktur data, mendukung XML, dan fungsi – fungsi grafis


(31)

2.2.6.1Segmentasi Citra

Segmentasi dikaitkan dengan pemilah – pemilah atau pengelompokkan suatu objek di dalam citra ke dalam segmen - segmen (area atau region) di mana

masing – masing segmen mempunyai sifat – sifat yang berbeda dengan segmen yang menjadi tetangganya. Ini merupakan bagian dasar di dalam analisis scene

di dalam menjawab pertanyaan – pertanyaan seperti di mana dan sebagaimana besarkah objek tersebut, di manakah latar belakangnya, berapa banyakkah objek yang berada di dalamnya, berapa banyakkah permukaan yang meliputinya, dan lain – lain. Segmentasi merupakan kebutuhan yang sangat mendasar untuk pengidentifikasian dan pengklasifikasian objek di dalam scene, dan memfokuskan

tugasnya pada algoritma – algoritma subsekuensial pada bentuk, tekstur, atau warna dari suatu area yang homogen.

2.2.6.2Thresholding

2.2.6.2.1 Dasar Thresholding

Dimisalkan bahwa histogram derajat keabuan yang ditampilkan pada

gambar 2.8 sesuai dengan gambar, f(x,y), yang terdiri dari benda yang terpapar

cahaya pada latar yang gelap, yang sedemikian rupa pada piksel objek dan latarnya memiliki pengelompokkan tingkat keabuan pada dua model yang dominan. Satu cara yang pasti untuk mengekstrak objek dari latarnya adalah dengan memilih threshold T yang mana memisahkan dua model tersebut. Yang

kemudian titik (x,y) untuk setiap f(x,y) > T disebut sebagai titik objek.

Gambar 2.8(b) menunjukkan contoh yang sedikit lebih umum, dimana tiga model dominan mencirikan histogram gambar(untuk contoh, dua tipe dari objek cahaya


(32)

(a) (b)

Gambar 2.8 Histogram derajat keabuan yang dapat dibagi oleh (a) single threshold, dan (b) multiple threshold.

Dalam hal ini, multilevel thresholding mengklasifikasikan sebuah titik(x,y)

sebagai milik salah satu objek jika T< (x,y) < T, ke objek yang lain jika f(x,y) > T,

dan ke latar jika f(x,y) < T. Thresholding dapat ditampilkan sebagai operasi yang

melibatkan fungsi T pada formula :

Gambar 2.9 Gambar Formula Threshold

Dimana f(x,y) adalah tingkat keabuan dari titik (x,y) dan p(x,y)

menandakan beberapa ciri pada titik ini, sebagai contoh, tingkat rata – rata keabuan dari neighborhood terpusat pada (x,y). Citra yang sudah di threshold

g(x,y) didefiniskan sebagai

Gambar 2.10 Gambar Formula Citra Setelah Threshold

Sehinggapiksel berlabel 1sesuai dengan objek dimana piksel berlabel 0 sesuai dengan latarnya. Ketika T bergantung pada koordinat spasial x dan y, thresholdnya disebut dengan dinamis atau adaptive.


(33)

2.2.6.2.2 Adaptive Thresholding

Untuk membagi gambar asli ke dalam subimage dan kemudian memanfaatkan ambang batas yang berbeda untuk segmen masing-masing

subimage. Isu-isu kunci dalam pendekatan ini adalah bagaimana membagi gambar

dan bagaimana memperkirakan ambang batas untuk setiap subimage dihasilkan. Sejak ambang digunakan untuk setiap pixel tergantung pada lokasi piksel dalam hal subimage, jenis thresholdingnya adalah adapative thresholding. Dalam hal ini

penggambarkan thresholding adaptif dengan menggunakan contoh sederhana.

Sebuah contoh yang lebih komprehensif diberikan pada bagian berikutnya.

Semua subimage yang tidak mengandung batas antara objek dan latar

belakang memiliki variasi yang kurang dari 75. Semua subimage berisi

batas-batas yang memiliki variasi lebih dari 100. Setiap subimage dengan variasi lebih

besar dari 100 yang tersegmentasi dengan ambang batas dihitung untuk setiap subimage menggunakan algoritma pada dasar thresholding. Awal nilai T dalam

setiap kasus terpilih sebagai titik tengah antara minimum dan tingkat keabua - abuan maksimum dalam subimage tersebut. Semua subimage dengan variasi

kurang dari 100 diperlakukan sebagai satu gambar komposit, yang tersegmentasi menggunakan threshold tunggal. Hasil segmentasi menggunakan prosedur ini

ditunjukkan pada gambar 2.11.

(a) (b)

Gambar 2.11 Hasil Segmentasi Menggunakan Adaptive Thresholding. (a)


(34)

BAB III

METODE PENELITIAN 3.1Diagram Alir Penelitian

Diagram blok penelitian yang akan dilakukan dapat digambarkan pada gambar berikut:

Gambar 3.1 Diagram Alir Penelitian 3.1.1 Penjelasan Diagram Alir

1. Studi Pustaka

Tahap ini merupakan proses pengumpulan informasi dan data – data yang diambil dari jurnal, paper,makalah, maupun beberapa sumber yang berasal dari situs – situs di internet mengenai teori – teori tentang Pengukuran Luas Daun dan Aplikasi Android yang diterapkan dan Alat bantu berupa algoritma serta bahasa

pemrograman yang akan digunakan. 2. Perancangan Perangkat Lunak

Setelah dilakukan proses studi pustaka maka proses selanjutnya adalah menganalisis informasi untuk perancangan perangkat lunak yakni penentuan teori, algoritma, dan bahasa pemrograman yang akan digunakan.

Studi Pustaka

Perancangan Perangkat Lunak

Pembuatan Sistem Mulai

Selesai

Uji Gagal?


(35)

3. Pembuatan Sistem

Pada tahap ini akan dilakukan pembuatan perangkat lunak yang berbasis

Android.

4. Uji(Pengujian Tiap Fungsi)

Tahap ini akan melakukan pengujian dasar terhadap beberapa fungsi yang membentuk satu kesatuan ketika program dijalankan.

3.2Perancangan

Alat pengukur luas daun secara umum hanya terdiri dari dua perangkat, yakni lunak dan elektronik. Namun demikian sistem ini ditopang hanya 1 sistem, program. Sistem perangkat lunak(Software) dibuat dengan bahasa pemrograman

Java, XML, dan Pustaka OpenCV.

3.2.1 Proses Perancangan Perangkat Lunak

Program dibuat dengan satu program aplikasi yakni Android Studio yang terintegrasi dengan Pustaka OpenCV.

3.2.1.1Android Studio 1.5

Untuk merancang program dengan Android Studio dapat dilakukan dengan cara:

1. Pertama : Aplikasi Android Studio dapat dibuka di jendela Start seperti ditunjukkan pada gambar di bawah ini, arahkan pointer ke shortcut Android

Studio kemudian klik.


(36)

2. Kedua : akan muncul jendela aplikasi Android Studio, tunggu aplikasi beberapa saat.

Gambar 3.3 Tampilan Android Studio

3. Ketiga : Klik File -> New ->New Project seperti di tunjukkan pada gambar di

bawah.


(37)

4. Keempat : Klik pada nomor “1” kemudian edit sesuai dengan nama project yang dinginkan kemudian klik “Next”.

Gambar 3.5 Jendela Untuk Memberi Nama Project yang akan dibuat 5. Kelima : Klik pada scroll down dan pilih API yang akan digunakan dan

kemudian klik “Next”.


(38)

6. Keenam : Klik pada pilihan “Empty Activity” kemudian klik “Next”.

Gambar 3.7 Jendela untuk memilih Activity yang digunakan

7. Ketujuh : Klik pada tombol “Finish”.


(39)

8. Kedelapan : Setelah tombol “Finish” di klik akan muncul jendela seperti pada

gambar di bawah ini.

Gambar 3.9 Jendela Untuk Menulis Kode Sumber Program 3.2.1.2Pustaka OpenCV

Library OpenCV merupakan library terpisah sehingga harus dikonfigurasi terlebih dahulu agar dapat diakses oleh Android Studio, berikut cara untuk mengkonfigurasi OpenCV dengan Android Studio :

1. Pertama : Klik File -> New ->Import Module seperti di tunjukkan pada gambar

di bawah.


(40)

2. Kedua : Setelah di klik akan muncul jendela seperti dibawah ini. Kemudian klik seperti gambar di bawah ini.

Gambar 3.11 Jendela Android Studio Mencari Pustaka OpenCV

3. Ketiga : Setelah di klik akan muncul jendela seperti dibawah kemudian pilih Pustaka OpenCV dan klik OK.


(41)

4. Keempat : Setelah klik “OK” akan muncul jendela seperti gambar di bawah ini dan kemudian klik “Next”.

Gambar 3.13 Jendela Android Studio Setelah Memilih Pustaka OpenCV 5. Kelima : Klik pada tombol “Finish”.


(42)

6. Keenam : Klik File -> Project Structure seperti di tunjukkan pada gambar di

bawah.

Gambar 3.15 Jendela untuk mengintegrasi Pustaka OpenCV dan Android Studio 7. Ketujuh : Setelah di klik akan muncul jendela seperti dibawah ini. Pada nomor

“1” untuk memilih direktori aplikasi yang akan digunakan, nomor “2” pilih bagian ini untuk mengkonfigurasi, nomor “3” klik pada bagian ini untuk memasukkan Pustaka OpenCV untuk digunakan dalam aplikasi.


(43)

8. Kedelapan : Kemudian akan muncul jendela dibawah ini dan klik “OK”.

Gambar 3.17 Jendela Untuk Mengakhiri Konfigurasi Pustaka OpenCV 3.2.1.3Algoritma Program

Algoritma pengukuran luas daun yang diterapkan adalah algoritma

Adaptive Threshold. Untuk memudahkan dalam pembuatan alur program maka

penulis membuat flowchart sebagai perancangan awal untuk memudahkan dalam

proses penentuan alur program yang akan dibuat.

Gambar 3.18 Flowchart Algoritma Singkat Program

Mulai

Pengambilan Citra Pemotongan Citra

Pemilihan Citra

Penghitungan Luas Citra (Daun)

Selesai


(44)

Flowchart di atas adalah penjelasan algoritma singkat bagaimana program

ini berjalan. Dimana dimulai dengan pengambilan citra terlebih dahulu, pemotongan citra sesuai dengan luasan objek referensi, pemilihan citra yang telah di ambil, kemudian penghitungan luas citra(dalam hal ini citra daun).

Pada flowchart kedua hingga flowchart keenam adalah deskripsi algoritma

lengkap penghitungan luas daun berbasis Android. Proses pengambilan citra

merupakan tahap awal proses penghitungan luas daun, tahap sudah tereksekusi secara tuntas dari keseluruhan algortima adalah di tampilkannya hasil threshold

beserta nilai luas daun yang dihitung. 3.2.1.3.1 Algoritma Pengambilan Citra

Pada algoritma pengambilan citra yang dilakukan adalah pengambilan citra melalui kamera smartphone yang kemudian akan terdapat pilihan setelah

pengambilan citra dilakukan, yaitu delete atau edit. Untuk pilihan delete, akan

menghapus hasil pengambilan citra yang telah dilakukan dan untuk pilihan

edit,akan memodifikasi hasil pengambilan citra yang telah dilakukan.

Gambar 3.19 Flowchart Algoritma Pengambilan Citra

3.2.1.3.2 Algoritma Pemotongan Citra

Pada algoritma pemotongan citra yang dilakukan adalah pemotongan citra terhadap citra yang telah diambil. Pemotongan yang dilakukan adalah untuk

Pilihan Delete?

Ambil Citra

Edit? Mulai


(45)

menentukan luasan citra yang nantinya akan diproses pada tahap selanjutnya dan disimpan media penyimpanan smartphone.

Gambar 3.20 Flowchart Algoritma Pemotongan Citra

3.2.1.3.3 Algoritma Pemilihan Citra

Pada algoritma pemilihan citra yang dilakukan adalah mengakses gallery

pada smartphone untuk memilih citra yang telah disimpan pada media

penyimpanan smartphone yang kemudian akan dilanjutkan ke dalam proses

selanjutnya.

Gambar 3.21 Flowchart Algoritma Pemilihan Citra

3.2.1.3.4 Algoritma Threshold Citra

Pada algoritma threshold citra yang dilakukan adalah proses pengubahan

warna citra yang telah dipilih ke dalam warna hitam putih. Proses yang dilakukan Pemotongan Citra

Tentukan Area Pemotongan Citra

Simpan Citra Edit

Selesai

Threshold

Mulai Buka Gallery


(46)

adalah pengubahan citra yang memiliki format citra bitmap ke dalam data matrix.

Kemudian citra yang sudah diubah ke dalam data matrix dikonversi nilai

warnanya dari RGB ke Gray(Keabu-abuan). Dilanjutkan dengan proses penentuan

nilai ambangnya(Threshold).

Gambar 3.22 Flowchart Algoritma Threshold Citra

3.2.1.3.5 Algoritma Penghitungan Luas Citra(Daun)

Pada algoritma penghitungan luas citra yang dilakukan adalah

Gambar 3.23 Flowchart Algoritma Penghitungan Luas Daun

Mulai

Input a,r,n

Luas = (a/r) x n

Tampilkan Luas Daun

Selesai Mulai

Pilih Citra Daun

Citra Daun Dibuat Data Matrik

Konversi Gambar RGB ke Gray Dalam Bentuk Matrik

Threshold Gambar


(47)

Pada algoritma penghitungan luas citra yang dilakukan adalah proses penghitungan luas dengan memberikan input a,r,dan n sebagai variabel luas area A4, besar resolusi hasil penangkapan kamera smartphone, dan nilai piksel yang

didapat pada hasil threshold citra. Untuk menghitung luas citra, variabel yang

telah di masukkan kemudian diproses dalam perhitungan aritmatika yang telah ditentukan dalam algoritma. Dan hasil akhirnya akan menampilkan luas citra yang telah diproses.


(48)

BAB IV

HASIL AKHIR DAN ANALISIS

4.1 Prinsip Kerja Perangkat Lunak Leaf App

Aplikasi yang dibuat memiliki cara kerja dalam penggunaannya. Prosesnya adalah pertama pengambilan citra gambar dengan menggunakan kamera

smartphone kemudian setelah gambar diambil citranya, citra dipotong besarnya

sesuai dengan background yang berbentuk A4 sebagai luas referensinya. Langkah

berikutnya adalah pemilihan citra gambar untuk dihitung luasnya yang kemudian di threshold untuk mengubah citra yang ada ke dalam warna putih-hitam.

Langkah terakhir adalah penghitungan luas daun dengan menghitung piksel warna putih hasil threshold dengan faktor pengali pikselnya maka akan ditampilkan luas

citra daun yang ada. 4.2 Analisis

Analisis merupakan salah satu bagian hal yang penting yang harus dilakukan untuk mengetahui apakah alat yang telah direncanakan mampu beroperasi dengan hal yang telah direncanakan dan diharapkan. Hal itu dapat dilihat dari hasil – hasil yang telah dicapai selama pengujian alat. Selain untuk mengetahui apakah alat sudah bekerja dengan baik sesuai dengan yang diharapkan, pengujian juga bertujuan untuk mengetahui kelebihan dan kekurangan dari alat yang dibuat. Hasil – hasil pengujian tersebut nantinya akan dianalisa agar dapat diketahui mengapa terjadi kekurangan. Pengujian pertama dilakukan secara terpisah, dalam artian pengujian tiap fungsi. Kemudian dilakukan pengujian secara keseluruhan ketika semua fungsi sudah disatukan. Pengujian yang telah dilakukan pada bab ini antara lain :

4.2.1 Pengujian Tiap Fungsi

Fungsi Untuk Mendapatkan Citra Gambar Melalui Kamera

Pengujian ini adalah pengujian awal yang harus dilakukan untuk memastikan kamera dapat bekerja dan mengambil citra gambar.

Komponen yang terlibat :


(49)

 Pustaka OpenCV 2.4.9

 Kode Sumber Class“Application.java dan LabActivity.java”

Alur :

Gambar 4.1 Blok Pengujian Mendapatkan Citra Gambar

 Kamera Smartphone yang dipakai memiliki resolusi terbesar 320 x 240 piksel.

 Smartphone akan mendapatkan inputan dari kamera, diolah oleh software Leaf App, dan hasil ditampilkan ke LCD Smartphone.

 Kode Sumber Program Class ini adalah: file source code Application.java:

package com.example.leafapp;

import java.io.File;

import java.util.List;

import android.net.Uri;

import android.os.Build;

import android.os.Bundle;

import android.os.Environment;

import android.provider.MediaStore;

import android.provider.MediaStore.Images;

import android.annotation.SuppressLint;

import android.content.ContentValues;

import android.content.Intent;

import android.hardware.Camera;

import android.hardware.Camera.CameraInfo;

import android.hardware.Camera.Parameters;

import android.hardware.Camera.Size;

import android.support.v7.app.ActionBarActivity;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.SubMenu;

import android.view.Window;

import android.view.WindowManager;

import android.widget.Toast;


(50)

import org.opencv.android.BaseLoaderCallback;

import org.opencv.android.CameraBridgeViewBase;

import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;

import

org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;

import org.opencv.android.LoaderCallbackInterface;

import org.opencv.android.JavaCameraView;

import org.opencv.android.OpenCVLoader;

import org.opencv.core.Core;

import org.opencv.core.Mat;

import org.opencv.highgui.Highgui;

import org.opencv.imgproc.Imgproc;

// Use the deprecated Camera class.

@SuppressWarnings("deprecation")

public final class Application extends ActionBarActivity

implements CvCameraViewListener2 {

// A tag for log output.

private static final String TAG =

MainActivity.class.getSimpleName();

// A key for storing the index of the active camera. private static final String STATE_CAMERA_INDEX =

"cameraIndex";

// A key for storing the index of the active image size. private static final String STATE_IMAGE_SIZE_INDEX = "imageSizeIndex";

// An ID for items in the image size submenu. private static final int MENU_GROUP_ID_SIZE = 2;

// The index of the active camera. private int mCameraIndex;


(51)

private int mImageSizeIndex;

// Whether the active camera is front-facing. // If so, the camera view should be mirrored. private boolean mIsCameraFrontFacing;

// The number of cameras on the device. private int mNumCameras;

// The image sizes supported by the active camera. private List<Size> mSupportedImageSizes;

// The camera view.

private CameraBridgeViewBase mCameraView;

// Whether the next camera frame should be saved as a photo. private boolean mIsPhotoPending;

// A matrix that is used when saving photos. private Mat mBgr;

// Whether an asynchronous menu action is in progress. // If so, menu interaction should be disabled.

private boolean mIsMenuLocked; // The OpenCV loader callback.

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {

@Override

public void onManagerConnected(final int status) { switch (status) {

case LoaderCallbackInterface.SUCCESS: Log.d(TAG, "OpenCV loaded

successfully");

mCameraView.enableView();

//mCameraView.enableFpsMeter(); mBgr = new Mat();


(52)

default: super.onManagerConnected(status); break; } } };

// Suppress backward incompatibility errors because we provide // backward-compatible fallbacks.

@SuppressLint("NewApi") @Override

protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState);

final Window window = getWindow(); window.addFlags(

WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

if (savedInstanceState != null) {

mCameraIndex = savedInstanceState.getInt( STATE_CAMERA_INDEX, 0);

mImageSizeIndex = savedInstanceState.getInt( STATE_IMAGE_SIZE_INDEX, 0);

} else {

mCameraIndex = 0; mImageSizeIndex = 0; }

final Camera camera;

if (Build.VERSION.SDK_INT >=

Build.VERSION_CODES.GINGERBREAD) { CameraInfo cameraInfo = new CameraInfo();

Camera.getCameraInfo(mCameraIndex, cameraInfo); mIsCameraFrontFacing =

(cameraInfo.facing ==

CameraInfo.CAMERA_FACING_FRONT); mNumCameras = Camera.getNumberOfCameras();


(53)

} else { // pre-Gingerbread

// Assume there is only 1 camera and it is rear-facing.

mIsCameraFrontFacing = false; mNumCameras = 1;

camera = Camera.open(); }

final Parameters parameters = camera.getParameters(); camera.release();

mSupportedImageSizes =

parameters.getSupportedPreviewSizes(); final Size size =

mSupportedImageSizes.get(mImageSizeIndex);

mCameraView = new JavaCameraView(this, mCameraIndex); mCameraView.setMaxFrameSize(size.width, size.height); mCameraView.setCvCameraViewListener(this);

setContentView(mCameraView); }

public void onSaveInstanceState(Bundle savedInstanceState) { // Save the current camera index.

savedInstanceState.putInt(STATE_CAMERA_INDEX,

mCameraIndex);

// Save the current image size index.

savedInstanceState.putInt(STATE_IMAGE_SIZE_INDEX, mImageSizeIndex);

super.onSaveInstanceState(savedInstanceState); }

// Suppress backward incompatibility errors because we provide // backward-compatible fallbacks.

@SuppressLint("NewApi") @Override

public void recreate() {


(54)

Build.VERSION_CODES.HONEYCOMB) { super.recreate();

} else { finish();

startActivity(getIntent()); }

}

@Override

public void onPause() {

if (mCameraView != null) { mCameraView.disableView(); }

super.onPause(); }

@Override

public void onResume() { super.onResume();

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback);

mIsMenuLocked = false; }

@Override

public void onDestroy() { if (mCameraView != null) { mCameraView.disableView(); }

super.onDestroy(); }

@Override

public boolean onCreateOptionsMenu(final Menu menu) {

getMenuInflater().inflate(R.menu.activity_camera, menu); int numSupportedImageSizes = mSupportedImageSizes.size(); if (numSupportedImageSizes > 1) {


(55)

menu.addSubMenu(R.string.menu_image_size);

for (int i = 0; i < numSupportedImageSizes; i++) { final Size size = mSupportedImageSizes.get(i); sizeSubMenu.add(MENU_GROUP_ID_SIZE, i, Menu.NONE, String.format("%dx%d", size.width,

size.height)); }

}

return true; }

// Suppress backward incompatibility errors because we provide // backward-compatible fallbacks (for recreate).

@SuppressLint("NewApi") @Override

public boolean onOptionsItemSelected(final MenuItem item) { if (mIsMenuLocked) {

return true; }

if (item.getGroupId() == MENU_GROUP_ID_SIZE) { mImageSizeIndex = item.getItemId();

recreate();

return true; }

switch (item.getItemId()) { case R.id.menu_take_photo: mIsMenuLocked = true;

// Next frame, take the photo. mIsPhotoPending = true;

return true; default:

return super.onOptionsItemSelected(item); }


(56)

@Override

public void onCameraViewStarted(final int width, final int height) { }

@Override

public void onCameraViewStopped() { }

@Override

public Mat onCameraFrame(final CvCameraViewFrame inputFrame) { final Mat rgba = inputFrame.rgba();

if (mIsPhotoPending) {

mIsPhotoPending = false; takePhoto(rgba);

}

if (mIsCameraFrontFacing) {

// Mirror (horizontally flip) the preview. Core.flip(rgba, rgba, 1);

}

return rgba; }

private void takePhoto(final Mat rgba) {

// Determine the path and metadata for the photo.

final long currentTimeMillis = System.currentTimeMillis(); final String appName = getString(R.string.app_name);

final String galleryPath =

Environment.getExternalStoragePublicDirectory(

Environment.DIRECTORY_PICTURES).toString();

final String albumPath = galleryPath + File.separator + appName;


(57)

currentTimeMillis + LabActivity.PHOTO_FILE_EXTENSION;

final ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DATA, photoPath); values.put(Images.Media.MIME_TYPE,

LabActivity.PHOTO_MIME_TYPE); values.put(Images.Media.TITLE, appName);

values.put(Images.Media.DESCRIPTION, appName);

values.put(Images.Media.DATE_TAKEN, currentTimeMillis); // Ensure that the album directory exists.

File album = new File(albumPath);

if (!album.isDirectory() && !album.mkdirs()) {

Log.e(TAG, "Failed to create album directory at " + albumPath);

onTakePhotoFailed(); return;

}

// Try to create the photo.

Imgproc.cvtColor(rgba, mBgr, Imgproc.COLOR_RGBA2BGR, 3); if (!Highgui.imwrite(photoPath, mBgr)) {

Log.e(TAG, "Failed to save photo to " + photoPath); onTakePhotoFailed();

}

Log.d(TAG, "Photo saved successfully to " + photoPath);

// Try to insert the photo into the MediaStore. Uri uri;

try {

uri = getContentResolver().insert(

Images.Media.EXTERNAL_CONTENT_URI, values); } catch (final Exception e) {

Log.e(TAG, "Failed to insert photo into MediaStore"); e.printStackTrace();

// Since the insertion failed, delete the photo. File photo = new File(photoPath);


(58)

Log.e(TAG, "Failed to delete non-inserted photo"); }

onTakePhotoFailed(); return;

}

// Open the photo in LabActivity.

final Intent intent = new Intent(this, LabActivity.class); intent.putExtra(LabActivity.EXTRA_PHOTO_URI, uri);

intent.putExtra(LabActivity.EXTRA_PHOTO_DATA_PATH, photoPath);

runOnUiThread(new Runnable() { @Override

public void run() {

startActivity(intent); }

}); }

private void onTakePhotoFailed() { mIsMenuLocked = false;

// Show an error message. final String errorMessage =

getString(R.string.photo_error_message); runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(Application.this, errorMessage, Toast.LENGTH_SHORT).show();

} }); }


(59)

file source code LabActivity.java:

package com.example.leafapp;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.provider.MediaStore;

import android.provider.MediaStore.Images;

import android.support.v7.app.ActionBarActivity;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.ImageView;

public final class LabActivity extends ActionBarActivity {

public static final String PHOTO_FILE_EXTENSION = ".png"; public static final String PHOTO_MIME_TYPE = "image/png";

public static final String EXTRA_PHOTO_URI =

"com.nummist.secondsight.LabActivity.extra.PHOTO_URI"; public static final String EXTRA_PHOTO_DATA_PATH =

"com.nummist.secondsight.LabActivity.extra.PHOTO_DATA_PATH";

private Uri mUri;

private String mDataPath; @Override

protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState);

final Intent intent = getIntent();

mUri = intent.getParcelableExtra(EXTRA_PHOTO_URI);


(60)

final ImageView imageView = new ImageView(this); imageView.setImageURI(mUri);

setContentView(imageView); }

@Override

public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.activity_lab, menu); return true;

}

@Override

public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) {

case R.id.menu_delete: deletePhoto(); return true; case R.id.menu_edit: editPhoto(); return true; default:

return super.onOptionsItemSelected(item); }

}

/*

* Show a confirmation dialog. On confirmation ("Delete"), the * photo is deleted and the activity finishes.

*/

private void deletePhoto() {

final AlertDialog.Builder alert = new AlertDialog.Builder( LabActivity.this);

alert.setTitle(R.string.photo_delete_prompt_title); alert.setMessage(R.string.photo_delete_prompt_message); alert.setCancelable(false);

alert.setPositiveButton(R.string.delete,


(61)

@Override

public void onClick(final DialogInterface dialog,

final int which) { getContentResolver().delete(

Images.Media.EXTERNAL_CONTENT_URI, MediaStore.MediaColumns.DATA +

"=?",

new String[]{mDataPath}); finish();

} });

alert.setNegativeButton(android.R.string.cancel, null); alert.show();

}

/*

* Show a chooser so that the user may pick an app for editing * the photo.

*/

private void editPhoto() {

final Intent intent = new Intent(Intent.ACTION_EDIT); intent.setDataAndType(mUri, PHOTO_MIME_TYPE);

startActivity(Intent.createChooser(intent,

getString(R.string.photo_edit_chooser_title))); }

@Override

protected void onDestroy() { super.onDestroy();

finish(); }

}


(62)

Hasil dan Analisa :

Pada LCD Smartphone akan ditampilkan hasil capture dari kamera

smartphone berupa citra 2 dimensi. Gambar di bawah ini merupakan hasil sebelum diintegrasikan dengan fungsi lain.

Gambar 4.2 Pengambilan Citra dan Pemotongan Citra

Pada gambar di atas menampilkan hasil tangkapan dari kamera smartphone, jendela dengan nama “Leaf App” jendela kiri atas adalah screenshot

tangkapan dari kamera smartphone pada saat fungsi kamera dijalankan, jendela kanan atas adalah hasil tangkapan dari kamera smartphone yang kemudian dapat di edit ataupun di hapus, jendela kiri bawah adalah tampilan pada saat akan

melakukan pemotongan citra dengan menggunakan fungsi edit, dan jendela kanan

bawah adalah hasil dari pemotongan citra yang sudah dilakukan proses pemotongan sebelumnya.

Fungsi Untuk Mendapatkan Gambar Threshold dan Luas Citra

Pengujian ini untuk menguji apakah kode sumber mampu menghasilkan gambar

Threshold dan menampilkan luas citra gambar.

Komponen yang terlibat :

 Smartphone Android Sony Xperia ST27i


(63)

 Kode Sumber Class“MainActivity.java”

Alur :

Gambar 4.3 Blok Pengujian Gambar Threshold dan Luas Citra

 Citra yang di ambil pada Gallery di Smartphone.

 Citra akan diolah oleh software Leaf App, dan hasil ditampilkan ke LCD

Smartphone.

 Kode Sumber Program Class ini adalah: file source code MainActivity.java:

package com.example.leafapp;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.net.Uri;

import android.os.Bundle;

import android.provider.MediaStore;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

import org.opencv.android.OpenCVLoader;

import org.opencv.android.Utils;

import org.opencv.core.Core;

import org.opencv.core.CvType;

import org.opencv.core.Mat;

import org.opencv.imgproc.Imgproc;

import java.io.FileNotFoundException;

public class MainActivity extends Activity { Button bCapt, bPickCal;

ImageView iv;


(64)

Uri source;

Bitmap bitmap, bitmapMaster; TextView Result;

private static final int LOAD_IMAGE = 100;

private static final String TAG = "MainActivity";

static {

if (!OpenCVLoader.initDebug()) { Log.d(TAG, "OpenCV not loaded"); } else {

Log.d(TAG, "OpenCV loaded"); }

}

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

bCapt = (Button) findViewById(R.id.bCapture); bPickCal = (Button) findViewById(R.id.bPick); iv = (ImageView) findViewById(R.id.imageView); Result = (TextView) findViewById(R.id.source);

bitmap = BitmapFactory.decodeResource(this.getResources(), R.id.imageView);

bCapt.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) {

Intent intent = new Intent(MainActivity.this, Application.class);

startActivity(intent); }

});

bPickCal.setOnClickListener(new View.OnClickListener() { @Override


(65)

public void onClick(View v) {

Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivityForResult(intent, LOAD_IMAGE); }

});

}

@Override

protected void onActivityResult(int requestCode, int

resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (resultCode == RESULT_OK) { switch (requestCode) { case LOAD_IMAGE:

source = data.getData(); try {

bitmapMaster =

BitmapFactory.decodeStream(getContentResolver().openInputStream( source));

LoadBitmap(bitmapMaster);

} catch (FileNotFoundException e) { // TODO Auto-generated catch block

e.printStackTrace(); } break; } } }

private void LoadBitmap(Bitmap bitmap) {


(66)

CvType.CV_8UC1); // Convert

Utils.bitmapToMat(bitmap, mat);

Mat gray = new Mat(bitmap.getWidth(), bitmap.getHeight(), CvType.CV_8UC1);

// Convert the color

Imgproc.cvtColor(mat, gray, Imgproc.COLOR_RGB2GRAY); // Convert back to bitmap

Mat purpose = new Mat(gray.rows(), gray.cols(), gray.type());

Imgproc.adaptiveThreshold(gray, purpose, 255,

Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 255,

5);

Utils.matToBitmap(purpose, bitmap); iv.setImageBitmap(bitmap);

Mat m = new Mat();

Core.extractChannel(purpose, m, 0); int n = Core.countNonZero(m);

int integer = Integer.parseInt(String.valueOf(n)); // A4 Area in cm2

float a = 623.7f;

//Pixel Value A4 Area in 226x320 resolution int r = 72320;

double result = (a / r) * integer; Result.setText(String.valueOf(result)); }

}


(67)

Hasil dan Analisa :

Gambar 4.4 Penggunaan Threshold Pada Citra

Ini adalah hasil ketika program dijalankan, hasil menunjukkan perubahan pada citra yang semula berwarna hijau berubah menjadi warna putih yang disebabkan digunakannya fungsi Threshold pada citra. Setelah citra dirubah ke

dalam warna hitam putih, citra kemudian dihitung jumlah nilai piksel yang berwarna putih yang dikalikan dengan faktor pengkali pikselnya sehingga di dapatkan nilai luasan dari citra.

4.3 Pengukuran Luas Citra Terhadap Objek Citra 1. Pengukuran Luas Citra Bentuk Persegi Panjang

Tabel 4.1 Pengukuran Citra Persegi Panjang

Gambar 4.5 Hasil Threshold pada Bentuk Persegi Panjang

No. Manual (Cm2)

Leaf App

(Cm2) 1 234,0 234,7 2 234,0 234,1 3 234,0 235,3


(68)

2. Pengukuran Luas Citra Bentuk Ellips

Tabel 4.2 Pengukuran Citra Ellips

Gambar 4.6 Hasil Threshold pada Bentuk Ellips

3. Pengukuran Luas Citra Bentuk Bintang

Tabel 4.3 Pengukuran Citra Bintang

Gambar 4.7 Hasil Threshold pada Bentuk Bintang

No. Manual (Cm2)

Leaf App

(Cm2) 1 183,8 180,7 2 183,8 180,8 3 183,8 188,2

No. Manual (Cm2)

Leaf App

(Cm2) 1 100,1 101,5 2 100,1 101,8 3 100,1 101,2


(69)

4. Pengukuran Luas Citra Bentuk Lingkaran

Tabel 4.4 Pengukuran Citra Lingkaran

Gambar 4.8 Hasil Threshold pada Bentuk Lingkaran

5. Pengukuran Luas Citra Bentuk Waru

Tabel 4.5 Pengukuran Citra Waru

Gambar 4.9 Hasil Threshold pada Bentuk Waru

No. Manual (Cm2)

Leaf App

(Cm2) 1 254,5 251,2 2 254,5 256,5 3 254,5 256,1

No. Manual (Cm2)

Leaf App

(Cm2) 1 177,3 175,1 2 177,3 176,7 3 177,3 174,3


(70)

6. Pengukuran Luas Citra Bentuk Segitiga

Tabel 4.6 Pengukuran Citra Segitiga

Gambar 4.10 Hasil Threshold pada Bentuk Segitiga

7. Pengukuran Luas Citra Dengan Luas A4

Gambar 4.11 Hasil Threshold pada Luas A4

Ini adalah hasil ketika program dijalankan pada bentuk bidang yang memiliki luas area sama dengan luas A4 yang digunakan sebagai referensi. Dari hasil menunjukkan bahwa dalam pengukuran ini, referensi A4 sebagai alas pada saat pengambilan memiliki sebagai bidang yang dikenai fungsi threshold sehingga

luas area objek yang akan dihitung tidak diperbolehkan sama dengan sama luas A4 yang berfungsi sebagai bidang referensinya agar pengukuran dapat dilakukan.

No. Manual (Cm2)

Leaf App

(Cm2) 1 105,4 104,5 2 105,4 103,8 3 105,4 103,5


(71)

Tabel 4.7 Data Pengukuran Luas Citra Terhadap Objek Citra

Bentuk

Luas

Perbedaan Luas (Manual

Leaf App)

Kesalahan(%) Manual (cm2) Leaf App (cm2) Persegi Panjang

Besar 468 434,6 33,4 7,14

Sedang 234 234,7 0,7 0,3

Kecil 117 119,7 2,7 2,3

Ellips

Besar 367,6 362,6 5 1,36

Sedang 183,8 183,2 0,5 0,27

Kecil 91,9 94,2 2,3 2,5

Bintang

Besar 100,17 101,5 1,4 1,39

Sedang 56,3 56,5 0,3 0,53

Kecil 25,0 25,4 0,4 1,6

Besar 254,5 254,6 0,1 0,04

Lingkaran Sedang 143,1 145,6 2,5 1,74

Kecil 63,6 64,9 1,3 2,04

Waru

Besar 177,3 175,4 1,9 1,07

Sedang 99,7 101.9 2,2 2,2

Kecil 44,3 45,4 1,1 2,48

Segitiga

Besar 140,4 139,2 1,2 0,85

Sedang 105,4 103,9 1,5 1,42

Kecil 35,1 36,5 1,4 3,99

Pada tabel di atas, terdapat 5 kolom, kolom pertama adalah bentuk citra bidang datar yang digunakan, kolom kedua adalah data luas sesungguhnya dari citra bidang datar, kolom ketiga adalah hasil pengukuran yang didapat dari penghitungan citra bidang datar menggunakan software Leaf App, selanjutnya

adalah kolom selisih luas sesungguhnya dengan luas berdasarkan software, dan yang terakhir adalah nilai presentase nilai selisih luas. Pada pengambilan data ini nilai yang terdapat di kolom 3 adalah nilai yang muncul pada LCD Smartphone.


(1)

XML Layout


(2)

(3)

leaf.xml


(4)

Menu

activity_camera.xml


(5)

Value strings.xml


(6)