二进制鲁棒独立基本特征(“BRIEF”)理解

信息处理 计算机视觉 算法 局部特征
2022-01-12 04:30:11

Brief算法中的描述符如何相互匹配?

如何在另一个图像中找到模板图像?我们如何比较描述符?我读过那篇文章,但不明白他们是如何做到的。

他们写道,他们通过使用汉明距离来比较描述符,但是如何实现光照、大小等变化的不变性呢?

1个回答

首先,本文中没有“模板”之类的东西——“模板”这个词在计算机视觉中具有不同的含义。

本文使用的方法相对简单。让我为你分解一下。在使用局部特征执行对象识别、图像匹配、图像拼接和类似其他任务时,您需要做三件重要的事情

第一个重要的事情是检测; 在这一步中,您要检测兴趣点或关键点,这意味着您要选择图像中您认为有趣的局部点(基本上是小块),有很多方法可以做到这一点;本文在这方面没有贡献。但是,他们似乎使用了 SURF 特征检测器和 CenSurE 关键点(如果您想了解更多,可以查看它们,我不会谈论这一步,除了它们使用梯度等特征,这意味着如果您有照片,则不太可能选择天空中间的某个点作为兴趣点,这是因为该点周围的像素都是相同的强度,“忙碌”的事物往往会被选为兴趣点(例如桌子/建筑物的边缘/角落))。

检测完成后,特征描述跟随。你知道图像中的有趣点,现在你想描述它们(基本上你想描述有趣点周围的点/补丁)。SIFT 是一种流行的特征描述符。在这篇论文中,他们提出了一个新的,称为BRIEF。Brief是基于比较的,所以假设我们有一个补丁(50像素×50像素),我们选择两个点并比较两个点的强度,如果第一个点大于第二个点,我们分配值' 1',否则为'0',我们对许多对执行此操作,最终得到一串布尔值。现在最大的问题是“你如何选择这对点?”,在论文中他们解释了 5 种方式,比较相似,我将描述第一种。你所做的是你统一(等概率)从-S/2到S/2中选择一个点,在我们的示例中,我们说补丁大小为 50,因此我们选择 -25 到 25 之间的点。假设 0,0 坐标位于补丁的中心。这是一个例子;

我们要选择第一对,每个点由(X,Y)坐标组成,所以我们统一选择第一个点的X坐标,然后选择第一个点的Y坐标,假设它是(10,-1) ,现在是第二点;我们统一选择第二个点的X坐标,第二个点的Y坐标,假设它是(-2,20),现在我们得到每个点的强度值,看看哪个具有更大的强度值- 如果 first 较大,我们将第一个布尔值分配为“1”,否则,我们分配“0”。我们对很多对都这样做,最终得到一个布尔值向量。

*非常重要的一点:我假设要使其正常工作,您必须在随机生成器之前指定一个种子值。这意味着您要为每个补丁选择相同的值 - 这非常重要,因为当您比较/匹配补丁时,如果没有以完全相同的方式选择它们,整个系统将会崩溃。- 希望当您阅读匹配步骤时这将是有意义的。

因此,我们对检测器检测到的每个兴趣点都执行此操作。对于每个兴趣点,我们将获得一个布尔值向量。


现在要匹配两个图像(第三步;匹配),我们对另一个图像做完全相同的事情,我们检测,然后使用简要描述。例如,假设我们在每张图像中有 10 个兴趣点(如果我们在每张图像中获得 10 个最有趣的点,这总是可以工作的),我们使用 Brief 来描述每个补丁,例如使用 50 对,所以每个图像将被描述为50 个布尔值的 10 个向量。

为了比较这两个图像,我们从第一个图像中找到每个向量与第二个图像中的每个向量的最近邻。我们使用非常快的汉明距离,汉明距离的例子

汉明距离((0, 1, 1), (0, 0, 0)) = 2

汉明距离((0, 1, 1), (0, 1, 1)) = 0

汉明距离((0, 1, 1), (1, 0, 0)) = 3

汉明距离((0, 1, 1), (1, 1, 1)) = 1

基本上有多少错误的对应关系

希望有帮助