DeduplicateSimilarImages

图像处理、优化

说明

查找感知上相似的间接图像 XObject,将其引用重定向到确定性的规范图像,并可选择移除重复对象

候选项必须在排除已编码容器字段后具有相同语义图像字典,然后通过 64 位差异哈希阈值和 64 × 64 解码颜色样本比较

语法

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

参数

MaxHashDistance两个 64 位差异哈希之间的最大汉明距离,范围为 0 至 7
MaxMeanError解码样本中每通道从 0 到 255 的最大平均绝对差
MaxChannelError任意采样颜色通道从 0 到 255 的最大绝对差值
OptionsPDF_RESOURCE_DEDUP_DRY_RUN、PDF_RESOURCE_DEDUP_GARBAGE_COLLECT、两个标志,或 0
Stats接收解码、候选、比较、接受错误、参考、有效负载和对象集合计数器

返回值

Positive value干运行合并或报告的相似图像对象数量
0未找到可接受的配对、未加载文档,或者阈值或选项无效

备注

每个已接受组中最小的对象编号和代号将成为规范图像

/Length、/Filter 和 /DecodeParms 描述编码存储且可能不同,而尺寸、颜色空间、位深度、蒙版、解码数组、插值、可选内容、元数据及其他语义字典条目必须一致

无法解码的图像会被跳过,并计入 DecodeFailures

哈希被拆分为八个索引频带,在比较解码样本前,会将支持距离范围内的候选搜索限制在界内

这是有意采用的近似视觉操作,因为它会采样固定的 64 × 64 网格,即使所有阈值均为零,也可能遗漏小于采样网格的差异

需要字节级精确证明时使用 DeduplicateResources,并在为陌生内容选择阈值前先进行试运行,再使用 GetSimilarImageDeduplicationReportJSON

示例

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