deep-image-matching

GitHub
529 74 中等 1 次阅读 6天前NOASSERTION开发框架图像视频其他
AI 解读 由 AI 自动生成,仅供参考

deep-image-matching 是一款专为多视图几何重建设计的开源匹配工具,旨在为 COLMAP、OpenMVG、MicMac 及 Agisoft Metashape 等摄影测量软件提供高精度的图像特征点与匹配对。它有效解决了传统算法在处理高分辨率图像、大角度旋转或弱纹理场景时匹配成功率低的问题,显著提升了三维重建的鲁棒性。

该工具非常适合计算机视觉研究人员、测绘工程师以及需要构建高质量三维模型的开发者使用。其核心亮点在于灵活融合了前沿的深度学习模型(如 XFeat、DeDoDe、RIPE 等)与传统手工特征(如 SIFT),用户可根据硬件条件(支持 GPU 加速)和场景需求自由选择算法组合。此外,deep-image-matching 不仅支持命令行和图形界面两种操作模式,还内置了基于深度学习的图像检索与图聚类功能,甚至能直接调用后端引擎完成完整的运动恢复结构(SfM)流程。需要注意的是,目前该项目仍处于活跃开发与实验阶段,适合愿意尝试新技术并参与反馈的专业用户。

使用场景

某文化遗产保护团队正在对一座拥有复杂浮雕和重复纹理的古建筑进行高精度三维重建,需处理数百张不同光照和角度拍摄的高分辨率照片。

没有 deep-image-matching 时

  • 特征匹配失败率高:面对建筑表面大量重复的砖石纹理,传统 SIFT 算法容易产生错误匹配,导致后续建模出现重影或断裂。
  • 大尺寸图像处理困难:原始照片均为亿级像素的大画幅格式,常规工具内存溢出频繁,被迫降采样处理从而丢失细节。
  • 旋转视角支持不足:由于拍摄角度包含大量非水平旋转图像,旧流程无法有效对齐,需要人工预旋转图片,耗时费力。
  • 软件兼容性割裂:团队需要在不同软件间手动转换数据格式才能将匹配结果导入 COLMAP 或 Metashape,工作流繁琐且易出错。

使用 deep-image-matching 后

  • 精准捕捉复杂纹理:利用 XFeat 或 DeDoDe 等深度学习特征提取器,即使在重复纹理区域也能实现鲁棒匹配,显著提升了点云密度和准确性。
  • 原生支持高分辨率:直接处理全分辨率大图而无需降采样,完整保留了古建筑表面的微小雕刻细节,同时通过图聚类优化了计算效率。
  • 自动适应任意旋转:内置的旋转不变性机制让团队无需预处理即可直接输入任意角度的照片,自动化程度大幅提高。
  • 无缝对接主流管线:一键将匹配结果导出为 COLMAP 数据库或 Bundler 格式,直接打通从特征匹配到稀疏重建的全流程,兼容 OpenMVG 等多种后端。

deep-image-matching 通过融合前沿深度学习算法与传统几何约束,彻底解决了复杂场景下高保真三维重建的匹配瓶颈。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 部分算法必需(如 DeDoDe, SE2-LoFTR, LoFTR 仅支持 GPU),其他算法可选
  • 具体显存和 CUDA 版本未说明,需根据所选深度学习模型(如 SuperPoint, LightGlue 等)自行配置 PyTorch 环境
内存

未说明(处理大格式图像和多视图数据通常建议 16GB+)

依赖
notes推荐使用 uv 进行依赖管理(比 pip/conda 更快),也支持 conda/mamba。部分特征提取器(如 SIFT, ORB)来自 OpenCV,部分匹配器(如 LightGlue, SuperGlue)需要预训练模型。若使用 pycolmap 进行三维重建,需确保其正确安装。项目处于实验阶段,不同算法的许可证需参考原作者项目。
python3.9+
torch
kornia
pycolmap
opencv-python
numpy
deep-image-matching hero image

快速开始

静态徽章 静态徽章 静态徽章 静态徽章

静态徽章 静态徽章 GitHub发布 静态徽章

DEEP-IMAGE-MATCHING

SIFT DISK 图像定向 密集重建与ROMA
SIFT SUPERGLUE

用于SfM软件的多视图匹配器。支持基于深度学习和手工设计的局部特征及匹配算法,并可将关键点和匹配直接导出到COLMAP数据库或通过导入Bundler格式的重建文件导出至Agisoft Metashape。目前,它同时支持OpenMVG和MicMac。欢迎合作!

有关如何使用DIM,请查看文档(已更新至主分支)。

