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:
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.
2. Definieren Sie die Anzahl der Bins für die Anwendung der Funktion imhist auf die oben genannte Matrix.
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.
3. Plotten Sie ein Histogramm der Intensitätsstufen.
4. Setzen Sie n auf eine kleinere Zahl, wie 5, und betrachten Sie den Unterschied.
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.
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.
(pattern.bmp)
6. Wenden Sie die Funktion imhist auf das Bild an.
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ß).
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.
2. Definieren Sie die Anzahl der Bins und berechnen Sie das n-Bin-Histogramm.
3. Berechnen Sie die Endpunkte der n Bins.
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.
2. Verwenden Sie den Vektoroperator mit der oben definierten Funktion bin_label, um die Anzahl der Bins für P und Q zu berechnen.
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.
4. Vergleichen Sie die obige Ausgabe mit der Ausgabe von hist2d.
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.
(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.
7. Zeigen Sie das eindimensionale Histogramm an.
(hist2d.bmp)
8. Zeigen Sie das zweidimensionale Histogramm als Bild der Intensitäten als logarithmische Darstellung an.
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.