图像检测,也就是特征检测,对于计算机来说是非常非常困难的,事实上,可以说是难以置信的困难,因为计算机只能得出一个概率结果,而人类不知何故对图片有一种直观的理解(即使其中很多都涉及繁重的神经计算,如果你挖洞得更深一点的话)。
公平地说,给图像贴标签的是人,而计算机需要从中学习,所以计算机总是要跟上!
有了这个免责声明,让我们来讨论SIFT比例不变特征变换,这是一种神奇的技术,可以从图像中提取特征,进行比较,如果需要,可以正确对齐,甚至可以进行图像拼接。
之所以神奇,是因为计算机只会说二进制(0或1),简单的数学(addition/subtraction/division/multiplication)和图像也只是由数字组成(当存储在计算机上时)。因此,计算机需要以某种方式理解这些图像中的数字,并理解与我们人类相关的特征(因为这些特征与计算机无关:)
这是一个由世界上一些最优秀的研究科学家花了20多年时间进行的研究领域。
目标是比较两张不相同的相似图片之间的相似特征。
可能会有比例的变化,可能会有图像的旋转,可能会有照明上的差异,等等。
当两幅图像被馈送到SIFT算法时,它首先在不同的尺度上识别所谓的斑点或感兴趣的区域(这对于照顾尺度很重要)。第二步是识别图片之间的对准,即方向/对准的感觉,然后是比例因子,然后最后我们可以比较这些感兴趣的斑点/区域并查看它们是否匹配,然后并且只有在那时我们才完成特征匹配/图像检测和比较。
现在让我们复习一下所有步骤的数学知识
第一步:识别不同尺度的斑点。
对于这一步,我们在整个图像上使用二维高斯过滤平滑,并在不同的σ(σ是高斯方差的值)上提取归一化的对数高斯值,碰巧,这些高斯在识别不同尺度的斑点时非常有用。一些斑点可以识别为1西格玛,其他斑点可以识别为N西格玛,依此类推。
高斯滤波器有一个有趣的特性,对于不同尺度的两幅图像上的同一个斑点,σ(峰值出现的位置)恰好与可用于在两张图片中识别同一个斑点的尺度成正比,在这方面,高斯滤波器感觉像是上帝赐予的:)
下一步是确定方向:
为了识别方向(也就是说,一张图片与另一张图片相比可能会倾斜),我们对整个图片中的每个像素都使用了像“Canny Edge Detection”这样的边缘检测技术,在像素级别识别边缘后,我们绘制了方向直方图(大约8个不同的方向与像素计数)。计数最大的方向将被视为斑点的方向。
注意:即使这种技术可能不能真正识别斑点的方向,但如果两张不同图片的方向是相同的,这对于比较它们的方向就足够好了。
最后一步是“相似斑点识别”(在校正了比例和方向之后)
为了正确识别斑点(以自动方式,当然无需人工干预),我们需要为每个斑点提取某种类型的唯一签名。原来,我们也可以使用方向直方图(我们之前创建的)作为签名。
但是,这一次,我们在单个图表中绘制完整斑点(其全部4个象限)的方向直方图。我们将考虑将整个方向直方图作为斑点的签名。请注意,此签名函数只有在正确对齐两张图片之后才能使用(上一步很有用)
所以SIFT算法已经达到了我们的预期目的,它帮助我们识别有趣的特征,然后帮助识别方向,最后在不同的图片上识别出准确的斑点。
感谢您的阅读!
最初发表于https://www.linkedin.com/pulse/first-principles-approach-feature-blob-detection-using-krishna-yogi/https://www.linkedin.com/pulse/first-principles-approach-feature-blob-detection-using-krishna-yogi/
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/25/%e4%bd%bf%e7%94%a8sift%e6%8a%80%e6%9c%af%e8%bf%9b%e8%a1%8c%e7%89%b9%e5%be%81-%e6%96%91%e7%82%b9%e6%a3%80%e6%b5%8b%e7%9a%84%e7%ac%ac%e4%b8%80%e5%8e%9f%e7%90%86%e6%96%b9%e6%b3%95%ef%bc%81/