• PUDN用户
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 33
    下载次数
  • 2009-11-22 21:23
    上传日期
该程序实现了对一幅数字图像在像素级别上按照ZigZag方式扫描排列的功能
zigzag.rar
  • zigzag.m
    2.3KB
内容介绍
function zigzagList=zigzag(matrix) %该函数使用zigzag方式扫描输入矩阵 % 1 2 3 4 5 % ----------------------------------------------------> Y方向 % 1 | 1--------2 3--------4 5 % | / / / / | % | / / / / | % | / / / / | % | / / / / | % 2 | 6 7 8 9 10 % | | / / / / % | | / / / / % | | / / / / % | | / / / / % 3 | 11 12 13 14 15 % | / / / / | % | / / / / | % | / / / / | % | / / / / | % 4 | 16-------17 18-------19 20 % | % V X方向 % % 算法:1,定义45度方向为一次扫描过程,如上图中所示为一个4*5矩阵,则一共有(4+5)-1 % 次扫描过程。 % 2,定义K为第k次扫描,则有 % K=1: (1,1) K=2: (1,2) (2,1) K=3: (3,1) (2,2) (1,3) % K=4: (1,4) (2,3) (3,2) (4,1) K=5: (4,2) (3,3) (2,4) (1,5) % K=6: (2,5) (3,4) (4,3) K=7: (4,4) (3,5) K=8: (4,5) % 3, 每次扫描得到的元素的索引值的和(x+y)等于K+1 % 4,当K为偶数时,zigzag扫描顺序与二次嵌套扫描矩阵元素而得到的符合要求的元素 % 的顺序相同;当K为奇数时,顺序正好相反。 % % matrix为输入矩阵,zigzagList为扫描后的行向量 rowLen=size(matrix,1); %矩阵行数 volLen=size(matrix,2); %矩阵列数 scanTimes=rowLen+volLen-1; %扫描组数 zigzagList=[]; %初始化zigzag序列 for k=1:scanTimes %扫描 subList=[]; index=1; for i=1:rowLen for j=1:volLen if(i+j==k+1) %找出符合第k次扫描要求的点 subList(index)=matrix(i,j); index=index+1; end end end if(mod(k,2)==0) %当K为偶数时,原序不变 zigzagList=cat(2,zigzagList,subList); else %当K为奇数时,反序 subList=subList(end:-1:1); zigzagList=cat(2,zigzagList,subList); end end
评论
    相关推荐