Anda di halaman 1dari 39

TUGAS KOMPUTER VISION

LAPORAN PRAKTIKUM BAB 1 SAMPAI BAB 6

Untuk memenuhi tugas matakuliah Komputer Vision


Yang Dibina Oleh Ibu Kartika Candra Kirana, S.Pd., M. Kom.

Oleh :
Dicky Chandra Tri Buhana
200533628022

UNIVERSITAS NEGERI
MALANG FAKULTAS TEKNIK
DEPARTEMEN TEKNIK ELEKTRO DAN
INFORMATIKA PRODI S1 PENDIDIKAN TEKNIK
INFORMATIKA

NOVEMBER 2023
A. PRAKTIKUM 1
1. Percobaan 1

2. Percobaan 2
Ouput pengujian!

<class 'numpy.ndarray'>
(1024, 1024, 3)
3145728
uint8

[[255 255 255 ... 255 255 255]


[255 255 255 ... 255 255 255]
[255 255 255 ... 255 255 255]
...
[255 255 255 ... 255 255 255]
[255 255 255 ... 255 255 255]
[255 255 255 ... 255 255 255]]
3. Percobaan 3
3. Modifikasi dengan menampilkan plot figure 2x2!

4. Tampilkan gambar biner dan gambar keabuan pada gambar yang telah anda gunakan!

4. Percobaan 4
Output pengujian
5. Percobaan 5
Hasil uji coba

Analisis proses ekualisasi kode program :


1. Mengimpor Modul dan Gambar:
Modul-modul yang diperlukan diimpor seperti NumPy, Matplotlib, dan OpenCV.
Gambar awal ("Unequalized_Hawkes_Bay_NZ.jpg") dimuat dalam format grayscale (mode "0")
menggunakan cv2.imread(). Gambar ini akan digunakan sebagai contoh untuk ekualisasi histogram.
2. Menampilkan Gambar Asli:
Gambar awal ditampilkan
plt.imshow dengan colormap "gray" untuk menampilkan
menggunakan gambar dalam skala abu-
abu.
3. Menghitung Histogram Awal:
Histogram gambar awal dihitung menggunakan np.histogram(). Hasil histogram akan menunjukkan
sebaran nilai piksel dalam gambar.
4. Menampilkan Histogram Awal:
Histogram awal ditampilkan dalam bentuk grafik batang menggunakan plt.bar().
5. Menghitung Probabilitas Distribusi Piksel (PDF):
Probabilitas distribusi piksel (PDF) dihitung dengan membagi setiap elemen histogram awal dengan
jumlah total elemen histogram.
6. Menampilkan PDF Awal:
PDF awal ditampilkan sebagai grafik batang.
7. Menghitung Cumulative Distribution Function (CDF):
Fungsi distribusi kumulatif (CDF) dihitung dengan mengakumulasi probabilitas distribusi piksel
(PDF).
8. Menampilkan CDF Awal:
CDF awal ditampilkan sebagai grafik garis.
9. Menghitung Fungsi Transformasi (Equalization Function):
Fungsi transformasi ekualisasi histogram dihitung dengan membulatkan nilai CDF awal yang telah
dinormalisasi ke skala 0 hingga 255.
10. Mengaplikasikan Fungsi Transformasi pada Gambar Awal:
Gambar yang telah dihasilkan dari ekualisasi histogram diperoleh dengan mengganti nilai piksel
dalam gambar asli dengan nilai yang sesuai dari fungsi transformasi.
11. Menampilkan Gambar Hasil Ekualisasi:
Gambar hasil ekualisasi histogram ditampilkan dengan colormap
plt.imsho
menggunakan "gray".
12. Menghitung Histogram Hasil Ekualisasi:
Histogram gambar hasil ekualisasi dihitung lagi menggunakan np.histogram().
13. Menampilkan Histogram Hasil Ekualisasi:
Histogram hasil ekualisasi ditampilkan dalam bentuk grafik batang.
14. Menghitung Probabilitas Distribusi Piksel (PDF) Hasil Ekualisasi:
Probabilitas distribusi piksel (PDF) untuk gambar hasil ekualisasi dihitung.
15. Menghitung CDF Hasil Ekualisasi:
Fungsi distribusi kumulatif (CDF) untuk gambar hasil ekualisasi dihitung.
16. Menampilkan PDF dan CDF Hasil Ekualisasi:
PDF hasil ekualisasi dan CDF hasil ekualisasi ditampilkan dalam grafik batang dan grafik garis,
dengan CDF hasil ekualisasi dikuatkan agar sejajar dengan PDF hasil ekualisasi.
17. Mengaplikasikan Ekualisasi Histogram dengan OpenCV:
Ekualisasi histogram juga diterapkan pada gambar asli menggunakan fungsi cv2.equalizeHist(). Ini
menghasilkan gambar yang telah diekualisasi histogram dengan bantuan OpenCV.
Kode program ini memberikan pemahaman yang baik tentang proses ekualisasi histogram dan
bagaimana efeknya pada distribusi piksel dalam gambar. Hasil akhirnya adalah gambar yang
telah diekualisasi histogram dan histogramnya juga telah berubah.

