发明内容
针对上述提到的现有技术中的视频播放器无法很快很精确的定位到视频文件指定的位置的缺点,本实用新型提供一种新的检测图像变化的方法,通过本发明可以判断是视频文件的索引帧,通过索引帧对视频文件进行精准、快速定位。
本发明解决其技术问题采用的技术方案是:一种检测图像变化的方法,该方法包括下述步骤:
A、对内存进行初始化分配;
B、判断当前帧是否为第一帧,如果当前帧为第一帧则将当前帧定义为索引帧,否则
C、检测当前帧和上一帧之间是否有变化,如果无变化则结束,如有变化则转至下一步;
D、检测索引帧和当前帧的上一帧之间有无变化,如果检测到索引帧和当前帧的上一帧之间有变化,则通过两次差异表得出当前帧是否为索引帧,其中,第一次差异表是由上一帧和当前帧所产生,第二次差异表是由当前帧和索引帧所产生,通过两个差异表的比配程度来决定是否当前帧是否为索引帧,如果检测到索引帧和当前帧的上一帧之间无变化则
E、通过索引帧和当前帧的上一帧的差异图投影法得出当前帧是否为索引帧,所述的差异图投影法原理为从上到下、从下到上、从左到右、从右到左四个方向遍历找到第一行或列差异较大点行或列值,根据得出的四个行列值形成一个差异的投影图,然后根据该投影图的分布范围检测该帧是否为索引帧;
F、让上一帧指针下移到当前帧,当前帧指针指向没有被占用的缓冲器,如果判断当前帧是索引帧,索引帧指向当前帧,将原当前帧作为新的索引帧。
本发明解决其技术问题采用的技术方案进一步还包括:
所述的步骤B还包括步骤B1,步骤B1为对当前图像做高斯滤波。
所述的对当前图像做高斯滤波时,采用3x3高斯滤波减少图像噪音。
所述的检测两帧之间是否有变化,对两帧之间的Y区对应像素点做差值运算,对差异较大的像素点的在差异表中存入相应的差异标志0xFF,并将其差值做累加,另外做差异像素点统计,如无差异就存入差异标志0x00,最后将统计的差值总和或差异点数较大的即认为是两帧为变化帧。
本发明的有益效果是:通过本发明可以为录制文件形成一个标签,通过索引帧可以迅速、准确的对文件进行定位。通过本发明能够在没有播放完视频的基础上就能够知道视频文件录制的大致内容。
下面将结合附图和具体实施方式对本发明做进一步说明。
具体实施方式
本实施例为本发明优选实施方式,其他凡其原理和基本结构与本实施例相同或近似的,均在本发明保护范围之内。
本发明通过采集VGA接口的图像,根据图像来检测是否发生变化,目前产品中主要用PPT(PowerPoint的简称)的检测是否翻页而产生图片的索引,为录制的文件形成一个标签,能够让用户很快的定位到指定的位置进行点播。
主要包括下述步骤:
A、对内存进行初始化分配,初始化过程中分配在运算中需要用到的内存;
B1、本实施例中,还包括有步骤B1,本步骤为对当前图像(即图像当前帧)做高斯滤波,本实施例中,对当前图像做高斯滤波时,采用3x3高斯滤波减少图像噪音,以便于能够准确的检测图像变化,请参看附图2,高斯滤波算法原理的权值表分布图如图2所示,高斯滤波的计算公式为:
g(x,y) = { f(x-1,y-1) + f(x-1,y+1) + f(x+1,y-1) + f (x+1,y+1) + [f(x-1,y) + f(x,y-1) + f(x+1,y) + f(x,y+1)]*2 + f(x,y)*4}/16
其中,f(x,y) 为图像中(x , y)点的灰度值,g(x,y)为该点经过高斯滤波后的值。
B、判断当前帧是不是为第一帧,如果当前帧为第一帧则将当前帧定义为索引帧,否则
C、检测当前帧和上一帧的是否有变化,本实施例中,检测两帧之间是否有变化,主要对两帧之间的Y区对应像素点做差值运算,本实施例中,检测的图像是由YUV422格式的信号组成的,检测是否变化只需要检测Y值即可,对差异较大(本实施例中,当差值的绝对值>= 10 即为有差异,即差异较大)的像素点的在差异表中存入相应的差异标志(0xFF),并将其差值做累加,另外做差异像素点统计(本实施例中,定义一个变量,初始值为0 ,发现有差异较大则计数加1),如无差异(本实施例中,当差值的绝对值 < 10 认为无差异)就存入差异标志(0x00),最后将统计的差值总和或差异点数较大的即认为是两帧为变化帧,本实施例中,每次比较如有差异则会将差值的绝对值加入差值总和中,并将差异点数累加1,最后,如果差异总和小于1000或者是差异个数小于图像大小的1/1000则认为是无变化,否则为有变化;如果当前帧和上一帧之间无变化则结束,并返回一个图像无变化值,准备下一次检测;如有变化则转至下一步;
D、检测索引帧和当前帧的上一帧之间有无变化,本实施例中,此步骤中的检测方法和上一步骤中的相同,如果检测到索引帧和当前帧的上一帧之间有变化,则通过两次差异表得出当前帧是否为索引帧,本实施例中,第一次差异表是由上一帧和当前帧所产生(有差异做0xFF标记,无差异存0x00标记),第二次差异表是由当前帧和索引帧所产生(有差异做0xFF标记,无差异存0x00标记),通过两个差异表的比配程度来决定是否当前帧是否发生变化(即为索引),如匹配点count*2>= 图像点的个数则基本匹配,不是索引帧,否则就为索引帧。如果检测到索引帧和当前帧的上一帧之间无变化则
E、通过索引帧和当前帧的上一帧的差异图投影法得出当前帧是否为索引帧,本实施例中,差异图投影法原理为从上到下、从下到上、从左到右、从右到左四个方向遍历找到第一行或列差异较大点行或列值(本实施例中,当差异点超过20即为差异行或差异列),根据得出的四个行列值形成一个差异的投影图,然后根据该投影图的分布范围检测该帧是否为索引帧,请参看附图3,本实施例中,首先计算出差异投影图宽高值,如下几种判断是否为索引帧:以下条件成立即为索引帧:
1) 、宽*2 >图像宽,且高 * 10 >图像高*4(差异图分布基本占满整个显示区域的按此计算);
2)、高*10 >图像高*4,且左边列值>0,且左边列值*4<图像宽(差异图分布在左半边的显示区域的按此计算);
3)、宽*2>图像宽,且上边行值>0,且上边行值*2<图像高(差异图分布在上半边的显示区域的按此计算);
4) 、0<左边列值*4 <图像宽,且0 <上边行值*2 <图像高(差异图分布在左上角的显示区域的按此计算);
F、让上一帧指针下移到当前帧,不管当前帧是否为索引帧都需要执行该操作,即每进行一次检测就执行一次此步骤,就当前帧指针指向没有被占用的缓冲器,如果判断当前帧是索引帧,索引帧指向当前帧,将原当前帧作为新的索引帧。
通过本发明可以为录制文件形成一个标签,通过索引帧可以迅速、准确的对文件进行定位。