数字图像处理第八章----图像压缩
文章目录
- 1、概述
- 1.1 冗余
- 1.2 图像压缩分类
- 2 图像冗余
- 2.1 编码冗余
- 2.1.1 定义
- 2.2.2 变长编码
- 2.2 像素间相关性冗余
- 2.3 视觉冗余
- 3 压缩方法评价
- 4 实例
- 5 总结
1、概述
在日常生活中,我们有很多信息要处理,因为计算机中的存储空间是有限的,那么为了存储更多的内容,就要求我们用尽可能小的数据量来表达信息。这时候,图像压缩这一技术就显得尤为重要。
1.1 冗余
图像的数据表达之间存在着冗余,主要表现为图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余等等。那么通过减小数据冗余,我们就可以达到图像压缩的目的。
1.2 图像压缩分类
图像压缩方法可分为有损图像压缩和无损图像压缩两种。
有损图像压缩:是对图像本身的改变,在保存图像时保留了较多的亮度信息,而将色相和色纯度的信息和周围的像素进行合并,合并的比例不同,压缩的比例也不同,由于信息量减少了,所以压缩比可以很高,图像质量也会相应的下降。典型的编码方式有有损预测编码、变换编码、小波编码等。
无损图像压缩:是对文件本身的压缩,和其它数据文件的压缩一样,是对文件的数据存储方式进行优化,采用某种算法表示重复的数据信息,文件可以完全还原,不影响文件内容,对于数字图像而言,也不会使图像细节有任何损失。主要的方法有行程编码、算数编码、无损预测编码等。
2 图像冗余
图像冗余类型可具体分为以下几种:
1、编码冗余 2、像素间相关性冗余 3、视觉冗余
2.1 编码冗余
2.1.1 定义
编码冗余:当所用码字大于最佳编码,我们就说它存在编码冗余。
2.2.2 变长编码
为了消除编码冗余,比较有用的操作是在编码时采用变长编码。
变长编码的原则:将高频率的图像值用低字长的码来表示,以此来可以减少图像的数据量。
•哈夫曼编码
哈夫曼编码是经常被用到的一种变长编码方式,其编码过程可以用下图来说明:
1)将信号按照出现的概率从大到小排序。
2)将概率最小的两个符号的概率相加,再次进行排序。
3)重复2)过程,直至只剩两个信号。
4)在线路的上方写1,下方写0,为信号编码。
from heapq import heapify, heappush, heappop
from itertools import countdef huffman(seq, frq):num = count()trees = list(zip(frq, num, seq)) heapify(trees) while len(trees) > 1: fa, _, a = heappop(trees) fb, _, b = heappop(trees)n = next(num)heappush(trees, (fa+fb, n, [a, b])) return trees[0][-1]
if __name__ == "__main__":seq = "abcdefghi"frq = [4, 5, 6, 9, 11, 12, 15, 16, 20]print(huffman(seq,frq))
通过结果,我们可以简单的了解哈夫曼编码的过程。
2.2 像素间相关性冗余
像素间相关性冗余又称为空间冗余,是静态图像中存在的最主要的一种数据冗余。解决它的方法主要有行程编码、预测编码、变换域表达等。
● 行程编码的原理很简单:将一行中颜色值相同的相邻像素用一个计数值和该颜色值来代替。如aaaabbcddddd就可以写为4a2b1c5d。
● 预测编码是根据信号中存在的关联性,利用前一个或多个信号来预测下一个信号的值,然后对实际值和预测值的差进行编码。
2.3 视觉冗余
人类的视觉系统由于受到生理特征的限制,对图像的一些细微变化是看不到的,忽略这些变化后,图像仍被视为是完好的,把这些超出人类视觉范围的数据称为视觉冗余。
一般,我们减少视觉冗余的方法主要是对图像进行有损处理,在不影响视觉体验的前提下减少图像的数据。
3 压缩方法评价
为评价压缩方法的优劣,我们一般要有一个统一的评价标准。图像的还原度是评价压缩方法极为重要的标准之一。即将压缩后的图像进行还原,在压缩比相同时,原图像与还原图像之间的误差越小,压缩方法越好。
当进行无损压缩时,有时可以简单的采用压缩比这一标准对压缩方法进行评价。但当压缩方法是有损压缩时,很明显,这时候,我们就要对图像失真的程度进行评估,对图像的均方误差、信噪比等数据进行计算,全面的对压缩方法进行评估。
4 实例
import cv2
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as pltdef restore1(u, sigma, v, k):m = len(u)n = len(v)a = np.zeros((m, n))a = np.dot(u[:, :k], np.diag(sigma[:k])).dot(v[:k, :])a[a < 0] = 0a[a > 255] = 255return np.rint(a).astype('uint8')def SVD(frame, K=10):a = np.array(frame)# 由于是彩色图像,所以3通道。a的最内层数组为三个数,分别表示RGB,用来表示一个像素u_r, sigma_r, v_r = np.linalg.svd(a[:, :, 0])u_g, sigma_g, v_g = np.linalg.svd(a[:, :, 1])u_b, sigma_b, v_b = np.linalg.svd(a[:, :, 2])R = restore1(u_r, sigma_r, v_r, K)G = restore1(u_g, sigma_g, v_g, K)B = restore1(u_b, sigma_b, v_b, K)I = np.stack((R, G, B), axis=2)return Iif __name__ == "__main__":mpl.rcParams['font.sans-serif'] = [u'simHei']mpl.rcParams['axes.unicode_minus'] = Falseframe = cv2.imread('d:/imdata/onion.png')plt.subplot(121)plt.imshow(frame)I = SVD(frame, 10)plt.subplot(122)plt.imshow(I)plt.show()
可以看出,当压缩比例较大时,压缩后图像就会变得模糊
5 总结
本章学习了图像压缩的原理,即图像中存在冗余,对不同的冗余种类及其压缩方法进行了介绍。图像压缩是我们日常信息传输过程中经常要用到的一种技术,是未来科技中不可缺少的一种技术。
数字图像处理第八章----图像压缩相关推荐
- 数字图像处理第八章——图像压缩
数字图像处理第八章 数字图像处理---图像压缩 (一) 背景 (二) 编码冗余 2.1 霍夫曼码 2.2 霍夫曼编码 2.3 霍夫曼译码 (三)空间冗余 (四)不相关的信息 (五)JPEG 压缩 5. ...
- 数字图像处理 第八章 图像压缩
第八章 图像压缩 一.基础知识 1.1编码冗余 1.2空间和时间冗余 1.3不相关的信息 1.4图像信息的度量 1.5保真度准则 1.6图像压缩模型 二.一些基本的压缩方法 2.1霍夫曼编码 Pyth ...
- 数字图像处理 第八章——图像压缩
目录 8.1 基础知识 8.1.1 编码冗余 8.1.2 空间冗余和时间冗余 8.1.3 不相关的信息 8.1.4 图像信息的度量 香农第一定理 8.1.5 保真度准则 8.1.6 图像压缩模型 编码 ...
- 数字图像处理——第八章 图像压缩
文章目录 8.1 为何要压缩 8.1.1 图像信息的度量 8.1.2 编码冗余 8.1.3 空间和时间(像素)冗余 8.1.4 压缩评价方法 8.2 基本的压缩方法 8.2.1 霍夫曼编码 8.2.2 ...
- 数字图像处理实验之图像压缩
数字图像处理_图像压缩(霍夫曼编解码) 1. 实验目的 2. 实验流程 2.1 图像熵的计算 2.2 霍夫曼编码流程 2.3 霍夫曼编码函数 2.4 霍夫曼解码流程 3. 实验代码 3.1 计算图像熵 ...
- 计算压缩比的程序matlab,数字图像处理实验5 图像压缩
实验5 图像压缩 一.实验目的: 1.掌握图像压缩的原理--编码冗余,压缩比C R的计算等. 2.了解并掌握霍夫曼编码的原理.实现步骤. 3.掌握JPEG标准--通用的图像压缩/解压缩编码标准. 二. ...
- 【计算机视觉】数字图像处理(六)—— 图像压缩
数字图像处理(六)-- 图像压缩 一.图像压缩概述 (一).图像编码技术的研究背景 1. 信息信息传输方式发生了很大的改变 2. 图像传输与存储需要的信息量空间 (1)彩色视频信息 (2)传真数据 3 ...
- 《数字图像处理技术》期末复习笔记
数字图像处理技术 第一章 图像处理主要内容:广义上:图像采集.图像编码与传输.图像信息处理.图像显示,狭义上:图像增强.图像恢复.图像分割.图像表示 DI:将一幅画面在空间上分割称离散的像素,各像素点 ...
- 数字图像处理——知识点
啥也先不说,Lena镇个楼. Lena 第一章 绪论 * 数字图像:能够在计算机行显示和处理的图像. * 数字图像处理:利用计算机对图像进行分析.加工等处理,使其能够满足各种目的. * 数字图像的特点 ...
最新文章
- 从领导身上学习到的几个观点
- Grove——.NET中的ORM实现
- 辽宁活跃ip段_有泰国女排影子!激情辽宁女排,打出快乐排球,输了比赛赢了球迷...
- 一个好用的浏览器暗色浏览插件 Dark Reader
- 实现图书增删的代码_不仅仅是图书信息管理系统
- Java classLoader【转】
- Mac电脑如何添加管理员账户?
- DataGrip 格式化SQL 自定义SQL格式化
- 拯救者Y7000拆机清灰方法及加装机械硬盘
- XMAPP 的安装与配置
- win10远程连接win7电脑 -- 局域网实现
- HC32F460 浮点运算开启
- 主从复制报错Fatal error:The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
- 袁创:文本编辑器中文字断行及排版算法研究
- 《三国演义》十大不义之人
- Creo 9.0 基准特征:基准坐标系
- 计算机为什么检测不到u盘启动项,BIOS如何设置U盘为电脑启动首选项_BIOS设置U盘启动项检测不到处理方法...
- 论文阅读:Analysis of Scoliosis From Spinal X-Ray Images
- Restful 风格的通信接口
- Matplotlib绘制雷达图
热门文章
- 成年人的崩溃一触即发,掌握学习能力才能突破认知结界,干货满满!并带你分享你如何掉入互联网大佬的各种陷阱...
- C语言编码转换----负数的二进制表示方法
- 解决“服务没有及时响应启动或控制请求”
- LT-mapper,LT-SLAM代码运行与学习
- $().each和$.each()
- Python爬虫-BeautifulSoup
- MySQL inet aton函数,基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析
- 微信小程序-一个跑步app
- iOS description方法的使用介绍
- windows计划任务 0xff_Windows服务器入侵检测排查方法