原位根系三维构型测量系统的设计与实现
2018-05-21陈富强周学成李一海杨自尚王高峰闫露露
陈富强,周学成,2,李一海,杨自尚,王高峰,闫露露
1.华南农业大学 工程学院,广州 510642
2.南方农业机械关键技术与装备教育部重点实验室,广州 510642
1 引言
根系是植物的重要组成器官,其形态构型决定了植物吸收水分和养分的能力。目前对植物根系测量与分析技术的研究大都集中在基于二维图像的根系平面构型参数的测量与分析,专门针对原位根系的三维构型参数检测与分析的研究则少见报道。其主要原因在于土壤等介质的阻隔限制了对根系构型的直接观测,以及根系本身的复杂性和重叠性也加大了根系精确测量的难度[1-2]。现有的相关研究工作主要集中在原位成像技术、图像处理和三维可视化等方面,而对基于原位空间序列图像数据,尤其是原位断层序列图像数据的利用大都停留在三维可视化阶段,对三维根系的定量描述和分析方法的研究则明显不足。RootReader3D软件是美国康奈尔大学在2011年开发的,该软件可以获取根系的三维重建模型,并对根长、最大水平宽度、最小水平宽度、最大垂直深度等27个测量参数进行分析[3]。但其测试的根系样本是生长在培养液中的水稻根系幼苗,这与实际土壤生长环境有极大的差别,所以获取的参数不具备绝对的参考意义。诺丁汉大学开发的RooTrak软件,它通过对虚拟根切片中每一个根截面进行追踪来从土壤中获取到完整的植物根系模型。但该软件只是实现了三维根系的可视化,并不能测量根系参数[4]。德国的Dagmar van Dusschoten等人开发了NMRooting软件,该软件以MRI获取的图像作为数据源进行三维可视化,并计算了一些根系整体参数。但该软件对于细小根系获取不到理想结果。且测量精度也有待提高[5]。为了实现原位根系三维构型参数的无损检测,笔者所在的课题组在国家自然科学基金和“863”计划等科研项目的资助下,相继开展了基于XCT技术的植物根系原位成像方法、CT序列图像的处理与分析方法、原位根系的三维可视化重建方法、原位根系三维矢量模型构建等一系列的相关研究工作。在此基础上,设计开发了以CT序列图像为数据基础的植物根系三维构型测量系统,以期为相关研究人员提供一个可视化的三维根系构型分析平台。
2 总体设计
本系统是借助Qt、ITK、VTK三大开源工具包开发完成的。主要由序列图像分割、三维重建、矢量模型构建以及根构型参数测量四大功能模块构成。原型系统的总体设计框架如图1。
图1 总体框架设计
系统所使用到的开源库都具有不同的作用。其中Qt是一款跨平台C++图形用户界面开发框架,其完全面向对象,很容易扩展,并且允许真正的组件编程[6]。能够为系统提供良好的图像交互界面。VTK是一个开源、跨平台的图形图像应用函数库[7]。利用VTK可以完成三维图像可视化功能。ITK提供了一个图像处理、分割与配准的算法平台[8]。可以为系统图像处理、分割等算法提供支持。整个软件框架是基于Qt完成的。其示意图如图2。
图2 VTK、ITK、Qt结合示意图
2.1 流水线机制
流水线是一种ITK和VTK特有机制,其是以数据处理为中心,将算法和数据对象分开考虑。这种机制有助于将大量不同的算法结合到一起。这种机制的表示如图3。
图3 流水线示意图
Source、Filter和Target分别表示3种不同的抽象算法对象,它们的意义分别是:
Source为流水线的起点,没有输入,产生至少有一个输出。主要作为流水线的数据源。
Filter为负责对数据对象进行处理,可以有一个或多个输入,产生一个或多个输出。其具有GetOutput()输出接口和SetInputData()输入接口。
Target为流水线的终点,只有输入没有输出。具有SetInputData()接口。
2.2 信号槽机制
信号槽机制是Qt的核心机制,该机制可以实现对象与对象之间的通信,降低模块之间的耦合性。该机制的使用需要自定义类继承于QObject,并且在类内开始位置引用了Q_OBJECT宏。通过简单例子来说明信号槽机制。现在有一个按钮和对话框,其类图如图4。
图4 QPushButton和QDialog类图
其中按钮类(QPushButton)有信号clicked();进度对话框类(QProgressDialog)有槽函数exec()。当按钮被点击会发出一个clicked()信号给进度对话框,激活进度对话框的exec()函数,弹出一个模态对话框。整个过程可以由一个协作图表示,如图5。
图5 对话框弹出协作图
2.3 流水线和信号槽机制融合
软件在开发过程中同时融合了这两种机制,以保证既可以简化数据处理过程,又可以降低模块之间的耦合度。其主要思路为:用Qt封装ITK和VTK类以提供信号与槽的功能。同时实现了VTK、ITK中作为算法对象的接口setInputData()和getOutPut()。使得这些Qt类也可以作为流水线算法的一部分加入。下面通过一个读取图片显示的实例来描述这种机制:现有ImageReader的Qt类和ImageViewer的Qt类,其类图如图6。
图6 ImageReader和ImageViewer类图
其中图像读取类(ImageReader)封装了一个VTK读取类(vtkPNGReader),并定义一个信号iGotImageData;图像显示类(ImageViewer)封装了一个VTK显示类(vtkImageViewer2),并定义了一个槽函数iLikeImage-Data();当图像读取类读取到了一幅图像会发出一个iGotImageData信号给图像显示类,并激活一个槽函数iLikeImageData()实现图片的显示。整个过程的协作图如图7。
图7 图像读取与显示的协作图
这个过程中将图像读取和显示的算法抽象成为两个算法对象,简化了处理过程;又可以使用Qt信号槽机制在算法对象之间传递数据,降低耦合性。
3 关键算法设计
本系统在开发过程中涉及到多个算法。为了提高算法效率,在实现过程中引用了一些设计模式的规则进行设计。这里简要介绍几个最为关键的算法。
3.1 三维重建算法
三维重建是实现根系可视化的重要环节,也是后续参数测量的重要依据。重建过程分为体重建和表面重建两类重建方式,每类方式又有基于不同原理的重建方法。因此该算法具有较高的复杂度。为了提高算法的效率与灵活度,在实现过程中采取了工厂模式[9]来设计算法。重建算法的结构图如图8。
结构图的详细说明如下:
BaseReconstruction:这是三维重建的基类,包含了两个纯虚成员函数:setPipLine()、getProp()。其中setPipLine()函数表示的是重建流水线算法。根据重建方法的不同,其内部算法的实现也会有所不同。该函数的具体实现由其子类中的同名函数完成。getProp()函数可以获取重建结果对象。
BaseSurfaceReconstruction:表面重建基类,继承于BaseReconstruction。该类包含一个成员变量:actor,该变量用来表示表面重建得到的结果;两个成员虚函数:setPipLine(),该函数封装了部分表面重建的流水线算法。GetProp(),该函数返回表面重建的结果。
BaseVolumeReconstruction:体重建基类,继承于BaseReconstruction。该类包含一个成员变量:volume,该变量用来表示体重建的结果;两个成员虚函数:setPipeLine(),该函数封装了部分体重建的流水线算法。GetProp,该函数返回体重建的结果。
ContourFilter:基于平面轮廓的表面重建方法。基本原理是:首先从每个切片或断层轮廓中提取感兴趣轮廓曲线,再将这一组轮廓曲线重建为三维物体形态[6]。setPipLine()中封装了该重建方法的流水线算法。
MarchingCube:基于移动立方体的表面重建方法。基本原理是:逐个处理数据场中的立方体(体素),分类出与等值面相交的立方体,再采用插值计算出等值面与立方体的交点。将获取的交点以一定方式连接成等值面,作为该立方体的一个逼近表示[10-12]。setPipLine()中封装了该重建方法的流水线算法。
图8 重建算法结构图
VolumeTexture:基于纹理映射的体重建方法。基本原理:将每个坐标轴方向的切片图像作为二维纹理保存至图形硬件缓存中,在光线投射时,选择与当前视线方向垂直的一组纹理图像,在硬件中进行插值和合成运算以实现体绘制。getPipLine()中封装了该重建方法的流水线算法。
FixedPointVolumeRayCast:基于光线投射的体重建方法。基本原理:向图像平面的每个像素发射一条沿视线方向的射线,在射线穿过体数据集时按照一定的步长采样颜色值和不透明度。然后累计每条射线上的颜色值和不透明度直至光线被完全吸收。getPipLine()中封装了该重建方法的流水线算法。
Reconstruct3D:工厂类。包含一个成员函数:createReconstructMethod()。该函数可以根据不同的需求创建不同的重建算法对象。
3.2 矢量模型构建方法
植物根系的矢量模型主要包括提取根系骨架和根节点属性值两方面内容。其是植物根构型参数测量最为重要的基础模型,好的矢量模型可以提高构型参数的测量精度和运算效率[13-16]。矢量模型构建算法实现流程图如图9所示。
图9 矢量模型算法流程图
流程图的详细说明如下。
(1)构建初始根节点:根节点构建需要获取根节点的中心坐标以及对应的根截面面积。在三维可视化模型的基础上,使用重切器对模型进行重切来获取其根节点的三维坐标和面积。由于重切器角度以及截面轮廓不规则导致获取的根节点位置和面积存在一定的误差,所以通过该步获取的根节点称之为初始根节点,有待进一步减小误差。
(2)构建初始根分支:前一步获取的根节点集合只是一个空间散点集合,为了提取到根系矢量模型,需要对这些空间散点进行分组来构建根分支。具体分组策略是采用空间连通性和最短路径作为分组依据,并将面积变化率、偏转角阈值作为约束条件来提高空间散点分组的正确率。
(3)重构根节点和根分枝:为了纠正初始根节点的位置偏差,以根分支为处理单元进行三次B样条拟合。拟合得到一条光滑的根分支曲线,来替代那些有偏差的根节点。通过该重构步骤,基本消除根节点的位置偏差。为获取到精准的根系矢量模型做准备。
(4)获取根节点属性:在获取到根节点的精确坐标值后,需要进一步补充根节点的面积、周长、圆率等基本属性值。获取属性数据的方法是使用重切器沿着根分支曲线的切向量进行二次重切。对得到的重切截面图像进行分析提取有用参数。
(5)判定根分支关系:该步骤是建立根分支的拓扑结构。根据根构型的特点,其结构近似于一种树形结构,每个根分支节点都有一个父节点和n个子节点。根据其结构特点采用了树形数据结构来保存根分支。并设计一种遍历算法,从主根出发依次向下遍历,以连通性和最短路径为约束条件进行根分支关系的判定。
(6)补充根节点:在一些根分支位置根节点较为稀疏,为了提高根构型参数测量精度,需要通过插值的方法对根分支部分进行节点补充。
3.3 构型参数计算方法
参数计算是系统的核心功能,本系统实现了根数、根长、根表面积、根体积、根夹角5种参数的测量。下面对一些核心参数计算原理进行介绍。
3.3.1 根体积和表面积
同一根分枝相邻根节点之间的根段可近似为圆台(图10),因此可以分别使用圆台体积和侧面积公式计算相邻根节点之间的根段的体积和侧面积[17]。
图10 根段示意图
相邻根节点间根段体积公式如下:
相邻根节点间根段侧面积公式如下:
根分枝体积和表面积分别为相邻根节点间根段的体积之和以及侧面积之和,分别如式(4)和式(5)。
3.3.2 根夹角
定义1(根夹角)设子根分枝根心线在起始端点处的切向量为V1,父根分枝根心线在相应分叉根节点处的切向量为V0,则V0与V1的夹角θ即为根夹角(图11)。需要注意的是V0和V1都必须和根分枝的生长方向一致[18]。
图11 根夹角示意图
V0与V1的数量积如式(6)所示。
由式(6)可得根夹角ψ计算公式为:
4 系统实现
本系统是在Windows 10(64 bit)系统上借助Qt应用程序开发框架进行设计开发的。其设计主要目的是实现根系构型参数的无损和自动化检测,辅助根系研究人员的研究。软件系统主界面如图12所示。其中标号1为菜单和工具栏,用于提供快捷操作;标号2为文件浏览器;标号3为图像浏览器,用于显示序列图像;标号4为三维图形浏览器,用于显示重建模型和矢量模型;标号5为属性栏,用于显示参数测量结果;标号6为状态栏,用于显示图形图像的拾取坐标。
图12 系统主界面
构型参数测量的具体操作流程如下:
步骤1对原始序列图像进行分割获取分割数据源。
步骤2以分割后的序列图像作为数据源进行三维重建以获取根系的可视化模型。
步骤3使用重切技术对根系三维模型重切获取其根系的根节点以及相对应的属性值;以此为基础构建根系矢量模型。
步骤4利用矢量模型并根据构型参数的计算方法来计算根系的各种参数。
矢量模型的保存格式为.rvm格式(软件自有格式)。这样对于已有矢量模型的根系样本可以直接通过步骤4获取根构型参数。
5 测试与分析
系统测试环境为联想p50移动图形工作站,其操作系统为Win10(64 bit)。测试目的是为了验证系统中三维模型和矢量模型构建算法实际效果。并将获取的构型参数测量结果与手工测量结果做对比来验证参数测量的精确度。
为获取对比数据,本文采用了一系列传统方法来获取根构型参数。如:采用排沙法获取根系体积;采用染色液蘸根法获取根系表面积。采用直接截获法获取根系总长度。
本文采用了两组测试样本,分别是生长在有机基质中的榕树和栀子幼苗根系图像。图像由工业CT设备获取。主要扫描参数为:管电压80 kV,管电流1 mA。经过扫描,获取到分辨率为512×512的16位断层序列图像。对原位CT序列图像经过适当滤波、插值和三维封装预处理后用作图像分割数据源。
对封装后的样本数据使用三维区域生长法进行分割。其中种子点通过系统的坐标拾取器来确定。样本分割结果被保存为分辨率为512×512的8位png序列图像。
对分割后的序列图像进行三维重建。重建采用移动立方体法。设置其等值面参数为128。重建完成后对模型进行孔洞修补,设置其孔洞填充最小尺寸参数为10。最后生成的三维重建模型如图13。
图13 榕树苗三维重建结果
在三维模型的基础上提取其矢量模型,首先对三维体数据进行重切获取根系骨架节点。重切间隔参数设置为0.5 mm。通过连通性分组获取根系拓扑结构。连通性限制条件相邻节点最大间距设置为7 mm。最后生成的矢量模型如图14所示。其中红色线条表示根系骨架,绿色为矢量模型,蓝色分枝表示当前被选中分枝。
图14 榕树苗矢量模型
以样本矢量模型为数据源,根据根系参数的计算公式获取整根和各根分枝构型参数。参数结果在属性栏中显示。效果如图15。
图15 榕树苗参数测量结果
原型系统所测量的三维构型参数值与对应手工测量值如表1所示。由表可知,根分枝数、根总长、根总表面积以及根总体积的测量误差分别为4.55%、2.10%、6.26%、1.02%。
表1 榕树苗总体参数对比结果
本次实验的另外一组样本是栀子幼苗,对数据进行三维封装、分割、重建并进行矢量模型提取,获得的结果如图16。
图16 栀子苗重建模型和矢量模型
原型系统所测量的根构型参数如图17。
图17 栀子苗参数测量结果
原型系统所测量的三维构型参数值与对应手工测量值如表2所示。由表可知,根分枝数、根总长、根总表面积以及根总体积的测量误差分别为0%、4.1%、2.91%、1.68%。
表2 栀子苗总体参数对比结果
由上述测试与分析结果可知,原型系统基本满足了设计需求。系统参数测量结果与手工测量结果有一定误差主要因为根系表面较为粗糙造成了一系列伪根心点。后续将继续完善伪根心点剔除算法以进一步提高测量精度。
6 结束语
本文介绍了植物根系三维构型测量系统的设计目标、整体框架以及关键算法。在根系可视化的基础上提出并实现了一种具有可行性的根系矢量模型构建方法,并以此模型为依据实现了原位根系构型参数的自动测量。目前该系统尚处于原型阶段,系统的稳定性有待继续完善。系统所采用的根构型参数测量方法有待继续通过大量实例来进行论证。
:
[1]罗锡文,周学成,严小龙,等.基于XCT技术的植物根系原位形态可视化研究[J].农业机械学报,2004,35(2):104-133.[2]张常玲,周学成,李骈臻.土壤中植物根系的层析成像检测试验[J].光学应用:中英文版,2014(2):19-24.
[3]Clark,Randy T,Curdy M,et al.Three-dimensional root phenotyping with a novel imaging and software platform[J].Plant Physiology,2011,156(2):455-465.
[4]Mairhofer S,Tracy S R.RooTrak:automated recovery of three-dimensional plant root architecture in soil from XRay microcomputed tomography images using visual tracking[J].Plant Physiology,2012,158(2):561-569.
[5]Van D D,Metzner R,Kochs J,et al.Quantitative 3D analysis of plant roots growing in soil using magnetic resonance imaging[J].Plant Physiology,2016,170(3):1176-1188.
[6]霍亚飞,程梁.Qt5编程入门[M].北京:北京航空航天大学出版社,2015:1-2.
[7]张晓东,罗火灵.VTK图形图像开发进阶[M].北京:机械工业出版社,2015:170-192.
[8]周振环,郑小中,赵明.三维图像编程实验[M].北京:电子工业出版社,2011:82-86.
[9]程杰.大话设计模式[M].北京:清华大学出版社,2011:67-72.
[10]Heeraman D A,Hopmans J W,Clausnitzer V.Three dimensional imaging of plant roots in situ with X-Ray computed tomography[J].Plant and Soil,1997,189(2):167-179.
[11]胡占利.基于VTK的医学图像三维重建及交互研究[D].哈尔滨:哈尔滨工程大学,2008.
[12]陈郁淦,周学成,罗锡文,等.基于ITK和VTK的原位根系三维可视化研究[C]//中国农业工程学会2011年学术年会论文集,2011:1164-1168.
[13]李一海.植物根系三维矢量模型的构建与分析方法[D].广州:华南农业大学,2016.
[14]Kuijken R C,van Eeuwijk F A,Marcelis L F,et al.Root phenotyping:from component trait in the lab to breeding[J].Journal of Experimental Botany,2015,66(18):5389-5401.
[15]田绪红,李志垣,韩国强,等.基于横截面算法的三维植物根系图象骨架生成方法[C]//第十二届全国图象图形学学术会议论文集,2005:655-658.
[16]李骈臻,周学成,张常玲,等.基于骨架模型的植物根系三维构型可视化方法[J].计算机工程与设计,2014,35(11):3913-3917.
[17]陈郁淦.植物根系三维可视化分析系统的研究与实现[D].广州:华南农业大学,2012.
[18]Ralf M,Anja E,van D D,et al.Direct comparison of MRI and X-ray CT technologies for 3D imaging of root systems in soil:potential and challenges for root trait quantification[J].Plant Methods,2015,11(1).