用于管道缺损三维重构的基于三次样条函数的插值方法
技术领域
本发明涉及一种油气管道缺损三维重构技术,特别涉及三次样条插值算法。
背景技术
由于磁传感器沿圆周方向分布于管道,使其对管道缺陷的长度和深度比较敏感,而对于管道缺陷的宽度则较不敏感,所以通过实验获得的管道缺陷数据只包含长度和深度量。为了更直观分析管道缺陷,本发明通过将任意一处管道缺陷的离散漏磁曲线通过插值的方法进行曲线拟合,从而获得管道缺陷的三维漏磁曲线。实现插值的方法很多,如多项式插值、牛顿插值、分段线性插值、样条插值等。
三次样条插值的方法是对给出的一系列离散点用三次样条函数把相邻点连接起来获得三次样条插值曲线。由于三次样条函数具有较高的光滑度和逼近阶,因此所得的曲线非常光滑,能够更准确地确定管道的三维缺陷。
发明内容
本发明的目的在于提供一种插值后曲面光滑,轮廓清晰的用于管道缺损三维重构的基于三次样条函数的插值方法。
本发明为解决上述技术问题所采用的技术方案为,基于三次样条函数的插值方法,其特征在于,先检测插值点的位置状态;对处于不同的位置状态的插值点再采用不同的处理方法进行插值运算。
具体包括以下步骤:
a、将插值点相邻点值之差与预设阈值比较,得到插值点的位置状态信息;
b、根据插值点的位置状态信息,判断插值点是否处于曲线的非连续部分;如是,调整相邻点的值,进入步骤c;如否,直接进入步骤c;
c、进行插值运算。
通过对相邻的两个点值的差进行判断,判定这两个点是否处于真实曲线的边缘两侧(非连续边缘部分),如不是,则直接进入常规的插值运算;如是,则先将该相邻的两个点进行调整后再进行插值运算。即本发明对曲线梯度变化较小的部分采用平滑性表现较好的三次样条函数插值算法;而对于梯度变化较大的部分,先对插值点所处的边缘位置状态进行判断,然后根据插值点位置状态信息对插值点运算的参数进行调整。
具体的,插值点的位置状态信息由插值点相邻点间的边缘状态组成,所述边缘状态包括非边沿状态、边沿状态;两相邻点值的差值的绝对值小于预设阈值,为所述非边沿状态;两相邻点值的差值的绝对值大于或等于预设阈值,为所述边沿状态。具体的,所述插值点的位置状态信息由与插值点相邻4个点间的3个边缘状态组成:与插值点相邻4个像素点的像素点值依次为第一点值A1、第二点值A2、第三点值A3、第四点值A4;其中插值点位于第二点、第三点之间;3个边缘状态依次为:第一状态;第二状态;第三状态;
所述步骤b具体为:
当第一状态与第二状态为非边沿状态,第三状态为边沿状态时,调整第四点值A4;调整后的第四点值为:2×A3-A2;
当第一状态为边沿状态,第二状态与第三状态为非边沿状态时,调整第一点值A1;调整后的第一像素点值为:2×A2-A3;
当第一状态与第三状态为非边沿状态,第二状态为边沿状态时,调整第一点值A1与第四点值A4;调整后的第一点值为:A1+(A3-A1)×a。;调整后的第四点值为:A4+(A2-A4)×a;
当第二状态与第三状态为非边沿状态,第一状态为边沿状态时,调整第一点值A1;调整后的第一点值为:A1十(A3-A1)×a;
当第三状态为边沿状态,第一状态与第二状态为非边沿状态时,调整第四点值A4;调整后的第四点值为:A4十(A2-A4)×a。;
当第一状态与第三状态为边沿状态,第二状态为非边沿状态时,调整第一点值A1与第四点值A4;调整后的第一点值为:A1+(A2-A1)×a。;调整后的第四点值为:A4+(A3-A4)×a;
插值点的位置状态信息中3个状态全为非边沿、全为边沿状态时,直接进入步骤c。其中a为调节因子,其取值范围为0-1。
为进一步提高位置状态信息的精确度,将边沿状态进一步分为:正边沿状态、负边沿状态;两相邻点值的差值大于0,且其绝对值大于或等于预设阈值,为所述正边沿状态;两相邻点值的差值小于0,且其绝对值大于或等于预设阈值,为所述负边沿状态。
本发明的有益效果是,在保证曲线平滑性的基础上,增加边缘锐度,同时有效的消除了由于曲线非连续状态互相干扰问题。同时,本发明对所有插值点的计算,采用同一个运算公式,使得本发明的实现简单。
附图说明
图1为插值点及其相邻4个像素点的示意图。
图2为管道缺陷二维漏磁信号曲线。
图3为管道缺陷漏磁三维重构曲面。
具体实施方式
本发明通过将任意一处管道缺陷的离散漏磁曲线通过插值的方法进行曲线拟合,从而获得管道缺陷的三维漏磁曲线。在插值时,我们可以采用列方向上进行插值的方法来实现。三次样条函数计算过程如下:
设各测试等间隔时间点t1<t2<Λ<tN上的数据为x1,x2,Λ,xN则对应的三次样条函数s(t)应满足如下条件:
(1)s(ti)=xi,i=1,2,Λ,N;
(2)在每个子区间(ti,ti+1)上s(ti)是一个三次多项式,i=1,2,Λ,N-1;
(3)在[t1,tN]上有一阶及二阶连续导数,且在端点处有s″(t1)=s″(t2)=0。先进行插值计算,根据牛顿插值公式,有
s(t)=s(ti)+s(ti,ti+1)+(t-ti)(t-ti+1)s(t,ti,ti+1)t∈(ti,ti+1)(1)
其中,二阶均差对式(6-11)求一次微分得
二次微分为
s″(t)=s″(ti)+(t-ti)s″(ti,ti+1) (3)
式中的s″(t)(i=1,2,Λ,N-1)满足三对角线性方程组
(t-ti+1)s″(ti-1)+2(ti+1-ti)s″(t)+(ti+1-ti)s″(ti+1)=6[s(ti,ti+1)-s(ti-1,ti)](4)
i=1,2,Λ,N-1
其中,s″(t1)=s″(tN)=0
用追赶法解方程组,对每个被插值或求微分点tj(j=1,2,Λ,m),分别用公式计算s(tj),s′(tj),s″(tj)。
其中,如图1所示A1-A4来表示A[i,j-1]-A[i,j+2],A1-A4为插值点I的相邻点,插值点I位于点A2,A3之间,[i,m]为插值点I的坐标位置,d为插值点I[i,m]与相邻点A1[i,j]的距离。
对于曲线中的连续部分,双三次插值算法,能够保证A2-A3之间的插值点数值连续平滑,满足视觉效果。但是实际曲线总是局部分段连续的,当A1-A4之间出现不连续时,A1-A4之间的值会有一个阶越。此时,若双三次计算的A1-A4仍然采用A[i,j]序列的值,则运算的结果将会与插值点位置原始的值有较大偏差。