三维物体追踪笔记(1)-基于边缘的三维物体追踪——理论、公式推导与实现

2023-11-12

1. 基于边缘检测的三维跟踪建模

三维物体追踪是已知图像中某个物体在已知一系列空间三维点位置(或者是一个3D 模型面片集)的信息下,将这些点通过一个恰到好处的位姿(R,t)进行转换后投影到图像上。问题的求解目标是这个位姿(R,t),难点是并不知道这些三维点对应图像上的哪些像素点。

假如已知这个3D模型在图像对应物体具有清晰轮廓,特别是物体与背景之间有较好的灰度值区分度的(比如白色桌子上放一本MVG书),就可以利用基于边缘检测的三维物体跟踪。

令:x是重投影回去的轮廓(以下简称轮廓)上的离散点,x表示二维点。此处为方便起见,先命名x对应的三维点的坐标为 ( X , Y , Z ) (X,Y,Z) (X,Y,Z)

令:x在垂直于轮廓方向且向内的相邻点为 x p e x_{pe} xpe,平行于轮廓的相邻点为 x p a x_{pa} xpa

由于基于边缘检测的三维物体跟踪的最重要的特点是:垂直于边缘方向的梯度大,平行于边缘方向的梯度小,于是有:

E = 1 2 ∑ l i n e ∈ c o n t o u r ∑ x ∈ l i n e ( I ( x ) − I ( x p a ) ) 2 + ( I ( x ) − I ( x p e ) − 256 ) 2 E =\frac{1}{2} \sum_{line\in contour}\sum_{x \in line}(I(x)-I(x_{pa}))^2+(I(x) - I(x_{pe}) - 256)^2 E=21linecontourxline(I(x)I(xpa))2+(I(x)I(xpe)256)2

其中 ∣ I ( x ) − I ( x p a ) ∣ |I(x) - I(x_{pa})| I(x)I(xpa)表示梯度。

后者 ( 256 − I ( x ) − I ( x p e ) ) 2 (256-I(x) - I(x_{pe}))^2 (256I(x)I(xpe))2让候选点到边缘的梯度(即 I ( x ) − I ( x p e ) I(x) - I(x_{pe}) I(x)I(xpe))尽可能大(那样对应的E才会小)。灰度值最大值一般为256。

由于前者对结果的影响很小,因此我们考虑后者即可:

