我在图像上运行滑动窗口(类似于卷积内核),并提取每个窗口的均值/颜色直方图。然而,由于数据是非常高维的,我希望将其作为签名进行散列,因此我可以通过聚合窗口来执行近似最近邻图像搜索。
>>> means = cv2.mean(roi) #roi = window
>>> means
(181.12238527002307, 199.18315040165433, 206.514296508391, 0.0)..... => **some numeric hash**哪种哈希算法适用于这种情况?我尝试过Md5和SHA-1,但它们是加密的,可能不适合k-NN。
我读过关于MinHash和SimHash的文章,但不确定它们是否适合我的用例。有什么建议吗?
sliding window image example
发布于 2016-10-28 11:04:42
位置敏感散列(LSH)是一个很好的选择。根据的说法,它适用于在高维空间中执行近似搜索。
在LSH中使用的散列函数的特征是,对于彼此接近的特征向量,它们的冲突概率比对于那些相距较远的的特征向量高。加密哈希函数没有这个属性。使用加密散列,即使特征向量中非常小的更改也会在散列值中产生广泛的更改。
OpenCV FLANN有一个LSH的实现。此外,上述论文的作者还提供了一个实现here。
话虽如此,我建议您在您的数据集上评估OpenCV FLANN中的其他算法,以便选择最好的算法。
关于这些特征,你基本上是在使用对光照非常敏感的颜色信息。可能在您的情况下,照明是不相关的。如果您可以尝试其他功能描述符(SIFT/SURF、ORB、BRIEF等),并使用不同的算法评估它们的性能,效果会更好。
https://stackoverflow.com/questions/39962618
复制相似问题