具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的截图生成方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。
具体地,终端102响应于针对目标内容的截图操作,对目标内容进行视频录制得到目标视频,并从目标视频中获取参考帧图像以及候选帧图像;获取参考帧图像与候选帧图像的第一图像位移;其中,第一图像位移是基于位移间隔为第一位移间隔的多个候选帧间位移进行差分运算得到的第一差分值确定的;在基于第一图像位移确定候选帧图像为关键帧图像的情况下,终端102确定位移间隔为第二位移间隔的多个候选图像位移;针对每个候选图像位移,确定在图像位移为候选图像位移的情况下,参考帧图像与关键帧图像之间的第二差分值;根据第二差分值从关键帧图像中确定待拼接图像区域,对待拼接图像区域进行图像拼接处理,生成目标内容对应的内容截图。终端102在生成目标内容对应的内容截图的情况下,可以存储生成的内容截图,还可以显示生成的内容截图。终端102还可以将目标内容对应的内容截图发送至服务器104,服务器 104可以存储终端102发送的内容截图,服务器104可以保存内容截图或者将内容截图发送至其他设备。
其中,终端102可以但不限于是台式终端或移动终端,移动终端具体可以是手机、平板电脑、笔记本电脑和智能手表等中的至少一种。终端102可以为具有操作系统的终端设备,该操作系统可以为安卓操作系统,也可以为ios操作系统,还可以为其他可能的操作系统。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
本领域技术人员可以理解,图1中示出的应用环境,仅仅是与本申请方案相关的部分场景,并不构成对本申请方案应用环境的限定。
在一些实施例中,如图2所示,提供了一种截图生成方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:
步骤202,响应于针对目标内容的截图操作,对目标内容进行视频录制得到目标视频,并从目标视频中获取参考帧图像以及候选帧图像。
其中,目标内容是需要生成截图的屏幕显示内容,例如,可以是应用程序中的账单内容,也可以是应用程序的会话内容。截图操作是触发截图的操作。目标视频是对目标内容进行视频录制所得到的视频,终端可以基于目标视频生成目标内容对应的截图。
参考帧图像是指作为参考的一帧视频帧图像,候选帧图像是指从参考帧图像的下一帧图像开始,按照视频帧图像在目标视频中的显示顺序,从目标视频中确定的视频帧图像。参考帧图像是按照视频帧图像在目标视频中的显示顺序从目标视频中确定的,参考帧图像可以是不断变换的,例如,最初选择目标视频中的第一帧作为参考帧图像,之后可以选择目标视频中的其他视频帧图像作为参考帧图像。
显示顺序是按照显示时间确定的,目标视频中的各视频帧图像分别具有显示时间,显示时间是指显示视频帧图像的时间,显示时间越早,则显示顺序越靠前。
具体地,终端安装有截图应用程序,在终端检测到在截图应用程序触发的截图指令后,终端进入录屏状态,在录屏状态下,响应于显示目标内容的操作,展示目标内容的全部或部分,并可以响应于针对目标内容的滑动操作。终端响应于针对目标内容的“开始截图录屏指令”,对目标内容进行视频录制,在录制视频的过程中,终端可以响应于针对目标内容的滑动操作,更新显示的内容,以显示目标内容中的其他内容从而录制到目标内容中的其他内容,直到终端接收到“结束截图录屏指令”,视频录制结束,将录制好的视频确定为目标视频。在终端对目标内容进行视频录制的过程中,终端用户可以往屏幕上方或屏幕下方对屏幕显示内容进行滑动操作。然后终端可以按照视频帧图像在目标视频中的显示顺序,从目标视频中提取视频帧图像,得到参考帧图像以及候选帧图像。
在一些实施例中,终端可以按照视频帧图像在目标视频中的显示顺序,从目标视频中提取视频帧图像,得到参考帧图像,然后从参考帧图像的下一帧图像开始,按照视频帧图像在目标视频中的显示顺序,从目标视频中确定候选帧图像。例如,终端可以将目标视频的第一帧图像作为参考帧图像,然后提取目标视频的第二帧图像作为候选帧图像,在第一帧图像与第二帧图像之间的图像位移小于位移阈值的情况下,继续提取目标视频的第三帧图像作为候选帧图像。其中,位移阈值可以是预先或根据需要设置的。
在一些实施例中,终端在从目标视频中获取参考帧图像与候选帧图像之前,对从目标视频中获取的视频帧图像进行图像预处理,然后从预处理后的图像中确定参考帧图像与候选帧图像。图像预处理包括:1)终端将视频帧图像缩放至统一的分辨率(H,W),使得所有的视频帧图像分辨率相同;2)对缩放后的视频帧图像进行裁剪,确定视频帧图像中的固定图像区域与滑动图像区域,将视频帧图像的固定图像区域裁剪掉,保留滑动图像区域,得到裁剪后的图像;3) 将裁剪后的图像从彩色RGB图像转换成灰度图像。其中,在屏幕滑动的过程中,视频帧图像的固定图像区域的显示位置不变,例如,固定图像区域可以是手机页面的顶部导航栏,或是手机页面的底部菜单栏,而视频帧图像的滑动图像区域的内容会随着滑动操作而更新。
步骤204,获取参考帧图像与候选帧图像的第一图像位移;第一图像位移,是基于位移间隔为第一位移间隔的多个候选帧间位移进行差分运算得到的第一差分值确定的。
其中,图像位移是指在预设方向上两帧视频帧图像之间的位移,图像位移也可以称为图像之间的偏移量,预设方向是指位移方向的正方向,可以为向上的竖直方向或向下的竖直方向中的任意一个,位移方向是指屏幕内容的滑动方向。第一图像位移是基于第一差分值确定的参考帧图像与候选帧图像之间的图像位移,用于表征候选帧图像相对于参考帧图像所滑动的位移距离,还用于表征位移方向。例如,预设方向为向下的竖直方向的情况下,当第一图像位移的取值为正数时,位移方向为向下滑动,候选帧图像相对于从参考帧图像的上方滑入屏幕,当第一图像位移的取值为负数时,位移方向为向上滑动,候选帧图像相对于从参考帧图像的下方滑入屏幕。
多个候选帧间位移是基于第一位移间隔从第一位移范围中确定的,候选帧间位移可以为多个,多个是指至少两个。第一位移间隔是相邻两个候选帧间位移之间的差值,每相邻两个候选帧间位移之间的差值均为第一位移间隔。第一位移范围是预先设置的位移范围或根据滑动图像区域的高度设置的,滑动图像区域是指视频帧图像中内容会随着滑动操作而更新的图像区域。例如,候选帧图像相对于参考帧图像的图像位移小于一帧图像的滑动图像区域的高度h的 50%,可以将第一位移范围设置为[-0.5h,0.5h]。
差分运算是指对两个图像中每个位置相对应的像素点的灰度值进行差值运算。差分值是基于相邻两帧视频帧图像的灰度值的差异得到的,当目标视频中存在移动物体时,相邻两帧视频帧图像在灰度上会有差别,差分值用于表征两帧视频帧图像之间的重叠率,差分值越小,则两帧视频帧图像的重叠率越高,内容对齐越好。第一差分值是基于候选帧间位移计算得到的差分值,每个第一差分值分别对应不同的候选帧间位移。第一差分值可以有多个,多个是指至少两个。
具体地,为了得到参考帧图像与候选帧图像之间的第一图像位移,终端可以计算目标视频中相邻两帧视频帧图像之间的帧间位移,基于目标视频中相邻两帧视频帧图像之间的帧间位移确定参考帧图像与关键帧图像之间的第一图像位移。终端从目标视频中获取显示顺序为第一的视频帧图像,得到前向视频帧图像,将前向视频帧图像的下一帧作为第二视频帧图像,即将显示顺序为第二的视频帧图像作为第二视频帧图像,得到当前视频帧图像,计算当前视频帧图像与前向视频帧图像之间的帧间位移,然后,将当前视频帧图像作为前向视频帧图像,返回将前向视频帧图像的下一帧作为第二视频帧图像的步骤,直到计算得到目标视频中各相邻两帧视频帧图像之间的帧间位移。
在一些实施例中,如图3A所示,终端可以从目标视频在提取一帧视频帧图像,对视频帧图像进行图像预处理,在视频帧图像为第一帧图像的情况下,将第一帧图像存储为前一帧图像PreImg,并提取第二帧图像作为当前帧图像 CurImg,然后利用第一位移间隔遍历第一位移范围,得到多个候选帧间位移,针对每个候选帧间位移计算当前帧图像CurImg与前一帧图像PreImg的重叠区域,并基于各重叠区域得到第一差分值,基于第一差分值确定当前帧图像CurImg 与前一帧图像PreImg之间的图像位移,然后将前一帧图像PreImg更新为当前帧图像CurImg,取下一帧图像作为当前帧图像CurImg,直到遍历目标视频的所有视频帧图像。
在一些实施例中,终端基于第一位移间隔与第一位移范围,得到参考帧图像与候选帧图像之间的多个候选帧间位移,针对多个候选帧间位移中的每个候选帧间位移,分别计算出参考帧图像与候选帧图像之间的重叠区域,得到候选帧间位移对应的重叠区域,然后基于重叠区域计算候选帧间位移对应的第一差分值,得到每个候选帧间位移对应的第一差分值。
步骤206,在基于第一图像位移确定候选帧图像为关键帧图像的情况下,确定位移间隔为第二位移间隔的多个候选图像位移;第二位移间隔小于第一位移间隔。
其中,关键帧图像可以是第一图像位移大于位移阈值的情况下选择的候选帧图像。位移阈值可以是预设或者根据需要设置的,例如,可以将位移阈值设置为一帧图像高度h的X%,X的取值范围为(0,100)。第二位移间隔是相邻两个候选图像位移之间的差值,候选图像位移是基于第二位移间隔从第二位移范围中确定,候选图像位移可以为多个,多个是指至少两个。第二位移范围是指候选图像位移的范围,是基于第一图像位移与第一位移间隔确定的位移范围。
具体地,终端将参考帧图像与候选帧图像之间的第一图像位移与位移阈值进行对比,当第一图像位移大于位移阈值时,将候选帧图像确定为关键帧图像;当第一图像位移小于位移阈值时,判断候选帧图像是否为当前位移方向的最后一帧或目标视频的最后一帧视频帧图像,若候选帧图像是当前位移方向的最后一帧或目标视频的最后一帧视频帧图像,则将该候选帧图像确定为关键帧图像;若候选帧图像不是目标视频的最后一帧视频帧图像,则终端继续按照视频帧图像在目标视频中的显示顺序,在目标视频中提取候选帧图像的下一帧图像,将下一帧图像更新为候选帧图像,并获取参考帧图像与候选帧图像之间的第一图像位移。然后终端可以基于第二位移间隔与第二位移范围,确定参考帧图像与关键帧图像之间的多个候选图像位移。
在一些实施例中,终端可以将第二位移间隔作为步长,遍历第二位移范围,得到参考帧图像与关键帧图像之间的多个候选图像位移。例如,假设第二位移范围B为[-20,20],第二位移间隔ysteps_1=1,以第一位移间隔ysteps_1为步长,遍历第一位移范围B,可以得到41个候选帧间位移,则可以从第二位移范围中得到41个候选图像位移,分别为y0=-20、y1=-19、……、y39=19、y40=20。
在一些实施例中,终端可以根据参考帧图像与候选帧图像之间的第一图像位移,判断候选帧图像是否为当前位移方向的最后一帧。终端可以从目标视频中获取与候选帧图像相邻的下一帧视频帧图像,得到候选帧图像与后向视频帧图像之间的图像位移,当该图像位移与第一图像位移的正负不同的情况下,终端将候选帧图像作为当前位移方向的最后一帧,并将候选帧图像确定为关键帧图像,即从关键帧图像的下一帧视频帧图像开始,位移方向发生了改变。例如,假设参考帧图像为第一帧图像,候选帧图像为第三帧图像,参考帧图像与候选帧图像之间的第一图像位移为10,终端获取候选帧图像的下一帧视频帧图像,即第四帧图像,得到第三帧图像与第四帧图像之间的图像位移为-4,因为-4与 10的正负不同,则将第三帧图像作为关键帧图像。
步骤208,针对每个候选图像位移,确定在图像位移为候选图像位移的情况下,参考帧图像与关键帧图像之间的第二差分值。
其中,候选图像位移是基于第二位移间隔从第二位移范围中确定的,候选图像位移为多个,多个是指至少两个。第二位移间隔是相邻两个候选图像位移之间的差值,每相邻两个候选图像位移之间的差值均为第二位移间隔。第二位移范围是指候选图像位移的范围,是基于第一图像位移与第一位移间隔确定的位移范围。第二差分值是基于候选图像位移计算得到的差分值,每个第二差分值分别对应不同的候选图像位移。第二差分值可以有多个,多个是指至少两个。
具体地,终端针对每个候选图像位移,分别计算出参考帧图像与关键帧图像之间的重叠区域,得到各候选图像位移对应的重叠区域,然后基于重叠区域计算候选图像位移对应的第二差分值,得到每个候选图像位移对应的第二差分值。
在一些实施例中,终端计算参考帧图像与关键帧图像之间的第二差分值时,可以采用高分辨率的参考帧图像与关键帧图像进行计算。在确定参考帧图像与候选帧图像之间的第一差分值之前,需要进行图像预处理,将图像缩放至统一的分辨率(H,W),而在确定参考帧图像与关键帧图像之间的第二差分值时,可以将从目标视频中获取的视频帧图像缩放至统一的分辨率(H*K,W*K),其中,K为正整数,且K>1。
步骤210,根据第二差分值从关键帧图像中确定待拼接图像区域,对待拼接图像区域进行图像拼接处理,生成目标内容对应的内容截图。
其中,待拼接图像区域是根据第二差分值从关键帧图像中截取的图像区域,用于进行图像拼接后生成内容截图。图像拼接处理是将两个图像进行拼接生成一个图像的图像处理操作,内容截图是目标内容所对应的截图图像。
具体地,终端根据第二差分值从多个候选图像位移中,确定参考帧图像与关键帧图像之间的第二图像位移,然后终端可以利用第二图像位移从关键帧图像中确定待拼接图像区域,对待拼接区域进行图像拼接处理,生成目标内容对应的内容截图。其中,第二图像位移是基于第二差分值确定的参考帧图像与候选帧图像之间的图像位移,用于表征候选帧图像相对于参考帧图像所滑动的位移距离,第二图像位移还可以用于表征位移方向。
在一些实施例中,终端可以利用第二图像位移从关键帧图像中确定待拼接图像区域,第二图像位移表征的位移方向可以是向下滑动,也可以是向上滑动的。若位移方向为向下滑动,如图4A所示,关键帧图像相对于从参考帧图像的上方滑入屏幕显示区域,终端从关键帧图像的顶部开始往下,以第二图像位移作为图像高度,在关键帧图像中截取图像区域,所得到的图像区域为关键帧图像相对于参考帧图像滑动的图像区域,将该图像区域确定为待拼接图像区域;若位移方向为向上滑动,关键帧图像相对于从参考帧图像的下方滑入屏幕显示区域,终端从关键帧图像的底部开始往上,以第二图像位移作为图像高度,在关键帧图像中截取图像区域,所得到的图像区域为关键帧图像相对于参考帧图像滑动的图像区域,将该图像区域确定为待拼接图像区域。
上述截图生成方法中,响应于针对目标内容的截图操作,对目标内容进行视频录制得到目标视频,并从目标视频中获取参考帧图像以及候选帧图像;获取参考帧图像与候选帧图像的第一图像位移;第一图像位移,是基于位移间隔为第一位移间隔的多个候选帧间位移进行差分运算得到的第一差分值确定的;在基于第一图像位移确定候选帧图像为关键帧图像的情况下,确定位移间隔为第二位移间隔的多个候选图像位移;第二位移间隔小于第一位移间隔;针对每个候选图像位移,确定在图像位移为候选图像位移的情况下,参考帧图像与关键帧图像之间的第二差分值;根据第二差分值从关键帧图像中确定待拼接图像区域,对待拼接图像区域进行图像拼接处理,生成目标内容对应的内容截图。由于参考帧图像与候选帧图像之间的第一图像位移,是基于位移间隔为第一位移间隔的多个候选帧间位移进行差分运算得到的第一差分值确定的,第二位移间隔小于第一位移间隔,从而减少了第一差分值计算的次数,从而减少了截图生成的时间,提高了截图生成的效率。此外,由于第二位移间隔小于第一位移间隔,第二差分值的计算精度高于第一差分值,则通过计算第二差分值确定待拼接图像区域减小了计算误差,提高了截图生成的准确度。
在一个实施例中,步骤206中,确定位移间隔为第二位移间隔的多个候选图像位移包括:基于第一图像位移以及第一位移间隔确定位移范围;按照第二位移间隔从位移范围中确定多个候选图像位移。
其中,基于第一图像位移以及第一位移间隔确定的位移范围为第二位移范围,第二位移间隔是相邻两个候选图像位移之间的差值,候选图像位移是基于第二位移间隔从第二位移范围中确定,候选图像位移可以为多个,多个是指至少两个。第二位移范围是指候选图像位移的范围,是基于第一图像位移与第一位移间隔确定的位移范围。
具体地,终端确定参考帧图像与关键帧图像之间的第一图像位移,基于第一图像位移以及第一位移间隔,确定第二位移范围,然后将第二位移间隔作为步长,遍历第二位移范围,得到参考帧图像与关键帧图像之间的多个候选图像位移。
本实施例中,通过基于第一图像位移以及第一位移间隔确定第二位移范围,并按照第二位移间隔从第二位移范围中确定多个候选图像位移,从而能够基于候选图像位移计算参考帧图像与关键帧图像之间的第二差分值,使得基于第二差分值得到的参考帧图像与关键帧图像之间的第二图像位移更加精确,提高了截图生成的准确度。
在一个实施例中,基于第一图像位移以及第一位移间隔确定位移范围包括:将第一图像位移的绝对值与第一位移间隔的和作为最大图像位移,并将最大图像位移的相反数作为最小图像位移,形成位移范围。
其中,基于第一图像位移以及第一位移间隔确定的位移范围为第二位移范围,最大图像位移是指第二位移范围中的最大值,最小图像位移是指第二图像位移中的最小值。
具体地,终端得到参考帧图像与关键帧图像之间的第一图像位移之后,对第一图像位移的绝对值与第一位移间隔进行求和运算,并将得到的和作为最大图像位移,将最大图像位移的相反数作为最小图像位移,以最大图像位移作为上限,最小图像位移作为下限,形成第二位移范围。例如,假设第一位移间隔 ysteps_0=20,第一图像位移S1=60,则第二位移范围为[-80,80]。
在一些实施例中,终端可以确定参考帧图像与关键帧图像之间的第一图像位移之后,基于第一位移间隔确定位移误差范围,然后可以在位移误差范围的基础上,利用参考帧图像与关键帧图像之间的第一图像位移,对位移误差范围进行增大处理,将增大后的位移误差范围作为第二位移范围。其中,位移误差范围是基于第一位移间隔确定的范围,由于第一差分值是基于候选帧间位移计算得到的,而相邻的候选帧间位移的位移间隔为第一位移间隔,所以基于第一差分值确定的参考帧图像与关键帧图像之间的第一图像位移,与参考帧图像与关键帧图像之间的真实图像位移得到的误差,小于第一位移间隔,所以可以基于第一位移间隔确定位移误差范围。例如,第一位移间隔为20,则位移误差范围可以为[-20,20]。
在一些实施例中,终端利用参考帧图像与关键帧图像之间的第一图像位移,对位移误差范围进行增大处理,可以是用位移误差范围的下限与第一图像位移的绝对值相减,并用位移误差范围的上限与第一图像位移的绝对值求和,得到第二位移范围。例如,第一位移间隔为ysteps_0,参考帧图像与关键帧图像之间的第一图像位移为S1,则在计算第二差分值之前,可以将位移误差范围设置为 [-ysteps_0,ysteps_0],将第二位移范围设置为[-ysteps_0-|S1|,ysteps_0+|S1|]。
本实施例中,将第一图像位移的绝对值与第一位移间隔的和作为最大图像位移,并将最大图像位移的相反数作为最小图像位移,形成位移范围,从而在第二位移范围确定多个候选图像位移,实现对第二差分值的精确计算,得到更加精确的第二图像位移,提高了截图生成的准确度。
在一个实施例中,参考帧图像与候选帧图像不相邻,获取参考帧图像与候选帧图像的第一图像位移包括;获取以参考帧图像为起始帧图像且以候选帧图像为终止帧图像的视频片段,获取视频片段中相邻两帧视频帧图像之间的图像位移;对视频片段中相邻两帧视频帧图像之间的图像位移进行统计,得到参考帧图像与候选帧图像之间的第一图像位移。
其中,起始帧图像是指参考帧图像与候选帧图像之间的视频片段的第一帧图像,终止帧图像是指参考帧图像与候选帧图像之间的视频片段的最后一帧图像。视频片段包括多个视频帧图像,多个是指至少三个,视频片段的第一帧图像为参考帧图像,最后一帧图像为候选帧图像。
具体地,终端可以获取视频片段中的相邻两帧图像之间的图像位移,对视频片段中相邻两帧图像之间的图像位移进行统计,将统计的结果确定为参考帧图像与候选帧图像之间的第一图像位移。例如,视频片段包括3帧图像,则计算第1帧图像与第2帧图像之间的图像位移,得到图像位移1,计算第2帧图像与第3帧图像之间的图像位移,得到图像位移2,将图像位移1与图像位移2进行求和,将求和的结果确定为第1帧图像与第3帧图像之间的第一图像位移。相邻两帧图像之间的图像位移的计算方法可以参照计算相邻帧图像之间的帧间位移的方法。
本实施例中,通过对相邻两帧图像之间的图像位移进行统计,确定不相邻的参考帧图像与候选帧图像之间的第一图像位移,减少了图像拼接的次数,从而提高了截图生成的效率。
在一些实施例中,确定视频片段中相邻的第一视频帧图像与第二视频帧图像之间的帧间位移的步骤包括:针对多个候选帧间位移中的每个候选帧间位移,在第一视频帧图像与第二视频帧图像之间的帧间位移为候选帧间位移的情况下,确定第一视频帧图像中与第二视频帧图像重叠的第一重叠图像区域、以及第二视频帧图像中与第一视频帧图像的第二重叠图像区域;对第一重叠图像区域与第二重叠图像区域进行差分运算,得到候选帧间位移对应的第一差分值;基于第一差分值从多个候选帧间位移中,确定第一视频帧图像与第二视频帧图像的帧间位移。
其中,第一视频帧图像是,以参考帧图像为起始帧图像且以候选帧图像为终止帧图像的视频片段中的一帧视频帧图像,第二视频帧图像是第一视频帧图像的后向视频帧图像。如图4B所示,第一重叠图像区域是基于候选帧间位移从第一视频帧图像确定的与第二视频帧图像重叠的图像区域,第二重叠图像区域是基于候选帧间位移从第二视频帧图像确定的与第一视频帧图像重叠的图像区域。差分运算是指对两个图像中每个位置相对应的像素点的灰度值进行差值运算。
具体地,由于第一视频帧图像与第二视频帧图像之间的图像位移是未知的,为了确定第一视频帧图像与第二视频帧图像之间的图像位移,针对多个候选帧间位移中的每个候选帧间位移,终端可以将该候选帧间位移假设为第一视频帧图像与第二视频帧图像的帧间位移,基于候选帧间位移从第一视频帧图像确定的与第二视频帧图像重叠的第一重叠图像区域,基于候选帧间位移从第二视频帧图像确定的与第一视频帧图像重叠的第二重叠图像区域,然后对第一重叠图像区域与第二重叠图像区域中每个位置相对应的像素点的灰度值进行差值运算,依次计算像素点的灰度值之差,将灰度值之差的绝对值作为该像素点的差分值。其中,像素点可以用坐标表示,第一视频帧图像中第2行第3列的像素点坐标为(2,3)。终端得到所有像素点对应的差分值,然后对所有像素点对应的差分值进行均值计算,将得到的均值作为第一重叠图像区域与第二重叠图像区域之间的第一差分值,即在帧间位移为候选帧间位移的情况下,第一视频帧图像与第二视频帧图像之间的第一差分值。举例说明,候选帧间位移为yn的情况下,第一视频帧图像中像素点(x,y)的灰度值可以表示为fn(x,y),第二视频帧图像中像素点(x,y)的灰度值可以表示为gn(x,y),则像素点(x,y)对应的差分值可以表示为Dn(x,y)=|fn(x,y)-gn(x,y)|。
在一些实施例中,终端可以将第一位移间隔作为步长,遍历第一位移范围,得到第一视频帧图像与第二视频帧图像之间的多个候选帧间位移。举例说明,假设一帧图像的滑动图像区域高度h为200个像素点,第一位移间隔ysteps_0为 20个像素点,yi表示多个候选帧间位移中的第i个候选帧间位移,则第一位移范围A可以设置为[-100,100],以第一位移间隔ysteps_0为步长,遍历第一位移范围A,可以得到11个候选帧间位移,其中,y0=-100,y1=-80,……,y10=100,对于每个候选帧间位移yi,计算出第一视频帧图像与第二视频帧图像之间的重叠区域,并基于各重叠区域计算每个候选帧间位移yi对应的第一差分值mi。
在一些实施例中,终端可以将参考帧图像与第二视频帧图像之间的第一差分值按照从小到大的顺序进行排列,得到第一差分值序列,从第一差分值序列中选择取值最小的第一差分值,将最小的第一差分值对应的候选帧间位移作为第一视频帧图像与第二视频帧图像的第一图像位移。例如,第一差分值序列为 M=[m0,m1,……,mn],则对应的候选帧间位移序列为Y=[y0,y1,……,yn],然后从第一差分值序列中选择取值最小的第一差分值m0,将第一差分值m0对应的候选帧间位移y0作为第一视频帧图像与第二视频帧图像的第一图像位移。
本实施例中,通过对第一重叠图像区域与第二重叠图像区域进行差分运算,得到候选帧间位移对应的第一差分值,从而能够快速的从多个候选帧间位移中确定第一视频帧图像与第二视频帧图像之间的帧间位移,并基于相邻两帧视频帧图像的帧间位移确定参考帧图像与候选帧图像之间的第一图像位移,提高了截图生成的效率。
在一个实施例中,步骤210还包括:基于第二差分值从各候选图像位移中,确定参考帧图像与候选帧图像的第二图像位移;基于第二图像位移从关键帧图像中确定待拼接图像区域,对待拼接图像区域进行图像拼接处理,生成目标内容对应的内容截图。
具体地,终端在基于第一图像位移将候选帧图像确定为关键帧图像之后,可以针对多个候选图像位移中的每个候选图像位移,在参考帧图像与关键帧图像之间的图像位移为候选图像位移的情况下,确定参考帧图像中与关键帧图像重叠的第三重叠图像区域、以及关键帧图像中与参考帧图像重叠的第四重叠图像区域,对第三重叠图像区域与第四重叠图像区域进行差分运算,得到候选图像位移对应的第二差分值。具体的计算第二差分值的运算过程可以参照计算第一差分值的运算过程,这里不再赘述。
在一些实施例中,终端可以将参考帧图像与关键帧图像之间的第二差分值按照从小到大的顺序进行排列,得到第二差分值序列,从第二差分值序列中选择取值最小的第二差分值,将最小的第二差分值对应的候选图像位移作为参考帧图像与候选帧图像的第二图像位移。然后终端可以利用第二图像位移从关键帧图像中确定待拼接图像区域,对待拼接区域进行图像拼接处理,生成目标内容对应的内容截图。
本实施例中,通过基于第二差分值确定参考帧图像与候选帧图像的第二图像位移,以基于第二图像位移从关键帧图像中确定待拼接图像区域,从而进行图像拼接处理,生成目标内容对应的内容截图,提高了截图生成的效率。
在一些实施例中,从目标视频中获取参考帧图像以及候选帧图像包括:按照从前到后的显示顺序从目标视频中提取视频帧图像,得到参考帧图像;从参考帧图像的下一帧开始,按照从前到后的显示顺序从目标视频中确定候选帧图像;对待拼接图像区域进行图像拼接处理,生成目标内容对应的内容截图包括:在当前拼接图像的基础上拼接待拼接图像区域,得到新的当前拼接图像,并将关键帧图像确定为新的参考帧图像;返回从参考帧图像的下一帧开始,按照从前到后的显示顺序从目标视频中确定候选帧图像的步骤,直至候选帧图像遍历目标视频中的视频帧图像为止;将候选帧图像遍历目标视频中的视频帧图像的情况下的当前拼接图像,确定为目标内容对应的内容截图。
其中,随着不断的拼接,当前拼接图像在不断的变化,最初的当前拼接图像可以是目标视频中的第一帧图像。
具体地,如图3B所示,终端基于第二图像位移与关键帧图像,得到待拼接图像区域,然后在当前拼接图像的基础上拼接待拼接图像区域,若位移方向为向下滑动,将待拼接图像区域拼接在当前拼接图像的上方,若位移方向为向上滑动,将待拼接图像区域拼接在当前拼接图像的下方,得到新的当前拼接图像,并将关键帧图像确定为新的参考帧图像;重复从参考帧图像的下一帧图像开始,按照视频帧图像在目标视频中的显示顺序,从目标视频中确定候选帧图像的步骤,直至候选帧图像遍历目标视频中的视频帧图像为止;将候选帧图像遍历目标视频中的视频帧图像的情况下的当前拼接图像,确定为目标内容对应的内容截图。
在一些实施例中,如图4A所示,目标视频的视频帧图像包括图像固定区以及图像内容滑动区,在屏幕滑动的过程中,图像固定区的显示位置不变,例如,图像固定区可以是手机页面的顶部导航栏,而图像内容滑动区会随着滑动操作而更新。终端从目标视频中获取一帧视频帧图像,需要提取视频帧图像的图像内容滑动区,然后基于视频帧图像的图像内容滑动区进行图像拼接,在遍历目标视频的所有视频帧图像后,将图像固定区拼接在当前拼接图像上,得到目标内容对应的内容截图。
本实施例中,通过将待拼接图像与当前拼接图像进行拼接,更新当前拼接图像,然后将关键帧图像确定为新的参考帧图像,实现遍历目标视频的所有视频帧图像,得到目标内容对应的内容截图,提高了截图生成的效率。
在一些实施例中,如图5所示,提供了一种截图生成方法,以该方法应用于服务器为例进行说明,包括以下步骤:
步骤502,响应于针对目标内容的截图操作,对目标内容进行视频录制得到目标视频。
步骤504,基于第一差分值从多个候选帧间位移中确定目标视频中每相邻两帧视频帧图像之间的帧间位移,得到目标视频的帧间位移序列。
其中,第一差分值是,在帧间位移为候选帧间位移的情况下,计算得到的相邻两帧视频帧图像之间的差分值;候选帧间位移是基于第一位移间隔从帧间位移范围中确定的。
步骤506,从目标视频中获取参考帧图像,将参考帧图像的下一帧图像作为候选帧图像。
其中,所获取的参考帧图像以及候选帧图像为对应的视频帧图像中图像内容滑动区。
步骤508,基于目标视频的帧间位移序列,得到参考帧图像与候选帧图像之间的第一图像位移。
步骤510,判断位移方向是否发生改变,若否,则执行步骤512,若是,则执行步骤516。
步骤512,判断第一图像位移是否大于位移阈值,若否,则执行步骤514,若是,则执行步骤516。
步骤514,将候选帧图像的下一帧图像更新为候选帧图像,返回步骤506。
步骤516,将候选帧图像确定为关键帧图像,基于第二差分值从候选图像位移中确定参考帧图像与关键帧图像的第二图像位移。
其中,第二差分值是,在图像位移为候选图像位移的情况下,计算得到的相邻参考帧图像与关键帧图像之间的差分值,候选图像位移是基于第一图像位移与第二位移间隔确定的。
步骤518,基于第二图像位移从关键帧图像中确定待拼接图像区域。
步骤520,在当前拼接图像的基础上拼接待拼接图像区域,得到新的当前拼接图像。
步骤522,判断关键帧图像是否为目标视频的最后一帧图像,若否,则执行步骤524,若是,则执行步骤526。
步骤524,将关键帧图像作为参考帧图像,返回步骤504。
步骤526,将当前拼接图像确定目标内容对应的内容截图。
本实施例中,通过基于第一差分值确定参考帧图像与候选帧图像之间的第一图像位移,在第一图像位移大于位移阈值的情况下,基于第二差分值确定参考帧图像与关键帧图像之间的第二图像位移,减少了图像拼接的次数,提高了截图生成的效率。此外,由于第一差分值是基于第一位移间隔从第一位移范围中确定的,第二差分值是基于第二位移间隔从第二位移范围中确定的,第二位移间隔大于第一位移间隔,通过计算第二图像位移修正了第一图像位移的计算误差,提高了截图生成的准确度。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的截图生成方法的截图生成装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个截图生成装置实施例中的具体限定可以参见上文中对于截图生成方法的限定,在此不再赘述。
在一个实施例中,如图6所示,提供了一种截图生成装置,包括:图像获取模块602、第一位移确定模块604、候选位移确定模块606、第二差分确定模块608和图像拼接模块610,其中:
图像获取模块602,用于响应于针对目标内容的截图操作,对目标内容进行视频录制得到目标视频,并从目标视频中获取参考帧图像以及候选帧图像;
第一位移获取模块,用于获取参考帧图像与候选帧图像的第一图像位移;第一图像位移,是基于位移间隔为第一位移间隔的多个候选帧间位移进行差分运算得到的第一差分值确定的;
候选位移确定模块606,用于在基于第一图像位移确定候选帧图像为关键帧图像的情况下,确定位移间隔为第二位移间隔的多个候选图像位移;第二位移间隔小于第一位移间隔;
第二差分确定模块608,用于针对每个候选图像位移,确定在帧间位移为候选图像位移的情况下,参考帧图像与关键帧图像之间的第二差分值;
图像拼接模块610,用于根据第二差分值从关键帧图像中确定待拼接图像区域,对待拼接图像区域进行图像拼接处理,生成目标内容对应的内容截图。
在一些实施例中,候选位移确定模块还用于:基于第一图像位移以及第一位移间隔确定位移范围;按照第二位移间隔从位移范围中确定多个候选图像位移。
在一些实施例中,在基于第一图像位移以及第一位移间隔确定位移范围方面,候选位移确定模块还用于:将第一图像位移的绝对值与第一位移间隔的和作为最大图像位移,并将最大图像位移的相反数作为最小图像位移,形成位移范围。
在一些实施例中,参考帧图像与候选帧图像不相邻,第一位移获取模块还用于:获取以参考帧图像为起始帧图像且以候选帧图像为终止帧图像的视频片段,获取视频片段中相邻两帧视频帧图像之间的帧间位移;对视频片段中相邻两帧视频帧图像之间的帧间位移进行统计,得到参考帧图像与候选帧图像之间的第一图像位移。
在一些实施例中,在确定视频片段中相邻的第一视频帧图像与第二视频帧图像之间的帧间位移的方面,第一位移获取模块还用于:针对多个候选帧间位移中的每个候选帧间位移,在第一视频帧图像与第二视频帧图像之间的帧间位移为候选帧间位移的情况下,确定第一视频帧图像中与第二视频帧图像重叠的第一重叠图像区域、以及第二视频帧图像中与第一视频帧图像的第二重叠图像区域;对第一重叠图像区域与第二重叠图像区域进行差分运算,得到候选帧间位移对应的第一差分值;基于第一差分值从多个候选帧间位移中,确定第一视频帧图像与第二视频帧图像的帧间位移。
在一些实施例中,图像拼接模块还用于:基于第二差分值从各候选图像位移中,确定参考帧图像与关键帧图像的第二图像位移;基于第二图像位移从关键帧图像中确定待拼接图像区域,对待拼接图像区域进行图像拼接处理,生成目标内容对应的内容截图。
上述截图生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储XX 数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种截图生成方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种截图生成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7和图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述截图生成方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述截图生成方法中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述截图生成方法中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器 (Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory, DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。