Microsoft office - nierówny gradient

0

Mam Office 2007, o ile pamiętam, w Office 2002 jest ten sam problem.

Nie wiem, jak inne części Offica, ale ja testowałem w Word i PowerPoint z Office 2007 i w obu tych programach jest ten sam problem.

Mianowicie chodzi o gradient.

Rysuję prostokąt bądź definiuję tło slajdu, włączam wypełnienie gradientowe, przejście liniowe z koloru czarnego do białego. Na pierwszy rzut oka wszystko wydaje się być w porządku.

Czarny kolor ma RGB=(0,0,0), a biały ma RGB=(255,255,255). Na podstawie tych dwóch wartości można obliczyć wartości RGB dla dowolnego punktu, np. w odległości 1/4 boku prostokąta od strony czarnego koloru powinien być ok. RGB=(32,32,32), w połowie RGB=(128,128,128), a w odległości 3/4 długości boku powinno być RGB=(192,192,192).

Pisałem jakiś program operujący na kolorach i potrzebowałem grafikę z płynnym przejściem od czarnego do białego. Myślałem, że najprościej odpalić Worda, narysować prostokąt, wypełnić gradientem, print screen, wkleić do Painta, skadrować i już jest. Przy analizie działania programu stwierdziłem, że coś działa nie tak i wtedy odkryłem, że przyczyną jest nierówny gradient, dlatego postanowiłem się temu przyjrzeć i dlatego założyłem ten temat. Musiałem napisać drugi program, który wygeneruje odpowiednią grafikę i mam gwarancję, że gradient jest równy.

Natomiast Adobe Photoshop CS2 generuje o wiele lepsze gradienty, choć też nie idealne. W połowie jest rzeczywiście RGB=(128,128,128), a kolory RGB=(64,64,64) oraz RGB=(192,192,192) są nieco za blisko środka, więc też gradient nie rest idealnie równomierny, ale już i tak lepiej niż w Officie.

Załączam plik testowy, który jasno i wyraźnie obrazuje ten problem.
Prostokąt jest wypełniony gradientem, a kwadraty poniżej obrazują kolor i wartość jasności, jaka POWINNA być w punktach, w których jest środek krawędzi danego kwadratu. Już na pierwszy rzut oka widać, że coś tu jest nie tak.
Czy wystarczy coś ustawić i będzie dobrze, czy nic nie da się z tym zrobić? Czy w Office 2010 ta sprawa jest poprawiona?

0

A nie mozesz napisac sobie programu, ktory Ci taki gradient wygeneruje ?

0
[losowa nazwa] napisał(a)

A nie mozesz napisac sobie programu, ktory Ci taki gradient wygeneruje ?

Napisać taki program to dla mnie żaden problem, nawet już mam taki, ale pytałem się, jak to jest z tym officem. Czy to jest błąd, czy trzeba coś ustawić? Chyba nie bez przyczyny ci od MS zaimplementowali tak, a nie inaczej.

0

Pogląd, że połowa między 0,0,0 a 255,255,255 wypada w 128,128,128 jest nieprawdziwy. Te „nierówności” w Adobe wynikają pewnie z tego, że PS dokonuje poprawek stosując profile kolorów, po to aby kolory WYGLĄDAŁY na prawidłowe.
Dlaczego uważasz, że jest ci potrzebny liczbowo równy gradient?

0

Obecnie nie mam praktycznego zastosowania, gdzie liczbowy gradient jest wymagany, ale kilka razy w życiu się zdarzał.

Moim zdaniem, już od czasów pierwszych komputerów z kolorowymi monitorami, kolor określało się trójką RGB, co wynikało z zasady działania monitora.

Każda wartość składowej jest od 0 do 1 (wartość 255 jest umowna, bo przy 24-bitowym kolorze między 0 a 1 może być 255 pośrednich wartości na jedną składową, po prostu przyjęło się stosować 8 bitów na każdą składową). W każdej składowej 0 to brak składowej, a 1 to pełna jasność składowej, a np. 0.5 to połowa jasności. Jak widać, jasność składowej jest wprost proporcjonalna do wartości składowej.

Gradient to nic innego, niż płynne przejście od jednego koloru do drugiego.

Tak na chłopski rozum, wzdłuż gradientu po prostu maleje udział jednego koloru, a rośnie udział drugiego koloru. Na logikę widać, że w połowie udziały będą 50/50, na w 1/4 i 3/4 będzie 25/75, a 100% jest na końcu. Mając te procenty to wartość każdej składowej to średnia ważona.

Wiem, że jeszcze jest coś takiego, jak "korekcja gamma", ale wydaje mi się, że ta korekcja jest w elektronice monitora kineskopowego, bo luminofor w kineskopie zmienia jasność nieliniowo w stosunku do wartości koloru. A w monitorach LCD ten problem nie istnieje.

Poza tym, jak jest "crossfade" w muzyce (płynne przejście z jednego dźwięku w drugi), to głośność dźwięków jest zmieniana liniowo. A gradient, to taki "crossfade" w obrazie. Prawda?

Wszystko wydaje się mieć ręce i nogi, jednak mówisz, że może gdzieś jest błąd.

0

Moim zdaniem, już od czasów pierwszych komputerów z kolorowymi monitorami, kolor określało się trójką RGB
raczej tak — bo RGB to bardzo prosty w zastosowaniu model. Daleki od ideału, bo pozwala odwzorować gdzieś około 1/3 wszystkich odcieni które widzi człowiek — ale wystarczająco dobry, by reklamować „idealne odwzorowanie barw” nawet jeśli jest ono badziewne ;-)

W każdej składowej 0 to brak składowej
tak

a 1 to pełna jasność składowej
tak

a np. 0.5 to połowa jasności
nie

Jak widać, jasność składowej jest wprost proporcjonalna do wartości składowej
nie. wszystko zależy od charakterystyki monitora, karty graficznej, ustawienia jasności/kontrastu/gamma, zastosowanego profilu kolorów (jeśli jakiś jest), kąta patrzenia na monitory LCD itp.

Wiem, że jeszcze jest coś takiego, jak "korekcja gamma", ale wydaje mi się, że ta korekcja jest w elektronice monitora kineskopowego, bo luminofor w kineskopie zmienia jasność nieliniowo w stosunku do wartości koloru. A w monitorach LCD ten problem nie istnieje.
Korekcja jest nie tylko po stronie monitora, ale i karty graficznej. Zresztą CRTki dużo lepiej odwzorowują kolory niż LCD.

Poza tym, jak jest "crossfade" w muzyce (płynne przejście z jednego dźwięku w drugi), to głośność dźwięków jest zmieniana liniowo
„głośność”, w sensie jakiejś wartości od 0 do 100% może tak - ale też nie jest tak, że jak sygnał do maksymalnego poziomu sięga (przy 16-bitowych próbkach) do 32767, to połowa z tego oznacza głośność 50%.

wzdłuż gradientu po prostu maleje udział jednego koloru, a rośnie udział drugiego koloru.
Ale czemu nie spróbujesz — wygeneruj sobie taki równy gradient, zobaczymy jak to wyjdzie. Ja stawiam że Word rysuje kupę, a Adobe generuje gradient równy po czym stosuje jakiś profil kolorów, i równo być przestaje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1