一种快速截取及合成多屏幕长截图的方法与流程

文档序号:11865831阅读:898来源:国知局
一种快速截取及合成多屏幕长截图的方法与流程

本发明属于图像拼接技术领域,尤其涉及一种快速截取及合成多屏幕长截图的方法。



背景技术:

在使用具备GUI(图形用户界面,Graphical User Interface)的设备(手机、平板或PC)的时候,用户经常会遇到待显示的内容(如聊天记录、网页等)无法在一屏内完整显示的情况,而如果只是简单截取当前屏幕画面则仅保存了整个画面的一部分内容。所以用户常常会手动拖拽画面以使得需要显示的内容被移动到屏幕范围内,然后再次进行截屏。而这样会产生许多零散的屏幕截图,非常不方便保存、再次编辑以及分享。目前有一些软件可以帮助用户将这些独立的图片拼接成一张长图,但前提是这些截屏必须要具备一定程度的重叠,而普通用户很难把握,势必会增加操作的复杂度、降低拼接成功率。同时,这些方案也仅能完成某一个特定方向上的拼接,例如自下而上依次拼接。近期有方案可以自动完成长图拼接,即自动移动屏幕区域,然后截图,待所要拼接的内容都被截取到后会自动拼接成一张长图;优点是因为有系统级权限,可以自动将画面内容移动特定距离后截图,既免去了用户移动画面的操作,也降低了拼接算法的难度提高了合成功率;存在a)普及性差:必须具备系统级权限,因而只能在特定手机平台上使用;b)操作繁琐:仍然需要重复进行“移动屏幕然后截图”等一系列的操作,而且只能拼接朝某一特定方向移动的长图(目前的方案都是实现由上而下或者由下而上的移动拼接)等问题。

另外还有一种特定的截图场景——网页截图。目前的网页自动截屏方案是,应用的网页客户端在后台将加载的网页内容绘制到一个图像文件中(一般情况下的网页显示是将网页内容绘制到屏幕上),以此截取长网页。此类方案的问题有:a)只能保存网页内容:因为是通过网页客户端根据HTML语言等解析网页内容,然后按照CSS排版拼接成长图,所以该方案必须依赖可接收网络信息的客户端。此外,该方案本质上只是将内容绘制到图像上,因而也无法保存其他屏幕内容,跨应用平台性差;b)必须使用应用自带的客户端才能实现截图;c)必须依赖网络连接。



技术实现要素:

本发明的目的在于提供一种快速截取及合成多屏幕长截图的方法,旨在解决现有的长图拼接方法所存在的普及性差,操作繁琐、只能按某一特定方向拼接长图等问题。

本发明所述快速截取及合成多屏幕长截图的方法包括以下步骤:

(1)设置录制参数并开始录制屏幕,具体的录制参数包括视频的分辨率及帧率;

(2)判断是否能直接获取到系统信息,系统信息包括但不限于:屏幕内容的图层排版信息;当前所在应用;用户的操作信息,包括画面移动方向、用户缩放屏幕等;

(3)如不能直接获取到系统信息,则通过分析相邻截图来估算;

(4)读取当前屏幕数据帧,并将获取到的当前数据帧,连同缓存的图像数据帧以及获取到的系统信息,一同传给图像拼接模块进行拼接融合;

(5)判断用户是否结束录屏操作,如果是,则停止获取屏幕图像。图像拼接模块会输出拼接结果。

进一步,所述快速截取及合成多屏幕长截图的方法中的图像拼接模块可以在用户录屏过程中进行或用户结束录屏后进行。

进一步,所述快速截取及合成多屏幕长截图的方法中图像拼接模块的拼接方法包括以下步骤:

(1)输入缓存的前一帧屏幕画面,当前屏幕数据帧以及能获取到的用户操作信息;

(2)根据用户拖动屏幕的方向,将连续两帧画面分块匹配;

(3)根据相匹配区域的位置计算两帧画面间的移动距离,以像素为单位;

(4)根据移动距离,检测并记录页眉页脚的位置信息;

(5)同时记录计算得到的两帧画面间的移动距离并累计所有的画面移动距离;

(6)根据移动距离判断当前帧是否为关键帧;

