Forum: Offtopic Histogrammegalisierung


von Simon (Gast)


Angehängte Dateien:

Lesenswert?

Zu dem Thema Histogrammegaliserung hab ich eine Aufgabe. Diese bereitet 
mir große Probleme. Wie kommt man von H(f) zu der Tabelle in Aufgabe 
4???

Was ist damit eigentlich gemeint: Da die Grauwerte von Null gezählt 
werden ist vom obigen gerundeten ganzzahligen Wert eins abzuziehen.

Was bedeutete diese Gleichung:
g=1/1/16 * Summe(h(f))=16*H(f) ???

von Simon (Gast)


Lesenswert?

Kennt jemand ein anderes Forum, wo diese Aufgabe besser reinpasst?

von Simon (Gast)


Lesenswert?

Das mit der Histogrammegalisierung ist mir noch so ein Rätsel.
Das Skript, das ich dazu habe, ist ehrlich gesagt sehr schlecht.
Hat jemand eine gute Quelle, wo man sich das besser kalr machen kann?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Such nach Histogram Equalization, da findest du haufenweise Erklärungen.

von Simon (Gast)


Lesenswert?

Danke Andreas. Da hab ich gleich mal nachgeschaut. Ich konnte nichts 
gescheites dazu finden.

von Uhu U. (uhu)


Lesenswert?

Kann diese komische Kuh eigentlich auch was anderes, als beliebige Leute 
anpinkeln? Kriegt sie selber denn garnichts auf die Reihe?

von Simon (Gast)


Lesenswert?

Bin noch immer nicht weitergekommen. Weis von euch jemand, woher man ein 
gutes Skript zum Thema Histogrammegalisierung mit Beispielen?

von Condi (Gast)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Simon wrote:
> Bin noch immer nicht weitergekommen.

Ich kann dir hier die Theorie nicht erklären (vor allen Dingen
weil ich sie selber nicht kenne), aber es ist doch nicht
schwer aus den Zahlen den Rechengang zu extrahieren:

Du hast die Pixelverteilung:
0   4350
1   28780
2   34506
...

Mit der Gesamtzahl der Pixel (686 * 484 = 332024 ) ergibt sich daher
eine 'prozentuale' Verteilung

0 4350    4350 / 332024 = 0.0131
1 28780                   0.08668
2 34506                   0.1039
....

Das ist die Tabelle h(f)

Würde man sich das als Graphik anzeigen lassen (x: Grauwert,
y: Häufigkeit) dann ergibt sich eine Balkengrafik, bei der jeder
Balken die Häufigkeit eines Grauwertes angibt.

Jetzt summiert man für jeden Grauwert seine Häufigkeit und die
Häufigkeit aller Grauwerte die kleiner sind.

0   0.0131                                0.0131
1   0.0131 + 0.08668                      0.09978
2   0.0131 + 0.08668 + 0.1039             0.20368
3   ...............
...
15                                        1.0

Das ist die Tabelle H(f)

trägt man diese Zahlen wieder in einer Grafik auf, dan repräsentiert
jeder Balken den Anteil aller Pixel deren Grauwerte kleiner oder
gleich dem Grauwert an einer bestimmten Stelle im Diagramm ist.
Es ergibt sich die bekannte Kurve, die links bei y = 0 anfängt
und rechts bei y = 1 endet. Im Idealfall ist diese Kurve eine
Gerade von einem Eckpunkt zum anderen (oder was damit gleich
bedeutend ist: Im ersten Diagramm sind alle Balken gleich hoch).

Um den Ausgleich zu machen, sagt die Vorschrift, berechnest du
g = 16 * H(f)

Setz einfach mal für f = 15 ein.
Es ergibt sich g = 16 * 1.0 = 16
Da dein maximaler Grauwert aber 15 und nicht 16 ist, wird noch 1
abgezogen.

Also berechnet sich die neue Tabelle zu:

0  :  16 * 0.0131 = 0.2096   -> gerundet -> 0  -> 1 abziehen = -1
   (einen Grauwert von -1 gibt es aber nicht, daher: 0)
1  :  16 * 0.0998 = 1.5968   -> gerundet -> 2  -> 1 abziehen =  1
2  :  16 * 0.2037 = 3.2592   -> gerundet -> 3  -> 1 abziehen =  2
...

Und damit erhältst du die Tabelle aus Aufgabe 4

malt man hier wieder ein Diagramm, dann sollten (hoffentlich) die
Daten besser an der ersehnten Diagonalen liegen (alle Grauwerte
sind gleich häufig vertreten).

von Karl H. (kbuchegg)


Lesenswert?

Hab nochmal bei einer Zigarette über das Verfahren nachgedacht.
Ist eigentlich ziemlih einfach.

H(f) sagt dir, wieviele Pixel kleiner oder gleich einem
bestimmten Grauwert sind.
So sagt die H(f) Tabelle beispielsweise, dass 56% aller Pixel
einen Grauwert von 8 oder kleiner haben. Dieses Histogramm ist
schon relativ gut, daher lass mich ein neues Bild erfinden:
10 * 10 Pixel, 8 Graustufen
0 10
1 40
2 30
3 20
4  0
5  0
6  0
7  0

Das Bild spielt sich praktisch ausschliesslich im dunklen Bereich
ab. Die H(f) sind dann
0/0.1  1/0.5  2/0.8  3/1.0  4/1.0  5/1.0  6/1.0  7/1.0

Das H(f) sagt uns, dass bspw. 50% aller Pixel einen Grauwert von
0 bis 1 haben, während sich die anderen 50% im Bereich 2 bis 7
tummeln.
Das ist aber sicher nicht optimal. 50% der Pixel sollten auch
50% aller Grauwerte belegen. Die 50% sollten daher bei einem
Grauwert von 0.5 * 8 (-1) = 3 erreicht werden. Und genau
das macht dann die g-Formel. Sie berechnet, bei welchem Grauwert
ein vorgegebener Anteil an Pixel vorhanden sein sollte.

von Simon (Gast)


Lesenswert?

Vielen Dank  Karl heinz Buchegger für deine Hilfe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.