Introducción A La Visión Artificial
Introducción A La Visión Artificial
Introducción A La Visión Artificial
con Python
FREE
FREE
3
Inteligencia
Free artificial © 2018-2020 Actumlogos
La visión artificial, también conocida como visión por por computadora, permite que las computadoras
y las máquinas “vean” y comprendan el mundo que las rodea, y se ha convertido en un campo de
estudio y desarrollo muy importante dentro del ámbito de la IA.
4
Free © 2018-2020 Actumlogos
5
Free © 2018-2020 Actumlogos
¿Qué información hay en esa imagen?
6
Free © 2018-2020 Actumlogos
¿Qué información hay en esa imagen?
7
Free © 2018-2020 Actumlogos
Retos de la visión artificial
La precisión de las aplicaciones de visión por computadora está determinada por qué tan bien se
interpretan las imágenes o videos. Existen varios retos dentro del campo de la visión artificial que
hacer que todo el proceso de interpretación de imágenes sea complejo.
8
Free © 2018-2020 Actumlogos
2.- Puede haber problemas con los sensores de la cámara en condiciones de poca o mala luz. Las
imágenes pueden ser ruidosas o pixeladas.
9
Free © 2018-2020 Actumlogos
Link a la nota
10
Free © 2018-2020 Actumlogos
3.- El mismo objeto puede verse diferente, dependiendo del ángulo desde el que se toma la imagen
11
Free © 2018-2020 Actumlogos
4.- Un objeto en movimiento puede verse diferente durante el movimiento.
12
Free © 2018-2020 Actumlogos
Oportunidades
13
Free © 2018-2020 Actumlogos
14
Free © 2018-2020 Actumlogos
15
Free © 2018-2020 Actumlogos
16
Free © 2018-2020 Actumlogos
17
Free © 2018-2020 Actumlogos
¿Qué es Python?
Python es un lenguaje de scripting orientado a objetos que se lanzó públicamente en 1991. Fue
desarrollado por Guido van Rossum del Instituto Nacional de Investigación de Matemáticas e Informática
en Amsterdam.
Tipado dinámico. No es necesario declarar el tipo de dato de una determinada variable ya que éste se
determinará en tiempo de ejecución y además el tipo de variable puede cambiar si se le asigna un valor
de otro tipo.
19
Free © 2018-2020 Actumlogos
Fuertemente tipado. Una variables de cierto tipo no se puede utilizar como si fuera de un tipo distinto,
es necesario convertir de forma explícita la variable al otro tipo. Existen otros lenguajes de programación
en los que el tipo de la variable cambiaría para adaptarse al comportamiento esperado, lo cual los hace
es propensos a errores.
20
Free © 2018-2020 Actumlogos
Trabajar con Python
1.- Instalar el el intérprete de Python en nuestro equipo, escribir los programas en un editor de texto y
ejecutar los códigos comos scripts.
2.- Utilizar una suite como Anaconda, que permite crear ambientes de instalación aislados y que
incluye una gran cantidad de bibliotecas relacionadas con ciencias de datos.
3.- Utilizar un servicio basado en la nube, como Google Colab lo que permitirá tener varias
herramientas listas, sin necesidad de instalar nada en la computadora.
21
Free © 2018-2020 Actumlogos
Google Colab
Es un entorno interactivo desarrollado por Google que permite ejecutar código en la nube. Entre sus
principales características es que no se requiere ninguna configuración previa, es fácil de compartir y
que incluye gran cantidad de bibliotecas listas para usarse. También ofrece un servicio gratuito,
aunque temporal, para utilizar una tarjeta acelerador de gráficos (GPU).
22
Free © 2018-2020 Actumlogos
Bibliotecas de Python
Para trabajar con visión por computadora, existen muchas bibliotecas que son utilizadas para
desarrollar una gran cantidad de algoritmos relacionados con este campo.
23
Free © 2018-2020 Actumlogos
● OpenCV (Open Source Computer Vision Library). Es la biblioteca libre de visión artificial más
popular y tiene interfaces para trabajar en Python, Java y Matlab. Esta biblioteca se utiliza
ampliamente en empresas, grupos de investigación y organismos gubernamentales.
https://opencv.org
● Numpy. Esta biblioteca permite trabajar con arreglos multidimensionales de alta eficiencia y
diseñados para cálculo científico. Por esa razón OpenCV utiliza esta biblioteca para manipular
las imágenes.
https://numpy.org
● Matplotlib. Esta biblioteca es utilizada para la generación de gráficos a partir en Python
https://matplotlib.org
● TensorFlow. Es una biblioteca de código abierto desarrollada por Google para aprendizaje
automático. Implementa funcionalidad útiles para el entrenamiento de redes neuronales
https://www.tensorflow.org
24
Free © 2018-2020 Actumlogos
¿Que es una imagen?
25
Free © 2018-2020 Actumlogos
Imagen en escala de grises
Una imagen digital en escala de grises de M x N pixeles, se puede representar por una matriz. Si
dicha imagen utiliza 1 byte por píxel, entonces se tienen un total 256 tonalidades, desde 0 (negro)
hasta 255 (blanco).
26
Free © 2018-2020 Actumlogos
Modelo de color RGB
Es uno de los modelos de color más empleados. El modelo Red Green Blue (RGB) se basa en la
estructura del ojo humano, donde todos los colores se ven como combinaciones variables de los tres
colores primarios: rojo, azul y verde. Es un modelo aditivo, ya que la mezcla colores para producir el
blanco.
27
Free © 2018-2020 Actumlogos
Imagenes a color
Las imágenes en color están formadas por una combinación de imágenes individuales (matrices). Por
ejemplo, en el sistema de color RGB, una imagen en color consta de tres imágenes monocromas
individuales, denominadas imágenes primarias (o componentes) rojas (R), verdes (G) y azules (B).
Imagena a color
28
Free © 2018-2020 Actumlogos
Cargar una imagen
Para poder cargar una imagen desde un archivo, se utiliza el método cv2.imread() el cual tiene la
siguiente sintaxis
cv.imread(filename[, flags])
La ruta de la imagen se debe especificar en filename. Por medio del parámetro flags se indica la forma
en que se debe leer la imagen, algunas flags se muestran en la siguiente tabla
flag Descripción
Este método permite leer los principales formatos de imágenes como bmp, jpg, jpeg, png, tif, entre
otras.
Documentacion de
imread 29
Free © 2018-2020 Actumlogos
Un aspecto importante a resaltar, es que el método cv2.imread() toma los canales de color en el orden
BGR, mientras que para mostrar la imagen con la biblioteca matplotlib, es necesario convertirla al orden
RGB, lo cual lo conseguiremos con al método cv2.cvtColor(). Para mostrar las imágenes utilizamos los
métodos plt.imshow() y plt.show()
30
Free © 2018-2020 Actumlogos
Reto 1: En 5 minutos, carga una imagen a calor y muestrala. Posteriormente carga la misma imagen
pero en escala de grises.
Resultado esperado:
Tips:
31
Free © 2018-2020 Actumlogos
Solucion:
32
Free © 2018-2020 Actumlogos
Conversion de RGB a escala de grises
En ocasiones es necesario convertir una imagen en el espacio de color RGB a escala de grises.
Muchos algoritmos de análisis de imágenes trabajan con imágenes a escala de grises porque, aunque
posee menos información, proserva características importantes como lo son bordes, esquinas, formas,
etc.
Esta transformación se puede llevar a cabo realizando un promedio de los valores de cada canal. Sin
embargo, otra forma muy utilizada para esta conversión y la que utiliza OpenCV con el método
cv2.cvtColor() es:
Documentación de
ctvColor 33
Free © 2018-2020 Actumlogos
34
Free © 2018-2020 Actumlogos
Guardar una imagen
También es posible almacenar una imagen que haya sido procesada. Para ello se utiliza el método
cv2.imwrite(), cuya sintaxis es la siguiente
En donde filename especifica el nombre del archivo, img es la imagen a guardar, mientras que params
define los parámetros opcionales de formato de las imágenes.
Documentacion de
imwrite 35
Free © 2018-2020 Actumlogos
Es posible ver cada una de las matrices que representan los colores RGB de una imagen
36
Free © 2018-2020 Actumlogos
Reto 2: En 5 minutos, carga una imagen y separa sus capas de color. Muestra los resultados en una
sola figura.
Resultado esperado:
Tips:
37
Free © 2018-2020 Actumlogos
Solucion:
38
Free © 2018-2020 Actumlogos
Cambiar el tamaño de la imagen
También es posible modificar el tamaño de una imagen. Esto se logra con el método cv2.resize() cuya
sintaxis es la siguiente
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
Parámetro Descripción
dsize [requerido] tamaño deseado de la nueva imagen. Si este parámetro es (0, 0), se calcula como
fx [opcional] Factor de escala a lo largo del eje horizontal. Si este parámetro no es dado, se calcula como
fy [opcional] Factor de escala a lo largo del eje vertical. Si este parámetro no es dado, se calcula como
Tips:
41
Free © 2018-2020 Actumlogos
Solucion:
42
Free © 2018-2020 Actumlogos
¡Plus ultra! ...ir más allá
Ejercicios de Python
43
Free © 2018-2020 Actumlogos
Conclusión Final
● La visión artificial permite identificar e interpretar la información que se encuentra contenida en una
imagen.
● Existen una gran cantidades de bibliotecas de licencia libre que permiten implementar algoritmos
de procesamiento de imágenes y visión por computadora.
● OpenCV es la biblioteca más popular relacionada con el campo de la visión por computadora y que
posee funcionalidades para la manipulación básica de imágenes.
44
Free © 2018-2020 Actumlogos
Glosario
Python: Es un lenguaje interpretado, dinámico y multiplataforma, que soporta orientación a objetos,
programación imperativa y programación funcional.
Imagen digital: Es una función discreta f(x,y) que describe un nivel de intensidad en cada uno de
sus puntos llamados pixeles.
Escala de grises: Es una representación de una imagen en la que cada píxel está representado
por un valor numérico individual que representa su luminancia, y que se extiende entre el blanco y
negro
RGB: Modelo de color que permite representar una imagen como combinación de tres matrices
fundamentales de color rojo, verde y azul.
Método: Dentro del contexto de la programación orientada a objetos, es una funcionalidad que
puede realizar un objeto.
45
Free © 2018-2020 Actumlogos