Azzera filtri
Azzera filtri

i am unable to zigzag scan image

4 visualizzazioni (ultimi 30 giorni)
juveria fatima
juveria fatima il 28 Mar 2018
Commentato: juveria fatima il 31 Mar 2018
  6 Commenti
Walter Roberson
Walter Roberson il 31 Mar 2018
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 il 31 Mar 2018
thank you very much, it worked.

Accedi per commentare.

Risposte (1)

Guillaume
Guillaume il 28 Mar 2018
Modificato: Guillaume il 28 Mar 2018
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 Commenti
Walter Roberson
Walter Roberson il 30 Mar 2018
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 il 30 Mar 2018
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]

Accedi per commentare.

Categorie

Scopri di più su Random Number Generation in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by