Show Menu
Cheatography

Noise Removing Method : Median Python Cheatsheet Cheat Sheet (DRAFT) by

Median filtering adalah salah satu metode populer untuk penghapusan noise dalam pengolahan citra digital. Metode ini bekerja dengan cara menggantikan nilai piksel di posisi tertentu dengan nilai median dari piksel-piksel di sekitarnya dalam jendela atau kernel tertentu. Median filtering sangat efektif dalam mengurangi "salt and pepper noise" atau noise impulsif, yang biasanya ditandai dengan kemunculan titik-titik hitam atau putih pada gambar. Berikut merupakan cheatsheet yang telah dirancang!

This is a draft cheat sheet. It is a work in progress and is not finished yet.

1. Import Library

import cv2
import numpy as np
cv2: Merupakan library OpenCV yang digunakan untuk pengolahan gambar. Fungsinya adalah memani­pulasi gambar, termasuk membaca, menamp­ilkan, dan mengol­ahnya.

numpy: Digunakan untuk operasi numerik pada array multid­imensi, seperti manipulasi data citra yang diwakili dalam bentuk matriks piksel.

4. Identi­fikasi Kernel

kernel_size = 5
pad = kernel_size // 2
kernel­_size = 5: Menentukan ukuran kernel atau jendela yang digunakan untuk melakukan median filtering. Dalam hal ini, ukuran kernel adalah 5x5.

pad = kernel­_size // 2: Menentukan ukuran padding (jumlah baris dan kolom di sekitar piksel pusat). Padding digunakan agar jendela kernel dapat diterapkan di setiap piksel. Di sini, padding adalah 2 karena 5 // 2 = 2.

7. Iterasi Setiap Pixel pada Gambar

for i in range(pad, image.shape[0] - pad):
    for j in range(pad, image.shape[1] - pad):
image.s­ha­pe[0]: Jumlah baris (tinggi gambar).
image.s­ha­pe[1]: Jumlah kolom (lebar gambar).
Loop ini menelusuri setiap piksel dalam gambar, tetapi menghi­ndari bagian tepi (sesuai dengan nilai padding). Hal ini karena kernel 5x5 membut­uhkan piksel tetangga di sekitar piksel pusat, dan di tepi tidak ada cukup piksel untuk membentuk jendela lengkap.

Foto Sebelum Pemrosesan Kodingan

Berikut merupakan foto awal rancangan sebelum diproses kodenya.
 

2. Reading Dataset

image = cv2.imread('C:/Kuliah ya ges yak/Semester 3/PCD/Foto/example.jpg')
cv2.im­read(): Membaca gambar dari file di path yang ditent­ukan. Gambar akan disimpan sebagai array multid­imensi (matriks piksel) dalam variabel image.
Jika path atau file salah, None akan dikemb­alikan.

5. Array Kosong untuk hasil Filtering

median_filtered_image = np.zeros_like(image)
np.zer­os_­lik­e(i­mage): Membuat array dengan ukuran yang sama seperti gambar asli, tetapi diisi dengan nilai 0. Array ini akan menyimpan hasil gambar setelah proses median filtering.

8. Ekstraksi Kernel

kernel = image[i-pad:i+pad+1, j-pad:j+pad+1, channel].flatten()
image[­i-p­ad:­i+p­ad+1, j-pad:­j+p­ad+1, channel]: Ini mengambil area 5x5 (kernel) di sekitar piksel (i, j) untuk channel yang sedang diproses.
flatten(): Mengubah kernel 2D (5x5) menjadi array 1D untuk memudahkan pengurutan dan pengam­bilan nilai median.

Menamp­ilkan Hasil Gambar Asli dan Hasil Median

cv2.imshow('Original Image', image)
cv2.imshow('Median Filtered Image', median_filtered_image.astype(np.uint8))
cv2.im­show(): Menamp­ilkan gambar di jendela baru.

'Original Image': Jendela untuk menamp­ilkan gambar asli.

'Median Filtered Image': Jendela untuk menamp­ilkan gambar hasil filtering.

median­_fi­lte­red­_im­age.as­typ­e(n­p.u­int8): Mengon­versi tipe data hasil filtering menjadi uint8 (8-bit unsigned integer), yang merupakan format standar gambar untuk ditamp­ilkan.

Foto Sesudah Pemrosesan Kodingan

Berikut merupakan output photo dari proses kode yang telah dirancang.
 

3. Validasi Gambar Terbaca

if image is None:
    print("Gambar tidak dapat dibaca. Periksa path dan nama file.")
else:
if image is None:: Mengecek apakah gambar berhasil dibaca. Jika gambar tidak ditemukan atau gagal dibaca (misalnya karena kesalahan path), program mencetak pesan error.

6. Iterasi Jumlah Channel pada RGB

for channel in range(image.shape[2]):
image.s­ha­pe[2]: Mengambil jumlah channel pada gambar. Untuk gambar berwarna (RGB), ada tiga channel: biru (B), hijau (G), dan merah (R).
Loop ini memastikan bahwa median filtering diterapkan pada setiap channel secara terpisah.

9. Menghitung Median dari Pixel dalam Kernel

median_filtered_image[i, j, channel] = np.median(kernel)
np.med­ian­(ke­rnel): Menghitung nilai median dari array yang dihasilkan dari kernel. Nilai median ini kemudian ditugaskan sebagai nilai baru untuk piksel (i, j) pada channel yang sesuai dalam gambar hasil.

11. Menunggu dan menutup jendela program

cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.wa­itK­ey(0): Menunggu sampai pengguna menekan tombol untuk menutup jendela gambar.

cv2.de­str­oyA­llW­ind­ows(): Menutup semua jendela yang terbuka setelah waitKey() diekse­kusi.