可逆的分级加密技术在视频隐私保护中的应用
一、摘要
人脸作为一种典型的图像感兴趣区域,是识别一个人的最关键信息,面向视觉感知的分级区域加密增强了加密的针对性和灵活性。本文基于视频的部分加密算法,提出了一种只对监控中的人脸信息进行分级可逆加密并嵌入关键信息的算法,以达到保护实时监控中个人肖像隐私而不影响对监控对象行为判断的目的。本文针对监控视频的每一帧图像,实现了对人脸区域的两级可逆加密,第一级加密后的保留了少量人脸的感知信息,具有一定可识别性,第二级加密后的人脸区域则不包含任何原图像的感知信息。然后通过结合用户不同的类别,进行密钥管理解密人脸区域,我们构造了一个实用的两级加密视频隐私的安全传输方案。
关键词:视频加密;人脸定位;分级可逆加密;隐私保护;密钥管理
文章目录
二、算法设计
1.嵌入过程
人脸定位用OpenCV
2.分级加密过程
3.分级解密过程
三、嵌入算法:预测差值直方图
详见:https://blog.csdn.net/Harbour_zhang/article/details/109155501?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164897905916780261933360%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164897905916780261933360&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-109155501.142v5pc_search_result_cache,157v4control&utm_term=%E9%A2%84%E6%B5%8B%E5%B7%AE%E5%80%BC%E7%9B%B4%E6%96%B9%E5%9B%BE&spm=1018.2226.3001.4187
嵌入最大信息量约为32500bit(1bit/像素),有时能看出图像变化有时不能。但都不影响人脸的正常识别。
#信息嵌入
def zhifang(img,msg):
m = img.shape[0]
n = img.shape[1]
img_hiding = img.astype(np.float)
#为了方便计算,直接把数组长度设置为嵌入容量
N = m * n
predict_value = np.zeros((1, N,3), np.uint8)#零矩阵
predict_error = np.zeros((1, N,3), np.uint8)#零矩阵
predict_expand = np.zeros((1, N,3), np.uint8)#零矩阵
#一个随机01序列,作为此次信息隐藏的秘密信息
secret_msg = np.zeros((1, N,3), np.uint8)
for i in range(N):
secret_msg[0,i] = msg[0,i]
#嵌入
index = 0
for i in range(1,m,2):
for j in range(1,n-1,2):
# 计算左右两个像素的均值,作为预测值
predict_value[0,index] = np.round((img[i,j-1] + img[i,j+1])/2)
# 得到预测误差
predict_error[0,index] = img[i,j] - predict_value[0,index]
predict_expand[0,index] = predict_error[0,index]
index = index + 1
# 将秘密信息嵌入误差直方图,构成扩展预测误差直方图
#predict_expand = predict_error.copy()
# 选择阈值 T = 5
T = 5
#print(predict_expand.shape)
for i in range(0,N):
if all(predict_error[0,i] >= -1 * T) and all(predict_error[0,i]