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, We TensorType.float32, - lança Exception se a imagem não puder ser decodificada ou se o tamanho dos dados for incompatível.
- redimensiona a imagem para
- fromTensorData: reconstrói PNG a partir de TensorData assumindo layout
1,3,H,We 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.