转自阿须数码,用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)
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, ...
zigzag = zigzag + 1;
aa = reshape(a,1,64); % 将输入块变成1x64的向量
b = aa(zigzag); % 对 aa 按照查表方式取元素,得到 zig-zag
扫描结果
===
?a=magic(8)
a =
?b=zigzag(a)
b =
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=158885