DeduplicateSimilarImages

Manejo de imágenes, optimización

Descripción

Encuentra XObjects de imagen indirectos perceptualmente similares, redirige sus referencias a una imagen canónica determinista y opcionalmente elimina los objetos duplicados

Los candidatos deben tener el mismo diccionario semántico de imagen tras excluir los campos del contenedor codificado, después superar un umbral de hash de diferencia de 64 bits y una comparación de muestras de color decodificadas de 64 × 64

Sintaxis

Function TPDFlib.DeduplicateSimilarImages(
  MaxHashDistance, MaxMeanError, MaxChannelError,
  Options: Integer): Integer; Overload;
Function TPDFlib.DeduplicateSimilarImages(
  MaxHashDistance, MaxMeanError, MaxChannelError,
  Options: Integer;
  Out Stats: TPDFlibImageSimilarityDedupStats): Integer; Overload;

Parámetros

MaxHashDistanceDistancia de Hamming máxima de 0 a 7 entre los dos hashes de diferencia de 64 bits
MaxMeanErrorLa diferencia máxima absoluta media por canal, de 0 a 255, en las muestras decodificadas
MaxChannelErrorDiferencia absoluta máxima de 0 a 255 para cualquier canal de color muestreado
OptionsPDF_RESOURCE_DEDUP_DRY_RUN, PDF_RESOURCE_DEDUP_GARBAGE_COLLECT, ambas marcas o 0
StatsRecibe contadores de decodificación, candidatos, comparación, errores aceptados, referencias, cargas útiles y colecciones de objetos

Valores devueltos

Positive valueEl número de objetos de imagen similares consolidados o informados por una ejecución de prueba
0No se encontró un par aceptable, no hay ningún documento cargado o un umbral u opción no son válidos

Observaciones

El menor número de objeto y generación de cada grupo aceptado se convierte en la imagen canónica

/Length, /Filter y /DecodeParms describen el almacenamiento codificado y pueden diferir, mientras que las dimensiones, el espacio de color, la profundidad de bits, las máscaras, los arreglos de decodificación, la interpolación, el contenido opcional, los metadatos y las demás entradas semánticas del diccionario deben coincidir

Las imágenes que no pueden decodificarse se omiten y se cuentan en DecodeFailures

El hash se divide en ocho bandas indexadas, lo que limita la búsqueda de candidatos para el intervalo de distancia admitido antes de comparar las muestras decodificadas

Esta es una operación visual deliberadamente aproximada porque toma una cuadrícula fija de 64 × 64, por lo que pueden omitirse diferencias menores que la cuadrícula de muestreo incluso cuando todos los umbrales son cero

Use DeduplicateResources cuando se requiera una prueba exacta por bytes y use una ejecución en seco junto con GetSimilarImageDeduplicationReportJSON antes de elegir umbrales para contenido desconocido

Ejemplo

var
  Stats: TPDFlibImageSimilarityDedupStats;
  Merged: Integer;
begin
  Merged:= PDF.DeduplicateSimilarImages(2, 3, 12,
    PDF_RESOURCE_DEDUP_GARBAGE_COLLECT, Stats);
  PDF.SaveToFile('optimised.pdf');
end;

Véase también

GetSimilarImageDeduplicationReportJSON, TPDFlibImageSimilarityDedupStats, DeduplicateResources