图像配准(非刚性\非线性)

2023-12-30

我正在寻找一些算法(最好是如果源代码可用) 用于图像配准。 图像变形不能用单应矩阵来描述(因为我认为变形不是对称的,不是 均匀),更具体地说,变形就像桶形/扭曲和梯形扭曲,可能是图像的一些旋转。 我想获得两个图像的像素对,这样我就可以获得“变形场”的表示。

我谷歌了很多,发现有一些基于一些物理学思想的算法,但似乎它们可以收敛 达到局部最大值,但不是全局最大值。 我可以让程序半自动,这意味着一些简单的用户交互。

也许像 SIFT 这样的算法会合适? 但我认为它不能提供有规律的足够密度的“变形场”。

如果它很重要,则没有规模变化。

复杂字段的示例http://www.math.ucla.edu/~yanovsky/Research/ImageRegistration/2DMRI/2DMRI_lambda400_grid_only1.png http://www.math.ucla.edu/~yanovsky/Research/ImageRegistration/2DMRI/2DMRI_lambda400_grid_only1.png


您正在寻找的是“光流”。搜索这些术语将会产生大量结果。

在 OpenCV 中,有一个名为 calcOpticalFlowFarneback() 的函数(在视频模块中)可以完成您想要的操作。 C API 仍然有 Horn & Schunck (1981) 的经典论文“确定光流”的实现。

你也可以看看我所做的这项工作,以及一些代码(但要小心,opencl 内存代码中仍然存在一些神秘的错误。我将在今年晚些时候发布一个更正的版本。):http://lts2www.epfl.ch/people/dangelo/opticalflow http://lts2www.epfl.ch/people/dangelo/opticalflow

除了 OpenCV 的光流(和我的;-)之外,您还可以在 itk.org 上查看 ITK,以获取完整的图像配准链(主要针对医学成像)。

还有很多光流代码(matlab、C/C++...)可以通过google找到,例如cs.brown.edu/~dqsun/research/software.html、gpu4vision等

-- 编辑:关于光流 --

光流算法分为两大类:密集算法和其他算法。 密集算法为每个像素提供一个运动向量,非密集算法为每个跟踪特征提供一个向量。

密集系列的例子包括 Horn-Schunck 和 Farneback(与 opencv 保持一致),以及更一般地任何能够最小化整个图像上的某些成本函数(各种 TV-L1 流等)的算法。

非密集系列的一个例子是 KLT,在 opencv 中称为 Lucas-Kanade。

在密集族中,由于每个像素的运动几乎是自由的,因此它可以处理尺度变化。但请记住,这些算法在大运动/尺度变化的情况下可能会失败,因为它们通常依赖于线性化(运动和图像变化的泰勒展开)。此外,在变分方法中,每个像素都对整体结果有贡献。因此,一张图像中不可见的部分可能会使算法偏离实际解决方案。

