互补投影哈希(Complementary Projection Hashing,简称CPH)是一种高效的无监督哈希方法,通过核化映射与互补投影学习,在保持数据局部结构的同时生成紧凑的二进制码。相比传统线性哈希方法,CPH引入高斯核将数据隐式映射到高维空间,再通过线性投影和阈值量化实现快速编码,尤其适合非线性分布的数据集。
本文基于一个简洁高效的MATLAB实现,深入解析CPH的测试(编码)阶段代码,帮助读者理解其在线编码的核心机制和极简设计。
CPH编码流程概述
CPH的编码过程非常轻量,主要包括三个步骤:
使用训练阶段保存的地标点和核参数,将新样本在线核化(online kernelization),得到核空间表示。
减去训练时的均值,进行中心化。
通过学到的投影矩阵进行线性投影,并使用训练时确定的阈值进行二值化,得到最终二进制码。
整个过程无需复杂的优化或迭代,编码速度极快,非常适合实时检索和大批量查询场景。
代码逐步解析
主函数:CPH_compress
tmp_T=tic;开始计时,记录编码耗时。