Mini Studi Kasus Pertemuan 10 - 11

Mini Studi Kasus Pertemuan 10 - 11

Mata Kuliah : Pengolahan Citra Digital

Mini Project

Klasifikasi Daun Sehat dan Daun Tidak Sehat Menggunakan Pengolahan Citra Digital


A. Latar Belakang

Teknologi pengolahan citra digital telah banyak dimanfaatkan pada bidang pertanian untuk membantu petani dalam memantau kesehatan tanaman secara otomatis. Salah satu penerapannya adalah mengidentifikasi kondisi daun berdasarkan warna, tekstur, maupun bentuknya.

Pada mini project ini Anda diminta untuk mengembangkan sebuah aplikasi sederhana berbasis Python yang mampu melakukan proses pengolahan citra serta mengklasifikasikan daun menjadi Daun Sehat atau Daun Tidak Sehat.

Sebagai referensi awal, dosen telah menyediakan starter code yang menampilkan proses dasar pengolahan citra menggunakan OpenCV dan Tkinter. Namun, aplikasi tersebut masih menggunakan metode klasifikasi sederhana sehingga perlu dikembangkan lebih lanjut.


B. Studi Kasus

Sebuah kelompok tani ingin memiliki aplikasi sederhana yang dapat membantu mengidentifikasi kondisi daun tanaman melalui foto yang diambil menggunakan kamera atau diperoleh dari dataset.

Aplikasi harus mampu menampilkan tahapan pengolahan citra sebelum menghasilkan keputusan apakah daun termasuk Sehat atau Tidak Sehat.

Sebagai seorang pengembang sistem Computer Vision, Anda diminta untuk menyempurnakan aplikasi tersebut agar memberikan hasil yang lebih baik dibandingkan contoh yang telah diberikan.


C. Tujuan

Setelah menyelesaikan mini project ini mahasiswa diharapkan mampu:

  1. Memahami konsep dasar pengolahan citra digital.

  2. Menggunakan OpenCV untuk memproses citra.

  3. Melakukan preprocessing citra.

  4. Mengimplementasikan operasi morfologi.

  5. Melakukan segmentasi objek.

  6. Mengembangkan metode klasifikasi sederhana menjadi lebih baik.

  7. Mendesain antarmuka aplikasi berbasis Tkinter.


D. Starter Code

Dosen telah menyediakan contoh source code yang memiliki fitur berikut.

  • Mengunggah gambar daun.

  • Menampilkan gambar asli.

  • Mengubah gambar menjadi grayscale.

  • Melakukan proses Erosion.

  • Melakukan proses Dilation.

  • Melakukan Morphological Closing.

  • Menampilkan hasil klasifikasi sederhana berdasarkan rata-rata intensitas piksel.

Catatan: Source code tersebut hanya sebagai referensi awal dan tidak boleh dikumpulkan tanpa pengembangan.


E. Tugas Pengembangan

Setiap mahasiswa wajib melakukan pengembangan terhadap starter code dengan ketentuan sebagai berikut.

Wajib

  1. Memodifikasi tampilan GUI agar lebih menarik.

  2. Menambahkan minimal dua metode preprocessing selain yang sudah tersedia.

  3. Menambahkan minimal satu metode segmentasi.

  4. Mengubah metode klasifikasi sederhana agar menghasilkan keputusan yang lebih baik.

  5. Menampilkan hasil klasifikasi pada aplikasi.


Pilihan Pengembangan (Minimal 4 Fitur)

Pilih minimal empat pengembangan berikut.

  • Median Filter

  • Gaussian Blur

  • Bilateral Filter

  • Histogram Equalization

  • CLAHE

  • Thresholding

  • Adaptive Threshold

  • HSV Color Segmentation

  • Contour Detection

  • Edge Detection

  • Ekstraksi warna hijau

  • Ekstraksi tekstur

  • Perhitungan luas objek daun

  • Persentase warna hijau

  • Histogram citra

  • Penyimpanan hasil klasifikasi

  • Batch Processing (lebih dari satu gambar)

  • Kamera/Webcam

  • Dataset Training

  • K-Nearest Neighbor (K-NN)

  • Support Vector Machine (SVM)

  • Decision Tree

  • Random Forest

  • CNN (nilai bonus)


F. Output Program

Aplikasi minimal mampu menampilkan:

  • Gambar Asli

  • Grayscale

  • Hasil Preprocessing

  • Hasil Segmentasi

  • Hasil Klasifikasi

Contoh informasi hasil:

  • Nama file

  • Status daun

  • Nilai rata-rata intensitas

  • Persentase warna hijau

  • Waktu proses


G. Dataset

Mahasiswa bebas menggunakan dataset dari:

  • Kaggle

  • PlantVillage

  • Dataset pribadi

  • Dataset yang disediakan dosen

