Ähnlichste Farbe aus vielen finden
-
Athar schrieb:
i²e schrieb:
Also, du hast doch ein Bild und willst da drin alle Pixel finden die eine ähnliche Farbe wie eine Vergleichsfarbe haben. Richtig?
Ja, aber eigentlich nur eine Farbe pro Suchvorgang. Beim nächsten habe ich bereits wieder eine ganz andere Vergleichsfarbe.
i²e schrieb:
Ähnliche Farben haben einen kleinen Abstand im Raum. Du musst also nur den Abstand von allen Farben zu der Vergleichsfarbe berechnen und dir nur die kleinsten merken.
Ja, schon. Das gilt aber auch im RGB-Farbraum. Die Abstände im Lab-Farbraum entsprechen zwar eher der menschlichen Farbähnlichkeitswahrnehmung, aber im RGB-Raum klappt das prinzipiell auch schon recht gut.
Das Problem ist, wenn ich mehrere Millionen Mal für jeweils mehrere Millionen Farbpaare den Abstand im Raum berechnen muss, wird's zeitlich eng. Im Grunde mache ich das bereits, nur dass ich nicht jedes Mal alle Farben betrachte.Ich glaub ich hab nicht verstanden was du willst. Du willst zu jedem Pxiel die ähnlichen finden und nicht nur die ähnlichen zu einer Farbe?
-
Servus,
willst du evtl. zwei Bilder auf ähnlichkeit prüfen? Und noch mals, vergiss RGB und HSV. Für einen Vergleich mit aktzeptablen Ergebnisse musst du zu Lab, LCh oder einen vergleichbaren Farbsystem gehen.
Zu deinen Laufzeitproblemen:
Falls du keinen Algorithmus findest (welche Sprache benutzt du eigentlich?) der die vorgegebenen Zeit einhält, kannst du dir ja gedanken um die parallele Ausführung machen. Wenn ich dich richtig verstanden habe, benutzt du ein Bild und suchst dort x-mal nach einer Farbe.
Derartige Aufgaben lassen sich sehr schön mit OpenCL erledigen. Je nach Rechner kannst du dann das ganze auf der CPU oder GraKa laufen lassen. Auf beiden wirst du eine Beschleunigung erfahren, sofern du mit C, C++, Java, .NET oder ähnliches programmierst.
Ob OpenCL bereits mit Fortran-Operationen mithalten kann, weiß ich leider nicht. Ich besitze keinen High-End Fortran-Compiler. Die sind echt teuer und ihr Geld wertGruß,
Thomas