2014-12-24 25 views
0

我已经写了蛇的扫描顺序,但我不知道它是对还是错! 我首先将256 * 256矩阵转换为8 * 8矩阵,然后在这些小矩阵中进行蛇形扫描排序。 可能你请告诉我如何显示结果向量?Snake Scan Ordering

pic=rgb2gray(pic1); 
pic=uint8(pic); 
C = mat2cell(pic,[8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ],[8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8]); 
celldisp(C); 
% % % % % Converting the cell arrays to vectors in snake scan ordering form % % % % 
X=[]; 
n=0; 
for i=1:32; 
for j=1:32; 

    n=n+1; 
    C{i,j}=C{i,j}'; 
    Vn= reshape(C{i,j},1,[]); 
    Vn(5:8)=fliplr (Vn(5:8)); 
    Vn(13:16)=fliplr (Vn(13:16)); 
    X=[X Vn]; 
end 
end 
+1

Snake扫描实现起来非常简单 - 您只需切换每一行的方向 - 首先尝试一下,然后在遇到困难时再回来寻求帮助。 –

+0

好的谢谢。 “你只是替换每一行的方向”是什么意思? – pic

+0

你知道蛇的扫描是如何工作的吗?对于第一行,你从1迭代到n,第二行从n迭代到1,等等...... –

回答

1

对于一个矩阵M的蛇扫描排序:

M = M.'; %'// matlab works column major - so we first transform the matrix 
M(:, 2:2:end) = M(end:-1:1, 2:2:end); %// filp up-down every second column 
snake = M(:).'; %'// convert to a single vector. 

你可以看到here它是如何工作的。