图像压缩算法动态规划c语言,图像压缩算法  动态规划

图片在计算机存储的是图片中的一个一个像素,也就是像素的灰度值。灰度值的范围是0~255。有灰白图像和彩色图像,它们每个像素的通道数量不同。灰白图像是单通道的,而彩色图像是3个通道的(BGR),也就是彩色图像的每个像素都存放三个灰度值。

现在图像压缩问题是这样的:有一些像素序列{p1,p2,……,pn},当然每个像素值都是0到255之间的。要求对这样的像素序列进行分段,使得最后所需要的存储空间最小。比如有些连续的像素点用4位进行存储就可以,那么就可以将这些像素点分在一段中,就没有必要把这些像素点用8位来存储,这样不就节省了一些存储空间嘛。

可以将问题详细描述分析如下:如果最优的结果是将像素序列分成m段(0<=m<=n),假设每段有l[i]个像素点,我们限定0<=l[i]<=255,那么l[1]+l[2]+……+l[m]=n。所有段的像素点的数量加起来就等于总的像素数。第i段存储l[i]这个值需要8位(log(255)向上取整),每段每个像素的存储位数肯定是一样的(否则这些像素不可能分配在同一段中),用b[i]来表示,每段的存储位数一定是小于等于8的整数,因为灰度值的范围是[0,255],那么存储b[i]这个值呢?可想而知,一定是最多需要3位(log(8)向上取整)。

也就是每段不管有多少个像素点,最起码得存储l[i]和b[i]这两个值,也就是说每段最少需要8+3=11位。当然,每段中有l[i]个像素点,每个像素点的灰度值用b[i]位存储,所以需要l[i]*b[i]位存储每段的像素点的灰度值,再加上上面分析的11位,每段总共需要的存储空间就是l[i

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值