1. Introducción a la visión por computadora

1.1 Introducción

La visión por computadora es el área de la inteligencia artificial y del procesamiento digital de imágenes que busca que una máquina pueda capturar, analizar, interpretar y comprender información visual. En términos simples, intenta responder una pregunta ambiciosa: ¿cómo hacemos para que una computadora "vea" una imagen o un video y tome decisiones útiles a partir de ellos?

Cuando una persona observa una fotografía puede reconocer casi de inmediato si hay una cara, un automóvil, una fruta o un semáforo. También puede estimar distancias, identificar colores, detectar movimiento y comprender el contexto general de la escena. Para una computadora, en cambio, una imagen no es más que una matriz de números. La visión por computadora se ocupa precisamente de transformar esa matriz numérica en significado.

Este campo combina ideas de matemáticas, álgebra lineal, probabilidad, inteligencia artificial, aprendizaje automático y Deep Learning. En aplicaciones modernas, la visión por computadora se ha convertido en una tecnología central en medicina, seguridad, industria, agricultura, comercio electrónico, vehículos autónomos, robótica y dispositivos móviles.

1.2 Una definición intuitiva

Podemos entender la visión por computadora como el conjunto de técnicas que permiten que un sistema procese contenido visual y responda preguntas sobre ese contenido.

Algunas de esas preguntas pueden ser:

  • ¿Qué objeto aparece en la imagen?
  • ¿Dónde está ubicado ese objeto?
  • ¿Cuántas personas hay en una escena?
  • ¿Se detecta un defecto en una pieza industrial?
  • ¿Hay señales de enfermedad en una radiografía?
  • ¿Qué parte de la imagen corresponde a un peatón, una calle o un vehículo?

En consecuencia, la visión por computadora no consiste solo en "mostrar imágenes" en pantalla. Su objetivo es extraer información útil y convertir lo visual en datos interpretables para automatizar decisiones.

Idea clave: una imagen para la computadora es un conjunto de valores numéricos. La visión por computadora transforma esos valores en descripciones, detecciones, clasificaciones o acciones.

1.3 ¿Qué significa que una máquina vea?

Decimos que una máquina "ve" de forma figurada. No ve como un ser humano, porque no posee percepción consciente ni comprensión natural del mundo. Lo que realmente hace es procesar datos visuales siguiendo algoritmos.

Ese procesamiento puede incluir:

  • Leer una imagen desde un archivo o una cámara.
  • Representarla internamente como una matriz de píxeles.
  • Aplicar transformaciones matemáticas sobre esa matriz.
  • Detectar patrones visuales como bordes, texturas, colores o formas.
  • Usar un modelo entrenado para inferir una respuesta.

Por ejemplo, si una cámara capta una calle, un sistema de visión por computadora puede localizar autos, detectar carriles, reconocer semáforos y calcular riesgos. Todo eso ocurre a partir de operaciones matemáticas sobre imágenes y video.

1.4 Relación entre imagen, información y decisión

La visión por computadora suele formar parte de un pipeline o flujo de trabajo más amplio. Una imagen por sí sola no resuelve nada. Lo importante es cómo se procesa y qué decisión permite tomar.

Etapa Qué ocurre Ejemplo
Captura Se obtiene la imagen desde cámara, video, sensor o archivo. Una cámara industrial fotografía una pieza.
Procesamiento Se limpian, transforman o analizan los píxeles. Se mejora contraste y se detectan bordes.
Interpretación Un algoritmo o modelo infiere significado. Se determina si la pieza tiene una fisura.
Acción El sistema usa el resultado para decidir. La pieza defectuosa se retira de la línea.

Esto muestra que la visión por computadora no es un fin en sí mismo. Es una tecnología que permite pasar de datos visuales a decisiones automatizadas.

1.5 ¿Por qué es un problema difícil?

Para un humano, reconocer un objeto suele parecer trivial. Sin embargo, desde el punto de vista computacional es un problema complejo. Una misma persona puede verse distinta según la iluminación, el ángulo, la distancia, la resolución o el fondo. Un objeto puede estar parcialmente oculto, deformado o rotado. El entorno puede tener ruido, sombras o reflejos.