E = 1 2 ∑ l i n e ∈ c o n t o u r ∑ x i ∈ l i n e ( ( I ( x i ) − I ( x i p e ) − 256 ) 2 E =\frac{1}{2} \sum_{line\in contour}\sum_{x_i \in line}((I(x_i) - I(x_i{pe}) - 256)^2 E=21linecontourxiline((I(xi)I(xipe)256)2

**注:**在实验室常用做法中使用的是根据该marker是黑色还是白色而决定使用:

E i = 1 2 ( I ( x ) − I ( x p p e ) + 256 ) 2 ( 白 色 ) E_i = \frac{1}{2}(I(x)-I(x_{p_{pe}}) + 256) ^2(白色) Ei=21(I(x)I(xppe)+256)2

还是 E i = 1 2 ( I ( x ) − I ( x p e ) − 256 ) 2 ( 黑 色 ) E_i = \frac{1}{2}(I(x)-I(x_{pe}) - 256)^2(黑色) Ei=21(I(x)I(xpe)256)2,以便让像素差更接近与0.(我们以下假设是黑色)

2. 基于模型求导

2.1 链式分解

f i = ( I ( x i ) − I ( x i p e ) − 256 ) f_i = (I(x_i) - I(x_i{pe}) - 256) fi=(I(xi)I(xipe)256),则 E = 1 2 f T f = 1 2 [ f 1 f 2 … f n ] [ f 1 f 2 … f n ] E=\frac {1}{2}f^Tf= \frac{1}{2} \begin{bmatrix} f_1& f_2&…&f_n\end{bmatrix}\begin{bmatrix} f_1\\ f_2\\…\\f_n\end{bmatrix} E=21fTf=21[f1f2fn]f1f2

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

三维物体追踪笔记(1)-基于边缘的三维物体追踪——理论、公式推导与实现 的相关文章

随机推荐

  • Gogs push 报 HTTP 401 错误解决方法

    Gogs push 报 HTTP 401 错误解决方法 error RPC failed HTTP 401 curl 22 The requested URL returned error 401 错误原因 用户名和密码错误 导致验证不通过
  • 笔记 学习51单片机串口中断

    单片机的串口通信功能是比较常用的功能 80C51的串行口 我在学习的过程中 觉得SBUF的使用方法是最难的 于是对着这个图和资料一步步理解 才搞明白一点 A SBUF 和 SBUF A 的意思 51单片机通过特殊功能寄存器SBUF对串行接收
  • 【前端】Vue项目:旅游App-(8)city:标签页Tabs动态数据:网络请求axios与request、数据管理store与pinia、各种封装

    文章目录 目标 过程与代码 安装相关库 封装网络请求相关代码 网络请求数据 网络请求数据操作封装 pinia管理数据并封装 tab栏改为动态数据 效果 本篇总结 总代码 修改或新建的文件 service index modules的city
  • pytorch:计算网络模型在gpu上的推理时间

    计算网络模型的推理时间 网络模型的推理过程是在gpu上进行的 方法一 import torch import time net net to cuda 网络模型 input input to cuda 输入 time start time
  • 最详细小白入门Python7-bug和调试

    bug调试工具的使用 打断点 在行号后边点击出现小红点 右键debug进入调试模式 代码执行暂停到断点位置代码执行之前 debugger 查看参数及变量在执行过程中的变化情况 console 查看控制台输出内容 step over 单步执行
  • pytorch图像检索评价指标MAP

    map是图像检索模型的一个评价指标 以图片中第一个计算AP值为例 P的分别是 1 2 3 3 6 4 9 5 10 R值分别是 1 5 2 5 3 5 4 5 1 AP计算结果 1 2 3 3 6 4 9 5 10 5 https blog
  • c语言蝴蝶图案代码,通达信指标公式,临界点蝴蝶图案出现,暴涨趋势出现(附源码)...

    暴涨临界点指标 如上图所示 保障临界点指标专门用于监控起爆买点 当临界点出现后期一定会有上升 一战成名主图 指标源码 DRAWGBK 1 RGB 36 38 40 RGB 24 16 51 0 1 0 VAR1B 100 EMA EMA C
  • UE4中英文语言切换的三种方式(当然也可以多种语言)

    一 用ue4的Localization Dashboard 1 2 3 4 5 最后 必须独立运行游戏才能看到效果 二 使用WidgetSwitcher 1 2 3 4 用一个按钮点击进行Index的修改 就可以完成中英文切换 三 用两个T
  • 2-软件生命周期模型

    软件生命周期模型 软件工程过程 工程项目的PDCA循环 戴明环 美国质量管理专家戴明博士针对工程项目的质量目标 将全面质量管理思想引入工程项目过程 提出了PDCA循环 也称为戴明环 即Plan 规划 Do 执行 Check 检查 Actio
  • PTA9文件操作(python3)

    python程序设计09 文件操作 9 1 从文件中查找最长的单词 20分 请勿修改 20 分 9 2 求文件行数 20 分 9 3 analyze the character distribution of a document 20 分
  • 最大报文段长度——MSS

    1 概念 MSS Maximum Segment Size 最大报文长度 是TCP协议定义的一个选项 MSS选项用于在TCP连接建立时 收发双方协商通信时每一个报文段所能承载的最大数据长度 在以太网环境下 MSS MTU 20字节TCP报头
  • unity按钮点击无响应的处理方法

    在程序中给Button控件添加了点击事件后无反应 可能由于下列原因导致 按钮的interactable false或者enable false 父节点如果有CanvasGroup组件 还必须把CanvasGroup组件上的interacta
  • 【CentOS 7.9】基于VMware虚拟机的详细安装教程

    一 下载CentOS 7 9 镜像文件 Linux版本大家自己选择 目前市面还是7 X版本用的多 这里我就以7 9版本为例进行演示 镜像下载地址 https mirrors tuna tsinghua edu cn centos 7 9 2
  • Ubuntu16.04LTS64位安装64JDK9.0.1

    第一步 去Oracle下载JDK 根据自己的需要选择不同的版本 这里选择的JDK9 0 1 下载地址 http www oracle com technetwork java javase downloads jdk9 downloads
  • yolov8保存结果

    找到predictor py文件加上如下代码 for result in self results path result path split images 1 split 0 boxes result boxes box boxes c
  • oracle 数据库truncate,Oracle中的truncate用法

    语法 TRUNCATE TABLE table 在使用truncate语句 DDL语言 可以删除表中的所有记录 使用truncate语句删除数据时 通常要比使用delete语句快得多 这是因为使用truncate语句删除数据时 不会产生任何
  • Spring中进行事务管理的两种方式

    1 Spring中事务管理的API 事务是指逻辑上要么全部成功 要么全部失败的一组操作 例如用户A给用户B转账 则用户A账户余额减少 用户B账户增加这两个操作就是一组事务 必须全部成功或失败撤回操作 不能出现A账户余额减少 B增加失败的情况
  • gvim 编译选项没支持Python. gvim is not python supported

    windows 安装 vim tux 该版本开启了所有的编译支持选项
  • 软件测试工程师工作总结

    1 为什么要在一个团队中开展软件测试工作 因为没有经过测试的软件很难在发布之前知道该软件的质量 就好比ISO质量认证一样 测试同样也需要质量的保证 这个时候就需要在团队中开展软件测试的工作 在测试的过程发现软件中存在的问题 及时让开发人员得
  • 三维物体追踪笔记(1)-基于边缘的三维物体追踪——理论、公式推导与实现

    1 基于边缘检测的三维跟踪建模 三维物体追踪是已知图像中某个物体在已知一系列空间三维点位置 或者是一个3D 模型面片集 的信息下 将这些点通过一个恰到好处的位姿 R t 进行转换后投影到图像上 问题的求解目标是这个位姿 R t 难点是并不知