DeduplicateSimilarImages

Manipulação de imagens, Otimização

Descrição

Localiza image XObjects indiretos perceptualmente semelhantes, redireciona suas referências para uma imagem canônica determinística e, opcionalmente, remove os objetos duplicados

Candidates must have the same semantic image dictionary after excluding encoded-container fields, then pass a 64-bit difference-hash threshold and a 64 × 64 decoded colour-sample comparison

Sintaxe

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

MaxHashDistanceDistância de Hamming máxima, de 0 a 7, entre os dois difference hashes de 64 bits
MaxMeanErrorDiferença média absoluta máxima de canal, de 0 a 255, entre as amostras decodificadas
MaxChannelErrorDiferença absoluta máxima, de 0 a 255, para qualquer canal de cor amostrado
OptionsPDF_RESOURCE_DEDUP_DRY_RUN, PDF_RESOURCE_DEDUP_GARBAGE_COLLECT, ambos os sinalizadores, ou 0
StatsRecebe contadores de decodificação, candidatos, comparação, erros aceitos, referências, payload e coleta de objetos

Valores retornados

Valor positivoO número de objetos de imagem semelhantes consolidados ou relatados por um dry run
0Nenhum par aceitável foi encontrado, nenhum documento está carregado, ou um limite ou opção é inválido

Observações

O menor número de objeto e geração de cada grupo aceito se torna a imagem canônica

/Length, /Filter, and /DecodeParms describe encoded storage and may differ, while dimensions, colour space, bit depth, masks, decode arrays, interpolation, optional content, metadata, and other semantic dictionary entries must match Images that cannot be decoded are skipped and counted in

Imagens que não podem ser decodificadas são ignoradas e contadas em DecodeFailures

O hash é dividido em oito bandas indexadas, o que limita a busca por candidatos na faixa de distância suportada antes que as amostras decodificadas sejam comparadas

Esta é uma operação visual intencionalmente aproximada porque amostra uma grade fixa de 64 × 64, então diferenças menores que a grade de amostragem podem passar despercebidas mesmo com todos os limites em zero

Use DeduplicateResources quando prova byte a byte for necessária, e use um dry run mais GetSimilarImageDeduplicationReportJSON antes de escolher limites para conteúdo desconhecido

Exemplo

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

Veja também

GetSimilarImageDeduplicationReportJSON, TPDFlibImageSimilarityDedupStats, DeduplicateResources