具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1示出了本发明的基于视频指纹的快速视频检测方法的第一实施例的流程。请参见图1,下面是对本实施例的视频检测方法的各个实施步骤的详细描述。
步骤S10:对输入视频进行解码得到YUV分量。
步骤S11:对视频转化后第k帧的Y分量进行维度划分,得到N×M矩阵,其中每帧的维度为N×M。
k的取值范围是从0到最后一帧,N的取值范围是1-width(宽度),M为1-height(宽度),例如取的N是4,M是2。
步骤S12:对矩阵中的每一块计算出矩阵的质心梯度方向,得到第k帧的三维指纹向量。
矩阵块的含义是指把一帧图像分成N×M个块以后,每一块的大小。在本步骤中,较佳的可以使用KD树的高效索引结构将运算得到的第k帧的三维指纹向量存储到数据库,方便数据读写,为指纹匹配提供方便。KD树(k-dimensional树的简称)是一种分割k维数据空间的数据结构,主要应用于多维空间关键数据的搜索,如范围搜索和最近邻搜索。
指纹向量的获取过程具体为:
在第k帧的坐标(x,y)位置处,用函数f(x,y,k)表示该点的亮度值。
坐标(x,y)的梯度定义为:
坐标(x,y)的f函数变化最快的方向就是梯度方向。在本发明的方法中,Gx和Gy约等于:
Gx=f[x+1,y,k]-f[x-1,y,k] (2)
Gy=f[x,y+1,k]-f[x,y-1,k] (3)
梯度矢量f也可以用幅度函数r[x,y,k]和相位函数θ[x,y,k]来代替,
它们的公式为:
在本发明的方法中,质心梯度方向这个值是由矩阵中的每一块获得的:
Bn,m,k是第k帧中位于第n行和第m列的那一块,而c[n,m,k]是从块Bn,m,k中取得的质心。由于所有梯度大小的归一化,质心的取值在-pi/2到pi/2之间.第k帧的N*M维指纹向量ck是由下面公式获得的:
ck=[c[1,1,k],c[1,2,k],...,c[N,M,k]] (7)
步骤S13:根据计算得到的第k帧的三维指纹向量获取指纹序列。
步骤S14:将指纹序列与预先提取的目标视频的标准序列向量进行匹配,判断输入视频和目标视频是否同源。
在本实施例中,匹配过程包括:
根据指纹序列与目标视频的标准序列向量得到指纹距离,判断指纹距离和预设阈值的大小,若指纹距离小于预设阈值则表示匹配成功,输入视频和目标视频同源,若指纹距离大于或等于预设阈值则表示匹配失败,输入视频和目标视频不同源。
匹配过程中的计算过程如下:
如果输入视频的指纹序列cA;目标视频的指纹序列cB;
其中,cA=[c1,c2,...,cX]和cB=[c1,c2,...,cY];
其中,X表示第X帧,Y表示第Y帧,那么K的取值如下:
If(X>Y)
K=Y
Else
K=X
指纹距离采用欧式距离平方获得,公式如下:
指纹距离小于预设阀值T表示匹配成功,反之则匹配失败,其中T值得定义可以根据实际的情况设定。
图2示出了本发明的基于视频指纹的快速视频检测方法的第二实施例的流程。请参见图2,下面是对本实施例的视频检测方法的各个实施步骤的详细描述。
步骤S20:对输入视频进行解码得到YUV分量。
步骤S21:对视频转化后第k帧的Y分量进行维度划分,得到N×M矩阵,其中每帧的维度为N×M。
步骤S22:对矩阵中的每一块计算出矩阵的质心梯度方向,得到第k帧的三维指纹向量。
在本步骤中,较佳的可以使用KD树的高效索引结构将运算得到的第k帧的三维指纹向量存储到数据库,方便数据读写,为指纹匹配提供方便。
指纹向量的获取过程具体为:
在第k帧的坐标(x,y)位置处,用函数f(x,y,k)表示该点的亮度值。
坐标(x,y)的梯度定义为:
坐标(x,y)的f函数变化最快的方向就是梯度方向。在本发明的方法中,Gx和Gy约等于:
Gx=f[x+1,y,k]-f[x-1,y,k] (2)
Gy=f[x,y+1,k]-f[x,y-1,k] (3)
梯度矢量f也可以用幅度函数r[x,y,k]和相位函数θ[x,y,k]来代替,
它们的公式为:
在本发明的方法中,质心梯度方向这个值是由矩阵中的每一块获得的:
Bn,m,k是第k帧中位于第n行和第m列的那一块,而c[n,m,k]是从块Bn,m,k中取得的质心。由于所有梯度大小的归一化,质心的取值在-pi/2到pi/2之间.第k帧的N*M维指纹向量ck是由下面公式获得的:
ck=[c[1,1,k],c[1,2,k],...,c[N,M,k]] (7)
步骤S23:根据计算得到的第k帧的三维指纹向量获取指纹序列。
步骤S24:将指纹序列与预先提取的目标视频的标准序列向量进行匹配,判断输入视频和目标视频是否同源。
在本实施例中,匹配过程包括:
根据指纹序列与目标视频的标准序列向量得到指纹距离,判断指纹距离和预设阈值的大小,若指纹距离小于预设阈值则表示匹配成功,输入视频和目标视频同源,若指纹距离大于或等于预设阈值则表示匹配失败,输入视频和目标视频不同源。
匹配过程中的计算过程如下:
如果输入视频的指纹序列cA;目标视频的指纹序列cB;
其中,cA=[c1,c2,...,cX]和cB=[c1,c2,...,cY];
其中,X表示第X帧,Y表示第Y帧,那么K的取值如下:
If(X>Y)
K=Y
Else
K=X
指纹距离采用欧式距离平方获得,公式如下:
指纹距离小于预设阀值T表示匹配成功,反之则匹配失败,其中T值得定义可以根据实际的情况设定。
步骤S25:对判断出属于同源的输入视频,禁止其上传,对判断出不属于同源的输入视频,允许其上传。
图3示出了本发明的基于视频指纹的快速视频检测装置的较佳实施例的原理。请参见图3,本实施例的快速视频检测装置包括:解码模块10、维度划分模块11、指纹向量计算模块12、指纹序列获取模块13、匹配模块14。
解码模块10对输入视频进行解码得到YUV分量。
维度划分模块11对视频转化后第k帧的Y分量进行维度划分,得到N×M矩阵,其中每帧的维度为N×M。
指纹向量计算模块12对矩阵中的每一块计算出矩阵的质心梯度方向,得到第k帧的三维指纹向量。较佳的,在指纹向量计算模块12中还包括向量存储模块120,使用KD树的索引结构将得到的第k帧的三维指纹向量存储到数据库。
指纹向量的获取过程具体为:
在第k帧的坐标(x,y)位置处,用函数f(x,y,k)表示该点的亮度值。
坐标(x,y)的梯度定义为:
坐标(x,y)的f函数变化最快的方向就是梯度方向。在本发明的方法中,Gx和Gy约等于:
Gx=f[x+1,y,k]-f[x-1,y,k] (2)
Gy=f[x,y+1,k]-f[x,y-1,k] (3)
梯度矢量f也可以用幅度函数r[x,y,k]和相位函数θ[x,y,k]来代替,
它们的公式为:
在本发明的装置中,质心梯度方向这个值是由矩阵中的每一块获得的:
Bn,m,k是第k帧中位于第n行和第m列的那一块,而c[n,m,k]是从块Bn,m,k中取得的质心。由于所有梯度大小的归一化,质心的取值在-pi/2到pi/2之间.第k帧的N*M维指纹向量ck是由下面公式获得的:
ck=[c[1,1,k],c[1,2,k],...,c[N,M,k]] (7)
指纹序列获取模块13根据计算得到的第k帧的三维指纹向量获取指纹序列。
匹配模块14将指纹序列与预先提取的目标视频的标准序列向量进行匹配,判断输入视频和目标视频是否同源。
匹配模块14进一步包括指纹距离计算单元140和指纹距离判断单元142。指纹距离计算单元140根据指纹序列与目标视频的标准序列向量得到指纹距离。指纹距离判断单元142判断指纹距离和预设阈值的大小,若指纹距离小于预设阈值则表示匹配成功,输入视频和目标视频同源,若指纹距离大于或等于预设阈值则表示匹配失败,输入视频和目标视频不同源。
指纹距离计算单元140的处理过程如下:如果输入视频的指纹序列cA;目标视频的指纹序列cB;
其中,cA=[c1,c2,...,cX]和cB=[c1,c2,...,cY];
其中,X表示第X帧,Y表示第Y帧,那么K的取值如下:
If(X>Y)
K=Y
Else
K=X
指纹距离采用欧式距离平方获得,公式如下:
在指纹距离判断单元142中,指纹距离小于预设阀值T表示匹配成功,反之则匹配失败,其中T值得定义可以根据实际的情况设定。
图4示出了本发明的基于视频指纹的快速视频检测装置的第二实施例的原理。请参见图4,本实施例的快速视频检测装置包括:解码模块20、维度划分模块21、指纹向量计算模块22、指纹序列获取模块23、匹配模块24、视频上传处理模块25。
解码模块20对输入视频进行解码得到YUV分量。
维度划分模块21对视频转化后第k帧的Y分量进行维度划分,得到N×M矩阵,其中每帧的维度为N×M。
指纹向量计算模块22对矩阵中的每一块计算出矩阵的质心梯度方向,得到第k帧的三维指纹向量。较佳的,在指纹向量计算模块22中较佳的还包括向量存储模块220,使用KD树的索引结构将得到的第k帧的三维指纹向量存储到数据库。
指纹向量的获取过程具体为:
在第k帧的坐标(x,y)位置处,用函数f(x,y,k)表示该点的亮度值。
坐标(x,y)的梯度定义为:
坐标(x,y)的f函数变化最快的方向就是梯度方向。在本发明的方法中,Gx和Gy约等于:
Gx=f[x+1,y,k]-f[x-1,y,k] (2)
Gy=f[x,y+1,k]-f[x,y-1,k] (3)
梯度矢量f也可以用幅度函数r[x,y,k]和相位函数θ[x,y,k]来代替,
它们的公式为:
在本发明的装置中,质心梯度方向这个值是由矩阵中的每一块获得的:
Bn,m,k是第k帧中位于第n行和第m列的那一块,而c[n,m,k]是从块Bn,m,k中取得的质心。由于所有梯度大小的归一化,质心的取值在-pi/2到pi/2之间.第k帧的N*M维指纹向量ck是由下面公式获得的:
ck=[c[1,1,k],c[1,2,k],...,c[N,M,k]] (7)
指纹序列获取模块23根据计算得到的第k帧的三维指纹向量获取指纹序列。
匹配模块24将指纹序列与预先提取的目标视频的标准序列向量进行匹配,判断输入视频和目标视频是否同源。
匹配模块24进一步包括指纹距离计算单元240和指纹距离判断单元242。指纹距离计算单元240根据指纹序列与目标视频的标准序列向量得到指纹距离。指纹距离判断单元242判断指纹距离和预设阈值的大小,若指纹距离小于预设阈值则表示匹配成功,输入视频和目标视频同源,若指纹距离大于或等于预设阈值则表示匹配失败,输入视频和目标视频不同源。
指纹距离计算单元240的处理过程如下:如果输入视频的指纹序列cA;目标视频的指纹序列cB;
其中,cA=[c1,c2,...,cX]和cB=[c1,c2,...,cY];
其中,X表示第X帧,Y表示第Y帧,那么K的取值如下:
If(X>Y)
K=Y
Else
K=X
指纹距离采用欧式距离平方获得,公式如下:
在指纹距离判断单元242中,指纹距离小于预设阀值T表示匹配成功,反之则匹配失败,其中T值得定义可以根据实际的情况设定。
视频上传处理模块25对判断出属于同源的输入视频,禁止其上传,对判断出不属于同源的输入视频,允许其上传。
上述实施例是提供给本领域普通技术人员来实现和使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书所提到的创新性特征的最大范围。