#image #signature #vector #similarity #rgb

image-match

导出用于快速图像比较的图像签名

5个版本

0.2.3 2023年7月3日
0.2.2 2023年7月3日
0.2.1 2023年7月3日
0.2.0 2023年7月2日
0.1.0 2023年1月9日

#715图像


用于 simagef

GPL-3.0 许可证

23KB
331

image-match-rs

实现了一种图像匹配算法,该算法由H. Chi Wong、Marshall Bern和David Goldberg在《任何类型的图像的签名》中描述。该算法旨在检测几乎相同的图像,而不是具有相同概念内容的图像。

使用方法

默认情况下,该库提供两个主要功能:`get_buffer_signature(rgba, width)` 和 `cosine_similarity(a, b)`。前者接受一个预处理的`u8`切片,其中每个四元组代表一个像素的8位红色、绿色、蓝色和alpha值,后者计算两个结果向量的相似度。根据源论文和我们在此研究中的实验,相似度大于`0.6`的图像可以被认为是可能的匹配。如果使用下面描述的调整方法,可能还需要进行额外的研究来评估新的截止值。

如果使用`img`功能,还提供了`get_image_signature(image)` 和 `get_file_signature(path)`,它们使用image库将图像解包到rgba缓冲区中。所有签名函数还公开了`tuned`版本,允许调整签名计算期间使用的裁剪百分比、控制生成的特征向量长度的集合网格的大小,以及产生该点值的每个网格点周围的方形大小。建议在开始调整之前仔细研究算法,因为这些参数的影响并不立即明显。

未来工作

  • 单元测试。该库已被手动测试了相当多的次数,但它需要单元测试。
  • 在生成的签名中尝试扩展每个维度的可能值。根据论文,它们目前都是位于[-2, 2]区间的整数。这可能需要围绕新建议的向量相似度阈值进行实验。

依赖项

~0.4–3.5MB
~20K SLoC