基于分形理论的孤立森林水下人工目标检测方法与流程

文档序号:17664889发布日期:2019-05-15 22:38阅读:166来源:国知局
基于分形理论的孤立森林水下人工目标检测方法与流程

本发明属于计算机数字图像处理技术领域,具体涉及一种基于分形理论的孤立森林水下人工目标检测方法。



背景技术:

三维扫描仪用来扫描现实生活中的物体或者环境的外部形状,获取海量的外观点云数据,从而得到现实物体或环境的数字模型。这些模型常应用在目标检测与分割,三维重建等方向。三维扫描仪分为两种,一种是接触式,扫描仪通过接触实际物体来获得物体实际的深度信息,但相较于其他类型的扫描仪,接触式的扫描仪扫描时间相对较长;另一种是非接触式,该类型的扫描仪又分为主动扫描和被动扫描两种。主动扫描是扫描仪主动发出激光,超声波等照射物体,通过物体表面反射回来的激光或声波计算得出物体的深度信息。被动扫描的仪器自身不会发射任何辐射,而是由待测物体通过反射外界可见光,扫描仪器接收到之后进行测量。

水下人工目标检测主要目的是从声呐图像中将具有人工特性的目标点检测出来。声呐图像是通过水下机器人主动发射声波扫描得到的,声波是目前惟一可以进行远程信息传输的载体,相比于光视觉、雷达、红外等其他探测手段,水声探测是目前水下探测最有效的方式,声呐可以对水下环境进行感知并实时处理,判断周围物体的位置、类型等信息。声呐图像中不仅包含了传统二维图像中的信息,而且还包含有探测点的实际深度值以及物体反射声波的强度值。但由于不同的水域水声条件有所不同,水下环境复杂多变,使得水下环境中的人工目标检测变得困难,一般测量得到的真实数据中,包含了大量的缺失值和大量的噪音,也可能因为人工录入错误导致有异常点存在,非常不利于算法模型的训练。另外水下环境复杂,水下机器人向周围发射声波后,有些地方不会发射声波,也会导致声呐图像上部分数据点是丢失的。

目标检测一直以来都是图像领域中的热门,目标检测就是将感兴趣的部分找出来,并确定该部分的位置和大小。声呐图像与传统图像不同点在于,声呐图像是由高维的数据点组成的,人工目标在声呐图像中由多个数据点表示,因此声呐图像中的目标检测也可以看作是图像中的数据点检测。在声呐图像中,人工目标点与周围数据点在实际深度z维度值与反射声波强度i维度值有着明显的差异,在做目标检测时,可以利用人工目标点在这两个维度上的明显差异性对目标点进行检测。传统的检测方法有k近邻算法,局部利群因子算法以及基于角度的angle-basedoutlierdetection(abod)算法等。声呐图像与传统图像相比,包含着更多的数据信息,传统的检测方法无法充分利用这些数据信息对数据点进行分析,导致检测结果并不理想。



技术实现要素:

本发明的目的是提供一种基于分形理论的孤立森林水下人工目标检测方法,解决传统单一检测方法的精度低,误差率高的问题。

本发明所采用的技术方案是,基于分形理论的孤立森林水下人工目标检测方法,具体过程包括以下步骤:

步骤1,获取声呐图像数据:

读取水下机器人采集的原始声呐图像文件,将原始文件信息通过matlab软件合并为包含有x,y,z,i四个维度的信息,并且在matlab结果输出时,通过代码将文件转换为第三方数据库能够识别的.pcd格式;

步骤2,图像数据预处理:

将原始声呐图像数据首先进行归一化,然后进行缺失值的填补,得到消除缺陷的图像数据;

步骤3,差分盒计算:

将预处理后的图像数据分成多个小区域,计算每个区域的分形维数,将得到的分形维数作为建立分离树的标准之一;

步骤4,通过建立分离树和孤立森林,计算得到图像数据中的异常数据点和正常数据点:

首先建立分离树和孤立森林,然后计算从分离树的根节点到每个数据点所在的叶子节点经过的边的数目,即数据点的路径长度l,根据数据点的路径长度l计算得到每个数据点的异常值s,若s趋向于1,则该数据点属于异常点,若s趋向于0,则该数据点属于正常点。

本发明的其他特点还在于,

步骤2中图像预处理的过程如下:

步骤2.1,采用线性函数归一化原始声呐图像数据,将原始声呐图像数通过公式(1)的线性化的方法转换到[0,1]的范围;

其中,xnorm为归一化后的数据,x为原始数据,xmax和xmin分别为原始数据集的最大值和最小值;

步骤2.2,将归一化后的数据进行缺失值的填补,选取整幅图像的实际深度z维度值和发射声波i维度值,分别计算两个维度值的平均值作为填补的值,由于图像在x,y方向是均匀分布的,然后,将待补点的x,y值按图像分布进行填补。

步骤3中计算分形维数的过程如下:

步骤3.1,采用3×3的滑动窗口,将预处理后的图像数据分为多个小区域,每次移动一个数据点的距离计算每个小区域的分形维数;

步骤3.2,采用差分盒计算每个区域的分形维数,具体过程如下:

(a)对于一幅m×m的图像,将其看做三维空间的一个曲面,定义长为m,宽为m,高为l,其中,l为图像的像素级数,一般取l=256;

(b)将其所在的m×m的平面分为r×r大小的网格,在高度l这个坐标方向进行相同的划分,划分的单位为r*l/m,从而得到长宽方向和高度方向的划分“次数”相同;

(c)在被划分成的每个r×r个网格内,找出最大像素值u和最小像素值b,计算该区域所包含三维空间的盒子数,盒子个数记为n(i,j),则有n(i,j)=[(u-b+r-1)/r],其中,(i,j)记为当前的第(i,j)个网格,[]为取整符号;

(d)对每个r×r的盒子数求和,记为n,即n=sum(n(i,j));

(e)则分形维数d=-logn/logr,由于r是有限值,通过改变r的值,求出一组n,采用最小二乘法进行线性拟合,通过拟合得到的线性方程,对方程求导计算得到直线的斜率,直线斜率即就是分形维数d。

步骤4的具体过程如下:

步骤4.1,随机抽取部分子样本,设置子样本大小和异常阈值,将数据格式中的x,y,z,i四个维度看成一个点的四个属性,随机选取一个属性并在该属性的最值范围内通过随机函数随机选取一个值,作为左右子树的标准值;如果子样本中,样本点的该属性值小于标准值则被划分到左子树中,反之,将被划分到右子树中;

步骤4.2,将所有被划分到左子树和右子树的节点当作左右子树的根节点,进行下一层的左右子树的划分,依次循环,直到达到所设定的树的高度,或者输入数据是相同的多个数据点,或者输入数据中只包含一个数据点时结束;

步骤4.3,重复步骤4.1和步骤4.2,得到多颗分离树的集合就构成孤立森林;

步骤4.4,计算每个样本在孤立森林中每颗树上的数据点的路径长度l,即,从树的根节点到该数据点所在的叶子节点所经过边的数目,返回数据点在每棵树中的路径长度时,如果该数据点所在的叶子节点有且仅有一个点,则返回该点的当前路径长度l;如果所在的叶子节点包含了多个数据点,则利用如下公式(2):

c(n)=2h(n-1)-(2(n-1)/n)(2)

其中,h(n-1)是修正值,通过log2(n-1)+0.5772156649计算得到,其中0.5772156649是欧拉常数,c(n)为构建n个数据点的随机二叉树的平均路径长度,此时,返回值由l变成了l+c(n);

步骤4.5,异常值的计算:

数据点x的异常值s(x,n)由如下公式(3)得到:

其中,l+c(m)表示数据点的路径长度,e(l+c(m))表示数据点x在所有树中的路径长度的平均值,m表示数据点x所在的叶子节点包含点的个数,当m=1时c(m)等于0;

如果s值越大,则数据点的异常程度越大,当s趋向于1时,表明该点属于异常点,当s趋向于0时,表明该点属于正常点。

本发明的有益效果是,基于分形理论的孤立森林水下人工目标检测方法,与传统的检测方法相比减少了大量的数据计算,并且拥有更高的精确度,更低的误差率。

附图说明

图1是本发明的基于分形理论的孤立森林水下人工目标检测方法流程图;

图2是本发明的差分盒算法流程图;

图3是本发明的孤立森立算法流程图;

图4是包含x,y,i数据信息的文档图像;

图5是包含x,y,z数据信息的文档图像;

图6是将x,y,z,i数据信息合并后的文档图像;

图7是数据预处理前后的图像;左侧为未预处理前的数据图像,右侧为预处理后的数据图像。

图8是差分盒计算后的数据结果图像;

图9是样本抽样后的图像;左侧为未样本抽样的图像,右侧为样本抽样后的图像,黑色点表示正常数据点,三角形表示异常点;

图10是检测结果图像;左侧为目标真实位置的图像,菱形点表示目标点所在位置;右侧为算法检测目标所在位置的图像,三角形点表示为检测到的目标点所在的位置。

