DeduplicateSimilarImages

Обработка изображений, оптимизация

Описание

Находит перцептивно похожие косвенные XObjects изображений, перенаправляет их ссылки на детерминированный канонический образ и по желанию удаляет дубликаты

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

Синтаксис

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

Параметры

MaxHashDistanceМаксимальное расстояние Хэмминга от 0 до 7 между двумя 64-битными хешами различий
MaxMeanErrorМаксимальная средняя абсолютная разница каналов от 0 до 255 по декодированным сэмплам
MaxChannelErrorМаксимальная абсолютная разница от 0 до 255 по любому сэмплированному цветовому каналу
OptionsPDF_RESOURCE_DEDUP_DRY_RUN, PDF_RESOURCE_DEDUP_GARBAGE_COLLECT, оба флага или 0
StatsПолучает счетчики декодирования, кандидатов, сравнения, допустимых ошибок, ссылок, полезной нагрузки и сборки объектов

Возвращаемые значения

Положительное значениеЧисло схожих объектов изображений, консолидированных или сообщенных пробным запуском
0Приемлемая пара не найдена, документ не загружен либо порог или опция недопустимы

Примечания

Минимальные номер объекта и поколение в каждой принятой группе становятся каноническим изображением

/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

Изображения, которые не удается декодировать, пропускаются и учитываются в DecodeFailures

Хеш разбивается на восемь индексированных полос, что ограничивает поиск кандидатов для поддерживаемого диапазона расстояний до сравнения декодированных выборок

Это намеренно приближенная визуальная операция: она выбирает фиксированную сетку 64 × 64, поэтому различия меньше ячейки выборки могут быть пропущены, даже если все пороги равны нулю

This is an intentionally approximate visual operation because it samples a fixed 64 × 64 grid, so differences smaller than the sampling grid can be missed even when every threshold is zero Use DeduplicateResources when byte-exact proof is required, and use a dry run plus GetSimilarImageDeduplicationReportJSON before choosing thresholds for unfamiliar content

Пример

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

См. также

GetSimilarImageDeduplicationReportJSON, TPDFlibImageSimilarityDedupStats, DeduplicateResources