Wie ist mein Cursor weißer als weiß?


21

Ich habe kürzlich bemerkt, dass mein Cursor weißer war als der weiße Hintergrund (reines 0xFFFFFF). Ich dachte ursprünglich, es sei eine optische Täuschung, da Screenshots zeigten, dass sowohl der Hintergrund als auch der Cursor sich auf 0xFFFFFF befanden. Dann habe ich ein Foto des Cursors gemacht und es zeigt deutlich einen Helligkeitsunterschied:

Foto des Cursors

Ich habe dem Bild einen Mosaikfilter hinzugefügt, um die durchschnittliche Helligkeit besser zu sehen:

Foto des Cursors mit Mosaikfilter

Das Innere des Pfeils ist ungefähr 191 grau (0xBF) und der Hintergrund ist ungefähr 177 grau (0xB1), was bedeutet, dass das Weiß des Cursors ungefähr 8% heller ist als das reine Weiß des Hintergrunds.

Welche Hardware macht das und wie? Wird die Farbinformation mit mehr als 8 Bit pro Kanal übertragen?

Der Computer ist Windows XP mit einer NVIDEA GeForce 8500 GT-Grafikkarte, die über ein HDMI-Kabel mit einem Samsung 5100-Fernseher verbunden ist.

Ein anderes Foto:

Zwei Cursor und ein schattiertes Quadrat

Ein Hardware-Cursor, ein Screenshot des Hardware-Cursors und ein 16x16-Quadrat jedes Grauwerts von 0 bis 0xFF in 2x2-Blöcken.

Zwei Cursor und ein schattiertes Quadrat mit Mosaikfilter

Entspricht dem vorherigen Bild, jedoch mit angewendetem Mosaikfilter. Es sollte offensichtlich sein, welches der tatsächliche Cursor und welches der Screenshot des Cursors auf dem Foto ist. Die Helligkeit beträgt diesmal 185 und 170, immer noch ca. 8% Unterschied. Bei Verwendung eines Farbwählers ist die auf dem Foto angezeigte Farbe 0xFFFFFF. Ich kann den Farbwähler nicht am Cursor selbst verwenden, da er die Farbe direkt unter dem Cursor abtastet.


Haben Sie mit den Helligkeits- oder Kontrasteinstellungen Ihres Monitors gespielt?
Ron

1
Wenn die obigen Bilder des Problems mit einem beliebigen Kameraobjekt aufgenommen wurden, das die rohen Sensorbilder verarbeitet (dies funktioniert auch bei Speicherung in rohen Dateiformaten), wurden die visuellen Ergebnisse bereits durch die Verarbeitung der Sencordaten der Kamera geändert. Um dieses Problem zu lösen, müsste man eine "Kontrolle" haben. Zeigen Sie auf dem weißen Hintergrund ein Bild eines Cursors (kein gerenderter separater Cursor), und beobachten Sie, wie sie sich unterscheiden. Mit verschiedenen Methoden und Steuerelementen können Sie dann davon ausgehen, wo es aufgetreten ist.
Psycogeek

@ Psycogeek Ich denke, die Software in meinen Augen macht dann das Gleiche. Wie greife ich auf die Rohdaten meines Auges zu? Im Ernst, das einzige, was ich mit dem Bild gemacht habe, war es auf das relevante Stück zuzuschneiden. Ich könnte ein Bild eines Screenshots des Cursors mit dem tatsächlichen Cursor daneben hochladen, aber es wäre nicht aufschlussreicher, als ich es bereits erklärt habe. Die Helligkeit (wie ich es vorher verstanden habe) liegt zwischen 0 und 255 (0xFF) pro Farbkanal. Wenn das Weiß innerhalb des Cursors auf der gleichen Skala wäre, wäre es ungefähr 275 (0x113) und es gibt einfach nicht genug Platz in 8 Bits, um dies zu codieren.
CJ Dennis

@ user2714915 Ich habe nirgends die Helligkeit oder den Kontrast angepasst ! Das bringt mich nicht wirklich auf den Punkt: Wie kann der Cursor heller sein als die hellste Farbe, die in 8 Bit codiert werden kann, wenn mein Grafikmodus 8 Bit pro Kanalfarbe beträgt?
CJ Dennis

@CJDennis: Welche Programme sind betroffen? Dies scheint mir ein Problem mit der Gammakalibrierung zu sein.
James P

Antworten:


10

Wie in der Antwort von Psychogeek erwähnt, handelt es sich hierbei um ein Problem mit der Einstellung des Farbprofils durch das Betriebssystem.

Farbprofile können von der Anwendung, dem Betriebssystem, der Grafikkarte und der Anzeigehardware angewendet werden.

