Znalazłem gdzieś w sieci obrazek mający przedstawiać widmo światła białego:
Postanowiłem zbadać, jak został skonstruowany z trzech barw
składowych. Tęcza powinna składać się z barw prostych o zmieniającej się płynnie długości. Grafika komputerowa to - wiadomo - mieszanina trzech barw prostych o różnym natężeniu w różnych punktach - coś całkiem innego niż oryginalny pierwowzór. Gdyby istniała istota zdolna do widzenia absolutnego barw, bez trudu rozpoznałaby oszustwo. Ja potrzebowałem do tego kilku narzędzi uniksowych.
Po pierwsze rozkompresowałem obrazek przy użyciu djpeg:
$ djpeg pasek.jpg > pasek.ppm
Następnie przekonwertowałem plik na format tekstowego ppm'a, aby łatwiej mi było go dalej przetwarzać:
$ pnmnoraw pasek.ppm > pasek.txtSzybki rzut oka do pliku:
$ head pasek.txt P3 600 66 255 254 0 0 254 0 0 254 0 0 254 0 0 253 1 0....
Mamy 600 pikseli szerokości.
Teraz zamieniam trochę porządek, żeby mieć jeden piksel w jednym wierszu:
$ awk '{ > S=""; > for (i=1; i<=NF; i++) { > S=S" "$i; > if (i % 3 == 0) { > print S; > S=""; > } > } > }' pasek.txt > pasek.x $ head pasek.x 254 0 0 254 0 0 254 0 0 254 0 0....
Dobrze idzie, teraz wezmę jeden rządek i narysuję wykres nasycenia trzech barw:
$ head -n 600 pasek.x > pasek3 $ gnuplot gnuplot> plot 'pasek3' using 1 with lines, 'pasek3' using 2 with
lines, 'pasek3' using 3 with lines

Jeszcze tylko wykonałem zrzut ekranu i zamieniłem go na jpg, żeby umieścić wykres w blogu:
$ xwd $ xwdtopnm pasek.xwd > pasek3.ppm xwdtopnm: writing PPM file $ cjpeg pasek3.ppm > wykres1.jpgGotowe.
Ciekawe, jakbym to zrobił w Windowsach ...
Ciekawostką jest fakt, że gnuplot do oznaczania kolejnych linii używa kolorów właśnie w kolejności
czerwony, zielony, niebieski.
Inną ciekawostką jest czerwony składnik po prawej stronie widma -
tam, gdzie mamy mocny fiolet.
Brak komentarzy:
Prześlij komentarz