发明内容
本发明提出一种图像序列拼接方法和装置,针对扫描笔获取的图像帧序列进行拼接。对于扫描笔图像帧序列的拼接,保证了拼接的快速性和准确性。
本发明公开了一种图像序列拼接方法,包括如下步骤:
步骤一,设置图像帧序列中的当前帧的帧属性,形成图像帧组;所述帧属性包括基准帧、预测帧和跳过帧;
步骤二,根据当前帧的帧属性及相关图像帧的拼接信息的更新值计算当前帧的拼接信息的预测值;
步骤三,根据当前帧的拼接信息的预测值从拼接信息的候选值中进行筛选,得到当前帧的拼接信息的计算值;
步骤四,根据当前帧的拼接信息的计算值计算当前帧的拼接信息的更新值,转至步骤一,直至图像帧序列中各基准帧、预测帧的拼接信息的更新值计算完毕;
步骤五、根据计算完毕的各基准帧、预测帧的拼接信息的计算值拼接为全景图像。
本发明还公开了一种图像序列拼接装置,包括如下模块:
设置模块,设置图像帧序列中的当前帧的帧属性,形成图像帧组;所述帧属性包括基准帧、预测帧和跳过帧;
预测模块,根据当前帧的帧属性及相关图像帧的拼接信息的更新值计算当前帧的拼接信息的预测值;
筛选模块,根据当前帧的拼接信息的预测值从拼接信息的候选值中进行筛选,得到当前帧的拼接信息的计算值;
更新模块,根据当前帧的拼接信息的计算值计算当前帧的拼接信息的更新值,转至设置模块,直至图像帧序列中各基准帧、预测帧的拼接信息的更新值计算完毕;
拼接模块、根据计算完毕的各基准帧、预测帧的拼接信息的计算值拼接为全景图像。
本发明公开了一种图像序列拼接方法和装置,只对图像帧组中的基准帧和预测帧进行拼接计算,对于图像帧组中的跳过帧则直接跳过,从而提高了整个图像帧序列的拼接速度。由于图像帧序列中相邻图像帧之间具有平滑性,根据前面图像帧的拼接信息预测当前帧的拼接信息,然后根据拼接信息的预测值获取当前帧的更加准确的拼接信息,大大提高了图像帧序列拼接过程中的准确性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种图像序列拼接方法,如图1所示,具体包括如下步骤:
步骤00,先对图像帧序列的第一帧进行特殊处理,将图像帧序列的第一帧的帧属性设为预测帧,将其水平拼接位移更新值设为0,竖直拼接位移更新值设为0,拼接方向更新值设为右下。本实施例中,如图3所示的图像帧序号为1的图像帧为本实施例中图像帧序列的第一帧。
步骤10,设置图像帧序列中的当前帧的帧属性,形成图像帧组;所述帧属性包括基准帧、预测帧和跳过帧。
两图像帧之间的拼接信息包括水平拼接位移、竖直拼接位移及拼接方向;拼接信息的预测值是指通过预测得到的当前帧相对于模板帧的拼接信息;拼接信息的计算值是指通过计算得到的当前帧相对于模板帧的拼接信息;拼接信息的更新值表示通过计算得到的当前帧相对于当前帧紧邻的前一图像帧的拼接信息。
图像帧序列被划分为图像帧组,在图像帧组内的每一图像帧或者为基准帧或者为跳过帧或者为预测帧,此即为图像帧的帧属性。如果当前帧已经具有帧属性,则跳过该步骤,否则根据当前帧的前一图像帧的帧属性作如下处理:
如果当前帧的前一图像帧的帧属性为预测帧,则设置当前帧的帧属性为基准帧;
如果当前帧的前一图像帧的帧属性为基准帧,则当前帧的前一图像帧为一个新的图像帧组的开始,根据前一图像帧的拼接信息的更新值计算该图像帧组中的跳过帧数目,该图像帧组的最后一帧的帧属性设置为预测帧,基准帧和预测帧之间的图像帧的帧属性设置为跳过帧,
扫描笔获取的整个图像帧序列中除第一帧用作初始化之外,剩余图像帧依据图像帧间的位移距离划分为多个连续的图像帧组。图像帧组的结构如图2所示,其第一帧为基准帧,最后一帧为预测帧,位于基准帧和预测帧之间设置为跳过帧。对于一个图像帧组而言,基准帧和预测帧是必需的,跳过帧的数目根据图像帧间的拼接位移的更新值确定,可以为0,也可以为多帧。在对两图像帧进行拼接时,前一图像帧称为模板帧,后一图像帧称为当前帧,由于本方法的图像帧组中存在跳过帧,所以当前帧和模板帧可能为时序紧邻的两图像帧,则跳过帧的数目为0;也可能在两者之间存在跳过帧,则跳过帧的数目为多帧。
本实施例中相关的各图像帧如图3所示,具体包括图像帧序号、图像帧、拼接系数、水平拼接位移的预测值、水平拼接位移的计算值、水平拼接位移的更新值、竖直拼接位移的预测值、竖直拼接位移的计算值、竖直拼接位移的更新值、拼接方向的预测值、拼接方向的计算值、拼接方向的更新值及帧属性。其中,拼接系数为本实施例中用于计算图像帧拼接的度量指标,拼接方向共有四个取值,分别为右下、右上、左下、左上,帧属性有三个取值,分别为基准帧、跳过帧及预测帧。在本实施例中,各图像帧的大小为
,采样频率为120帧/秒。在本实施例中,为方便叙述,图像帧序号为X的图像帧称为第X图像帧。
在本实施例中,各图像帧组的跳过帧的数目的计算方法如下:
1) 由于扫描笔的采样频率为120帧/秒,当前帧的前一图像帧的水平拼接位移更新值与竖直拼接位移更新值中的较大者小于等于4时,图像帧组内的跳过帧数目为3;
2) 由于扫描笔的采样频率为120帧/秒,当前帧的前一图像帧的水平拼接位移更新值与竖直拼接位移更新值中的较大者大于4且小于等于8时,图像帧组内的跳过帧数目为2;
3) 由于扫描笔的采样频率为120帧/秒,当前帧的前一图像帧的水平拼接位移更新值与竖直拼接位移更新值中的较大者大于8且小于等于16时,图像帧组内的跳过帧数目为1;
4) 由于扫描笔的采样频率为120帧/秒,当前帧的前一图像帧的水平拼接位移更新值与竖直拼接位移更新值中的较大者大于16时,图像帧组内的跳过帧数目为0。
如图3中所示,对于第2图像帧,由于前一图像帧的帧属性为预测帧,故第2图像帧的帧属性设置为基准帧;对于第3图像帧,由于前一图像帧的帧属性为基准帧,且前一图像帧的水平拼接位移更新值与竖直拼接位移更新值中的较大者为0,小于等于4,则跳过帧的数目设为3,即第3、4、5图像帧的帧属性为跳过帧,第6图像帧的帧属性为预测帧。又如对第123图像帧,其前一图像帧的帧属性为基准帧,且前一图像帧的水平拼接位移的更新值与竖直拼接位移的更新值中较大者为9,大于8且小于等于16,则跳过帧的数目设为1,即第123、124图像帧的帧属性为预测帧;又如对第196图像帧,其前一图像帧的帧属性为基准帧,且前一图像帧的水平拼接位移的更新值与竖直拼接位移的更新值中较大者为38,大于16,则跳过帧的数目设为0,即第196图像帧的帧属性为预测帧。
步骤20,根据当前帧的帧属性及相关图像帧的拼接信息的更新值计算当前帧的拼接信息的预测值。图像帧的拼接信息包括图像帧的拼接方向、图像帧的水平拼接位移和图像帧的竖直拼接位移;如果当前帧为基准帧或预测帧,则计算当前帧的拼接信息的预测值时,得到经预测得到的当前帧相对于模板帧的拼接信息,具体为:
如果当前帧为基准帧,则将当前帧的前一图像帧所对应的拼接信息更新值作为当前帧的拼接信息的预测值。
如果当前帧为预测帧,则根据当前图像帧组的基准帧对应的拼接信息的更新值计算当前帧的拼接信息的预测值。将当前图像帧组的基准帧的拼接方向的更新值作为当前帧的拼接方向的预测值;根据当前图像帧组的基准帧的水平拼接位移的更新值、当前图像帧组的基准帧的前一图像帧的水平拼接位移的更新值及当前图像帧组的跳过帧的数目进行计算,得到当前帧的水平拼接位移的预测值;根据当前图像帧组的基准帧的竖直拼接位移的更新值、当前图像帧组的基准帧的前一图像帧的竖直拼接位移的更新值及当前图像帧组的跳过帧的数目进行计算,得到当前帧的竖直拼接位移预测值。
在本实施例中,扫描笔做匀加速运动,以各图像帧的水平拼接位移为例:当前帧为预测帧时,设当前图像帧组的基准帧的前一图像帧的水平拼接位移的更新值为
,设当前图像帧组的基准帧的水平拼接位移的更新值为
,设当前图像帧组的跳过帧的数目为
,则当前帧的水平拼接位移的预测值为
。
如图3所示,如第2图像帧为基准帧,则将其前一图像帧的拼接信息的更新值作为当前帧的拼接信息的预测值;又如第6图像帧为预测帧,当前图像帧组的基准帧为第2图像帧,跳过帧的数目为3,则将第2图像帧的拼接方向的更新值作为其拼接方向的预测值,第1图像帧的水平拼接位移的更新值为0,第2图像帧的水平拼接位移的更新值为0,则当前图像帧的水平拼接位移的预测值为
,同样可计算得到当前图像帧的竖直拼接位移的预测值为0;又如第124图像帧为预测帧,当前图像帧组的基准帧为第122图像帧,跳过帧的数目为1,则将第122图像帧的拼接方向的更新值作为其拼接方向预测值,第121图像帧的水平拼接位移的更新值为8,第122图像帧的水平拼接位移的更新值为9,则当前帧的水平拼接位移的预测值为
,同样可计算得到当前帧的竖直拼接位移的预测值为6。
步骤30,根据当前帧的拼接信息的预测值从拼接信息的候选值中进行筛选,得到当前帧的拼接信息的计算值。图像拼接时首先基于一些度量指标来计算拼接信息,实际中两图像帧之间只有一个最佳拼接位置,但是根据度量指标获取的最佳拼接位置却有可能并不是实际的最佳拼接位置,这会导致拼接错误。为了保证拼接的正确性,可以根据度量指标取几个候选拼接位置对应的拼接信息作为拼接信息的候选值,然后再根据拼接信息的预测值从各拼接信息的候选值中选择最佳的拼接信息的候选值。所述拼接信息的候选值为图像帧根据度量指标选取的一个或几个候选的拼接位置处所对应的拼接信息。
在本实施例中,计算当前帧与当前图像帧组的基准帧的拼接信息的候选值时,先将两图像帧进行二值化,二值化后的两图像帧中的白像素点的像素值为0,黑像素点的像素值为1,然后根据二值化后的两图像帧的拼接系数计算拼接信息的候选值。拼接系数即为二值化后的两图像帧在重叠区域中重合的黑像素点数目除以重叠区域中黑像素点总数的值。
在计算拼接信息的候选值时,先计算出两图像帧的所有可能的拼接位置对应的拼接系数,然后根据得到的拼接系数以迭代的方式筛选拼接信息的候选值:
步骤301:搜索所有可能的拼接位置对应的拼接系数中最大拼接系数,将最大拼接系数所对应的拼接信息作为首个拼接信息的候选值;
步骤302:以迭代的方式筛选拼接信息的候选值:以该候选值所对应的位置为中心、以2为半径,将窗口范围内所有的拼接位置处对应的拼接系数置为0;然后再次搜索所有拼接位置对应的拼接系数中的最大值;如果得到的最大值大于等于步骤301中最大拼接系数的0.8倍,则将该最大值对应的拼接信息作为一个拼接信息的候选值,重复本步,直到搜索得到的拼接系数中的最大值小于步骤301中最大拼接系数的0.8倍时,结束当前帧的拼接信息的候选值的计算。
如图3所示,当前帧为基准帧或预测帧时,计算当前帧的拼接信息的候选值,第196图像帧有两个拼接信息的候选值,分别为第一候选值和第二候选值,其中第一候选值:拼接方向为右下,水平拼接位移为4,竖直拼接方向为0;第二候选值:拼接方向为右下,水平拼接位移为37,竖直拼接方向为8。
如果两图像帧对应的拼接信息的候选值只有一个,则两图像帧只有一个对应的拼接位置,直接将该拼接信息的候选值作为两图像帧对应的拼接信息的计算值;如果两图像帧对应的拼接信息的候选值有一个以上,则两图像帧有多个对应的拼接位置,在这些拼接位置对应的拼接信息的候选值中选取与拼接信息的预测值距离最小的一个作为两图像帧对应的拼接信息的计算值。如图3所示,第196图像帧的拼接方向的预测值为右下,水平拼接位移的预测值为38,竖直拼接位移的预测值为8,第196图像帧拼接信息的第一候选值与拼接信息的预测值的距离为
,第196图像帧拼接信息的第二候选值与拼接信息的预测值的距离为
,则取第二候选值作为第196图像帧的拼接信息计算值。
步骤40,根据当前帧的拼接信息的计算值计算当前帧的拼接信息的更新值,转至步骤10,直至图像帧序列中各基准帧、预测帧的拼接信息的更新值计算完毕。计算当前帧的拼接信息的更新值时:如果当前帧为基准帧,将当前帧的拼接信息的计算值作为当前帧的拼接信息更新值。如果当前帧为预测帧,如果当前图像帧组的跳过帧数目为0,则当前帧的拼接信息的更新值即为当前帧的拼接信息的计算值;否则,将当前帧的拼接方向的计算值作为当前帧的拼接方向的更新值;根据当前帧的水平拼接位移的计算值、当前图像帧组的基准帧的水平拼接位移计算值及当前图像帧组中的跳过帧数目进行计算,得到当前帧的水平拼接位移的更新值;根据当前帧的竖直拼接位移的计算值、当前图像帧组的基准帧的竖直拼接位移的计算值及当前图像帧组中的跳过帧数目进行计算,得到当前帧的竖直拼接位移的更新值。
在本实施例中,扫描笔做匀加速运动,以当前帧的水平拼接位移为例:当前帧为预测帧且当前图像帧组的跳过帧数目大于0时,设当前图像帧组的基准帧的水平拼接位移的计算值为
,设当前帧的水平拼接位移的计算值为
,设当前图像帧组的跳过帧的数目为
,则当前帧的水平拼接位移的更新值为
。
如图3所示,如第6图像帧为预测帧,当前图像帧组的基准帧为第2图像帧,跳过帧的数目为3,则将第6图像帧的拼接方向的计算值作为其拼接方向更新值,当前图像帧组的基准帧的水平拼接位移的计算值为0,当前图像帧的水平拼接位移的计算值为4,则当前图像帧的水平拼接位移的更新值为
,同样可计算得到当前图像帧的竖直拼接位移的预测值为0。又如第124图像帧为预测帧,当前图像帧组的基准帧为第122图像帧,跳过帧的数目为1,则将第124图像帧的拼接方向计算值作为其拼接方向更新值,当前图像帧组的基准帧的水平拼接位移的计算值为9,当前图像帧的水平拼接位移的计算值为21,则当前图像帧的水平拼接位移的更新值为
,同样可计算得到当前图像帧的竖直拼接位移的预测值为4。
由于本方法在扫描笔进行扫描时逐图像帧进行处理,处理完毕当前帧后转至步骤10处理当前帧的下一帧,直至图像帧序列中各基准帧、预测帧的拼接信息的更新值计算完毕。扫描笔对文本页执行完一次扫描过程时,对于图像帧序列中最后一图像帧,将该图像帧的帧属性设置为预测帧,从而形成一个完整的图像帧组,该图像帧的帧属性设置为预测帧后转至步骤10,经步骤20、步骤30和步骤40得到该预测帧的拼接信息的更新值,从而使图像帧序列中各基准帧、预测帧的拼接信息的更新值计算完毕。
步骤50、根据计算完毕的各基准帧、预测帧的拼接信息的计算值拼接为全景图像。根据图像帧序列中的各基准帧、预测帧以及各基准帧、预测帧对应的拼接信息即可获取全景图像,本实施例中,最终获取的全景二值图像如图4所示。
本发明还公开了一种图像序列拼接装置,包括如下模块:
设置模块,设置图像帧序列中的当前帧的帧属性,形成图像帧组;所述帧属性包括基准帧、预测帧和跳过帧;
预测模块,根据当前帧的帧属性及相关图像帧的拼接信息的更新值计算当前帧的拼接信息的预测值;
筛选模块,根据当前帧的拼接信息的预测值从拼接信息的候选值中进行筛选,得到当前帧的拼接信息的计算值;
更新模块,根据当前帧的拼接信息的计算值计算当前帧的拼接信息的更新值,转至设置模块,直至图像帧序列中各基准帧、预测帧的拼接信息的更新值计算完毕;
拼接模块、根据计算完毕的各基准帧、预测帧的拼接信息的计算值拼接为全景图像。
本发明公开了一种图像序列拼接方法和装置,针对扫描笔获取的图像帧序列进行拼接。对于扫描笔图像帧序列的拼接,一是要求拼接快速,二是要求拼接准确,为了同时满足这两个要求,本发明扫描笔获取的整个图像帧序列除第一帧用来做初始化用之外,剩余图像帧依据图像帧间的距离划分为连续的多个图像帧组。定义了图像帧组后,本发明只对图像帧组中的基准帧和预测帧进行拼接计算,对于图像帧组中的跳过帧则可以直接跳过,从而提高了整个图像帧序列的拼接速度。由于图像帧序列中各图像帧为在等时间间隔下进行连续采样时得到的,所以得到的相邻图像帧之间的移动位移和移动方向具有平滑性,可以根据前面图像帧的拼接信息预测当前帧的拼接信息,然后根据拼接信息的预测值进一步获取当前帧的计算值,从而更加准确预测当前帧的拼接信息。通过这种预测机制大大提高了图像帧序列在拼接过程中的准确性。
以上对本发明所提供的一种图像序列拼接方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。