Cara menggunakan gaussian smoothing python

Fungsi penyaringan gambar sering digunakan untuk pra-proses atau menyesuaikan gambar sebelum melakukan operasi yang lebih kompleks. Operasi ini membantu mengurangi noise atau varians gambar atau ambang yang tidak diinginkan.


Ada tiga filter yang tersedia di perpustakaan OpenCV-Python.

  1. Filter Gaussian Blur
  2. Filter Kabur Erosi
  3. Filter Kabur Dilatasi

Teknik Image Smoothing membantu kita dalam mengurangi noise pada sebuah gambar. Di OpenCV, penghalusan gambar (juga disebut pengaburan) dapat dilakukan dengan banyak cara. Kita akan melihat metode GaussianBlur() secara detail di postingan ini.



Gaussian Blur

Filter Gaussian Blur menghaluskan gambar dengan merata-ratakan nilai piksel dengan tetangganya. Ini disebut Gaussian Blur karena rata-rata memiliki efek falloff Gaussian.

Artinya, piksel yang lebih dekat ke piksel target memiliki pengaruh rata-rata yang lebih tinggi daripada piksel yang jauh. Beginilah cara kerja smoothing. Ini sering digunakan sebagai cara yang layak untuk menghaluskan noise pada gambar sebagai pendahulu untuk pemrosesan lainnya.


#python #python cv2 #gaussianblur #opencv #opencv-python

appdividend.com

Ada tiga filter yang tersedia di perpustakaan OpenCV-Python. Filter Gaussian Blur, Filter Erosi Blur, Filter Dilation Blur.

Image Smoothing using OpenCV Gaussian Blur

As in any other signals, images also can contain different types of noise, especially because of the source (camera sensor). Image Smoothing techniques help in reducing the noise. In OpenCV, image smoothing (also called blurring) could be done in many ways. In this tutorial, we shall learn using the Gaussian filter for image smoothing.

Gaussian filters have the properties of having no overshoot to a step function input while minimizing the rise and fall time. In terms of image processing, any sharp edges in images are smoothed while minimizing too much blurring.

Syntax – cv2 GaussianBlur() function

OpenCV provides cv2.gaussianblur() function to apply Gaussian Smoothing on the input source image. Following is the syntax of GaussianBlur() function :

dst = cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType=BORDER_DEFAULT]]] )
Parameter Description
src input image
dst output image
ksize Gaussian Kernel Size. [height width]. height and width should be odd and can have different values. If ksize is set to [0 0], then ksize is computed from sigma values.
sigmaX Kernel standard deviation along X-axis (horizontal direction).
sigmaY Kernel standard deviation along Y-axis (vertical direction). If sigmaY=0, then sigmaX value is taken for sigmaY
borderType Specifies image boundaries while kernel is applied on image borders. Possible values are : cv.BORDER_CONSTANT cv.BORDER_REPLICATE cv.BORDER_REFLECT cv.BORDER_WRAP cv.BORDER_REFLECT_101 cv.BORDER_TRANSPARENT cv.BORDER_REFLECT101 cv.BORDER_DEFAULT cv.BORDER_ISOLATED

Example – OpenCV Python Gaussian Blur

In this example, we will read an image, and apply Gaussian blur to the image using cv2.GaussianBlur() function.

gaussian-blur-example.py

import cv2
import numpy
 
# read image
src = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED)

# apply guassian blur on src image
dst = cv2.GaussianBlur(src,(5,5),cv2.BORDER_DEFAULT)

# display input and output image
cv2.imshow("Gaussian Smoothing",numpy.hstack((src, dst)))
cv2.waitKey(0) # waits until a key is pressed
cv2.destroyAllWindows() # destroys the window showing image

Cara menggunakan gaussian smoothing python

Now let us increase the Kernel size and observe the result.

dst = cv2.GaussianBlur(src,(10,10),cv2.BORDER_DEFAULT)

Cara menggunakan gaussian smoothing python

