我正在做一个附带的项目,它将接受一个源图像,然后使用一组可用的拇指钉图像生成一个图片镶嵌。我有一个可以正常工作的实现(见下面),但我遇到了“大O”问题,试图增加可替换图像的数量。
我目前使用的过程如下:
具体而言,我遇到的问题是,可用的替换图像的数量增加了,比较的数量成倍增长。我目前正在测试25,000张可用的替换图像,在我的笔记本电脑上的4个核心上生成最终图像需要近10分钟。
我的问题是,是否有一种方法可以避免距离计算的数量成倍增长?
我的一个想法是计算每个目标“瓷砖”之间的距离,将它们分成N组,在组内找到一个平均直方图,然后找到与平均直方图最接近的K值。从那里开始,我会回去计算每个组中的瓷砖最接近的匹配值,但是从K最近的图像的一个较小的来源来计算。

发布于 2016-04-13 02:37:31
务实的答案是欺骗。
定义几个总体预测,如“平均R”、“平均G”、“平均B”。在这些投影上预先划分你的图像。对缩略图的每个部分做一个初步评分,这是图像投影和缩略图之间绝对差异的总和。
现在把缩略图扔进堆里,拿出最好的50块。对那50做详细的计算,并选择其中最好的一个。
你可能找不到完美的答案。但你会选一个很好的。每个缩略图所需的工作量都很小。400次你做3次查找,并进行几次比较。只有少数人成功地完成了真正的工作。
https://stackoverflow.com/questions/36587239
复制相似问题