当前位置: 首页 > news >正文

数字图像处理实验记录八(图像压缩实验)

前言:做这个实验的时候很忙,就都是你抄我我抄你了

一、基础知识

1.为什么要进行图像压缩:
图像的数据量巨大,对计算机的处理速度、存储容量要求高。传输信道带宽、通信链路容量一定,需要减少传输数据量,提高通信速度。因此要进行图像压缩,减少数据量。
2.怎么进行图像压缩:
我们使用霍夫曼编码进行压缩。霍夫曼编码原理是利用信息符号概率分布特性的变字长的编码方法。对于出现概率大的信息符号编以短字长的码,对于出现概率小的信息符号编以长字长的码。
在这里插入图片描述
在这里插入图片描述

二、实验要求

1.读入一幅灰度图像,计算该图像的平均信息量-熵。
(备注:可以读入小一些的图像,例如256256,512512的。)
2.使用霍夫曼编码的方法,对该图像进行压缩。
3. 计算编码后的平均码长及压缩比。

三、实验记录

任务1:

读入一幅灰度图像,计算该图像的平均信息量-熵。
(备注:可以读入小一些的图像,例如256256,512512的。)

%求一幅图像的熵值
clc
clear
close all
I=imread('Acat.png');
I = rgb2gray(I);G=256; %图像的灰度级
[height,width] = size(I); %获取输入值的高和宽
[count,x] = imhist(I,G);
p = count; %原始灰度直方图
I_size = height*width;
H_x = 0;
for i=1:256  %循环p(i) = count(i)/I_size;if p(i)~=0; %如果像素点的概率不为零H_x=-p(i)*log2(p(i))+H_x; %求熵值的公式end
end
H_x  %显示熵值

任务2:

使用霍夫曼编码的方法,对该图像进行压缩。

[M,N] = size(I);%将图像转为二维矩阵
I1 = I(:);%转为一维向量
k = 0:255;
dict = huffmandict(k,p); %根据灰度级k和概率数组P生成Huffman字典
enco = huffmanenco(I1,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('解码图像');

任务3:

计算编码后的平均码长及压缩比。

B=length(enco);
sumcode=length(deco);%编码后比特长度
CR=sumcode/B;%计算压缩率
disp(['原始图像 Bit: ',num2str(B),' bit']);
disp(['压缩图像 Bit: ',num2str(sumcode),' bit']);
disp(['压缩率: ',num2str(CR)]);

四、实验结果

任务1:

在这里插入图片描述

任务2:

在这里插入图片描述

任务3:

在这里插入图片描述

http://www.lryc.cn/news/296342.html

相关文章:

  • navigator.mediaDevices.getUserMedia获取本地音频/麦克权限并提示用户
  • CTF-show WEB入门--web19
  • 04 使用gRPC实现客户端和服务端通信
  • 设计模式-行为型模式(下)
  • 华为交换机常用命令
  • 【Linux】信号-上
  • uniapp 开发App 权限授权 js-sdk
  • 【01】判断素数/质数(C语言)
  • 特征工程:特征提取和降维-上
  • 前端JavaScript篇之强类型语言和弱类型语言的区别和对比
  • [红日靶机渗透] ATKCK红队评估实战靶场三
  • 网课:N皇后问题——牛客(题解和疑问)
  • [大厂实践] Netflix容器平台内核panic可观察性实践
  • 2024/2/8
  • Verilog刷题笔记23
  • C#验证字符串的长度,用正则表达式 vs 字符数组长度或字符串的长度
  • opencv C++ dnn模块调用yolov5以及Intel RealSense D435深度相机联合使用进行目标检测
  • 2024牛客寒假算法基础集训营1(视频讲解全部题目)
  • 第三百一十三回
  • 倒计时61天
  • npm后Truffle找不到命令(ubantu20系统)
  • 嵌入式学习第三篇——51单片机
  • RabbitMQ详解
  • CGAL::2D Arrangements-4
  • 终端命令提示符:如何查看我们电脑端口是否被占用和处理方式
  • elasticsearch重置密码操作
  • 从零开始手写mmo游戏从框架到爆炸(零)—— 导航
  • 机器学习7-K-近邻算法(K-NN)
  • 相机图像质量研究(7)常见问题总结:光学结构对成像的影响--镜片固化
  • 猫头虎分享已解决Bug || Go Error: cannot convert int to string