Почему мой курсор белее белого?

Почему мой курсор белее белого?

Недавно я заметил, что мой курсор был белее, чем фон (чистый 0xFFFFFF). Сначала я думал, что это оптическая иллюзия, так как скриншоты показывали, что и фон, и курсор были на 0xFFFFFF. Затем я сделал фотографию курсора, и на ней отчетливо видна разница в яркости:

Фото курсора

Я наложил на изображение мозаичный фильтр, чтобы лучше увидеть среднюю яркость:

Фотография курсора с мозаичным фильтром

Внутренняя часть стрелки имеет оттенок серого примерно 191 (0xBF), а фон — оттенок серого примерно 177 (0xB1), то есть белый цвет курсора примерно на 8% ярче чистого белого цвета фона.

Какое оборудование это делает и как? Передается ли цветовая информация более чем 8 бит на канал?

Компьютер работает под управлением Windows XP с видеокартой NVIDIA GeForce 8500 GT, подключенной к телевизору Samsung 5100 через кабель HDMI.

Другая фотография:

Два курсора и закрашенный квадрат

Один аппаратный курсор, один снимок экрана аппаратного курсора и квадрат 16x16 каждого значения шкалы серого от 0 до 0xFF в блоках 2x2.

Два курсора и затененный квадрат с мозаичным фильтром

То же самое, что и предыдущее изображение, но с применением мозаичного фильтра. Должно быть очевидно, где настоящий курсор, а где снимок экрана курсора на фотографии. Яркость на этот раз составляет 185 и 170, разница все еще около 8%. При использовании палитры цветов цвет, который на фотографии равен 170, на экране равен 0xFFFFFF. Я не могу использовать палитру цветов на самом курсоре, потому что она выбирает цвет прямо под курсором.

решение1

Как упоминалось в ответе Psychogeek, это проблема с настройкой цветового профиля операционной системой.

Цветовые профили могут применяться приложением, операционной системой, видеокартой и аппаратным обеспечением дисплея.

Для цветовых профилей ОС в Windows при отправке на видеокарту цветовой профиль применяется к курсору иначе, чем к изображению на экране, что может привести к разным цветам, если цветовой профиль изменяет белую точку. В вашем случае курсор отправляется как истинно белый, в то время как к изображению под ним применен цветовой профиль, изменяющий белую точку на более низкий уровень.

Курсор отправляется на видеокарту отдельно от остальных данных дисплея и смешивается с ними видеокартой на более позднем этапе рендеринга, перед отправкой на дисплей.

На упрощенном уровне:

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

Скриншот не применяет цветовой профиль ОС к данным «снимка», поскольку он захватывается на этапе оконной обработки. Обычно снимок экрана не показывает курсор, поскольку он захватывается еще до применения профиля ОС. Однако определенные инструменты (которые, как я предполагаю, вы использовали) для захвата экрана будут смешивать курсор с изображением так же, как это делает видеокарта. Поскольку уровни белого курсора и фона оба равны 100%, снимок экрана имеет одинаковый уровень белого для обоих.

Нормальное поведение, которое вы видите, можно исправить, используя монитор или видеокарту с аппаратной LUT для калибровки цвета или принудительно перенеся отрисовку курсора в другую точку рендеринга, см. здесь.Фото.SE вопрос. Вы также можете редактировать изображение курсора и менять уровень белого, если он вас раздражает. Однако я думаю, что это делает курсор более заметным на экране.

решение2

Этот ответ начинается с анализа того, почему все не соответствует цифровым технологиям, и заканчивается возможными способами изменения ситуации на основе вашего фактического вопроса.

  • Сделайте снимок камерой, все данные с датчиков будут обработаны.
  • Затем его сжимают до смерти.
  • Затем он перемещается 1:1 на ваш компьютер.
  • Где он отображается с корректировкой цветовых профилей ОС.
  • Где он отрисован в цифровом виде на видеокарте, которую не только может настраивать пользователь, но и которая может иметь некоторые собственные цветовые трюки.
  • Отправлено на монитор 1:1.
  • Где он может быть полностью подвергнут обработке, прежде чем попадет на дисплейную панель.
  • Сама панель дисплея не способна отобразить все аспекты.
  • Цвета подсветки варьируются в огромных процентных долях в зависимости от цветового спектра, излучаемого подсветкой.

В этом случае курсор (вероятно) является аппаратно отрисованным элементом, который накладывается на аппаратное обеспечение видеокарты. Первое, что нужно посмотреть или попытаться настроить, чтобы изменить его, это профиль монитора и/или применяемые ОС цветовые профили. Цветовые профили находятся в панели управления, Все элементы панели управления, Управление цветом, там вы найдете цветовые профили, которые изменяют цвет до того, как он попадет на сам монитор.
Профили можно отключить, чтобы вы могли наблюдать эффект, который они оказывают.

Настройки в программном обеспечении видеокарты. Рабочий стол, 3D и видео с прямой прорисовкой — все это можно контролировать, даже если эти вещи не были настроены в программном обеспечении видеокарты, может быть, что при установке всего этого на 0 0 0 все равно будет какая-то обработка. Вы можете попробовать использовать его для соответствия наложению курсора, если есть реальная причина беспокоиться об этом.

Видеокарта накладывает курсор, отрисованный аппаратно, и не использует для него те же параметры, что и для остального фона, и именно так это и работает.

--судя по контрольной картинке, ни одна из остальных не относится к этому конкретному вопросу--

Другая возможность — настройки монитора, хотя это менее вероятно. Автоматический контраст, автоматические элементы цвета в мониторах и телевизорах могут сбалансировать огромные яркие или темные области и часто вызывают нежелательные изменения. Автоматические настройки цвета и выравнивания в мониторах не всегда настраиваемы и используют много разных симпатичных названий для действий, которые они выполняют.

Профили в мониторах, такие как игровые, кинопрофили, профили рабочего стола или любые другие названия, которые они используют для профилей, устанавливают определенные настройки цвета, контрастности и яркости, которые они считают полезными для выбранного профиля, и, опять же, могут иметь нежелательные изменения даже при правильном выборе профиля.

Алгоритмы резкости в камере, вряд ли в видеокарте, но опять же в мониторе, могут создать матрицу подсветки вокруг областей, увеличивая исходные контрасты или (конечно) уменьшая их. В этом вопросе это менее вероятно, потому что белый цвет выходит за пределы пикселей, к которым будет применяться матрица резкости, если только это не 2 разные обработки.

Список становится еще длиннее, когда ПО на самом деле не обязательно должно иметь абсолютно белый фон, его можно настроить. ОС и программы могут иметь фон, который не белый, но вы уже знаете, что это не так, в этом вопросе, если вы сделали выбор цвета фона, на исходном рабочем столе или в программе.

Выбор цвета на рабочем столе показывает вам цвет пикселя (или пикселей), которые там есть, предоставляя пользователю факты о том, что отображает программа. Цветная картинка появляется до того, как какой-либо цветовой профиль настраивает вывод. Поэтому выбор цвета — это отличный способ узнать фактический цвет. Затем он все равно снова проходит обработку.

Существуют программы, которые делают захват экрана с наложенным курсором. Из этого человек может сделать выбор цвета вещей, но опять же курсор может быть нарисован с использованием другого метода и обработан так же, как и все остальное. Так что, хотя возможно сделать программный цифровой захват экрана и включить курсор, это может изменить то, что на самом деле здесь видно.

Связанный контент