Compartir tecnología

C: Una breve descripción general de la función filter2D

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

en OpenCVfilter2D La función es una herramienta muy poderosa para convolucionar imágenes y aplicar varios filtros lineales. Esta función procesa cada píxel de la imagen y modifica las características de la imagen convolucionándola con un núcleo de convolución (o filtro) específico.Lo siguiente es sobrefilter2DIntroducción detallada de la función:

prototipo de función

En OpenCV,filter2DEl prototipo de la función es el siguiente:

void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel,  
                  Point anchor = Point(-1,-1), double delta = 0,  
                  int borderType = BORDER_DEFAULT);

Descripción de parámetros

  • origen: Imagen de entrada.
  • horario de verano: Imagen de salida e imagen de entradasrcTener el mismo tamaño y número de canales.
  • profundidad : La profundidad deseada de la imagen de salida (tipo de datos). Cuando es -1, significa que la imagen de salida tiene la misma profundidad que la imagen de entrada.
  • núcleo : Núcleo de convolución (o filtro), que es una matriz de punto flotante de un solo canal. Esta matriz define cómo realizar operaciones de convolución en la imagen de entrada.
  • ancla : El punto de anclaje del kernel, que indica la posición relativa del punto de filtro en el kernel. El punto de anclaje debe estar ubicado dentro del núcleo; el valor predeterminado (-1,-1) significa que el punto de anclaje está ubicado en el centro del núcleo.
  • delta: valor opcional que se utilizará al almacenar píxeles filtrados endstagregado previamente a los píxeles filtrados.
  • tipo de borde : Método de extrapolación de píxeles, utilizado para procesar píxeles fuera del límite de la imagen. Determina cómo se procesan los píxeles del límite cuando el núcleo de convolución excede el límite de la imagen.Las opciones comunes incluyenBORDER_CONSTANTBORDER_REPLICATEBORDER_REFLECTesperar.

principio de funcionamiento

filter2D La función en realidad realiza una operación de convolución (aunque técnicamente calcula una correlación en lugar de una convolución estricta, ya que no implica ningún cambio del núcleo). La operación de convolución implica "deslizar" el núcleo de convolución sobre la imagen de entrada, multiplicar los elementos correspondientes de cada submatriz del mismo tamaño que el núcleo de convolución y luego sumar los resultados. Este proceso genera un nuevo valor de píxel que se coloca en la ubicación correspondiente en la imagen de salida. A medida que el núcleo de convolución se desliza sobre toda la imagen de entrada, este proceso se repite hasta que se genera la imagen de salida completa.

Escenarios de aplicación

Al cambiar el núcleo de convolución,filter2DLas funciones pueden lograr una variedad de efectos de procesamiento de imágenes, que incluyen, entre otros:

  • Nitidez de imagen: El uso de un núcleo de convolución de nitidez específico puede aclarar los bordes de la imagen.
  • filtro medio: El uso del núcleo de convolución promedio puede reducir el ruido de la imagen, pero puede hacer que la imagen sea borrosa.
  • filtro gaussiano : El filtrado gaussiano es una técnica de suavizado de imágenes comúnmente utilizada que puede reducir el ruido de la imagen manteniendo la información de los bordes.A pesar defilter2DLa función en sí no proporciona directamente la generación de núcleos gaussianos, pero se puede pasargetGaussianKernelLa función genera un núcleo gaussiano y utilizafilter2DRealizar filtrado gaussiano.
  • detección de bordes: Al diseñar núcleos de convolución específicos (como el operador de Sobel, el operador de Laplaciano, etc.), se pueden detectar los bordes de la imagen.

Código de muestra

El siguiente es un uso.filter2DCódigo de ejemplo para la función de filtrado medio (versión Python):

#include