zoukankan      html  css  js  c++  java
  • ZIGZAG扫描的MATLAB实现

    2004年10月29日 18:29:00

    转自阿须数码,用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          61    60          57
           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
           58    59          62    63     1

    ?b=zigzag(a)
    b =
      Columns 1 through 12
        64             55    17    40    47    54    61    60    12
      Columns 13 through 24
        46    26    32    41    34    27    20    13          51    21
      Columns 25 through 36
        37    35    23    49       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          11    18    25    48    10
      Columns 61 through 64
        62    63    56     1



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=158885


  • 相关阅读:
    BZOJ.1468.Tree(点分治)
    BZOJ.1935.[SHOI2007]Tree园丁的烦恼(CDQ分治 三维偏序)
    BZOJ.4319.[cerc2008]Suffix reconstruction(后缀数组 构造 贪心)
    BZOJ.3262.陌上花开([模板]CDQ分治 三维偏序)
    洛谷.3374.[模板]树状数组1(CDQ分治)
    BZOJ.4566.[HAOI2016]找相同字符(后缀数组 单调栈)
    POJ.3145.Common Substrings(后缀数组 倍增 单调栈)
    POJ.2774.Long Long Message/SPOJ.1811.LCS(后缀数组 倍增)
    POJ.1743.Musical Theme(后缀数组 倍增 二分 / 后缀自动机)
    UOJ.35.[模板]后缀排序(后缀数组 倍增)
  • 原文地址:https://www.cnblogs.com/feisky/p/1586541.html
Copyright © 2011-2022 走看看