Bei Betriebssystemfarbprofilen unter Windows wird beim Senden an die Grafikkarte das Farbprofil auf den Cursor anders angewendet als auf das Bildschirmbild. Dies kann zu unterschiedlichen Farben führen, wenn das Farbprofil den Weißpunkt ändert. In Ihrem Fall wird der Cursor als echtes Weiß gesendet, während auf das Bild darunter ein Farbprofil angewendet wird, wodurch der Weißpunkt auf eine niedrigere Stufe geändert wird.

Der Cursor wird getrennt von den restlichen Anzeigedaten auf die Grafikkarte gesendet und zu einem späteren Zeitpunkt während des Renderns von der Grafikkarte eingemischt, bevor er an die Anzeige gesendet wird.

Auf einer vereinfachten Ebene:

[Cursor Draw]   --   --   --   --   --   --   --
                                               ˅
[Windowing] --> [OS Profile] --> [Video Driver] --> [Video Card] --> [Hardware Profile] --> ...

Ein Screenshot wendet das OS-Farbprofil nicht auf die "Schuss" -Daten an, da es in der Fensterphase erfasst wird. In der Regel wird der Cursor bei der Screenshot-Aufnahme nicht angezeigt, da die Aufnahme bereits vor dem Anwenden des Betriebssystemprofils erfolgt. Bestimmte Werkzeuge (von denen ich annehme, dass Sie sie verwendet haben), um den Bildschirm aufzunehmen, mischen den Cursor über das Bild, so wie es die Grafikkarte tut. Da die Weißpegel des Cursors und des Hintergrunds beide 100% betragen, weist der Screenshot für beide denselben Weißpegel auf.

Das normale Verhalten, das Sie sehen, kann mithilfe eines Monitors oder einer Grafikkarte mit einer Hardware-LUT für die Farbkalibrierung behoben werden . Sie können das Cursorbild auch bearbeiten und den Weißpegel ändern, wenn es Sie stört. Ich denke jedoch, dass es den Cursor auf dem Bildschirm wahrnehmbarer macht.


Ich stimme zu, dass der Cursor auffälliger ist. Es nervt mich nicht, ich war nur neugierig, wie es technisch möglich ist. Überträgt HDMI mehr als 8 Bit pro Kanal oder ist der Rest des Bildes komprimiert (wie bei der Audiokomprimierung, nicht bei der digitalen Datenkomprimierung), sodass einige Pegel dem benachbarten Pegel entsprechen?
CJ Dennis

1
HDMI überträgt unkomprimierte Daten, höchstwahrscheinlich 8 Bit pro Kanal, kann jedoch mehr übertragen. Dieses Problem tritt vor dem HDMI-Signal auf
Richie Frame

en.wikipedia.org/wiki/Uncompressed_video erwähnt, dass HDMI 24, 30, 36 oder 48 Bit pro Pixel (8, 10, 12 oder 16 Bit pro Kanal) sein kann. Wenn also auf meinem System 10 Bit pro Kanal gesendet werden, kann "reines" Weiß 0x3B3 pro Kanal sein, während das Weiß des Cursors 0x3FF ist. Auf diese Weise könnten alle 256 8-Bit-Ebenen unterschieden werden, und der Cursor könnte in besonders hellen Farben dargestellt werden. Die meisten benachbarten Ebenen hätten einen Unterschied von 0x4, aber einige wären nur 0x3.
CJ Dennis

Wenn Sie Ihre Grafikkarte für die Ausgabe von 10-Bit-Kanälen eingerichtet haben, ist dies 10-Bit, aber es ist unwahrscheinlich, dass dies der Fall ist
Richie Frame

In der NVIDIA-Systemsteuerung wurde eine Einstellung gefunden, mit der ich die Helligkeit anpassen kann. Es wirkt sich nur auf das Bildschirmbild aus, nicht auf den Cursor. Ich kann die Helligkeit verringern, bis Weiß ungefähr 0xC0 beträgt, wodurch der Cursor wirklich auffällt! Ich kann jedoch nichts über Bits pro Übertragungskanal sehen.
CJ Dennis

1

Diese Antwort beginnt mit einer Analyse, warum die Dinge bei digitalen nicht 1: 1 sind, und endet mit möglichen Möglichkeiten, Dinge basierend auf Ihrer eigentlichen Frage zu ändern.

  • Machen Sie ein Foto mit Ihrer Kamera, alle Sensordaten werden verarbeitet.
  • Dann wird es zu Tode komprimiert.
  • Dann bewegt es sich 1: 1 auf Ihren Computer.
  • Wo es angezeigt wird, wird durch alle OS-Farbprofile angepasst.
  • Wo es digital auf einer Grafikkarte gezeichnet ist, die nicht nur vom Benutzer angepasst werden kann, sondern auch einige eigene Farbtricks hat.
  • 1: 1 an den Monitor gesendet.
  • Wo es bei der Verarbeitung vollständig angegriffen werden kann, bevor es zu einem Anzeigefeld gemacht wird.
  • Das Anzeigefeld selbst kann nicht alle Aspekte rendern.
  • Die Hintergrundbeleuchtungsfarben variieren in großen Prozentsätzen basierend auf dem Farbspektrum, das die Hintergrundbeleuchtung abgibt.

