目标
在本章中,将学习
- 理解什么是特征
- 为什么拐角重要等
解释
大多数人都会玩拼图游戏。会得到很多小图像,需要正确组装它们以形成大的真实图像。问题是,你是如何去拼图的?同样地,将相同的理论投影到计算机程序上,以使得计算机也可以玩拼图游戏呢?如果计算机可以玩拼图游戏,为什么不能给计算机提供很多自然风光的真实图像,并告诉计算机将所有这些图像拼接成一个大图像呢?如果计算机可以将多个自然图像缝合在一起,那么如何给建筑物或任何结构提供大量图片并告诉计算机从中创建3D模型呢?
这全都取决于最基本的问题:人们是如何玩拼图游戏?如何将许多杂乱的图像片段排列成一个大的单张图像?如何将许多自然图像拼接到一张图像上?
答案是,在寻找独特的、易于跟踪和比较的特定模板或特定特征。如果我们对这种特征进行定义,可能会发现很难用语言来表达它,但是我们知道它们是什么。如果有人要求你指出一项可以在多张图像中进行比较的良好特征,就可以指出其中一项,这就是为什么即使是小孩也可以玩这些游戏的原因。我们在图像中搜索这些特征,找到它们,在其他图像中寻找相同的特征并将它们对齐。仅此而已。(在拼图游戏中,更多地研究了不同图像的连续性)。所有的这些能力都是我们固有的。
因此,可以将这个基本问题扩展开来,但变得更加具体。这些特征是什么?(答案对于计算机也应该是可以理解的。)
很难说人们如何发现这些特征,因为这已经在我们的大脑中进行了编码。但是,如果深入研究某些图片并搜索不同的模板,我们会发现一些有趣的东西。例如,看以下的图片:
图像非常简单。在图像的顶部,给出了六个小图像块。问题是在原始图像中找到这些补丁的确切位置。你可以找到多少正确的结果?
A和B是平坦的表面,它们散布在很多区域上,很难找到这些补丁的确切位置。
C和D更简单,它们是建筑物的边缘。可以找到一个大概的位置,但是准确的位置仍然很困难。这是因为沿着边缘的每个地方的图案都是相同的。但是,在边缘,情况有所不同。因此,与平坦区域相比,边缘是更好的特征,但不够好(在拼图游戏中比较边缘的连续性很好)。
最后,E和F是建筑物的某些角落,而且很容易被找到。因为在拐角处,无论将此修补程序移动到何处,它的外观都将有所不同。因此,它们可以被视为很好的特征。因此,现在进入更简单(且被广泛使用的图像)以更好地理解。
就像上面一样,蓝色补丁是平坦区域,很难找到和跟踪。无论将蓝色补丁移到何处,它看起来都一样。黑色补丁有一个边缘。如果沿垂直方向(即沿渐变)移动它,则它会发生变化。沿着边缘(平行于边缘)移动,看起来相同。对于红色补丁,这是一个角落。无论将补丁移动到何处,它看起来都不同,这意味着它是唯一的。因此,基本上角落点被认为是图像中的良好特征。(不仅是角落,在某些情况下,斑点也被认为是不错的特征)。
因此,现在回答了这个问题,“特征是什么?”。但是出现了下一个问题。如何找到它们?还是如何找到角落?我们以一种直观的方式回答了这一问题,即寻找图像中在其周围所有区域中移动(少量)变化最大的区域。在接下来的章节中,这将被投影到计算机语言中。因此,找到这些图像特征称为特征检测。
在图像中找到了特征之后,应该能够在其他图像中找到相同的图像。这是如何做到的呢?我们围绕该特征采取一个区域,用自己的语言解释它,例如“上部是蓝天,下部是建筑物的区域,在建筑物上有玻璃等”,而在另一个建筑物中搜索相同的区域图片。基本上,这就是在描述特征。同样,计算机还应该描述特征周围的区域,以便可以在其他图像中找到它。所谓的描述称为特征描述。获得特征及其描述后,可以在所有图像中找到相同的特征并将它们对齐,缝合在一起或进行所需的操作。
因此,可以在OpenCV中寻找不同的算法来查找特征,对其进行描述,进行匹配等操作。