Red de conocimiento de recetas - Recetas caseras - Tutorial 4 de la serie OpenCV Python: procesamiento de imágenes OpenCV (1)

Tutorial 4 de la serie OpenCV Python: procesamiento de imágenes OpenCV (1)

Objetivos de aprendizaje:

Hay más de 150 métodos de conversión de espacios de color en OpenCV. Aquí solo se analizan dos métodos:

El rango de tono de HSV es y el rango de brillo. Cada software utiliza diferentes escalas. Debe normalizar estos rangos si desea comparar los valores de OpenCV con ellos.

Explicación del virus del herpes simple y HLV

Resultados de la ejecución: La función de este programa es detectar objetivos azules, y también puede detectar objetivos de otros colores.

Hay algo de ruido en los resultados, que se eliminará en capítulos posteriores.

Este es el método más sencillo de seguimiento de objetivos. Una vez que aprenda qué hacen los contornos, podrá hacer muchas cosas, como encontrar el centro de masa de este objeto, usarlo para rastrear este objeto, dibujar gráficos con solo mover la mano frente a la cámara y muchas otras cosas divertidas.

Tutorial para principiantes en línea Conversión HSV->BGR

Por ejemplo, para encontrar el valor HSV verde, puede utilizar el programa anterior y el valor obtenido toma un límite superior e inferior. . Como el límite inferior [H-10, 100, 100] y el límite superior [H+10, 255, 255].

O utilizar otras herramientas como GIMP.

Objetivos de aprendizaje:

La segmentación por umbral de imágenes es el método de segmentación de imágenes más simple. Esta segmentación se basa en la diferencia de escala de grises entre la imagen y el fondo a nivel de píxeles.

umbral(src, umbral, maxval, tipo[, dst])-& gt; recuperación del horario de verano

Calcula el umbral de un área pequeña de la imagen. . Por lo tanto, para diferentes áreas de la misma imagen, obtenemos diferentes umbrales, lo que nos da mejores resultados para nuestras imágenes bajo diferente iluminación.

Tres parámetros de entrada especiales y un parámetro de salida.

adaptiveThreshold(src, maxValue, adaptiveMethod, umbralType, blockSize, C[, dst])->Horario de verano

opencv-threshold-python

Colección de imágenes de OpenCV

Texto original de esta sección

Objetivos de aprendizaje:

OpenCV proporciona dos funciones de conversión: cv2.warpAffine y cv2.warpPerspective

Cv2.resize() completa el escalado.

Descripción del documento

Resultados de la ejecución

Descripción: cv2. El método INTER_LINEAR es más lento que cv2. ¿INTER_CUBIC parece no coincidir con los documentos oficiales? Por verificar.

Comparación de velocidades:INTER_CUBIC>INTER_NEAREST>INTER_LINEAR>INTER_AREA>Trans Lanzos 4

Cambiar la posición de la imagen, crear una matriz de transformación tipo np.float32.

