![]() |
Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Hallo Delphi-Experten,
kennt jemand von euch einige Ansätze oder Routinen, um die "subjektive" Helligkeit eines Bildes irgendwie zu errechnen? Ich weiss, errechnen ist hier der falsche Ausdruck denke ich, aber ich suche nach einer Möglichkeit, mehrere Bilder von der empfundenen Helligkeit her unterscheidbar zu machen bzw. zu ordnen. Beispiel: Ich habe eine 8x8 Pixel-Grafik, davon sind die 4 Pixel in den Ecken weiss, der Rest ist schwarz. Eine zweite Grafik, auch 8x8 Pixel, hat 4 Pixel in der Mitte weiss, den Rest schwarz. Errechne ich den Durchschnitt der Helligkeit, ist der ja bei beiden gleich, aber das zweite Bild ist subjektiv heller, da ja die Pixel in der Mitte zusammenliegen und einen weissen Punkt ergeben. So meine Frage: Welchen Ansatz gibt es, diese empfundene Helligkeit in eine Formel abzubilden? Vielleicht ists auch ganz trivial, aber ich komme irgendwie nicht drauf :( Irgendwie denke ich dabei daran, für jeden Pixel die benachbarten Pixel mit auszuwerten...aber wie genau... grüssle, Fin |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
8x8 Pixel = 64 Pixel, Schwarz = 0, Weiß = 255 Bild 1: 4 Schwarze Pixel, 60 Weiße = (0x4 + 60x255) / 64 = 240 Bild 2: 4 Weisse Pixel, 60 Schwarze = (255x4 + 60x0) / 64 = 16 Der Unterschied müsste eigentlich signifikant sein!?! SCRaT |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
@scrat1979: Beide Bilder haben "4 Weisse Pixel und 60 Schwarze"
Hmmm, dann könntest du noch den Helligkeiten z.B. eine höhere Relevanz/Wertigkeit verpassen, je mehr sie in der Mitte liegen? Ansonsten wird es scher. Denn nach welcher "Vorschrifft" will man die einzelnen Punkte behandeln? Man könnte in diesem Fall zwar das Bild erstmal in gleichfarbige/gleichhelle Flächen zerlegen und diese nach Größe gewichtet betrachten, aber dann fiehle ja ein 50/50 Schwarz/Weiß-Raster wohl durch. [add] @Valle: passiert bei mir och öfters ... böse RedBox |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
Edit:// Schande auf mein Haupt auf den Roten Kasten! Habe himitsus Beitrag nicht gesehen. Liebe Grüße, Valle |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
Ich weiss nämlich nicht genau, wie unser Helligkeitsempfinden funktioniert, ich sehe es nur selbst, dass es heller wirkt... Wenn ich nach Algortihmen oder Ansatzpunkten google, kommen da aber nur immer irgendwelche Astronomie-Seiten bei raus :mrgreen: Einfach die Punkte nach der Mitte her zu gewichten geht leider auch nicht, da es auch sein kann, dass nur eine Seite komplett weiss ist, aber trotzdem hell wirkt.. Ach, was solls, ich lass das einfach bleiben :D Hätt ja sein können, dass es darauf eine relativ einfache, erklärbare Erklärung (was für ein Wortkontrukt..) gibt. Danke trotzdem für die Antworten :cheers: |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Ein Problem hier ist der Kontext. Auf weissem Grund dürfte Bild 1 dunkler wirken, auf schwarzem Bild 2.
Eine andere Frage ist der Abstand des Betrachters, und ab wann die Wahrnehmung der einzelnen Flächen schwindet. Mit genügendem Abstand erscheinen beide wieder gleich. Bei größeren Bildern, die nicht gerade an dieser Schwelle kratzen ist der Unterschied ebenfalls kaum mehr relevant. Es macht auf meinem Bildschirm z.B. keinen Unterschied, ob ich eine 200x200px Box oben rechts, oder zentriert hab. Ich fühle mich gleich stark "bestrahlt". Somit ist die eigentliche Frage eher: Was tun, wenn man sich in Flächengrößen bewegt, die beim angenommenen Abstand zwischen abgegrenzten Flächen und einem Dithering-Muster verschwimmen. Und um ganz ehrlich zu sein: Ich sehe zunächst einmal keinen Grund dort eine Anpassung vorzunehmen, da sie sich auch jeglicher Definierbarkeit entziehen dürfte. Das Verschwimmen von klarem Muster zu diffus ist z.B. von Mensch zu Mensch sehr verschieden. Faktisch müssen die von dir genannten Beispiele als gleich hell gewertet werden, zumal sie tatsächlich, physikalisch gesehen, auch wirklich den selben Lichtstrom emmitieren (wenn nicht das darstellende Medium Helligkeitsschwankungen mit bringt). Klar könnte man her gehen und Randpixel mit einem Malus beaufschlagen, bzw. eine Abnahmefunktion zum Rand hin nehmen, aber was ist dann wenn ich nicht mitten auf das Bild schau? Wenn ich Bild 1 auf schwarzem Grund so anschauen, dass der weisse Kasten auf meiner Sichtachse liegt, ist es von Bild 2 nicht mehr zu unterschieden. Am Bild und an der Lage seiner Punkte hat sich allerdings 0,nix geändert. |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Tja....was soll ich sagen...Medium hat mich jetzt wirklich richtig "gepwnt" :D
Du hast recht, nach deiner Erklärung ist es gar nicht möglich, da Subjektivität eben subjektiv bleibt, auch (und gerade wenn) man das Ding dreht und wendet :) |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
|
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Bei kleinen Bildern (10x10 oder so) könnte es funktionieren, immer wieder einen Gaußfilter drüber laufen zu lassen, bis das Bild weiß wird (weiße Randpixel). Die Häufigkeit des Filterns könnte, wenn ich mich nicht täusche, zumindest mal eine Art Richtwert sein.
Je näher sich zwei schwarze Pixel sind, desto "stabiler" sollten sie doch sein. Das könnte man sicher umformen und beschleunigen: Pixel bekommen einen höheren Wert zugewiesen, je näher andere Pixel sind und je weiter sie vom Rand entfernt sind. Die Summe aller dieser Werte der Pixel müsste doch irgendwie verwendbar sein, oder?!? Vielleicht probier ich das heut noch aus.. |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Ich halte einen Ansatz mittels FFT eigentlich für Sinnvoller.
Wandle dein Bild in Graustufen um. Und mach dann mal Fourierspektren. eine N-Fache Gaußfilterung, klingt für mich eher Suspekt. Die gewichtete Mittlung der Pixel Helligkeiten ist da schon eher einleuchtend |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Gauß-Filterung entspricht einem Tiefpass, und was will man nachher mit dem Frequenzspektrum genau anfangen? Wenn man "Flächigkeit" ermitteln will, ist ein Gauß schon kein schlechter Ansatz. Alternativ ginge auch eine geeignete Kombi aus Erosion/Dilation um "Makroflächen" zu bekommen, und dann könnte man den Spaß mit dem
![]() |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Da hab ich ja was losgetreten... :gruebel:
Gauss, Tiefpassfilter, Watershed...was kommt noch? Parallax mapping und Bloom-Shader drüberlaufen lassen? :D Ach, ich red Blödsinn...aber konnte nicht wiederstehen :roll: Nix für ungut :cheers: Edit: Ich will euch aber mal verraten, für was ich das eigentlich gebraucht hätte, vielleicht driftet das ja dann in einen andere Richtung: Ich will eigentlich nur die Ascii-Zeichen einer Schriftart, gerendet auf eine Textur, der Helligkeit nach sortieren..und zwar nicht nach der absoluten, sondern der empfundenen...naja, war wohl nix :D |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Darf ich fragen, wozu man das brauch? :gruebel:
|
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Ja, darfst du gerne :mrgreen:
Ich bin ein Spielkind, ich wollte mir nur mal einen "Render-to-Ascii"-Shader zusammenbauen :) Das Sinnvolle daran bleibt natürlich dahingestellt... :lol: |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Da wäre doch eine einfach Überdeckungsanalyse viel besser! Das Eingangsbild in die Font-Blöcke zerlegen, binärisieren, und dann pixelweise nachschauen, welches Zeichen die darin übrig gebliebene Struktur am ehesten nachbildet. Vorder-/Hintergrundfarbe ermitteln, und go :)
|
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Was meinst du denn in dem Fall mit "binärisieren" ? :)
|
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
zB. "Subjektiv empfundene Helligkeit" Das heist du bist dir schon mal im Klaren darüber das jeder Mensch komplexe Bilder anders in der Helligkeit, und mit Sicherheit auch Farbe, wahrnimmt. Das Subjekt Mensch stellt also bei deiner gesuchten Formel eine Veränderliche=Variable dar. Damit deine Formel also korrekt funktioniert musst du den Betrachter der Bilder, also das Subjekt, als Variable in deiner Formel eingeben. Wenn du nun keine Formel findest und auch nicht die nötigen Variablenwerte für ein Subjekt zur Hand hast heist dies für dich "selber messen". Ergo: du benötigst als erstes ein Meßverfaren mit dem du objektiv das Helligkeitsempfinden eines Subjektes=Menschens ausmessen kannst. Gibt es ein Meßverfahren das den subjektiven Helligkeitseindruck eines Mesnchens objektiv messen kann ? Ich denke nicht. Also auch keine Formel dafür und damit ist dein Vorhaben fast aussichtslos. Das Einzige was du machen könntest wäre empirisch das objetive Helligkeitsempfinden per Experimente zu ermitteln. Zb. eine hinreichend große Menge von statistisch gleichverteilt ausgewählten Menschen, sprich eine gute Stichprobe aller Menschen, wirst du benötigen für dieses Experiment. Diese bewerten dann eine möglichst große und wieder gut statistisch gleichverteilte Menge aller Bilder die bewertet werden sollen. Nun, ich kann mich dunkel daran erinnern das es solche wissenschaftlichen Untersuchungen mal gab. In dem Bericht, an den ich mich erinnere, ging es um die Bestimmung der subjektiven Helligkeit einfarbig gefüllter geometrischer Figuren. Also zb. gelber Kreis in Relation zu Rechteck. Was ich aus dem Bericht heraus hörte war der Fakt das der Mensch kein einfaches Helligkeitsemfinden besitzen soll sondern das er Form und Farbe in Relation setzt und daraus dann eine "Wichtigkeit" für sich "errechnet" die die empfundene Helligkeit ernorm beeinflusste, in etwa so wie Helligkeit=Relevanz=Wichtigkeit der Bildinformation für den jeweiligen Menschen. Interessant war dabei nun das die Reihenfolge verschiedener vorherig gesehener Bilder den subjektiven Eindruck zum aktuellen Bild mit beeinflussen soll. Tja, viel Spaß bei deiner Aufgabe ;) Gruß Hagen |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Och negaH, jetzt stell du mich doch nicht auch noch bloß :lol:
Ich habs doch schon eingesehen, dass der Ansatz der falsche war :) |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Wieso stelle ich dich bloß ? Das ist sicherlich nicht meine Absicht.
Bei den vorherigen Postings vermisste ich eben eine andere, analytische Sichtweis auf deine Fragestellung, das ist alles. Zitat:
Ansich eine Aufgabe mit der sich ein Wissenschaftler sein ganzes Leben befassen kann. Und eine Fragestellung die sehr wohl von hohem Wert für viele Bereiche unseres Lebens sein wird. Gruß Hagen |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Recht hast du! Das hat wirklich gefehlt.
Und es sagt mir noch deutlicher, dass ich wohl nicht richtig nachgedacht hatte. Eigentlich hatte ich ja nur gehofft, dass vielleicht jemand kommt und sagt: "Nö, geht so eigentlich nicht, subjektiv bleibt subjektiv, aber in der Praxis macht man das normalerweise so..." |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Wenn Hagen postet, tut er das im Regefall nie, um jemanden bloßzustellen. Er zeigt uns nur jedesmal wieder, wie wenig analytisches Denken wir zulassen. Und dafür lieben wir (ich) ihn einfach. :kiss: :mrgreen:
|
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
|
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
Zitat:
|
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Du könntest auch zu jedem Pixel eine Helligkeitsschwelle definieren und dann erstmal alle Pixel zählen, die über dieser sind. Und dann jeden dieser hellen Pixel durchgehen und immer die vier Nachbarn angucken. Für jeden hellen Nachbarn gibt's nochmal +0,1 aufs Endergebnis.
Damit kannst du helle Flächen heller machen als mit der nur-zähln-Methode ;) Bei deinem Eingangsbeispiel ergäbe sich also für das Bild mit den weißen Pixeln in der Ecke ein Wert von 4, für das mit den weißen Pixeln in der Mitte aber ein Wert von 5,2 und damit leicht heller ;) |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
Gruß Hagen |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
@jfheins:
Danke, das werd ich heute Abend oder morgen gleich mal ausprobieren :) Ich hoffe nur, meine Grafikkarte macht das mit, die ist nämlich schon ziemlich stinkig auf mich :mrgreen: |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
Gruß Hagen |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
Die Farbe an sich ist auch eigentlich für das Vorhaben egal, die wird eh vom Original-Pixel her genommen. Eine Form-Annäherung zu haben, ist eigentlich ja noch besser als alleine die Helligkeit zu interpretieren. (Zumindest für mein Vorhaben) |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
In deinem Fall interssiert nicht der subjektive Gesamt-helligkeits-eindruck sondern die lokal gültige Helligkeit um bestimmen zu können welches ASCII für eine Pixelgruppe zu konvertieren ist. Die subjektive Gesamthelligkeit würde ich als prozentualen Parameter durch den Anwender vorgeben lassen und dann damit das Bild im Gesamten vor der Konvertierung in der Helligkeit umrechnen. Eventuell würde ich sogar noch eine Bildkontourverstärkung mit einbauen vor der egentlichen Konvertierung. Dh. du verändest die Kontraste innerhalb des Bildes um bei der ASCII Konvertierung eines sehr gleichmäßigen Bildes noch aussagekräftige ASCII Bilder zu bekommen. Gruß Hagen |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Sehr gute Idee, danke Hagen! Auch das werde ich dann mal ausprobieren.
Wie bereits gesagt, ich hatte bei meinem ersten Denk-Ansatz wohl den Wurm drin und dachte, ich müsse erstmal die ASCII-Zeichen der Helligkeit her sortieren (so wie man sie empfindet), um dann für einen gerenderten Quad das am nähersten an die Helligkeit herankommende Zeichen zu finden. |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
Das Mapping sollte also im Ergebnis den Helligkeitseindruck im Bild nicht verändern zum Helligkeitseindruck der ASCII Zeichen. Mit bischen Clevernis kannst du also auf den zwei Seiten deiner Formel die Variable Helligkeit raus streichen. Gruß Hagen |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Als Erstes würde ich aber einfach folgendes probieren:
Zeichne einen beliebigen ASCII Text über die Bitmap. Dabei benutzt du einen Zeichenmodus der die ASCII Zeichen als Schrift aus der Bitmap ausstanzt. Also helle Pixel im ASCII Zeichen erhalten das originale Bild und dunkle Pixel im ASCII Zeichen setzen den Pixel im Bild auf Schwarz. Gruß Hagen |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Das habe ich bereits.
Was mir daran missfällt ist aber die Tatsache, dass das Resultat eben eher eine Maske ist als eine Annäherung der Zeichen an das Original. z.B. wird ja so eine harte Kante im Bild nicht durch das am nähersten an diese Form kommende zeichen repräsentiert. |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Ich hätte dafür noch nen Ansatz: Naheme eine Pixelgruppe, die du konvertieren willst, und konvertiere sei erstmal zu Schwarzweiß (wg. Kontur) und vergleiche sie dann mit jedem Buchstaben, den du zur Verfügung hast. Bei jedem Unterschied wird ein Zähler erhöht, je höher der Zähler desto ungeeigneter ist der Buchstabe ;)
Wenn du dann noch die Farbe mit reintun willst, vielleicht noch mit der Durchschnittsfarbe einfärben. |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Uhh....bei dem Ansatz wird die Grafikkarte aber ganz schön kochen :)
|
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Was jfheins schrieb war auch mein Gedanke von unten auf Seite 1, wobei "binärisieren" total Hochgestochendeutsch für "schwarz-weiss machen" ist :drunken:
Im Grunde läufts darauf hinaus aus jedem Bildkästchen ein s/w Bild zu machen, und zu schauen welcher Buchstabe dem jetzt ähnlich schaut. Dann Farben wählen, und weiter. (GPUs können viel ab, gib ihr richtig :D ) |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Liste der Anhänge anzeigen (Anzahl: 3)
Sooo...ich bin am basteln :D
Da der Versuch mit den Götter-Algorithmen von jfheins, Medium und Hagen zwar geklappt hat, aber man wirklich nichts erkennen konnte :mrgreen:, habe ich noch ein paar Sachen dazugemacht und nun werden die Ascii-Zeichen je nach Helligkeit (absoluter! hahahaha...) anhand des Depth Buffer verzerrt und ab einer gewissen Schwelle von fill- zu linerender übergegangen. Ausserdem wird der Kontrakt extrem erhöht. Jetzt sieht das ganze schon eher nach Matrix-Style aus! :-D Ok, die Sinnhaftigkeit ist immer noch nicht da..... :oops: Aber was solls, ich hab was gelernt. Anbei drei Screenshots. Einmal der Original-Render, dann mit Stufe 1 (nur Tiefen/Helligkeits-Verzerrung) und dann mit depth <-> line. P.S. Ich sehe gerade, die Reihenfolge der Attachments ist hier ja umgekehrt..also ist das letzte Bild das erste..der letzte malt zuerst, oder so... |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Ahhhhhhh! Du willst das ganze wirklich als Textur, und nicht als Post-Processing! Sag das doch ;) (Ich hab angenommen du willst ca. dort hin, was im Moment in der Demoscene in Mode ist: Aufwendige Demos mit realtime ASCII-finish.)
Mhmhmh, dann ist das Nachbilden der Kanten/Strukturen ja völlig zweitrangig, und absolute Helligkeit erscheint mir hier auch als am sinnvollsten. Ich grübel nur grad nach, wie du besser an das "Anschmiegen" an die Models kommen könntest. Ich bin grad gedanklich bei UV-Maps, und die Texcoords als lookup in kleine Buchstabentexturen - nur bereitet mir Kopfzerbrechen, dass du im Pixelshader kaum dazu kommen wirst ganze mehrpixelige zusammenhängende Buchstaben rauszuwerfen. Zudem wäre das Erstellen der UV-Maps kein großer Spaß... Irgendwie müssen Welt-Koordinaten her, und zwar so, dass dennoch die Projektion erhalten bleibt. Uffa, ich glaub das ist erstmal nichts für halb vier :D. (Der Billig-Ansatz wären ja Buchstaben-Alphamaps, aber da warst du ja glaub ich schon.) Andere Billig-Idee: Deine Texturen sind bisher ja relativ einfach, bzw. haben recht enge Farbigkeit. Wie wäre es diese mit Buchstabentexturen in der Durchschnittlichen Farbe der Basistextur zu ersetzen? So lange du keine aufwendigeren mehrfarbigen Texturen hast, könnte das sogar einigermaßen gehen. (Texturdurchschnitte lassen sich übrigens rasend flott berechnen: Mipmaps bis 1px Größe erzeugen lassen, und tataaa, der Pixel hat die Durchschnittsfarbe ohne dass man was dafür getan hätte.) Schönes Problem :) (endlich mal wieder) |
Re: Empfundene Helligkeiten zweiter Grafiken - Ansatz?
Zitat:
Zitat:
Zitat:
Die Welt-Koordinaten habe ich ja aber im Shader. Zitat:
Das würde dann wohl ein ziemliches "Kuddelmuddel" ergeben (ok, aber sicher noch schöner als mein crap *g*) Dass die Farben so blass sind, liegt an der Lichtumgebung, es kann aber auch durchaus dunkel sein und mit sehr kräftigen Farben..mhm... Ich werd deinen Ansatz aber mal aufgreifen und weiterbasteln! Ich bin diesbezüglich eh für alles offen. Und da das ganze eh nur für den Spass am Basteln ist... :) Vielen Dank für die Idee :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz