Show Menu
Cheatography

Gaussian Filter Python Cheat Sheet (DRAFT) by

Noise Removing Method : Gaussian Python Cheatsheet

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

Gaussian Filter

Kode ini menggu­nakan Gaussian Filtering untuk mengurangi noise dan mengha­luskan gambar. Metode ini bekerja dengan mengon­volusi gambar menggu­nakan kernel Gaussian, yang membuat gambar tampak lebih halus. Noise berkurang, namun efek smoothing bisa mengor­bankan beberapa detail halus. Meskipun begitu, Gaussian filter tetap efektif untuk member­sihkan noise dengan sedikit penurunan ketajaman.

1. Import Libraries

import cv2  
import numpy as np
cv2: Library OpenCV yang digunakan untuk pemrosesan gambar, termasuk membaca, menamp­ilkan, dan memani­pulasi gambar.

numpy: Library untuk operasi numerik pada array multid­imensi, seperti manipulasi data citra yang direpr­ese­nta­sikan sebagai matriks piksel.

2. Load Image

image = cv2.imread('C:/Kuliah ya ges yak/Semester 3/PCD/Foto/example.jpg')

if image is None:
    print("Error: Image not found. Check the path.")
    exit()
cv2.im­read(): Mengambil gambar dari file. Jika gambar tidak ditemukan, program akan berhenti sebagai bagian dari penanganan error.

3. Define Gaussian Kernel

kernel = np.array([[1, 2, 1],
                   [2, 4, 2],
                   [1, 2, 1]]) / 16
Gaussian Kernel: Matriks 3x3 yang digunakan untuk mengha­silkan efek smoothing pada gambar.
Normal­isasi: Nilai kernel dibagi 16 untuk menjaga total intensitas gambar tetap konsisten.

4. Add Padding

padded_image = cv2.copyMakeBorder(image, 1, 1, 1, 1, cv2.BORDER_REFLECT)
cv2.co­pyM­ake­Bor­der(): Menamb­ahkan padding (dengan metode refleksi) di sekeliling gambar.

5. Create Output Image

gaussian_filtered_image = np.zeros_like(image)
np.zer­os_­like(): Membuat array dengan ukuran yang sama dengan gambar asli untuk menyimpan hasil filter.
 

6. Apply Gaussian Filter (Manual Convol­ution)

for channel in range(image.shape[2]):  
    for i in range(1, padded_image.shape[0] - 1):
        for j in range(1, padded_image.shape[1] - 1):
            patch = padded_image[i - 1:i + 2, j - 1:j + 2, channel]
            gaussian_filtered_image[i - 1, j - 1, channel] = np.sum(patch * kernel)
Iterasi Channel: Memproses masing­-masing channel warna (R, G, B) secara indepe­nden.
Patch 3x3: Mengambil area 3x3 dari gambar yang telah dipada­nkan.
Konvolusi: Mengalikan area tersebut dengan kernel Gaussian, lalu menjum­lahkan hasilnya.

7. Save Filtered Image

cv2.imwrite('gaussian_filtered_image_manual.jpg', gaussian_filtered_image)
cv2.im­wri­te(): Menyimpan gambar hasil konvolusi ke file dengan nama yang diberikan.

8. Display Images

cv2.imshow('Original Image', image)
cv2.imshow('Gaussian Filtered Image (Manual)', gaussian_filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.im­show(): Menamp­ilkan gambar dalam jendela OpenCV.
cv2.wa­itK­ey(0): Menunggu input dari pengguna, seperti menekan tombol, untuk menutup jendela.
cv2.de­str­oyA­llW­ind­ows(): Menutup semua jendela gambar yang sedang terbuka.

Perban­dingan Input dan Output

Gambar Original (Kiri):
Tingkat noise sangat tinggi, tersebar merata dengan bintik­-bintik terang dan gelap yang membuat detail sulit terlihat.
Gambar Gaussian Filtered (Kanan):
Setelah diterapkan filter Gaussian, noise berkurang secara signif­ikan. Gambar menjadi lebih halus, meskipun beberapa noise masih tersisa dan detail halus sedikit kabur akibat efek smoothing.