core/pre_processing library

Biblioteca de pré-processamento de imagens para modelos de visão computacional.

Fornece utilitários para:

  • converter entre ui.Image e bytes (PNG),
  • redimensionar e normalizar imagens para entrada de modelos (TensorData),
  • reconstruir imagens a partir de TensorData.

A classe PreProcessing assume o layout de tensor NCHW (1, 3, H, W) com dtype float32 e normalização ImageNet (mean = 0.485, 0.456, 0.406, std = 0.229, 0.224, 0.225). Os canais estão em ordem RGB e os valores de pixel são normalizados para a faixa 0–1 antes da aplicação da normalização ImageNet.

Exemplo de uso:

// Converter ui.Image para TensorData pronto para inferência:
final bytes = await PreProcessing.fromUiImage(myUiImage);
final tensor = await PreProcessing.toTensorData(bytes, targetWidth: 640, targetHeight: 640);

// Reconstruir PNG a partir de TensorData (desfaz a normalização ImageNet):
final pngBytes = await PreProcessing.fromTensorData(tensor);
final uiImage = await PreProcessing.toUiImage(pngBytes);

Comportamento e erros:

  • fromUiImage: retorna Uint8List em formato PNG; lança Exception se a conversão falhar.
  • toUiImage: decodifica bytes em ui.Image; lança Exception se a decodificação falhar.
  • toTensorData:
    • redimensiona a imagem para targetWidth, targetHeight,
    • normaliza usando ImageNet e produz TensorData com shape 1, 3, H, W e TensorType.float32,
    • lança Exception se a imagem não puder ser decodificada ou se o tamanho dos dados for incompatível.
  • fromTensorData: reconstrói PNG a partir de TensorData assumindo layout 1,3,H,W e normalização ImageNet; lança Exception se o formato do tensor for inconsistente.

Observações de integração:

  • Ajuste targetWidth/targetHeight conforme exigido pelo seu modelo.
  • Se o modelo usar BGR, escala 0–255 diretamente ou outro layout (NHWC), adapte as funções de pré-processamento.

Classes

PreProcessing