最近做一个远程协助的系统,涉及了图像处理,本文讲讲图像编码--行程编码。图像编码方法有很多,而且比行程编码好的也不少,但由于水平有限,我主要是选用了无失真的行程编码。
一、图像编码必要性
虽然现在已经把真彩图像转化为256色图片,体积已经减少到1/3,但就一个1024×768桌面的来说也有768.8kB的体积,所以要进一步把图像压缩,编码。为了能达到更快的计算速度,降低图像发送端的负担,所以采用算法简单、运算速度快的行程编码方法编码。
二、行程编码介绍
行程编码的基本思想:将一行中颜色值相同的相邻象素用一个计数值和该颜色值来代替。例如aaabccccccddeee可以表示为3a1b6c2d3e。如果一幅图象是由很多块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人的。然而,该算法也导致了一个致命弱点,如果图象中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。
行程编码的可行性讨论:行程编码的压缩方法对于自然图片来说是不太可行的,因为自然图片像素点错综复杂,同色像素连续性差,如果硬要用行程编码方法来编码就适得其反,图像体积不但没减少,反而加倍。鉴于计算机桌面图,图像的色块大,同色像素点连续较多,所以行程编码对于计算机桌面图像来说是一种较好的编码方法。行程编码算法特点:有算法简单、无损压缩、运行速度快、消耗资源少等优点。
三、行程编码的实现
(1)、实现描述
我们要编码的是256色位图,而256色位图的调色板里的数据连续性很差,所以我们对调色板后面的图像数据进行编码,调色板数据不纳入编码内容。另外设最大行程为255,一个字节。
一、图像编码必要性
虽然现在已经把真彩图像转化为256色图片,体积已经减少到1/3,但就一个1024×768桌面的来说也有768.8kB的体积,所以要进一步把图像压缩,编码。为了能达到更快的计算速度,降低图像发送端的负担,所以采用算法简单、运算速度快的行程编码方法编码。
二、行程编码介绍
行程编码的基本思想:将一行中颜色值相同的相邻象素用一个计数值和该颜色值来代替。例如aaabccccccddeee可以表示为3a1b6c2d3e。如果一幅图象是由很多块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人的。然而,该算法也导致了一个致命弱点,如果图象中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。
行程编码的可行性讨论:行程编码的压缩方法对于自然图片来说是不太可行的,因为自然图片像素点错综复杂,同色像素连续性差,如果硬要用行程编码方法来编码就适得其反,图像体积不但没减少,反而加倍。鉴于计算机桌面图,图像的色块大,同色像素点连续较多,所以行程编码对于计算机桌面图像来说是一种较好的编码方法。行程编码算法特点:有算法简单、无损压缩、运行速度快、消耗资源少等优点。
三、行程编码的实现
(1)、实现描述
我们要编码的是256色位图,而256色位图的调色板里的数据连续性很差,所以我们对调色板后面的图像数据进行编码,调色板数据不纳入编码内容。另外设最大行程为255,一个字节。
即编码前文件与编码后文件结构对比:
实现代码:
#include "windows.h"
#include <stdlib.h>
/******************************