持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第32天,点击查看活动详情
最近新接触到一个项目,主要内容就是利用单目相机对物体进行扫描并利用相关算法实现对物体的三维重建,本人也是第一次接触相关的概念,之前在电影中看到应用场景非常nice,今天稍微理了一下思路,发现还是有点难度的,因为单目相机对于深度的采集相对还是比较困难,估计硬件设计要花费点功夫,下面先实验几个绘图的例子,保存到博客中,后面可以现取现用。
首先mayavi这个库真的是非常的友好,而且SimpleITK可以非常方便的载入图像并转换为数组的形式,两者搭配可以轻松的实现图像由二维到三维的映射,主要代码如下
# 引入库函数
import SimpleITK as sitk
from mayavi import mlab
# 设置图片路径
path = './thumbnail.png'
# 加载图像
image = sitk.ReadImage(path)
# 图像转换为数组形式
image = sitk.GetArrayFromImage(image)
# 绘图
vol = mlab.pipeline.volume(mlab.pipeline.scalar_field(image), name='3-d ultrasound ')
mlab.show()
# 绘制灰度值的三维图像
mlab.barchart(image)
mlab.vectorbar()
mlab.show()
下面是对一幅图像的效果展示 首先是对纯绘图的三维效果展示
原图是这个样子的
效果图是这个样子的,首先是正视图
然后是侧视图
然后就是在图像的反面看图像的效果,如下
对于利用图像的灰度值进行图像绘制的结果如下
需要注意的一点是,如果图像太大,显示此图时会导致电脑卡顿,代码运行时先不要着急,耐心等待图像出来即可。
图像的侧式图,显示的图像中的像素值的大小。
最后就是这幅图像的背面看到的图了。
有了这两个工具,软件方面的重建工作就非常简单了,剩下的就是硬件和算法层面的问题。