想象一下,你有一张印着某个明显标志的纸张,例如一个黑色的字母 “X”。你将这张纸放在桌子上,用相机拍下了一张照片。然后,你将纸张顺时针旋转45度,并再次拍照。尽管纸张的方向变了,但上面的 “X” 还是那个 “X”,并没有改变。

为了使这个例子更具体,我们可以为 “X” 指定一个特征,例如轮廓的中心点或者 “X” 的两条线交叉的地方。不管你如何旋转纸张,这个中心点是 “X” 的一个固有特性,它并不改变。

同样地,图像的旋转不变性就意味着无论你如何旋转图像,能够检测到的图像特征(像是关键点或边缘)还是同一个特征,只是它在图像中的位置改变了。在计算机视觉中,算法设计为可以识别这些特征的不变性,从而无论图像如何旋转,都可以匹配到相同的物体或图案。

回到我们的 “X” 标志例子。在计算机视觉任务中,如果你用一种旋转不变性算法去识别并匹配这个 “X” 标志,算法能够在两张图片中都识别出 “X” 标志,尽管它们的方向不同。这就是图像的旋转不变性的直观理解。

假设我们有一个图像,如下所示:

A B C
D E F
G H I

现在,我们通过逆时针旋转该图像90度:

G D A
H E B
I F C

如果我们只看像素的位置,两个图像是不同的。然而,如果我们在两个图像上检测特征点并计算它们的描述符,我们将会注意到,它们的描述符是相同的。

关键点是在图像中具有某种特殊性质的点,描述符是它们周围像素的表示。通过计算描述符,我们可以捕捉特征点的一些特征,例如边缘方向、纹理等。

在上述例子中,旋转后的图像仍然具有相同的边缘、纹理等特征,因此,在旋转后的图像上检测到的特征点的描述符与原始图像上的描述符是相同的。这就是图像的旋转不变性。

旋转不变性对于许多计算机视觉任务非常重要,例如目标识别和图像匹配。它意味着我们可以在不考虑图像旋转的情况下进行特征匹配,从而提高算法的鲁棒性和可靠性。

旋转不变特性指的是算法或特征描述器能够对图像进行识别、匹配或检索,无论图像如何旋转。这种特性使得算法对于图像的旋转不敏感,可以识别或匹配到相同物体的不同角度拍摄的图片。旋转不变特性在计算机视觉领域非常关键,特别是在目标识别、图像检索和机器人视觉等应用中。

应用

  1. 图像识别(Image Recognition):在场景理解、对象识别中,旋转不变性可以帮助提高算法的鲁棒性。例如,无论摄像头如何旋转,或物体如何放置,都可以准确识别物体。
  2. 图像配准(Image Registration):在医学影像、卫星图像处理等领域,图像可能因摄像设备的不同角度而旋转。旋转不变特征允许我们对这些图像进行精确对齐和配准,即使它们不是从相同的视角拍摄的。
  3. 图像检索(Image Retrieval):图像数据库中可能包含了大量以不同方向拍摄的相似图像。利用旋转不变特征,检索系统可以更准确地找到与查询图像相似的图像,无论它们实际的旋转状态如何。
  4. 立体视觉(Stereo Vision):在重建三维场景时,旋转不变性能够确保算法能够正确匹配来自两个不同相机视角的图像点。
  5. 机器人视觉(Robot Vision):机器人导航和物体操控时,它所看到的物体可能会以任意角度呈现。旋转不变特性使得机器人能够在不同的视角下识别物体形状和特征。

如何实现

实现旋转不变性通常涉及以下几种方法:

  • 使用特征描述符,如SIFT(尺度不变特征变换)或SURF(加速稳健特征),它们可以提取旋转不变特征点。
  • 图像的旋转归一化,先将图像旋转到一个参考方向,再进行特征提取和匹配。
  • 训练具有旋转不变性的深度神经网络,如使用数据增强中的旋转图像来训练卷积神经网络(CNN),使其对物体在不同旋转下的识别具有不变性。

局限

虽然旋转不变性对于许多应用是一个有益的特性,但它也可能导致一些固有的限制。例如,如果物体的旋转改变了其形状(如图像出现遮挡或透视变形时),仅仅依靠旋转不变性可能无法进行准确的识别和匹配。此外,确保算法在所有可能的旋转下都具有不变性可能会增加计算复杂性。

SIFT(尺度不变特征变换)

SIFT(尺度不变特征变换)是一种用于提取图像中关键点(特征点)并计算其描述子的算法,该算法由David Lowe在1999年首次提出并在2004年完善。SIFT特征对于旋转、尺度缩放、亮度变化和仿射或三维投影变换保持不变性,这使得SIFT特征在图像匹配和识别任务中非常强大。

SIFT主要包含以下几个步骤:

  1. 尺度空间极值检测:首先,通过高斯模糊函数构建尺度空间来寻找潜在的兴趣点。尺度空间是通过逐步增加高斯模糊的尺度因子来实现的。不同尺度的图像通过在图像上应用不同标准差的高斯核得到。算法寻找尺度空间的局部最大值和最小值作为关键点候选。
  2. 关键点定位:检测到的候选关键点会经过进一步的处理以确定其位置和尺度。通过Hessian矩阵(二阶导数矩阵)分析,去除低对比度的点以及不稳定的边缘响应点以获得更准确的结果。
  3. 方向赋值:为了保证旋转不变性,每个关键点将被赋予一个或多个方向,基于图像局部梯度的方向统计信息。相邻像素的梯度和方向被计算,并使用直方图对梯度方向进行投票。
  4. 关键点描述符:在选定的关键点周围局部区域内,根据关键点的尺度选择相应的窗口大小,并在该窗口内计算梯度直方图。知名的128维SIFT描述符是通过将4x4大小的小区域内8个方向的梯度直方图连接起来形成的。
  5. 关键点匹配:得到的SIFT关键点描述符可以用于在不同图像之间进行匹配。通常采用最近邻搜索找到最匹配的点,配合次最近邻比率检验以排除一些错误匹配。
  6. 变换模型匹配:确定关键点匹配后,使用RANSAC(随机抽样一致性)算法验证关键点间的几何变换,以筛选出异常值并计算最终的变换模型。

