图像压缩所解决的主要问题是尽量减少表示数字图像时所需要的数据量。减少数据量的基本原理是去除其中多余的数据。本博客将给定的图像进行压缩处理,使Huffman编码方法,并计算压缩比,分析图像压缩后的视觉效果。

文章目录

  • 一、主要设计思想
  • 二、实现算法及程序流程图
  • 三、源程序
  • 四、主要技术问题的处理方法
  • 五、实验结果及分析

一、主要设计思想

首先将彩色图像灰度化,转化为单通道灰度图像。然后对每个像素对应的灰度级进行统计,以及对应的编码记录存放在像素数组中,接着把像素数组中的灰度像素个数从大到小进行排序,建立Huffman解码矩阵计算出灰度级最小两位像素个数的和,对图像灰度统计数据按Huffman算法编码,输出图像前通过解码矩阵对图像进行解码,最后,输出解码后的图像与原图相对比并计算图像压缩比。

二、实现算法及程序流程图

三、源程序

I=imread('D:/pic/baby.jpg');% 读取测试图像I =rgb2gray(I);% 转化为灰度图像[m,n]=size(I);
len=m*n;
S = zeros(1,256);
In = I(:);
% 获取各符号的概率
for p=0:255;j=find(i==p-1);S(p+1)=length(j)/(len);
endt = 0:255;
dict = huffmandict(t,S); %生成字典
enco = huffmanenco(In,dict); %编码
deco = huffmandeco(enco,dict); %解码
Ide = col2im(deco,[m,n],[m,n],'distinct'); %把向量重新转换成图像块;subplot(1,2,1);
imshow(I);title('原始图像');
subplot(1,2,2);
imshow(uint8(Ide));title('压缩后的图像');fprintf("图像的压缩比: %f\n", 1-size(enco)/8/size(deco)) %将编码后的数值看作二进制后进行计算

四、主要技术问题的处理方法

对一般尺寸的彩色图像,输入的图像是维数阶数较高的矩阵,按照Huffman编码的计算方法耗时会长,所以先将图像转化为单通道灰度图像,这样就不用对R、G、B三个通道进行处理。在视觉效果上两幅图像基本看不出差别,但是运算速度不够理想。

五、实验结果及分析


图像的压缩比:0.142416

从RGB三通道转化为单通道灰度图像,速度有提升,但不明显。Huffman算法是无损压缩,解码效果来看,两幅图像基本无差别。但是运算速度不够理想,按照Huffman编码这种统计算法耗时比较长,算法有待进一步改进。

图像处理压缩Huffman编码方法实现相关推荐

  1. 文件压缩 Huffman编码 (java)

    用到的知识点有: 1,二叉堆Heap的设计,实现堆排序 2,二叉树的链式构造 3,Huffman编码以及Huffman树的构建 4,二进制文件I/O流 的读写 5,比特输出流的类设计 程序目录: 1 ...

  2. 西安电子大学计算机考研复试机试(2019)+ 2011年真题【每位数字加和排序+马鞍点+字符串压缩+Huffman数计算WPL(priority_queue)】

    2011 problem A /* 2011 problem A cin:n个数字(0,1000) ,0结束 cout:每位数加和排序输出(小->大) */ #include<cstdio ...

  3. huffman编码的程序流程图_Huffman编码实现压缩解压缩

    这是我们的课程中布置的作业.找一些资料将作业完毕,顺便将其写到博客,以后看起来也方便. 原理介绍 什么是Huffman压缩 Huffman( 哈夫曼 ) 算法在上世纪五十年代初提出来了,它是一种无损压 ...

  4. 数据压缩之经典——哈夫曼编码(Huffman)

    (笔记图片截图自课程Image and video processing: From Mars to Hollywood with a stop at the hospital的教学视频,使用时请注意 ...

  5. 奇妙的二叉树:Huffman的贡献

      提起 Huffman 这个名字,程序员们至少会联想到二叉树和二进制编码.的确,我们总以 Huffman 编码来概括 D.A.Huffman 个人对计算机领域特别是数据压缩领域的杰出贡献.我们知道, ...

  6. 图像的常用压缩技术以及视频码率的计算

    图像压缩方法: 冗余度压缩方法:也称无损压缩,压缩比较低 信息量压缩方法:有损压缩,多用在数字电视技术与静止图像通信,压缩编码中丢弃了一些没有作用的信息 压缩种类 压缩方法 无损压缩 哈夫曼编码,算术 ...

  7. C++ huffman数据压缩算法实现(附源码)

      VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 什么是Huffman压缩 Huffman( 哈夫曼 ) 算法在上世纪五十年代初提出来了,它是一种无损压缩方法,在压缩过程中不会丢失信息 ...

  8. MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

    最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在<数字图像处理>课程中完成的软件都是基于单文档的程序 ...

  9. RFC1951的部分翻译及原文(1/2) (转)

    RFC1951的部分翻译及原文(1/2) (转)[@more@] 下面只是rfc文档中的第1,2,3,节,其余部分请参照原文. 1. Introduction 1.1. Purpose 本规范是用来定 ...

最新文章

  1. 安卓高手之路 图形系统(2)----------------基于Binder的架构思路)
  2. 你在做大数据?你有目标么?
  3. 使用halcon将一个圆上的点拟合成圆形并且求出圆心
  4. C和指针之数组之编程练习2
  5. 存储控制器wwn号_AUTOSAR学习笔记之存储
  6. Linux命令(8):headtail命令
  7. 机器学习1.2 ---参数学习
  8. html日历菜鸟,菜鸟第一次发代码 -- JS日历
  9. iOS CoreData版本升级和数据库迁移
  10. duliu——思维+线段树
  11. 月薪20+的Android面试都问这些问题(含答案)
  12. cpu怎么开启php,win10开启cpu虚拟化的方法
  13. 华为服务器2288h修改u盘启动,华为服务器bios设置u盘启动
  14. c语言中short作用,详解C语言中整数(short,int,long)
  15. 【矩阵计算GPU加速】numpy 矩阵计算利用GPU加速,cupy包
  16. 计算机基础课件ppt教案,计算机应用基础教案项目二ppt课件.ppt
  17. 被开发者和合作商抛弃 Android难现昨日辉煌
  18. 【每日一练及解题思路V1】给定一个字符串,找出其中不含重复字符的最长子串的长度
  19. 2022-2028年全球与中国机身导线行业产销需求与投资预测分析
  20. 12款浏览器兼容性测试工具推荐

热门文章

  1. 七大壁纸网站满足所有分辨率需求!
  2. DB是服务的下游还是上游,你平时用对了吗?
  3. python 自动化之路-day01
  4. 2021牛客暑期多校训练营1 赛后总结
  5. c223 :production versions 新增、修改、删除函数: CM_FV_PROD_VERS_DB_UPDATE
  6. OKR——Objectives and Key Results
  7. 为了在上海租房,我用python连夜爬了20000多条房源信息
  8. 在moveit2中实现四连杆及曲柄滑块
  9. 为什么掌握了ROS1机器人开发工具并不能加速掌握ROS2呢???
  10. 2011 4 1 中国最具影响力的50位商界领袖