【发布时间】:2017-02-19 03:09:20
【问题描述】:
我在图像上运行一个滑动窗口(类似于卷积核)并提取每个窗口的均值/颜色直方图。但是,由于数据的维度非常高,我希望将其作为签名进行散列,因此我可以通过聚合窗口来执行近似的最近邻图像搜索。
>>> 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,但不确定它们是否适合我的用例。有什么建议吗?
【问题讨论】:
-
没有流行的(设计上与您想要的相反)!您需要一些感知散列或局部保留散列。但是大多数用于图像的图像都会以未触及的图像开始(意思是:您作为第一步所做的事情不是他们设计的一部分)。另一个评论(来自非专家):滑动窗口看起来很大(将无法掌握可以说是最重要概念的边缘)在你的情况下做任何好事。
-
你指的是哪一个?是否可以调整感知散列或局部散列以生成“本地”描述符?
-
没有。它们通常用作完整图像的散列。 Hash(a), Hash(b) -> 哈希遵循一些度量(例如在欧几里得空间)行为,因此基于聚类的方法可以使用这些。
-
您不能根据图像中的 x/y 位置将哈希值存储到 2-dim 数组中吗?或者完全跳过哈希并只存储信息?我想我错过了你想要实现的部分目标。
-
检查OpenCV FLANN,其中包含非常适合您的目的的算法集合。
标签: algorithm image-processing hash knn