Minimal terdiri dari:

  • 20 gambar daun sehat

  • 20 gambar daun tidak sehat

Semakin banyak dataset yang digunakan akan semakin baik.


H. Laporan

Laporan minimal berisi:

  1. Cover

  2. Pendahuluan

  3. Studi Kasus

  4. Analisis Permasalahan

  5. Flowchart Sistem

  6. Algoritma Pengolahan Citra

  7. Penjelasan Pengembangan Program

  8. Hasil Pengujian

  9. Analisis Hasil

  10. Kesimpulan

  11. Daftar Pustaka


I. Video Presentasi

Buat video presentasi berdurasi 5–10 menit yang berisi:

  • Penjelasan program

  • Demo aplikasi

  • Penjelasan metode yang digunakan

  • Hasil pengujian


J. Ketentuan Penilaian

Komponen Bobot
GUI Aplikasi 10%
Pengolahan Citra 20%
Pengembangan Fitur 30%
Klasifikasi 20%
Laporan 10%
Presentasi 10%

K. Ketentuan Akademik

  1. Mahasiswa wajib memahami setiap bagian program yang dikembangkan.

  2. Tidak diperkenankan mengumpulkan hasil yang sama dengan starter code tanpa modifikasi.

  3. Setiap pengembangan harus dijelaskan pada laporan.

  4. Kesamaan kode antar mahasiswa akan menjadi bahan evaluasi akademik sesuai ketentuan yang berlaku.

  5. Kreativitas, inovasi, dan kualitas analisis akan menjadi nilai tambah dalam penilaian.


L. Bonus Nilai

Bonus nilai akan diberikan apabila mahasiswa berhasil mengembangkan aplikasi dengan salah satu fitur berikut:

  • Menggunakan Machine Learning (K-NN, SVM, Decision Tree, Random Forest).

  • Menggunakan Deep Learning (CNN).

  • Menggunakan webcam secara real-time.

  • Menampilkan tingkat akurasi klasifikasi.

  • Menampilkan confusion matrix.

  • Menampilkan grafik evaluasi model.

  • Mengembangkan aplikasi menjadi sistem deteksi penyakit daun secara otomatis.


Target Pembelajaran

Melalui mini project ini mahasiswa diharapkan tidak hanya mampu menjalankan program, tetapi juga memahami konsep preprocessing, operasi morfologi, segmentasi, ekstraksi fitur, dan klasifikasi citra, sehingga memiliki kemampuan untuk mengembangkan aplikasi Computer Vision sederhana secara mandiri menggunakan Python dan OpenCV.

Lampiran A

Starter Code Mini Project

Klasifikasi Daun Sehat dan Daun Tidak Sehat Menggunakan Python OpenCV

Source code berikut merupakan starter code yang digunakan sebagai dasar pengembangan aplikasi klasifikasi daun. Program ini terdiri dari beberapa bagian utama, yaitu import library, deklarasi class, pengaturan GUI, proses pengolahan citra, proses klasifikasi, dan menjalankan aplikasi.

Mahasiswa diharapkan memahami setiap bagian program sebelum melakukan pengembangan.


1. Import Library

import tkinter as tk
from tkinter import filedialog
import numpy as np
from PIL import Image, ImageTk
import cv2

Penjelasan

Bagian ini digunakan untuk mengimpor pustaka (library) yang diperlukan oleh program.

Library Fungsi
tkinter Membuat antarmuka (GUI) aplikasi.
filedialog Membuka jendela pemilihan file gambar.
numpy Mengolah data citra dalam bentuk matriks.
PIL (Pillow) Mengubah format gambar agar dapat ditampilkan pada Tkinter.
OpenCV (cv2) Melakukan proses pengolahan citra digital.

2. Deklarasi Class

class AplikasiKlasifikasiDaun:

Penjelasan

Class merupakan cetak biru (blueprint) dari aplikasi yang akan dibuat.

Semua fungsi dalam aplikasi, seperti membuka gambar, menampilkan gambar, melakukan preprocessing, hingga klasifikasi, disimpan di dalam class ini agar program lebih terstruktur dan mudah dikembangkan.


3. Constructor

def __init__(self, root):

Penjelasan

Method __init__() merupakan constructor yang akan dijalankan secara otomatis ketika objek dibuat.

Pada bagian ini dilakukan:

  • inisialisasi jendela utama,

  • pemanggilan pengaturan GUI,

  • pembuatan Frame,

  • pembuatan Label,

  • pembuatan Button,

  • serta menyiapkan komponen yang akan digunakan selama aplikasi berjalan.


4. Pengaturan GUI

self.root.title("Klasifikasi Daun")
self.root.geometry("1400x600")
self.root.resizable(False, False)