Eso significa que dos imágenes del mismo objeto pueden tener valores de píxel muy diferentes. Y, al mismo tiempo, dos objetos distintos pueden compartir patrones visuales parecidos. El reto principal consiste en diseñar sistemas capaces de distinguir lo relevante de lo irrelevante.

La visión por computadora debe lidiar con factores como:

  • Cambios de iluminación.
  • Escalas y distancias distintas.
  • Rotaciones y perspectivas.
  • Oclusiones parciales.
  • Fondos complejos.
  • Ruido en sensores o compresión.
  • Gran variabilidad entre ejemplos de una misma clase.

1.6 Visión por computadora tradicional y visión basada en Deep Learning

Durante muchos años, la visión por computadora se apoyó en técnicas clásicas diseñadas manualmente. Un especialista definía reglas y descriptores para detectar bordes, esquinas, texturas, contornos o regiones de interés. Esos métodos siguen siendo útiles y en este curso también los estudiaremos.

Sin embargo, en la última década el Deep Learning cambió profundamente el campo. En lugar de diseñar a mano todas las características visuales, se entrenan modelos capaces de aprender automáticamente representaciones útiles a partir de grandes cantidades de imágenes.

Enfoque Idea principal Fortaleza
Visión clásica El programador define filtros, reglas y descriptores. Control preciso y bajo costo en problemas acotados.
Visión con Deep Learning El modelo aprende características visuales desde datos. Gran capacidad en tareas complejas y datos variados.

La práctica profesional moderna combina ambos mundos. OpenCV, por ejemplo, es muy útil para el procesamiento clásico, mientras que PyTorch permite construir y entrenar modelos profundos para tareas avanzadas.

1.7 Principales tareas de la visión por computadora

Este campo abarca muchos tipos de problemas. Algunas tareas fundamentales son:

  • Clasificación de imágenes: asignar una etiqueta global a toda la imagen, por ejemplo "perro", "gato" o "automóvil".
  • Detección de objetos: localizar y clasificar objetos mediante cajas delimitadoras.
  • Segmentación: identificar píxel a píxel qué región pertenece a cada clase.
  • Reconocimiento facial: detectar rostros e identificar personas.
  • Seguimiento de objetos: mantener la identidad de un objeto a lo largo del tiempo en video.
  • Estimación de pose: encontrar puntos clave del cuerpo humano u otros objetos.
  • Reconstrucción 3D: inferir profundidad o geometría a partir de imágenes.
  • OCR: reconocer texto dentro de imágenes o documentos escaneados.

Cada una de estas tareas requiere técnicas y modelos distintos, pero todas comparten la misma base: convertir información visual en conocimiento accionable.

1.8 Ejemplos cotidianos

Muchas personas usan visión por computadora sin advertirlo. Algunos ejemplos habituales son:

  • El desbloqueo facial del teléfono móvil.
  • Los filtros de cámara que detectan ojos y boca en tiempo real.
  • Las búsquedas por imagen en plataformas web.
  • Los sistemas que leen matrículas o patentes.
  • Los escáneres que digitalizan documentos y detectan texto automáticamente.
  • Las cámaras de seguridad que generan alertas por movimiento o intrusión.

Estos casos muestran que la visión por computadora dejó de ser una tecnología de laboratorio. Hoy está integrada en productos comerciales, procesos industriales y servicios cotidianos.

1.9 Un ejemplo simple para entender el proceso

Supongamos que queremos construir un sistema que determine si una imagen contiene un perro o un gato.

  1. Recolectamos muchas imágenes etiquetadas de perros y gatos.
  2. Las imágenes se convierten en matrices de píxeles.
  3. Aplicamos un preprocesamiento para normalizar tamaño, color o intensidad.
  4. Entrenamos un modelo con esas imágenes.
  5. El modelo aprende patrones como orejas, hocicos, texturas o formas generales.
  6. Cuando recibe una imagen nueva, produce una predicción.
  7. Si el sistema generaliza bien, podrá clasificar imágenes no vistas durante el entrenamiento.

