本文共 772 字,大约阅读时间需要 2 分钟。
Zigzag扫描的Matlab实现
Zigzag扫描在图像处理中占有重要的位置,比如说在JPEG、MPEG压缩领域,数字图像置乱,数字水印中都有应用,由于学习需要,需要对图像进行Zigzag扫描,无奈网上的代码方法都是相同的,即使用一个已经定义好扫描顺序的矩阵去进行扫描,毫无通用性可言,所以自己通过Matlab实现了通用性的Zigzag扫描程序,现将代码贴上,以8x8的矩阵为例:
clear all;
clc; a=[1:64]; a=reshape(a,[8 8]); a=a’; %a是8x8的数组 下面开始zigzag扫描 b=zeros(1,64); i=1; j=1; k=1; while(i ~= 8 || j ~= 8) if i == 8 b(k)=a(i,j)-1; k=k+1; j=j+1; while(j~=8) b(k)=a(i,j)-1; k=k+1; i=i-1; j=j+1; end elseif j == 8 b(k)=a(i,j)-1; k=k+1; i=i+1; while(i~=8) b(k)=a(i,j)-1; k=k+1; i=i+1; j=j-1; end elseif(i == 1) b(k)=a(i,j)-1; k=k+1; j=j+1; while(j ~= 1) b(k)=a(i,j)-1; k=k+1; i=i+1; j=j-1; end elseif j == 1 b(k)=a(i,j)-1; k=k+1; i=i+1; while(i ~= 1) b(k)=a(i,j)-1; k=k+1; i=i-1; j=j+1; end end end b(k)=a(i,j)-1; b=reshape(b,[8 8]); b=b’;可能需要大家调一下缩进。
转载地址:http://hiyen.baihongyu.com/