Ich entwickle eine iOS-App, in der der Benutzer einen Teil der Bildfarbe, etwa einen Teetasse, durch Berühren ändern kann. Ich verwende den Floodfill-Algorithmus, um Farben zu füllen, sodass der Benutzer auf den Teetasse tippen muss, um seine Farbe zu ändern. Das funktioniert gut. Aber die endgültige Farbe sieht kaum anders aus als die Ersatzfarbe. Ich habe ein Problem damit, eine bessere Logik zu finden, um die Farbe (Tea Cup) des Objekts in die ausgewählte Farbe zu konvertieren, in Anbetracht seiner Sättigung & amp; Leichtigkeit.
Ich verwende die folgende Logik, um die Ergebnisfarbe zu erhalten. Ich repräsentiere Farbe als (Farbton, Sättigung, Wert) .
%Vor%Der Becher vor dem Malen (rot eingekreist).
Die ausgewählte ersetzbare Farbe.
Cup nach dem Malen der Ersatzfarbe (eingekreist mit roter Farbe).
Siehe das letzte Bild oben. Da ich gerade nur den Farbton & amp; Sättigung und nicht der Wert der pixelColor ist, wirkt die angewendete Farbe nicht sieht nicht ähnlich wie die ausgewählte ersatzfarbe aus. Die Helligkeit des Bildes bleibt unverändert.
Wenn ich den Wert zusammen mit hue & amp; Sättigung so,
%Vor%Dann wird die Tasse flach gefärbt, die Lichter fehlen & amp; Schattierungen wie diese,
Ich möchte eine Idee, um die obige Logik zu optimieren, um die Pixelfarbe in eine passende Ersatzfarbe zu ändern. Kann eine Formel sein, um die Sättigung & amp; Wert .
In unserem Beispiel nennen wir die rosa Farbe die "Farbe, die ersetzt werden soll", und nennen wir die braune Farbe die "Ersatzfarbe". Suchen Sie für jedes Pixel im Ziel das entsprechende Pixel in der Quelle. Sehen Sie, wie es von der "Farbe zu ersetzen" abweicht. Nehmen Sie jetzt ähnliche Anpassungen an der "Ersatzfarbe" vor und verwenden Sie diese als Farbe für das aktuelle Ausgabepixel.
Wenn beispielsweise das aktuelle Quellpixel dunkler ist als die Farbe, die durch 5 "v" Einheiten ersetzt werden soll, dann setzen Sie das Ausgangspixel auf die Ersatzfarbe, die um 5 "v" Einheiten dunkler gemacht wird. (Und Sie sollten auch die gleichen Einstellungen in Farbton und Sättigung vornehmen.)
Sie müssen wahrscheinlich den Bereich der Farben begrenzen, die Sie einstellen, damit Sie andere Objekte nicht anders färben.
Tags und Links objective-c ios image-processing image-manipulation colors