SIFT是一个功能强大的特征提取算法,在对鲁棒性要求非常高的视觉任务中广泛应用,如图像拼接、3D重建、目标识别、手势识别等。由于SIFT特征的强不变性和鲁棒性,它经常被用作基准,以比较其他特征检测器的性能。不过,SIFT算法的计算成本较高,特别是在处理大尺度图像或实时系统中可能会导致性能瓶颈,因此也有许多算法基于SIFT进行优化或改进,以求速度与效果的平衡。

SURF(加速稳健特征)

SURF(加速稳健特征)是由Herbert Bay等人在2006年提出的一种计算机视觉算法,用于检测和描述图像中的关键点。SURF的目标是提供一种比现有方法(如SIFT)更快、更高效的算法,同时保持相似的识别性能。它在各种尺度和图像旋转下保持稳健,且对于亮度变化,模糊,以及视角变化也具有一定的不变性。

SURF算法主要分为以下几个步骤:

  1. 尺度空间构建:与SIFT类似,SURF使用积分图像快速计算图像特征的尺度空间。这不同于SIFT的高斯差分尺度空间,但目的相同:为了便于后续在不同的尺度上寻找特征点。
  2. 关键点检测:SURF算法通过Hessian矩阵的行列式来定位关键点。计算每个点在不同尺度上的Hessian矩阵行列式,并在尺度空间中寻找这些响应的局部最大值作为关键点。SURF使用盒子滤波(box filter)的近似计算,可以通过积分图像非常快速地实现。
  3. 关键点定位与筛选:在初步候选点之后,SURF进一步通过插值找到关键点的精确位置,并根据行列式的值和Hessian的迹来进行筛选,以消除不稳定和边缘响应的关键点。
  4. 方向赋值:考虑到旋转不变性,SURF算法为每个关键点分配方向。这是通过计算关键点周围圆形邻域内点的Haar小波响应方向来完成的,将得到的向量最长的方向作为关键点的主方向。
  5. 描述符构建:在赋予关键点主方向之后,SURF生成描述符。这个描述符由关键点周围区域的小波响应的简单描述构成,通常是64维向量(也可以扩展到128维以提供更精确的描述)。描述符编码了该区域内的强度变化和方向信息。
  6. 关键点匹配:拥有描述符后,可以使用最近邻搜索算法,如k近邻或FLANN,来匹配不同图像之间的关键点。通常采用欧氏距离作为相似性度量。

SURF的优势在于通过积分图像和盒子滤波器,它在构建尺度空间和计算描述符时比SIFT更快。此外,它的描述符通常更加紧凑。这些特性使SURF尤其适用于需要快速特征提取的实时应用场景。

然而,随着深度学习的发展,尤其是卷积神经网络(CNN)在图像识别和特征提取上表现出色,传统的特征描述算法(如SIFT和SURF)虽然仍然在特定领域应用广泛,但在一些最先进的任务中,CNN已经成为主流选择。

相关博文

理解并实现OpenCV中的图像平滑技术

OpenCV中的边缘检测技术及实现

OpenCV识别人脸案例实战

入门OpenCV:图像阈值处理

我的图书

下面两本书欢迎大家参考学习。

OpenCV轻松入门

李立宗,OpenCV轻松入门,电子工业出版社,2023
本书基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用方法,还介绍了函数实现的算法原理。

在介绍 OpenCV 函数的使用方法时,提供了大量的程序示例,并以循序渐进的方式展开。首先,直观地展示函数在易于观察的小数组上的使用方法、处理过程、运行结果,方便读者更深入地理解函数的原理、使用方法、运行机制、处理结果。在此基础上,进一步介绍如何更好地使用函数处理图像。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的实例来说明问题,避免使用过多复杂抽象的公式。

本书适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。

本书第1版出版后,深受广大读者朋友的喜爱,被很多高校选为教材,目前已经累计重印9次。为了更好地方便大家学习,对本书进行了修订。

图像的旋转不变特性及应用_opencv

计算机视觉40例

李立宗,计算机视觉40例,电子工业出版社,2022
近年来,我深耕计算机视觉领域的课程研发工作,在该领域尤其是OpenCV-Python方面积累了一点儿经验。因此,我经常会收到该领域相关知识点的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把所积累的知识以图文的形式分享给大家,我将该领域内的知识点进行了系统的整理,编写了本书。希望本书的内容能够对大家在计算机视觉方向的学习有所帮助。
本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。
本书从计算机视觉基础、经典案例、机器学习、深度学习、人脸识别应用等五个方面对计算机视觉的相关知识点做了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有字符识别、信息加密、指纹识别、车牌识别、次品检测等计算机视觉的经典案例,也包含图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还包括表情识别、驾驶员疲劳监测、易容术、识别年龄和性别等针对人脸的应用案例。
在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。
本书适合计算机视觉领域的初学者阅读,适于在校学生、教师、专业技术人员、图像处理爱好者使用。

图像的旋转不变特性及应用_python_02