DeduplicateSimilarImages

Práce s obrázky, optimalizace

Popis

Najde percepčně podobné nepřímé Image XObject, přesměruje jejich reference na deterministický kanonický obrázek a volitelně odstraní duplicitní objekty

Kandidáti musí mít po vyloučení polí kódovaného kontejneru stejný sémantický slovník obrázku, pak projít prahem 64bitového rozdílového hashe a porovnáním 64 × 64 dekódovaných barevných vzorků

Syntaxe

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

Parametry

MaxHashDistanceMaximální Hammingova vzdálenost od 0 do 7 mezi dvěma 64bitovými rozdílovými hashe
MaxMeanErrorMaximální průměrná absolutní rozdílnost kanálu od 0 do 255 napříč dekódovanými vzorky
MaxChannelErrorMaximální absolutní rozdíl od 0 do 255 pro jakýkoli vzorkovaný barevný kanál
OptionsPDF_RESOURCE_DEDUP_DRY_RUN, PDF_RESOURCE_DEDUP_GARBAGE_COLLECT, oba příznaky, nebo 0
StatsPřijímá čítače dekódování, kandidátů, porovnávání, přijatých chyb, referencí, datové části a sběru objektů

Návratové hodnoty

Positive valuePočet podobných obrazových objektů konsolidovaných nebo nahlášených suchým během
0Nenalezen žádný přijatelný pár, není načten žádný dokument, nebo práh či volba je neplatná

Poznámky

Nejnižší číslo objektu a generace v každé přijaté skupině se stane kanonickým obrázkem

/Length, /Filter a /DecodeParms popisují kódované úložiště a mohou se lišit, zatímco rozměry, barevný prostor, bitová hloubka, masky, dekódovací pole, interpolace, volitelný obsah, metadata a další sémantické položky slovníku se musí shodovat

Obrázky, které nelze dekódovat, se přeskočí a počítají se do DecodeFailures

Hash se rozdělí do osmi indexovaných pásem, což ohraničí hledání kandidátů pro podporovaný rozsah vzdáleností, než se porovnají dekódované vzorky

To je záměrně přibližná vizuální operace, protože vzorkuje pevnou mřížku 64 × 64, takže rozdíly menší než vzorkovací mřížka mohou uniknout, i když je každý práh nulový

Použijte DeduplicateResources, když je požadován důkaz na úrovni bajtů, a použijte suchý běh plus GetSimilarImageDeduplicationReportJSON, než zvolíte prahy pro neznámý obsah

Příklad

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

Viz také

GetSimilarImageDeduplicationReportJSON, TPDFlibImageSimilarityDedupStats, DeduplicateResources