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位照片)不太可能有用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dylan55_you

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值