warpAffine(src, M, dsize[, dst[, flags[, borderMode[, border value]]])-& gt; Horario de verano

Ejecutar resultados:

El ángulo de rotación() se transforma a través de la matriz de transformación:

OpenCV proporciona rotación escalada con centro de rotación ajustable, para que pueda rotar a cualquier lugar que desee. La matriz de transformación modificada está

Aquí

OpenCV proporciona el control cv2.getRotationMatrix2D.

cv2.getRotationMatrix2D(centro, ángulo, escala) → retval

Resultados de la ejecución

cv2.getAffineTransform(src, dst) → retval

Relación funcional:

\ comenzar { b matriz } x ' _ I \ y ' _ I \ end { b matriz } \ comenzar { b matriz } x ' _ I \ y ' _ I \ end { b matriz } =

En...

Resultado de la operación: los puntos en el gráfico son fáciles de observar y los puntos rojos en los dos gráficos se corresponden entre sí.

La transformación de perspectiva requiere una matriz de transformación de 3x3. Después de la transformación, la línea recta sigue siendo recta. Para encontrar esta matriz de transformación, se requieren cuatro puntos en la imagen de entrada y los puntos correspondientes en la imagen de salida. Entre estos cuatro puntos, tres puntos no deben ser * * * líneas. La matriz de transformación se obtiene mediante el cálculo de cv2.getPerspectiveTransform, y el resultado final se obtiene mediante la transformación de cv2.warpPerspective.

Texto original de esta sección

El suavizado, también conocido como desenfoque, es un método de procesamiento de imágenes sencillo y de uso común. Propósito del suavizado: generalmente se usa para reducir el ruido o la distorsión en una imagen. El suavizado es un método muy útil a la hora de reducir la resolución de la imagen.

Filtrado de imágenes: suprime el ruido de la imagen de destino mientras conserva los detalles de la imagen tanto como sea posible. El efecto de procesamiento afectará directamente la efectividad y confiabilidad del procesamiento y análisis de imágenes posteriores.

Eliminar los componentes de ruido de una imagen se denomina suavizado o filtrado de imagen. La energía de una señal o imagen se concentra principalmente en las bandas de baja y media frecuencia del espectro de amplitud. En altas frecuencias, la información útil queda ahogada por el ruido. Por tanto, los filtros que reducen la amplitud de los componentes de alta frecuencia pueden atenuar los efectos del ruido.

El propósito del filtrado es extraer las características de los objetos como patrones de características para el reconocimiento de imágenes; para cumplir con los requisitos del procesamiento de imágenes, se elimina el ruido mezclado en el proceso de digitalización de imágenes.

Requisitos para el procesamiento de filtrado: la información importante, como los contornos y los bordes de la imagen, no se puede destruir; la imagen es clara y el efecto visual es bueno.

El filtrado suavizado es una tecnología de filtrado espacial mejorada de baja frecuencia cuyo propósito es difuminar y eliminar el ruido.

El filtrado suavizado en el dominio espacial generalmente utiliza el método de promedio simple, que consiste en encontrar el valor de brillo promedio de los píxeles adyacentes. El tamaño de la vecindad está directamente relacionado con el efecto de suavizado. Cuanto mayor sea la vecindad, mejor será el efecto de suavizado. Sin embargo, si la vecindad es demasiado grande, el suavizado también provocará una mayor pérdida de información de los bordes, lo que hará que la imagen de salida sea borrosa. Por tanto, es necesario elegir una comunidad adecuada.

Filtro: Ventana que contiene coeficientes de ponderación. Al suavizar una imagen con un filtro, coloque esta ventana sobre la imagen y vea la imagen que obtenemos a través de esta ventana.

Filtro lineal: se utiliza para eliminar frecuencias no deseadas en la señal de entrada, o para seleccionar una frecuencia deseada entre muchas frecuencias.

Filtro de paso bajo, filtro de paso alto, filtro de paso de banda, filtro de parada de banda, filtro de paso todo, filtro de muesca.

boxFilter(src, d Depth, ksize[, dst[, Anchor[, normalize[, border type]]])->Horario de verano

El filtrado medio es un filtro de bloque regresión Caso especial después de la unificación. La normalización consiste en escalar la cantidad procesada a un rango, como (0, 1), para un procesamiento unificado y una cuantificación intuitiva. El filtrado de bloques no normalizado se utiliza para calcular características integrales dentro de la vecindad de cada píxel, como la matriz de covarianza del recíproco de la imagen utilizada en algoritmos de flujo óptico denso.

Resultados de la ejecución:

El filtrado medio es un algoritmo de filtrado lineal típico. El método principal es el método de promedio de vecindad, que utiliza el valor promedio de cada píxel en un área de la imagen para reemplazar el. Algoritmo de filtrado original. Cada valor de píxel de la imagen. Generalmente, es necesario asignar una plantilla (núcleo) al píxel de destino en la imagen. Esta plantilla incluye sus píxeles adyacentes (por ejemplo, 8 (3x3-1) píxeles alrededor del píxel de destino como centro forman una plantilla de filtro, es decir. , se elimina el píxel de destino). Luego, el valor de píxel original se reemplaza por el promedio de todos los píxeles de la plantilla.

Es decir, para que se procese el punto de píxel actual (x, y), seleccione una plantilla, que esté compuesta por varios píxeles inmediatamente adyacentes a ella, encuentre el valor promedio de todos los píxeles en la plantilla y luego asigne el valor promedio a el punto de píxel actual (x, y) como el nivel de gris g(x, y) de la imagen procesada en este punto, es decir, g(x, y) = 1/m ∑.

El filtro medio en sí tiene defectos inherentes, es decir, no puede proteger bien los detalles de la imagen y también destruye los detalles de la imagen mientras elimina el ruido, lo que hace que la imagen sea borrosa y no pueda eliminar el ruido. bien.

cv2.blur(src, ksize[, dst[, ancla[, tipo de borde]])→dst

Resultado:

Filtro gaussiano: filtro lineal Puede eliminar el ruido gaussiano y se utiliza ampliamente en el proceso de reducción de ruido del procesamiento de imágenes. El filtrado gaussiano es un proceso de promediado ponderado de toda la imagen. El valor de cada píxel se obtiene mediante el promedio ponderado de sí mismo y de otros valores de píxeles vecinos. La operación específica del filtrado gaussiano es utilizar una plantilla (o convolución o máscara) para escanear cada píxel de la imagen y reemplazar el valor del píxel central de la plantilla con el valor de gris promedio ponderado de los píxeles en la vecindad determinado por la plantilla.

El filtrado gaussiano es útil, pero ineficiente.

El efecto visual de la imagen generada por la tecnología de desenfoque gaussiano es como observar la imagen a través de una pantalla translúcida, que es obviamente diferente del efecto de las imágenes desenfocadas y del efecto de las sombras de luz ordinarias. El suavizado gaussiano también se utiliza en la etapa de preprocesamiento de los algoritmos de visión por computadora para mejorar los efectos de la imagen en diferentes escalas (consulte Representación del espacio a escala e Implementación del espacio a escala). Desde un punto de vista matemático, el proceso de desenfoque gaussiano de una imagen es la convolución de la imagen con una distribución normal. Debido a que la distribución normal también se denomina distribución gaussiana, esta técnica se denomina desenfoque gaussiano.

El filtro Gaussiano es un filtro de suavizado lineal cuyo valor seleccionado se basa en la forma de la función Gaussiana. Los filtros de suavizado gaussianos son muy eficaces para suprimir el ruido que sigue una distribución normal.

La función gaussiana unidimensional de media cero es: los parámetros de distribución gaussiana determinan el ancho de la función gaussiana.

Generación de ruido gaussiano

GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, tipo de borde]])-& gt; p > Desde la perspectiva de la respuesta de frecuencia, el filtrado lineal es fácil de construir y analizar.

