Cara menggunakan GUASSIAN pada Python

Secara umum, jika Anda benar-benar ingin mendapatkan hasil yang sama persis dengan MATLAB, cara termudah untuk mencapainya adalah dengan melihat langsung pada sumber fungsi MATLAB.

Dalam hal ini, edit fspecial:

...
  case 'gaussian' % Gaussian filter

     siz   = (p2-1)/2;
     std   = p3;

     [x,y] = meshgrid(-siz(2):siz(2),-siz(1):siz(1));
     arg   = -(x.*x + y.*y)/(2*std*std);

     h     = exp(arg);
     h(h<eps*max(h(:))) = 0;

     sumh = sum(h(:));
     if sumh ~= 0,
       h  = h/sumh;
     end;
...

Cukup sederhana, bukan? <10mins berfungsi untuk mem-port ini ke Python:

import numpy as np

def matlab_style_gauss2D(shape=(3,3),sigma=0.5):
    """
    2D gaussian mask - should give the same result as MATLAB's
    fspecial('gaussian',[shape],[sigma])
    """
    m,n = [(ss-1.)/2. for ss in shape]
    y,x = np.ogrid[-m:m+1,-n:n+1]
    h = np.exp( -(x*x + y*y) / (2.*sigma*sigma) )
    h[ h < np.finfo(h.dtype).eps*h.max() ] = 0
    sumh = h.sum()
    if sumh != 0:
        h /= sumh
    return h

Ini memberi saya jawaban yang sama dengan fspecial dalam kesalahan pembulatan:

 >> fspecial('gaussian',5,1)

 0.002969     0.013306     0.021938     0.013306     0.002969
 0.013306     0.059634      0.09832     0.059634     0.013306
 0.021938      0.09832       0.1621      0.09832     0.021938
 0.013306     0.059634      0.09832     0.059634     0.013306
 0.002969     0.013306     0.021938     0.013306     0.002969

 : matlab_style_gauss2D((5,5),1)

array([[ 0.002969,  0.013306,  0.021938,  0.013306,  0.002969],
       [ 0.013306,  0.059634,  0.09832 ,  0.059634,  0.013306],
       [ 0.021938,  0.09832 ,  0.162103,  0.09832 ,  0.021938],
       [ 0.013306,  0.059634,  0.09832 ,  0.059634,  0.013306],
       [ 0.002969,  0.013306,  0.021938,  0.013306,  0.002969]])

Kali ini saya akan memberikan code program untuk implementasi metode gaussian filter yang digunakan untuk penghapusan noise pada citra dengan menggunakan OpenCV Python.

Gaussian filter adalah linear filter yang biasanya digunakan sebagai pengolah citra agar dapat lebih halus. Gaussian filter yang banyak digunakan dalam memproses gambar.

Gaussian filter bertujuan untuk menghilangkan noise pada citra dan meningkatkan kualitas detil citra.

Disini terdapat gambar yang mempunya banyak noise atau kurang baik gambarnya, dan yang diharapkan pada metode gaussian filter ini adalah untuk menghilangkan noise tersebut dan memperhalus citra gambar.

Ketikan code program berikut dan lihat hasilnya seperti video diatas :

importcv2

importnumpy asnp

frommatplotlib importpyplot asplt

img=cv2.imread('noiseimag.jpg')

blur =cv2.GaussianBlur(img,(5,5),0)

plt.subplot(121),plt.imshow(img),plt.title('Original')

plt.xticks([]),plt.yticks([])

plt.subplot(122),plt.imshow(blur),plt.title('Blurred')

plt.xticks([]),plt.yticks([])

plt.show()

Download Source Code

Setelah kemarin menggunakan image smoothing metode Averaging kali ini saya akan membahas menggunakan metode Gaussian filtering.

Gaussian filter adalah linear filter yang biasanya digunakan sebagai pengolah citra agar dapat lebih halus. Gaussian filter yang banyak digunakan dalam memproses gambar.

Gaussian filter bertujuan untuk menghilangkan noise pada citra dan meningkatkan kualitas detil citra.

Gaussian merupakan model noise yang mengikuti distribusi normal standard dengan rata-rata nol dan standard deviasi 1. Efek dari gaussian ini, pada gambar muncul titik-titik berwarna yang jumlahnya sama dengan presentase noise. Noise speckle merupakan model noise yang memberikan warna hitam pada titik yang terkena noise. Sedangkan noise salt & pepper seperti halnya taburan garam, akan memberikan warna putih pada titik yang terkena noise.

Baca Juga :

Image Blurring Pada OpenCV Python

Metode Median Filtering Menggunakan OpenCV Python

Disini saya menggunakan python untuk menggunakan metode ini tentunya menggunakan opencv sebagai library nya. Fungsi yang digunakan adalah cv2.getGaussianKernel().

Berikut ini code programnya :

importcv2

importnumpy asnp

frommatplotlib importpyplot asplt

img=cv2.imread('noiseimag.jpg')

blur =cv2.GaussianBlur(img,(5,5),0)

plt.subplot(121),plt.imshow(img),plt.title('Original')

plt.xticks([]),plt.yticks([])

plt.subplot(122),plt.imshow(blur),plt.title('Blurred')

plt.xticks([]),plt.yticks([])

plt.show()

Lihat hasilnya berikut ini :

Cara menggunakan GUASSIAN pada Python

Download Source Code