procesamiento de imagenes

32
PROCESAMIENTO DE IMAGENES con OpenCV y Matlab

Upload: karold-ragner-montejo-garcia

Post on 13-Sep-2015

218 views

Category:

Documents


1 download

DESCRIPTION

PRESENTACION POWERPOINT DE PROCESAMIENTO DE IMAGENES

TRANSCRIPT

Procesamiento de imagenes

Procesamiento de imagenescon OpenCV y MatlabQu es OpenCV?Es una fuente abierta que posee una biblioteca de visin por computador.La biblioteca est escrita en lenguaje C y C++ y se ejecuta en Linux, Windows and Mac OS X.Hay un desarrollo activo en las interfaces para Python, Ruby, Matlab, and other languages.Uno de los objetivos de OpenCV es proporcionar una infraestructura de visin por computador sencillo de usar, que ayuda a las personas a construir aplicaciones de visin bastante sofisticados rpidamente.Quines usan OpenCV?Informticos y programadores.En supervisin, inspeccin y vigilancia.Para interfaces de juegos.Obtencin de imgenes areas y mapeo de calles.Monitoreo de seguridad.Anlisis Biomdico.Vehculos voladores no tripulados (drones).Manufactura.Exploracin.Anlisis de objetos.Sonido y reconocimiento de msica.

Qu es la visin por computador?Es la transformacin de los datos de una cmara de fotos o video ya sea en una decisin o una nueva representacin, para lograr un objetivo especfico.El cerebro humano descompone la seal de la visin en muchos canales que transmiten diferentes tipos de informacin en su cerebro.El cerebro tiene un sistema de atencin que identifica, de una manera dependiente de la tarea, partes elementales de una imagen para examinar mientras se suprime el estudio de otras reas.En la transmisin visual hay realimentacin masiva. Hay entradas asociativas generalizadas de los sensores de control de los msculos y todos los otros sentidos que admiten al cerebro dibujar en asociaciones cruzadas hechas de aos de vida en el mundo. Los lazos de retroalimentacin en el cerebro retornan a todas las etapas de procesamiento, incluyendo los sensores de hardware en s (los ojos), que controlan mecnicamente la iluminacin a travs del iris y sintonizan la recepcin en la superficie de la retina.Sin embargo, el sistema de visin por computador, recibe una red de nmeros de la cmara o desde el disco, y nada ms. En su mayor parte, no hay construido el reconocimiento de patrones, no hay control automtico de enfoque y apertura, no hay asociaciones cruzadas con aos de experiencia.

highGUIEs una librera que permite abrir ventanas, visualizar imgenes, leer y escribir grficos relacionados con los archivos (imgenes y video), y para manipular eventos sencillos de ratn, puntero y teclado.La biblioteca HighGUI en OpenCV se puede dividir en tres partes: la parte de hardware, la parte del sistema de archivos y la parte GUI.La parte hardware se refiere principalmente a la operacin de las cmaras. En la mayora de sistemas operativos, la interaccin con una cmara es una tarea tediosa y difcil. HighGUI permite una manera fcil de consultar una cmara y recuperar la ltima imagen de la cmara. La parte del sistema de archivos se ocupa principalmente de cargar y guardar imgenes. Una caracterstica interesante de la biblioteca es que nos permite leer de vdeo utilizando los mismos mtodos que utilizaramos para leer una cmara. HighGUI nos proporciona un par de funciones universales para cargar y guardar imgenes fijas. Estas funciones simplemente dependen de la extensin del nombre de archivo y manejan de forma automtica toda la decodificacin o codificacin que es necesaria.La tercera es el sistema de ventanas o GUI . La biblioteca ofrece algunas funciones simples que nos permitirn abrir una ventana y lanzar una imagen en la ventana. Tambin nos permite registrar y responder a eventos de ratn y teclado en esa ventana. Las caractersticas son ms tiles cuando se llevan a cabo una sencilla aplicacin. Cargar una imagenLa funcin para esto es cvLoadImage():IplImage* cvLoadImage( const char* filename, int iscolor = CV_LOAD_IMAGE_COLOR);

