How can I change the colormap of an image?

114 ビュー (過去 30 日間)
BGranato
BGranato 2018 年 8 月 16 日
コメント済み: BGranato 2018 年 8 月 20 日
I have an image I saved with the pink colormap and I would like to display it with jet. How can I do that?
The way I managed to do it seems like a really round about way:
I = imread('myimage.png');
I = ind2rgb(rgb2gray(I),jet);
imshow(I)
  12 件のコメント
BGranato
BGranato 2018 年 8 月 17 日
Great, thank you! I found it on here somewhere, you guys are great! :)
Long story short, I saved thousands of images with pink but then realized some of the features are difficult to see, at least for some of the photos. So I wanted to change it to something else (jet) when I use imshow without having to re-do the whole extraction and saving process.
BGranato
BGranato 2018 年 8 月 20 日
Thank you everyone!

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

回答 (1 件)

Image Analyst
Image Analyst 2018 年 8 月 16 日
Try this:
[indexedImage, pinkMap] = imread('myimage.png');
imshow(indexedImage);
colormap(gca, jet(256)); % Ignore pink map and use jet instead.
colorbar(gca);
  2 件のコメント
BGranato
BGranato 2018 年 8 月 16 日
It didn't work, unfortunately, the image still appears as pink.
Image Analyst
Image Analyst 2018 年 8 月 17 日
As long as you saved the gray scale image and the colormap, you can simply recall the grayscale image and use a different colormap when displaying, basically using the gray levels as indexes. This is preferred because gray levels are ordered in units of increasing intensity, whereas arbitrary indexes are not in any kind of order with intensity. This is the preferred way and what I'd hoped you did in my answer.
If you, unfortunately, got an indexed image from an RGB image by calling rgb2ind(rgbImage, pink) then those indexes are probably unique/special to the pink colormap and you can't simply use a different colormap with that same indexed image because they don't have any special ordering with respect to gray level intensity. To illustrate, just call imshow(), colormap(gray(256)), and colorbar() and check out the colorbar - you will see it's basically a bunch of random gray colors because they are not ordered. You'd have to get back to the original rgb image by using ind2rgb(indexedImage, pink) and then convert to grayscale with rgb2gray(). Once it's in grayscale, you can then use any other colormap you want, like jet.
I hope that explains it better.

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

カテゴリ

Help Center および File ExchangeOrange についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by