W jaki sposób mój kursor jest bielszy niż biały?

21

Ostatnio zauważyłem, że mój kursor jest bielszy niż białe tło (czyste 0xFFFFFF). Początkowo myślałem, że to złudzenie optyczne, ponieważ robienie zrzutów ekranu pokazało, że zarówno tło, jak i kursor były w 0xFFFFFF. Następnie zrobiłem zdjęcie kursora i wyraźnie pokazuje różnicę jasności:

Zdjęcie kursora

Na obrazie nakładam filtr mozaikowy, aby lepiej widzieć średnią jasność:

Zdjęcie kursora z filtrem mozaikowym

Wnętrze strzałki ma około 191 szarości (0xBF), a tło około 177 szarości (0xB1), co oznacza, że ​​biel kursora jest o około 8% jaśniejsza niż czysta biel tła.

Jaki sprzęt to robi i jak? Czy informacja o kolorze jest przesyłana z więcej niż 8 bitami na kanał?

Komputer to Windows XP z kartą graficzną NVIDEA GeForce 8500 GT podłączoną do telewizora Samsung 5100 za pomocą kabla HDMI.

Inne zdjęcie:

Dwa kursory i zacieniony kwadrat

Jeden kursor sprzętowy, jeden zrzut ekranu kursora sprzętowego i kwadrat 16 x 16 każdej wartości skali szarości od 0 do 0xFF w blokach 2x2.

Dwa kursory i zacieniony kwadrat z filtrem mozaikowym

To samo co poprzedni obraz, ale z zastosowanym filtrem mozaikowym. Powinno być oczywiste, który jest rzeczywistym kursorem, a który jest zrzutem ekranu kursora na zdjęciu. Jasność tym razem wynosi 185 i 170, wciąż około 8% różnicy. Używając próbnika kolorów, kolor na zdjęciu wynoszący 170 to 0xFFFFFF na ekranie. Nie mogę użyć próbnika kolorów na samym kursorze, ponieważ próbkuje on kolor bezpośrednio pod kursorem.

CJ Dennis
źródło
Czy grałeś z ustawieniami jasności lub kontrastu na monitorze?
Ron
1
Jeśli powyższe zdjęcia problemu zostały przechwycone przy użyciu dowolnego elementu kamery, który przetwarza surowe zdjęcia sencora (wszystkie robią to nawet wtedy, gdy są przechowywane w nieprzetworzonych formatach plików), wówczas wyniki wizualne zostały już zmienione przez przetwarzanie danych sencor aparatu. Rozwiązaniem tego problemu byłoby posiadanie „kontroli”. Na białym tle miej obraz cursera (a nie renderowanego osobnego cursera) i obserwuj, jak się różnią. Korzystając z różnych metod i stosując elementy sterujące, możesz założyć, gdzie to miało miejsce.
Psycogeek
@Psycogeek Wydaje mi się, że oprogramowanie w moich oczach robi to samo. Jak uzyskać dostęp do nieprzetworzonych danych mojego oka? Poważnie, jedyne, co zrobiłem z obrazem, to przycięcie go do odpowiedniego fragmentu. Mógłbym załadować zrzut ekranu kursora z faktycznym kursorem obok niego, ale nie byłby bardziej pouczający niż to, co już wyjaśniłem. Jasność (jak to wcześniej rozumiałem) wynosi od 0 do 255 (0xFF) na kanał koloru. Jeśli biel wewnątrz kursora byłaby w tej samej skali, byłaby to w przybliżeniu 275 (0x113) i po prostu nie ma wystarczającej ilości miejsca w 8 bitach, aby to zakodować.
CJ Dennis
@ user2714915 Nie regulować jasność lub kontrast nigdzie ! To nie trafia do sedna mojego pytania: w jaki sposób kursor może być jaśniejszy niż najjaśniejszy kolor, który można zakodować w 8 bitach, kiedy mój tryb graficzny to 8 bitów na kolor kanału?
CJ Dennis
@CJDennis: Na jaki program (programy) ma to wpływ? Wygląda mi to na problem z kalibracją gamma.
James P

Odpowiedzi:

10

Jak wspomniano w odpowiedzi Psychogeek, jest to problem z ustawieniem profilu kolorów przez system operacyjny.

Profile kolorów mogą być stosowane przez aplikację, system operacyjny, kartę graficzną i sprzęt wyświetlający.

