[SciPy-User] label2rgb equivalent

Zachary Pincus zachary.pincus@yale....
Sat Apr 3 10:39:50 CDT 2010


>
> Hi all,
>
> Is there an equivalent to the Matlab function label2rgb in scipy or  
> numpy ?
>
> Regards,
> Anil


matplotlib might have such a function, but numpy fancy indexing makes  
this almost a one-liner:

Let "labels" be your label array (of arbitrary shape); assume "colors"  
is an Nx3 array of rgb triples, where N > labels.max().

Then:
colors[labels]

gives you an array of the same shape as labels except that it has an  
extra dimension at the end containing the RGB triples. For example:
labels = numpy.random.random_integers(10, size=(10,10))
colors = numpy.arange(75).reshape((25,3))
labeled = colors[labels]
labeled.shape # (10,10,3)

you could use numpy.rollaxis to change which dimension the RGB data is  
in:
numpy.rollaxis(labeled, 2).shape # (3, 10, 10)

you could also have colors be a structured array...

As far as making the "colors" array, there are many strategies. You  
could use random integers, or make a colormap (matplotlib has some  
tools, or you could roll your own easily enough.

Zach


More information about the SciPy-User mailing list