keystone schrieb:
> ich lesen jedes Pixel einzeln als R G B ein dies kommt in ein Byte
> Array[RGBRGBRGB]
Einzelnes Array? Vielleicht hast Du in den Randbereichen des Bilds einen
Fehler (evtl. Sonderbehandlung) oder wirfst sonst ein paar Werte
durcheinander?
Du musst ja irgendwo einen Fehler in S oder V haben.
Ansonsten könnte ja schwarz/weiss nicht zu rot/blau werden.
keystone schrieb:
> und wird dann in HSB umgewandelt
Hatte noch nie was damit zu tun, aber hast Du das bei Wiki gelesen:
1 | * Wenn R = G = B, dann ist H undefiniert.
|
2 | Das ist offensichtlich. Denn wenn S = 0 ist (ungesättigte Farbe), dann
|
3 | liegt der Farbort auf der zentralen Grau-Linie, der Farbton ist so ohne
|
4 | Bedeutung und kann nicht sinnvoll angegeben werden.
|
5 |
|
6 | * Wenn R = G = B = 0, dann ist S undefiniert.
|
7 | Denn wenn alle drei RGB-Werte „Null“ sind, geht es um Schwarz und die
|
8 | Sättigung der Farbe verliert ihre Bedeutung. Dasselbe gilt auch im Falle
|
9 | MAX = MIN = 1, dies gilt für Weiß, hier liefert die Formel formal 0.
|
10 | Undefinierte Werte werden aus rechentechnischen Gründen mit „Null“ besetzt.
|
keystone schrieb:
> Ich weis nicht ob da Pixel in der Nachbarschaft mit verändert werden,
> aber so wie ich mir das da so überlegt haben, sollte das nicht der Fall
> sein.
Ansonten einfach mal Debuggen?
Evtl. ist auch eine geeignetere Datenstruktur besser?
z.B. so:
1 | struct rgb_farbe
|
2 | {
|
3 | char r;
|
4 | char g;
|
5 | char b;
|
6 | };
|
7 |
|
8 | struct rgb_farbe bild[800][600];
|