W przypadku profili kolorów systemu operacyjnego w systemie Windows, po wysłaniu na kartę graficzną profil kolorów jest stosowany inaczej do kursora niż do obrazu na ekranie, co może powodować różne kolory, jeśli profil kolorów zmieni punkt bieli. W twoim przypadku kursor jest wysyłany jako prawdziwa biel, podczas gdy obrazek poniżej ma zastosowany profil kolorów, zmieniając punkt bieli na niższy poziom.

Kursor jest wysyłany na kartę graficzną oddzielnie od reszty wyświetlanych danych i jest miksowany przez kartę wideo na późniejszym etapie podczas renderowania, zanim zostanie wysłany na ekran.

Na poziomie uproszczonym:

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

Zrzut ekranu nie stosuje profilu koloru systemu operacyjnego do danych „strzału”, ponieważ jest on przechwytywany na etapie okienkowania. Zasadniczo zrzut ekranu nie pokazuje kursora, ponieważ jest przechwytywany nawet przed zastosowaniem profilu systemu operacyjnego. Jednak niektóre narzędzia (które, jak zakładam, użyłeś) do przechwytywania ekranu, mieszają kursor nad obrazem w taki sam sposób, jak karta graficzna. Ponieważ poziomy bieli kursora i tła są równe 100%, zrzut ekranu ma ten sam poziom bieli dla obu.

Normalne zachowanie, które widzisz, można naprawić za pomocą monitora lub karty graficznej ze sprzętową LUT do kalibracji kolorów lub wymuszając rysowanie kursorem w innym punkcie renderowania, zobacz to pytanie Photo.SE . Możesz także edytować obraz kursora i zmienić poziom bieli, jeśli cię denerwuje. Myślę jednak, że sprawia, że ​​kursor jest bardziej widoczny na ekranie.

Ramka Richiego
źródło
Zgadzam się, że kursor jest bardziej zauważalny. Nie denerwuje mnie to, byłem tylko ciekawy, jak jest to technicznie możliwe. Czy HDMI przenosi więcej niż 8 bitów na kanał lub czy reszta obrazu jest skompresowana (jak w przypadku kompresji audio, a nie cyfrowej kompresji danych), aby niektóre poziomy były równoważne poziomowi sąsiadującemu?
CJ Dennis
1
HDMI przenosi nieskompresowane dane, najprawdopodobniej 8-bitów na kanał w twoim przypadku, ale może przenosić więcej. Ten problem występuje przed sygnałem HDMI
Richie Frame
en.wikipedia.org/wiki/Uncompressed_video wspomina, że ​​HDMI może mieć 24, 30, 36 lub 48 bitów na piksel (8, 10, 12 lub 16 bitów na kanał). Więc jeśli jest wysyłany jako 10 bitów na kanał w moim systemie, „czysta” biel może wynosić 0x3B3 na kanał, podczas gdy biel kursora to 0x3FF. Pozwoliłoby to na odróżnienie wszystkich 256 8-bitowych poziomów, jednocześnie pozostawiając miejsce na wyjątkowo jasne kolory dla kursora. Większość sąsiednich poziomów miałaby różnicę 0x4, ale kilka byłoby tylko 0x3.
CJ Dennis,
Jeśli masz skonfigurowaną kartę wideo do wyprowadzania kanałów 10-bitowych, jest ona 10-bitowa, ale nie jest to prawdopodobne
Richie Frame
Znalazłem ustawienie w panelu sterowania NVIDIA, które pozwala mi regulować jasność. Wpływa tylko na obraz na ekranie, a nie na kursor. Mogę obniżyć jasność, dopóki biały nie będzie, prawdopodobnie, około 0xC0, dzięki czemu kursor naprawdę się wyróżni! Nic nie widzę w bitach na kanał transmisyjny.
CJ Dennis,
1