请注意,deep-image-matching正处于积极开发中,目前仍处于实验阶段。如果您发现任何错误,请提交问题。关于各个局部特征和匹配算法的许可信息,请参阅其原作者的项目

主要特性:

  • 多视图
  • 支持大尺寸图像
  • 当前最先进(SOTA)的深度学习和手工设计特征
  • 支持图像旋转
  • 与多种SfM软件兼容
  • 支持基于深度学习局部特征的图像检索
  • 基于图的聚类
  • 可在DIM中直接运行SfM(pycolmap、openmvg等)

支持的特征提取器

算法 年份 论文链接 Github链接 备注
RIPE 2025 链接 链接 支持
RDD sparse 2025 链接 链接 支持
LiftFeat 2025 链接 链接 支持
XFeat 2024 链接 链接 支持
DeDoDe 2024 链接 链接 仅GPU支持
ALIKED 2023 链接 链接 支持
SRIF 2023 链接 链接 支持
DISK 2020 链接 链接 支持
KeyNet 2019 链接 链接 支持
SuperPoint 2018 链接 链接 支持
Superpoint open 2018 链接 链接 支持
HardNet 2017 链接 链接 支持
ORB 2011 链接 链接 来自OpenCV
SIFT 2004 链接 链接 来自OpenCV

支持的匹配算法

算法 年份 论文链接 Github链接 备注
LightGlue 2023 链接 链接 与SuperPoint、DISK和ALIKED配合使用
LighterGlue 2023 链接 链接 与XFeat配合使用
RoMa 2023 链接 链接 支持
SE2-LoFTR 2022 链接 链接 不支持分块处理且仅限GPU
LoFTR 2021 链接 链接 仅限GPU
SuperGlue 2020 链接 链接 与SuperPoint配合使用
最近邻 - - - 来自KORNIA

支持的SfM软件

| ✓ COLMAP | | ✓ OpenMVG | | ✓ MICMAC | | ✓ Agisoft Metashape | | ✓ 支持Bundler格式的软件 |

Colab 演示和笔记本

想在示例数据集上运行吗?➡️ 在 Colab 中打开

想在自己的图像上运行吗?➡️ 在 Colab 中打开

DIM 也可以作为库来使用,而不需要通过命令行界面执行(请参阅“使用说明”)。

快速示例请参见:

  • demo.py - 简单脚本,演示基本工作流程
  • demo.ipynb - 演示的交互式笔记本版本
  • notebooks/sfm_pipeline.ipynb - 包含详细说明的完整 SfM 流程

本地安装

为了安装 deep-image-matching,我们推荐使用 uv 进行快速可靠的包管理:

# 如果尚未安装 uv,请先安装
curl -LsSf https://astral.sh/uv/install.sh | sh

# 创建并激活虚拟环境
uv venv --python 3.9
source .venv/bin/activate  # 在 Windows 上:.venv\Scripts\activate

然后,您可以使用 uv 安装 deep-image-matching:

uv pip install -e .

此命令将以可编辑模式安装该包,允许您修改源代码并立即看到更改,而无需重新安装。如果您希望将 deep-image-matching 用作不可编辑的库,也可以不带 -e 标志进行安装。

这还将安装 pycolmap 作为依赖项,这是运行 3D 重建所必需的。如果在使用 pycolmap 时遇到任何问题,您可以按照官方说明此处手动安装它。

要验证 deep-image-matching 是否正确安装,您可以在 Python shell 中尝试导入该包:

import deep_image_matching as dim

要测试大部分功能,可以运行测试以检查 deep-image-matching 是否正确安装:

uv run pytests

更多信息请参阅文档

为什么选择 uv?

该项目已从 conda/pip 迁移到 uv 进行依赖管理。其优势包括:

  • 更快的安装速度:uv 在依赖解析和安装方面明显快于 pip
  • 更好的依赖解析:更可靠地解决复杂的依赖树
  • 锁文件支持:uv.lock 可确保在不同环境中实现可重复的安装
  • 集成工具链:内置对虚拟环境、Python 版本管理和项目构建的支持
  • 跨平台一致性:更好地支持不同的操作系统和架构

Conda/pip 安装

如果您在使用 uv 时遇到问题、更倾向于全局安装 DIM,或者在安装过程中遇到其他问题,可以使用 conda/manba 创建环境,并使用 pip 从源代码安装 DIM:

git clone https://github.com/3DOM-FBK/deep-image-matching.git
cd deep-image-matching

conda create -n deep-image-matching python=3.9
conda activate deep-image-matching
pip install -e .

Docker 安装

有关 Docker 安装的信息,请参阅文档中的Docker 安装部分。

使用说明

快速入门演示

要快速入门,请查看 demo.py 脚本或 demo.ipynb 笔记本,它们使用示例数据集演示了基本用法:

