Funktionen > Bildverarbeitung > Bildbearbeitung > Beispiel: Ein- und zweidimensionale Histogramme
  
Beispiel: Ein- und zweidimensionale Histogramme
Verwenden Sie die Funktionen imhist, imhist2 und hist2d, um ein- oder zweidimensionale Histogramme zu erstellen.
Weitere Informationen zur Verwendung dieses Beispiels finden Sie unter Bildverarbeitungsbeispiele.
imhist
Diese Funktion generiert ein Histogramm für die Elemente der Matrix M, indem der Intensitätsbereich in n Bins unterteilt wird. Jedes Bin enthält die Anzahl an Pixeln, die in seinen Intensitätsstufenbereich passt. Wenn z.B. n = 256, gibt es einen Bin für jede mögliche Intensitätsstufe in einem 8-Bit-Graustufenbild. Bei weniger als 256 Bins werden die Intensitätsstufen folgendermaßen auf Bins aufgeteilt:
Zum Kopieren dieses Ausdrucks klicken
Die Bin-Beschriftung startet bei 0. Bei mehr als 256 Bins ist die Bin-Größe kleiner 1.
1. Definieren Sie eine kleine Matrix, um die Beziehung zwischen den Werten und dem Aussehen des Histogramms zu verdeutlichen.
Zum Kopieren dieses Ausdrucks klicken
2. Definieren Sie die Anzahl der Bins für die Anwendung der Funktion imhist auf die oben genannte Matrix.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Da n = 255 erhält jede der 256 Intensitätsstufen einen eigenen, separaten Bin. Wie aus Matrix P ersichtlich sollte der einzige Bin mit mehr als einem Element 150 sein.
Zum Kopieren dieses Ausdrucks klicken
3. Plotten Sie ein Histogramm der Intensitätsstufen.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
4. Setzen Sie n auf eine kleinere Zahl, wie 5, und betrachten Sie den Unterschied.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Da n = 5 müssen die 256 Intensitätsstufen auf 5 separate Bins aufgeteilt werden. Intensitätswerte von 0 bis 256/5 sind in Bin 0, Werte von 256/5 bis 512/2 in Bin 1 und so weiter.
Zum Kopieren dieses Ausdrucks klicken
Wie aus Matrix P und dem obigen Histogramm ersichtlich, werden die Intensitätswerte wie folgt verteilt:
0, 30, 40 sind in Bin 0 (0-51)
Keine Intensitätswerte sind in Bin 1 (52-103)
120 und drei Werte von 150 sind in Bin 2 (103-154)
200 ist in Bin 3 (154-205)
240 ist in Bin 4 (205-256)
5. Verwenden Sie die Funktion READ_IMAGE, um in einem Bild zu lesen, das Leerzeichen enthält.
Zum Kopieren dieses Ausdrucks klicken
(pattern.bmp)
6. Wenden Sie die Funktion imhist auf das Bild an.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Die weiße Fläche (Intensitätswert = 255) im Bild wird als hohe Spitze rechts angezeigt. Schwarz und andere deutliche Grautöne sind in anderen Bins zu sehen.
7. Berechnen Sie die Anzahl der Elemente in Bin 0 (schwarz) und Bin 255 (weiß).
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Die verschiedenen Schattierungen der grauen Abschnitte im Bild werden als kleinere Spitzen entlang der X-Achse dargestellt.
imhist2
Mit dieser Funktion können Daten mit Werten außerhalb des Bereichs 0-255 in Bins einsortiert werden.
1. Definieren Sie eine Matrix, die Elemente außerhalb des Bereichs 0-255 enthält.
Zum Kopieren dieses Ausdrucks klicken
2. Definieren Sie die Anzahl der Bins und berechnen Sie das n-Bin-Histogramm.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
3. Berechnen Sie die Endpunkte der n Bins.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
hist2d
Diese Funktion generiert ein zweidimensionales Histogramm mit zwei Bildern M und N, wobei n Bins in jeder Dimension erstellt werden. M und N müssen die gleiche Größe haben. Wenn die beiden Bilder bei ähnlicher Intensität eine vergleichbare Anzahl von Pixeln besitzen, weist die Ausgabematrix von hist2d eine starke Diagonale auf. Die Funktion teilt den Bereich 0-255 in n Bins auf.
1. Definieren Sie die Anzahl der Bins und die beiden gleich großen Bildmatrizen.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
2. Verwenden Sie den Vektoroperator mit der oben definierten Funktion bin_label, um die Anzahl der Bins für P und Q zu berechnen.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Das zweidimensionale Histogramm ist eine n x n-Matrix, mit einer Anzahl in Spalte c und Zeile r, immer wenn es ein Element von Pbins mit Bin-Nummer c gibt und das entsprechende Element von Qbins die Anzahl r aufweist. Wenn z.B. die ersten Elemente von Pbins und Qbins 0 und 2 sind, generieren Sie eine Anzahl in Spalte 0, Zeile 2 der Histogramm-Matrix.
3. Berechnen Sie die Histogramm-Matrix, indem Sie zunächst eine Matrix mit Nullen erstellen und dann die Anzahlen hinzufügen.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
4. Vergleichen Sie die obige Ausgabe mit der Ausgabe von hist2d.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
5. Betrachten Sie als konkreteres Beispiel das folgende Farbbild.
Verwenden Sie die Funktion READRGB, um das Bild zu lesen, und die Funktion WRITERGB, um das Bild in eine Datei zu schreiben.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
(smallwar.bmp)
6. Verwenden Sie die Funktion extract, um die grünen und blauen Komponenten separat zu extrahieren, um den Vergleich der beiden Farbkomponenten zu ermöglichen.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
7. Zeigen Sie das eindimensionale Histogramm an.
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
Zum Kopieren dieses Ausdrucks klicken
(hist2d.bmp)
8. Zeigen Sie das zweidimensionale Histogramm als Bild der Intensitäten als logarithmische Darstellung an.
Zum Kopieren dieses Ausdrucks klicken
Untersuchen Sie das Bild, und beachten Sie die unterschiedlichen Intensitäten. Die starke Diagonale in diesem zweidimensionalen Histogramm bedeutet, dass die meisten Pixel an entsprechenden Positionen ähnliche Intensitäten aufwiesen. Dies ist bei zwei Farbkomponenten desselben Fotos einleuchtend. In zwei Bildern mit sehr unterschiedlichen Texturen wäre die Diagonale weniger auffällig.