Este ejemplo parece simple, pero resume la lógica de muchísimos sistemas reales de visión por computadora: datos visuales, preprocesamiento, aprendizaje y decisión.

En visión por computadora, aprender no significa memorizar imágenes. Significa descubrir patrones visuales que permitan responder correctamente ante nuevas imágenes.

1.10 Cómo se representa una imagen digital

Para una computadora, una imagen es una estructura numérica. Normalmente se representa como una matriz bidimensional de píxeles si es una imagen en escala de grises, o como una estructura tridimensional si tiene varios canales de color.

Por ejemplo:

  • Una imagen en escala de grises puede verse como una matriz de tamaño alto x ancho.
  • Una imagen RGB puede representarse como alto x ancho x 3.
  • Cada píxel suele tener valores entre 0 y 255 si se usa una codificación de 8 bits por canal.

Cuando un programa procesa una imagen, en realidad opera sobre esos números. Cambiar brillo, rotar, recortar, suavizar, detectar bordes o alimentar una red neuronal significa hacer transformaciones matemáticas sobre matrices.

1.11 El rol del preprocesamiento

Antes de aplicar un algoritmo avanzado, muchas veces es necesario preparar las imágenes. Este paso se llama preprocesamiento y puede influir enormemente en la calidad del resultado.

Algunas operaciones frecuentes son:

  • Redimensionar imágenes para que tengan un tamaño uniforme.
  • Convertir a escala de grises.
  • Normalizar valores numéricos.
  • Reducir ruido mediante filtros.
  • Mejorar contraste o nitidez.
  • Recortar regiones de interés.

En proyectos reales, un mal preprocesamiento puede degradar el rendimiento incluso si el modelo es bueno. Por eso la visión por computadora no es solo elegir una red neuronal: también requiere entender cómo se adquieren y preparan las imágenes.

1.12 ¿Dónde entra OpenCV?

OpenCV es una de las bibliotecas más importantes en visión por computadora. Permite cargar imágenes, capturar video, aplicar transformaciones, detectar bordes, trabajar con filtros, extraer características y realizar muchas operaciones clásicas del área.

Es una herramienta fundamental porque:

  • Facilita el trabajo con imágenes y video en Python.
  • Incluye funciones optimizadas y ampliamente usadas en la industria.
  • Permite combinar procesamiento clásico con modelos de Deep Learning.
  • Es ideal para prototipos, automatización y aplicaciones en tiempo real.

En este curso usaremos OpenCV como base práctica para manipular imágenes antes de pasar a modelos más complejos.

1.13 ¿Dónde entra PyTorch?

Cuando el problema requiere aprendizaje profundo, entra en escena PyTorch. Esta biblioteca permite crear modelos de Deep Learning y entrenarlos con imágenes, tensores y grandes volúmenes de datos.

En visión por computadora, PyTorch se usa para:

  • Construir redes convolucionales.
  • Entrenar clasificadores de imágenes.
  • Aplicar transfer learning con modelos preentrenados.
  • Resolver tareas de detección y segmentación.
  • Usar GPU para acelerar el entrenamiento y la inferencia.

Podemos pensar OpenCV y PyTorch como dos piezas complementarias. OpenCV ayuda a manipular y procesar imágenes. PyTorch ayuda a aprender patrones complejos a partir de ellas.

1.14 Aplicaciones reales

La visión por computadora tiene aplicaciones en muchísimos sectores:

  • Salud: análisis de radiografías, resonancias y estudios histológicos.
  • Industria: inspección automática de calidad y detección de defectos.
  • Seguridad: reconocimiento facial, seguimiento y análisis de cámaras.
  • Automoción: asistencia a la conducción y vehículos autónomos.
  • Agricultura: monitoreo de cultivos, detección de plagas y estimación de madurez.
  • Retail: conteo de productos, análisis de góndolas y cajas automáticas.
  • Documentos: OCR, extracción de datos y validación de identidad.
  • Robótica: navegación, percepción del entorno y manipulación de objetos.