En muchos casos, el uso de filtrado no lineal de píxeles adyacentes dará mejores resultados. Por ejemplo, cuando el ruido es ruido de lente en lugar de ruido gaussiano, es decir, cuando la imagen ocasionalmente tiene valores grandes, cuando la imagen se ve borrosa por un filtro gaussiano, los píxeles de ruido no se eliminarán, sino que se transformarán en un ruido más suave. pero aún se ve el tiro.

El filtrado mediano es una tecnología de filtrado no lineal típica. La idea básica es reemplazar el valor de gris de un píxel con el valor de gris medio de su vecindario. Este método se utiliza para eliminar el ruido impulsivo y el ruido de sal y pimienta, también conocido como ruido impulsivo. Cambia aleatoriamente algunos valores de píxeles y es un ruido de puntos brillantes y oscuros en blanco y negro generado por el sensor de imagen, el canal de transmisión y el procesamiento de decodificación. El ruido de sal y pimienta suele deberse al recorte de imágenes. Al mismo tiempo, se pueden mantener los detalles de los bordes de la imagen.

El filtrado mediano es una tecnología de procesamiento de señales no lineal basada en la teoría estadística de clasificación, que puede suprimir eficazmente el ruido. El principio básico es reemplazar el valor de un determinado punto en las proximidades de un determinado punto en una imagen digital o secuencia digital con el valor medio del punto, de modo que los valores de los píxeles circundantes estén cerca del valor real, de modo que eliminando puntos de ruido aislados. Es particularmente útil para el ruido moteado y el ruido entrecortado porque no depende de . Cuando se trata de funciones de ventana de imagen continua, el filtro mediano funciona como un filtro lineal, pero el proceso de filtrado ya no es una operación ponderada.