Por defecto las imgenes son cargadas en 3 canales con 8 bit por canal : CV_LOAD_IMAGE_COLOR.La etiqueta opcional CV_LOAD_IMAGE_ANYDEPTH puede ser aadida para permitir cargar imgenes distintas de 8 bits.La alternativa para CV_LOAD_IMAGE_COLOR son CV_LOAD_IMAGE_GRAYSCALE (automticamente convierte una imagen a un nico canal )y CV_LOAD_IMAGE_ANYCOLOR (cargar la imagen tal como est almacenada en el archivo).Para cargar una imagen de color de 16 bit usaras CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYDEPTH.

Si quieres que, tanto el color y la profundidad se carguen exactamente como es, se poda utilizar en su lugar la bandera CV_LOAD_IMAGE_UNCHANGED para todo uso.

Guardar una imagenFuncin complementaria de cvLoadImage()int cvSaveImage( const char* filename, const CvArr* image); Esta funcin toma dos argumentos. El primero da el nombre del archivo , cuya extensin es usada para determinar el formato en el cual el archivo ser almacenado. El segundo argumento es el nombre de la imagen para ser almacenada.La funcin cvSaveImage () almacenar imgenes solamente de 8 bits, de uno o tres canales, para la mayora de los formatos de archivo.Visualizar una imagenLa funcin a usar es cvShowImage():void cvShowImage(const char* name, const CvArr* image);El primer argumento es el nombre de la ventana dentro de la cual nosotros intentaremos dibujar. El segundo argumento es la imagen a ser dibujada.Suavizado de una imagenSmoothing (suavizado), tambin llamado blurring (desenfoque, borrn).Usualmente es apropiado para reducir el ruido o para los artefactos de la cmara.El suavizado es tambin importante cuando deseamos reducir la resolucin de una imagen.OpenCV ofrece cinco tipos de operaciones de suavizado.cvSmooth() toma 4 formas deseadas de suavizado como un argumento. void cvSmooth( const CvArr* src, CvArr* dst, int smoothtype = CV_GAUSSIAN, int param1 = 3, int param2 = 0,double param3 = 0, double param4 = 0);Los argumentos src y dst son la fuente usual y destino para el buen funcionamiento. La funcin cv_Smooth () tiene cuatro parmetros con los nombres particularmente poco informativos de param1, param2, param3 y param4. El significado de estos parmetros depende del valor de SmoothType, que puede tomar cualquiera de los cinco valores que figuran en la siguiente tabla.

Transformaciones morfolgicasDilatacin y erosinDilatacin y erosin surgen en una amplia variedad de contexto tales como eliminar ruido de una imagen, aislar elementos individuales y unir elementos dispares en una imagen.Tambin se puede utilizar para encontrar protuberancias o agujeros de intensidad en una imagen y para encontrar gradientes de imagen.dilatacinLa dilatacin es una convolucin de alguna imagen (o regin de una imagen), que llamaremos A, con algunos kernel (ncleos), que llamaremos B. El ncleo, que puede ser de cualquier forma o tamao, tiene un solo punto de anclaje definido.Muy a menudo, el kernel es un pequeo cuadrado slido o disco con el punto de anclaje en el centro. El kernel puede ser pensado como una plantilla o mscara, y su efecto para la dilatacin es la de un operador mximo local.Como el kernel B es analizado sobre la imagen, se calcula el valor de pxel mximo superpuesto por B y reemplazamos el pxel de la imagen en el punto de anclaje con ese valor mximo.Esto hace que las regiones brillantes en una imagen crezcan como en el siguiente diagrama.