You may change values of other properties and observe the results.

Conclusion

In this OpenCV Python Tutorial, we have learned how to blur or smooth an image using the Gaussian Filter.

Distribusi Normal adalah salah satu distribusi terpenting.

Table of Contents

  • Visualisasi Distribusi Normal
  • Komentari definisi rata-rata (termasuk jawaban Pengembang)
  • Komentar untuk Python 2.x pengguna
  • Mengenal tentang Image Smoothing
  • Kode Python untuk Gaussian Filter
  • Hasil yang diperoleh

Distribusi ini juga disebut Distribusi Gaussian oleh matematikawan Jerman Carl Friedrich Gauss.

Distribusi ini sesuai dengan distribusi probabilitas dari banyak kejadian, misalnya. Skor IQ, Detak Jantung dan lain-lain.

Gunakan metode random.normal() untuk mendapatkan Distribusi Data Normal.

Distribusi ini memiliki tiga parameter, yaitu:

loc – (Mean) di mana puncak bel ada.

skala – (Deviasi Standar) seberapa datar distribusi grafik seharusnya.

size – Bentuk dari array yang dikembalikan.

Contoh:
Hasilkan distribusi normal acak ukuran 2×3

from numpy import random

x = random.normal(size=(2, 3))

print(x)

Contoh:
Hasilkan distribusi normal acak ukuran 2×3 dengan mean 1 dan deviasi standar 2

from numpy import random

x = random.normal(loc=1, scale=2, size=(2, 3))

print(x)

Visualisasi Distribusi Normal

Contoh:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.normal(size=1000), hist=False)

plt.show()

Hasilnya:

Catatan: Kurva Distribusi Normal juga dikenal sebagai Kurva Lonceng karena kurva yang dihasilkan berbentuk lonceng.

Penjelasan

Anda membutuhkan nilai awal yang baik sehingga curve_fit fungsi bertemu pada nilai "baik". Saya tidak bisa mengatakan mengapa fit Anda tidak bertemu (walaupun definisi mean Anda aneh - lihat di bawah) tetapi saya akan memberikan Anda strategi yang berfungsi untuk fungsi Gaussian non-normal seperti yang Anda miliki.

Contoh

Parameter yang diperkirakan harus dekat dengan nilai akhir (gunakan mean aritmatika tertimbang - bagi dengan jumlah semua nilai):

import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np

x = np.arange(10)
y = np.array([0, 1, 2, 3, 4, 5, 4, 3, 2, 1])

# weighted arithmetic mean (corrected - check the section below)
mean = sum(x * y) / sum(y)
sigma = np.sqrt(sum(y * (x - mean)**2) / sum(y))

def Gauss(x, a, x0, sigma):
    return a * np.exp(-(x - x0)**2 / (2 * sigma**2))

popt,pcov = curve_fit(Gauss, x, y, p0=[max(y), mean, sigma])

plt.plot(x, y, 'b+:', label='data')
plt.plot(x, Gauss(x, *popt), 'r-', label='fit')
plt.legend()
plt.title('Fig. 3 - Fit for Time Constant')
plt.xlabel('Time (s)')
plt.ylabel('Voltage (V)')
plt.show()

Saya pribadi lebih suka menggunakan numpy.

Komentari definisi rata-rata (termasuk jawaban Pengembang)

Karena pengulas tidak suka edit saya pada # kode Pengembang , saya akan menjelaskan untuk kasus apa saya akan menyarankan kode yang ditingkatkan. Rata-rata pengembang tidak sesuai dengan salah satu definisi normal dari rata-rata.

Definisi Anda kembali:

>>> sum(x * y)
125

Pengembalian definisi pengembang:

>>> sum(x * y) / len(x)
12.5 #for Python 3.x

Mean aritmatika tertimbang:

>>> sum(x * y) / sum(y)
5.0

Anda juga dapat membandingkan definisi standar deviasi (sigma). Bandingkan dengan angka yang dihasilkan sesuai:

