全空间视频融合---学习之路(一)--直线提取检测--投影纹理--相机姿态标定
在增强现实的实际应用环境中,人们会为全空间大规模场景构造三维模型。为了增强虚拟环境的逼真性和动态性,可以向环境中融合真实世界的视频。透过视频可以获知模型该区域发生的事件。这就有了
摄像机的视频信息和三维模型的全空间融合
研究内容: 1. 依据相机视频图像的场景结构特征进行直线提取的原理与实现。
2. 基于点和直线的二维三维特征对相机标定算法的原理与实现。
3. 投影纹理算法的原理与实现。
4. 视频融合原型系统的设计与实现。
增强现实---AR---由虚拟的图形、图像、声音和真实场景融合的环境。--技术:硬件方面>>显示、跟踪、输入设备驱动技术等。 软件方面>>>解决坐标系、图像配准等。
全空间的视频融合---三维模型从空间上定义了一个场景、视频从空间及时间上定义了一个过程。
研究现状
----1996 加州大学伯克利分校 由照片建模和渲染建筑场景的新方法;建模---综合几何体建模和图片建模的两种算法提出了一种混合的建模方法; 渲染---视场独立的纹理映射方法。
----1998 加州大学伯克利分校 基于视场独立的纹理映射方法如何运用投影纹理映射原理来实现。
----2003 南加大 基于增强虚拟环境的视频监控可视化系统 实时的将动态影像与三维模型融合并显示出来 用户可以查看场景中任意角度下的多时空数据和影像流。
----2006 Hong Hua 实现了一个增强虚拟环境的原型系统 提供了一个将数字信息集成到物理世界的接口。
----2007 融合多种模态数据集实现大规模的城市模型重建。
----2007 南加大 提出了增强虚拟环境中单目摄像机的标定算法>>>利用相机安装位置的先验知识以及图像与三维模型中的对应点、对应直线、图像与模型之间的平行直线这三种约束给出一个关于相机参数的估计,通过参数实现视频或图像的投影与三维模型的准确融合。
----2008 三维CT数据与支气管镜视频的协调融合方法。
################直线提取算法##################
Hough变换
标准霍夫变换(SHT)---原理是用极坐标的方式表达直线,从而将Oxy坐标平面上的一条过点(x0,y0)的直线转化为极坐标平面Oθr坐标平面上的一个点。
累计概率霍夫变换(PPHT)---1)检测输入图像。 2)用从输入的图像中随机选取的一个像素更新累加器。 3)从输入图像中移除上一步中的那个像素。 4)检测这个新像素修改后的累加器的峰值是否大于阈值L, 如果不大于则转到第一步。5)搜索由累加器所确定的像素范围,找到最长的像素段,这个像素段或者是连续的或者存在一个缺口,但不能超过一个给定的阈值。....阈值一:threshold控制某线段的累计值,阈值二:param1 控制最小线段长度,阈值三:param2控制同一条直线进行碎线段连接的最大间隔值
投影纹理映射算法----纹理映射算法解决的是纹理坐标如何生成的问题---三维到二维的投影类型为透视投影--离远则小,离近则大
投影之前,复杂场景都会被转换为许多个多边形,用迭代的方法枚举每一个多边形内所包括的像素。
引入齐次坐标表示投影纹理坐标-
计算投影纹理坐标涉及到的坐标系:
1. 裁剪坐标系---以视点为坐标原点的齐次坐标空间--(x,y,z,w)--坐标
2. 屏幕坐标系---通过裁剪坐标得到---用两个坐标表示二维屏幕上的点
3. 光照坐标系---以光源为坐标原点的齐次坐标空间
4. 纹理坐标系---对应一个纹理,纹理就是光源照射的幻灯片的内容
SCC——C6433P 32X光学高清快球摄像机
MultiGen Creator v3.0.1 ---建设三维模型
OpenFlight 模型数据库
思路:图像与三维模型对应直线的提取--->在三维模型表示出对应的直线,一 一标识出来--->模型中有了点的坐标值,对相机进行标定----->获得相机的内外参数---->推导出真实相机对应的虚拟相机的视点矩阵和透视投影矩阵------>利用这两个矩阵将视频投射(投影纹理映射技术)到三维模型上去,实现视频与模型的渲染
----在投影纹理映射之前,需要完成对相机的标定
----通过相机采集到的视频图像与三维模型中的特征对应利用这些特征来建立约束
基于场景结构特征的图像直线提取
综合图像上直线的斜率、透视性来进行场景的分类,按照图像上直线的斜率的绝对值来对场景进行分类。
k为图像坐标系中直线的斜率
右图用两条红色实线标识的两条白线会在图像左上方或者图像外面汇聚于一点----由于存在透视的原因产生的直线汇聚想象
--特征筛选标准
设交点坐标为(x, y)则x< x(max) ,y<y(max) ; x(max)与y(max)分别为图像的宽度和高度,宽度和高度均以像素为单位。
如上图是一个花坛和马路的组合视频图像,花坛的边界和马路上的交通标志线均可以作为直线特征
(墙的边缘以及墙与地面的交界处是可以作为直线特征的)图中白色的实线段表示直线,红色实心点表示直线与直线的交点。以上的实心点均在现实中真实存在的交点,但也有真实不存在的点,只是由于(图像是由摄像机透视投影的结果)照片与人类的视觉产生的一种虚拟的交点------消影点 如下所示:
----透视投影 , 延伸到无穷远的物体可能被限制在有限范围内
现实中平行的直线,在图像中也是变成了会汇聚的直线,那么考虑是否可以提取出这些点和直线的矢量信息,即获得在图像像素坐标系中,直线的解析式和点的坐标,这对标定相机的参数有很大的用处。
以上三个图是对拍摄的图像进行真实世界的建模,我们需要找到三维模型和相机图像上的共有特征,且这些特征是可以通过技术手段唯一确定
当两条直线相交于一点的时候,此点才可以作为匹配点,如上图所示。当图像检测到直线,但是在三维模型中没有对应的,但与三维模型中的某条线是平行的,也可以作为需要的特征。
特征信息计算----用累计霍夫概率变换检测图像中的 线段 和线段的交点
图像预处理-->Canny算子边缘检测-->边缘提取的基础上做累计概率霍夫变换-->求直线的交点-->对点和直线特征进行主观和客观上的评价-->输出线段两个端点的坐标
图像线段提取=霍夫变换+最小二乘法
传统霍夫变换 : y = kx + b ; 无法将垂直于x轴的直线表达出来 故转换为 -->r = xcosθ +y sinθ
(直线转换为点)
可以按照下方公式,对斜率进行判断筛选特征
----->
---->
检测出来 直线 1 2 3 4 计算出交点 5 ; 在对应模型中可以画出直线6 7 8 和 交点 9
相机的标定---设外参数为R 、C,两个都有三个自由度,则有摄像机矩阵:
---用奇异分解和RQ分解可以从P中获得相机的中心、方位和内部参数,P有11个自由度,即未知数,需要11个方程,每组对应点可以获得两个方程---求解P的方法称为直接线性变换(DLT)---得考虑减少自由度,减少自由度的方法是对相机矩阵P做个初试估计(内参数进行一些限定或对内外参有一些先验知识)。
在给定焦距和相机位置的情况下,如何利用这些对应点和对应直线的矢量信息来计算相机的旋转矩阵R ???
---构建相机坐标系Oxyz,相机中心:点O ,X Y Z轴与世界坐标系的坐标轴平行。p : 三维空间点P在摄像机的作用下在图像平面上的投影点。 C : 主点。T:为OC 与单位球的交点 。T*: T在OP上的投影
P和O是三维空间点P和O在世界坐标系中的坐标,p和c分别是二维图像平面中p点坐标和图像的中心坐标,
相机姿态的角度---通过二维图像绕主轴旋转致使三维空间点在图像上的投影恰好与原来的2D图像点重合的角度。
一对点对的几何误差被定义为,相机中心到三维空间点的所在向量与摄像机中心到二维图像点所在向量之间的夹角。一对线对的几何误差被定义为,通过相机中心和三维空间线的平面与通过相机中心和二维图像中线的平面之间的夹角。
#####相机姿态的完整标定算法######:
1. 事先输入相机位置的搜索的水平区域---在三维模型地平面上确定一个正方形区域作为相机位置搜索的水平区域,并输入相机相对于三维地平面的高度范围。
2. 提取二维图像平面和三维空间中对应的特征点对(或线对、平行关系),选取其中在二维图像平面中距离最远的两对对应点作为相机姿态估计的输入。
3. 在相机位置和焦距构成的四维空间中进行搜索,采样点搜寻的方向是与搜索区域中心点距离增大的方向一致,且初始化E无穷大,开始搜索。
4. 如果搜索区域中所有的采样点都进行了搜索,则进入第 6 步,否则,确定下一采样点进行搜索,设在这一采样点计算得到的相机参数为R*,其平均几何误差为E。如果E<min(E),则让 min(E)= E , R=R*
5. 如果E<3就以R*为初始值用levenberg-Marquardt 算法进行优化。通过优化,如果E<0.3,则进入第6步,否则进入第4步。
6. 结束搜索,输出相机内外参数。
投影纹理映射
投影纹理映射算法----不仅阐释了为每个定点分配纹理坐标的方法,也指明了图元光栅化过程中纹理坐标的计算方法。----这个技术可以实现 将真实世界的物体的照片重投影到这个物体的模型上去
---opengl实现(Open Graphics Library),opengl将两维纹理坐标(s,t)转变为一个有四个分量的齐次纹理坐标(s,t,r,q)
----纹理矩阵 :1)模型视点变换以朝着投影的方向 2)投影变换 3)通过缩放和偏移将近裁剪面映射到纹理坐标。 模型视点变换沿着z轴的负方向将观察者移动到原点和投影中心。将近裁剪面看作需要投影的纹理图像的位置,而纹理图像则被看作一个在投影的透明胶片。
比如可以想象一个观察者在观察位置,透过近平面纹理去看那些需要被贴上纹理的表面。
映射过程
1. 投影机模型变换 --- 指定了三维物体在世界坐标系中的位置和方向,齐次物体空间--->齐次世界空间。
2. 视点变换 --- 指定了摄影机在世界坐标系中的位置和方向, 齐次世界空间--->齐次投影机空间,即将世界空间转变为眼空间。
3. 投影变换 --- 投影机指定视景体(视景体确定了哪些物体在视野内以及物体在视野内的相对大小),齐次投影空间--->齐次投影机裁剪空间。
4. [0,1]范围映射---通过放缩和偏移将投影变换获得的参见坐标映射到[0,1]这个区间上,
齐次投影机裁剪空间--->齐次纹理空间
自动生成纹理坐标的方式是投影纹理映射与传统纹理映射的不同之处,传统的纹理映射,纹理坐标是显式的指定的。在场景组装过程中,投影纹理映射所涉及的投影变换、模型变换和视点变换是在眼空间中定义的,所以最直接的方法是在纹理坐标空间和眼空间之间创建一个一对一的对应关系。
摄像机在场景的地位相当于投影机,纹理创建的图像来源是摄像机的数字图像,对纹理的相关操作的目标就是使纹理和三维模型的区域匹配。投影矩阵和视点矩阵可以分别通过相机的内参数和外参数得到。投影矩阵采用透视矩阵,给摄像机指定透视视景体,使纹理获得观察意义上的透视效果,即在三维漫游过程中,离观察者远的地方物体小,离观察者近的地方物体大。
由内参数推导得出透视投影矩阵的过程:设投影变换中的近、远裁剪面里摄像机镜头的距离为near 、far,这俩决定了相机的拍摄的远近范围。(常设near=1, far设为比较大的数,比如1000),Oc为摄像机光心也是坐标系原点,摄像机的主轴方向为Zc轴负方向。眼坐标系下的三维点是被投影到近裁剪面上的,近裁剪面也经常被称为投影面。共有6个裁剪面:left 、right 2个竖直裁剪面,top、bottom 2个水平裁剪面,以及近远 2个裁剪面。
下图,AB为近裁剪面上的一个向量,A*B*为图像平面上的一个向量,图表示为二者正在YcZc上的投影。
那么,如何由相机的外参数推导得到摄像机视点矩阵呢?
---对于视点矩阵,视点就是观察点,何为最优观察点?---观察者站在相机安装的位置,观察方向与相机的主轴相同的时候。
视频采集和预览模块:从网络上接受摄像机视频并在系统界面上显示出来。视频预处理:将视频图像去噪。
视频图像特征提取:提取视频图像中的直线并将特征信息保存到数据库中。其中直线特征提取是提取用户所选择的摄像机视频图像中的直线,点坐标信息计算是计算用以标识一条直线的两个点的坐标以及两条直线的交点坐标。
三维模型特征提取: 允许用户在三维模型中手工画直线,并记录下标识直线的两个点的坐标。手工画直线是允许用户通过鼠标在三维模型中标识一些直线,点坐标信息计算是计算手工画线时候的起止点的坐标和指定的两条直线的交点的坐标。
摄像机标定:计算摄像机的内外参数。 渲染:实时地将色彩、纹理加到几何体的属性中,其中视频图像的渲染是在三维模型渲染的周期内完成的。
总结:基于场景特点的视频图像直线检测的算法框架,使用累计霍夫变换作为直线检测的基本方法,结合斜率判断和直线拟合等方法修正检测效果。利用视频图像的直线检测结果,在三维模型中寻找对应的直线,并通过手工划线的方式标识出来。
参考文献:
[1]陈明. 全空间视频融合技术的研究与实现[D].华中师范大学,2011.
全空间视频融合---学习之路(一)--直线提取检测--投影纹理--相机姿态标定相关推荐
- 基于直线的最小非线性SLAM相机姿态估计方法
Minimal Non-linear Camera Pose Estimation Method Using Lines for SLAM Applications 1. 介绍 2. 非线性优化方法 ...
- “从视频中学习”——Facebook启动新AI项目,IBM早早探索出AI视频解析新方法?| 硅谷速递...
随着我们日渐掌握越来越强大的计算能力.更先进的计算算法.更易用的软件系统,以及不断下降的数据存储成本,我们正在具备对无处不在的大量视频进行实时分析的能力. Facebook启动Learning fro ...
- web三维gis引擎cesium的学习笔记(包含视频融合和动态纹理)
文章目录 web三维gis引擎cesium的学习笔记(包含视频融合和动态纹理) Cesium.Viewer 坐标系 位置方向 官方api文档及示例 Entity API Primitives API ...
- OpenCV学习之路(附加资料分享)
目录 一.前言 二.学习历程 三.学习资料 书籍 网站 视频教程 四.学习建议 入门 强化 灵通 一.前言 有人问我,学习opencv从哪里学起?有人问我,我学习opencv用到了哪些资料?所以在今天 ...
- 多模态机器学习概述及其音视频融合总结
文章目录 前言 综述总结 摘要 1.1 介绍 1.2 多模态机器学习研究方向 1.3 多模态机器学习发展和应用 多模态表示 联合表示 神经网络 图形模型 序列模型 协同表示 章节小结 翻译 对齐挑战 ...
- 我的Python学习之路(一)_Mr_Ouyang
我的Python学习之路(一)_Mr_Ouyang 笔者按: 本文从18:55开始写作,至19:38中断,又从21:12始继续,至23:22写就. 共计耗时113分钟,总字数9081字,约80.4字/ ...
- APM飞控学习之路:1 无人机的分类与发展
"旧时王谢堂前燕,飞入寻常百姓家".无人机也像那堂前燕,从以前为军事所专属,负责侦查和战斗,飞入民用领域,在航拍.植保.快递.救灾.巡检.拍摄等行业大显身手,无人机+的应用遍地开花 ...
- Maui学习之路(三)--Winui3深入探讨
Maui的学习之路 --- Winui3深入探讨 学习Maui已经有一段时间,随着不断地深入,对Maui有了一些初步的了解. 我们都知道Maui为了保持平台原生特性,所以在每一个平台都使用了平台自身的 ...
- 锤炼自己的专业学习之路
锤炼自己的专业学习之路 任何时候都不打无准备之仗!在校期间学好专业技能,求职的时候就不会心里发慌.正应了那句老话:平时轻松,找工作不轻松:平时不轻松,找工作就轻松.那么,对于很多计算机相关专业的同学来 ...
最新文章
- AME_Oracle自带AME审批链详解AME Standard Handler(概念)
- jquery插件:图片上传按比例预览
- 运行时权限+读取系统联系人
- SAP UI5 应用开发教程之四十六 - 使用 Message Manager 实现开箱即用的验证(Validation)信息抛出
- 《零基础看得懂的C++入门教程 》——(10)面向对象
- python截图拼接_Python实现屏幕截图有两种方式 - 小众知识
- 《JavaScript DOM编程艺术》笔记
- 大学毕业10年,同学之间的差距是怎样拉开的?答案很现实!
- suse 安装oracle11,Suse11安装Oracle11gR2
- kotlin int最大值_Kotlin程序查找三个数字中的最大值
- clocks_per_sec 时间不正确_测血糖的正确做法:这4步一定别搞错了
- hdu 1880 魔咒词典 (字符串哈希)
- 截图并使用libjpeg库压缩BMP为JPG与将JPG转换为BMP
- 高频引力波数值计算matlab,李刚李莉张雏黄敬霞受热变形及系统优化分析J光.doc...
- 苹果ipad找不到服务器怎么办,找不到网络怎么办 ipad无法加入无线网络解决方法【详解】...
- 当计算机没有网时,怎么连接网络?
- 2010年Ei收录的中国期刊
- 小心钱财不翼而飞!微信绑定银行卡的有必要点击这个按钮!
- libxml2对XML文件的创建、解析、查找、修改
- 面试必备:ArrayMap源码解析