Processamento de Imagens em Python — Guia Herez (Parte 3)

Processamento de Imagens em Python — Parte 3 da série Herez

Visão geral: esta é a terceira publicação da série Herez sobre bibliotecas Python. Aqui detalhamos OpenCV, Mahotas, scikit-image, pgmagick e SimpleITK, com exemplos práticos usados em projetos reais por Herez. Esses exemplos e outros projetos estão disponíveis nos repositórios GitHub e GitLab da Herez.

Publicado por em

Como usar este post

Cada seção traz: descrição, por que usar, instalação, exemplo prático e contexto de projeto. Os trechos de código são reproduzíveis e foram aplicados em projetos reais da Herez; os repositórios contêm notebooks e pipelines completos.


Resumo rápido

Biblioteca Função principal Quando usar
OpenCVVisão computacional e processamento em tempo realDetecção, tracking, transformações e pipelines de CV
MahotasOperações de imagem rápidas em C++Filtragem, morfologia e extração de features
scikit-imageAlgoritmos de processamento e análise de imagemSegmentação, filtros e transformadas científicas
pgmagickBindings para GraphicsMagickManipulação avançada e conversão de imagens
SimpleITKProcessamento de imagens médicasRegistro, segmentação e análise volumétrica

Bibliotecas detalhadas com exemplos reais

OpenCV

O que é: biblioteca abrangente para visão computacional e processamento de imagens, otimizada para desempenho e uso em tempo real.

Por que usar: algoritmos prontos para detecção de objetos, reconhecimento facial, transformações geométricas, calibração de câmeras e tracking; integração direta com C++/Python para produção.

# Instalação
pip install opencv-python
Exemplo prático (detecção de bordas e contornos)
import cv2
img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)
blur = cv2.GaussianBlur(img, (5,5), 0)
edges = cv2.Canny(blur, 50, 150)
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (255,0,0), 2)
cv2.imwrite('contours.jpg', img)

Contexto Herez: usado em projeto de inspeção visual para detectar defeitos em peças industriais; pipeline em produção disponível nos repositórios Herez.

Mahotas

O que é: biblioteca de processamento de imagens com implementações em C++ para desempenho, oferecendo filtros, morfologia e extração de features.

# Instalação
pip install mahotas
Exemplo prático (extração de features Haralick)
import mahotas as mh
import numpy as np
img = mh.imread('input.png', as_grey=True)
textures = mh.features.haralick(img).mean(axis=0)
print('Haralick features:', textures)

Contexto Herez: extração de descritores para classificação de texturas em imagens de satélite; versão otimizada em C++ integrada ao pipeline de análise.

scikit-image

O que é: coleção de algoritmos de processamento e análise de imagem em Python, com foco em clareza e integração com NumPy/SciPy.

# Instalação
pip install scikit-image
Exemplo prático (segmentação por Otsu e remoção de ruído)
from skimage import io, filters, morphology
img = io.imread('input.jpg', as_gray=True)
denoised = filters.gaussian(img, sigma=1)
th = filters.threshold_otsu(denoised)
mask = denoised > th
clean = morphology.remove_small_objects(mask, min_size=500)
io.imsave('segmented.png', clean.astype('uint8')*255)

Contexto Herez: usado em projetos de análise de imagens biológicas para segmentar células; notebooks com experimentos estão nos repositórios Herez.

pgmagick

O que é: bindings Python para GraphicsMagick, permitindo manipulação avançada de imagens, conversão de formatos e operações de alta qualidade.

# Instalação (pode requerer dependências do sistema)
pip install pgmagick
Exemplo prático (redimensionamento e otimização para web)
from pgmagick import Image
img = Image('input.tif')
img.resize('800x600')
img.quality(85)
img.write('output.jpg')

Contexto Herez: pipeline de geração de thumbnails e otimização de imagens para portais de conteúdo; scripts de conversão em lote disponíveis nos repositórios Herez.

SimpleITK

O que é: toolkit focado em imagens médicas, com suporte a DICOM, registro, segmentação e análise volumétrica; projetado para pesquisa e aplicações clínicas.

# Instalação
pip install SimpleITK
Exemplo prático (registro rígido entre duas imagens médicas)
import SimpleITK as sitk
fixed = sitk.ReadImage('fixed.nii')
moving = sitk.ReadImage('moving.nii')
initial_transform = sitk.CenteredTransformInitializer(fixed, moving, sitk.Euler3DTransform())
registration = sitk.ImageRegistrationMethod()
registration.SetMetricAsMeanSquares()
registration.SetOptimizerAsRegularStepGradientDescent(learningRate=1.0, minStep=1e-6, numberOfIterations=200)
registration.SetInitialTransform(initial_transform, inPlace=False)
final_transform = registration.Execute(fixed, moving)
resampled = sitk.Resample(moving, fixed, final_transform, sitk.sitkLinear, 0.0, moving.GetPixelID())
sitk.WriteImage(resampled, 'registered.nii')

Contexto Herez: aplicado em projeto de análise de imagens médicas para alinhar séries temporais; pipelines e exemplos clínicos estão documentados nos repositórios Herez.


Comparação prática e recomendações Herez

Critério OpenCV scikit-image Mahotas pgmagick SimpleITK
FocoVisão computacionalPesquisa e algoritmosDesempenho C++Manipulação/GraphicsMagickImagens médicas
DesempenhoAltoMédioAltoMédioAlto (volumétrico)
Curva de aprendizadoMédiaBaixa a médiaMédiaMédiaMédia
Ideal paraTempo real e produçãoPrototipagem científicaOperações intensivas em CPUConversão e qualidadePesquisa clínica e diagnóstico

Boas práticas Herez

  • Combine ferramentas: use OpenCV para etapas em tempo real e scikit-image/Mahotas para análise científica e extração de features.
  • Ambientes isolados: crie ambientes virtuais (venv ou conda) e registre versões em requirements.txt para reprodutibilidade.
  • Documente dependências nativas: automatize instalação de bibliotecas do sistema para pgmagick e SimpleITK no CI.
  • Valide com métricas: use IoU, Dice, PSNR e SSIM para avaliar qualidade antes de produção.
  • Repositórios Herez: exemplos completos, notebooks e pipelines usados em projetos reais por Herez estão disponíveis nos repositórios GitHub e GitLab da Herez.
Dica Herez: comece prototipando com scikit-image e OpenCV; quando a performance for crítica, migre partes para Mahotas ou implementações C++ e mantenha testes automatizados para garantir qualidade.

Próximo post da série

No próximo artigo cobriremos bibliotecas Python para Web Scraping, com exemplos práticos, estratégias de coleta ética e pipelines para transformar dados brutos em insights.