6. Percobaan 6

Analisis program :
Dilakukan beberapa operasi pada gambar yang dimuat menggunakan OpenCV dan modul
`skimage` untuk mengonversinya ke ruang warna Lab (CIELAB) dan kemudian mengembalikannya
ke RGB. Berikut adalah analisis berdasarkan hasil yang dihasilkan oleh kode program ini:

1. **Konversi Gambar ke Ruang Warna Lab**:


- Pada awalnya, membaca gambar dengan OpenCV dalam format BGR.
- Kemudian mengonversi gambar tersebut ke ruang warna Lab menggunakan fungsi `rgb2lab()`
dari modul `skimage.color`. Ini mengubah representasi warna gambar dari RGB ke Lab, di mana
saluran L (luminance) adalah saluran kecerahan dan saluran a dan b mengandung informasi
tentang warna.
2. **Menghapus Saluran Warna a dan b**:
- Mengatur semua nilai saluran warna a dan b di dalam gambar ke nol. Ini berarti semua informasi
warna dalam gambar dihapus, dan hanya saluran kecerahan (L) yang tersisa.

3. **Konversi Kembali ke RGB**:


- Setelah menghapus saluran warna a dan b, mengembalikan gambar ke format RGB
menggunakan fungsi `lab2rgb()` dari modul `skimage.color`. Dengan demikian, kembali ke
representasi warna asli dalam format RGB.

4. **Operasi Pada Gambar**:


- membuat dua versi baru dari gambar:
- `img_new` adalah hasil penambahan gambar asli dengan dirinya sendiri. Ini akan
menghasilkan gambar yang tampak lebih terang.
- `img_new2` adalah hasil pengurangan gambar asli dengan setengah dari dirinya sendiri.
Ini akan menghasilkan gambar yang tampak lebih gelap.

5. **Menampilkan Gambar**:
- menggunakan `matplotlib` untuk menampilkan gambar-gambar ini dalam tiga subplot
berdampingan pada satu jendela grafik.

Hasil yang peroleh adalah tiga gambar yang berbeda:


- Gambar pertama (`img`) adalah gambar asli yang sudah dikonversi ke ruang warna Lab dan
dihapus saluran warna a dan b. Ini akan memiliki kecerahan yang sama dengan gambar aslinya
tetapi tidak ada informasi warna.
- Gambar kedua (`img_new`) adalah gambar asli yang diperbesar, sehingga lebih terang
secara keseluruhan.
- Gambar ketiga (`img_new2`) adalah gambar asli yang diperkecil sebanyak setengah,
sehingga lebih gelap secara keseluruhan.

Perubahan dalam kecerahan kedua gambar terakhir adalah hasil dari operasi yang terapkan pada
gambar asli.
7. Percobaan 7

Menerapkan berbagai jenis kernel konvolusi ke gambar, dan beberapa di antaranya dapat
dikategorikan sebagai filter low-pass, high-pass, atau medium (band-pass) berdasarkan ciri-ciri nilai
kernel. Berikut penjelasan singkat tentang masing-masing kategori:

