【翻译:OpenCV-Python教程】理解特征

⚠️由于自己的拖延症,3.4.3翻到一半,OpenCV发布了4.0.1了正式版,所以接下来是按照4.0.1翻译的。

⚠️除了版本之外,其他还是照旧,Understanding Features,原文

目标

在这一章中,我们将只是尝试理解什么是特征,为什么它们很重要,为什么角很重要等等。

解释

你们多数人都肯定玩过拼图游戏。你有某张图片的一大堆的碎片,你需要把他们正确的整合起来,形成一张真正的大图片。那么问题来了,怎么做呢?把同样的理论应用到电脑程序中,让电脑玩拼图游戏,怎么样?如果电脑会玩拼图游戏,为什么我们不能给电脑一堆真是的美丽风景图,然后让它把他们缝合在一起成一张大图呢?如果计算机能将几张自然图像拼接成一幅,那么给出一堆建筑或任何结构的图片,并让计算机从中创建一个3D模型,会怎么样呢?

好吧,让问题和想象继续。但这完全取决于最基本的问题:你如何玩拼图游戏?如何将大量的图像碎片排列成一个大的单一图像?你怎么去把许多自然图像缝到一张图像上?

答案是,我们要去寻找独特的、易于跟踪的、易于比较的特定模式或特定特性。如果我们非要找个定义来描述这种特征,我们可能会发现很难用语言来表达它,但我们知道它们是什么。如果有人让你指出一个好的特征,可以在多个图像之间进行比较,你却可以指出一个。这就是为什么即使是小孩子也能简单地玩这些游戏。我们在一幅图像中搜索这些特征,找到它们,在其他图像中寻找相同的特征并对齐它们。就是这样。(在拼图游戏中,我们更关注不同图像的连续性)。所有这些能力都是我们与生俱来的。

所以现在,我们的基本问题又多了一个,但却变得更细节了。是这些特征是什么?(你的答案要让计算机也能“听懂”哦。)

很难讲人类到底是咋发现这些特征的。它老早已经在我们脑瓜子里编码好了。但如果我们仔细观察一些图片,搜索不同的特征,我们会发下一些有趣的事情,比方说,如下图:

feature_building.jpg

这图片很简单。在图片上方,给出了六张小的图片碎片。留给你的问题是要在原始图像中找到这些碎片的准确位置。你能找到多少个正确的结果?

A和B是平面,它们分布在很多区域。很难找到这些碎片的确切位置。

而C和D就要简单得多了。它们是建筑的边缘。你可以找到一个近似的位置,但要定出一个确切的点还是要花点功夫。这是因为沿着边缘的模式都是一样的。但在垂直于边缘的方向上,情况就不同了。因此,边缘比平坦区域的特征更好,但还不够好(在拼图中比较边缘的连续性很好)。

最后,E和F是一些建筑的角。它们就可以被轻松的找到。因为在针对这些角,无论你往什么方向移动这个碎片,它看起来都不一样。所以它们可以被认为是很好的特征。为了更好地理解,现在我们来看看更简单的(并且被广泛使用的)图像。

feature_simple.png

就像上面一样,蓝框碎片是平坦的区域,很难去寻找和跟踪。无论你怎么移动蓝框碎片,它看起来都是一样的。黑框碎片里面有一条边。如果你沿着垂直方向移动它(即沿着图像梯度)它就会改变。沿着边缘移动(平行于边缘),看起来是一样的。对于红框碎片,它是一个角。无论你移动碎片到哪里,它看起来都不一样,意味着它是唯一的。基本上,角被认为是图像中很好的特征。(不仅仅是角落,在某些情况下,半点也被认为是很好的特特征)。

现在我们回答了刚才的问题,“这些特征是什么?”。但下一个问题出现了。我们如何找到他们?或者我们怎么去找这些角呢?我们用直观的方式来回答这个问题,即,寻找当图像在移动(少量移动)时,引发变化最大的区域。这将在接下来的章节中被投射到计算机语言中。那么,寻找这些图像特征称为特征检测

我们在图像中找到了特征。一旦你找到了它,你应该能够在其他图像中找到相同的。这是怎么做到的?我们取一个区域围绕着这个特征,我们用自己的语言解释它,比如“上面的部分是蓝天,下面的部分是建筑的区域,在那个建筑上有玻璃等等”,然后你在其他图像中搜索相同的区域。基本上,你在做的就是在描述特性。类似地,计算机也应该描述特征周围的区域,以便在其他图像中找到它。这就是我们说的特征描述。一旦你有了特征和特征描述,你可以在所有的图像中找到相同的特征,并将它们对齐,将它们缝在一起或做一些任何你想做的事情。

所以在这个模块中,我们在OpenCV中寻找不同的算法来寻找特征,描述它们,匹配它们等等。

额外资源

练习


上篇:【翻译:OpenCV-Python教程】用GrabCut算法进行交互式的前景提取

下篇:【翻译:OpenCV-Python教程】图像金字塔

So in this module, we are looking to different algorithms in OpenCV to find features, describe them, match them etc.
所以在这个模块中,我们在OpenCV中寻找不同的算法来寻找特征,描述它们,匹配它们等等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章