Opencv学习----位图(bitmap)原理详解五---位图存储
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)原理详解五---位图存储相关推荐
- Opencv学习----位图(bitmap)原理详解三---位图解析度
2.3 解析度 分辨率是位图的一个属性,在视觉上查看或打印位图时是必需的,因为像素本身没有明确的尺寸.分辨率通常以每英寸像素数指定,但可以是任何其他测量单位.由于历史原因,大多数打印过程保留每英寸像素 ...
- 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))
机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...
- [从零学习汇编语言] - 转移指令原理详解
文章目录 前言 一.转移指令原理 1.1 计算机如何识别数据和指令 1.2 转移指令原理 1.3 转移分类 1.3.1 转移行为分类 1.3.2 转移指令分类 二.操作符详解 2.1 offset 2 ...
- 十二、【数据结构】位图(bitmap)的详解与实现
一.定义 --概念部分参考http://www.iteblog.com/archives/148 位图法就是bitmap的缩写.所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据, ...
- OpenCV学习(21) Grabcut算法详解
grab cut算法是graph cut算法的改进.在理解grab cut算之前,应该学习一下graph cut算法的概念及实现方式. 我搜集了一些graph cut资料:http://yunpan. ...
- java多线程学习-java.util.concurrent详解(五) ScheduledThreadPoolExecutor
转载于:http://janeky.iteye.com/blog/769965 我们先来学习一下JDK1.5 API中关于这个类的详细介绍: "可另行安排在给定的延迟后运行命令,或者定期执行 ...
- 网卡重启影响nfs吗_NFS原理详解
PS:哈哈,这篇的篇幅真的非常的长.要看完真的要有很强的耐心那.我自己写也快写吐了呢. [ATong学习linux]NFS原理详解 一.NFS介绍 1)什么是NFS 它的主要功能是通过网络让不同的机器 ...
- 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)
论文原文:[Yifan Wu, George Tucker, Ofir Nachum: "Behavior Regularized Offline Reinforcement Learnin ...
最新文章
- Nodejs教程30(完结):PM2入门
- 反转 鼠标_梦幻西游:剧情反转?挖图挖出环装,在晶清加持下3000W到手
- 教怎样写好一份“漏洞报告”
- mac你没有权限打开应用程序_苹果mac卡顿怎么解决呢?轻松几招让你Mac流畅如新
- rabbitmq-消息追踪rabbitmq_tracing
- [转]XHTML+CSS兼容性解决方案小集
- jvm 调优 2020.09.07
- C语言员工信息管理系统
- dev-cpp的安装教程
- 在家参加OCP考试(MySQL OCP和Oracle OCP)
- CSS在线字体库,外部字体的引用方法@font-face
- 《科技日报》:神州控股、神州信息、神州数码集团携手合力打造 “神州信创云”正式启航
- 将https安全证书导入jdk中
- matlab主成分分析散点图_基于matlab的主成分分析与因子分析
- microbit python_刘鹏涛老师用Microbit 学Python系列教程
- java做一个万年历和闹钟,数字电子钟毕业设计源程序(加万年历和闹钟功能)...
- 笔记本电脑卡顿怎么办?教你一键重装系统让电脑“复活”
- face_morpher
- Java猜数小游戏、c语言猜数小游戏
- 测试wifi 的手机软件,WiFi性能测试
热门文章
- AcWing 1022. 宠物小精灵之收服
- 注意我的博客名是David__Ding
- 2023.3.29-2023.04.04 巽风答题答案大全
- python-用PyQt5实现一个简单的向喜欢女生告白软件(代码实现+py文件打包成exe文件)
- 无处 不在的无线智能——6g 的关键驱动与研究挑战_再谈6G
- oversample upsample
- 1250 - 2022年春季《算法分析与设计》热身练习题2
- 毛哥的快乐生活(14) 界面全面升级赢得广泛赞誉
- spring的ioc是什么
- vba textbox2换行属性_“搭积木”编写VBA程序,真的非常简单容易