Penjelasan

Bagian ini mengatur tampilan aplikasi.

  • title() memberikan judul aplikasi.

  • geometry() menentukan ukuran jendela.

  • resizable() mengatur apakah ukuran jendela dapat diubah oleh pengguna.


5. Frame

self.frame_gambar = tk.Frame(root)

Penjelasan

Frame berfungsi sebagai wadah untuk menempatkan beberapa komponen GUI agar lebih rapi.

Pada aplikasi ini frame digunakan untuk menampilkan seluruh gambar hasil pengolahan.


6. Label

self.label_gambar_asli
self.label_gambar_abu
self.label_gambar_eroded
self.label_gambar_dilated
self.label_gambar_closing

Penjelasan

Label digunakan sebagai tempat menampilkan gambar maupun teks.

Pada aplikasi ini terdapat lima label utama yang digunakan untuk menampilkan:

  • Gambar asli

  • Gambar grayscale

  • Hasil erosi

  • Hasil dilasi

  • Hasil closing


7. Button

self.tombol_unggah
self.tombol_klasifikasi

Penjelasan

Button digunakan untuk menjalankan suatu proses.

Tombol pertama digunakan untuk memilih gambar.

Tombol kedua digunakan untuk melakukan klasifikasi.


8. Method unggah_gambar()

def unggah_gambar(self):

Penjelasan

Method ini digunakan untuk membaca gambar dari komputer.

Tahapan yang dilakukan:

  1. Memilih file gambar.

  2. Membaca gambar menggunakan OpenCV.

  3. Menampilkan gambar asli.

  4. Mengubah gambar menjadi grayscale.

  5. Melakukan erosi.

  6. Melakukan dilasi.

  7. Melakukan morphological closing.

  8. Menampilkan seluruh hasil pada GUI.


9. Konversi Grayscale

gray = cv2.cvtColor(self.gambar, cv2.COLOR_BGR2GRAY)

Penjelasan

Grayscale mengubah citra RGB menjadi citra satu kanal (intensitas keabuan).

Tujuannya adalah menyederhanakan proses pengolahan citra sehingga komputasi menjadi lebih cepat.


10. Operasi Erosi

cv2.erode()

Penjelasan

Erosi digunakan untuk mengurangi ukuran objek putih pada citra.

Fungsi utama:

  • menghilangkan noise kecil,

  • memisahkan objek yang saling menempel,

  • memperkecil objek.


11. Operasi Dilasi

cv2.dilate()

Penjelasan

Dilasi merupakan kebalikan dari erosi.

Fungsi utamanya:

  • memperbesar objek,

  • menutup celah kecil,

  • memperjelas bentuk objek.


12. Morphological Closing

cv2.morphologyEx(gray, cv2.MORPH_CLOSE, kernel)

Penjelasan

Closing merupakan kombinasi:

Dilasi

Erosi

Operasi ini digunakan untuk:

  • menutup lubang kecil pada objek,

  • memperhalus bentuk objek,

  • menghubungkan bagian objek yang terputus.


13. Method klasifikasi_gambar()

def klasifikasi_gambar(self):

Penjelasan

Method ini melakukan proses identifikasi kondisi daun.

Pada starter code, klasifikasi masih menggunakan pendekatan sederhana, yaitu membandingkan nilai rata-rata intensitas piksel.

Apabila rata-rata intensitas lebih besar dari nilai tertentu, maka daun dianggap Sehat. Sebaliknya, apabila lebih kecil dari nilai ambang, maka daun dianggap Tidak Sehat.

Metode ini hanya digunakan sebagai contoh implementasi awal dan belum menggunakan algoritma Machine Learning.


14. Main Program

if __name__ == "__main__":

Penjelasan

Bagian ini merupakan titik awal eksekusi program.

Program akan:

  1. Membuat jendela utama (Tkinter).

  2. Membuat objek dari class AplikasiKlasifikasiDaun.

  3. Menjalankan aplikasi menggunakan mainloop() sehingga GUI dapat menerima interaksi dari pengguna.


Kesimpulan

Starter code ini memberikan contoh implementasi dasar aplikasi pengolahan citra digital berbasis Python. Program telah menerapkan beberapa konsep penting, seperti pembacaan citra, konversi grayscale, operasi morfologi (erosi, dilasi, dan closing), serta klasifikasi sederhana berbasis nilai intensitas piksel. Mahasiswa diharapkan memahami fungsi setiap deklarasi dan method yang ada, kemudian mengembangkan aplikasi dengan menambahkan metode preprocessing, segmentasi, ekstraksi fitur, maupun algoritma klasifikasi yang lebih baik sehingga menghasilkan sistem yang lebih akurat dan informatif.