Visualizzare immagine da valori RGB

di il
5 risposte

Visualizzare immagine da valori RGB

Salve a tutti

devo visualizzare un'immagine a partire dalle informazioni RGB di ogni pixel
che ho memorizzato in 3 vettori R G e B.

ho creato questa function Matlab che accetta in input i 3 vettori

function rgb( R,G,B )
N=input('DIGITA N:');
M=input('DIGITA M:');

A=zeros(M,N,3);
 
 Z=1;
 for i=1:M
       for j=1:N
           A(i,j,1)=R(Z);
           A(i,j,2)=G(Z);
           A(i,j,3)=B(Z);            
            Z=Z+1;
       end
 end

imshow(A);
imwrite(A, 'modello.bmp', 'bmp');
end
Con questa funzione con valori di RGB normalizzati in (ossia r+g+b=1)
creava un'immagine colorata che non era quella che volevo, perchè a me servono i valori di rgb non normalizzati.

Cosi ora ho assegnato ai 3 vettori i corrispondenti valori non normalizzati
ma con questa funzione ottengo un'immagine solo bianca
perchè?cosa ho sbagliato?
qualcuno può aiutarmi ?
Grazie

5 Risposte

  • Re: Visualizzare immagine da valori RGB

    Generalmente i valori dei singoli canali di un'immagine sono nel range [0.0,1.0] (float) oppure [0,255] (byte o int) (eccezionalmente [0,65535]).
    Quella che tu chiami normalizzazione mi sa che e' una svista.
  • Re: Visualizzare immagine da valori RGB

    migliorabile ha scritto:


    Generalmente i valori dei singoli canali di un'immagine sono nel range [0.0,1.0] (float) oppure [0,255] (byte o int) (eccezionalmente [0,65535]).
    Quella che tu chiami normalizzazione mi sa che e' una svista.
    avevo i valori inizialmente in [0.0,1.0] e l'immagine compariva con i colori non giusti
    mi è stato chiesto di calcolarmi i valori in [0,255] solo che ora la function mi restituisce un' immagine bianca
  • Re: Visualizzare immagine da valori RGB

    Se e' bianca, vuol dire che interpreta i valori associati ai 3 canali come valore massimo cioe' 1.0 (nota il punto) o 255.

    Devi leggere bene la documentazione.
    In generale, le librerie ragionano in questo modo:

    se e' un numero in floating point, allora il range supportato e' [0.0,1.0] PER CANALE

    se e' un numero intero, allora il range supportato e' [0,255] sempre PER CANALE.

    Quindi, 255.0 (un numero con VIRGOLA) viene limitato a 1.0!
    Se R,G e E valgono 1.0, il colore e' il BIANCO.
  • Re: Visualizzare immagine da valori RGB

    migliorabile ha scritto:


    Se e' bianca, vuol dire che interpreta i valori associati ai 3 canali come valore massimo cioe' 1.0 (nota il punto) o 255.

    Devi leggere bene la documentazione.
    In generale, le librerie ragionano in questo modo:

    se e' un numero in floating point, allora il range supportato e' [0.0,1.0] PER CANALE

    se e' un numero intero, allora il range supportato e' [0,255] sempre PER CANALE.

    Quindi, 255.0 (un numero con VIRGOLA) viene limitato a 1.0!
    Se R,G e E valgono 1.0, il colore e' il BIANCO.
    i valori che ho in RGB sono del tipo
    valori R
    123
    121
    152
    122
    161
    143
    132
    132
    129
    127
    127
    157
    138
    94
    ....

    però non so perchè mi appare bianca
    i comandi matlab sono giusti?
  • Re: Visualizzare immagine da valori RGB

    namelessg ha scritto:


    però non so perchè mi appare bianca
    i comandi matlab sono giusti?

    migliorabile ha scritto:


    Quindi, 255.0 (un numero con VIRGOLA) viene limitato a 1.0!
Devi accedere o registrarti per scrivere nel forum
5 risposte