二维行程编码(2D RLE)

二维行程编码和一维行程编码类似,只是具有相同字符的长度值表示的是包含相同字符的正方形的边长。即编码时,水平方向和垂直方向的符号数必须相同。下面通过例子加以说明。

  例子:

图7-10 二维行程编码

  编码过程:对于左边的8*8的图像,从左到右,从上到下,一行一行扫描、编码。

  遇到已经被编码的字符,要跳过,到下一个未被编码的字符。

  第一步: X方向有3个符号05,但Y方向只有2个符号05,所以,正方形的大小只能取2*2,即边长为2,编码为:05 02

  第二步: X方向有1个符号05,Y方向虽然有2个符号05,但正方形的大小只能取1*1,即边长为1,编码为:05 01

  第三步: X方向有1个符号10,Y方向有2个符号10,正方形的大小只能取1*1,即边长为1,编码为:10 01

  第四步: X方向有4个符号21,Y方向有6个符号21,正方形的大小取4*4,即边长为4,编码为:21 04

  第一行的编码已经结束,转到第二行。由于第二行的前二个字符也已经被编码,所以跳过,对第三个字符开始编码。

  第五步: X方向有1个符号05,Y方向有1个符号05,正方形的大小取1*1,即边长为1,编码为:05 01

  第六步: X方向有1个符号10,Y方向有7个符号10,正方形的大小取1*1,即边长为1,编码为:10 01

  由于第二行的后四个字符21已经被编码,所以跳过,转到第三行。

  第七步: X方向有4个符号10,Y方向有6个符号10,正方形的大小取4*4,编码为:10 04

  由于第三行的后四个字符21,和第四行的8个字符,第五行的前4个字符都已经被编码,所以跳过,转到第五行的后4个字符。

  第八步: X方向有2个符号21,Y方向有2个符号21,正方形的大小取2*2,编码为:21 02

  第九步: X方向有2个符号31,Y方向有4个符号21,正方形的大小取2*2,编码为:31 02

  由于第六行的8个字符都已经被编码,所以跳过,转到第七行。

  第十步: X方向有4个符号10,Y方向有2个符号10,正方形的大小取2*2,编码为:10 02

  下面按同样的方法编码,得:10 02, 15 01,31 01, 31 02, 15 01, 31 01

### 基于DCT的图像压缩流程及其IT实现 离散余弦变换(Discrete Cosine Transform, DCT)是一种用于信号处理和数据压缩的重要工具,在JPEG图像压缩中扮演着核心角色。以下是关于DCT的工作原理以及其在IT领域中的具体实现。 #### 1. 图像分块 原始图像通常会被分割成大小固定的子块,最常见的尺寸是8×8像素的小方块[^1]。这一过程是为了简化后续计算并提高效率。 #### 2. 应用DCT转换 每一个8×8像素块都会经历一次二维DCT运算,将空间域上的像素值转化为频率域上的系数。此步骤能够有效地分离出图像中的高低频成分[^4]。 公式如下所示: ```python import numpy as np def dct_2d(block): return np.fft.dct(np.fft.dct(block.T, norm='ortho').T, norm='ortho') ``` 上述代码片段展示了如何利用Python库`numpy`来完成二维DCT变换的操作。 #### 3. 量化处理 经过DCT之后产生的系数矩阵需进一步实施量化操作。这是通过除以一个预定义好的量化表里的数值达成的,从而减少不必要的细节信息,达到降低存储需求的目的。例如,对于高频部分采用较大的除数如99,使得原本处于[-127, 127]区间的数值缩小到接近[-1, 1]^[]。 #### 4. 编码阶段 最后一步是对量化的结果进行编码,常用的方法有行程长度编码(RLE)与哈夫曼编码(Huffman Coding)[^4]。这些技术旨在最小化最终文件体积的同时保持可接受的质量水平。 ```python from scipy.fftpack import dct # Example of applying DCT on a simple array input_data = np.array([[i*j for j in range(8)] for i in range(8)]) transformed_data = dct(dct(input_data.T, norm='ortho').T, norm='ortho') print(transformed_data) ``` 以上脚本演示了一个简单的例子,说明怎样运用SciPy包内的函数执行一维及二维DCT变化。 ### 结论 综上所述,基于DCT的图像压缩方案不仅具备较高的实用价值而且易于理解部署。它凭借出色的性能表现成为众多现代多媒体标准不可或缺的一部分。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值