Massimo e minimo livelli di grigio immagine b/n

di Anonimizzato21080 il
10 risposte
Buonasera, questa è la mia prima domanda nel forum, spero che qualcuno mi aiuti.

Data una qualsiasi immagine in bianco e nero io vorrei conoscere i valori esatti del massimo e del minimo dei livelli di grigio che si vedono creando l'istogramma relativo all'immagine.

Grazie in anticipo.

10 Risposte

  • Poiche' un'immagine e' semplicemente una matrice (righe x colonne) di quadratini (pixel) ed ogni quadratino ha esattamente un valore, che sullo schermo viene visualizzato con un livelli di grigio, ecco che trovare il massimo ed il minimo e' banale: basta cercare il max ed il min in una lista di numeri.
  • migliorabile ha scritto:


    Poiche' un'immagine e' semplicemente una matrice (righe x colonne) di quadratini (pixel) ed ogni quadratino ha esattamente un valore, che sullo schermo viene visualizzato con un livelli di grigio, ecco che trovare il massimo ed il minimo e' banale: basta cercare il max ed il min in una lista di numeri.
    Buongiorno, potresti dirmi gentilmente quali istruzioni devo usare in matlab per ottenerlo? Non ho ben capito come fare. Grazie
  • Se la tua immagine è A ti basta fare
    
    max(max(A))
    min(min(A))
    
    in questa maniera ha il massimo e il minimo. L'istogramma non fa altro che dirti quanti pixel ci sono che assumono determinati valori di grigio.
  • Saponetta ha scritto:


    Se la tua immagine è A ti basta fare
    
    max(max(A))
    min(min(A))
    
    in questa maniera ha il massimo e il minimo. L'istogramma non fa altro che dirti quanti pixel ci sono che assumono determinati valori di grigio.
    Grazie della risposta.

    Ho eseguito questi comandi, vanno bene?


    Quindi il massimo è 255?
  • Se devi creare l'istogramma dell'immagine, puoi usare la funzione imhist .
  • La tua immagine non è in bianco e nero però, stai attenta. Il comando ti ha restituito il massimo per ogni livello di colore, Red-Green-Blue.
  • Saponetta ha scritto:


    La tua immagine non è in bianco e nero però, stai attenta. Il comando ti ha restituito il massimo per ogni livello di colore, Red-Green-Blue.
    In realtà la mia è un immagine in bianco e nero da satellite quindi presumo particolare, lei come ha capito che non lo è ?

    In ogni modo per favore come dovrei risolvere?

    Mi scusi, davvero non ho capito.
  • In realtà la mia è un immagine in bianco e nero da satellite quindi presumo particolare, lei come ha capito che non lo è ?

    In ogni modo per favore come dovrei risolvere?

    Mi scusi, davvero non ho capito
    Allora, evidentemente, ti mancano le basi. Ti spiego bene cosa hai fatto con max(max(Im)).
    max(A)
    se A è una matrice mxn (m righe, n colonne) restituisce il massimo per ogni colonna, quindi un vettore 1xn; applicando di nuovo il max, avremo il massimo assoluto. Questo però è vero nel caso di una matrice bidimensionale. Nel tuo caso abbiamo avuto un vettore 1x1x3, questo perché Im, nel tuo caso, è una matrice tridimensionale, e quindi fare
    max(max(Im))
    ti ha restituito il massimo per il primo livello (mxnx1), il massimo del secondo (mxnx2) e del terzo livello, dove ho Im è una matrice mxnx3.
    Quando fai
    Im = imread('NomeFile');
    hai una matrice mxn (bidimensionale) se l'immagine è in bianco e nero, mxnx3 se è a colori. Questo perché le immagini a colori sono composta da un livello di Rosso, uno di Verde e l'altro di Blu. Ogni livello è una scala di grigi, perché ad esempio il livello di rosso mxnx1 è una matrice bidimensionale.
    Se hai altri dubbi o non è chiaro qualcosa chiedi pure. Cerca però di cercare di recuperare queste basi, che vanno oltre Matlab e che sono alla base della rielaborazione di immagini. Ti basta una piccola ricerca su Google.
  • Saponetta ha scritto:


    In realtà la mia è un immagine in bianco e nero da satellite quindi presumo particolare, lei come ha capito che non lo è ?

    In ogni modo per favore come dovrei risolvere?

    Mi scusi, davvero non ho capito
    Allora, evidentemente, ti mancano le basi. Ti spiego bene cosa hai fatto con max(max(Im)).
    max(A)
    se A è una matrice mxn (m righe, n colonne) restituisce il massimo per ogni colonna, quindi un vettore 1xn; applicando di nuovo il max, avremo il massimo assoluto. Questo però è vero nel caso di una matrice bidimensionale. Nel tuo caso abbiamo avuto un vettore 1x1x3, questo perché Im, nel tuo caso, è una matrice tridimensionale, e quindi fare
    max(max(Im))
    ti ha restituito il massimo per il primo livello (mxnx1), il massimo del secondo (mxnx2) e del terzo livello, dove ho Im è una matrice mxnx3.
    Quando fai
    Im = imread('NomeFile');
    hai una matrice mxn (bidimensionale) se l'immagine è in bianco e nero, mxnx3 se è a colori. Questo perché le immagini a colori sono composta da un livello di Rosso, uno di Verde e l'altro di Blu. Ogni livello è una scala di grigi, perché ad esempio il livello di rosso mxnx1 è una matrice bidimensionale.
    Se hai altri dubbi o non è chiaro qualcosa chiedi pure. Cerca però di cercare di recuperare queste basi, che vanno oltre Matlab e che sono alla base della rielaborazione di immagini. Ti basta una piccola ricerca su Google.

    Ok, grazie per il chiarimento, ma nel mio caso quale istruzioni dovrei usare in matlab?

    Sto cercando la teoria relativa ma in rete è facile disperdersi.

    Spero tanto che lei mi aiuti a velocizzare i tempi.
  • Se vuoi solo avere il valore massimo, niente di diverso. Semplicemente hai un'immagine che non è in bianco e nero. Se vuoi portare in bianco e nero il comando è
     Im = rgb2gray(Im); 
    .
Devi accedere o registrarti per scrivere nel forum
10 risposte