Red de Respuestas Legales - Derecho empresarial - Opencv Avanzado 1

Opencv Avanzado 1

¡El reconocimiento facial en Opencv se basa en las funciones de Haar y el clasificador en cascada + Adaboost para lograr el reconocimiento facial!

Para entender este apartado, primero debes entender ¿qué son las características?

¡Las características son en realidad el resultado de operaciones de píxeles en un área determinada! Por ejemplo, la característica de pelo en realidad utiliza la plantilla que se enumera a continuación para deslizarse en la imagen, calcula la suma de los píxeles cubiertos por el área blanca menos la suma de los píxeles cubiertos por el área negra, ¡y el resultado calculado es el valor de la característica de pelo!

¡Las funciones de Haar generalmente se combinan con el clasificador Adaboost para el reconocimiento de objetivos!

¡Aquí se requieren conocimientos de aprendizaje automático deportivo! Afortunadamente, Opencv ya entrenó los datos para nosotros y extrajo las características de la cara. Hay archivos de funciones xml correspondientes en el código fuente de opencv. ¡Podemos completar rápidamente la función de reconocimiento facial llamando a la buena API proporcionada por opencv!

La API principal es:

Pasos de implementación:

HSV (Hue, Saturation, Value) es un espacio de color creado por A. R. Smith en 1978, también llamado Modelo Hexcono.

Los parámetros de color en este modelo son tono (H), saturación (S) y luminosidad (V).

Medido en ángulo, el rango de valores es 0 ~ 360, comenzando desde el rojo y contando en sentido antihorario, el rojo es 0, el verde es 120 y el azul es 240. Sus colores complementarios son: amarillo 60, cian 180 y magenta 300;

La saturación s indica qué tan cerca está el color del color del espectro. Se puede pensar en un color como el resultado de mezclar un determinado color espectral con el blanco. Cuanto mayor sea la proporción de color espectral, más cerca estará el color del color espectral y mayor será la saturación del color. Colores de alta saturación, profundos y brillantes. El componente de luz blanca del color espectral es 0 y la saturación está en su punto más alto. El rango de valores general es 0% ~ 100%. Cuanto mayor sea el valor, más saturado será el color.

El brillo representa el brillo del color. Para el color de la fuente de luz, el valor de brillo está relacionado con el brillo del emisor; para el color del objeto, el valor está relacionado con la transmitancia o reflectancia del objeto. Los valores típicos oscilan entre 0% (negro) y 100% (blanco).

Conclusión:

Nota: En opencv, los valores de H, S y V son respectivamente, no [0, 1] y [0, 1]; >

Aquí enumeramos algunos valores de color en el espacio hsv, clasificando algunos morados como rojos en la tabla.

[Error en la carga de la imagen...(Image-4f70f7-1563843266225)]

. jpg)

Tenga en cuenta que esto sólo puede ser un juicio aproximado. Según nuestro pensamiento normal, ¡es imposible saber si es de noche o de día en el punto crítico de la tarde!

En una imagen, si el color de un objeto es un color sólido, entonces podemos extraer fácilmente el objeto mediante el filtrado de color dentro de un rango determinado.

A continuación tenemos una imagen de una pelota de tenis. El color de la pelota de tenis es verde dentro de un rango determinado. No podemos encontrar ninguna otra imagen con verde en esta imagen, ¡así que podemos considerar usar verde para extraerla!

Por defecto, el espacio de color de la imagen es el espacio de color BGR. Si quisiéramos encontrar y extraer verde puro, es posible que necesitemos escribir algo como (0, 255, 0). Supongamos que queremos representar un cierto rango de verde, ¡será muy problemático!

Así que consideramos convertir al espacio de color HSV. Podemos conocer fácilmente el rango del tono verde H, ¡y el resto es definir la saturación H y el brillo V del color!

Pasos de implementación:

La binarización de imágenes es el proceso de establecer el valor de gris de los píxeles de la imagen en 0 o 255, lo que significa que toda la imagen presenta un blanco y negro obvio. efecto.

En el procesamiento de imágenes digitales, las imágenes binarias ocupan una posición muy importante. La binarización de imágenes reduce en gran medida la cantidad de datos en la imagen, resaltando así el contorno del objetivo.

[Error en la carga de la imagen...(Imagen-a 31052-1563843266226)]

Utilizamos un valor global como umbral. Pero esto no es bueno en todos los casos, por ejemplo si la imagen tiene diferentes condiciones de iluminación en diferentes áreas. En este caso, el umbral adaptativo puede ayudar. Aquí, el algoritmo determina el umbral de un píxel en función del área pequeña que lo rodea. Por lo tanto, obtenemos diferentes umbrales para diferentes áreas de una misma imagen, lo que da mejores resultados para imágenes con diferente iluminación.

Además de los parámetros anteriores, el método cv.adaptiveThreshold tiene tres parámetros de entrada:

El adaptiveMethod determina cómo se calcula el umbral:

El tamaño del bloque Determina el tamaño del área cercana. Reste una constante de la suma promedio o ponderada de los píxeles cercanos.

El algoritmo propuesto por Otsu en Japón, también conocido como método de máxima varianza entre clases, se considera el mejor algoritmo para la selección de umbrales en la segmentación de imágenes. ¡La ventaja de utilizar este algoritmo es la alta eficiencia de ejecución!

<img src= ".

/img 2/Otsu . jpg " width = " 500 "/& gt;

Si consideramos la imagen como una señal, entonces el ruido es una señal de interferencia. Al recopilar imágenes, debido a diversas interferencias, Podemos introducir ruido en la imagen. En las computadoras, la imagen es una matriz. Para agregar ruido a la imagen original, solo necesitamos agregar una determinada escala de grises al píxel. (x, y) + ruido

El ruido común es el ruido de sal y pimienta. ¿Por qué se llama ruido de sal y pimienta porque los píxeles de la imagen se convertirán aleatoriamente en puntos oscuros o blancos debido a la influencia? de ruido. "No es nuestro pimiento rojo o pimiento verde común, sino el exótico "pimiento" (un tipo de especia). Sabemos que la pimienta es negra y la sal es blanca, por eso tenemos ese nombre de imagen.

A continuación, generaremos un 10% de ruido de pimienta y ruido de sal:

También notamos que el tipo de matriz de imagen de opencv es uint8, los valores por debajo de 0 y por encima de 255 no se truncan, pero se usan la operación del módulo Es decir, 2060=260% 256 = 4. Por lo tanto, necesitamos convertir la matriz de imagen original y la matriz de imagen de ruido en números de punto flotante para sumarlos y luego convertirlos nuevamente.