Bonjour à tous,
je cherche la fonction MATLAB qui permet de reconstituer une image couleur à partir des trois (03) matrices correspondantes aux composantes R, G, B. Si c possible vous me précisez le paramétrage de la fonction aussi.
merci d'avance
Bonjour à tous,
je cherche la fonction MATLAB qui permet de reconstituer une image couleur à partir des trois (03) matrices correspondantes aux composantes R, G, B. Si c possible vous me précisez le paramétrage de la fonction aussi.
merci d'avance
Bonsoir,
Que souhaites-tu faire avec ton image? Car je pense qu'avec les matrices des composantes R, G, B, il te suffit de les concaténer en une seule matrice pour l'afficher, l'enregistrer...
Bonne nuit,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 img=R; img(:,:,2)=G; img(:,:,3)=B;
Duf
Simulink & Embedded Coder
Au boulot : Windows 7 , MATLAB r2016b
A la maison : ArchLinux mais pas MATLAB
Ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part RGB = cat(3,R,G,B);
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Bon partons d'une image couleur initiale, j'ai lus l'image par "imread" ensuite j'ai fait l'exraction des 3 matrices R, G et B qui seront ensuite soumises à un certain traitement donnant comme résultat 3 nouvelles matrices R1, G1 et B1 par exemple. Ce que je cherche c'est la fonction qui permet de reconstruire l'image résultante correspondante aux 3 nouvelles matrices.
Merci
merci dut, mais peux tu me dire quelle est la fonction qui permet d'afficher l'image correspondante si c pas imshow(RGB), puisq j'ai supposé 3 matrices (ex: R=[100 0;123 12] G=[0 255;100 35] et B=[124 16;67 200]) et j'ai construit la matrice 3D codant l'image (I=cat(3,R,G,B)), et j'ai essayé ensuite d'afficher l'image correspondante par imshow(I). Le message d'erreur suivant s'affiche :
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ??? Error using ==> image TrueColor CData contains element out of range 0.0 <= value <= 1.0.
C'est normal.
Tu es passé de valeur codée en uint8 (initialement dans ton fichier image, voir la fonction IMFINFO) en valeur en classe Double (pour faire les calculs dans MATLAB).
L'erreur te dis que si les valeurs à afficher sont de classe Double, il faut qu'elles soient normalisées entre 0 et 1 (à la place de la plage [0 255] de ton image initiale). Comme ça on n'a pas à tenir compte de la classe des valeurs dans l'image initiale.
Dans ton cas, la normalisation se fait simplement en divisant les valeur de chaque composante par 255 :
L'autre solution, utile si tu souhaites enregistrer la nouvelle image dans le même format que la première, est de modifier la classe des valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 R = [100 0 ; 123 12]; G = [0 255 ; 100 35]; B = [124 16 ; 67 200]; R = R/255; G = G/255; B = B/255; RGB = cat(3,R,G,B); figure imshow(RGB,'initialmagnification','fit')
On peut aussi utiliser les fonctions IM2UINT8, IM2UINT16, IM2DOUBLE,... à la place de CAST
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 R = [100 0 ; 123 12]; G = [0 255 ; 100 35]; B = [124 16 ; 67 200]; R = cast(R,'uint8'); G = cast(G,'uint8'); B = cast(B,'uint8'); RGB = cat(3,R,G,B); figure imshow(RGB,'initialmagnification','fit')
Il faut aussi faire attention à ne pas tronquer les valeurs lors de la conversion vers une classe plus restrictive :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 >> a = 256 a = 256 >> cast(a,'uint8') ans = 255
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
1000 merci Dut, vous m'avez sauvé !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager