快速三线性插值

数码新闻 2020-06-29165未知admin

  最近需要对一个体素进行插值,并且应用到一张大图像上。这个本来用三线性插值很容易就实现了,但是体素的尺寸很小,长宽高大概20x15x10的大小,图像的尺寸非常大,差不多是4000x3000,等我实现完普通的三线性插值后,发现算法速度实在太慢,单是这一项三线性插值耗费的时间就占了总程序的一半多。其实如果能够用GPU,利用OpenGL里面的 texture是最方便,也最快的,但是图像从内存传送到GPU需要耗费一定时间,并且很多情况下没法用GPU。所以只能推导一下,在体素上事先就进行预计算,然后再用参数应用到大图像上。

  三线次线性插值实现。首先假定使用左手坐标系,z轴朝上,在x方向上对四条棱边进行四次插值,得到每条边上的四个点的值c00,c01,c10,c11,然后在y方向上对四个点进行插值,得到两条线段以及中间的两个点的值c0,c1,然后在z方向上插值,得到最终的c点的值。

  

  其中包括四次加减运算,三次乘除运算,因此总的来说,进行一次三线次乘除运算,并且往体素中寻找并且取值还要花费大量的运算,对于大图像来说,总的运算耗费的时间非常大。

  

  假定立方体原点为(x0,y0,z0),离原点最远的点为(x1,y1,z1),立方体的每个顶点的值在体素中是知道的。值得注意的是,虽然现在计算的坐标实际上是插值时的,但是实际上插值只与待求点(x,y,z)与(x0,y0,z0)和(x1,y1,z1)的相对比有关,不过为了后续插值的方便,首先将点映射到目标坐标上,这样在插值的时候就不需要再进行坐标映射。首先对x方向上插值,得到yz平面上四个点的值分别为f1,f2,f3,f4:

  

  注意一下,这里面隐含了x1和x0不能相等,如果两者相等,则f1=f(x0,y0,z0)=f(x1,y0,z0)恒成立,所以直接设置成x1=1,x0=0,再用上述公式即可。注意到,这里面的矩阵是不包含未知数的,这是个矩阵。这样一来,我们可以事先在体素上计算好矩阵,最后再应用到图像上就好了。当然我们这还只是一次线性插值,现在继续插值。我们令式子f1,f2,f3,f4中右侧矩阵分别为M1,M2,M3,M4,因为是矩阵,我们将他们用a,b替换。同样利用线性插值方法,现在在y轴方向上插值,计算1,2插值的点5,以及3,4插值的点6

  预计算参数的实现直接按照的参数计算即可,因为预计算是在小的体素实现的,所以不用太担心速度。

  的含义:在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在点处的近似值。

  

  来自去年我做一个作业和调研的时候看了HOG的那篇论文,没怎么看明白,于是就求助于ncv的代码,结果是也没看明白。在网上做了一些求助后只好自己硬着头皮慢慢抠了两周,最后写了tlab的程序《Histrams of Oriented Grants (HOG)特征 MATLAB 计算》,我的代码长的比较直白,......

  

  法及理解插值法就是一个从已知点近似计算未知点的近似计算方法,即构造一个多项式函数,使其通过所有已知点,然后用求得的函数预测点。下面记录几种最近学到的

  

  线性插值如果你只处理分离的数据、想知道分离点之间的某些值,需要用到某种类型的

  。这种情况如图5-17坐标所示。对某些分离的(整数) X值,你知道Y值。当X=2,你知道Y=10,X=3时Y=30。但你不知道X=2.7时的Y值。

  在一定允许误差下,可以近似代替原来函数;2)在查询各种数值表时,可通过线性

  

  法(NrestNeigourInterpolation)这是最简单的一种插值方法,不需要计算,在待求象素的四邻象素中,将距离待求象素最近邻的像素灰度赋给待求象素。设为待求象素坐标(x+u,y+v)......

原文标题:快速三线性插值 网址:http://www.cialisbestellenrezeptfrei.com/shumaxinwen/2020/0629/33190.html

Copyright © 2002-2020 杯弓蛇影新闻网 www.cialisbestellenrezeptfrei.com 版权所有  

联系QQ:1352848661