Komentar untuk Python 2.x pengguna

Dalam Python 2.x Anda juga harus menggunakan divisi baru untuk tidak mengalami hasil yang aneh atau mengonversi angka-angka sebelum pembagian secara eksplisit:

from __future__ import division

atau mis.

sum(x * y) * 1. / sum(y)

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 :

Download Source Code

Python

Membuat Image Smoothing Menggunakan Gaussian Filter di Python – Pada artikel kali ini, kita akan membahas bagaimana membuat image smoothing menggunakan Gaussian Filter di Python. Pembuatan image smoothing menggunakan operasi konvolusi atau convolution antara citra yang diberikan dengan low-pass filter kernel yang telah ditentukan. Simak artikel berikut ini untuk membuat image smoothing menggunakan Gaussian Filter di Python.

  • Mengenal tentang Image Smoothing
  • Gaussian Filter untuk Image Smoothing
  • Kode Python untuk Gaussian Filter
  • Hasil yang diperoleh

Mengenal tentang Image Smoothing

Seperti yang telah dijelaskan sebelumnya, Image smoothing merupakan teknik yang terdapat pada pengolahan citra digital yang menggunakan operasi konvolusi antara citra yang masukan dengan low-pass filter kernel yang ditentukan. Citra yang terlihat lebih tajam atau lebih detail jika kita dapat melihat seluruh objek dan bentuk secara benar yang ada di dalamnya. Dengan image smoothing, kita cukup mengurangi tepi atau edge tersebut dan membuat transisi dari satu warna ke warna lain menjadi lebih halus.

Gaussian filter merupakan suatu teknik yang menggunakan weight kernel yang berada pada arah x dan y serta kita juga harus menentukan nilai sigma. Berbeda dengan mean filter yang menggunakan box filter, pada Gaussian filter kita menggunakan weight kernel. Persamaan Gaussian filter dengan ukuran kernel (2k+1)×(2k+1) adalah seperti gambar dibawah ini.

Gaussian filter Equation – Inpows

Gaussian filter dengan ukuran 5×5 bisa dilihat pada gambar dibawah.

5×5 Gaussian Filter – Inpows

Kode Python untuk Gaussian Filter

Berikut ini adalah kode untuk membuat image smoothing menggunakan Gaussian filter di Python.

import numpy as np
from matplotlib import pyplot as plt
import cv2

img = cv2.imread('tulips.jpg')
ori_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)


def gaussian_kernel(size, sigma=1):
    size = int(size) // 2
    x, y = np.mgrid[-size:size + 1, -size:size + 1]
    normal = 1 / (2.0 * np.pi * sigma ** 2)
    g = np.exp(-((x ** 2 + y ** 2) / (2.0 * sigma ** 2))) * normal
    return g


sigma = 1
size = 5
filtered_img_1 = cv2.filter2D(ori_img, -1, gaussian_kernel(size, sigma))

filtered_img_2 = cv2.GaussianBlur(ori_img, (size, size), 0)


plt.subplot(131), plt.imshow(ori_img), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.imshow(filtered_img_1), plt.title('Smoothed Image 1')
plt.xticks([]), plt.yticks([])
plt.subplot(133), plt.imshow(filtered_img_2), plt.title('Smoothed Image 2')
plt.xticks([]), plt.yticks([])
plt.show()

Hasil yang diperoleh

Berikut adalah hasil yang diperoleh dan ditampilkan pada figure menggunakan matplotlib.

Tulips Original and Smoothed Gaussian Filter- Inpows

Temukan source code python menarik lainnya hanya di Inpows.

Baca Juga

Membuat Image Smoothing Menggunakan Mean Filter di Python

Membuat Kalkulator Sederhana Menggunakan Kotlin

Membuat Password Generator di Kotlin

Membuat Pola Alphabet Bentuk Setengah Pyramid Menggunakan Kotlin

Membuat Email Validation pada Android Kotlin