Python

Menambahkan Salt & Pepper Noise Pada Citra Menggunakan Scikit-image Python

Menambahkan Salt & Pepper Noise Pada Citra Menggunakan Scikit-image Python –  Pada artikel ini, kita akan membahas bagaimana menambahkan Salt & Pepper Noise pada citra menggunakan Scikit-image python. Dengan mempelajari artikel ini juga, kamu dapat mengetahui cara menambahkan Salt & Pepper Noise pada citra. Dengan bantuan library scikit-image, terdapat fungsi builtin yang dapat digunakan untuk menambahkan noise dengan mudah. Simak artikel menambahkan salt & pepper noise pada citra menggunakan scikit-image python untuk memahami lebih lanjut.

Pengertian Noise

Noise atau yang kenal dengan derau adalah gambar atau piksel yang mengganggu kualitas dari suatu citra. Derau dapat disebabkan oleh gangguan fisik (optik) pada suatu alat akuisisi yang menyebabkan proses pengolahan yang tidak sesuai. Noise pada suatu citra dapat terjadi karena beberapa sebab.

Efek masing-masing noise tentunya berbeda-beda. Ada efeknya sangat mempengaruhi tampilan citra, tetapi ada juga yang tidak begitu berpengaruh terhadap citra. Noise yang dimaksud disini adalah noise yang terjadi karena karakteristik dari gray-level atau dapat  dikarenakan adanya variabel acak yang terjadi karena karakteristik Probability Density Function (PDF).

Beberapa noise yang diakibatkan oleh Probability Density Function antara lain:

  1. Gaussian Noise
  2. Speckle Noise
  3. Salt and Pepper Noise
  4. Exponential Noise

Disini kita hanya akan membahas mengenai Salt & Pepper Noise.

Penjelasan Salt & Pepper Noise

Salt & Pepper Noise merupakan bintik hitam atau putih yang muncul secara acak dan tidak diinginkan di dalam suatu citra. Bintik acak ini disebut dengan salt & pepper. Salt atau garam merepresentasikan bintik putih dengan nilai piksel 255. Sedangkan, pepper atau lada merepresentasikan bintih berwarna hitam dengan nilai piksel 0. Salt & pepper noise juga dapat disebut sebagai impulse noise. Noise ini dapat disebabkan oleh beberapa hal yaitu dead pixels, analog-to-digital convertion error, bit transformation error dan masih banyak lagi.

Nah, pada artikel ini kita tidak akan membahas lebih dalam mengenai salt & pepper noise tapi kita hanya akan menggunakan fungsi builtin yang terdapat pada scikit-image. Kalian dapat melihat dokumentasi scikit-image untuk mengenal lebih lanjut untuk menggunakan fungsi random_noise.

Kode Python – Salt & Pepper Noise

Berikut ini adalah kode python untuk menambahkan Salt & Pepper Noise menggunakan Scikit-image.

import cv2
import numpy as np
from skimage.util import random_noise
from matplotlib import pyplot as plt

# Load citra yang akan digunakan
img = cv2.imread('tulips.jpg')
ori_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Menambahkan salt & pepper noise ke citra original.
noise_img = random_noise(ori_img, mode='s&p', amount=0.3)

# Fungsi diatas menghasilkan citra dengan nilai float
# yang berada pada rentang nilai [0,1], sehingga
# perlu diubah menjadi format uint8 dengan rentang
# nilai [0,255]
noise_img = np.array(255 * noise_img, dtype='uint8')

# Menampilkan citra dengan noise
plt.subplot(121), plt.imshow(ori_img), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(noise_img), plt.title('Salt & Pepper Noise Image')
plt.show()

Kode Python – Salt Noise

Kamu juga bisa mencoba untuk menambahkan Salt Noise saja tanpa adanya Pepper noise pada suatu citra menggunakan kode Python dibawah ini.

import cv2
import numpy as np
from skimage.util import random_noise
from matplotlib import pyplot as plt

# Load citra yang akan digunakan
img = cv2.imread('tulips.jpg')
ori_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Menambahkan salt noise ke citra original.
noise_img = random_noise(ori_img, mode='salt', amount=0.3)

# Fungsi diatas menghasilkan citra dengan nilai float
# yang berada pada rentang nilai [0,1], sehingga
# perlu diubah menjadi format uint8 dengan rentang
# nilai [0,255]
noise_img = np.array(255 * noise_img, dtype='uint8')

# Menampilkan citra dengan noise
plt.subplot(121), plt.imshow(ori_img), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(noise_img), plt.title('Salt Noise Image')
plt.show()

Kode Python – Pepper Noise

Selain hanya bisa menambahkan Salt Noise, kita juga bisa menambahkan Pepper Noise saja tanpa adanya Salt Noise menggunakan kode Python dibawah ini.

import cv2
import numpy as np
from skimage.util import random_noise
from matplotlib import pyplot as plt

# Load citra yang akan digunakan
img = cv2.imread('tulips.jpg')
ori_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Menambahkan pepper noise ke citra original.
noise_img = random_noise(ori_img, mode='pepper', amount=0.3)

# Fungsi diatas menghasilkan citra dengan nilai float
# yang berada pada rentang nilai [0,1], sehingga
# perlu diubah menjadi format uint8 dengan rentang
# nilai [0,255]
noise_img = np.array(255 * noise_img, dtype='uint8')

# Menampilkan citra dengan noise
plt.subplot(121), plt.imshow(ori_img), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(noise_img), plt.title('Pepper Noise Image')
plt.show()

Hasil yang diperoleh

Dari ketiga kode python diatas, hasil dari masing-masing kode dapat kamu lihat pada gambar-gambar dibawah ini.

OutputSalt & Pepper Noise

Salt & Pepper Noise Output - Inpows
Salt & Pepper Noise Output – Inpows

OutputSalt Noise

Salt Noise Output - Inpows
Salt Noise Output – Inpows

OutputPepper Noise

Pepper Noise Output - Inpows
Pepper Noise Output – Inpows

 

Temukan source code python menarik lainnya hanya di Inpows.

Baca Juga

Menambahkan Gaussian Noise Pada Citra Menggunakan Scikit-image Python

Membuat Image Smoothing Menggunakan Gaussian Filter di Python

Membuat Image Smoothing Menggunakan Mean Filter di Python

Membuat Kalkulator Sederhana Menggunakan Kotlin

Membuat Password Generator di Kotlin