1.一种基于感兴趣区域的HEVC视频加密方法,其特征在于,包括如下步骤:
1)初始化待加密Tile索引变量TileEncryption_idx=9,待加密Tile索引变量TileEncryption_idx2=9,全帧加密标志变量FrameEncryption_flag=0;
2)按序读取待编码的原始YUV视频序列中的一帧,将该帧定义为当前帧;其中,所述帧的 高度记为FrameHeight,帧宽度记为FrameWidth;
3)判断当前帧是否存在感兴趣区域,如果存在感兴趣区域,转步骤4),否则转步骤7);
4)根据感兴趣区域位置对当前帧进行Tile划分;
所述步骤4)中对当前帧进行Tile划分包括以下步骤:
4.1)将当前帧按64x64像素大小分割为多个互不重叠的编码树单元CTU,第i列j行CTU用G(i,j)表示,其中,
4.2)将感兴趣区域扩展为水平矩形Area,方法为确定感兴趣区域所覆盖CTU集合为{G(x1,y1),G(x2,y2)……G(xn,yn)},令m1=min{x1,x2……xn},m2=min{y1,y2……yn},n1=max{x1,x2……xn},n2=max{y1,y2……yn},则水平矩形Area左上角CTU为G(m1,m2),右下角CTU为G(n1,n2);
4.3)判断水平矩形Area是否满足Tile划分条件,若不满足转下一步,否则转步4.5);其中,所述Tile划分条件为水平矩形Area左右边界距视频帧边界水平距离大于或等于4个CTU,并且水平矩形Area的水平方向长度大于或等于4个CTU;
4.4)调整水平矩形Area;
所述步骤4.4)中调整水平矩形Area是通过调整G(m1,m2),G(n1,n2)点位置实现,包括如下步骤:
4.4.1)判断m1是否小于或等于4,若为假,转下一步,否则令m1=1,转下一步;
4.4.2)判断n1是否大于 若为假,转下一步,否则令转下一步;
4.4.3)判断n1‑m1是否小于3,若为真,转下一步,否则,转步骤4.5);
4.4.4)判断 是否大于3‑(n1‑m1),若为假,转入下一步,否则令n1=(m1+3),转步骤4.5);
4.4.5)令 令m1=n1‑3;
4.5)根据水平矩形Area对当前帧进行Tile划分;
所述步骤4.5)中根据水平矩形Area对当前帧进行Tile划分包括如下步骤:
4.5.1)判断是否满足m1等于1且m2等于1且n1等于 且n2等于若为假,转下一步,否则令FrameEncryption_flag=1,转步骤6);
4.5.2)判断是否满足m1等于1且n1等于 若为假,转下一步,否则,将左边界所在边界线设为Tile列边界,转入步骤4.5.4);
4.5.3)判断是否满足m2等于1且n2等于 若为假,转下一步,否则,将上边界所在边界线设为Tile行边界,转下一步;
4.5.4)判断m1是否等于1,若为真,转下一步,否则将水平矩形Area左边界所在边界线设为Tile列边界,转下一步;
4.5.5)判断m2是否等于1,若为真,转下一步,否则将水平矩形Area上边界所在边界线设为Tile行边界,转下一步;
4.5.6)判断n1是否等于 若为真,转下一步,否则将水平矩形Area右边界所在边界线设为Tile列边界,转下一步;
4.5.7)判断是否n2是否等于 若为真,转下一步,否则将水平矩形Area下边界所在边界线设为Tile行边界;
5)确定待加密Tile索引,即索引变量TileEncryption_idx等于G(m1,m2)对应的CTU所在的Tile单元索引,索引变量TileEncryption_idx2等于G(n1,n2)对应的CTU所在的Tile单元索引;
6)确定当前帧编码是否需要使用新图像参数集PPS;
7)判断当前帧编码时是否需要考虑误差漂移的影响,即判断与本帧距离最近的IDR帧及其后续帧中是否存在进行过感兴趣区域加密的视频帧且本帧为非I帧,若为真,转下一步,否则转步骤9);
8)在HEVC编码的运动估计及运动预测阶段,限制非加密区域Tile单元的运动估计和MV预测模式;
9)在熵编码阶段,对选定Tile的部分语法元素执行加密;其中,所述语法元素包括:表示变换系数幅值绝对值的剩余部分的coeff_abs_level_remaining,表示运动矢量差符号位的mvd_sign_flag,表示变换系数符号位的coeff_sign_flag,表示候选预测运动矢量索引的mvp index;
10)结束对当前帧的编码,输出当前帧码流;
11)判断所有帧是否处理结束,如果结束则转步骤12),否则转步骤1);
12)结束视频编码。
2.如权利要求1所述的基于感兴趣区域的HEVC视频加密方法,其特征在于,所述步骤6)中确定当前帧编码是否需要使用新图像参数集PPS包括以下步骤:
6.1)因视频帧在正常情况下,每帧之间的感兴趣区域变化较小,为减少编码过程中PPS的设定频率,判断当前帧Tile划分是否和上一帧相同,若相同,则转步骤6.2),否则转步骤
6.3);
6.2)不重新设定PPS,编码器使用上一帧的Tile划分,转步骤7);
6.3)使用当前帧的Tile划分设定PPS。
3.如权利要求1所述的基于感兴趣区域的HEVC视频加密方法,其特征在于所述步骤8)中限制非加密区域Tile单元的运动估计和MV预测模式包括以下步骤:
8.1)限制非加密区域Tile单元的运动估计,在P帧和B帧运动估计的过程中,判断当前编码帧中的当前块经过运动估计搜索后的运动矢量产生偏移得到的参考块是否全部或部分像素位于进行过区域加密后对应的Tile单元内,若为真,则转下一步,否则,转到步骤
8.3);
8.2)将该运动矢量对应的率失真代价RDCost设为可选的最大值,使得该运动矢量不会被编码器选为最优运动矢量,转步骤8.4);
8.3)该运动矢量使用HEVC编码器原始率失真代价模型,计算公式如下:RDCost=J+λR
其中,J表示当前运动矢量所产生的估计误差,R代表编码运动信息所需要的比特数,λ代表损失和比特数的比例系数,即拉格朗日因子;
8.4)限制非加密区域Tile单元的MV预测模式,在MV预测阶段,HEVC编码器建立候选MV列表,并对MVP候选列表中的候选MV信息进行判断,计算每个预测运动矢量对应的预测块是否全部或者部分位于感兴趣区域所对应的Tile单元,若为真,转下一步,否则转步骤8.6);
8.5)将该预测运动矢量对应的RDCost设为可选的最大值,确保该预测运动矢量不会被选中,转到步骤9);
8.6)该运动矢量使用HEVC编码器原始的率失真代价模型。
4.如权利要求1所述的基于感兴趣区域的HEVC视频加密方法,其特征在于所述步骤9)中对选定Tile的部分语法元素执行加密包括如下步骤:
9.1)判断FrameEncryption_flag是否为1,若为假,转下一步,否则转步骤9.3),即当前所有Tile都需要加密;
9.2)判断当前Tile索引是否等于TileEncryption_idx或TileEncryption_idx2,若真,转下一步,否则,使用标准HEVC熵编码器编码,转步骤10);
9.3)根据密钥利用Logistic混沌系统生成二进制混沌序列,用于后续对语法元素的加密处理;
9.4)在CABAC熵编码阶段,对选定语法元素加密处理。