python demo.py --dir assets/example_cyprus --pipeline superpoint+lightglue

该演示使用提供的示例数据集运行从特征提取到 3D 重建的完整流程。 类似的演示示例也以笔记本形式提供在 demo.ipynb 中。

命令行界面

使用以下命令可查看 CLI 的所有可用选项:

python -m deep_image_matching --help

例如,要在 example_cyprus 数据集上使用 SuperPoint 和 LightGlue 运行匹配:

python -m deep_image_matching --dir assets/example_cyprus --pipeline superpoint+lightglue

--dir 参数定义了处理目录,所有结果都将保存在此目录中。该目录必须包含一个名为 images 的子文件夹,其中存放所有待处理的图像。

库的使用

Deep-image-matching 也可以作为 Python 库使用。有关展示完整 SfM 流程的综合示例,请参阅 notebooks/sfm_pipeline.ipynb

详细的使用说明和配置请参阅文档

高级用法

有关高级用法,请参阅文档和/或查看 scripts 目录。

合并具有不同局部特征的数据库

要使用不同的局部特征和/或匹配器进行匹配,并将结果合并在一起,可以使用 ./scripts 目录中的脚本合并 COLMAP 数据库。

python ./join_databases.py --help
python ./join_databases.py --input path/to/dir/with/databases --output path/to/output/dir

将解决方案导出到 Metashape

建议的解决方案:

  • 现在可以直接在 Metashape 中运行 SfM,使用在 DIM 中提取的 2D 观测值。您可以使用 scripts 文件夹中的 export_to_bundler.py 脚本,它会创建一个假的 Bundler 文件。然后在 Metashape 中导入所需的所有图像,使用 Bundler 文件导入相机姿态,选择所有图像并重置对齐。最后右键点击,对齐选定的相机(参见问题)。

其他解决方案:

  • 若要将解决方案导出到 Metashape,可以将 COLMAP 数据库导出为 Bundler 格式,然后再导入 Metashape。这可以通过 Metashape 的图形界面完成:首先导入图像,然后使用“导入相机”功能(文件 -> 导入 -> 导入相机),选择 Bundler 文件(例如 bundler.out)和图像列表文件(例如 bundler_list.txt)。

  • 或者,您也可以使用 export_to_metashape.py 脚本,自动从以 Bundler 格式保存的重建结果中创建 Metashape 项目。该脚本以 Bundler 格式的解决方案和图像作为输入,将其导出到 Metashape。它需要在您的环境中安装 Metashape 作为 Python 模块,并持有有效许可证。请参阅https://github.com/franioli/metashape上的说明。

如何贡献

欢迎对本仓库的任何贡献! 如果您想为项目做出贡献,请查看贡献指南

待办事项列表

有关未来计划的功能和改进,请参阅待办事项列表

参考文献

如果您觉得本仓库对您的工作有所帮助,请引用以下论文:

@article{morelli2024_deep_image_matching,
  AUTHOR = {Morelli, L. and Ioli, F. and Maiwald, F. and Mazzacca, G. and Menna, F. and Remondino, F.},
  TITLE = {DEEP-IMAGE-MATCHING: 复杂场景多视图影像匹配工具箱},
  JOURNAL = {国际摄影测量、遥感与空间信息科学档案},
  VOLUME = {XLVIII-2/W4-2024},
  YEAR = {2024},
  PAGES = {309--316},
  DOI = {10.5194/isprs-archives-XLVIII-2-W4-2024-309-2024}
}
@article{morelli2022photogrammetry,
  title={摄影测量:过去与现在——从手工制作到深度学习连接点},
  author={Morelli, Luca and Bellavia, Fabio and Menna, Fabio and Remondino, Fabio},
  journal={国际摄影测量、遥感与空间信息科学档案},
  volume={48},
  pages={163--170},
  year={2022},
  publisher={Copernicus GmbH}
}
@article{ioli2024,
  title={基于深度学习的低成本摄影测量技术在冰川四维短期动态监测中的应用},
  author={Ioli, Francesco and Dematteis, Nicolò and Giordan, Daniele and Nex, Francesco and Pinto Livio},
  journal={PFG——摄影测量、遥感与地理信息科学期刊},
  year={2024},
  DOI = {10.1007/s41064-023-00272-w}
}

根据所使用的具体选项,还请参考以下相关工作的引用:

版本历史

2.0.02025/08/20
1.3.02025/07/04
0.0.12024/05/02
1.2.42024/04/13
1.0.02024/03/19
0.1.02024/01/24

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|今天
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|昨天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

140.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|3天前
开发框架图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|今天
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|昨天
开发框架语言模型