Save pixel color value for indexed image (without image Processing Toolobx)

1 visualizzazione (ultimi 30 giorni)
With reference to Steve Eddins blog post on pixel colors: http://blogs.mathworks.com/steve/2006/02/10/all-about-pixel-colors-part-3/
Suppose I create his same image: A = magic(5);
Then I display it with imagesc and colormap HSV: imagesc(A); colormap(hsv);
Is there any way now (without using Image processing Toolbox) to save to a matrix the R,G,B triplets corresponding to the colors of each pixel as produced using HSV?
Thanks, Matteo
  1 Commento
Matteo Niccoli
Matteo Niccoli il 8 Feb 2012
Thanks Walter and Sean.
It will take me some time but i will try both suggestions and then will comment on results.
Matteo

Accedi per commentare.

Risposta accettata

Walter Roberson
Walter Roberson il 8 Feb 2012
apply that routine and then get() the CData property and that will be the RGB.
  6 Commenti
Matteo Niccoli
Matteo Niccoli il 12 Mar 2012
Sorry, it took me a bit to get back to this.
The example in my original question was a simple one, and with a reference to Steve's blog, so it was perfect to explain what I wanted to do (I often tent to be a bit vague, typical of non native speakers).
Sean, usually my images would have more than 256 elements, so I will have to look into the suggested method more carefully as I'm not familiar with either histc or numel.
With one of the maps I had in mind I was trying to get to the RGB colors after the application of an overlay with alpha as in this other post by Steve: http://blogs.mathworks.com/steve/2009/02/18/image-overlay-using-transparency/ . Walter's idea of using freezeColors worked in that case too, with a slight adaptation. I'm about to post an example on my blog and I will acknowledge the answer, then post it on this thread.
Matteo Niccoli
Matteo Niccoli il 9 Apr 2012
Hi Walter
Here's my blog post showing what I am doing (I used your suggestion and applied to color with shading)
http://mycarta.wordpress.com/2012/04/05/visualization-tips-for-geoscientists-matlab-part-ii/
Thanks again. And thanks to Sean as well.
Matteo

Accedi per commentare.

Più risposte (1)

Sean de Wolski
Sean de Wolski il 8 Feb 2012
Something like:
A = magic(5);
imagesc(A);
map = hsv;
colormap(map);
Av = A(:);
[~, bin] = histc(Av,linspace(min(Av),max(Av),min(numel(Av),size(map,1))));
mapp = permute(map,[1 3 2]);
rgb = reshape(mapp(bin,:,:),size(A,1),size(A,2),3);
maybe?
  3 Commenti
Sean de Wolski
Sean de Wolski il 9 Feb 2012
You missed a closing ')' on that line - just like the error message says.
Just copy and paste it.

Accedi per commentare.

Categorie

Scopri di più su Colormaps in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by