Filter Low-Pass:
Kernel Rata-Rata (kernel): Kernel ini adalah filter low-pass yang paling sederhana. Semua
elemen kernel memiliki nilai yang sama, dalam hal ini 1/25, yang mengindikasikan bahwa
itu adalah filter rata-rata. Ini digunakan untuk menghaluskan gambar dengan mengurangi
detail tajam dan noise. Ini adalah jenis filter yang baik untuk menghilangkan noise dalam
gambar.
Filter High-Pass:
Kernel Sharpen (sharpen_kernel): Kernel ini adalah filter high-pass yang digunakan untuk
meningkatkan ketajaman gambar. Ini memiliki nilai positif di tengah kernel yang
mendapatkan bobot yang lebih tinggi, sehingga mempertahankan detail tajam dalam gambar
dan meningkatkannya. Filter ini dapat meningkatkan kontras dan detail dalam gambar.
Kernel Laplacian (laplacian_kernel): Kernel ini juga dapat dianggap sebagai filter high-pass.
Ini digunakan untuk mendeteksi perubahan mendalam dalam gambar dan dapat menyoroti
tepi dan detail yang tajam. Hasilnya sering kali menghasilkan gambar yang lebih tajam.
Filter Medium (Band-Pass):
Kernel Convolution (convolution_kernel): Kernel ini adalah filter yang berbeda. Meskipun
bukan filter low-pass atau high-pass murni, itu adalah kernel yang menggabungkan beberapa
elemen positif dan negatif. Ini bisa digunakan untuk mempengaruhi gambar dengan cara
yang lebih kompleks daripada filter rata-rata atau sharpen. Ini juga dapat mempengaruhi
kontras dan menyoroti detail tertentu dalam gambar.
Kernel Emboss (emboss_kernel): Kernel ini juga adalah filter medium (band-pass) yang
menciptakan efek tiga dimensi pada gambar dengan mengubah pencahayaan. Ini
menghasilkan gambar dengan efek timbul (emboss) yang menyoroti perubahan kontras yang
signifikan dalam gambar.
Filter High-Pass untuk Deteksi Tepi:
Kernel Sobel Horizontal (sobel_horizontal): Kernel ini adalah filter high-pass yang
digunakan khusus untuk mendeteksi tepi vertikal dalam gambar.
Kernel Sobel Vertical (sobel_vertical): Kernel ini adalah filter high-pass yang digunakan
khusus untuk mendeteksi tepi horizontal dalam gambar.

Perbedaan utama antara filter low-pass, high-pass, dan medium (band-pass) adalah bagaimana
mereka mempengaruhi frekuensi dalam gambar. Filter low-pass mempertahankan frekuensi rendah
(menghaluskan gambar), filter high-pass mempertahankan frekuensi tinggi (menyoroti detail dan
tepi), dan filter medium (band-pass) mempertahankan frekuensi dalam jangkauan tertentu, yang
dapat mempengaruhi berbagai aspek gambar.

B. PRAKTIKUM 2
1. Fitur Titik
a) 1
Script

Hasil
b) 2

Script
Hasil

2. Fitur Warna
Script
Hasil

3. Fitur Tekstur
Script
Hasil
4. Feature Detection and Matching
Script

Hasil
5. Latihan Template Matching
Script

Hasil
C. PRAKTIKUM 3
1. Praktikum deteksi tepi
1) Script

Hasil
2) Script

Hasil
2. Praktikum Thresholding Global
Script

Hasil
3. Praktikum Thresholding Otsu
1) 1
Script
Hasil

2) 2

Script
Hasil

4. Segmentasi Algoritma Berbasis KNN


1) Script
Hasil

2) Script

Hasil
D. PRAKTIKUM 4
Script

Hasil
E. PRAKTIKUM 5
1. Praktikum klasifikasi dengan Neural Network (Tensor Flow)
Script
Hasil
2. Klasifikasi dengan SVM
Script
Hasil
3. Klustering Menggunakan KNN
Script
Hasil
F. PRAKTIKUM 6
Script
Hasil Script Pertama
Script Lanjutan

Hasil Lanjutan
Setelah di Capture

Jalankan Script selanjutnya untuk menampilkan hasil

Hasil

Anda mungkin juga menyukai