Funzioni > Elaborazione immagini > Modifica di immagini > Esempio: istogrammi unidimensionali e bidimensionali
Esempio: istogrammi unidimensionali e bidimensionali
Utilizzare le funzioni imhist, imhist2 e hist2d per generare istogrammi unidimensionali o bidimensionali.
Per informazioni sull'utilizzo di questo esempio, fare riferimento a Esempi di elaborazione delle immagini.
imhist
Questa funzione genera un istogramma per gli elementi della matrice M suddividendo l'intervallo di intensità in n barre. Ogni barra contiene il numero di pixel adatto per il relativo intervallo di livelli di intensità. Se n = 256, ad esempio, è presente una barra per ogni possibile livello di intensità in un'immagine in scala di grigi a 8 bit. Se sono presenti più di 256 barre, i livelli di intensità vengono suddivisi in barre nel modo indicato di seguito.
Fare clic per copiare questa espressione
L'etichettatura delle barre inizia da 0. Se sono presenti più di 256 barre, le dimensioni delle barre sono minori di 1.
1. Definire una piccola matrice per determinare la relazione tra i valori e l'aspetto dell'istogramma.
Fare clic per copiare questa espressione
2. Definire il numero di barre per applicare la funzione imhist alla matrice definita in precedenza.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Poiché n = 255, ognuno dei 256 livelli di intensità ottiene una barra propria. Come è possibile osservare nella matrice P, l'unica barra che deve includere più di un conteggio è la 150.
Fare clic per copiare questa espressione
3. Tracciare un istogramma dei livelli di intensità.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
4. Impostare n su un numero inferiore, ad esempio 5, e osservare la differenza.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Poiché n = 5, i 256 livelli di intensità devono essere suddivisi in 5 barre separate. I valori di intensità compresi tra 0 e 256/5 sono inclusi nella barra 0, i valori compresi tra 256/5 e 512/5 sono inclusi nella barra 1 e così via.
Fare clic per copiare questa espressione
Come è possibile osservare nella matrice P e nell'istogramma precedente, i valori di intensità vengono distribuiti nel modo indicato di seguito.
0, 30 e 40 sono inclusi nella barra 0 (0-51)
Nessun valore di intensità è incluso nella barra 1 (52-103)
120 e tre conteggi di 150 sono inclusi nella barra 2 (103-154)
200 è incluso nella barra 3 (154-205)
240 è incluso nella barra 4 (205-256)
5. Utilizzare la funzione READ_IMAGE per leggere un'immagine contenente spazi vuoti.
Fare clic per copiare questa espressione
(pattern.bmp)
6. Applicare la funzione imhist all'immagine.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Lo spazio bianco (valore di intensità = 255) nell'immagine viene visualizzato come picco grande a destra. È possibile visualizzare il nero e altre tonalità di grigio distinte in altre barre.
7. Calcolare il numero di elementi nella barra 0 (nero) e nella barra 255 (bianco).
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Le diverse tonalità delle aree di grigio nell'immagine vengono visualizzate come picchi minori lungo l'asse x.
imhist2
È possibile utilizzare questa funzione per creare barre dei dati con valori non compresi nell'intervallo 0-255.
1. Definire una matrice contenente elementi non compresi nell'intervallo 0-255.
Fare clic per copiare questa espressione
2. Definire il numero di barre e calcolare l'istogramma a n barre.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
3. Calcolare i punti finali delle n barre.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
hist2d
Questa funzione genera un istogramma bidimensionale di due immagini M e N, creando n barre in ogni dimensione. M e N devono avere le stesse dimensioni. Se a intensità simili le due immagini hanno un numero di pixel simile, la matrice di output generata da hist2d ha una diagonale forte. La funzione suddivide l'intervallo 0-255 in n barre.
1. Definire il numero di barre e le due matrici immagine con dimensioni equivalenti.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
2. Utilizzare l'operatore di vettorizzazione con la funzione bin_label definita in precedenza per calcolare il numero di barre per P e Q.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
L'istogramma bidimensionale è una matrice n x n, con un conteggio alla colonna c e alla riga r ogni volta che è presente un elemento di Pbins con numero di barre c, mentre l'elemento corrispondente di Qbins ha conteggio r. Poiché, ad esempio, i primi elementi di Pbins e Qbins sono 0 e 2, generano un conteggio alla colonna 0 riga 2 della matrice istogramma.
3. Calcolare la matrice istogramma generando innanzitutto una matrice di valori zero e quindi aggiungendo i conteggi.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
4. Confrontare l'input precedente con l'output di hist2d.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
5. Per un esempio più concreto, considerare l'immagine a colori raffigurata di seguito.
Utilizzare la funzione READRGB per ingrandire l'immagine e utilizzare la funzione WRITERGB per scrivere l'immagine ingrandita in un file.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
(smallwar.bmp)
6. Utilizzare la funzione extract per estrarre separatamente i componenti verde e blu per consentire il confronto tra i due componenti di colore.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
7. Mostrare l'istogramma bidimensionale.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
(hist2d.bmp)
8. Mostrare l'istogramma bidimensionale come immagine delle intensità su una scala di log.
Fare clic per copiare questa espressione
Esaminare l'immagine e osservare le diverse intensità. La diagonale forte in questo istogramma bidimensionale indica che la maggior parte dei pixel in posizioni corrispondenti ha intensità simili. Non si tratta di un comportamento illogico in due componenti di colore della stessa fotografia. La diagonale sarebbe meno prominente in due immagini con texture molto diverse.
È stato utile?