2015-09-25 2 views
-1

Je voudrais lire une image en Matlab et le convertir en une image indexéeMatlab: le chargement d'une image indexée

Voici mon code:

[I map] = imread('image.tif'); 
I = rgb2ind(I, map); 

figure(1); 
imagesc(I);axis('equal'); 

Quand je viens de lire l'image, il semble bien (mais c'est une image RGB). Puis je le convertis en une image indexée, j'ai l'image suivante: enter image description here

Quel est le problème avec ce morceau de code?

+0

Quel est le problème avec l'image? – Dan

+0

Ce n'est pas l'image originale. L'image originale est une image d'une personne. – user2738748

+0

Ce qui est une information plutôt essentielle à la question. Vous devriez ajouter l'image originale. – Dan

Répondre

1

Votre sortie est le résultat d'une mauvaise utilisation des fonctions matlab.

%read a non-indexed image. I is your RGB image, map is empty 
[I,map] = imread('board.tif'); 
%rgb2ind has two output arguments, get both, otherwise your unchanged code 
[I2,map2] = rgb2ind(I, map); 
%Now I2 is a indexed image and map2 the corresponding map 

Maintenant, vous affichez votre image I2 indexée sans appliquer une palette de couleurs:

imagesc(I2) 

Votre image contient des valeurs 1: n et ColorMap jet est activé, vous obtenez un arc en ciel.

possibilités pour afficher l'image correcte utilisent la carte:

imagesc(I2) 
colormap(map2) 

ou l'affichage I, qui est l'image RVB d'origine

imagesc(I) 
2

Votre syntaxe est légèrement désactivée. Cela devrait fonctionner:

[I, map] = imread('autumn.tif'); 
[I, map] = rgb2ind(I, map); 

figure(1); 
image(I); 
colormap(map); 
axis('equal'); 

Voir la documentation de rgb2ind.