i am unable to zigzag scan image

7 次查看(过去 30 天)
  6 个评论
Walter Roberson
Walter Roberson 2018-3-31
Why are you reshaping Red into a 3D array? Why are you reshaping it at all? Why not just ZigZagscan(red) ?
juveria fatima
juveria fatima 2018-3-31
thank you very much, it worked.

请先登录,再进行评论。

回答(1 个)

Guillaume
Guillaume 2018-3-28
编辑:Guillaume 2018-3-28
You cannot copy the body of a function into your code and expect it to work like a script. The function needs to be in its own m-file which you call from your script. Hence your script should only be:
X=imread('lena1.jpg');
imshow(X);
v = ZigZagScan(X);
Saying that, this ZigZagScan function is not particularly well written and assumes the input is a square matrix.
Below, a simpler code. Note this is also a function, so you'll have to put it into its own m-file named antizigzag.m
function v = antizigzag(X)
%author: G. de Sercey, University of Brighton
%BSD license
%input: X a 2D matrix, not necessarily square
%output: v a row vector of the anti-diagonals of the matrix scanned in a zigzag fashion
validateattributes(X, {'numeric'}, {'2d'});
X = fliplr(X); %flip X so the anti-diagonals become diagonals
v = arrayfun(@(d) diag(X, d), size(X, 2)-1:-1:1-size(X, 1), 'UniformOutput', false); %get the diagonals
v(1:2:end) = cellfun(@flip, v(1:2:end), 'UniformOutput', false); %flip odd diagonals
v = vertcat(v{:}).'; %concatenate the whole lot in a row vector
end
  7 个评论
Walter Roberson
Walter Roberson 2018-3-30
jpeg images are 3 dimensional more than 99.9% of the time. You cannot apply zigzag or anti-zigzag routines to them as a whole: you can only apply it to one channel at a time, or else reshape the whole thing as if it were 2D and process the reshaped version. Or convert to grayscale and work with that.
juveria fatima
juveria fatima 2018-3-30
as u said to apply on one channel i tried
am getting this error
Error in ZigZagscan (line 41)
Vect=zeros(1,N*N);
Error in zz (line 7)
Vect= ZigZagscan(X);
this way am applying one channel to zigzag scan
A= imread('lena1.jpg');
Red = A(:,:,1);
X = reshape(uint8(Red), [1 size(Red)]);
Vect= ZigZagscan(X);
i am unable to find the error please help me out
this is working very fine if i input this
X=[1 2 3
4 5 6
7 8 9]

请先登录,再进行评论。

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by