Ta odpowiedź zaczyna się od analizy, dlaczego nie jest to 1: 1 z cyfrową, a kończy na możliwych sposobach zmiany rzeczy w oparciu o twoje aktualne pytanie.

  • Zrób zdjęcie aparatem, wszystkie dane z czujnika zostaną przetworzone.
  • Następnie jest ściskany na śmierć.
  • Następnie przesuwa się 1: 1 na komputer.
  • Jego wyświetlanie jest regulowane przez dowolny profil kolorów systemu operacyjnego.
  • Tam, gdzie jest rysowany cyfrowo na karcie graficznej, która nie tylko może być dostosowywana przez użytkownika, ale może mieć także własne triki kolorystyczne.
  • Wysłane na monitor 1: 1.
  • Gdzie może zostać całkowicie zaatakowany podczas przetwarzania, zanim trafi do panelu wyświetlacza.
  • Sam panel wyświetlacza nie jest w stanie renderować wszystkich jego aspektów.
  • Kolory podświetlenia zmieniają się o ogromne wartości procentowe w oparciu o spektrum kolorów emitowanych przez podświetlenie.

W takim przypadku kursor jest (prawdopodobnie) renderowanym sprzętowo elementem, który jest nałożony na sprzęt karty graficznej. Pierwszą rzeczą do sprawdzenia lub próby dostosowania w celu zmiany jest profil monitora i / lub profile kolorów zastosowane w systemie operacyjnym. Profile kolorów znajdują się w Panelu sterowania, Wszystkie elementy panelu sterowania, Zarządzanie kolorami w nim znajdziesz profile kolorów, które zmieniają kolor, zanim dotrze do samego monitora.
Profile można wyłączyć, dzięki czemu można obserwować ich działanie.

Zmiany w oprogramowaniu karty graficznej. Pulpit, 3D i bezpośrednie rysowanie wideo można kontrolować, nawet jeśli te rzeczy nie zostały dostosowane w oprogramowaniu karty graficznej, możliwe, że po ustawieniu na 0 0 0 nadal istnieje pewne przetwarzanie. Możesz spróbować użyć go, aby dopasować nakładkę curser, jeśli istnieje jakiś prawdziwy powód, aby się tym przejmować.

Karta wideo nakłada się na sprzętowo renderowany curser i nie używa tych samych parametrów, co reszta tła, i tak właśnie działa.

- na podstawie zdjęcia kontrolnego żadna reszta nie dotyczy tego konkretnego pytania -

Inną możliwością są ustawienia monitora, choć jest to mniej prawdopodobne. Automatyczny kontrast, automatyczne kolory elementów na monitorach i telewizorach mogą zrównoważyć ogromne jasne lub ciemne obszary i często powodują niepożądane zmiany. Automatyczne korekty kolorów i poziomów w monitorach nie zawsze są regulowane i używają wielu różnych uroczych nazwisk dla wykonywanych czynności.

Profile na monitorach, takie jak gra, film, pulpit lub dowolne nazwy, których używają dla profili, określają określone ustawienia kolorów, kontrastu i jasności, które uznają za przydatne dla wybranego profilu, i ponownie mogą to być niepożądane zmiany, nawet dla właściwego wyboru profilu.

Algorytmy wyostrzania w kamerze, prawdopodobnie na karcie graficznej, ale ponownie na monitorze mogą tworzyć matrycę podświetlania wokół obszarów, zwiększając oryginalne kontrasty lub (oczywiście) zmniejszając go. W tym pytaniu jest mniej prawdopodobne, ponieważ biel rozszerza się poza piksele, do których miałaby zastosowanie matryca wyostrzająca, chyba że byłyby to 2 różne przetwarzanie.

Lista jest jeszcze dłuższa, gdy oprogramowanie nie musi mieć wyraźnego białego tła, można je dostosować. System operacyjny i programy mogą mieć tło, które nie jest białe, ale już wiesz, że tak nie jest, w tym pytaniu, jeśli wybrałeś kolor tła, na oryginalnym pulpicie lub programie.

Wybór kolorów na pulpicie pokazuje kolor piksela (lub pikseli), który tam istnieje, dostarczając użytkownikowi faktów na temat tego, co wyświetla program. Kolor obrazu pojawia się, zanim jakikolwiek profil kolorów dostosuje wydajność. Wybieranie kolorów to świetny sposób na odkrycie rzeczywistego koloru. Następnie nadal przechodzi przez przetwarzanie.

Istnieją programy, które wykonają zrzut ekranu z nakładką curser. z tego osoba mogłaby wybrać kolor rzeczy, ale ponownie kursor może zostać narysowany przy użyciu innej metody i przetworzony w taki sam sposób, jak reszta. Tak więc, chociaż możliwe jest cyfrowe oprogramowanie do przechwytywania ekranu i włączania cursera, może to zmienić to, co jest tutaj widoczne.

Psycogeek
źródło