发明名称 一种避免全景图像错位的融合方法
摘要 本发明公开了一种避免全景图像错位的融合方法,涉及鱼眼图像拼接技术领域,包括:获取同一时刻鱼眼镜头采集的多幅鱼眼图像,从中取出融合区;在所述融合区内找出最优融合中心线;利用最优融合中心线计算线性映射查找表;根据线性映射查找表进行图像融合;本发明利用从融合区相互重叠的区域中提取的边缘特征,将这两个特征矩阵做绝对差值运算得到在这两个重叠区域中边缘特征的差异。利用特征矩阵的最小绝对差值,在垂直方向上调整融合区中相互重叠的区域,使这两个重叠区域在水平方向上对准,从而解决融合后图像错位问题。
申请公布号 CN106530267A 申请公布日期 2017.03.22
申请号 CN201611076444.9 申请日期 2016.11.30
申请人 长沙全度影像科技有限公司 发明人 不公告发明人
分类号 G06T5/50(2006.01)I;G06T5/00(2006.01)I;G06T7/12(2017.01)I 主分类号 G06T5/50(2006.01)I
代理机构 代理人
主权项 一种避免全景图像错位的融合方法,其特征在于,所述方法包括:获取同一时刻鱼眼镜头采集的多幅鱼眼图像,从中取出融合区;在所述融合区内找出最优融合中心线;利用最优融合中心线计算线性映射查找表;根据线性映射查找表进行图像融合;在所述融合区内找出最优融合中心线的步骤包括:计算融合区的所述边缘特征;计算边缘特征的差异性同时利用这个差异性使相互重叠的区域对准;在对准后的融合区域内根据所述融合区的边缘特征及灰度差值找出最优融合中心线;所述计算融合区的所述边缘特征的具体步骤如下:利用Canny边缘检测算子提取所述融合区中相互重叠的区域I<sub>1</sub>和I<sub>2</sub>的边缘特征,其中第一步:利用高斯滤波模板平滑I<sub>1</sub>和I<sub>2</sub>:首先生成方差σ=1.4的高斯滤波模板h(x,y,σ),然后对I<sub>1</sub>和I<sub>2</sub>进行高斯平滑处理,得到去除噪声后的相互重叠区域g<sub>1</sub>(x,y)和g<sub>2</sub>(x,y),I<sub>1</sub>和I<sub>2</sub>内(x,y)处灰度化后灰度值分别用I<sub>1</sub>(x,y)和I<sub>2</sub>(x,y)表示,所用公式如下所示:<maths num="0001"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>h</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>&sigma;</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><mn>2</mn><msup><mi>&pi;&sigma;</mi><mn>2</mn></msup></mrow></mfrac><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><msup><mi>&sigma;</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mo>&ForAll;</mo><mi>x</mi><mo>&Element;</mo><mn>1......</mn><mi>H</mi><mo>,</mo><mo>&ForAll;</mo><mi>y</mi><mo>&Element;</mo><mn>1......</mn><mi>W</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001166149890000011.GIF" wi="1448" he="129" /></maths><maths num="0002"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><msub><mi>g</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mi>h</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>&sigma;</mi><mo>)</mo></mrow><mo>*</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mo>&ForAll;</mo><mi>x</mi><mo>&Element;</mo><mn>1......</mn><mi>H</mi><mo>,</mo><mo>&ForAll;</mo><mi>y</mi><mo>&Element;</mo><mn>1......</mn><mi>W</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001166149890000012.GIF" wi="1440" he="65" /></maths><maths num="0003"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><msub><mi>g</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mi>h</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>&sigma;</mi><mo>)</mo></mrow><mo>*</mo><msub><mi>I</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mo>&ForAll;</mo><mi>x</mi><mo>&Element;</mo><mn>1......</mn><mi>H</mi><mo>,</mo><mo>&ForAll;</mo><mi>y</mi><mo>&Element;</mo><mn>1......</mn><mi>W</mi></mrow></mtd></mtr></mtable><mo>;</mo></mrow>]]></math><img file="FDA0001166149890000013.GIF" wi="1486" he="89" /></maths>第二步:利用一阶偏导的有限差分计算梯度的幅值和方向:已经平滑滤波后的相互重叠区域g<sub>1</sub>(x,y)和g<sub>2</sub>(x,y)的梯度可以用2*2的一阶有限差分近似式来计算x和y方向上的偏导数;以g<sub>1</sub>(x,y)为例,g<sub>1</sub>(x,y)在x和y方向上的偏导数分别为G<sub>x</sub>(x,y)和G<sub>y</sub>(x,y)表示:<maths num="0004"><math><![CDATA[<mrow><msub><mi>G</mi><mi>x</mi></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>y</mi></mrow><mo>)</mo></mrow><mo>-</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow><mo>)</mo></mrow><mo>+</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>-</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>;</mo></mrow>]]></math><img file="FDA0001166149890000014.GIF" wi="1235" he="119" /></maths><maths num="0005"><math><![CDATA[<mrow><msub><mi>G</mi><mi>y</mi></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>-</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow><mo>)</mo></mrow><mo>+</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>-</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>y</mi></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>;</mo></mrow>]]></math><img file="FDA0001166149890000015.GIF" wi="1235" he="120" /></maths>根据x与y方向的梯度可以计算g<sub>1</sub>(x,y)像素点的梯度幅值G(x,y)与角度θ(x,y):<maths num="0006"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>G</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><msqrt><mrow><msubsup><mi>G</mi><mi>x</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><msubsup><mi>G</mi><mi>y</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></msqrt></mrow></mtd><mtd><mrow><mo>&ForAll;</mo><mi>x</mi><mo>&Element;</mo><mn>1......</mn><mi>H</mi><mo>,</mo><mo>&ForAll;</mo><mi>y</mi><mo>&Element;</mo><mn>1......</mn><mi>W</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001166149890000016.GIF" wi="1393" he="112" /></maths><maths num="0007"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>&theta;</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><msub><mi>G</mi><mi>y</mi></msub><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow><mo>)</mo><mo>/</mo><msub><mi>G</mi><mi>x</mi></msub><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow><mo>)</mo><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mo>&ForAll;</mo><mi>x</mi><mo>&Element;</mo><mn>1......</mn><mi>H</mi><mo>,</mo><mo>&ForAll;</mo><mi>y</mi><mo>&Element;</mo><mn>1......</mn><mi>W</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001166149890000017.GIF" wi="1407" he="75" /></maths>第三步:对梯度幅值进行非极大值抑制;将梯度角离散为圆周的四个扇区之一,然后用3*3的模板作抑制运算;对于每个像素点,邻域的中心像素梯度值G(x,y)与沿着梯度线的两个像素的梯度值相比,如果G(x,y)不比沿梯度线的两个相邻像素梯度值大,则令G(x,y)=0;第四步:用双阈值算法检测和连接边缘:对非极大值抑制后的g<sub>1</sub>(x,y)用低阈值t1和高阈值t2进行判断,其中t1=0.4×t2;把任意边缘像素梯度值小于t1的像素丢弃,把任意边缘像素梯度值大于t2的像素保留,把任意边缘像素梯度值在t1与t2之间的,如能通过边缘连接到一个像素大于t2而且边缘所有像素大于最小阈值t1的则保留,否则丢弃;对一个融合区,利用双阈值算法检测得到融合区的边缘特征G<sub>1</sub>(x,y)和G<sub>2</sub>(x,y);所述计算边缘特征的差异性同时利用这个差异性使相互重叠的区域对准的步骤包括如下子步骤:计算边缘特征G<sub>1</sub>(x,y)和G<sub>2</sub>(x,y)的绝对误差值d<sub>g</sub>(x,y):<maths num="0008"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><msub><mi>d</mi><mi>g</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mo>|</mo><msub><mi>G</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>G</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>|</mo></mrow></mtd><mtd><mrow><mo>&ForAll;</mo><mi>x</mi><mo>&Element;</mo><mn>1......</mn><mi>H</mi><mo>,</mo><mo>&ForAll;</mo><mi>y</mi><mo>&Element;</mo><mn>1......</mn><mi>W</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001166149890000021.GIF" wi="1287" he="69" /></maths>对绝对误差值按列求和得到累加误差值向量D<sub>g</sub>(y):<maths num="0009"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><msub><mi>D</mi><mi>g</mi></msub><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mi>H</mi></munderover><msub><mi>d</mi><mi>g</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mo>&ForAll;</mo><mi>x</mi><mo>&Element;</mo><mn>1......</mn><mi>H</mi><mo>,</mo><mo>&ForAll;</mo><mi>y</mi><mo>&Element;</mo><mn>1......</mn><mi>W</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001166149890000022.GIF" wi="1067" he="168" /></maths>移动重叠区域使计算的边缘特征的差值最小:取累加误差值向量D<sub>g</sub>(y)中最小元素D<sub>min</sub>,然后固定G<sub>1</sub>(x,y),将G<sub>2</sub>(x,y)向下平移D<sub>min</sub>行,向下超出的部分丢掉,向上空白的部分用G<sub>1</sub>(x,y)中对应部分填补,之后将G<sub>1</sub>(x,y)和G2<sub>(</sub>x,y)做绝对差值运算并且保存在最小边缘差异E<sub>min</sub>中,然后按照步长为1依次向上移动G<sub>2</sub>(x,y),同时对G<sub>1</sub>(x,y)和G<sub>2</sub>(x,y)做绝对差值运算,将得到的边缘差异和E<sub>min</sub>相比较,如果比E<sub>min</sub>小,那么用所述边缘差异更新E<sub>min</sub>,否则丢弃该边缘差异;当G2<sub>(</sub>x,y)向上移动到距离原图像D<sub>min</sub>行时,会得到G<sub>2</sub>(x,y)在移动范围为(‑D<sub>min</sub>~D<sub>min</sub>)时的最小边缘差异E<sub>min</sub>以及相对应的G<sub>2</sub>(x,y)向上或向下移动的步数step,然后利用step将融合区中的I<sub>2</sub>(x,y)相对应的向上或向下移动step行;E<sub>min</sub>的计算方法如下:<maths num="0010"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><msub><mi>E</mi><mi>min</mi></msub><mo>=</mo><mi>min</mi><mo>|</mo><msub><mi>G</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>G</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>D</mi><mi>min</mi></msub><mo>+</mo><mi>k</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>|</mo></mrow></mtd><mtd><mrow><mo>&ForAll;</mo><mi>k</mi><mo>&Element;</mo><mn>0......2</mn><mo>*</mo><msub><mi>D</mi><mi>min</mi></msub><mo>,</mo><mo>&ForAll;</mo><mi>x</mi><mo>&Element;</mo><mn>1......</mn><mi>H</mi><mo>,</mo><mo>&ForAll;</mo><mi>y</mi><mo>&Element;</mo><mn>1......</mn><mi>W</mi></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001166149890000023.GIF" wi="1796" he="51" /></maths>min(.)表示取最小值运算,E<sub>min</sub>的大小为H×W,H表示重叠区域的高度,W表示重叠区域的宽度。
地址 410205 湖南省长沙市高新开发区尖山路39号中电软件园一期9栋厂房4层402房