无论如何,采用诸如从粗到精的实现等技术来绕过这些限制,并且这些问题通常只会产生很小的影响。残酷的光照变化或大的遮挡/未遮挡区域也可以通过某些算法明确处理,例如这张纸 http://dl.acm.org/citation.cfm?id=1969036沿着光流场计算“创新”的稀疏图像。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像配准(非刚性\非线性) 的相关文章

  • 使用预训练(Tensorflow)CNN 提取特征

    深度学习已成功应用于多个大型数据集 用于对少数类别 猫 狗 汽车 飞机等 进行分类 其性能优于 SIFT 特征袋 颜色直方图等更简单的描述符 然而 训练这样的网络需要每个类别大量的数据和大量的训练时间 然而 在花时间设计和训练这样一种设备并
  • Python 2.7/OpenCV 3.3: cv2.initUn DistorifyMap 中出现错误。不显示不扭曲的校正图像

    我想扭曲并校正我的立体图像 为此 我在 Python 2 7 中使用了 Opencv 3 3 我使用的代码是 import cv2 import numpy as np cameraMatrixL np load mtx left npy
  • 使用 Racket FFI 进行快速阵列访问

    我正在尝试在 Racket 中编写 OpenCV FFI 并达到了需要有效操作数组的地步 然而 我所有使用 Racket FFI 访问数组的尝试都会导致代码效率非常低 有没有办法使用 FFI 快速访问 C 数组 在 Racket 中 这种类
  • 获取输入图像类型选择的图片并加载到图像标签中

    所以 我有一个用于上传 img 文件的输入框 我想要做的是从该数据 或选定的源 中获取数据并将其路由到图像标签的 src 属性中 像这样的东西 http jsfiddle net QC2c4 http jsfiddle net QC2c4
  • CV_MAT_ELEM 中的编译错误

    调用estimateRigidTransform 的结果是我得到一个名为 trans 的cv Mat 对象 为了检索其包含的矩阵 我尝试以这种方式访问 其元素 for i 0 i lt 2 i for j 0 j lt 3 j mtx j
  • 检查外部图像是否存在的正确 PHP 方法?

    我知道至少有 10 个相同的问题有答案 但似乎没有一个对我来说完美无缺 我正在尝试检查内部或外部图像是否存在 图像 URL 是否有效 fopen url r 失败 除非我使用 fopen Warning fopen http example
  • 如何将 SD 卡图像添加到 coverflow?

    Here is my coverflow with drawables This is my Image Adapter Code The Constant IMAGE RESOURCE IDS private static final L
  • C++ OpenCV imdecode 慢

    我将图像的字节数组从 C 发送到 C 库 我使用 OpenCV 版本 3 3 1 解码图像 BMP 图像解码速度很快 但 JPEG 图像解码速度很慢 如何加快 JPEG 图像的解码时间 多线程 GPU 解码性能 Resolution For
  • 使用 Javascript/jQuery 和 CSS 更改 PNG 颜色

    我有一个黑色的心 PNG http 1 bp blogspot com yq ZSKg39Tk TOvzVx9sC5I AAAAAAAAAb0 GcN4O Ciq3s s1600 black heart png我想用不同的颜色显示 如何使用
  • 如何使用 Java2D 创建硬件加速图像?

    我正在尝试创建一个快速图像生成器 它可以执行大量 2d 转换和形状渲染 因此我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行所有绘图 我现在主要关心的是 make 速度非常快 所以我创建一个像这样的 Buf
  • 运行时错误:大小不匹配,m1:[4 x 3136],m2:[64 x 5]位于c:\ a \ w \ 1 \ s \ tmp_conda_3.7_1

    我使用 python 3 当我插入变换随机裁剪大小 224 时 它会给出未匹配错误 这是我的代码 https github com kajasumanie medical plant classification blob master i
  • 如何在 MATLAB 的 for 循环中读取多个图像?

    我已将结果分段放在一个文件夹中 这些需要在 for 循环中读取并在循环中进一步处理 我尝试阅读如下 for i 1 10 file name dir strcat C Users adminp Desktop dinosaurs im im
  • iOS:从非图像数据生成图像(Godus,如风景)

    所以看到图像后Godus http www kickstarter com projects 22cans project godus我想知道如何生成简单的 非交互式的 2D 图像 with 不同高度或层数的颜色不同就像下面的图片一样 我只
  • 使用 OpenCV 从轮廓获取掩模

    我想从我通过 cv findContours 计算的轮廓 它只存在 1 个轮廓 获取图像掩模 然而 虽然我的轮廓变量不为空 但我无法使用 cv drawContours 检索图像蒙版 我的目标图像始终为空 这是我的代码 img mosaic
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • Kotlin:使用 Picasso 从 flickr 加载图像时出现错误 503

    我的应用程序使用 Android 的 Picasso 库从 flickr 加载图像 奇怪的是 不久前将我的应用程序迁移到 Kotlin 后 它工作得很好 但现在我开始出现 随机 503 错误 我已经在 flickr 控制面板中为每个图像设置
  • cv2.imdecode 始终返回 None

    我正在从存储 JPEG 图像的 sqlite BLOB 读取二进制数据 sqlite3 Binary 图像被写入数据库 img cv2 imread images image jpg c execute INSERT INTO pictur
  • 使用决策树

    我知道 tl dr 我将尝试解释我的问题 而不会用大量蹩脚的代码来打扰您 我正在做一项学校作业 我们有蓝精灵的图片 我们必须通过前景背景分析来找到它们 我有一个 Java 决策树 其中包含所有数据 HSV 直方图 1 一个节点 然后尝试找到
  • OpenCV warpPerspective 性能缓慢

    在我的应用程序中 我跟踪一个物体 到达它的地方corners都在这个框架中 我发现它之间的单应性corners从最后一帧开始和 当前帧 使用单应性来做perspectiveTransform on the corners在当前帧中找到 得到

