Beiträge von Hoogo im Thema „entfernteste Farbe“

    Ich meine dieses => statt dem

    {

    return ...

    }

    Es ist Lazy Evaluation, das am Ende auch nur ein Funktionsaufruf ist, aber es sieht hässlich aus und stört mein persönliches Schönheitsempfinden :D

    Ich hätte => $"({R}/{G}/{B})" nehmen sollen ;)
    Hat mich beim Lernen gestört. Ich meine, Du findest eine Funktion, die nix returned, dann ist da ein =>, und jetzt frag mall Google danach :nixwiss:

    Die Zeit für solchen Syntax-Schnulli hätte ich mir gerne geschenkt, aber nu isses halt in der Sprache und man musste es lernen.

    Inzwischen nehme ich es gerne, wenn es Platz auf dem Schirm spart. Und wenn erstmal der Ärger über so viel Syntax-Schnulli verflogen ist, dann ist es OK. Den Schnulli rund um Properties finde ich schlimmer, und die Groß/Kleinschreibung bringt mich um.

    Bei Lambda geht es ja nicht anders, aber hier wird es als "Ersatz" von normalen Funktionen verwendet.

    In Funktionsköpfen gibt es ja schon Parameterübergabe mit (int i) {...}.Man hätte die Lambdas bestimmt auch mit dieser Schreibweise lösen können.

    Was mich bei dem Thread interessiert: kennt jemand einen .Net-Sourcecode (mit Vorliebe natürlich VB.Net), mit dem man ein PC-Bild auf ein 64er Bild umrechnen kann, also im Prinzip so, wie es Tobias in Bitte melde dich an, um diesen Link zu sehen. mit dem Link gepostet hat?

    Was ich hier mache ist C# in .net 5.0, hauptsächlich MVC und Console zum Rumtesten. Schreit beides nicht unbedingt nach Pixelschubsen und Grafik zeichnen, aber da wird sich was finden. Im Thread Bitte melde dich an, um diesen Link zu sehen. könnte auch was Nützliches zu finden sein.

    Probiers einfach mal selbst aus:

    Bitte melde dich an, um diesen Link zu sehen.


    Ich hab immer noch nicht ganz verstanden, wofür Du die "entfernteste" Farbe benutzen willst.

    Ist nichts konkretes (von verschiedenen Farben für Markierungen abgesehen), keine Ahnung, was sich noch für ein Nutzen finden lässt.

    Bin die letzten Jahrzehnte in C64-Sachen nicht so recht auf Stand geblieben, drum hatte ich jetzt nichtmal nen Online-Konverter zur Hand :grab1:

    Pepto scheint mir in Konvertern recht verbreitet, hab ich aus den diversen Konvertier-Threads mitgenommen...

    Daher habe ich mit Pepto gerechnet und die schlechtesten 32 Farben gesucht: Schlechteste Farbe bestimmt, der Farbliste hinzugefügt , wiederholt. Die gefundenen Farben wurden also immer "besser". Da Peptos Farbraum eher klein ist, wurden zunächst die knalligen Farben am Rand des Farbwürfels gefunden.

    Die Farbabstände lagen bei den letzten Farben im hohen 70er-Bereich und hatten damit locker so weite Abstände wie die Mehrzahl der 64er-Farben in Pepto.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Mit der Palette habe ich ein paar Bilder aus den Konverter-Threads behandelt.

    Tobias , Du hast doch da ein Händchen für...

    Ich nehme an, dass diese Bilder im Konverter miserable Ergebnisse bringen.

    Bitte melde dich an, um diesen Anhang zu sehen.Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.Bitte melde dich an, um diesen Anhang zu sehen.

    Nein, mit acht Bit. Die Video-Hardware hatte damals nur vier Bit pro Kanal, aber bei der API hat jemand mitgedacht und deshalb war die von Anfang an auf acht Bit pro Kanal ausgelegt.

    Dann müssen die imho intern eh mit 24 Bit rechnen, und dann hätten die die Faktoren noch was hochdrehen können.

    Magst du dein Code in dem Raum werfen?
    Ich würd's gerne vergleichen, da muss ja was anderes passieren.

    Ist C#, Konsolen-Projekt

    Der Output:

    Und psychovisuell hat der gemeine Mensch eher wenig Auflösung im blauen Bereich, oder? Also Lab u.ä. dürften wirklich besser geeignet für solche Spielereien sein als RGB, wie weiter oben erwähnt.

    Im Moment ist eher die Frage, wo der Bug ist. Schorsch und ich benutzen die gleichen Farben und die gleiche Rechnung. Schorsch hat ein schmutziges Blau gefunden, und in der Gegend hätte ich grob abgeschätzt die schlechteste Farbe vermutet.

    Meine erste Abschätzung war:

    - 6 mittlere Farben RGB+CMY.

    - Dunkle Farben Braun, Orange => TürkisBlau hat da eine Lücke

    - Helle Farben Hellrot, Hellgrün, Hellblau => Eher gleichmäßig belegt

    - C64-Rot ist zu dunkel, Grün und Türkis zu hell => Lässt Platz in Dunkelblaugrün und nimmt Platz in HellTürkisGrün weg.

    Die un-C64igste Farbe hätte ich daher im DunkelGrünBlauTürkis vermutet, und ausgerechnet im HellTürkisGrün finde ich sie? Aber ich hab's jetzt Xmal nachgerechnet, das passt.

    Nächster Nachbar von Schorschs Farbe (39/85/204) ist Hellblau (0/136/255) mit ~82. Wobei es nur einen Nachbarn mit diesem Abstand gibt, was sehr für einen Bug dort spricht.

    RISC OS 2 benutzte als Gewichte für R, G und B die Werte 2, 3 und 1.

    Bei RISC OS 3 wurde das zu 2, 4 und 1 geändert.

    Das passt ja ganz OK zu den Werten, mit denen man das Y von YCrCb berechnet, nur mit kleinen Integern. Die Rotationen, die die in ihrer Matrix haben, dürften ja für die Abstandsberechnung keine Rolle spielen.

    Riscos hat mir 4Bit Input gerechnet? Imho müssen die doch trotzdem in 16Bit rechnen? Warum dann SO kleine Ints?

    ------------------------------------------------

    Ursprünglich ging es mir nicht so sehr um die optische Wahrnehmung als entfernteste Farbe, eher nur um eine rechnerisch schlechte Farbe in sRGB, aber es ist ein interessantes Thema geworden.

    ich hab das mal gemacht, relativ simpel, ich betrachte den farbraum als ein linearen Raum mit den Achsen R G B je von 0 bis 255. Jetzt iteriere ich Durch alle Farben im Raum und bestimme die kürzeste Distanz zu allen der 16 C64 farben nach Bitte melde dich an, um diesen Link zu sehen..
    Anschließend nehme ich die Farbe mit der längsten kürzesten Länge, das wäre #2755CC

    Ich hab wegen der einfachen Vergleichbarkeit auch die Palette aus dem Wiki genommen.

    Ich hab allerdings 27ffcc statt 2755cc bekommen und mehrmals nachgerechnet: Die nächsten Farben sind Türkis, Grün, Hellblau mit Abstand 135.. Das überrascht mich, weil ja grad der Türkis/Hellgrün/Hellblau-Bereich eigentlich in der 64er-Palette gut abgedeckt ist.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Falls da jemand mit spielen wollo, so hab ich das lustige blau ermittelt:

    Wäre wohl auch mein Ansatz, alle Farben zu durchlaufen und die Abstände zu allen C64-Farben zu prüfen.

    Wenn nur 1 Farbe gesucht wird, dann ist das imho die optimale Lösung.

    So, jetzt wird das ein bisschen akademisch, weitab der Praxis...


    Erster Ansatz: Die gefundene Farbe der Palette hinzufügen und das Ganze wiederholen. Das Hinzufügen zur Palette würde verhindern, dass als nächstes #2655CC oder Bitte melde dich an, um diesen Link zu sehen.... oder andere benachbarte Farben gefunden werden.
    Problem: Die Räume für die nächsten Farben werden unnötig schnell kleiner, jede weitere Farbe kommt den echten Farben näher. Eine Suche nach mehreren Farben gleichzeitig könnte bessere Lösungen liefern.

    Illustration dieses Algo in 2D:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Die 3 grünen Punkte sind die echten C64-Farben.

    Rot ist der erste Treffer, die Farbe, die am weitesten von den 3 Grünen entfernt ist.

    Blau ist am weitesten von den 4 vorigen Punkten entfernt,

    Magenta am weitesten von allen 5 vorigen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Die beiden gelben Punkte wären in einer Palette der schlechtesten 3 Farben besser, aber die werden so nicht gefunden.

    ------------------------------

    Bitte melde dich an, um diesen Link zu sehen. illustriert das schön in 3D. Alle gefundenen Punkte halten schön einen Mindestabstand voneinander ein.

    Mit den Links hier oder bei Bitte melde dich an, um diesen Link zu sehen. finden sich auch Algorithmen. Die scheinen aber auf zufälliges Verschieben und viele Versuche zu setzen. Die Ergebnisse sehen wüst aus, aber andererseits dürfte es nicht zu schwer sein, denen feste 16 Kugeln zu geben oder auf krumme Grenzen von Lab zu testen.

    Nun ja, es ist aber kein Würfel, auf dem die Achsen nur anders heißen als bei RGB. Ein bisschen mehr Bitte melde dich an, um diesen Link zu sehen. steckt da schon drin.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Aber wenn das aus deiner Sicht keinen Unterschied in der Komplexität macht, dann um so besser.

    Du hast Recht, ich hätte da ganz schmerzfrei Lab an einen Würfel geschrieben und viele Farben mit L=0 verwendet.

    Konnte man denn die Abstände zweier Farben in Lab nicht trotzdem einfach euklidisch berechnen?

    Mist, das ist schon wieder alles so lange her...

    Wenn du willst, dass die Farbe am weitesten von den bekannten 16 C64-Farben entfernt AUSSIEHT, dann machst du die 3D-Berechnung am Besten im Lab-Farbraum (nicht in RGB), weil nur dort Farb-Abstände nach Wahrnehmung gewichtet sind.

    Vom Bauchgefühl her tendiere ich eher zu einem linearen RGB, aber vom Prinzip her ist es ja Wurst, was die Zahlen bedeuten.

    Gibt z.B. auch sowas Bitte melde dich an, um diesen Link zu sehen.

    (Wenn Du CIE LAB meintest. Dieser Farbraum da hat auch die Koordinaten L, a und b.)

    Auf den Farbraum hab ich letzten noch anderswo Hinweise gefunden, mehr Lesestoff:
    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Hoogo Wenn du im Lab-Farbraum irgendwas berechnen solltest, dann würde ich gerne deine Zeit beanspruchen, wenn du das zuließest und auch Spaß an der Sache hättest. Ich überlege nämlich, wie man eine bestimmte Anzahl von Farben im Lab-Farbraum so verteilt...

    Was für ein schöner Zufall, letzter Tage habe ich noch nach einem Algo gesucht, um Dinge möglichst gut unterscheidbar einzufärben. Musste nur gut genug sein, aber ich hab da bestimmt was in meiner Linksammlung behalten. Ist jedenfalls nicht so einfach, nicht mal 2D.

    Und kurz quergedacht: Könnte aus diesem Konverter nicht auch ein animiertes GIF (2 Frames, eigene 24-Bit-RGB-Palette) mit maximal flimmernden Fehlpixeln rausfallen? :)

    Naja, ich dachte mir, eine Palette aus den schlechtesten 30 Farben oder so zu erstellen, ein entsprechend vorbereitetes Bild in einen Converter zu stecken und je nach Ergebnis die Programmierer zu trollen. Aber was Sinnvolles lässt sich daraus bestimmt auch machen.

    Hab hier ein Plugin, das Bilder als Punktwolken in einem 3D-Würfel darstellt.

    Wo bringt man am besten eine weitere Farbe unter, die am weitesten von ihrem nächsten Nachbarn entfernt liegt?

    Knallpink ist für den Zweck eine sehr gute Farbe, weil sie sich sehr deutlich von den anderen Farben abhebt. Aber EIGENTLICH ist sie von Magenta und Hellrot nicht so weit weg, so dass ich mir eine noch entferntere Farbe vorstellen kann.

    Mir scheint, ich sollte ein kleines Progrämmchen für die Antwort machen?

    Bitte melde dich an, um diesen Anhang zu sehen.

    Worauf zielt die Frage ab? :)

    Rein Gedanklich:
    Du hast am PC irgendwas in C64-Farben umrechnen lassen, und sitzt nun vor einem Bild, das nur 16 sRGB-Farben benutzt. Zur Darstellung von Farbfehlern o.Ä. wäre nun eine weitere Farbe schön, die sich möglichst gut von allen C64-Farben abhebt. Welche wäre das?

    Welche sRGB-Farbe ist eigentlich am weitesten von den C64-Farben entfernt?

    Vom Bauchgefühl würde ich ein sehr dunkles Blau annehmen, aber vielleicht hat das schonmal jemand richtig berechnet.