2.5 位图存储

存储位图的最简单方法是简单地逐字节地列出位图信息。此方法存储的文件通常称为RAW文件。考虑到位图尺寸(N x M)和位深(B)中的颜色深度,任何位图所需的磁盘存储量都很容易计算。文件大小的公式以KB为单位

其中N和M是水平和垂直像素的数量,B是每个像素的位数。下表显示了几种位图类型的文件大小(如果它们以RAW格式存储)。

从该表中可以看出,大型24位图像将导致非常大的文件,这就是压缩变得重要的原因。有大量的文件格式用于存储从简单到非常复杂的压缩位图。存在复杂的格式是因为如果不使用压缩将存在非常大的位图文件。压缩文件格式有两大类,一类是无损的(完全保留位图),另一类是有损的。以下显示了压缩技术的主要层次结构。

减小位图文件大小的最简单方法是减少颜色信息,这称为比特缩减或量化。例如,可以使用抖动将24位位图转换为8位索引位图,以模拟丢失的颜色。到目前为止最常见的有损格式是JPEG,它的工作原理描述远远超出了本讨论的范围。它的主要优点是它可以提供比无损格式更好的压缩比。例如,考虑以下位图,其原始图像是24位颜色的500 x 350像素。使用前面给出的公式,未压缩文件大小为500 x 350 x 24/8/1024 = 513K

保存为灰度(位深度减少)文件为171K(小3倍),使用RLE保存和压缩 它是388K(原始的75%),使用LZW压缩保存它是188K(原始的36%),保存作为JPEG,它是30K(压缩比为17:1)。

以下是对称为行程编码(RLE )的最简单的无损压缩技术的描述,该技术对仅使用少量颜色的位图具有良好的效果。考虑以下小的17 x 10像素,8位图像。

如果要以RAW格式存储,则所有10行每行需要16个字节。但是前两行都是相同的级别,因此在运行中简单地保存相同颜色的数量以及运行颜色会更有效。前两行而不是需要16个字节,每个只需要2个字节。

在原始格式中,前三行是

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0

使用行长编码,前三行将是

16 0

16 0

2 0 12 1 2 0

虽然RLE的实际实现中涉及的细节 多于此处描述的,但这是运行长度编码背后的基本原理。为了使RLE达到某种程度的压缩,需要运行相同的颜色,因此对于高度彩色的图像(例如24位照片)不太可能有用。

Opencv学习----位图(bitmap)原理详解五---位图存储相关推荐

  1. Opencv学习----位图(bitmap)原理详解三---位图解析度

    2.3 解析度 分辨率是位图的一个属性,在视觉上查看或打印位图时是必需的,因为像素本身没有明确的尺寸.分辨率通常以每英寸像素数指定,但可以是任何其他测量单位.由于历史原因,大多数打印过程保留每英寸像素 ...

  2. 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))

    机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...

  3. [从零学习汇编语言] - 转移指令原理详解

    文章目录 前言 一.转移指令原理 1.1 计算机如何识别数据和指令 1.2 转移指令原理 1.3 转移分类 1.3.1 转移行为分类 1.3.2 转移指令分类 二.操作符详解 2.1 offset 2 ...

  4. 十二、【数据结构】位图(bitmap)的详解与实现

    一.定义     --概念部分参考http://www.iteblog.com/archives/148 位图法就是bitmap的缩写.所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据, ...

  5. OpenCV学习(21) Grabcut算法详解

    grab cut算法是graph cut算法的改进.在理解grab cut算之前,应该学习一下graph cut算法的概念及实现方式. 我搜集了一些graph cut资料:http://yunpan. ...

  6. java多线程学习-java.util.concurrent详解(五) ScheduledThreadPoolExecutor

    转载于:http://janeky.iteye.com/blog/769965 我们先来学习一下JDK1.5 API中关于这个类的详细介绍: "可另行安排在给定的延迟后运行命令,或者定期执行 ...

  7. 网卡重启影响nfs吗_NFS原理详解

    PS:哈哈,这篇的篇幅真的非常的长.要看完真的要有很强的耐心那.我自己写也快写吐了呢. [ATong学习linux]NFS原理详解 一.NFS介绍 1)什么是NFS 它的主要功能是通过网络让不同的机器 ...

  8. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  9. 离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)

    论文原文:[Yifan Wu, George Tucker, Ofir Nachum: "Behavior Regularized Offline Reinforcement Learnin ...

最新文章

  1. Nodejs教程30(完结):PM2入门
  2. 反转 鼠标_梦幻西游:剧情反转?挖图挖出环装,在晶清加持下3000W到手
  3. 教怎样写好一份“漏洞报告”
  4. mac你没有权限打开应用程序_苹果mac卡顿怎么解决呢?轻松几招让你Mac流畅如新
  5. rabbitmq-消息追踪rabbitmq_tracing
  6. [转]XHTML+CSS兼容性解决方案小集
  7. jvm 调优 2020.09.07
  8. C语言员工信息管理系统
  9. dev-cpp的安装教程
  10. 在家参加OCP考试(MySQL OCP和Oracle OCP)
  11. CSS在线字体库,外部字体的引用方法@font-face
  12. 《科技日报》:神州控股、神州信息、神州数码集团携手合力打造 “神州信创云”正式启航
  13. 将https安全证书导入jdk中
  14. matlab主成分分析散点图_基于matlab的主成分分析与因子分析
  15. microbit python_刘鹏涛老师用Microbit 学Python系列教程
  16. java做一个万年历和闹钟,数字电子钟毕业设计源程序(加万年历和闹钟功能)...
  17. 笔记本电脑卡顿怎么办?教你一键重装系统让电脑“复活”
  18. face_morpher
  19. Java猜数小游戏、c语言猜数小游戏
  20. 测试wifi 的手机软件,WiFi性能测试

热门文章

  1. AcWing 1022. 宠物小精灵之收服
  2. 注意我的博客名是David__Ding
  3. 2023.3.29-2023.04.04 巽风答题答案大全
  4. python-用PyQt5实现一个简单的向喜欢女生告白软件(代码实现+py文件打包成exe文件)
  5. 无处 不在的无线智能——6g 的关键驱动与研究挑战_再谈6G
  6. oversample upsample
  7. 1250 - 2022年春季《算法分析与设计》热身练习题2
  8. 毛哥的快乐生活(14) 界面全面升级赢得广泛赞誉
  9. spring的ioc是什么
  10. vba textbox2换行属性_“搭积木”编写VBA程序,真的非常简单容易