erosinLa erosin es la operacin inversa. La accin del operador de erosin es equivalente al clculo de un mnimo local sobre el rea del ncleo (kernel).La erosin genera una nueva imagen del original utilizando el siguiente algoritmo: como el kernel B es analizado sobre la imagen, calculamos el valor mnimo de pxeles superpuesto por B y reemplazamos el pxel de la imagen en el punto de anclaje con ese valor mnimo.

En general, mientras dilatacin expande la region A, erosin reduce la regin A.Por otra parte, la dilatacin tender a suavizar concavidades y la erosin tender a suavizar las protuberancias.void cvErode( IplImage* src, IplImage* dst, IplConvKernel* B = NULL, int iterations = 1);void cvDilate( IplImage* src, IplImage* dst, IplConvKernel* B = NULL, int iterations = 1);El tercer argumento de ambas funciones es el kernel, cuyo valor por defecto es nulo.En el caso nulo, el kernel usado es un kernel de 3x3 con el anclaje en su centro.La operacin de erosin es a menudo usada para eliminar ruido mancha en una imagen. La idea es que las manchas sean erosionadas para nada, mientras que las regiones ms grandes con contenido visual significativo no se vean afectadas.La operacin de dilatacin es a menudo usada cuando se intenta encontrar los componentes o elementos conectados ( las grandes regiones discretas de color o intensidad de pixel similar ).La utilidad de la dilatacin surge porque en muchos casos una regin grande podra ser de otra manera, descompuesta en varios componentes como resultado de ruido, sombras, o algn otro efecto. Cuando trabajamos con imgenes binarias y mscaras de imgenes , las operaciones bsicas de erosin y dilatacin son usualmente suficientes.Cuando trabajamos imgenes en escala de grises o imgenes a color una serie de operaciones adicionales a menudo son tiles.void cvMorphologyEx( const CvArr* src, CvArr* dst, CvArr* temp, IplConvKernel element, int operation, int iterations = 1);El tercer argumento es el temp array, el cual es requerido para algunas de las operaciones.Cuando sea necesario, esta matriz debe ser del mismo tamao que la imagen de origen.El cuarto argumento selecciona la operacin morfolgica que vamos a hacer.

Opening and closingOpening and closing son el resultado de la combinacin de las operaciones de dilatacin y erosin.En el caso de opening, primero erosionamos y luego dilatamos.Opening a menudo se utiliza para contar las regiones en una imagen binaria.Por ejemplo, si nosotros tenemos umbralizada una imagen de clulas en un microscopio, podramos utilizar opening para seleccionar las clulas que estn cerca uno del otro antes de contar las regiones.En el caso de closing, primero dilatamos y luego erosionamos.Closing es usado en la mayora de los algoritmos de componentes conectados ms sofisticados para reducir segmentos no deseados o segmentos de ruido impulsado.Para componentes conectados, usualmente primero es realizada una operacin de erosin o closing para eliminar elementos que se originan puramente del ruido, y luego una operacin de opening es usada para conectar grandes regiones cercanas.

Morphological gradientgradient(src) = dilate(src)erode(src)El efecto de esta operacin en una imagen binaria sera simplemente para aislar permetros de manchas existentes.Morphological gradient es usado a menudo cuando queremos aislar los permetros de las regiones brillantes, para que podamos tratarlos como objetos enteros (o partes de la totalidad de objetos).El permetro completo de una regin tiende a ser encontrado porque un modelo expandido se resta de una modelo contrado de la regin, dejando un borde de permetro completo.Esto difiere de calcular un gradiente, que es mucho menos probable que trabajar alrededor de todo el permetro de un objeto.

Top hat and black hatEstos operadores son usados para aislar reas que son, respectivamente, brillantes o ms oscuras que sus vecinos inmediatos. Tu usaras estas cuando trates de aislar partes de un objeto que exhibe cambios de brillo relativo slo para el objeto al que estn unidos.Por ejemplo, esto muchas veces ocurre con imgenes de microscopio de organismos o clulas.

TopHat(src) = srcopen(src)BlackHat(src) = close(src)srcresize