随机推荐

  • 调用线程必须是STA

    我正在尝试模拟射弹 并尝试仅在定时事件中创建标签一次 因为它的参数中有一个我需要在定时事件中的对象 但是当我运行它时出现这个线程错误 请帮助 我的代码是 void onTimedEvent Object source ElapsedEven
  • 无法连接到服务器: dial tcp [::1]:8080: connectex: 由于目标机器主动拒绝而无法建立连接

    我正在研究 Azure Kubernetes 我们可以在 Azure 中存储 Docker 映像 我正在尝试检查我的 kubectl 版本 然后我得到 无法连接到服务器 拨打 tcp 1 8080 connectex 否 由于目标机器主动拒
  • 有人有 ERD 符号快速参考吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一页快速参考或备忘单 最好是 PDF 格式 以了解 Crowsfoot Martin 表示法
  • isset() 和 array_key_exists() 有什么区别? [复制]

    这个问题在这里已经有答案了 以下两个函数调用如何比较 isset a key array key exists key a array key exists https www php net manual function array k
  • 如何在 WPF 中使用 XAML 设置 ComboBox 标头

    过去几天我一直试图为我的组合框创建标题 但我似乎找不到方法 到目前为止我发现的所有内容都无法在我的模型中实现 我不得不说我对数据绑定的了解很薄弱 我一直在认真阅读它 我创建了一个组合框并用来自不同数据库的数据填充它 然后 我使用转换器连接相
  • PHP - 将变量传递给类

    我正在尝试学习 OOP 并且我已经完成了这门课 class boo function boo another class some normal variable some normal variable another class gt
  • 将图像对齐到段落 css 的右侧

    我想将图像与段落的右侧对齐 并且我希望能够这样做 而不必在段落上设置固定宽度以及远离图像的一些填充 我怎样才能做到这一点 https jsfiddle net mnakoajk https jsfiddle net mnakoajk box
  • ios9 无法加载资源

    当我在 ios9 中调用我的 api 时遇到此错误 但在 ios8 中工作正常 无法加载资源 因为应用程序传输安全策略需要使用安全连接 ios9 您需要在 plist 中添加一个标志 更多信息请访问https forums develope
  • 使用 MSBuild 进行 ClickOnce 部署 -> 如何传递应用程序版本/或自动增量的当前内部版本号

    我们有一个使用 ClickOnce 部署的 Outlook 加载项 一旦开发人员签入构建 PC 就会对构建进行排队 并将应用程序发布到共享驱动器上的某个位置 问题在于 构建不会将发布版本更改为当前程序集版本 因此它会在先前版本的文件夹中发布
  • Android Google+ 集成 - 重复 UserRecoverableAuthException

    我们已就此事联系了 Google 并且我们正在聊天 https chat stackoverflow com rooms 33772 discussion between lee and arkaaito 该问题似乎已针对设备修复excep
  • DeleteD 会自动取消选择对象吗?

    我是否总是需要调用 SelectObject 将原始对象恢复到 DC 并使我的对象可供删除 即使我无论如何都要删除 DC e g Create DC HBITMAP hBitmap CreateCompatibleBitmap hDC re
  • 安装 R3.3 的 udunits2 软件包

    我只是浪费了一整天的时间试图弄清楚如何安装 udunits2 软件包以便能够安装units 软件包以便能够安装ggforce 和ggraph 软件包 我尝试在 Ubuntu 16 04 和 R gt 3 3 上安装它 因为 ggforce
  • .NET 上 C# 的模拟工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 C NET 新手 但我从事 TDD 已经有一段时间了 我想知道在 C 中编写测试时可用于模拟对象
  • 可执行文件中的函数地址(由 objdump 检查)与 printf 打印的同一函数的地址不匹配。幕后发生了什么?

    我使用的是 Ubuntu 22 04 3 x86 64 系统 我知道虚拟内存和页面一般是如何工作的 我也知道系统可以使用 ASLR 不过我想知道在这个特定场景下 Ubuntu 系统到底会发生什么 我在名为 test c 的文件中有这个小程序
  • 根据缩放级别渲染 QGraphicsScene

    有没有一种 快速 方法可以根据视图缩放级别仅渲染 GraphicsScene 项目的子集 我有一个包含许多网格线的大场景 当缩放更改以避免 网格完全填充场景 效果时 我想隐藏 显示其中一些网格线 网格线是使用QGraphicsScene的a
  • 使用 C++ REST SDK 从文件读取 JSON (卡萨布兰卡)

    我有以下代码 它应该读取文本文件的内容并将其解析为 JSON try string t importFile argv iArgCounter extract filename ifstream t f importFile filestr
  • AD用户认证

    我正在尝试创建一个 ASP NET NET 3 5 网站以通过 Exchange Web 服务连接到我们的 Exchange 2010 服务器 当我定义要进行身份验证的用户名 密码和域时 我能够连接到 EWS 但我想 如果可能的话 不要在我
  • Google 电子表格中单元格文本的 sha3-256

    我知道你可以在谷歌表格上做 sha1 和其他 但是有没有办法做 sha3 256 secret test123 hash 3054762b0a8b31adfe79efb3bc7718624627cc99c7c8f39bfa591ce6854
  • 访问 iCloud 通知中已删除的对象

    我有一个应用程序设置非常类似于 iCloudCoreDataRecipes 示例 即 将 Core Data 与 iCloud 结合使用 在应用程序委托中 我观察到 NSPersistentStoreDidImportUbiquitousC
  • 图像配准(非刚性\非线性)

    我正在寻找一些算法 最好是如果源代码可用 用于图像配准 图像变形不能用单应矩阵来描述 因为我认为变形不是对称的 不是 均匀 更具体地说 变形就像桶形 扭曲和梯形扭曲 可能是图像的一些旋转 我想获得两个图像的像素对 这样我就可以获得 变形场