In diesem Fall ist der Cursor (wahrscheinlich) ein hardwarerendertes Element, das in der Hardware der Grafikkarte eingeblendet ist. Das erste, was Sie prüfen oder anpassen müssen, um es zu ändern, ist das Monitorprofil und / oder die vom Betriebssystem angewendeten Farbprofile. Farbprofile finden Sie in Systemsteuerung, Alle Elemente der Systemsteuerung, Farbverwaltung. Dort finden Sie Farbprofile, die die Farbe ändern, bevor sie auf den Monitor gelangen.
Die Profile können deaktiviert werden, sodass Sie den Effekt beobachten können.

Anpassungen in der Grafikkartensoftware. Der Desktop, das 3D- und das Video-Direct-Draw-Zeug sind alle steuerbar, auch wenn diese Dinge nicht in der Grafikkartensoftware eingestellt wurden, kann es sein, dass, wenn alles auf 0 0 0 gesetzt ist, noch einige Verarbeitungsschritte vorhanden sind. Sie können versuchen, es zu verwenden, um die Cursorüberlagerung abzugleichen, wenn es einen wirklichen Grund gibt, sich damit zu beschäftigen.

Die Grafikkarte überlagert den gerenderten Hardware-Cursor und verwendet nicht die gleichen Parameter wie der Rest des Hintergrunds, und genau so funktioniert es.

--basiert auf dem Kontrollbild trifft keiner der anderen auf diese spezielle Frage zu--

Eine andere Möglichkeit sind Monitoreinstellungen, obwohl dies weniger wahrscheinlich ist. Automatischer Kontrast, automatische Farbelemente in Monitoren und Fernsehgeräten können große helle oder dunkle Bereiche ausgleichen und verursachen häufig unerwünschte Änderungen. Die automatischen Farb- und Verlaufsanpassungen in Monitoren sind nicht immer anpassbar und verwenden für die von ihnen ausgeführten Aktionen viele verschiedene hübsche Namen.

Profile in Monitoren wie Spielen, Filmen, Desktops oder anderen Namen, die sie für Profile verwenden, legen bestimmte Einstellungen für Farbe, Kontrast und Helligkeit fest, die sie für das ausgewählte Profil als nützlich erachten. Auch bei der richtigen Profilauswahl können unerwünschte Änderungen auftreten.

Durch Schärfungsalgorithmen in der Kamera, wahrscheinlich nicht auf der Grafikkarte, sondern erneut auf dem Monitor, kann eine Matrix von Hervorhebungen um Bereiche erstellt werden, die die ursprünglichen Kontraste erhöhen oder (natürlich) verringern. In dieser Frage ist es weniger wahrscheinlich, weil sich das Weiß über die Pixel hinaus ausdehnt, auf die eine Schärfungsmatrix angewendet werden würde, es sei denn, es handelt sich um eine zwei verschiedene Verarbeitung.

Die Liste wird noch länger, wenn Software nicht unbedingt einen stark weißen Hintergrund haben muss. Sie kann angepasst werden. Das Betriebssystem und die Programme können einen Hintergrund haben, der nicht weiß ist, aber Sie wissen bereits, dass dies nicht der Fall ist, wenn Sie auf dem ursprünglichen Desktop oder Programm eine Farbauswahl für den Hintergrund vorgenommen haben.

Die Farbauswahl auf dem Desktop zeigt Ihnen die Farbe des Pixels (oder der Pixel), die dort vorhanden sind, und gibt dem Benutzer die Fakten darüber, was das Programm anzeigt. Das Farbfoto kommt, bevor ein Farbprofil die Ausgabe anpasst. Die Farbauswahl ist daher eine hervorragende Möglichkeit, die tatsächliche Farbe zu ermitteln. Dann geht es nochmal durch die Bearbeitung.

Es gibt Programme, die eine Bildschirmaufnahme mit dem überlagerten Cursor durchführen. von da an könnte eine Person eine Farbauswahl treffen, aber der Cursor kann wiederum mit einer anderen Methode gezeichnet und auf die gleiche Weise wie der Rest verarbeitet werden. Während es also möglich ist, eine Software-Digitalaufnahme des Bildschirms und des Cursors durchzuführen, kann dies das ändern, was hier tatsächlich gesehen wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.