Как мой курсор белее белого?


21

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

Фотография курсора

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

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

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

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

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

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

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

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

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

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


Вы играли с настройками яркости или контрастности на вашем мониторе?
Рон

1
Если приведенные выше изображения проблемы были сняты с использованием любого элемента камеры, который обрабатывает необработанные изображения sencor (они все делают даже при сохранении в необработанных форматах файлов), то визуальные результаты уже были изменены путем обработки данных sencor камеры. Чтобы облегчить эту проблему, было бы иметь «контроль». На белом фоне создайте изображение курсора (а не визуализированного отдельного курсора) и посмотрите, чем они отличаются. Используя различные методы и применяя элементы управления, вы можете предположить, где это произошло.
Psycogeek

@Psycogeek Полагаю, программное обеспечение в моих глазах делает то же самое. Как мне получить доступ к необработанным данным моего глаза? Если серьезно, то единственное, что я сделал с изображением, это обрезал его до нужного места. Я мог бы загрузить изображение скриншота курсора с фактическим курсором рядом с ним, но это не было бы более осветительным, чем я уже объяснил. Яркость (как я уже понял) колеблется от 0 до 255 (0xFF) на цветовой канал. Если бы белый цвет внутри курсора был в том же масштабе, он был бы примерно 275 (0x113), и просто не хватило бы места в 8 битах, чтобы закодировать это.
CJ Деннис

@ user2714915 я не отрегулировал яркость или контрастность где - нибудь ! Это не доходит до сути моего вопроса: как курсор может быть ярче, чем самый яркий цвет, который может быть закодирован в 8 битах, когда мой графический режим имеет 8 бит на цвет канала?
CJ Деннис

@CJDennis: Какие программы затронуты? Это похоже на проблему калибровки гаммы для меня.
Джеймс П,

Ответы:


10

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

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

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

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

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

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

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

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


Я согласен, что курсор более заметен. Меня это не раздражает, мне было просто любопытно, как это возможно технически. Поддерживает ли HDMI более 8 бит на канал, или остальная часть изображения сжата (как при сжатии звука, а не при сжатии цифровых данных), так что некоторые уровни эквивалентны соседнему уровню?
CJ Деннис

1
HDMI передает несжатые данные, скорее всего, в вашем случае по 8 бит на канал, но он способен передавать больше. Эта проблема возникает до сигнала HDMI
Ричи Фрейм

В en.wikipedia.org/wiki/Uncompressed_video упоминается, что HDMI может иметь размер 24, 30, 36 или 48 бит на пиксель (8, 10, 12 или 16 бит на канал). Таким образом, если в моей системе он отправляется как 10 битов на канал, «чистый» белый цвет может быть 0x3B3 на канал, а белый цвет курсора - 0x3FF. Это позволило бы различить все 256 8-битных уровней, в то же время оставляя место для особо ярких цветов для курсора. Большинство соседних уровней будут иметь разность 0x4, но некоторые будут только 0x3.
CJ Деннис

Если ваша видеокарта настроена на вывод 10-битных каналов, то она 10-битная, но маловероятно, что это так
Richie Frame

Я нашел настройку на панели управления NVIDIA, которая позволяет мне регулировать яркость. Это влияет только на изображение на экране, а не на курсор. Я могу уменьшать яркость до тех пор, пока белый не станет, по-видимому, около 0xC0, чтобы курсор действительно выделялся! Я не вижу ничего о битах на канал передачи.
CJ Деннис

1

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

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

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

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

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

- на контрольном снимке все остальное не относится к этому конкретному вопросу -

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.