Underc0de

Programación Scripting => Python => Mensaje iniciado por: Once en Abril 09, 2017, 12:44:36 AM

Título: Visión artificial con Python
Publicado por: Once en Abril 09, 2017, 12:44:36 AM
Originalmente posteado en: elblogdeonce.blogspot.com

(https://1.bp.blogspot.com/-iTt55tSnYlc/WOlUVzAEvHI/AAAAAAAAABw/hsBOEC3ucII_A0fKbCzN3QikFdAlFpPdACLcB/s1600/header.jpg)


El objetivo de esta entrada (y en general de esta serie de entradas) es llevar la visión artificial a cualquier usuario de Python gracias  a las libreria OpenCV y Numpy. En esta entrada en concreto se abordará un poco de la teoría sobre la visión artificial pero lo suficiente como para comprender el material de las próximas entradas.



Representación digital de las imágenes

Antes de comenzar, debemos tener en cuenta cómo están representadas las imágenes o dicho de otra manera, cómo es una imagen para el computador.


Sistema de visión artificial

Un sistema de visión artificial generalmente se puede dividir en cinco etapas principales:



Representación del color
Modelo de color

Un modelo de color es un modelo mate mático que permite representar los colores en forma numérica.

Existen varios modelos de color que aunque se puede representar la misma imagen usando varios modelos, en visión artificial es útil muchas veces representar las imágenes usando modelos diferentes al RGB ya que distintos canales de distintos modelos pueden resaltar detalles diferentes aunque la información completa no cambie.

Algunos modelos
RGB
El modelo RGB (Red, Green and Blue) es un modelo en el que los colores pueden ser representados por un vector de tres posiciones que representan los niveles de intensidad de rojo, verde y azul para cada pixel. El modelo RGB es un modelo aditivo.
CMYK
El modelo CMYK (Cyan, Magenta, Yellow, Key) es un modelo en que los colores pueden ser representados por un vector de cuatro posiciones que a su vez representan los niveles de cian, magenta, amarillo y negro para cada pixel. Éste es un modelo sustractivo.


El histograma
El histograma es un gráfico que nos muestra las frecuencias de ocurrencia de los niveles de gris en una imagen.

El histograma es una herramienta muy importante (como veremos en las siguientes entradas) ya que nos permite hacernos una idea de qué operaciones debemos hacer a la imagen para mejorar su calidad, especialmente durante la etapa de preprocesamiento.


(https://1.bp.blogspot.com/-NEqUI6qhphI/WOmmOySSBFI/AAAAAAAAACw/I9_lH-J0Z34U9JVcCOAYj0gBbQdiLEQkQCLcB/s320/histograma.png)
Imagen y su histograma.

Como se puede observar en la imagen anterior, en el eje de las x está representado el nivel de gris que puede tomar cada píxel (para una imagen de 8 bits, hay
2^8= 256 formas de representar los niveles de gris) y en el eje de las y está representado la cantidad de píxeles que hay por cada nivel de gris.

¿Qué es el ruido?
El ruido en las imágenes es información no deseada que contamina las imágenes. El ruido puede ser varios tipos y ser generado en la adquisición de la imagen por defectos del sensor o por errores o interferencias durante la transmisión de la imagen.

El ruido puede llegar a ser un gran problema cuando estamos haciendo visión por computador, especialmente en la etapa de segmentación, por eso uno de los principales objetivos de la etapa de preprocesamiento es intentar reducir el ruido de una imagen.

Algunos tipos de ruido.
Ruido gaussiano
Es el ruido cuya aparición sigue una distribución de probabilidad normal (o gaussiana).

Este tipo de ruido suele aparecer durante la adquisición de la imagen y se debe principalmente a condiciones de baja iluminación y/o altas temperaturas. Y durante la transmisión a causa del ruido electrónico en los circuitos.


(https://2.bp.blogspot.com/-Y5fzdFjTlAc/WOmRbAwfV9I/AAAAAAAAACQ/GiHBuoE2fKwxql97mFlEW-t6jWyr8ujmgCLcB/s1600/gaussian_free.jpg)
Imagen sin ruido. Wikipedia

(https://3.bp.blogspot.com/-hGurQIMBlI4/WOmRbLM2A6I/AAAAAAAAACU/T5eZGSKh5rI3LL3QohJot_KSxlfGw4srwCLcB/s1600/gaussian_noise.jpg)
Imagen ruido gaussiano. Wikipedia.


Ruido sal y pimienta
También conocido como ruido impulsivo es ruido que consiste en pixeles  blancos sobre regiones negras (ruido tipo sal) y/o pixeles negros sobre regiones claras (ruido tipo pimienta).

Este tipo de ruido se debe a problemas en la conversión de la imagen en el sensor y/o errores en la transmisión.

(https://1.bp.blogspot.com/-fFB06GQx4LQ/WOmTa-cgIGI/AAAAAAAAACg/WZQUjC_mQFg7khC5FK_2lQ5dwDFqq-PkwCLcB/s1600/impulsivo.png)
Imagen con ruido impulsivo.


Referencias
[1] https://en.wikipedia.org/wiki/Gaussian_noise
[2] https://en.wikipedia.org/wiki/Image_noise

Fuente: https://elblogdeonce.blogspot.com.co/2017/04/parte-i-vision-artificial-un-poco-de.html

Saludos!