Bajo ciertas condiciones, el filtrado mediano puede superar la borrosidad de los detalles de la imagen causada por filtros lineales de uso común, como el filtrado de mínimos cuadrados medios, el filtrado de bloques y el filtrado medio. , muy eficaz para filtrar la interferencia del pulso y el ruido del escaneo de imágenes. También se utiliza a menudo para preservar la información de los bordes y sus propiedades de preservación de los bordes lo hacen útil en situaciones en las que el desenfoque de los bordes no es deseable. Este es un método de procesamiento de ruido suave muy clásico.

Comparado con el filtrado medio:

Explicación: bajo ciertas condiciones, el filtrado medio puede superar la borrosidad de los detalles de la imagen causada por filtros lineales (como el filtrado medio, etc.). ), y es el más eficaz para filtrar la interferencia de pulsos, es decir, el ruido de escaneo de imágenes. Las características estadísticas de la imagen no son necesarias durante la operación real, lo que también aporta mucha comodidad al cálculo.

Pero el filtrado mediano no es adecuado para algunas imágenes con más detalles, especialmente líneas y agujas.

El filtrado bilateral es un método de filtrado no lineal que combina la proximidad espacial de las imágenes y la similitud de los valores de los píxeles, al tiempo que considera la información espacial y la similitud en escala de grises para lograr el propósito de preservar los bordes. Es simple, no iterativo y local.

La ventaja del filtrado bilateral es que puede preservar los bordes. Generalmente, el filtro Wiener o el filtro gaussiano utilizados en el pasado obviamente difuminarán los bordes y el efecto de protección en los detalles de alta frecuencia no es obvio. Como sugiere el nombre, el filtro bilateral tiene una varianza gaussiana Sigma-D más que el filtro gaussiano. Esta es una función de filtro gaussiano basada en la distribución espacial, por lo que los píxeles más cercanos al borde no tendrán mucho impacto en el valor de píxel en el borde. Esto asegura la preservación de los valores de píxeles cerca del borde. Sin embargo, debido a que se conserva demasiada información de alta frecuencia, el filtro bilateral no puede filtrar limpiamente el ruido de alta frecuencia en la imagen en color y solo puede filtrar bien la información de baja frecuencia.

Resultados operativos

Objetivos de aprendizaje:

La transformación morfológica son algunas operaciones simples basadas en la forma de la imagen. Suele realizarse sobre imágenes binarias.

Funciones vía Dilatación y Erosión

La idea básica de la erosión es como la erosión del suelo, que erosiona los límites de los objetos en primer plano (siempre tratando de mantener el primer plano blanco). Entonces, ¿qué hace? El núcleo se desliza a través de la imagen (como en la convolución 2D). Un píxel en la imagen original (1 o 0) se considerará 1 solo si todos los píxeles debajo del núcleo son 1; de lo contrario, se erosionará (se convertirá en cero).

erode(src, kernel[, dst[, Anchor[, iterations[, borderType[, border value]]])->Horario de verano

Opuesto a erosión. Si al menos un píxel debajo del núcleo es "1", entonces el elemento de píxel es "1". Por lo tanto, aumenta el tamaño de las áreas blancas o de los objetos en primer plano de la imagen. Normalmente, en el caso de la eliminación del ruido, a la erosión le sigue la dilatación. Porque la erosión elimina el ruido blanco, pero también encoge nuestros objetos. Entonces lo ampliamos. A medida que el ruido desaparezca, no volverán, pero nuestra área de objeto aumentará. También se puede utilizar para unir partes rotas de un objeto.