在多媒体信息中,视频图像信息的重要性不言而喻。提出一种采用混沌权值变异的Huffman树的图像加密算法。此算法在熵鳊码过程中,以基本的Huffman树为标准,利用双耦合混沌序列1对DC系数进行树的结构未变异、路径值变异的加密;再利用双耦合混沌序列2对AC系数进行码字序号的加密。

一、JPEG格式数字图像压缩原理

本文采用了JPBG基准模式图像进行压缩,其编码过程如下页图l所示。

在JPEG中,哈夫曼编码分成3步来完成,

1)按之字型的顺序调整量化后的系数;

2)将按之字型顺序排列的系数转化为中间符号序号;

3)将中间符号中的一部分进行变长码字编码(VLC)也就是哈夫曼编码,另一部分进行变长整数编码(Vu)。

在第二步中,因为FDCT得到的数据是对应频域中各个频率的幅值,而在频率中能量(或幅值)主要集中在低频(直流系数),对应高频的幅值大部分为零或接近零(交流系数),这显然非常有利于数据的压缩,所以DC和AC是分开来处理的.就DC系数而言,对相邻块的DC系数差值(DIFF)进行编码。紧接着将DIFF转变成中间符号:(symbol-l,symbol-2)。其中symbol-l是DIFF的有效位效(以二迸制来计算,记为size对于8位的灰度值,size取值范围为0—Il, Symbol-2是DIFF的幅值,记为amplitude.就AC系数而言,也产生两个中间符号,其中symbol-l包含mnlength、size两部分。run-length代表某非零AC系数前面连续的AC系数为零的个数,sizc代表非零AC系数的有效位数。

在第三步中,对第二步产生的中间符号序列中symbol-l进行VLC编码,对symbol-2进行VLI编码,最后输出数据流,其中DC系数和AC系数的Huffman编码是分开的,对DC系数,symbol-l共有12种取值,对AC系数,symbol-l共有162种取值,故它们采用的哈夫曼表不同。最后Huffman编码后的数据可以按照JPEG文件交换格式生成标准的JPEG文件。

二、基于混沌权值变异的Huffinan树图像/视频加密算法

1、双藕合Logistic混沌映射

双耦合Logistic混沌映射数学表达式如下:

其中ux、uy是混沌序列值,xn和yn是系统参数,表达式如下所示:

式(l)、(2)产生两个混沌序列,分别为{x1,x2,…,xn}和{Y1,y2,…,ym}。

2、基于混沌权值变异Huthnan树(CWVHT)算法

假设有一长度为L、N符号组成的文本信息M,记:

此时L=30,n=6。

首先对信息M中各个符号({a,b,c,d,e,f})出现的次数进行统计,得出各个符号出现的相对概率,然后对其标准Huff-man编码,如表l所示。

除根节点外,设节点左面分支的路径值为’0’,右面分支的路径值为“1”,对于各个符号的代码就是从根节点出发到叶子节点所经过的分支的序列.表l生成的标准Huffman树如图2(a)所示。

若将图2中任意节点的左、右支的路径值交换(此处假设为节点3、2、4),其结果如图2(b)、(c)、(d)和表2所示。

由表2可知,交换节点的路径值使树的总体结构和每一个符号的概率分布未发生改变,但符号所对应的码字发生了变换。即通过这样随机交换节点路径值的方式,对每一个符号进行编码后能更新树的路径值,从而使编码的过程在保持树结构不变的情况下,可由输入的符号和密钥来决定需要交换分支路径值的节点位置,最终实现新的编码。密钥流可由混沌序列来产生,这个过程称为”基于混沌权值变异的Huffman树算法(cwvhi)。

3、加密算法描述

在熵编码过程中,利用双耦合Logistic混沌序列对DC系敛和AC系散编码过程分别进行不同方法的加密,对DC系数,采用前面介绍的CWVHT对AC系数,采用加密码字序号的方法,图像的整个加密过程如图3所示。

(1)DC系数壕码加密

假设DC系散的中间格式为(srze,ampluude),其size的取值为0N11,故令N=12.对DC系数中间格式的第一个符号采用cwvrrr,由混沌序列X和相邻块DC系数差值DIFF产生需要交换路径值的节点,设为nf,计算公式如下:

其中floor表示向下取整;i的取值范围为l-K,K为图像总block数目;参数α、β都属于整数。

(2)AC系数编码加密

在借鉴已有熵编码加密算法的基础上,提出一种适合JPEG熵编码特点的加密码字序号的方法,如图4所示。

即采用混沌序列,加密码字序号(循环移位运算),得到一个新的码字序号,然后根据这个新的序号在原码表中找到其对应新的码字作为码流输出,为了不影响压缩比,算法进行不同码长不同段的加密。在AC Huffmtn编码哀中,其码长与码字个数的对应关系如表3所示。

三、实验结果

本文在MATLAB实验平台上,对Lena(512 x512)测试,图5(a)为k蛆原始图,图5(b)为Lena加密密钥α=l6,β=13,x(l)=0.915,y(l)=0.537下,正确解密后的量建图像。

小知识之Huffman树

给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

matlab huffman树,Huffman树图像加密算法相关推荐

  1. Huffman树压缩和解压文件

    Huffman树 Huffman树:以静态三叉链的存储结构建立的二叉树 Huffman树是一个带权路径长度最小的二叉树,又称最优二叉树 Huffman树的构造方法 ①将每个结点都看作是一个树: ②选择 ...

  2. huffman树和huffman编码

    不知道为什么,我写的代码都是又臭又长. 直接上代码: #include <iostream> #include <cstdarg> using namespace std; c ...

  3. java 实现部门树_(java实现)哈夫曼(Huffman)树编码(自编压缩项目基础)

    哈夫曼树 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树, 若该树的带权路径长度(wpl) 达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 也叫霍夫曼树. 哈 ...

  4. 数据结构源码笔记(C语言):Huffman树字符编码

    #include <stdio.h> #include<string.h> #define N 10 /*待编码字符的个数,即树中叶结点的最大个数*/ #define M 2* ...

  5. 数据结构实验三:Huffman树及Huffman编码的算法实现

    Exp03 Huffman树及Huffman编码的算法实现 Author: Maskros 实验目的 了解该树的应用实例,熟悉掌握Huffman树的构造方法及Huffman编码的应用, 了解Huffm ...

  6. 数据结构-Huffman树

    Huffman树的编码和解码 思想:1.统计字符串每个字母出现的个数2.依次取出两个最小的字母进行合并(分别作为左右子节点,另左子节点<右子节点的值),使用他们值之和作为根节点的值,并将根节点加 ...

  7. 深夜爆肝:万字长文3种语言实现Huffman树(强烈建议三连)

    文章目录 一.C语言能干大事 1. C语言下Huffman树的计算过程分析 2. C语言下Huffman树的编程 二.C#语言也不赖 1. C#下Huffman类的设计 2. C#中界面设计 3. 建 ...

  8. Huffman编码(Huffman树)

    [0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 "Huffman编码(Huffman树)" 的idea 并用源代码加以实现: 0.2) ...

  9. Huffman树进行编码和译码

    //编码 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> ...

  10. huffman树_笃学不倦|c语言构造哈夫曼树哈夫曼编码

    艾薇巴蒂!许久不见甚是想念,想必这"涨姿势"的时刻大家已经期待许久了!今天我们要共同学习的是c语言构造哈夫曼树-哈夫曼编码 构造哈夫曼树 首先,我们需要了解哈夫曼树是什么: 相关知 ...

最新文章

  1. 五千万美元注资孵化器,ETC能实现绝地反击吗?
  2. python psycopg2_Ubuntu 安装 PostgreSQL 和 python-psycopg2基础教程(以及错误解决)
  3. [转]理解JNDI中 java:comp/env/jdbc/datasource 与 jdbc...
  4. 获取DOM元素方法小结
  5. Linux防火墙-SELinux、netfilter、iptables、ifconfig
  6. java中常量定义在interface中好还是定义在class中
  7. Delphi 与 DirectX 之 DelphiX(47): TDIB.DoContrast();
  8. mysql查询时间提前五天_mysql选择月份查询该月有付款的数据(间隔x月并提前5天付款)...
  9. DirectX (13) 粒子系统
  10. 【Spring 核心】装配Bean(一) 自动化装配
  11. 利用 WireShark 深入调试网络请求
  12. vue-pdf 报错 RenderingCancelledException:Rendering cancelled, page 1
  13. 河南的抗疫英雄(C语言嘞)
  14. Java打造RPC框架(四):支持zookeeper与负载均衡
  15. Java电商秒杀系统性能优化(一)——电商秒杀系统框架回顾
  16. 【Python学习笔记】3. Python3 基础语法
  17. 华为鸿蒙会适配很老的机型吗,华为鸿蒙适配机型公布 P50首发/小米10S才是真正至尊版...
  18. 怎样对比计算机配置,硬件配置对比
  19. #{}和¥{}的区别?
  20. CSS3 动画属性 - 逆战班

热门文章

  1. img标签图片自适应的样式
  2. AngularJS 事件
  3. Python 新手入门必学十大模块之一:sys 和 os
  4. 如何用计算机求一个正数的算术平方根,《用计算器求一个正数的算术平方根》教学设计...
  5. Kattis - battleship【模拟】
  6. 农村集体资产产权改革试点将全面展开
  7. 2020年回顾,这一年,不容易
  8. Android bitmap.recycle()导致trying to use a recycled bitmap报错分析
  9. xmarks 又可以使用了. 太棒了
  10. 如何在IDM中设置代理服务器