资讯专栏INFORMATION COLUMN

简单的视频图像防篡改方法

lunaticf / 1110人阅读

摘要:本文中就以算法压缩图像的过程为例,简单介绍一下图像防篡改的方法。这一步不在本次视频防篡改算法中,不做过多介绍。这一步在本次的视频图像防篡改中起到了至关重要的作用。而图像中的中频部分是比较适合进行防篡改修改的部分。

大家都知道视频中图像压缩的重要性,但是图像的安全性也至关重要。特别是在一些需要知识产权保护的视频文件中(比如教育类的视频就是其中的典型),对于视频信息的保护就显得尤为重要。那么今天就给大家介绍一种简单保护视频信息的方法(视频防篡改)。

在视频压缩编码的过程中,其实就是对视频图像的压缩。所有的图像压缩算法基本都遵循以下三点:

(1)把数据的重要部分和不重要部分划分出来:

(2)过滤掉不重要的部分:

(3)保存数据信息。

JPEG算法是图像压缩算法中的经典算。本文中就以JPEG算法压缩图像的过程为例,简单介绍一下图像防篡改的方法。

JPEG算法的第一步:是图像分割。把图像分割成大小为8x8的小块,这些小块在整个压缩的过程中都是多带带被处理的。分割示例如下图(1)海岛


图1. 海岛8x8划分

JPEG算法的第二步:颜色空间的转换。如将RGB转换为YCbCr。这一步不在本次视频防篡改算法中,不做过多介绍。

JPEG算法的第三步:离散余弦变换(DCT)。 DCT变换的原理是:世界上任何复杂的事物,都可以分解为足够多的简单事物(类似于积分函数无限逼近)。那么经过DCT变换,可以把一个数组分解成数个数组的和,如果我们把数组视为一个一维矩阵,那么可以把结果看做是一系列矩阵的和。图像在电脑中的表现形式就是数字矩阵,这一特点就完全契合的DCT变换的特性。经过DCT变化的图像数据,第一个数据叫做直流系数(DC),之后的数据叫做交流系数(AC)。DC系数表示的是图像中的主要区域,AC系数表示的是图像中的轮廓的细节部分。转换结果如图(2)。


图(2) DCT转换结果

其中全是100的矩阵代表的是图像中的背景部分,假如像素值都是一样的,那么经过DCT变化后图像的能量将集中在左上角的直流部分。其余细节部分都变成了0。一个8x8的矩阵经过变换后就变成了一个只在左上角拥有一个数字的矩阵。可见DCT变换在图像压缩过程中的威力有多大。

JPEG算法的第四步:数据量化。这一步在本次的视频图像防篡改中起到了至关重要的作用。量化的公式为 : B = G / Q 。B代表的是量化后的结果。G代表的是输如的值。Q代表的是量化系数。经过DCT变换之后的数据需要使用标准的量化表进行量化计算。本次视频修改的部分只在亮度值中进行,所以介绍介绍标准亮度表。见图(3)。


图(3)标准亮度量化表

图(2)的变化结果是左上角只有一个800的矩阵,经过标准量化表的量化计算(800 / 16 = 50) 那么量化后的结果将变成左上角只有一个50的矩阵。其实在真是的图像矩阵中,经过了量化计算后也会呈现出数字集中在左上角,右下角全是0的结果。量化的后的数据会先经过Z字型扫描。扫描过程见图(4)


图(4)Z字型扫描

接下来本文通过在宿主图像的中嵌入一张指纹图片,对视频信息进行防篡改修改。

1.图像的构成

图像点和频率的对应关系:

(1)图像的低频分量,图像中主要的信息都保存在低频信息中,他决定了图像的灰度等级,对图像结构的决定作用较小。
(2)图像的中频分量,中频信息决定了图像的基本结构,是图像的主要结构。

(3)图像的高频分量,高频信息是图像的边缘和细节,是对图像中频信息的进一步强化。

2.嵌入原理:

若修改低频区域的数据,也就是修改大块的色块区域。容易对原始图像造成损坏,也很容易被看出,隐蔽性较差。

如果对高频信息进行修改,修改的部分就是图像中的边缘轮廓,采用这样的方法对视频的影响较小,但是会被大部分的高频信息处理算法给破坏掉。达不到嵌入的目的。

而图像中的中频部分是比较适合进行防篡改修改的部分。

3.嵌入密钥图像:

(1)对图像进行完8x8的划分后,要计算出每个8x8块里面要存放几个像素点。

(2)嵌入像素点的个数 = 嵌入图像像素点总数 / 被嵌入图像划分的8x8块个数。

处理效果见下图:


图(5)原始图像


图(6)嵌入的密钥图像


图(7)恢复 的原始图像


图(8)提取的密钥图像

参考:

JPEG算法解密(二)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44046.html

相关文章

  • B站智能挡弹幕一种python实现

    摘要:将图片的处理方法放到视频中的每一帧,再加上弹幕飞过的效果,就完成了版的智能防挡弹幕。不知道站的实现方法是怎样,是否有人工干预,是否有预计算。 某天代码写得老眼昏花,去B站上摸鱼,突然发现奇怪的现象: showImg(https://segmentfault.com/img/remote/1460000017911829?w=600&h=284); 哟呵,B站竟然做了 视频前景提取 ,把...

    jzzlee 评论0 收藏0
  • 微软为Azure推出了一种新篡改”对象存储服务

    摘要:微软公司推出了,这是平台上一种新的防篡改存储服务,该服务用于保护敏感数据。微软表示,还提供了许多可管理功能方面的优势。微软在一篇博客文章中解释道同样的存储环境可用于标准及不可变存储。微软针对行业的云产品线在不断地丰富,是其中最新的成员。微软公司推出了Immutable Blob Storage,这是Azure平台上一种新的防篡改存储服务,该服务用于保护敏感数据。此次推出的这项服务主要针对的是...

    eternalshallow 评论0 收藏0
  • JavaScript 高级技巧——“篡改对象”注意要点

    摘要:防篡改对象不可扩展对象默认情况下,所有对象都是可扩展的不可扩展可以使用这个方法严格模式下会抛出错误一旦设置防扩展,对象就无法添加新的属性和方法。已有的属性方法不受影响,这些属性方法仍然可以修改和删除。检测是否被冻结,用方法 防篡改对象 不可扩展对象 默认情况下,所有对象都是可扩展的: var person = { name: Oliver }; person.age = 18;...

    atinosun 评论0 收藏0
  • JS红皮书解读之篡改对象

    摘要:注意一旦把对象定义为防篡改,就无法撤销了。使用阻止对象扩展注意严格模式下,不是而是报错。使用冻结对象对于库作者而言,冻结对象可防止有人修改库的核心对象。 showImg(https://segmentfault.com/img/remote/1460000019753620); 前言:去年7月份在简书写的,发现后端、React中也有体现,觉得有必要在微信上分享下。 注意:一旦把对象定义...

    张迁 评论0 收藏0

发表评论

0条评论

lunaticf

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<