BRIEF描述子生成算法
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
但是实际上这些特征数据OpenCV在匹配的时候并没有完全利用上,而是通过PCA、LDA等方法对它进行压缩,或者是LSH(局部敏感哈希)方法把这些特征描述子压缩从浮点数转换为二进制字符串,然后通过汉明距离(HammingDistance)进行比较。这样就可以通过简单的异或操作(OXR)与位值计算来加速实现对象特征匹配,对于SSE指令集的CPU这种方法可以大大加速。但是这种方法仍然需要首先计算描述子,然后使用LSH方法进行压缩,无法避免过度的内存开销。
而Brief方法可以直接通过关键点生成二进制字符串,跳过了中间描述子生成步骤,这样就大大减低了内存要求与计算开销。Brief方法主要思路是对每个关键点附件选择若干个像素点,将这些像素点的像素值组合成二进制字符串,然后使用该字符串作为该关键点的描述子。此方法是在2010年提出来的。结果实验测试在选取256个点甚至128个点情况下对没有旋转对象识别率非常高而且速度比SURF还快。但是当对象有旋转时候由于Brief不能很好的支持旋转不变性识别,特别是当旋转角度超过30度以上,准确率会快速下降。
Brief描述子生成首先需要产生足够多的随机点对,然后根据随机点对坐标得到对应像素值,对所有点对进行二进制字符串拼接,拼接完成即生成了描述子。
第一步
选择关键点周围SxS大小正方形图像区块,进行高斯模糊。这样做的原因是需要降低图像随机噪声,OpenCV在完成Brief的时候考虑到效率问题并没有采用高斯模糊而是采用了基于积分图的盒子模糊方法。
第二步
选择n个像素点对,其中n的取值常见为256、此外还可以是128、512。每个点对比较像素值输出如下。
对N个点对完成操作最终得到了二进制字符串,表达如下:
高斯模糊比较
通过实验对比高斯sigma参数在0~3之间准确率比较高,窗口大小取值在9x9取得比较好的模糊去噪效果。论文中实验结果图示如下:
随机点生成方法比较
对于随机生成点对的方法,论文中给出了五种随机方法与实验结果比较,五种方法描述如下:
图示如下:
对图像五个几何采样完成测试结果如下:
其中两张输入图像
最终运行效果图如下:
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~