一种避免全景图像错位的融合方法与流程

文档序号:12126266阅读:401来源:国知局
本发明涉及图像通信
技术领域
:,尤其是涉及鱼眼图像拼接
技术领域
:。
背景技术
::鱼眼图像拼接是一种利用实景图像组成全景空间的技术,目前的鱼眼图像拼接技术主要有两种方案:第一种方案是用一个常规镜头的投影变换和多项式畸变校正技术用校正模板图像对镜头畸变参数进行畸变校正,生成一组中间校正后的2D图像,然后采用2D图像配准技术对校正后的图像元进行2D配准,最后对配准的两幅图像进行融合。第二种方案是把鱼眼图像的径向畸变校正参数和图像元的位姿参数作为一体,整体用最优化技术进行参数估计,最后调用参数映射表对镜头单元图像进行图像拼接。这些方法在图像融合过程中如果采用直接融合的方法(例如:平均值法、加权平均法、中值滤波法),会导致生成的全景图像因为重叠区域的细节差异而出现明显的拼接缝。为了解决拼接缝这个技术问题,目前常用的方法是采用动态规划和graph-cut的方法来查找最优融合中心线,具体来说就是利用两幅图像重叠区域内像素之间的灰度差异和颜色差异,在重叠区域中找到一条灰度和颜色差异最小的线,这条线就被称为最优融合中心线。在中国专利公布号CN105957007A中介绍了一种基于最优融合线的加权融合方法,它采用graph-cut的最优缝合线算法来找出重合区域中差异最小的划分线,然后利用加权平均法在最优缝合线L周围对待拼接的图像像素值进行融合,该最优缝合线算法基于像素级寻找差异最小的划分线,在对重叠区域中内容丰富的地方进行加权平均融合时,会产生较大的模糊现象。在中国专利公布号CN103856727A中介绍了一种结合颜色和结构差异最小的最优缝合线算法,利用人工智能中的启发式A*搜索算法计算平均累计误差值最小的线作为最优缝合线,该方法计算复杂,运算量大,占用系统资源多。采用现有技术中的方法生成的全景图像,容易出现模糊、拼接错位等现象,生成的全景图像效果不佳,同时占用大量的系统资源,对硬件配置的要求极高。技术实现要素:本发明为避免图像错位的问题,旨在提供一种得到优质鱼眼图像的方法。一种避免全景图像错位的融合方法,所述方法包括:获取同一时刻鱼眼镜头采集的多幅鱼眼图像,从中取出融合区;在所述融合区内找出最优融合中心线;利用最优融合中心线计算线性映射查找表;根据线性映射查找表进行图像融合;在所述融合区内找出最优融合中心线的步骤包括:计算融合区的所述边缘特征;计算边缘特征的差异性同时利用这个差异性使相互重叠的区域对准;在对准后的融合区域内根据所述融合区的边缘特征及灰度差值找出最优融合中心线;所述计算融合区的所述边缘特征的具体步骤如下:利用Canny边缘检测算子提取所述融合区中相互重叠的区域I1和I2的边缘特征,其中第一步:利用高斯滤波模板平滑I1和I2:首先生成方差σ=1.4的高斯滤波模板h(x,y,σ),然后对I1和I2进行高斯平滑处理,得到去除噪声后的相互重叠区域g1(x,y)和g2(x,y),I1和I2内(x,y)处灰度化后灰度值分别用I1(x,y)和I2(x,y)表示,所用公式如下所示:第二步:利用一阶偏导的有限差分计算梯度的幅值和方向:已经平滑滤波后的相互重叠区域g1(x,y)和g2(x,y)的梯度可以用2*2的一阶有限差分近似式来计算x和y方向上的偏导数;以g1(x,y)为例,g1(x,y)在x和y方向上的偏导数分别为Gx(x,y)和Gy(x,y)表示:根据x与y方向的梯度可以计算g1(x,y)像素点的梯度幅值G(x,y)与角度θ(x,y):第三步:对梯度幅值进行非极大值抑制;将梯度角离散为圆周的四个扇区之一,然后用3*3的模板作抑制运算;对于每个像素点,邻域的中心像素梯度值G(x,y)与沿着梯度线的两个像素的梯度值相比,如果G(x,y)不比沿梯度线的两个相邻像素梯度值大,则令G(x,y)=0;第四步:用双阈值算法检测和连接边缘:对非极大值抑制后的g1(x,y)用低阈值t1和高阈值t2进行判断,其中t1=0.4×t2;把任意边缘像素梯度值小于t1的像素丢弃,把任意边缘像素梯度值大于t2的像素保留,把任意边缘像素梯度值在t1与t2之间的,如能通过边缘连接到一个像素大于t2而且边缘所有像素大于最小阈值t1的则保留,否则丢弃;对一个融合区,利用双阈值算法检测得到融合区的边缘特征G1(x,y)和G2(x,y);所述计算边缘特征的差异性同时利用这个差异性使相互重叠的区域对准的步骤包括如下子步骤:计算边缘特征G1(x,y)和G2(x,y)的绝对误差值dg(x,y):对绝对误差值按列求和得到累加误差值向量Dg(y):移动重叠区域使计算的边缘特征的差值最小:取累加误差值向量Dg(y)中最小元素Dmin,然后固定G1(x,y),将G2(x,y)向下平移Dmin行,向下超出的部分丢掉,向上空白的部分用G1(x,y)中对应部分填补,之后将G1(x,y)和G2(x,y)做绝对差值运算并且保存在最小边缘差异Emin中,然后按照步长为1依次向上移动G2(x,y),同时对G1(x,y)和G2(x,y)做绝对差值运算,将得到的边缘差异和Emin相比较,如果比Emin小,那么用所述边缘差异更新Emin,否则丢弃该边缘差异;当G2(x,y)向上移动到距离原图像Dmin行时,会得到G2(x,y)在移动范围为(-Dmin~Dmin)时的最小边缘差异Emin以及相对应的G2(x,y)向上或向下移动的步数step,然后利用step将融合区中的I2(x,y)相对应的向上或向下移动step行;Emin的计算方法如下:min(.)表示取最小值运算,Emin的大小为H×W,H表示重叠区域的高度,W表示重叠区域的宽度;作为一个优选的实施例,所述在对准后的融合区域内根据所述融合区的边缘特征及灰度差值找出最优融合中心线的具体步骤包括:计算边缘特征与绝对灰度差值的和、寻找最小累加差值及其路径;在最小累加差值中找到误差最小位置;根据保存的路径从下至上找出那条误差最小的路径即最优融合中心线的位置;所述计算边缘特征与绝对灰度差值的和的具体步骤如下:计算对准之后重叠区域中像素对的绝对灰度差值imgdiff,像素对的绝对灰度差值计算方法如下:将边缘特征G1(x,y)和G2(x,y)叠加到绝对灰度差值imgdiff(x,y)中;所述寻找最小累加差值及其路径的具体步骤如下:利用大小为n的滤波模板对Imgdiff(x,y)进行逐行滤波,其中9≤n≤16;然后对Imgdiff(x,y)中每行的每个元素Imgdiff(x,y)计算与之对应的行标的最小累加差值acc_error(cur,y);即在前一行标最小累加差值的对应位置取一个极小的邻域w,其中3≤w≤5,找出这个邻域内所有元素的最小值,将它与元素Imgdiff(x,y)进行叠加,就可得到acc_error(cur,y),最小累加差值的计算公式如下:acc_error_mn=min(acc_error(pre,y),acc_error(pre,y+1),acc_error(pre,y-1))其中,pre表示前一个行标,cur表示当前行标;此外,将在邻域内找出的最小值到元素Imgdiff(x,y)(的那条最小路径保存在path(x,y)中;计算公式如下:所述在最小累加差值中找到误差最小位置的具体步骤如下:处理完Imgdiff(x,y)中一行的所有元素后,从上至下逐行遍历Imgdiff(x,y)中的所有元素,得到融合区中所有行的最小累加差值acc_error(cur,y)以及所有可能的最小路径path(x,y),然后从acc_error(cur,y)中找到最小元素在融合区的位置,计算方法如下所示:其中,argmin(.)表示最小值所在的位置,H表示融合区的高度,seam_line是一个一维数组,大小为1×H;所述根据保存的路径从下至上找出那条误差最小的路径即最优融合中心线的位置的具体步骤如下:将最小元素在融合区的位置加上path(x,y)中对应位置存储的路径指示作为最优融合中心线seam_line的位置,最优融合中心线的计算公式如下所示:其中i表示重叠区域从下往上的行标。作为一个优选的实施例,所述在对准后的融合区域内根据所述融合区的边缘特征及灰度差值找出最优融合中心线的具体步骤包括:所述计算边缘特征与绝对灰度差值的和的具体步骤如下:计算对准之后重叠区域中像素对的绝对灰度差值imgdiff,像素对的绝对灰度差值计算方法如下:将边缘特征G1(x,y)和G2(x,y)叠加到绝对灰度差值imgdiff(x,y)中;所述寻找最小累加差值及其对应路径的具体步骤如下:选取32个起始点,并将其初始位置保存在path中;在极小邻域内计算每个起始点走过一行的最小累加误差及其最小路径;获取最小累加差值及其路径;寻找最小累加差值及其路径:选取32个起始点,并将其初始位置保存在path中;在极小邻域内计算每个起始点走过一行的最小累加误差及其最小路径;获取最小累加差值及其路径;所述选取32个起始点并将其初始位置保存在path中的具体步骤如下:获取边缘特征与绝对灰度差值的和Imgdiff(x,y),将其第一行中间的32个像素作为生长起始点,并将这32个起始点在Imgdiff(x,y)中的位置保存在path(x,y)中,这32个起始点的像素值作为第一行的最小累加差值保存在acc_error(cur,y)中,同时将其赋值给acc_error(pre,y),其中i∈1......32;所述在极小邻域内计算每个起始点走过一行的最小累加误差及其最小路径的具体步骤如下:对于acc_error(pre,y)中的每一元素,我们限定它在Imgdiff(x,y)的所有路径在一个极小的邻域w中,其中3≤w≤5;获取每一路径点在融合区内当前行的位置信息,找出与这些位置相对应的Imgdiff(x,y)的邻域,然后在这一邻域内计算所有元素的最小值,将它与acc_error(pre,y)进行叠加,就可以得到acc_error(cur,y),同时将邻域内取得最小值的位置保存在path(x,y)中;最小累加差值的计算公式如下:acc_error_min=min(Imgdiff(x,path(x-1,y)),Imgdiff(x,path(x-1,y)+1),Imgdiff(x,path(x-1,y)-1))所述获取最小累加差值及其路径的具体步骤如下:逐行从上至下遍历整个融合区,得到从所有路径起始点开始走过整个融合区的最小累加差值以及与之对应的最小路径线;在最后一行的acc_error(cur,y)中选取最小的那个元素所在的位置,找到这个位置在path(x,y)矩阵中对应的那一列,即找出的最优融合中心线的位置。作为一个优选的实施例,所述利用最优融合中心线计算线性映射查找表具体步骤如下:其中blend_w表示进行实际线性融合的宽度;作为一个优选的实施例,所述根据线性映射查找表进行图像融合的步骤之后,还包括:对全景图像进行颜色、亮度均衡处理。本发明利用从融合区相互重叠的区域中提取的边缘特征,将这两个特征矩阵做绝对差值运算得到在这两个重叠区域中边缘特征的差异。利用特征矩阵的最小绝对差值,在垂直方向上调整融合区中相互重叠的区域,使这两个重叠区域在水平方向上对准,从而解决融合后图像错位问题。本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明一种实施例的系统流程框图;图2是相邻两幅鱼眼图像融合区示意图;图3是计算最优融合中心线的流程图;图4是根据本发明一种实施例canny边缘检测算子实现流程图;图5是根据本发明一种实施例canny边缘检测算子在x和y方向上的模板示意图;图6是根据本发明一种实施例canny边缘检测算子中非极大值抑制模板示意图;图7是根据本发明一种实施例利用边缘特征对融合区进行对准的流程图;图8是根据本发明另一种实施例最优融合中心线的搜索算法实现流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。具体实施例一本发明提供了一种避免全景图像错位的融合方法,图1是本发明避免全景图像错位的融合方法的系统流程框图。如图1所示,本发明所提供的一种避免全景图像错位的融合方法包括以下步骤:S1:获取同一时刻鱼眼镜头采集的多幅鱼眼图像,从中取出融合区。具体方法如下:获取同一时刻待融合的多幅鱼眼图像,将任意两幅相邻鱼眼图像相互重叠的区域指定为一个融合区且首尾两幅鱼眼图像的重叠区域也指定为一个融合区。如图2所示,相邻的两幅鱼眼图像分别命名为Image1、Image2,它们相互重叠的区域为I1和I2,这两个相互重叠的区域一起构成了一个融合区。S2:在所述融合区内找出最优融合中心线。采用综合边缘特征与灰度差异的动态迭代算法在融合区中找出一条最优融合中心线,找出融合区中最优融合中心线方法如图3流程图步骤所示,S2包括S201、S202、S203、S204、S205、S206等大步骤。其中:S201:计算融合区的所述边缘特征。具体步骤如下:利用canny边缘检测算子提取融合区中相互重叠的区域I1和I2的边缘特征,Canny边缘检测算子的具体步骤如图4流程图所示,S201包括S2011、S2012、S2013、S2014等小步骤。其中:S2011:利用高斯滤波模板平滑I1和I2。步骤如下:首先产生σ=1.4的高斯函数模板h(x,y,σ),然后对I1和I2进行高斯平滑处理,得到去除噪声后的相互重叠区域g1(x,y)和g2(x,y),所用公式如下所示,I1和I2内(x,y)处灰度化后灰度值分别用I1(x,y)和I2(x,y)表示:g1(x,y)=h(x,y,σ)*I1(x,y)g2(x,y)=h(x,y,σ)*I2(x,y)其中,*表示卷积运算。S2012:利用一阶偏导的有限差分进行计算梯度的幅值和方向。步骤如下:已经平滑滤波后的相互重叠区域g1(x,y)和g2(x,y)的梯度可以用2*2的一阶有限差分近似式来计算x和y方向上的偏导数。以g1(x,y)为例,g1(x,y)在x和y方向上的偏导数分别为Gx(x,y)和Gy(x,y)表示:x和y方向上的偏导数模板如图5所示,根据x与y方向的梯度可以计算图像上该像素点的梯度幅值G(x,y)与角度θ(x,y):θ(x,y)=tan-1(Gy(x,y)/Gx(x,y))G(x,y)反映了图像的边缘强度,θ(x,y)表示方位角反映了梯度的方向,当G(x,y)取得局部最大值时,其对应的梯度方向θ(x,y)反映了边缘的方向。S2013:对梯度幅值进行非极大值抑制。仅仅得到全局的梯度并不足以确定边缘,因此必须保留局部梯度最大的点,且要抑制非极大值。方法如下:将梯度角离散为圆周的四个扇区之一,然后用3*3的模板作抑制运算。如图6所示,四个扇区的标号为0到3,对应3*3邻域的四种可能组合。对于每个像素点,邻域的中心像素G(x,y)与沿着梯度线的两个像素相比。如果G(x,y)的梯度值不比沿梯度线的两个相邻像素梯度值大,则令G(x,y)=0。S2014:用双阈值算法检测和连接边缘。具体步骤如下:对非极大值抑制后的图像与低阈值t1和高阈值t2进行判断,其中t1=0.4×t2。具体来说就是把任意边缘像素梯度值小于t1的像素丢弃,把任意边缘像素梯度值大于t2的像素保留,把任意边缘像素梯度值在t1与t2之间的,如果能通过边缘连接到一个像素大于t2而且边缘所有像素大于最小阈值t1的则保留,否则丢弃。利用双阈值算法检测后就可以得到融合区的边缘特征G1(x,y)和G2(x,y)。S202:利用边缘特征调整融合区并计算融合区内像素对的绝对灰度差值,如图7所示。具体包括如下S2021、S2022、S2023等步骤:S2021:计算边缘特征G1(x,y)和G2(x,y)的绝对误差值dg(x,y),方法如下:dg(x,y)=|G1(x,y)-G2(x,y)|其中,||表示求绝对值运算。S2022:对绝对误差值矩阵按列求和得到累加误差值向量Dg(y),方法如下:S2023:移动重叠区域使计算到的边缘特征的差值最小。具体步骤如下:取累计误差值向量Dg(y)中最小元素Dmin,然后固定G1(x,y),将G2(x,y)向下平移Dmin行,向下超出的部分丢掉,向上空白的部分用G1(x,y)中对应部分填补,接下来将G1(x,y)和G2(x,y)做绝对差值运算并且保存在最小边缘差异Emin中,然后按照步长为1依次向上移动G2(x,y),同时对G1(x,y)和G2(x,y)做绝对差值运算,将得到的边缘差异和Emin相比较,如果比Emin小,那么用这个边缘差异更新Emin,否则丢弃这个边缘差异。当G2(x,y)向上移动到距离原图像Dmin行时,会得到G2(x,y)在移动范围为(-Dmin~Dmin)时的最小边缘差异Emin以及相对应的G2(x,y)向上或向下移动的步数step,然后将融合区中的I2(x,y)相对应的向上或向下移动step行。Emin的计算方法如下:其中,min(.)表示取最小值运算,Emin的大小为H×W,H表示重叠区域的高度,W表示重叠区域的宽度。利用S201步中从融合区相互重叠的区域中提取的边缘特征G1(x,y)和G2(x,y),将这两个特征矩阵做绝对差值运算得到在这两个重叠区域中边缘特征的差异,这个差异值表明融合区在水平方向上并没有完全的对准,如果在水平方向上直接进行线性融合,会导致融合区产生错位现象。最后通过S2023这个步骤,利用特征矩阵的最小绝对差值,在垂直方向上调整融合区中相互重叠的区域,使这两个重叠区域在水平方向上对准,从而解决融合后图像错位问题。S203:计算边缘特征与绝对灰度差值的和计算重叠区域中像素对的绝对灰度差值imgdiff,像素对的绝对灰度差值计算方法如下:imgdiff(x,y)=|I1(x,y)-I2(x,y)|将上述S201步中提取出来的边缘特征G1(x,y)和G2(x,y)叠加到绝对灰度差值imgdiff(x,y)中,得到表示相互重叠的区域结构与灰度差异的特征Imgdiff(x,y)。S204:寻找最小累加差值及其对应的路径利用大小为n的滤波模板对Imgdiff中的逐行进行滤波,其中9≤n≤16。然后对Imgdiff中每行的每个元素Imgdiff(i)计算与之对应的行标的最小累加差值acc_error(cur,i)。也就是在前一行标最小累加差值的对应位置取一个极小的邻域w,其中3≤w≤5,找出这个邻域内所有元素的最小值,将它与元素Imgdiff(i)进行叠加,就可得到acc_error(cur,i),最小累加差值的计算公式如下:其中,pre表示前一个行标,cur表示当前行标。同时将在邻域内找出的最小值到元素Imgdiff(i)的那条最小路径保存在path(y,i)中。计算公式如下:S205:在最小累加差值中找到误差最小位置处理完Imgdiff中一行的所有元素后,从上至下逐行遍历Imgdiff中的所有元素,得到融合区中所有行的最小累加差值acc_error以及所有可能的最小路径path,然后从acc_error中找到最小元素在融合区的位置,计算方法如下所示:其中,argmin(.)表示最小值所在的位置,H表示融合区的高度,seam_line是一个一维数组,大小为1×H。S206:根据保存的路径从下至上找出那条误差最小的路径即最优融合中心线的位置。将最小元素在融合区的位置加上path中对应位置存储的路径指示作为最优融合中心线seam_line的位置,最优融合中心线的计算公式如下所示:其中i表示重叠区域从下往上的行标。通过步骤S2中的S201、S203、S204、S205、S206,首先计算了融合区内相互重叠区域的灰度差异和边缘特征差异,然后综合这两种差异信息,规划路径避开图像中的内容丰富的区域,在融合区内利用动态迭代的方法进行最优融合中心线搜索。通过搜索出来的最优融合中心线,让合成的全景图像尽可能地接近真实,不会因为融合区内的细节差异而产生明显的拼接缝隙。同时最优融合中心线的搜索方法考虑了融合区的边缘特征和灰度差异,因此融合成的全景图像在融合区没有图像的模糊问题。通过S202来调整融合区中相互重叠的区域,进一步在解决模糊的问题的基础上解决融合区的错位问题。利用S201步中从融合区相互重叠的区域中提取的边缘特征G1(x,y)和G2(x,y),将这两个特征矩阵做绝对差值运算得到在这两个重叠区域中边缘特征的差异,这个差异值表明融合区在水平方向上并没有完全的对准。通过S2023这个步骤,利用特征矩阵的最小绝对差值,在垂直方向上调整融合区中相互重叠的区域,使这两个重叠区域在水平方向上对准,从而解决融合后图像错位问题。S3:利用最优融合中心线计算线性映射查找表通过最优融合中心线建立每个融合区中重叠区域像素点对应位置的线性映射查找表table。线性映射查找表的生成方法如下:其中blend_w表示进行实际线性融合的宽度。在步骤S3中,利用找出的最优融合中心线,建立融合区的线性映射查找表。具体就是以最优融合中心线为中心,在它两边对称地取大小为的一个区域,组合起来就是一个的区间,table表中与这个区间相对应的位置的值是线性变化的,大小都在0~1内,在这个区间的左边的table表的值为1,在这个区间的右边的table表的值为0。S4:根据线性映射查找表进行图像融合根据生成的多个线性映射查找表,根据线性加权公式对每个融合区的各个像素进行线性加权,融合成一幅全景图像。采用线性映射查找表的方法相比于直接的平均融合,有一个线性区域的过渡,因此可以让图像的融合区更加平滑,进一步消除了缝合缝隙。S5:对全景图像进行颜色、亮度均衡处理对生成的全景图像进行亮度与颜色的均衡处理,以消除不同摄像机之间的色彩差异,得到最终的鱼眼镜头全景图像。具体就是通过鱼眼镜头的光照模型,利用曝光补偿blocksgain算法进行光线融和,从而校正一幅鱼眼图像内部的光照不均匀性,然后通过相邻两幅鱼眼图像重叠区域之间的关系,建立相邻两幅图像之间直方图映射表,通过映射表对两幅鱼眼图像做整体的映射变换,最终达到整体的亮度和颜色的一致性。本实施例一的有益效果是:1、通过步骤S1和S2中的S201、S202,来调整融合区中相互重叠的区域,利用S201步中从融合区相互重叠的区域中提取的边缘特征G1(x,y)和G2(x,y),将这两个特征矩阵做绝对差值运算得到在这两个重叠区域中边缘特征的差异,这个差异值表明融合区在水平方向上并没有完全的对准。通过S2023这个步骤,利用特征矩阵的最小绝对差值,在垂直方向上调整融合区中相互重叠的区域,使这两个重叠区域在水平方向上对准,从而解决融合后图像错位问题。2、通过步骤S2中的S203、S204、S205、S206,进一步在解决错位的问题的基础上解决融合区的模糊问题。首先计算了融合区内相互重叠区域的灰度差异和边缘特征差异,然后综合这两种差异信息,规划路径避开图像中的内容丰富的区域,在融合区内利用动态迭代的方法进行最优融合中心线搜索。通过搜索出来的最优融合中心线,让合成的全景图像尽可能地接近真实,不会因为融合区内的细节差异而产生明显的拼接缝隙。同时最优融合中心线的搜索方法考虑了融合区的边缘特征和灰度差异,因此融合成的全景图像在融合区没有图像的模糊问题。3、通过步骤S3和S4,建立融合区的线性映射查找表,可以使融合区看起来更加平滑,进一步消除了缝合缝隙。4、通过S5的曝光补偿blocksgain算法解决了因光线不同而造成两幅图像曝光度不同的问题,此外建立相邻两幅图像之间直方图映射表,通过映射表对两幅鱼眼图像做整体的映射变换,使得两幅图像达到了整体的亮度和颜色的一致性。具体实施例二与具体实施例一相比较,本发明还采用了另外一种搜索方法寻找最优融合中心线,具体表现在S204上且同时省去了具体实施例一的S205和S206步骤。S204:寻找最小累加差值及其对应的路径。具体步骤如下:在计算得到边缘特征与绝对灰度差值的和之后,该结果是一个H×W的矩阵。我们选取该矩阵第一行的中间32个像素作为路径起始点,采取逐行从上至下的搜索算法,分别计算出每个路径起始点对应的一条融合线的平均累加误差值,选取平均累加误差值最小的那条线作为最优融合中心线,从而保证最优融合中心线要尽可能的穿越融合区平滑部分的原则。该搜索算法的具体实现流程图如图8所示,步骤如下:S2041:选取32个路径起始点,并将其初始位置保存在path(x,y)中。具体步骤如下:获取边缘特征与绝对灰度差值的和Imgdiff(x,y),将其第一行中间的32个像素作为生长起始点,并将这32个起始点在Imgdiff(x,y)中的位置保存在path(x,y)中,这32个起始点的像素值作为第一行的最小累加差值保存在acc_error(cur,y)中,同时将其赋值给acc_error(pre,y),其中i∈1......32。S2042:在极小邻域内计算每个路径起始点走过一行的最小累加差值及其最小路径。具体步骤如下:对于acc_error(pre,y)中的每一元素,我们限定它在Imgdiff(x,y)的所有路径在一个极小的邻域w中,即每一元素从上往下可以移动的范围不超过w,其中3≤w≤5。获取每一路径点在融合区内当前行的位置信息,找出与这些位置相对应的Imgdiff(x,y)的邻域,然后在这一邻域内计算所有元素的最小值,将它与acc_error(pre,y)进行叠加,就可以得到acc_error(cur,y),同时将邻域内取得最小值的位置保存在path(x,y)中。最小累加差值的计算公式如下:acc_error_min=min(Imgdiff(x,path(x-1,y)),Imgdiff(x,path(x-1,y)+1),Imgdiff(x,path(x-1,y)-1))S2043:获取最小累加差值及其路径。具体步骤如下:逐行从上至下遍历整个融合区,得到从所有路径起始点开始走过整个融合区的最小累加差值以及与之对应的最小路径线。在最后一行的acc_error(cur,y)中选取最小的那个元素所在的位置,找到这个位置在path(x,y)矩阵中对应的那一列,即找出的最优融合中心线的位置。本实施例改变了S204的方法且省去了S205和S206,不需要根据保存的路径从下至上找出具体实施方式一中误差最小的路径即最优融合中心线的位置,只要找出最后一行的acc_error(cur,y)中最小的那个元素所在的位置,然后对应到path(x,y)矩阵中去,因为本实施例不需要从下至上的回溯过程,因此极大的降低了计算的复杂度,降低了对系统资源的需求即降低了系统的硬件要求。本实施例二的有益效果是:1、通过步骤S1和S2中的S201、S202,来调整融合区中相互重叠的区域,利用S201步中从融合区相互重叠的区域中提取的边缘特征G1(x,y)和G2(x,y),将这两个特征矩阵做绝对差值运算得到在这两个重叠区域中边缘特征的差异,这个差异值表明融合区在水平方向上并没有完全的对准。通过S2023这个步骤,利用特征矩阵的最小绝对差值,在垂直方向上调整融合区中相互重叠的区域,使这两个重叠区域在水平方向上对准,从而解决融合后图像错位问题。2、通过步骤S2中的S201、S203、S204,首先计算了融合区内相互重叠区域的灰度差异和边缘特征差异,然后综合这两种差异信息,规划路径避开图像中的内容丰富的区域,在融合区内利用动态迭代的方法进行最优融合中心线搜索。通过搜索出来的最优融合中心线,让合成的全景图像尽可能地接近真实,不会因为融合区内的细节差异而产生明显的拼接缝隙。同时最优融合中心线的搜索方法考虑了融合区的边缘特征和灰度差异,因此融合成的全景图像在融合区没有图像的模糊问题。S204只要找出最后一行的acc_error(cur,i)中选取最小的那个元素所在的位置,然后对应到path矩阵中,运算简单,因此极大的降低了计算的复杂度,降低了对系统资源的需求即降低了系统的硬件要求。3、通过步骤S3和S4,建立融合区的线性映射查找表,可以使融合区看起来更加平滑,进一步消除了缝合缝隙。4、通过S5的曝光补偿blocksgain算法解决了因光线不同而造成两幅图像曝光度不同的问题,此外建立相邻两幅图像之间直方图映射表,通过映射表对两幅鱼眼图像做整体的映射变换,使得两幅图像达到了整体的亮度和颜色的一致性。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。以上所揭露的仅为本发明的较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1