转自阿须数码,用MATLAB实现MPEG中的 ZIG-ZAG 扫描。觉得有点研究价值,实现的方法也很巧妙。
下面给一个参照MPEG提供的方法:
===
function b=zigzag(a)
% 这是参照 University of California 提供的 MPEG 源代码的基础上编制的。
% Copyright (c) 1995 The Regents of the University of California.
[n,m]=size(a);
if(n~=8 & m~=8)
error('Input array is NOT 8-by-8');
end
% Set up array for fast conversion from row/column coordinates to
% zig zag order. 下标从零开始,因为是从MPEG的C代码拷贝过来的
zigzag = [ 0, 1, 8, 16, 9, 2, 3, 10, ...
17, 24, 32, 25, 18, 11, 4, 5, ...
12, 19, 26, 33, 40, 48, 41, 34, ...
27, 20, 13, 6, 7, 14, 21, 28, ...
35, 42, 49, 56, 57, 50, 43, 36, ...
29, 22, 15, 23, 30, 37, 44, 51, ...
58, 59, 52, 45, 38, 31, 39, 46, ...
53, 60, 61, 54, 47, 55, 62, 63];
zigzag = zigzag + 1; % 下标加1,符合MATLAB的下标习惯
aa = reshape(a,1,64); % 将输入块变成1x64的向量
b = aa(zigzag); % 对 aa 按照查表方式取元素,得到 zig-zag 扫描结果
===
程序运行结果:
?a=magic(8)
a =
64 2 3 61 60 6 7 57
9 55 54 12 13 51 50 16
17 47 46 20 21 43 42 24
40 26 27 37 36 30 31 33
32 34 35 29 28 38 39 25
41 23 22 44 45 19 18 48
49 15 14 52 53 11 10 56
8 58 59 5 4 62 63 1
?b=zigzag(a)
b =
Columns 1 through 12
64 9 2 3 55 17 40 47 54 61 60 12
Columns 13 through 24
46 26 32 41 34 27 20 13 6 7 51 21
Columns 25 through 36
37 35 23 49 8 15 22 29 36 43 50 57
Columns 37 through 48
16 42 30 28 44 14 58 59 52 45 38 31
Columns 49 through 60
24 33 39 19 53 5 4 11 18 25 48 10
Columns 61 through 64
62 63 56 1
<!-- Message body ''"" -->
分享到:
相关推荐
在matlab中运行的zigzag扫描程序 文件类型:MATLAB M-file (.m) 打开方式:MATLAB Editor
总的来说,Zigzag编码是一种有效的图像数据组织策略,尤其适用于减少相邻像素的统计依赖性,而MATLAB实现则为这一过程提供了方便的编程工具。在实际应用中,结合其他压缩算法,可以实现高质量的图像压缩效果。
zigzag代码matlab 之字形 基于Matlab的JPEG算法中的Z字形扫描 之字形扫描 量化后,DC 系数与 63 个 AC 系数分开处理。 DC 系数是原始 64 个图像样本的平均值的度量。 由于相邻 8×8 块的 DC 系数之间通常存在很强的...
该程序实现了对一幅数字图像在像素级别上按照ZigZag方式扫描排列的功能
自己写的8*8矩阵zigzag反扫描的代码
总的来说,"Zig-Zag扫描与反扫描Matlab代码"是JPEG编码和解码流程中的重要组成部分,它们在提高图像压缩效率和减少存储空间方面起到了关键作用。通过理解和运用这些代码,我们可以更好地理解JPEG压缩机制,并能够...
描述提到“图形图象中dct变换中用到的反zigzag扫描原代码是基于matlab中的开发”,这暗示了这个压缩包内可能有一个MATLAB实现的反Zigzag扫描算法,用于DCT变换的逆过程,即从压缩的图像数据恢复原始图像。...
理解并掌握Zigzag算法的MATLAB实现对于理解图像压缩原理、优化压缩效率以及进行相关研究非常重要。它可以帮助你深入理解JPEG等压缩标准的工作机制,并可能启发你在其他数据压缩应用中寻找类似的优化策略。
zigzag代码matlab Image_compression-DCT 使用的技术: python 3 和 opencv 脚步: 1:应用DCT并执行量化 2:锯齿扫描 3:图像编码和比特流写入文件(Image.txt) 4:读取image.txt然后进行Image Decoding 5:构造...
适用任何矩阵的zigzag扫描,matlab
ZigZagscan 使用 Zig Zag Scan 将矩阵转换为向量。 % % VECT = ZIGZAGSCAN(MATRIX) 重新组织输入矩阵并将其输出为向量。 % % 例子: % X=[1 2 3 E6 x9] % % X = 3 E6 x9 % % ZigZagscan(X)= 4753689
至于文件"izigzag.m",这很可能是一个MATLAB脚本,用于实现Zigzag扫描算法。MATLAB是一种广泛使用的编程环境,特别适用于数值计算和数据分析。这个脚本可能包含函数或代码段,用于读取8x8矩阵,执行Zigzag扫描,并...
标题“zigzag scanning_zigzagmatlab_”暗示了这是一个用Matlab实现的Zigzag扫描工具。Matlab是一种广泛使用的数学和工程计算环境,它提供了丰富的函数和工具箱来处理各种数值问题,包括图像处理。 在Matlab中,`...
**基于DCT的JPEG图像压缩编码算法的MATLAB实现** JPEG(Joint Photographic Experts Group)是一种广泛应用于数字图像处理中的有损压缩标准,其核心是离散余弦变换(Discrete Cosine Transform, DCT)。在MATLAB...
这个“zigzag22.rar_zigzag”压缩包文件可能包含了一个名为“zigzag22.m”的MATLAB程序,该程序可能是用于演示或实现Zigzag编码算法的。下面将详细讨论Zigzag编码及其在图像处理中的应用。 Zigzag编码是一种扫描...
总结来说,这个MATLAB程序实现了JPEG图像压缩标准的关键步骤,包括DCT变换、量化、ZigZag扫描、Huffman编码以及解码过程,为理解和研究JPEG压缩提供了一个实际的示例。通过调整量化因子`q`,可以探索不同压缩级别下...
标题:"MATLAB实现JPEG图像压缩技术" 描述:本篇文章将深入解析如何利用MATLAB环境实现JPEG图像压缩,通过具体的代码示例,详细阐述了离散余弦变换(DCT)、量化以及熵编码等关键技术点。 ### 一、JPEG图像压缩...
该文档是关于JPEG图像压缩的MATLAB程序实现。JPEG(Joint Photographic Experts Group)是一种广泛使用的有损图像压缩标准...对于理解和实现JPEG压缩,深入理解DCT、量化、ZigZag扫描和Huffman编码等关键步骤至关重要。
上传的均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 ...4.3 Matlab程序定制 4.4 科研合作
由于JPEG标准允许使用不同的熵编码方法,因此实际的MATLAB实现可能会有所不同。 综上所述,**JPG图像压缩MATLAB代码**是一个实现JPEG压缩算法的过程,通过分块、DCT、量化、Zigzag扫描、游长编码和熵编码等步骤,...