Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Homography

单应性是一种投影变换,可在不同视图之间映射平面,从而实现透视校正、图像配准和全景拼接。

单应性是一种可逆投影变换,可将一个平面上的点映射到另一个平面上的点,同时保持直线不变。在计算机视觉中,单应性描述了平面表面从不同视角呈现的方式:以倾斜角度拍摄的矩形页面可以变换为正面视图中的矩形。单应性支持图像配准、透视校正和全景拼接。“投影变换”是其同义词;语言学术语“同形异义词”指拼写相同的词。

单应性矩阵的工作原理#

单应性由一个 3 x 3 矩阵表示,通常称为 H。它作用于齐次坐标,齐次坐标用三个值表示二维点。矩阵乘法后,将前两个输出值分别除以第三个值,即可得到普通图像坐标。

虽然 H 包含九个元素,但它只有八个独立参数,即自由度:将每个元素乘以相同的非零数不会改变映射关系。这种平面图像映射的几何原理解释了为什么四组适当的点对应关系就能确定一个单应性。

仿射变换是一种受限的单应性,可保持平行线。一般单应性还可以表示透视效果,包括平行边缘向消失点汇聚的现象。距离和角度通常会发生变化。米歇尔·沙尔于1837 年关于对偶性和单应性的回忆录中提出了这一概念。

如何估计单应性#

估计过程从对应点开始:这些点表示两幅图像中的同一物理特征。对应点可以是手动选取的角点,也可以是通过特征提取获得并匹配的关键点。尺度不变特征变换等方法会生成描述符——对局部外观进行数值概括——以便匹配不同视图中的特征。

至少需要四对点,并且任一组中的任意三点都不能共线。直接线性变换 (DLT) 算法会将这些点的坐标关系转换为线性方程组。当测量值包含噪声时,增加对应点可以提高估计精度。

错误匹配需要采用稳健拟合方法。随机抽样一致性 (RANSAC) 会反复使用小型子集拟合候选变换,并找出内点:即与某个候选变换一致的匹配点。重投影误差用于衡量变换后的源点与观测到的目标点之间的距离。OpenCV 的单应性估计 API通过 cv2.findHomography 提供此流程,并返回 H 和内点掩码。

在 Python 中应用单应性#

OpenCV提供了用于估计矩阵和扭曲图像的独立操作。使用 pip install opencv-python numpy 安装依赖项。此示例将示例图像的矩形边界映射为梯形:

from urllib.request import urlopen

import cv2
import numpy as np

image_url = "https://ultralytics.com/images/bus.jpg"
with urlopen(image_url) as response:
    encoded = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(encoded, cv2.IMREAD_COLOR)
height, width = image.shape[:2]

# 确保两个数组中的角点顺序都相同,且均按顺时针排列。
source = np.float32([[0, 0], [width - 1, 0], [width - 1, height - 1], [0, height - 1]])
target = np.float32([[120, 80], [width - 121, 80], [width - 1, height - 1], [0, height - 1]])
matrix, _ = cv2.findHomography(source, target)
warped = cv2.warpPerspective(image, matrix, (width, height))
cv2.imwrite("homography_result.jpg", warped)

保存的图像显示了透视缩短效果:图像的上边缘更窄,而场景中的直线边缘仍保持笔直。

单应性的应用场景#

  • 文档处理:透视校正会将平面文档的四个角映射到矩形。这个预处理步骤会规整文本布局,然后再进行光学字符识别,其原理与 OpenCV 透视校正示例所展示的平面变形几何相同。
  • 全景拼接:融合前会对齐有重叠区域的照片。Matthew Brown 和 David Lowe 的Autostitch 系统利用匹配的局部特征自动构建全景图,包括从无序图像集合中识别重叠图像。

在 Ultralytics YOLO 中,RandomPerspective 增强会在训练期间应用投影变形,并同步变换图像及其对应的边界框、分割轮廓和关键点。其 perspective 设置用于控制此数据增强中的透视分量。

单个单应性可以精确关联同一平面的理想针孔相机视图,也可以关联相机绕其投影中心旋转时拍摄的视图。相机发生平移且物体深度不同时,视差会产生随深度变化的位移。对齐背景平面后,前景物体仍会发生偏移,在拼接图像中形成重影边缘或鬼影。

相机标定用于处理镜头畸变;由于镜头畸变会造成弯曲的图像几何,因此在平面对齐前需要先进行校正。对于一般的三维场景,极线几何会将对应点限制在一条直线上;单应性则会直接预测该点的位置。在立体视觉中,极线上的剩余位置提供视差信息,可用于深度估计。

Explore solutions

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来