convert image matrix to row vector

21 visualizzazioni (ultimi 30 giorni)
Samaa Yasser
Samaa Yasser il 7 Apr 2021
Commentato: Samaa Yasser il 8 Apr 2021
i have an image size 256x256 and i want to Convert the image matrix to a row vector with length same size , how i can got it please?
  2 Commenti
DGM
DGM il 7 Apr 2021
What exactly do you mean by "length of same size". Length isn't size.
You can use reshape() to reshape the array, but it will be [1 65536].
A=reshape(A',1,[]); % if you want rows
If you're expecting a [1 256] vector, then you'll have to decide how exactly you want to reduce the image conceptually (e.g. maybe you want directional mean or min or max; maybe you just want to extract a single row from the image)
Samaa Yasser
Samaa Yasser il 7 Apr 2021
first thank you for your help..
i want to generate a row vector from image pixel.
so i want to calculate the total number of the original image pixels first, then Convert the image matrix of size MN for example to a row vector with length NM , inorder to get random permutation of this row vector, so can you help

Accedi per commentare.

Risposte (2)

David Hill
David Hill il 7 Apr 2021
yourMatrix(:)';

DGM
DGM il 7 Apr 2021
Modificato: DGM il 7 Apr 2021
Consider a 3x3 test image:
A=repmat(1:3,[3 1])
A =
1 2 3
1 2 3
1 2 3
The line I suggested:
A=reshape(A',1,[]); % if you want to sample from rows
will take the rows of A and end-concatenate them into one long row vector of size 1x9. No need to calculate numel(A).
A =
1 2 3 1 2 3 1 2 3
If instead you were to do
A=reshape(A,1,[]); % if you want to sample from cols
or
A=A(:)'; % David's suggestion
you would still get the same output size, but you would be sampling columnwise instead.
ans =
1 1 1 2 2 2 3 3 3
If the ordering of the pixels doesn't matter, you could do it either way.

Community Treasure Hunt

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

Start Hunting!

Translated by