Comment convertir une matrice en niveaux de gris en une matrice RVB dans MATLAB?
rgbImage = grayImage / max(max(grayImage));
ou
rgbImage = grayImage / 255;
Qui est droit,et la raison?
source d'informationauteur user198729
Vous devez vous connecter pour publier un commentaire.
Pour convertir un image en niveaux de gris à un Image RVBil y a deux questions que vous avez à l'adresse:
double
type de données, le pixel de l'image les valeurs doivent être des nombres à virgule flottante dans la gamme de 0 à 1. Stocké comme unuint8
type de données, le pixel de l'image les valeurs doivent être des entiers compris dans l'intervalle de 0 à 255. Vous pouvez vérifier le type de données d'une image de la matrice à l'aide de la fonctionclass
.Voici 3 conditions typiques que vous pourriez rencontrer:
Pour convertir un
uint8
oudouble
image en niveaux de gris d'une image RVB de le même type de donnéesvous pouvez utiliser les fonctionsrepmat
ouchat
:Pour convertir un
uint8
image en niveaux de gris à unedouble
image RVB, vous devez les convertir àdouble
d'abord, puis à l'échelle par 255:Pour convertir un
double
image en niveaux de gris à uneuint8
image RVB, vous devriez échelle par 255 abord, puis de convertir àuint8
:Par définition, une image RVB a 3 canaux, ce qui implique que vous avez besoin d'une matrice à trois dimensions pour représenter l'image. Donc, la bonne réponse est:
Être prudent lors de la normalisation de
grayImage
. SigrayImage
estuint8
ensuite, vous allez perdre un peu de précision dans le255*grayImage/max(grayImage(:))
opération.Aussi, la normalisation de
grayImage
dépend des données. Dans votre question, vous avez utilisé deux méthodes:qui normalise les niveaux de gris de l'image tels que la valeur maximale de l'image est
1
etqui n'a de sens que si les valeurs de
grayImage
mensonge dans la0-255
gamme.Donc, cela dépend vraiment de ce que vous voulez faire. Mais, si vous voulez une image RVB, vous avez besoin de convertir votre canal unique matrice à un 3-canal de la matrice.