Lo importante es notar que no se trata solo de reconocer objetos. En muchos casos el objetivo es reducir errores, acelerar procesos o permitir decisiones que antes dependían completamente de la intervención humana.

1.15 Desafíos y limitaciones

Aunque los avances han sido enormes, la visión por computadora sigue enfrentando dificultades importantes:

  • Dependencia de datos: si las imágenes de entrenamiento no representan bien el problema, el sistema fallará.
  • Sesgos: un conjunto de datos desequilibrado puede producir decisiones injustas o poco robustas.
  • Ambientes reales complejos: iluminación, clima, movimiento o mala calidad pueden degradar el rendimiento.
  • Costo computacional: algunos modelos son pesados y requieren hardware potente.
  • Interpretabilidad: no siempre es fácil explicar por qué un modelo visual tomó cierta decisión.
  • Generalización: un modelo entrenado en un entorno puede fallar si cambia la cámara, el fondo o el contexto.

Por eso no alcanza con entrenar un modelo y medir su exactitud en laboratorio. También hay que evaluar robustez, eficiencia, sesgo, mantenibilidad y comportamiento en escenarios reales.

1.16 Diferencia entre ver e interpretar

Un punto importante es que no toda tarea visual implica comprensión completa de la escena. Un sistema puede detectar la presencia de un peatón sin comprender el contexto urbano del modo en que lo haría una persona. Puede clasificar una fruta sin "entender" qué es comer o cultivar.

Esto nos recuerda una idea fundamental: la visión por computadora trabaja con patrones estadísticos y estructuras visuales, no con conciencia ni sentido común humano. Aun así, sus resultados pueden ser extremadamente útiles y precisos en tareas bien definidas.

Una máquina no necesita "entender" el mundo como un humano para resolver bien una tarea visual concreta. Necesita aprender patrones suficientemente útiles para tomar la decisión correcta.

1.17 Qué aprenderemos en este curso

El recorrido del curso está diseñado para avanzar desde los fundamentos hasta aplicaciones modernas:

  • Primero estudiaremos qué es una imagen digital, cómo se representa y cómo se manipula en Python.
  • Después trabajaremos con OpenCV para operaciones básicas, transformaciones geométricas, filtrado, bordes e histogramas.
  • Luego introduciremos redes convolucionales y preparación de datasets.
  • Más adelante construiremos clasificadores con PyTorch, aplicaremos transfer learning y usaremos modelos preentrenados como ResNet.
  • Finalmente abordaremos detección de objetos, segmentación, YOLO, Grad-CAM, optimización y deployment.

La idea es que no solo entiendas definiciones, sino que puedas desarrollar una base sólida para construir sistemas reales de visión artificial.

1.18 Qué debes recordar de este tema

  • La visión por computadora busca que las máquinas extraigan significado a partir de imágenes y video.
  • Una imagen digital es, en esencia, una estructura numérica compuesta por píxeles.
  • Las tareas más comunes incluyen clasificación, detección, segmentación, seguimiento y OCR.
  • La visión clásica y el Deep Learning no se excluyen; muchas veces se complementan.
  • OpenCV es clave para procesamiento de imágenes, y PyTorch para aprendizaje profundo.
  • Los mayores desafíos incluyen variabilidad visual, datos de baja calidad, sesgos y costo computacional.

1.19 Conclusión

La visión por computadora es uno de los campos más influyentes y prácticos de la inteligencia artificial moderna. Su objetivo central es convertir información visual en decisiones automáticas útiles. Para lograrlo, combina procesamiento de imágenes, modelado matemático y técnicas de aprendizaje profundo.

Como punto de partida, lo más importante es comprender esta idea: la computadora no ve imágenes como las vemos nosotros; procesa matrices de datos y aprende a reconocer patrones en ellas. A partir de esa base construiremos todo el curso.

En el próximo tema analizaremos la historia y la evolución de la visión artificial para entender cómo llegamos desde técnicas clásicas hasta los sistemas modernos basados en redes neuronales profundas.