(7)将关键帧按照记录的移动距离进行拼接。

进一步,所述两个图像块是否匹配的判断方法包括但不限于:

满足以下条件的两个图像块认为是匹配的,即

<mrow> <munder> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </munder> <msup> <mrow> <mo>(</mo> <msub> <mi>BLK</mi> <mi>k</mi> </msub> <mo>(</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mo>)</mo> <mo>-</mo> <msub> <mi>BLK</mi> <mrow> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>(</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&lt;</mo> <mi>&epsiv;</mi> <mo>;</mo> </mrow>

其中,BLKk(i,j)表示第k块的(i,j)位置的像素值,ε表示预设的阈值;

或满足以下条件的两个图像块认为是匹配的,即:

|mean(BLKk)-mean(BLKk+1)|<ε;

其中,mean(BLKk)表示第k块的平均像素值,ε表示预设的阈值。

本发明的另一目的在于提供一种应用所述快速截取及合成多屏幕长截图的方法的手机。

本发明的另一目的在于提供一种应用所述快速截取及合成多屏幕长截图的方法的平板电脑。

本发明的另一目的在于提供一种应用所述快速截取及合成多屏幕长截图的方法的台式电脑。

本发明的另一目的在于提供一种应用所述快速截取及合成多屏幕长截图的方法的移动平台操作系统,包括但不限于Android、iOS、Windows系统等。

本发明的另一目的在于提供一种应用所述快速截取及合成多屏幕长截图的方法的电脑操作系统,包括但不限于Windows、OS X、Linux系统等。

本发明提供的快速截取及合成多屏幕长截图的方法,对比普通的截图方案,本发明可以一次性拼接成一张完整的长图,不需要用户经行多次移动画面然后截图,以及最后拼图的繁琐操作。另外,本发明的拼接方向也更灵活,不仅限于沿某一个特定方向的移动;对比个别手机的自动截屏方案,本发明可以适配所有能够提供录屏权限的系统平台,不需要额外的系统权限;本发明是通过录屏的方式来获取屏幕画面,所以用户可以选择任意位置作为拼接的起始点,即用户具有更大的控制权,可以自由控制希望截取的画面区域。同时,录屏的方式也更加快速流畅,不会像前述的截图方案,用户必须等待截图完成才能进行下一步画面移动。另外,本发明不仅能拼接垂直方向上的屏幕画面,还可以拼接横向的画面,以及平面上任意方向上的屏幕画面。对比网页自动截屏方案,本发明不仅能拼接网页,还可以拼接其他类型或应用的内容,同时由于不依靠网络客户端,所以可以做到跨应用,跨系统(Android、iOS、Windows、OS X、Linux等系统),跨平台(手机、平板等移动平台以及传统电脑)。

附图说明

图1是本发明实施例提供的从后台录屏、提取视频帧、到将视频帧拼接成长图的流程图。

图2是本发明实施例的图像拼接模块的算法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明的应用原理作详细的描述。

如图1所示,本发明实施例的从后台录屏、提取视频帧、到将视频帧拼接成长图的方法包括以下步骤:

1、设置录制参数并开始录制屏幕,具体的录制参数主要包括视频的分辨率及帧率等。

2、判断是否可以获取系统信息,系统信息包括但不限于:

·屏幕内容的图层排版信息;

·当前所在应用;

·用户的操作信息,包括画面移动方向、用户缩放屏幕等;

3、这些信息对于算法判断用户的操作行为,以及判断画面的重叠关系都很重要,但此类信息的获取是需要有系统权限的。在不能直接获取系统信息的时候,此类信息可以通过分析相邻截图来估算。

4、读取当前屏幕数据帧,并将获取到的当前数据帧以及系统信息(如有),一同传给图像拼接模块进行拼接融合。

5、判断用户是否结束录屏操作。如果是,则停止获取屏幕图像,并由图像拼接模块输出拼接结果。

图像拼接既可以在用户录屏过程中进行,也可以等用户结束录屏后进行。图1所描述的场景,是在录制过程中进行拼接的流程,因而在用户结束录屏后便可立即输出拼接结果。拼接也可以在录制完成后才开始,那么在录制过程中则需要缓存所有关键图像帧以及所有相关信息,例如两帧之间的移动距离等。

如图2所示,本发明实施例的图像拼接模块的算法包括以下步骤:

(1)输入缓存的前一帧屏幕画面,当前屏幕数据帧以及能获取到的用户操作信息;

(2)根据用户拖动屏幕的方向,将连续两帧画面分块匹配;用户的拖动方向在可以得到系统权限的情况下,可直接获取到,但在正常的系统权限下,则需要通过判断画面的变化方向进行推断。两个图像块是否匹配可以采用多种方式进行判断,包括但不限于:

方法一:满足以下条件的两个图像块认为是匹配的,即

<mrow> <munder> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </munder> <msup> <mrow> <mo>(</mo> <msub> <mi>BLK</mi> <mi>k</mi> </msub> <mo>(</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mo>)</mo> <mo>-</mo> <msub> <mi>BLK</mi> <mrow> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>(</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&lt;</mo> <mi>&epsiv;</mi> <mo>;</mo> </mrow>

其中,BLKk(i,j)表示第k块的(i,j)位置的像素值,ε表示预设的阈值。或

方法二:满足以下条件的两个图像块认为是匹配的,即

|mean(BLKk)-mean(BLKk+1)|<ε;

其中,mean(BLKk)表示第k块的平均像素值,ε表示预设的阈值。

(3)根据相匹配区域的位置计算兩帧画面间的移动距离,以像素为单位;具体方法为,在找到的匹配区域内沿画面移动方向,通过比较与移动方向垂直的图像行区域进行估计;类似于图像块的匹配方法,例如:

方法一:满足以下条件的两个图像行认为是匹配的,即

<mrow> <munder> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </munder> <msup> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>k</mi> </msub> <mo>(</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mo>)</mo> <mo>-</mo> <msub> <mi>R</mi> <mrow> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>(</mo> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>&lt;</mo> <mo>&Element;</mo> <mo>;</mo> </mrow>

其中,Rk(i,j)表示第k行的(i,j)位置的像素值,∈表示预设的阈值。或

方法二:满足以下条件的两个图像块认为是匹配的,即

|mean(Rk)-mean(Rk+1)|<∈;

其中,mean(Rk)表示第k行的平均像素值,∈表示预设的阈值。

(4)根据移动距离,检测并记录页眉页脚的位置信息。注:页眉页脚是屏幕上下固定不变的画面信息,例如手机屏幕上下位置固定的状态栏以及控制栏。

(5)同时记录计算得到的两帧画面间的移动距离并累计所有的画面移动距离;

(6)根据移动距离判断当前帧是否为关键帧。判断准则可以为简单的阈值比较。如果当前帧是关键帧,则保存该关键帧画面以及其他相关信息;

(7)将关键帧按照记录的移动距离进行拼接,同时参考使用页眉页脚的位置信息;如果可以获取到当前所在应用场景以及应用排版信息等,则可以实现更多功能,包括根据用户需求删除不必要的显示内容,例如录制过程中弹出的通知信息,复杂的聊天背景等。

本发明所需的输入数据是通过录制屏幕内容而获取的,因而本发明可拓展到所有提供录屏功能以及相应权限的设备,包括手机、平板等移动平台或者电脑,及系统,包括但不限于移动平台系统(Android、iOS、Windows系统等)、电脑系统(Windows、OS X、Linux系统等)。为了达到最好的用户体验以及进一步改善拼接操作的稳定性,可以使用其他的数据作为辅助,如移动设备的各种传感器数据。例如用户通过晃动手机,停止录屏等。也可以利用某些系统提供的用户交互反馈信息辅助拼接,例如用户在如何滑动屏幕等。

本发明也可以运行在已经获得系统权限的平台上(如ROOT后的Android系统等)。这时本发明可以获得更多的权限及系统信息,以进一步提升方案的稳定性以及用户体验。例如,可实现自动滚动屏幕进行录制,以及获得图层信息(例如哪些图层在前景、哪些在后景等),避免拼接错误;或者在不同的应用内采用不同拼接方案,例如聊天应用可以限制只在垂直方向上进行拼接。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1