more than 256 colors in colormap no longer working

I wondered if anyone has seen this before?
if i use: figure; imagesc(randn(256)) colormap(jet(256))
the image is displayed as i would expect with 256 graduations in the jet color scheme.
but if i change to colormap(jet(300)) it starts to mess up the color map and if increase higher, I end up, eventually, with one colour in the color map.
This used to work fine, and still works on my linux versions of matlab (i think it's 2011a), but on the 64 bit version on windows (both 2011a and 2012a on windows 7) it messes up.
This is causing some grief as i have some plotting functions that use custom colormaps with a large number of colors which no longer work.
anyone any idea why?
Cheers
Richard

2 件のコメント

Jan
Jan 2012 年 9 月 6 日
Does this concern e.g. http://www.mathworks.com/matlabcentral/fileexchange/37971-colormaps-with-higher-bit-depth, which has been developped under 2012a?
Peter
Peter 2013 年 10 月 14 日
The linked page that contained the answer has somehow been taken offline. Would anyone still have that answer?

サインインしてコメントする。

回答 (2 件)

Doug Hull
Doug Hull 2012 年 9 月 6 日

1 投票

Currently, there is a 256 row colormap limit on the PC platform. The workaround is to manually reduce the colormap length, by consolidating colors that are "close enough" into one color. The Image Processing Toolbox contains routines for accomplishing this. Our developers are aware of this limitation and are investigating other possible workarounds.

1 件のコメント

Richard Smith
Richard Smith 2012 年 9 月 6 日
By PC platform do you mean Windows? PC means 'personal computer' to me, so I'm confused as to where the restricition lies?
if it is, then my only option at the moment is to run my old code on linux, which is annoying but at least possible.
Thanks

サインインしてコメントする。

Richard Smith
Richard Smith 2012 年 10 月 10 日

1 投票

thanks for comments, the solution was in the comments of the link provided by Jan Simon above.
The issue seems to arise from using the default renderer, using the opengl renderer for windows instead of the default worked a treat. To change the renderer for a particular figure just type;
set(gcf,'renderer','OpenGL')
obviously this could cause more issues if your gfx card driver doesn't play nicely with opengl, but it worked for me.

2 件のコメント

Dennis
Dennis 2014 年 1 月 3 日
Thanks Richard Smith! Your workaround works for me as well (R2013b 64bit). I do think matlab should solve this issue with their default renderer...
John Ebersole
John Ebersole 2015 年 2 月 6 日
This is great! I've been looking for a while for this.
I perform gamma correction whenever I plot images, so for a PC with a gamma of 2.2, the following looks great:
imagesc(myimage); axis image; colormap(gray(8192).^(1/2.2)); set(gcf,'renderer','OpenGL')
If I only use 256 instead of 8192, deep grays turn black too easily.

サインインしてコメントする。

カテゴリ

タグ

質問済み:

2012 年 9 月 5 日

コメント済み:

2015 年 2 月 6 日

Community Treasure Hunt

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

Start Hunting!

Translated by