La función getGaussianKernel() de Python OpenCV se usa para encontrar los coeficientes del filtro gaussiano. El núcleo gaussiano también se utiliza en Gaussian Blurring. Gaussian Blurring es la técnica de suavizado que utiliza un filtro de paso bajo cuyos pesos se derivan de una función gaussiana. De hecho, este es el filtro de paso bajo más utilizado en aplicaciones CV (visión por computadora). Las diferentes propiedades del filtro gaussiano hacen que el algoritmo sea más eficiente.
Sintaxis: cv.getGaussianKernel(ksize, sigma[, ktype])
Parámetros :
- Ksize: Es el tamaño de Apertura. El valor de Ksize debe ser impar y positivo.
- sigma: Sigma es la desviación estándar de Gauss. Se calcula a partir de ksize como sigma = 0,3*((ksize-1)*0,5 – 1) + 0,8 si no es positivo.
- ktype: Es el tipo de coeficientes del filtro. Puede ser CV_32F o CV_64F.
Devoluciones:
array de coeficientes de filtro gaussiano.
La función getGaussianKernel() calcula y devuelve la array de dimensión ksize×1 de coeficientes de filtro gaussiano:
Gi=α∗e−(i−(ksize−1)/2)2/(2∗sigma2)
donde i=0 a ksize−1 y α es el factor de escala elegido para que ∑iGi=1.
Dos de estos núcleos generados se pueden pasar a sepFilter2D. Esas funciones pasadas reconocen automáticamente los núcleos de suavizado (núcleo simétrico con la suma de pesos igual a 1) y los manejan en consecuencia. También puede usar el GaussianBlur de nivel superior. Aquí, una cosa para recordar es que k, que es el tamaño de la apertura, también debe ser impar y positivo.
Entonces, es posible que tenga una pregunta sobre qué es el núcleo gaussiano y por qué lo necesitamos. El núcleo gaussiano es linealmente separable. Esto significa que podemos dividir cualquier filtro de 2 dimensiones en dos filtros de 1 dimensión. Debido a esto, la complejidad computacional se reduce de O(n 2 ) a O(n). La hora es lo que importa en informática.
Aplicar varios núcleos gaussianos sucesivos es lo mismo que aplicar un solo desenfoque gaussiano más grande, cuyo radio es igual a la raíz cuadrada de la suma de los cuadrados del radio de múltiples núcleos. Usando esta característica podemos aproximar un filtro no separable por una mezcla de múltiples filtros separables. Los pesos del núcleo gaussiano (1-D) se pueden obtener rápidamente usando el Triángulo de Pascal.
Ejemplo 1:
Aquí, en el siguiente ejemplo, encontraremos el núcleo gaussiano de una imagen. Primero leemos la imagen usando cv2. Luego creamos el kernel gaussiano de tamaño 3×1 usando la función getgaussiankernel(). ksize, que es el tamaño de apertura, es impar y positivo.
La siguiente imagen se utiliza en este ejemplo:
Python3
# Python OpenCV - getgaussiankernel() Function # import cv2 import cv2 # read image img = cv2.imread('gfg2.jpg') # Creates a 1-D Gaussian kernel a = cv2.getGaussianKernel(3, 1) # print Gaussian filter coefficients matrix print(a)
Producción:
[[0.27406862] [0.45186276] [0.27406862]]
Ejemplo 2:
En este ejemplo, encontraremos el kernel gaussiano de una imagen, creamos el kernel gaussiano de tamaño 7×1 usando la función getgaussiankernel().
Python3
# Python OpenCV - getgaussiankernel() Function # import cv2 import cv2 # read image img = cv2.imread('gfg_logo.png') # Creates a 1-D Gaussian kernel a = cv2.getGaussianKernel(7, 1) # print Gaussian filter coefficients matrix print(a)
Producción:
[[0.00443305] [0.05400558] [0.24203623] [0.39905028] [0.24203623] [0.05400558] [0.00443305]]
Publicación traducida automáticamente
Artículo escrito por rushi_javiya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA