Filtro sepia con Python e imageio - Programación para modificar imágenes

Filtro de sepia a imagen con Python

Hoy te enseñaré a aplicar el filtro de sepia a una imagen utilizando programación y manipulación a nivel de pixeles en una imagen usando Python.

No vamos a usar librerías para la transformación, vamos a leer cada nivel de color de cada pixel y transformarlo para tener un filtro sepia.

Todo esto lo haremos recorriendo la matriz de pixeles; al final podremos convertir una imagen a modo sepia con Python.

Requisitos

Necesitas Python y PIP. Cuando tengas pip instala numpy e imageio con: pip install numpy imageio

No es obligatorio usar numpy (pero el ejercicio sí lo requiere, así que lo he usado), basta con imageio para obtener los pixeles de la imagen como una matriz así como lo hice cuando trabajé con esteganografía en Python.

Vamos a trabajar con una imagen BMP pero cualquier imagen que pueda ser convertida a matriz debería funcionar.

Transformando pixel en sepia

Vamos a centrarnos en el título del post: convertir imagen a sepia con Python. En este caso debemos aplicar simples transformaciones matemáticas a cada pixel, quedando así:

  • Sepia rojo = 0.393 ∗ Original rojo + 0.769 ∗ Original verde + 0.189 ∗ Original azul
  • Sepia verde = 0.349 ∗ Original rojo + 0.686 ∗ Original verde + 0.168 ∗ Original azul
  • Sepia azul = 0.272 ∗ Original rojo + 0.534 ∗ Original verde + 0.131 ∗ Original azul

Entonces básicamente es extraer los 3 niveles de color RGB, luego multiplicar, modificar el pixel o bit en cuestión (y luego hacerlo por cada pixel en la imagen) y guardar la imagen.

Nota: existe la posibilidad de que el valor sepia se pase del rango de 255 (recuerda que las BMP tienen niveles de color del 0 al 255) así que si nos pasamos de ese valor debemos modificarlo para que sea 255.

Función en Python

Ahora veamos el código. Simplemente recorremos la fila de pixeles de la imagen; dentro de cada fila recorremos el pixel. En ese pixel extraemos sus niveles de color, hacemos operaciones y guardamos:

Estoy recorriendo la imagen en las líneas 5 y 6, luego extraigo el pixel en la línea 7. Más adelante extraigo los 3 niveles de color en las líneas 8 a 10.

Después hago las operaciones matemáticas para el modo sepia, ajusto los colores por si se pasan del 255 o están bajo 0 en la línea 18 a 22 y asigno el pixel sepia en la línea 23.

Poniendo todo junto

El código Python completo que toma una imagen y le aplica el filtro de sepia queda como se ve a continuación:

Al ejecutarlo y tener la imagen podemos ver que se genera la nueva con el filtro sepia, todo esto hecho por nuestras manos modificando cada pixel:

Filtro sepia con Python e imageio - Programación para modificar imágenes
Filtro sepia con Python e imageio – Programación para modificar imágenes

Para terminar te dejo con más tutoriales de Python en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario