Saltar al pie de página
AYUDA DE PYTHON

scikit-image Python (Cómo Funciona: Una Guía para Desarrolladores)

Scikit-image es una colección de algoritmos diseñados para el procesamiento de imágenes en Python. Está disponible de forma gratuita y sin restricciones, con código de alta calidad y revisado por pares de una comunidad activa de voluntarios. El proyecto Scikit-image comenzó en Google en 2009 como parte del programa Google Summer Code bajo la tutela de Stefan van der Walt y otros colaboradores de Scikit-image. Tenía como objetivo crear una biblioteca de Python para el procesamiento de imágenes que fuera fácil de usar, eficiente y extensible para aplicaciones académicas e industriales. En este artículo, aprenderemos sobre la biblioteca de imágenes Scikit-image en Python y una biblioteca de generación de PDF de Iron Software llamada IronPDF.

Empezando

Para aprender sobre Scikit-image, visita el sitio web oficial. Además, Data Carpentry ofrece una excelente lección sobre procesamiento de imágenes en Python usando Scikit.

Instalación mediante pip

  • Asegúrate de tener Python instalado (al menos la versión 3.10).
  • Abre tu terminal o símbolo del sistema.

    • Actualiza pip:
    python -m pip install -U pip
    python -m pip install -U pip
    SHELL
    • Instala scikit-image a través de pip:
    python -m pip install -U scikit-image
    python -m pip install -U scikit-image
    SHELL
    • Para acceder a conjuntos de datos de demostración, usa:
    python -m pip install -U scikit-image[data]
    python -m pip install -U scikit-image[data]
    SHELL
    • Para obtener paquetes científicos adicionales, incluidas las capacidades de procesamiento paralelo:
    python -m pip install -U scikit-image[optional]
    python -m pip install -U scikit-image[optional]
    SHELL

Ejemplo básico

import skimage.io
import matplotlib.pyplot as plt

# Load an image from file
image = skimage.io.imread(fname='land.jpg')

# Display the image
plt.imshow(image)
plt.show()
import skimage.io
import matplotlib.pyplot as plt

# Load an image from file
image = skimage.io.imread(fname='land.jpg')

# Display the image
plt.imshow(image)
plt.show()
PYTHON

Filtros

import skimage as ski

# Load a sample image from the scikit-image default collection
image = ski.data.coins()

# Apply a Sobel filter to detect edges
edges = ski.filters.sobel(image)

# Display the edges
ski.io.imshow(edges)
ski.io.show()
import skimage as ski

# Load a sample image from the scikit-image default collection
image = ski.data.coins()

# Apply a Sobel filter to detect edges
edges = ski.filters.sobel(image)

# Display the edges
ski.io.imshow(edges)
ski.io.show()
PYTHON

Scikit-image, a menudo abreviado como skimage, es una poderosa biblioteca de Python para tareas de procesamiento de imágenes. Está construida sobre matrices NumPy, SciPy y matplotlib, y proporciona varias funciones y algoritmos para manipular y analizar imágenes. skimage.data.coins() se utiliza para acceder a imágenes de muestra de la biblioteca. skimage.filters proporciona acceso a filtros integrados y funciones de utilidad.

Características principales de Scikit-image

1. Filtrado de imágenes y detección de bordes

from skimage import io, filters

# Load an image
image = io.imread('image.jpg')

# Apply Gaussian blur
blurred_image = filters.gaussian(image, sigma=1.0)

# Apply Sobel edge detection
edges = filters.sobel(image)

# Display the original image, blurred image, and edges
io.imshow_collection([image, blurred_image, edges])
io.show()
from skimage import io, filters

# Load an image
image = io.imread('image.jpg')

# Apply Gaussian blur
blurred_image = filters.gaussian(image, sigma=1.0)

# Apply Sobel edge detection
edges = filters.sobel(image)

# Display the original image, blurred image, and edges
io.imshow_collection([image, blurred_image, edges])
io.show()
PYTHON

Resultado

scikit-image Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 1 - Salida de Filtrado de Imágenes y Detección de Bordes

2. Extracción de características con HOG (histograma de gradientes orientados)

from skimage import io, color, feature

# Load an example image and convert to grayscale
image = io.imread('image.jpg')
gray_image = color.rgb2gray(image)

# Compute HOG features and visualize them
hog_features, hog_image = feature.hog(gray_image, visualize=True)

# Display the original image and the HOG image
io.imshow_collection([image, gray_image, hog_image])
io.show()
from skimage import io, color, feature

# Load an example image and convert to grayscale
image = io.imread('image.jpg')
gray_image = color.rgb2gray(image)

# Compute HOG features and visualize them
hog_features, hog_image = feature.hog(gray_image, visualize=True)

# Display the original image and the HOG image
io.imshow_collection([image, gray_image, hog_image])
io.show()
PYTHON

Resultado

scikit-image Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 2 - Salida de Extracción de Características

3. Transformación geométrica - Cambio de tamaño y rotación

from skimage import io, transform

# Load an image
image = io.imread('image.jpg')

# Resize image by dividing its dimensions by 2
resized_image = transform.resize(image, (image.shape[0] // 2, image.shape[1] // 2))

# Rotate image by 45 degrees
rotated_image = transform.rotate(image, angle=45)

# Display the original image, resized image, and rotated image
io.imshow_collection([image, resized_image, rotated_image])
io.show()
from skimage import io, transform

# Load an image
image = io.imread('image.jpg')

# Resize image by dividing its dimensions by 2
resized_image = transform.resize(image, (image.shape[0] // 2, image.shape[1] // 2))

# Rotate image by 45 degrees
rotated_image = transform.rotate(image, angle=45)

# Display the original image, resized image, and rotated image
io.imshow_collection([image, resized_image, rotated_image])
io.show()
PYTHON

Resultado

scikit-image Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 3 - Salida de Transformación Geométrica

4. Desnaturalización de imágenes con filtro de variación total

from skimage import io, restoration

# Load a noisy image
image = io.imread('image.jpg')

# Apply total variation denoising
denoised_image = restoration.denoise_tv_chambolle(image, weight=0.1)

# Display the noisy image and the denoised image
io.imshow_collection([image, denoised_image])
io.show()
from skimage import io, restoration

# Load a noisy image
image = io.imread('image.jpg')

# Apply total variation denoising
denoised_image = restoration.denoise_tv_chambolle(image, weight=0.1)

# Display the noisy image and the denoised image
io.imshow_collection([image, denoised_image])
io.show()
PYTHON

Salida

scikit-image Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 4 - Salida de Eliminación de Ruido de Imágenes

Puedes encontrar más sobre procesamiento de imágenes y matrices NumPy en la página oficial.

Presentamos IronPDF

scikit-image Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 5 - IronPDF: La Biblioteca PDF de Python

IronPDF es una robusta biblioteca de Python diseñada para manejar la creación, edición y firma de documentos PDF utilizando HTML, CSS, imágenes y JavaScript. Prioriza la eficiencia del rendimiento y opera con un uso mínimo de memoria. Las características clave son:

  • Conversión de HTML a PDF: Convierte archivos HTML, cadenas HTML y URLs en documentos PDF, aprovechando capacidades como la renderización de páginas web usando el motor de renderizado de PDF de Chrome.

  • Soporte Multiplataforma: Compatible con Python 3+ en Windows, Mac, Linux y varias plataformas en la nube. IronPDF también está disponible para entornos .NET, Java, Python y Node.js.

  • Edición y Firma: Personaliza las propiedades de PDF, aplica medidas de seguridad como contraseñas y permisos, y aplica firmas digitales sin problemas.

  • Plantillas y Configuraciones de Página: Crea diseños de PDF con características como encabezados, pies de página, números de página, márgenes ajustables, tamaños de papel personalizados y diseños responsivos.

  • Cumplimiento de Estándares: Se adhiere estrictamente a los estándares de PDF como PDF/A y PDF/UA, garantiza la compatibilidad con codificación de caracteres UTF-8, y maneja hábilmente activos como imágenes, hojas de estilo CSS y fuentes.

Instalación

pip install ironpdf 
pip install scikit-image
pip install ironpdf 
pip install scikit-image
SHELL

Generar documentos PDF con IronPDF y Scikit Image

Prerrequisitos

  1. Asegúrate de que Visual Studio Code esté instalado como editor de código
  2. La versión 3 de Python esté instalada

Para empezar, crearemos un archivo Python para añadir nuestros guiones.

Abre Visual Studio Code y crea un archivo, scikitDemo.py.

Instale las bibliotecas necesarias:

pip install scikit-image
pip install ironpdf
pip install scikit-image
pip install ironpdf
SHELL

Luego añade el siguiente código en Python para demostrar el uso de los paquetes IronPDF y scikit-image en Python.

from skimage import io, filters
from ironpdf import * 

# Apply your license key
License.LicenseKey = "YOUR_LICENSE_KEY"

# Load an image
image = io.imread('image.jpg')

# Apply Gaussian blur
blurred_image = filters.gaussian(image, sigma=1.0)

# Apply Sobel edge detection
edges = filters.sobel(image)

# Save the results to a file
io.imshow_collection([image, blurred_image, edges]).savefig('ironPdf-skimage.png')

# Convert the saved image to a PDF document
ImageToPdfConverter.ImageToPdf("ironPdf-skimage.png").SaveAs("ironPdf-skimage.pdf")

# Display the images
io.show()
from skimage import io, filters
from ironpdf import * 

# Apply your license key
License.LicenseKey = "YOUR_LICENSE_KEY"

# Load an image
image = io.imread('image.jpg')

# Apply Gaussian blur
blurred_image = filters.gaussian(image, sigma=1.0)

# Apply Sobel edge detection
edges = filters.sobel(image)

# Save the results to a file
io.imshow_collection([image, blurred_image, edges]).savefig('ironPdf-skimage.png')

# Convert the saved image to a PDF document
ImageToPdfConverter.ImageToPdf("ironPdf-skimage.png").SaveAs("ironPdf-skimage.pdf")

# Display the images
io.show()
PYTHON

Explicación del código

Este fragmento de código demuestra cómo usar scikit-image (skimage) e IronPDF juntos para procesar una imagen y convertir los resultados en un documento PDF. Aquí hay una explicación de cada parte:

  1. Declaraciones de Importación: Importa funciones necesarias de scikit-image para carga de imágenes y filtrado de imágenes, e importa funcionalidad de IronPDF.

  2. Aplicación de Clave de Licencia: Establece la clave de licencia para IronPDF. Este paso es necesario para usar las funcionalidades de IronPDF.

  3. Carga y Procesamiento de una Imagen: Carga una imagen llamada 'image.jpg' usando la función io.imread de scikit-image. Luego aplica un desenfoque Gaussiano a la imagen cargada usando filters.gaussian con un valor de sigma de 1.0, y aplica detección de bordes Sobel a la imagen cargada usando filters.sobel.

  4. Mostrar y Guardar Resultados: io.imshow_collection([image, blurred_image, edges]).savefig('ironPdf-skimage.png'): Guarda una colección de imágenes (original, desenfocada, y bordes) como 'ironPdf-skimage.png'.

  5. Convertir Imagen a PDF: ImageToPdfConverter.ImageToPdf("ironPdf-skimage.png").SaveAs("ironPdf-skimage.pdf"): Convierte la imagen PNG guardada en un documento PDF usando la funcionalidad de IronPDF.

  6. Mostrar las Imágenes: io.show(): Muestra las imágenes en una ventana gráfica.

Este fragmento de código combina las capacidades de scikit-image para el procesamiento de imágenes y IronPDF para convertir imágenes procesadas en documentos PDF. Demuestra cómo cargar una imagen, aplicar desenfoque Gaussiano y detección de bordes Sobel, guardarlas como un archivo PNG, convertir el PNG a PDF usando IronPDF y mostrar las imágenes procesadas. Esta integración es útil para tareas donde las imágenes necesitan ser procesadas, analizadas y documentadas en un formato PDF, como en investigación científica, informes de análisis de imágenes, o flujos de trabajo automatizados de generación de documentos.

Resultado

scikit-image Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 6 - Imágenes de Entrada

PDF

scikit-image Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 7 - Salida de PDF

Licencia de IronPDF

IronPDF funciona con una clave de licencia para Python. IronPDF para Python ofrece una licencia de prueba gratuita para permitir a los usuarios verificar sus amplias funciones antes de la compra.

Coloca la clave de licencia al inicio del guión antes de usar el paquete IronPDF:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "YOUR_LICENSE_KEY"
from ironpdf import * 
# Apply your license key
License.LicenseKey = "YOUR_LICENSE_KEY"
PYTHON

Conclusión

scikit-image empodera a los desarrolladores de Python para abordar eficientemente tareas relacionadas con imágenes. Ya sea que estés trabajando en visión por computadora, imágenes médicas o proyectos artísticos, este paquete te tiene cubierto. scikit-image es una biblioteca versátil y poderosa para el procesamiento de imágenes en Python, ofreciendo una amplia gama de funciones y algoritmos para tareas como filtrado, segmentación, extracción de características, y transformaciones geométricas. Su integración perfecta con otras bibliotecas científicas la convierte en una opción preferida para investigadores, desarrolladores e ingenieros que trabajan con análisis de imágenes y aplicaciones de visión por computadora.

IronPDF es una biblioteca de Python que facilita la creación, edición y manipulación de documentos PDF dentro de aplicaciones de Python. Ofrece características como generar archivos PDF desde diversas fuentes como HTML, imágenes o PDFs existentes. Además, IronPDF soporta tareas como fusionar o dividir documentos PDF, añadir anotaciones, marcas de agua o firmas digitales, extraer texto o imágenes de PDFs, y gestionar propiedades de documentos como metadatos y configuraciones de seguridad. Esta biblioteca proporciona una manera eficiente de manejar tareas relacionadas con PDF programáticamente, lo que la hace adecuada para aplicaciones que requieren generación de documentos, creación de informes, o funcionalidades de gestión documental.

Junto con ambas bibliotecas, los usuarios pueden trabajar con imágenes, procesarlas eficientemente y almacenar los resultados en documentos PDF para propósitos de archivo.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más