En esta unidad usted comprenderá y conocerá las relaciones conceptuales posibles basado en los saberes previos para completar la siguiente unidad. Esto también le permitirá establecer los saberes previos necesarios de todos los saberes de este elemento.
Primero, algunas librerías de Python que nos servirán muchísimo para procesamiento de imágenes, operaciones matemáticas y manejo de estructuras de datos básicas (arreglos multidimensionales).
NumPy: NumPy es una extensión de Python, que le agrega mayor soporte para vectores y matrices, constituyendo una biblioteca de funciones matemáticas de alto nivel para operar con esos vectores o matrices.
OpenCV (cv2): OpenCV es una biblioteca libre de visión artificial originalmente desarrollada por Intel. OpenCV significa Open Computer Vision (Visión Artificial Abierta). Desde que apareció su primera versión en 1999, se ha utilizado en una gran cantidad de aplicaciones y hasta 2020, se la sigue mencionando como la biblioteca más popular de visión artificial. Detección de movimiento, reconocimiento de objetos, reconstrucción 3D a partir de imágenes, son sólo algunos ejemplos de aplicaciones de OpenCV.
Pillow (PIL): Python Imaging Library is a free and open-source additional library for the Python programming language that adds support for opening, manipulating, and saving many different image file formats. It is available for Windows, Mac OS X and Linux.
Matplotlib: Matplotlib es una librería sencilla y comprensiva para crear y visualizar figuras y visualizaciones interactivas en Python.
Inicialemente, comenzamos importando ests librerías en uestro proyecto de Python. Esto, se puede realizar con la directiva "import".
Para cargar imágenes, utilizaremos la función "imread" de la librería de opencv. Para esto, usaremos el operador punto, como si la librería se tratara de un objeto de programa. El resultado, que será una estructura de tipo numpy.array será almacenada en la variable "img". A la función se le entrega la ruta donde se encuentra la imágen, mas el nombre y su extensión. En este caso, abriremos la imágen de Lena.jpg. esta es una imágen ampliamente usada para pruebas en algoritmos de visión artificial.
Finalmente, usaremos la función "imshow" de opencv para mostrar la imágen, y para imprimir las dimensiones de la imágen, usaremos la propiedad "shape" de los objetos numpy.array accediendo a ella a través del operador punto. NOTA: Colab no soporta la función "imshow", por lo que para mostrar las imágenes debemos importar su parche funcional, el cual se llama con la línea "from google.colab.patches import cv2_imshow".
Si por el contrario, se desea cambiar el modo de carga de las imagenes para cargarlas en escala de grises (ojo, no en blanco y negro) basta con cambiar el último parámetro de la función "imread" por 0. Hecho esto, imprimiremos las dimensiones de la imagen otra vez para visualizar los cambios. Esto lo realizaremos de la siguiente manera.
Como es posible ver en las dimensiones de la imágen, las 2 primeras magnitudes (300,400) corresponden al tamaño de las filas y las columnas. La tercera dimensión corresponde al canal de color en 8 bits, por defecto en escala de color RGB. En este caso, el canal 0 corresponde al color azul (B), el canal 1 corresponde al color verde (G) y el canal 2 corresponde al color rojo (R), Por ende, si se modifica el canal 0 a su valor de intensidad máxima (255), se podrá visualizar un cambio significativo en los pixeles de la imagen a un color azul. Esto lo podremos realizar de la siguiente forma.
También es posible hacer recortes o "crops" en la imágen accediendo a los valores de los pixeles directamente. Sólo hace falta recordar que estas imagenes son arreglos multidimensionales, por lo que es posible acceder a los valores de intensidad a través de los indices del arreglo. A continuación, veremos un ejemplo. de cómo imprimir las intensidades de una región pequeña de la imágen.
Podemos seleccionar dinámicamente las regiones de la imágen a las cuales queramos acceder. En este caso, seleccionaremos una region de interes (ROI) como lo es el rostro de Lena. Visualmente, podemos ubicar su rostro entre las filas 100 y 200, y las columnas 180 y 280. Crearemos una matriz adicional (roi) en la que guardaremos la imágen en esos índices. Lo realizamos de esta forma
Otras disposiciones básicas se realizarán durante la clase virtual. Complemente la información aquí y resulva dudas a través del Classroom de la asignatura