Blog
Python posee bibliotecas que permiten de una manera fácil, hacer transformaciones en imágenes. Las imágenes se consideran una parte muy necesaria de los datos en el mundo de hoy. Sin embargo, antes de que las imágenes digitales sean usadas, estas deberán ser analizadas y obtener de ellas toda la información que pueda ser útil.
Procesar las imágenes nos lleva a realizar manipulación como, rotar, voltear, recortar, girar entre otras, algunas partes de las imágenes; así como el reconocimiento de las mismas. Para ello, Python se presenta como una opción muy útil para desempeñar este tipo de tarea. Es decir, el procesamiento de imágenes; motivado a que su popularidad ha tenido gran ascenso en cuanto a lenguaje de programación científica. Aparte, su accesibilidad gratuita a excelentes herramientas que permiten hacer cambios en las imágenes.
En este artículo vamos a hablar sobre varias bibliotecas de Python que se pueden usar para realizar tareas de manipulación o cambios de imágenes. En estas bibliotecas podemos encontrar de forma fácil como transformar imágenes y dar el sentido que se quiera.
Procesar y analizar las imágenes, usualmente se mira como trabajos en matrices con valores bidimensionales. Aun así, existen varios campos donde el análisis de imágenes es de mayor dimensión. Pruebas de estos son las imágenes médicas y las imágenes biológicas. Numpy se adapta de muy buena forma, para estos tipos de aplicaciones, debido a que poseen una naturaleza multidimensional incluida. Los scipy y .ndimage son paquetes que suministran varias funciones relacionadas con el procesamiento y análisis de las imágenes que están diseñadas para funcionar con matrices de dimensión arbitraria. Actualmente, los paquetes contienen funciones para el filtrado lineal y el no lineal, la morfología binaria, interpolación B-spline y mediciones de objetos.
Entre las bibliotecas que fortalecen a Python están:
NumPy
Es de las principales bibliotecas en la programación de Python, la cual proporciona un soporte que nos permite arreglar imágenes. Las imágenes son una matriz N-dimensional muy poderosa y estándar, la cual contiene píxeles de puntos de datos. Por ello, mediante el uso de operaciones numéricas muy básicas se pueden modificar los valores de píxeles en una imagen. Una imagen puede ser cargada con skimage y mostrar con Matplotlib, sin ningún tipo de problema.
NumPy es un paquete necesario para la computación científica con Python. Numpy Contiene:
-Herramientas necesarias para que se integre el código C / C ++ y Fortran. Sus Funciones de difusión son muy sofisticadas y excelentes.
-Tiene la capacidad de usar números aleatorios.
-Puede utilizarse como un eficiente contenedor de datos genéricos.
-Numpy se integra perfectamente con una variedad en sus bases de datos.
-La licencia BSD, le permite con muy pocas restricciones su reutilización.
-Para la instalación de NumPy, es recomendable utilizar una distribución científica de Python.
-NumPy se ha considerado muy útil en el trabajo, empresa, e investigaciones.
-Numpy se utiliza para enmascarar la imagen.
import numpy as np from skimage import data import matplotlib.pyplot as plt %matplotlib inline image = data.camera() type(image) numpy.ndarray #la imagen es vector NumPy: mask = image < 87 image[mask]=255 plt.imshow(image, cmap='gray')
SciPy
Es otro módulo científico de Python, se usa para realizar tareas básicas de modificación y arreglo de imágenes. El Scipy suministra funciones que trabajan en matrices NumPy de ‘n’ dimensiones. En la actualidad, las funciones que cumple son para el filtrado lineal y el no lineal, mediciones de objetos, interpolación B-spline y morfología binaria.
Además, SciPy cumple varias funciones que entre ellas comparten varias propiedades comunes. Particularmente, las funciones ayudan en la especificación de una matriz de salida con el argumento de salida. En forma general, usar el argumento de salida resulta más eficiente, ya que, se usa una matriz que ya existe para guardar el resultado.
Entre las funciones de SciPy están:
-Funciones de filtro ¶correlate1d, convolve1d, gaussian_filter1d, a uniform_filter1d, maximum_filter, generic_filter1d.
from scipy import misc,ndimage face = misc.face() blurred_face = ndimage.gaussian_filter(face, sigma=3) very_blurred = ndimage.gaussian_filter(face, sigma=5) #Resultados plt.imshow(<image to be displayed>)
PIL / Almohada
Es una biblioteca gratis para el lenguaje de programación Python que agrega muchos formatos de archivo de diferentes imágenes. No obstante, su última versión en 2009 ha estado estancada. Pero, existe Pillow, muy fácil de instalar y puede ser ejecutada en cualquier sistema operativo, además es compatible con Python 3. Esta biblioteca tiene imágenes básicas; Almohada es un tenedor PIL.
from PIL import Image,ImageFilter #Leer Imagen im = Image.open('image.jpg') #Mostrar imagen im.show() from PIL import ImageEnhance enh = ImageEnhance.Contrast(im) enh.enhance(1.8).show("30% more contrast")
Scikit -image
Es un paquete de código abierto de Python que funciona con matrices NumPy. Usa algoritmos y se emplea en investigaciones, educación y algunas aplicaciones industriales. Es una biblioteca muy básica y directa. Además Su código es de muy alta calidad, está documentado con suficientes ejemplos y casos de usos prácticos. Gran parte de sus funciones están en los submódulos. Se utiliza para el filtrado de imágenes.
import matplotlib.pyplot as plt %matplotlib inline from skimage import data,filters image = data.coins() # ... o cualquier otro array (arreglo) NumPy. edges = filters.sobel(image) plt.imshow(edges, cmap='gray')
SimpleCV
Es otro código utilizado para crear aplicaciones de vista artificial. Proporciona entrada a diferentes bibliotecas. Su curva de aprendizaje es más pequeña que la de OpenCV. Parte de funcionabilidad de SimpleCV es:
-Los programadores pueden escribir pruebas de visión artificia muy simples
-Las cámaras, los video, las imágenes son todos operables internamente.
-Su documentación es fácil de seguir y contiene y suministra suficientes ejemplos y casos que se pueden seguir.
SimpleITK
Es un sistema de código abierto y plataforma múltiple que suministra a quienes lo desarrollan muchas herramientas de software para que las imágenes se puedan analizar. SimpleITK es una capa simple diseñada sobre ITK, la cual se ha destinado para facilitar el uso de una manera rápida. Está escrito en C++, pero puede ser usado por muchos lenguajes de programación, incluyendo Python.
Existe una gran cantidad de cuadernos que instan al uso de SimpleITK en actividades educativas o investigación. Los cuadernos presentan el uso de SimpleITK en el análisis interactivo de imágenes utilizando los lenguajes Python y R.
Mahotas
Es una biblioteca de visión artificial y acomodo de imágenes para Python. Tiene funciones de procesar imágenes tradicionales, así como, funciones de visión por computadoras modernas. La interfaz está en Python, muy apropiada para el desarrollo rápido, Mahotas es una biblioteca muy rápida con código minimalista. La biblioteca Mahotas se afianza en un código simple para hacer las tareas.
Pgmagick
Es un contenedor que está basado en Python. Su grande y eficiente grupo de herramientas y bibliotecas permite leer, escribir y cambiar imágenes en muchos formatos principales, donde están incluidos DPX, PNG, PDF, PNM GIF, JPEG, JPEG-2000 y TIFF. Se utiliza para la escala de las imágenes y extracciones de los bordes de las imágenes.
Pycairo
Son enlaces de Python para la biblioteca de gráficos Cairo. Esta biblioteca de gráficos 2D, se usa para dibujar gráficos vectoriales. Los gráficos vectoriales no pierden la claridad al realizar cambios en sus tamaños cuando se les cambia el tamaño o cuando se les realiza alguna transformación. Se utiliza cuando se dibujan líneas y degradados radiales.
Todas estas bibliotecas que permiten procesar imágenes son útiles y están disponibles de forma gratuita en Python.
GENIAL PERO CUAL ES EL MAS USADO
Excelente post! Me gustó mucho y me sirve para adentrarme en este tipo de librerías, muchisimas gracias!