三维透视变换(共3篇)
三维透视变换 篇1
QR码作为一种成本低廉、识别率高的二维条码, 在智能的系统中发挥着重大的作用[1]。识别QR码的关键问题就是定位和校正, QR码通常被打印在平面或圆柱面上, 对于平面QR码。文献[2]利用霍夫变换定位出条码的四个角, 但该方法要求图像中只存在一个条码并且条码背景简单;文献[3]将条码图像分拆成多块并使用边界检测的方法找出条码的四角;文献[4]通过Candy边界检测提取条码的外部轮廓;文献[5]利用条码的梯度特征获得条码区域。但这些方法只能识别平面QR码。当条码被打印在瓶子等圆柱面上时, 使用传统透视变换方法将导致条码信息定位错误。文献[1]通过检测寻像图形 (timing pattern) 来获取采样点信息, 但这种方法对寻像图形的清晰度十分敏感。本文利用定位图形 (finde pattern) 的轮廓特征, 通过改进的霍夫变换提取条码的轮廓, 并通过三维透视变换的方法将条码采样点的信息映射到原图, 针对平面和圆柱面的条码提取有较好的效果。
1 条码定位
QR码的结构如图1 所示, 包含回字型的定位图形 (finder pattern) 以及黑白相间的寻像图形 (timing pat-tern) , 还包含版本、格式等信息[6]。
在图像预处理阶段, 利用自适应门限提取[7]的方法将灰度源图像转换为二值图像, 并通过轮廓追踪[8]记录所有的轮廓点信息, 经过这些处理后, 利用每个闭合轮廓的重心位置和角点信息获得定位图形的位置及其对应的轮廓。
1.1 定位图形提取
定位图形有很明显的特征:三个闭合轮廓有相同的重心。轮廓的重心可以通过式 (1) 计算得出[9]:
式中:gx和gy分别代表重心点的x, y轴坐标;f (x, y) 是 (x, y) 处图像的灰度值。在轮廓图像中取逻辑值0 或1, 因此式 (1) 可以简化为:
式中:n为轮廓上的像素个数。
将重心重合的几个轮廓作为候选轮廓, 使用角点检测[10]的方法得出轮廓中的角点位置:一个轮廓可以表述为n个点的集合P ={pi= (xi, yi) , i = 1, 2, ⋯, n} , 轮廓中的一定相邻点构成的线段有一个协方差矩阵:
矩阵C的两个特征值可以用来获取线段的形状信息, 较小的特征值λs可以用来表述线段在某点处的尖锐程度[10]:
因此当某点处的 λs大于某预设值并比附近点的 λs都大时认为该点是轮廓的一个角点。图2说明定位图形的提取结果:轮廓的重心使用+标出, 角点使用*标出。
1.2 条码边界提取
在定位图形轮廓已知的基础上使用霍夫变换[11]用于提取条码的边界。霍夫变换将线上的点变换到参数空间, 并投票计算最有可能的直线或曲线方程。以直线为例, 直线可以描述为 ρi= x cos θi+ y sin θi, 其中 ρi表示直线到原点的距离, 而 θi表示直线与y轴的夹角。通过计算每个点 (x, y) 对应的参数空间 (ρ, θ) 的可能值进行累加比较最终得出 (ρ, θ) 的取值并确定直线。霍夫变换同样适用于曲线的提取[12]。
传统的霍夫变换计算量较大, 可以通过缩小参数空间的方法来减小计算量[13], 由于本文的定位图形的轮廓已知, 可以利用该信息计算出可能的参数空间取值组合, 再针对该缩小的参数空间使用霍夫变换, 最终得到轮廓的方程, 大大减小计算量。使用上述方法提取出的轮廓如图3 所示。
2 条码几何校正
当摄像头的角度或方向不是正对条码时, 捕获的图像就存在失真, 利用反透视变换[14]可以校正条码实际采样点的位置以重构条码。在使用线性摄像头拍摄条码的场景中, 可以使用3×4 的矩阵来建模从世界坐标到图像坐标的变换, 这个矩阵称为射影矩阵[14]:
式中:u和v代表一个点在图像平面中的坐标值; (x, y, z) 描述了这个点在世界坐标系中的位置;k为比例系数;m11~ m34构成了射影矩阵。
2.1 平面条码的采样点提取
当条码打印在平面上时, 式 (6) 中的z轴坐标全为0, 可以化简为式 (7) :
将式中的k消去, 可以得到式 (8) 所描述的关系:
可以令m33= 1 ( k乘以某个系数) , 那么式 (8) 变成了有8 个未知数的方程, 因此只要得到4 个点在两个坐标系中的对应位置 (xi, yi) (ui, vi) , 就可以解出射影矩阵m11~ m32 (这里可以利用条码轮廓四个角对应的坐标) , 进而获得所有条码采样点对应到图像平面的坐标, 其映射关系可以描述为:
2.2 圆柱面条码的采样点提取
当条码被印刷在圆柱面上时, 采样点的提取过程和平面类似。不同的是, 需要考虑世界坐标系中z轴取值, 此时射影矩阵的大小变为3×4, 因而需要6 个点的对应关系来解出11 个未知数的方程, 在之前4 个点的基础上增加两个定位图形的角点作为输入。类似的, u和v可以通过式 (10) 计算出来:
为了获取6 个点在世界坐标系中的坐标, 将世界坐标系的三个轴定为图4 所示的位置, 将条码的轮廓边长归一化, 于是圆柱面上点的坐标值x, y, z可以通过半径r计算出来, 将r作为一个未知数代入, 可以得到一个12 元方程, 并解出射影矩阵。
将归一化的条码图像中的采样点反向映射到原图中得到二进制值, 并按照QR码的解码规则提取出条码中的信息。
3 结果与分析
使用本文算法对平面和圆柱面条码处理的效果如图5 和图6 所示, 图5 中打印在条码上点标记了使用本文算法后获得圆柱表面条码的各模块采样点。而图则分别显示了使用本文算法对平面、圆柱面条码处理之后重构出的新条码。
图5 和图6 都说明该算法能较好的得到平面或圆柱面条码的模块采样点进而完成条码的重构。
为进一步验证算法的效果, 针对平面和圆柱表面分别获取在各种不同大小的图像进行处理识别, 并和文献[1]的BSE算法以及开源QR码识别库libqrencode比较。
图7 解码结果表明, 算法不仅对平面条码具有很好的识别能力, 对圆柱面条码也具有较强的适应性。与文献[1]相比, 识别圆柱面条码的准确率不依赖寻像图形的清晰度, 能提高识别系统的鲁棒性。
摘要:传统的QR码识别算法只适用于打印在平面上的条码, 提出了一种有效识别打印在饮料瓶等圆柱面上的QR码。通过对图像轮廓进行角点检测确定回字定位图形, 在此基础上筛选条码关键轮廓并对其进行霍夫变换提取圆柱面上的透视椭圆信息, 同时结合透视椭圆的参数和三维透视变换, 有效构建了圆柱面条码像素从二维图像平面直接映射到三维图像空间的变换矩阵, 重构打印在平面或圆柱面上的QR码目标。实验结果表明, 该算法对平面或圆柱面QR条码的识别有较高的准确率。
关键词:QR码提取,霍夫变换,圆柱面,三维透视变换
三维透视变换 篇2
Virtools是法国达索公司推出的一款三维虚拟现实开发软件,已经被广泛地应用到了游戏开发、工业仿真和虚拟教学培训等领域。目前市场上进行虚拟现实开发的软件平台有许多种,如Unity3D等,这些软件平台需要开发者有很好的软件编程语言基础,如C#、Java等,而Virtools与其他开发软件平台最大的不同之处在于,Virtools不需要使用者编写代码,而是按照一定的逻辑关系,将一些具有特性功能的Building Blocks (简称BB),采用拖放的方式,放置到特定对象(Object)或者角色(Character)的脚本(Script)编辑区域,并用连线将这些BB按照一定的动作逻辑关系连接起来,从而形成一个完整的虚拟交互功能。当开发的项目需要更加复杂的功能,而BB实现过于繁杂时,Virtools提供了VSL脚本语言和SDK开发包。通过结合BB,VSL脚本语言和SDK开发包,可以更方便和出色地完成项目的工作。基于以上的优点,Virtools在理论教学和实践教学中得到了广泛的应用。
2 Virtools在教学中的应用现状
Virtools虚拟现实平台因其开发的便利性而在高校的虚拟实践教学中得到了广泛的应用。钱琨等[1]基于Virtools构建了虚拟的数字设备与装备,用于完成技能鉴定、考核和联系的需要;岳青松等[2]基于Virtools开发了水电机组的虚拟拆装操作系统用于培训检修人员的专业技能;王盼盼[3]基于Virtools开发了虚拟测绘系统用于教学实践中。戚晓利等[4]基于V irtools开发了辊式破碎机虚拟实验教学平台;陈浩[5]等基于Virtools开发了机械装备的虚拟拆卸平台用于生产培训。在类似这些项目中,常常需要通过电脑的鼠标来操控虚拟现实作品中的物体,鼠标光标在二维屏幕平面上移动,而物体处在三维坐标系表示的虚拟空间中,要实现二维的鼠标移动来拖拽三维空间物体运动。而在Virtools平台中,没有现成BB可用,要实现鼠标点选操作虚拟三维空间物体移动的功能,要采用Virtools的编程语言VSL写程序代码,在程序的开发过程中需要运用透视变换和逆透视变换技术。
3 透视变换和逆透视变换
透视变换的原理就是通过一系列的转换,将虚拟三维空间中的物体,形成一个二维的画面显示在屏幕上。通过人从窗口看屋外风景的例子来描述其透视变换过程为:假设处在房间内的某人通过窗户上的玻璃来观察外面的风景如图1所示。如果将玻璃作为计算机屏幕,来临摹窗外所看到的景物,可以得到如图2所示的窗户上的临摹图和窗外实际风景图的对比,通过图2可知,窗户外边是现实的三维世界,而窗户玻璃上是平面图形。三维世界的物体就这样被映射到了二维的画面上。通过程序来实现这样的功能,称为透视变换。
在虚拟现实中实现透视变换,窗外的风景相当于虚拟现实场景中的3D模型,观察人的位置相当于虚拟三维世界中摄像机的位置,而窗户相当于屏幕。通过三点共线原理(如图3所示),使得虚拟三维世界中的物体与摄像机之间的连线与屏幕之间的交点,就可以得出三维空间的物体在二维屏幕上的位置。
逆透视变换是透视变换的逆过程,就是将屏幕上二维鼠标的运动转换到虚拟三维世界中物体的运动。在程序中实现的基本过程是,先得到鼠标单击点出的屏幕坐标,通过摄像机和鼠标点击处形成一条射入虚拟场景中的射线,如果该射线与虚拟场景中的3D物体相交,则获取该物体的信息,包括物体的名称、交点的位置、方向及交点与摄像机之间的距离。这样就实现了通过屏幕上二维鼠标确定虚拟现实场景中三维物体的方法。
4 Virtools中的实现
在Virtools中有两种透视变换方法,分别是“透视投影”和“平行投影”。透视投影中离摄像机越远的物体投影到屏幕上后越小,距离摄像机越近的物体投影到屏幕后就越大,这很符合人类眼睛看世界的规律;而平行投影是把三维场景投影成一张平面地图,没有远近大小之分。绝大多数虚拟现实项目采用的是透视投影。
在Virtools中,实现透视变换和逆透视变换,并能够通过鼠标控制零件移动所涉及的程序指令为:GetInputManagerGuid (),它的作用是得到输入设备的全局唯一标识符,将该标示符作为输入参数传给函数bc.GetMangerByGuid ()就可以得到输入设备iM标示的输入设备。函数iM.GetMousePosition (pos2D,FALSE)中的第一个参数可以得到鼠标的位置,但是这个位置的值由第二个参数设置,如果为true,则鼠标的(0,0)是显示器的左上角的(0,0)位置;如果为false则鼠标的(0,0)位置是当前程序窗口的(0,0)位置。ScreenToViewpoint这个函数的功能是根据2D的屏幕坐标求一个3D的坐标,这种用法一般用在一些3D物体固定在摄影机前的位置,跟随摄影机一起移动,该算法是以摄影机为起点,以鼠标制定的场景中某一点求一条射线。
rcx.ScreenToViewpoint (pos2D,pos3D,FALSE)就是把屏幕的2D位置转换成3D位置的函数,第一参数使输入一个要转换的2D位置,比如鼠标的位置;第二个参数使一个Vector变量,当函数调用成功后,转换的结果存储在这个变量中;第三个变量为bool型,当其为true时,表示第一个参数的鼠标位置是以桌面左上角的(0,0)为原点的坐标位置;当其为false时,表示第一个参数的鼠标位置是以应用程序窗口左上角的(0,0)为原点的鼠标位置。
根据屏幕的2D位置得到3D位置,反过来也可以通过场景中的3D位置得到屏幕坐标,方法就是调用函数Transform即可。
参考文献
[1]钱琨,谭耀洲,陈文红.基于Virtools软件构建的职业技能鉴定模拟考试与训练系统[J].科技创业月刊,2016(3).
[2]岳青松,叶建波,谢红彪,等.水电机组虚拟检修培训系统软件平台开发[J].水电与新能源,2016(1):7-11.
[3]王盼盼.基于Virtools的虚拟测绘系统的设计[J].实验技术与管理,2015,32(3):148-151.
[4]戚晓利,许健,潘紫微.基于Virtools的虚拟实验教学研究[J].中国信息技术教育,2015(18):72-75.
三维透视变换 篇3
随着科学技术的迅速发展,数字图像的应用领域越来越广,如监控图像、医学图像、气象图像以及网络图像等。
在图像的采集、输入、存储、处理过程中不可避免地引入一些噪声而使图像降质,这给信息获取或图像的后期处理带来了极大的困难。为了提高图像质量,需要对降质图像进行处理,恢复出原始图像。
近年来,提出了许多消噪方法,从均值滤波[1]、中值滤波到后来的小波变换降噪以及通过MATLAB下的小波工具箱进行降噪、稀疏表示[2]、K均值聚类[3]、奇异值分解方法、形状自适应变换、双边滤波、非局部均值方法[4]和非局部协同滤波等。
本文提出一种在变换域的加强稀疏表示来进行图像降噪,它在降噪的同时能较好地保留图像的细节。
2 算法
在提出的算法中通过块匹配来实现分组,通过在三维变换域收缩来实现协同滤波[5]。图像片段使块具有固定大小。算法步骤如下:输入噪声图像,为每个块连续提取参照块,寻找跟参照块相似的块,堆叠它们建立三维数组;对组协同滤波,返回获得的所有组块的二维估计到它们的初始位置;处理完所有相关的块,获得的块估计可以重叠,对每个像素就有多个估计。然后聚集这些估计建立整个图像的估计。
通过两种不同的形式提出两步算法,步骤如下。
2.1 基本估计
2.1.1 块估计
首先对噪声图像中的每个块进行分组,寻找跟正处理的块相似的块,堆叠它们在三维数组中。之后设置协同硬阈值[6],即对形成的组采用三维变换,通过变换系数的硬阈值衰减噪声,逆三维变换产生所有组块的估计,返回块估计到它们的初始位置。
2.1.2 聚合
通过权平均所有获得的重叠块估计来计算真实图像的基本估计。
2.2 最终估计
2.2.1 块估计
首先对噪声图像中的每个块进行分组,用块匹配在基本估计中寻找与现在处理的块相似的块位置,用这些位置建立两个组:一个建立噪声图像;另一个建立基本估计。
之后对图像进行协同维纳滤波,对组进行三维变换。对噪声组用维纳滤波应用基本估计的能量频谱作为真实能量频谱。通过应用逆三维变换在滤波系数产生所有组块的估计,返回块估计的初始位置。
2.2.2 聚类
通过聚类所有加权平均获得的位置估计来计算真实图像的最后估计。上述算法第二步有两个重要的激励:1) 用基本估计代替噪声图像提高块匹配分组;2) 把基本估计作为维纳滤波的实验信号比简单的噪声数据的三维频谱硬阈值更为有效和准确。
2.3 观察模型和概念
噪声图像z:X→R,z(x)=η(x)+y(x),x∈X。其中x是二维图像空间坐标,属于图像域x⊂Z2;y是真实图像;η是均值为0、方差为σ2的高斯噪声。Zx为从z中提取的固定大小为N1×N1的块,x是块左上角的坐标。为了区分第一步和第二步的参数,分别用上标ht(硬阈值)和wie(维纳滤波)。如Nht1表示第一步的块大小。
2.3.1 块估计
这一步是在滑动窗口模式中处理相关的图像块。“处理”代表分组和建立所有分组块的真实信号。
固定现在处理图像块为ZxR,下标xR表示参考块。
1) 分组和协同硬阈值
通过在噪声图像z中块匹配实现分组。只有相对于参考块的距离小于固定阈值的才考虑为相似,然后分组。
如果真实图像y可用,块距离[7]为
undefined
式中:YxR和Yx分别为图像y中位于xR和x位置的图像块。
只有当噪声图像z可用,噪声块ZxR和Zx距离计算为
undefined
如果块ZxR和Zx不重叠,那么噪声块ZxR和Zx的距离为没有中心的开平方随机变量,均值为
E{dnoisy(ZxR,Zx)}=dideal(ZxR,Zx)+2σ2 (3)
方差为
undefined (4)
方差渐近于σ4,因此,相对大的σ或小的Nht1,不同dnoisy(ZxR,Zx)的概率密度趋向于严重的重叠,会造成错误分组。理想的距离与阈值相差越大,块匹配越相似,距离小的被排除。
通过采用在块上二维线性归一变换实现预过滤,来获得系数硬阈值,结果为
undefined (5)
式中:Υ′硬阈值为λ2Dσ;Τht2D是二维线性变换归一化。
由式(5)可得,块匹配BM的结果为一组类似于块ZxR的块坐标。
ShtxR={x∈X:d(ZxR,Zx)≤Τhtmatch} (6)
式中:Τhtmatch是可考虑为相似的最大块距离。获得ShtxR后,通过堆叠匹配噪声块Zx∈ShtxR形成大小为Nht1×Nht1×|ShtxR|的三维数组,排序对结果没有影响。
协同滤波ZShtxR通过在三维变换域的硬阈值实现。三维线性变换归一获得对真信号组YshtxR好的稀疏,通过硬阈值进行噪声衰减,利用下面的逆变换产生块估计的三维数组
undefined
式中:Υ′硬阈值为λ3Dσ;数组undefined由|ShtxR|堆叠块估计组成。
2) 分组和协同维纳滤波
因为噪声在undefinedbasic中假定为衰减,可以用归一平方ℓ2距离取代基于阈值的d距离来进行基本估算。
undefined
之后分别从基本估计和噪声观察2个角度用SwiexR建立两个组:
(1)undefined通过堆叠基本块估计undefined;
(2) ZSwiexR通过堆叠噪声块估计Zx∈SwiexR。
定义从三维变换基本估计组系数能量来维纳收缩系数
undefined
通过元素到元素噪声数据的三维变换系数Τwie3D和维纳收缩系数WSwiexR来实现噪声块的维纳协同滤波,之后通过逆变换Τwie-13D产生组估计
undefined
2.3.2 通过聚类全局估计
真图像的初始估计和最终估计,将聚合相应的块估计undefined和undefined,通过有重叠块估计的像素位置的权平均来进行聚类。
1) 权聚类:有效的权聚类是噪声块估计,权重应该小。
定义权
式中:NxRhar是经过硬阀值后系数的保留数目。
同样,对每一个xR∈X,定义权如式(12)来进行组估计。
wwiexR=σ-2||WSwie∞R||undefined (12)
一方面,确保独立将造成只允许在没有重叠的块中进行匹配;另一方面,如果可能的重叠被考虑,每个变换系数的方差将要求考虑相对系数的协方差。本文算法中用重叠块,但是不考虑协方差。
2) 权平均聚类:
全局基本估计通过式(7)获得的块估计undefined,然后对其进行权平均计算得
undefinedbasic(x)=undefined
式中:xxm是位于xm∈X块的平方的特性函数。单位块的估计undefined是零填充的,不受图像块的影响。
3 结果及分析
在MATLAB R2008a下实现不同标准差下BM3D算法的降噪效果,如图1所示。
用峰值信噪比和结构相似度算法对BM3D降噪算法进行评价,结果如表1,MSSIM结果图如图2所示。
并将BM3D降噪算法跟非局部均值降噪进行比较,结果见表1。从表1可以看出相同的标准差下BM3D降噪算法有较高的结构相似度值,随着标准偏差σ的增大,峰值信噪比PSNR[5]逐渐减小,而结构相似度也随之减小,这是由于在标准偏差σ增大的同时,噪声成分也增多,这一点在图2中也有体现。
4 结论
通过三维块匹配滤波算法进行图像降噪,可以看到提出的算法在下面3个方面有很好的保留:
1) 均匀区域和平滑强度转换;
2) 纹理和重复模式;
3) 尖锐边缘和奇异点。
今后的工作是寻找更能准确评价降噪效果的算法以及能更好地反映人类的视觉效果的图像降噪算法。
参考文献
[1]BUADES A,COLL B,MOREL J M.A non-local algorithm for image de-noising[C]//Proc.IEEE Conf.Comput.Vision Pattern Recognition.[S.l.]:IEEE Press,2005:60-65.
[2]GUERRERO J A,PORTILLA J.Deblurrung-by-denoising using apaiallyadaptive gaussian scale mixtures in overcomplete pyramids[C]//Proc.IEEE ICIP 2006.[S.l.]:IEEE Press,2006:625-628.
[3]HE Yanmin,GAN Tao,CHEN Wufan,et al.Adaptive denoising by singular val-ue decomposition[J].IEEE Signal Processing Letters,2011,18(4):215-218.
[4]姜三平.基于小波变换的图像降噪[M].北京:国防工业出版社,2009.
[5]吴秀英,胡海平.基于小波变换和人眼视觉系统特性的图像降噪方法[J].应用数学与计算机数学学报,2011,25(1):74-79.
[6]钱小军.图像质量评价算法研究与工程应用[D].西安:西安电子科技大学,2009.