124 lines
18 KiB
Markdown
124 lines
18 KiB
Markdown
<h1 align="center">
|
||
<a href="https://github.com/Tang1705/Reconstruction" title="3D Reconstruction of high-speed rail-wheel based on coded structured light">
|
||
<img alt="Reconstruction" src="http://static.zybuluo.com/TangWill/jhiwlfucn275608lfkr5yw86/icon.png" width="200px" height="200px" />
|
||
</a>
|
||
<br />
|
||
基于编码结构光的高铁轮轨姿态三维重建
|
||
</h1>
|
||
|
||
<p align="center">
|
||
3D Reconstruction of high-speed rail-wheel based on coded structured light
|
||
</p>
|
||
<div align="center">
|
||
<a href="http://scit.bjtu.edu.cn/cms/item/4605.html">
|
||
<img alt="Organization" src="https://img.shields.io/badge/Organization-BJTU-072063.svg?style=shield&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAaCAYAAABCfffNAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQ4SURBVEhLfZZ3qI5RGMC/j+vae3Otskn2JmSma0SZJUkR4h+biBuyytZNyChKlJ0tIbtsMq+V7L1dv9/nfa/vWk/9Ot973nOe5zzrvF808h9JT0/PztAIWkBR+ArZ4BtkhadwEE5Eo9EvjH+VfxrBQG+G5nAGDkBFOIqyj4y+L8LgATTeFLbDNt6nM/5f2FwSZkMPyAdRyAqDIEewJgF6Qr3gOQcMhHmQ37l4yRKMMWFBJYbRsA5ywoe4k92F8j9/RpzLBW980DtYxU/3aUgvMyTDCC9KMwyBuXABSkIt5l3TGsxFF543MI6HNCjqe9Cz9jznAQ85h+fcjDHJyAmT0xg2caLzwbNG3sEY0EOV3oeXYEjKgp5dguVQHc6w/yV76/K7O78nM/70hMk2DB/AkyU5h3iANWCFTYKJcAzygcbnwzgoBItBY6/Yr87HoLHGjJFYUhmXgp44qZIdsAJ2g7HuAu1AhaXAAngPHs78DIVW0BdqQQfQaFsYqlVdOwePwHI8DWPhOmjoO6jA8DwDRS9rQzIh+cS4BB7ASCgIR2AfqKOiRuyFgyxW2RbwtMVgIXOfAyW+awIWh3IHzN1wI8EaG3Em1IcbcIg5c2fvdNSICt1kKRrLBHjB7zQUtIWWPNvpO8EwGV4rx1Cam+6sSWb0MG+hLHs9lHIbYp4kMOkCC8BnO/2sz8gUSAGbrjA0A2Ou9/3BMBta93SEk5CMnljVolcPoyr9/WrxFMZXGQbHwRPaYIkBVpz7vLd6wjKwrC1z5+N1ftFITAIvfPkaDIknMe56Y3Ma0lMBJ8CyPsAabwILwjDbsOYiXmKeJGLAhM6AMqCLlSGU4qCiBXAVroDGvQzD2JtX+6wCuD8JnfXDsGnkc/DChdVgL7QMFyANwJD1Asu2DthPPSAUbwLFdrAF7H5zZ8990shNyAu3wEaztnW5DobsfivH/hGrJaQ57y135SHYnOoz+R5Ew+UgzcnDYPKMs+EysbvAO8tkXwa/JTWhahyWthWn2IBW2FowIq5X7Pw98deKpTgK9MKrxITr4QTwQ2UI9MbfHu4iPAnmvAj1ZBZYkaZgNbh3RBaS56dUpQNgM3jj6q5GrKhU8N5S/MaIV7pJN5TewJb8VLBXbNj90A9Woj8juZawSg2TFbKLl68DL01wZ1CpXtj9htSSdW4PuK8b1Ah+e2k2RMc8xl9Ng0JP55U9lpePefbLZ4dbtnpriIy1YbOETaw3hUa7gt/5reD6wZCCnheMmTpTQybQL+Mi8F4yvrpvxajsHpgzPSqGksOBt67zD4eHsQCm8y68sTMbUQKP/IQ+h/VgjvRIcb3euMbSnw6GrAD0Ab1PxUCmrv/DiIIh5/0g2YBWkXG3F/TKq0MvzUkJ8MNUBTai/BDjH/JXI6EExrwFOoHfcxWH/168JWxgD3ANA+EV85tEIj8AtaCkdv/9vSUAAAAASUVORK5CYII=" />
|
||
</a>
|
||
<a href="https://tang5618.com/wordpress/?p=598">
|
||
<img alt="Webpage" src="https://img.shields.io/badge/Link-Webpage-c00000.svg?style=shield&logo=wordpress" />
|
||
</a>
|
||
<!--<a href="https://github.com/Tang1705/Reconstruction">
|
||
<img alt="Github" src="https://img.shields.io/badge/Github-%20%20%20%20%20%20Repository-%2324292e.svg?style=shield&logo=Github" />
|
||
</a>-->
|
||
<a href="http://tang5618.com/data/pdf/wordpress/tq.pdf">
|
||
<img alt="Poster" src="https://img.shields.io/badge/Poster-PDF-B50052.svg?style=shield&logo=adobe-indesign&logoColor=ffffff" />
|
||
</a>
|
||
<a href="https://github.com/Tang1705/Reconstruction/raw/master/Exe/Reconstructionn.exe">
|
||
<img alt="Software" src="https://img.shields.io/badge/Release-EXE-2f528f.svg?style=shield&logo=windows" />
|
||
</a>
|
||
<a href="https://github.com/Tang1705/Reconstruction/raw/master/Doc/%E7%BB%93%E6%9E%84%E5%85%89%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA%E8%BD%AF%E4%BB%B6%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C.pdf">
|
||
<img alt="User-Guide" src="https://img.shields.io/badge/User%20Manual-PDF-548235.svg?style=shield&logo=adobe-acrobat-reader" />
|
||
</a>
|
||
<a href="https://github.com/Tang1705/Reconstruction/raw/master/Doc/%E7%BB%93%E6%9E%84%E5%85%89%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E5%88%86%E6%9E%90.pdf">
|
||
<img alt="Software-Design-Patter" src="https://img.shields.io/badge/Design%20Pattern-PDF-548235.svg?style=shield&logo=latex" />
|
||
</a>
|
||
<br/>
|
||
<br />
|
||
<a href="https://a.paddle.com/v2/click/16413/119403?link=1227">
|
||
<img src="https://img.shields.io/badge/Readme-%E4%B8%AD%E6%96%87%E7%89%88%E6%9C%AC%20%E2%86%92-gray.svg?colorA=655BE1&colorB=4F44D6&style=for-the-badge"/>
|
||
</a>
|
||
<a href="https://a.paddle.com/v2/click/16413/119403?link=2345">
|
||
<img src="https://img.shields.io/badge/Readme-English%20Version%20%E2%86%92-gray.svg?colorA=61c265&colorB=4CAF50&style=for-the-badge"/>
|
||
</a>
|
||
<!-- <p align="center">
|
||
<a href="./Readme.md">中文版本</a>
|
||
·
|
||
<a href="./Readme-en.md">English Version</a>
|
||
</p>-->
|
||
</div>
|
||
<p style="text-indent:2em">高铁轮轨姿态反映了车轮与钢轨之间复杂的动态相互作用和约束关系,掌握他们之间真实接触姿态是保障高速铁路安全运营的重要基础。如何能够精确获得高铁轮轨姿态一直是国内铁路科研的热门研究领域。但单单从二维图像上获取轮轨接触姿态是不精确、不可靠的,而将轮轨表面的特征点提取出来,重建出一个三维模型能更加真实、准确地获得轮轨接触姿态。
|
||
|
||
|
||
由于高铁列车运行速度快,轮轨表面相对光滑且无明显特征点,给基于特征点提取的三维重建带来了极大挑战。
|
||
|
||
<p align="center">
|
||
<img src="https://raw.githubusercontent.com/Tang1705/image_set/master/%E5%9F%BA%E4%BA%8E%E7%BC%96%E7%A0%81%E7%BB%93%E6%9E%84%E5%85%89%E7%9A%84%E9%AB%98%E9%93%81%E8%BD%AE%E8%BD%A8%E5%A7%BF%E6%80%81%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA/00.gif" alt="01" width="45%" height="45%" hspace="10" /> <img src="https://github.com/Tang1705/image_set/raw/master/%E5%9F%BA%E4%BA%8E%E7%BC%96%E7%A0%81%E7%BB%93%E6%9E%84%E5%85%89%E7%9A%84%E9%AB%98%E9%93%81%E8%BD%AE%E8%BD%A8%E5%A7%BF%E6%80%81%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA/01.gif" alt="02" width="45%" height="45%" />
|
||
<br>
|
||
</p>
|
||
|
||
三维重建技术是计算机视觉技术的一个重要分支,是计算机视觉和计算机图像图形学相结合的一个热门研究方向。根据测量时是否与被测物体接触,可分为接触式测量和非接触式测量。
|
||
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/whr8ntyjbkbmlpt1vo2vjypn/15.png" alt="16" width="70%" height="70%"/></div>
|
||
|
||
接触式测量方法虽然测量精度高,但测量效率低,速度慢,操作不当很容易损坏被测物体表面,而且由于探头有一定表面积,对表面复杂的物体难以测量,不具备普遍性和通用性。非接触式三维测量方式又可以分为两大类:主动式测量和被动式测量。前者是向目标物体表面投射设计好的图案,该图案由于物体的高度起伏引起一定的畸变,通过匹配畸变的图案获得目标物体的。后者是通过周围环境光对目标物体进行照射,然后检测目标物体的特征点以得到其数据。非接触式测量方式以其无损坏、测量速度高、简单等优点已成为三维轮廓测量的研究趋势。
|
||
|
||
项目采用的编码结构光法利用投影仪投射出的一定模式的编码结构光图案对目标物体进行编码,利用摄像机获取物体图像,通过计算机对所得图像进行解码处理,利用摄像机中的图像点和投影仪中的点对应关系计算物体表面点的空间坐标,获得物体的三维信息,从而还原物体三维形状,结构光系统如下图所示。
|
||
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/3jpt7b5voqdn28xy61mr7etf/16.png" alt="17" width="80%" height="80%"/></div>
|
||
|
||
编码结构光法三维重建技术主要由系统标定、结构光编码、图像获取、结构光解码和三维坐标计算等5个关键技术组成。
|
||
|
||
- 系统标定:系统由摄像机、投影仪和计算机组成,标定的目标是计算摄像机和投影仪内参矩阵、镜头畸变系数和两者之间相对位置的外参矩阵;
|
||
- 结构光编码:通过编码的方式使图像每一点的“身份”可以被识别;
|
||
- 图像获取:投影仪向物体投射编码结构光图案,图案会随物体表面形状的调制而发生畸变,摄像机拍摄被物体调制过的结构光图像,变形的图像反映了物体表面形状的三维信息;
|
||
- 结构光解码:对捕获的结构光图像进行解码,解码的方法取决于编码的方法,目的是建立相机平面和投影平面特征点之间的对应关系;
|
||
- 三维坐标计算:利用解码算法得出的特征点对应关系和系统标定结果,基于三角测量原理求出特征点的三维信息。
|
||
|
||
结构光的编码方式主要有时间编码和空间编码两种。时间编码虽具有较好的重建精度,但由于需要向物体表面投射多张图片,所以对于运动物体来说时间编码的结构光重建不是一个好的选择.空间编码虽然重建精度相对没有时间编码好,但由于只需投射一张图片,所以常常用于动态物体的物体重建。
|
||
|
||
综上所述,针对项目中轮轨表面光滑,特征点不易提取的难点,可以通过向物体表面投射编码图案,人为地增加物体表面的特征点。而空间编码只需单次投影,适合动态物体的重建,故本项目主要研究通过空间编码的方式获得相对更高精度和高密度的三维点云(点云,即物体表面特征点的集合,这些点包含了物体表面的三维坐标及颜色等信息)。
|
||
|
||
项目前期,对项目研究内容进行深入了解,根据研究内容查阅相关文献资料,了解了目前各项技术研究现状,能够明白经典方法的原理并能够将其实现。在学习并理解了研究内容及相关原理的基础上,对空间编码中的基于 De Bruijn 序列编码和基于伪随机矩阵编码两种方式的有关理论及其相关论文进行了学习,部分论文如下所示。
|
||
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/epo24nprhgogp1g0s38hiwy7/02.png" alt="03" width="30%" height="30%" /> <img src="http://static.zybuluo.com/TangWill/6q8x3x920nxdyluimu43gut1/03.png" alt="04" width="30%" height="30%" /> <img src="http://static.zybuluo.com/TangWill/z6giu9sqibq08fc1crweplxa/04.png" alt="05" width="30%" height="30%" /></div>
|
||
|
||
项目中期,对前期所阅读的文献和经典算法的实现进行研究、归纳、整理。参照本项目的研究内容拟选出适用的相关算法与技术,提出实验思路,制定实验方案。
|
||
|
||
伪随机序列具有良好的窗口特性,即通过一个较小的窗口在编码图案上面移动时,每个窗口内的编码组合是唯一的,根据窗口的这个特性可以唯一地辨识编码图案上的特征点。复现论文的本原多项式采用 <a href="https://www.codecogs.com/eqnedit.php?latex=h(x)=2x^6+2x^5+x^4+3x^3+2x^2+2x+1" target="_blank"><img src="https://latex.codecogs.com/gif.latex?h(x)=2x^6+2x^5+x^4+3x^3+2x^2+2x+1" title="h(x)=2x^6+2x^5+x^4+3x^3+2x^2+2x+1" /></a>,菱形作为结构光编码图案的基本元素,红、蓝、绿、黑四种颜色作为标记菱形代表的不同数值,窗口大小为<a href="https://www.codecogs.com/eqnedit.php?latex=2&space;\times&space;3" target="_blank"><img src="https://latex.codecogs.com/gif.latex?2&space;\times&space;3" title="2 \times 3" /></a>,同时以菱形角点作为特征点,可以有效提高特征点提取的精度。根据论文提出的结构光解码方法,可有效提取物体表面特征点,但由于角点数量较少,不能达到稠密点云的效果,未来可以通过改善相机分辨率,减小菱形面积,增加特征点等方式以提高特征点的密度。部分参考论文和实验结果如下。
|
||
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/z6giu9sqibq08fc1crweplxa/04.png" alt="06" width="22%" height="22%" /> <img src="http://static.zybuluo.com/TangWill/9jljaktk7e3qso61by60pohf/05.png" alt="07" width="22%" height="22%" /> <img src="http://static.zybuluo.com/TangWill/1wqxgxn4iwdicq1v9rs04e1x/06.png" alt="08" width="22%" height="22%" /><img src="http://static.zybuluo.com/TangWill/s3gah640whmsbfxoxzg2pqib/07.png" alt="09" width="22%" height="22%" /></div>
|
||
|
||
<p><a href="https://youtu.be/UfuwyE6MP0Q" rel="nofollow"><div class="imgs" align="center" ><img src="https://camo.githubusercontent.com/d6988f63060973271694ac180a5b09ff4c6410cc/687474703a2f2f7374617469632e7a7962756c756f2e636f6d2f54616e6757696c6c2f6f707035796e707263666f713570777567786363637674312f6d7034302e6a7067" alt="ScreenShot" data-canonical-src="http://static.zybuluo.com/TangWill/opp5ynprcfoq5pwugxcccvt1/mp40.jpg" width="75%" height="75%"/></div></a></p>
|
||
|
||
De Bruijn 序列由n种不同元素构成,任意长度为m的连续子序列只出现一次。复现的论文以 B(3,4) 序列进行编码,条纹作为结构光编码图案的基本元素,红、蓝、绿三种颜色作为标记条纹代表的不同数值,窗口大小为 <a href="https://www.codecogs.com/eqnedit.php?latex=4&space;\times&space;1" target="_blank"><img src="https://latex.codecogs.com/gif.latex?4&space;\times&space;1" title="4 \times 1" /></a>,以条纹中心点作为特征点。同时在 HSV 颜色空间模型中,以余弦函数对条纹的 V 通道进行编码。在结构光解码时,除了提取条纹中心点作为特征点,同时对拍摄到的图像的 V 通道进行加窗傅里叶变换分析,通过分析得到的相位进而增加特征点的密度。根据论文的基本思路,可在提高提取点云进度的同时增加点云的稠密度,实验效果较好。根据项目内容和有关研究的进展,在研究论文和实验的基础上,对复现论文的算法进行改进,提出适合项目场景的算法流程。部分论文如下。
|
||
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/i9bvx3xay0c8v4040hjzulcv/08.png" alt="10" width="22%" height="22%" /> <img src="http://static.zybuluo.com/TangWill/wspx83923ujobnjysj4y2l3h/09.png" alt="11" width="22%" height="22%" /> <img src="http://static.zybuluo.com/TangWill/pflvpf9yzwkfw8csn0at2trl/10.png" alt="12" width="22%" height="22%" /><img src="http://static.zybuluo.com/TangWill/v0cdilgqhy1k4oqaw2dhdpgh/11.png" alt="13" width="22%" height="22%" /></div>
|
||
|
||
基于改进的算法对球体表面进行重建,得到约 17W 条点云数据,在 Meshlab 中对点云数据进行渲染,实验结果如下。
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/etw2k42uqvbb63zyvbry0ki6/13.png" alt="14" width="75%" height="75%" /></div>
|
||
|
||
改用以 B(4,3) 序列进行编码,条纹作为结构光编码图案的基本元素,红、蓝、绿、白四种颜色作为标记条纹代表的不同数值,窗口大小为 <a href="https://www.codecogs.com/eqnedit.php?latex=3\times&space;1" target="_blank"><img src="https://latex.codecogs.com/gif.latex?3\times&space;1" title="3\times 1" /></a>,以条纹中心点作为特征点。同样对球体表面进行重建,得到约 20W 条点云数据,在 Meshlab 中对点云数据进行渲染,实验结果如下。
|
||
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/8z4qxmk5467d6r7rpr1brpkg/14.png" alt="15" width="75%" height="75%" /></div>
|
||
|
||
项目于2019年4月立项,研究至今,基本遵循研究计划,对部分现有的基于空间编码结构光的三维重建方法进行了研究、实现和调优,根据现有算法和项目应用场景提出了自己的解决方案,并完成了软件的封装,预期可用于静态和运动物体的三维重建。
|
||
|
||
项目主要创新点如下:
|
||
|
||
- **亚像素级条纹中心的提取**:设计实现了编码结构光图案以及适用于该图案的条纹中心点提取算法,将条纹中心点精确到亚像素级别
|
||
- **通过小波变换增加点云稠密度**:提出了加窗傅里叶变化对条纹相位分析的改进方法,采用用基于广义 Morse 小波的小波变换进行分析,获得非中心点的相位信息,增加点云稠密度
|
||
- **构建三维重建全流程平台**:将上述算法与点云可视化封装成结构光三维重建软件,完成了铁轨及多个几何体的三维重建,预期可用于轮轨姿态重建和可视化
|
||
|
||
软件展示如下:
|
||
|
||
- 系统标定界面
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/ml0iegb11jyr7t5iw1kp30ei/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8E%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2-%E5%9F%BA%E4%BA%8E%E7%BC%96%E7%A0%81%E7%BB%93%E6%9E%84%E5%85%89%E7%9A%84%E9%AB%98%E9%93%81%E8%BD%AE%E8%BD%A8%E5%A7%BF%E6%80%81%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA-%E7%BB%93%E6%9E%84%E5%85%89%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA%E8%BD%AF%E4%BB%B6%E2%80%94%E2%80%94%E7%B3%BB%E7%BB%9F%E6%A0%87%E5%AE%9A%E7%95%8C%E9%9D%A2.jpg" alt="16" width="75%" height="75%" /></div>
|
||
|
||
- 三维重建界面
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/dv9moa86dspfb2njt79o8cuj/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8E%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2-%E5%9F%BA%E4%BA%8E%E7%BC%96%E7%A0%81%E7%BB%93%E6%9E%84%E5%85%89%E7%9A%84%E9%AB%98%E9%93%81%E8%BD%AE%E8%BD%A8%E5%A7%BF%E6%80%81%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA-%E7%BB%93%E6%9E%84%E5%85%89%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA%E8%BD%AF%E4%BB%B6%E2%80%94%E2%80%94%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA%E7%95%8C%E9%9D%A2.jpg" alt="17" width="75%" height="75%" /></div>
|
||
|
||
- 点云渲染界面
|
||
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/ufqbnx21rnzkvfhmsyi2rosr/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8E%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2-%E5%9F%BA%E4%BA%8E%E7%BC%96%E7%A0%81%E7%BB%93%E6%9E%84%E5%85%89%E7%9A%84%E9%AB%98%E9%93%81%E8%BD%AE%E8%BD%A8%E5%A7%BF%E6%80%81%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA-%E7%BB%93%E6%9E%84%E5%85%89%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA%E8%BD%AF%E4%BB%B6%E2%80%94%E2%80%94%E7%82%B9%E4%BA%91%E6%B8%B2%E6%9F%93%E7%95%8C%E9%9D%A2.jpg" alt="18" width="75%" height="75%" /></div>
|
||
|
||
<p><a href="https://youtu.be/DM47pxDPks8" rel="nofollow"><div class="imgs" align="center" ><img src="https://camo.githubusercontent.com/21d5ee3679cc70eef161d9345e389816d1ffffbe/687474703a2f2f7374617469632e7a7962756c756f2e636f6d2f54616e6757696c6c2f6a6c3938626573756465656f396c75736879746d6f63616b2f6d7034312e6a7067" alt="ScreenShot" data-canonical-src="http://static.zybuluo.com/TangWill/jl98besudeeo9lushytmocak/mp41.jpg" width="75%" height="75%"/></div></a></p>
|
||
|