具体实施方式

下面结合附图和具体实施方式对本发明进行详细说明。

本发明的基于分形理论的孤立森林水下人工目标检测方法中采用的水下机器人创建的文件格式为.xyz,其中包含四个文件,每个文件分别包含着x,y,z,i四个维度的信息,为了将图像显示出来,需要将每个文件中的数据点结合到一个文件中,并保存为.pcd格式,以便于通过第三方库pcl进行图像的显示。

数据归一化是数据处理中较为常见的处理方法,不同评价指标(即特征向量中的不同特征就是所述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化归一化处理,以解决数据指标之间的可比性。原始数据经过数据归一化处理后,各指标处于同一数量级,适合进行综合对比评价。

数据可视化的目的是为了能够将水下机器人扫描得到的数据图像显示出来,由于原始数据文档中只包含有数据的坐标信息,不能像传统图像一样直观的显示,因此,需要借助第三方工具进行显示,如pcl库,vtk库等。经过上述的文件格式转换之后可以将文件转换为第三方库可直接读取的文件格式,从而可以将声呐图像直观的显示出来。

本发明的基于分形理论的孤立森林水下人工目标检测方法,如图1所示,具体过程包括以下步骤:

步骤1,获取声呐图像数据:

读取水下机器人采集的原始声呐图像文件,将原始文件信息通过matlab软件合并为包含有x,y,z,i四个维度的信息,并且在matlab结果输出时,通过代码将文件转换为第三方数据库能够识别的.pcd格式。

步骤2,图像数据预处理:

将原始声呐图像数据首先进行归一化,然后进行缺失值的填补,得到消除缺陷的图像数据;

步骤3,差分盒计算:

将预处理后的图像数据分成多个小区域,计算每个区域的分形维数,将得到的分形维数作为建立分离树的标准之一;

步骤4,通过建立分离树和孤立森林得到图像数据中的异常数据和正常数据点:

首先建立分离树和孤立森林,然后计算从分离树的根节点到每个数据点所在的叶子节点经过的边的数目,即数据点的路径长度l,根据路径长度l计算得到每个数据点的异常值s,若s趋向于1,则该数据点属于异常点,若s趋向于0,则该数据点属于正常点。

步骤2中图像预处理的过程如下:

步骤2.1,采用线性函数归一化原始声呐图像数据,将原始声呐图像数通过公式(1)的线性化的方法转换到[0,1]的范围;

其中,xnorm为归一化后的数据,x为原始数据,xmax和xmin分别为原始数据集的最大值和最小值;

步骤2.2,原始数据中会存在部分值得缺失,这会对后面的处理和判断造成影响,因此需要对数据进行缺失值的填补;

将归一化后的数据进行缺失值的填补,选取整幅图像的实际深度z维度值和发射声波i维度值,分别计算两个维度值的平均值作为填补的值,由于图像在x,y方向是均匀分布的,然后,将待补点的x,y值按图像分布进行填补。

如图2所示,步骤3中计算分形维数的过程如下:

步骤3.1,实验中需要计算的不是整幅图像的分形维数,而是将图像分为多个小区域,计算每个小区域的分形维数;

采用3×3的滑动窗口,将预处理后的图像数据分为多个小区域,每次移动一个数据点的距离计算每个小区域的分形维数;

步骤3.2,计算每个小窗口的分形维数,计算方法采用差分盒计算方法,差分盒计算将二维图像看作是三维的曲面,图像的像素值看作是三维曲面的第三维信息。将三个维度的信息等量划分,计算差分盒数;

采用差分盒计算每个区域的分形维数,具体过程如下:

(a)对于一幅m×m的图像,将其看做三维空间的一个曲面,定义长为m,宽为m,高为l,其中,l为图像的像素级数,一般取l=256;

(b)将其所在的m×m的平面分为r×r大小的网格,在高度l这个坐标方向进行相同的划分,划分的单位为r*l/m,这样,图像所在三维空间就被划分中很多“盒子”,从而得到长宽方向和高度方向的划分“次数”相同;

(c)在被划分成的每个r×r个网格内,找出最大像素值u和最小像素值b,计算该区域所包含三维空间的盒子数,盒子个数记为n(i,j),则有n(i,j)=[(u-b+r-1)/r],其中,(i,j)记为当前的第(i,j)个网格,[]为取整符号;

(d)对每个r×r的盒子数求和,记为n,即n=sum(n(i,j));

(e)则分形维数d=-logn/logr,由于r是有限值,通过改变r的值,求出一组n,采用最小二乘法进行线性拟合,通过拟合得到的线性方程,对方程求导计算得到直线的斜率,直线斜率即就是分形维数d。如图3所示,步骤4的具体过程如下:

抽取部分样本,由于三维点云数据中包含了大量的数据点,如果使用所有的样本进行之后的操作会降低孤立森林算法分离异常点的能力。进行抽采样的样本具有与原始样本相同的特性,且孤立森林算法对异常点的分离能力得到了有效的提高。抽取部分样本的操作是随机进行的,即随机从原始样本中不放回的抽取部分样本。

分离树的建立,分离树类似于数据结构中的完全二叉树,它具有树形结构,它的每一个节点要么有左右两个子节点,要么就没有子节点。完成抽样之后就是分离树的建立。建树的过程与随机树建立过程类似;

步骤4.1,随机抽取部分子样本,设置子样本大小和异常阈值,将数据格式中的x,y,z,i四个维度看成一个点的四个属性,随机选取一个属性,并在该属性的最值范围内通过随机函数随机选取一个值,作为左右子树的标准值;如果子样本中,样本点的该属性值小于标准值则被划分到左子树中,反之,将被划分到右子树中;

步骤4.2,将所有被划分到左子树和右子树的节点当作左右子树的根节点,进行下一层的左右子树的划分,依次循环,直到达到所设定的树的高度,或者输入数据是相同的多个数据点,或者输入数据中只包含一个数据点时结束;

步骤4.3,孤立森林的建立:完成对分离树的构建,接下来就可以实现孤立森林的构建了。孤立森林的构建方法与随机森林类似,它的创建是重复步骤4.1和步骤4.2,重复得到的多棵分离树的集合就构成了孤立森林;孤立森林与随机森林的不同点在于孤立森林对原始数据进行了抽样操作,并且对每一棵分离树设置了树的高度;

步骤4.4,计算每个样本在孤立森林中每颗树上的数据点的路径长度l,即,从树的根节点到该数据点所在的叶子节点所经过边的数目,返回数据点在每棵树中的路径长度时,如果该数据点所在的叶子节点有且仅有一个点,则返回该点的当前路径长度l;如果所在的叶子节点包含了多个数据点,则利用如下公式(2):

c(n)=2h(n-1)-(2(n-1)/n)(2)

其中,h(n-1)是修正值,通过log2(n-1)+0.5772156649计算得到,其中0.5772156649是欧拉常数,c(n)为构建n个数据点的随机二叉树的平均路径长度,此时,返回值由l变成了l+c(n);

步骤4.5,异常值的计算:每种异常值计算的方法都需要一个量化的指标来表示一个数据点是异常点的程度;

数据点x的异常值s(x,n)由如下公式(3)得到:

其中,l+c(m)表示数据点的路径长度,e(l+c(m))表示数据点在所有树中的路径长度的平均值,m表示该数据点所在的叶子节点包含点的个数,当m=1时c(m)等于0;

如果s值越大,则数据点的异常程度越大,当s趋向于1时,表明该点属于异常点,当s趋向于0时,表明该点属于正常点。

实施例

下面通过对一组仿真数据的操作实例来说明基于分形理论的孤立森林水下人工目标检测方法的实现过程。

(1)首先,执行步骤1和步骤2,将原始数据文档信息合并为一个文档,并将数据进行归一化,图4和图5是原始文档图,图4只包含x,y,i三个维度信息,图5只包含x,y,z三个维度信息,图6为合并后的数据文档,包含了x,y,z,i四个维度的信息。图7是数据预处理前后的图像,其中,左侧为未预处理前的数据图像,右侧为预处理后的数据图像。预处理之后去除了图像中的噪点以及对缺漏的点进行了补缺。

(2)执行步骤3,得到每个窗口的差分盒数,并将该窗口得到的盒数赋值给窗口内所有的点,结果如图8所示,图中表格第五列中的数据即该点所在窗口的差分盒数;

(3)执行步骤4,对原始样本进行抽样,抽样的效果如图9所示,左侧图像显示为抽样前,右侧图像为抽样后;

针对每个样本在孤立森立中每棵分离树上的路径长度,计算每个样本的异常值并以此来判断该点是否是异常点。实验结果如图10所示,其中左侧图像为真值图像,代表着异常点所在的真实位置;右侧图像为实验结果图像,代表着实验检测出异常点所在的位置,两张图像做对比,发现根据本发明的方法检测出的异常点的位置和图像真是位置中的异常点基本一致。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1