Schody.  Grupa wejściowa.  Przybory.  Drzwi.  Zamki  Projekt

Schody. Grupa wejściowa. Przybory. Drzwi. Zamki Projekt

» Praktyczna praca z przetwarzaniem informacji graficznych

Praktyczna praca z przetwarzaniem informacji graficznych

Jakie trudności napotkałeś? Jak można je pokonać?

2. Skonstruuj czarno-biały rysunek o szerokości 8 pikseli, zakodowany sekwencją szesnastkową 2466FF6624 16 .

3. Skonstruuj czarno-biały rysunek o szerokości 5 pikseli, zakodowany sekwencją szesnastkową 3A53F88 16 .

4. Obraz o wymiarach 10x15 cm kodowany jest w rozdzielczości 300 ppi. Oszacuj liczbę pikseli na tym rysunku. (Odpowiedź: około 2 megapikseli)

5. Skonstruuj kod szesnastkowy dla kolorów z kodami RGB (100 200 200), (30,50 200), (60 180, 20), (220, 150, 30). (Odpowiedź: #64C8C8, #1E32C8, #3CB414, #DC961E)

6. Jak nazwałbyś kolor podany na stronie internetowej jako kod: #CCCCCC, #FFCCCC, #CCCCFF, #000066, #FF66FF, #CCFFFF, #992299, #999900, #99FF99? Znajdź wartości dziesiętne składników kodu RGB. (Odpowiedź: (204 204 204), (255 204 204), (204 204 255), (0,0 102), (255 255 102), (104 255 255), (153 34 153), (153 153,0), (153 255 153))

7. Czym jest głębia kolorów? W jaki sposób głębia kolorów jest powiązana z rozmiarem pliku?

8. Jaka jest głębia kolorów, jeśli rysunek wykorzystuje 65536 kolorów? 256 kolorów? 16 kolorów? (Odpowiedź: 16 bitów; 8 bitów; 4 bity)

9. W przypadku koloru żółtego znajdź składowe czerwony, zielony i niebieski, korzystając z kodowania 12-bitowego. (Odpowiedź: R=G=15, B=0)

10. Ile miejsca zajmuje paleta w pliku wykorzystującym 64 kolory? 128 kolorów?

11. Ile bajtów zajmie kod obrazu o wymiarach 40x50 pikseli w trybie True Color? podczas kodowania za pomocą palety 256 kolorów? podczas kodowania za pomocą palety 16 kolorów? w czerni i bieli (dwa kolory)? (Odpowiedź: 6000, 2000, 1000, 250)

12. Ile bajtów zajmie kod obrazu o wymiarach 80 x 100 pikseli zakodowany z głębią kolorów 12 bitów na piksel? (Odpowiedź: 12000)

13. Do przechowywania obrazu rastrowego o wymiarach 32x32 pikseli przydzielono 512 bajtów pamięci. Jaka jest maksymalna możliwa liczba kolorów w palecie obrazu? (Odpowiedź: 16)

14. Do przechowywania obrazu rastrowego o wymiarach 128 x 128 pikseli przydzielono 4 kilobajty pamięci. Jaka jest maksymalna możliwa liczba kolorów w palecie obrazu? (Odpowiedź: 4)

15. W procesie konwersji pliku grafiki rastrowej liczba kolorów spadła z 1024 do 32. Ile razy zmniejszyła się objętość informacyjna pliku? (Odpowiedź: 2 razy)

16. W procesie konwersji pliku grafiki rastrowej liczba kolorów zmniejszyła się z 512 do 8. Ile razy zmniejszyła się objętość informacyjna pliku (Odpowiedź: 3 razy)?

17. Rozdzielczość ekranu monitora wynosi 1024 x 768 pikseli, głębia kolorów wynosi 16 bitów. Jaka jest wymagana ilość pamięci wideo dla tego trybu graficznego? (Odpowiedź: 1,5 MB)

18. Po konwersji pliku grafiki rastrowej zawierającej 256 kolorów na czarno-biały (2 kolory) jego rozmiar został zmniejszony o 70 bajtów. Jaki był rozmiar oryginalnego pliku? (Odpowiedź: 80 bajtów)

19. Ile pamięci potrzeba do przechowywania grafiki bitmapowej o 64 kolorach i wymiarach 32 na 128 pikseli? (Odpowiedź: 3 KB)

20. Jaka jest szerokość (w pikselach) prostokątnej, rozpakowanej mapy bitowej o 64 kolorach, która zajmuje 1,5 MB miejsca na dysku, jeśli jej wysokość jest o połowę mniejsza? (Odpowiedź: 2048)

21. Jaka jest szerokość (w pikselach) prostokątnego 16-kolorowego rozpakowanego obrazu bitmapowego zajmującego 1 MB miejsca na dysku, jeśli jego wysokość jest dwukrotnie większa od szerokości? (Odpowiedź: 1024)

  • Przetwarzanie obrazu

  • Po pierwsze, pomyślmy logicznie. Jeśli zmienisz rozmiar obrazu, prawdopodobnie chcesz, aby wynik przynajmniej w niewielkim stopniu przypominał oryginał. Aby to zrobić, musisz wziąć pod uwagę jak najwięcej informacji z obrazu źródłowego. Czy słyszałeś o metodzie „najbliższego sąsiada”? W tej metodzie dla każdego punktu końcowego obrazu po prostu pobiera się jeden punkt z oryginalnego obrazu w niezmienionej postaci.


    Zmniejszanie rozmiaru obrazu 4928x3280 do 256x170 przez najbliższego sąsiada.


    Polecam oglądać przykłady z artykułu w przeglądarce w skali 100% i bez siatkówki. Oznacza to, że podczas oglądania należy w miarę możliwości wyeliminować zmianę rozmiaru.

    Wynik nie jest dobry. Obraz jest szarpany, ziarnisty, trudno nawet zrozumieć, co jest na nim pokazane. Zwłaszcza jeśli oryginalny obraz zawierał wiele drobnych szczegółów lub sam był ziarnisty. Dlaczego tak się dzieje? Ponieważ w ostatecznym obrazie uwzględniono bardzo mało informacji z oryginału. Jeśli warunkowo zaznaczymy na obrazie oryginalnym te punkty, które mieszczą się w obrazie końcowym, otrzymamy następującą siatkę:




    Punkty, które znajdą się na końcowym obrazie 20x13.

    Teraz możesz wizualnie ocenić, jak mało informacji o oryginalnym obrazie znajduje się w ostatecznym obrazie. Zgadzam się, jest mało prawdopodobne, aby piksele, które dadzą dobry obraz obrazu na oryginalnym obrazie, były umieszczone wzdłuż tej siatki.


    Zupełnie inny efekt uzyskuje się na przykład zmieniając rozmiar za pomocą splotów. W nim każdy piksel oryginalnego obrazu przyczynia się do powstania ostatecznego i to więcej niż raz. Dlatego obraz okazuje się gładki, a jeśli wybierzesz dobry filtr, wyraźny.



    Redukcja splotu z 4928x3280 do 256x170 za pomocą filtra dwusześciennego.


    Metoda najbliższego sąsiada ma jednak jedną wyraźną zaletę: działa w stałym czasie zależnym od rozmiaru oryginalnego obrazu. Oznacza to, że niezależnie od tego, jak duży lub mały był oryginalny obraz, czas potrzebny na zmniejszenie do określonego rozmiaru będzie taki sam. Podam przykłady w Pythonie z biblioteką Pillow, ale prawie taki sam wynik można uzyskać używając dowolnego języka i bibliotek.


    >>> z importu PIL Image >>> im = Image.open("ananas.jpeg"); im.load(); im.size (2560, 1600) >>> %time im.resize((256, 170), Image.NEAREST) ​​​​Czas ściany: 0,35 ms >>> im = Image.open("space.jpeg"); im.load(); im.size (4928, 3280) >>> %time im.resize((256, 170), Image.NEAREST) ​​​​Czas trwania ściany: 0,44 ms
    W rzeczywistości czas nie jest całkowicie stały, ponieważ różne czynniki, takie jak pamięć podręczna procesora i lokalizacja danych, zakłócają, ale nawet w przypadku 4-krotności oryginalnego obrazu uzyskaliśmy spowolnienie tylko o 23%.

    Przeciwnie, prędkość splotu maleje liniowo wraz ze wzrostem oryginalnego obrazu.


    >>> z importu PIL Image >>> im = Image.open("ananas.jpeg"); im.load(); im.size (2560, 1600) >>> %time im.resize((256, 170), Image.BICUBIC) Czas ściany: 33,2 ms >>> im = Image.open("space.jpeg"); im.load(); im.size (4928, 3280) >>> %time im.resize((256, 170), Image.BICUBIC) Czas ściany: 130 ms

    W przypadku 4-krotnie większego oryginalnego obrazu czas również wzrósł 4-krotnie.

    Naprawiono jądro

    Niektóre aplikacje i biblioteki do pracy z grafiką wykorzystują tę sztuczkę: wydają się używać tych samych filtrów do zmiany rozmiaru, co do zmiany rozmiaru splotu (na przykład istnieją filtry dwuliniowe, dwusześcienne i Lanczosa), ale gdy obraz jest zmniejszany, nie działają one adaptacyjnie zwiększyć jądro filtra. W rezultacie do skonstruowania dowolnego punktu na ostatecznym obrazie wykorzystuje się tylko 4 piksele oryginalnego obrazu z filtrem dwuliniowym, z filtrem dwusześciennym - 16, z 3-czołowym filtrem Lanczosa - 36. Czyli czas pracy jest również stała w stosunku do rozmiaru pierwotnego.


    Ale to podejście działa w przypadku redukcji około 2 razy, a wtedy wynik nie różni się zbytnio od „najbliższego sąsiada”.



    Od 4928x3280 do 256x170 ze stałym filtrem dwuliniowym jądra.


    A kiedy mówię „nie różni się zbytnio od sąsiada z sąsiedztwa”, nie mam na myśli tylko tego, że jest tak samo postrzępiony i ziarnisty, mam na myśli, że w rzeczywistości jest prawie taki sam jak wynik u sąsiada z sąsiedztwa. Otwórz oba zdjęcia w sąsiednich zakładkach przeglądarki i przełączaj się między nimi, zdjęcia są prawie takie same. Może się nawet wydawać, że gdzieś jest błąd, że tak nie powinno być, bo przy stałym jądrze 4 piksele są interpolowane, a pierwszy, który się trafi, nie jest głupio brany, a wynik powinien być bliższy oryginałowi. Ale nie ma tu żadnego błędu i oto dlaczego:



    Punkty, które będą interpolowane po zmniejszeniu do 20x13.


    Są to punkty oryginalnego obrazu, z których tworzony jest obraz ostateczny. Jest ich 4 razy więcej, ale nadal znajdują się w tych samych miejscach, co w przypadku metody najbliższego sąsiada. Oznacza to, że najprawdopodobniej nie otrzymamy nowych informacji o obrazie. Możesz spróbować jeszcze bardziej zwiększyć liczbę pikseli oryginalnego obrazu uczestniczącego w procesie, stosując filtr dwusześcienny, ale wynik znów będzie prawie taki sam i równy trochę bardziej poszarpany, ponieważ w filtrze dwusześciennym zewnętrzne piksele są pobierane ze współczynnikami ujemnymi.



    Od 4928 x 3280 do 256 x 170 z filtrem dwusześciennym o stałym rdzeniu.


    Jak można się domyślić, złożoność i czas wykonania przy zastosowaniu filtrów o dużym zasięgu znacznie wzrasta, a ostateczny obraz pozostaje prawie niezmieniony. Wszystkie trzy poniższe przykłady dają w przybliżeniu ten sam obraz, ale ich czas działania różni się nawet 20-krotnie.


    >>> im = Image.open("space.jpeg"); im.load(); im.size (4928, 3280) # Najbliższy sąsiad >>> %time im.resize((256, 170), Image.NEAREST) ​​​​Czas ściany: 0,441 ms # Stałe jądro dwuliniowe >>> %time im.transform( (256 , 170), Image.AFFINE, (im.width / 256, 0, 0, 0, im.height / 170, 0), Image.BILINEAR) Czas ściany: 3,62 ms # Dwusześcienne stałe jądro >>> %time im.transformacja((256, 170), Image.AFFINE, (im.width / 256, 0, 0, 0, im.height / 170, 0), Image.BICUBIC) Czas ściany: 9,21 ms

    Tutaj symulowałem zmianę rozmiaru ze stałym jądrem, używając transformacji afinicznych. Ale niektóre aplikacje i biblioteki faktycznie to robią: używają droższych filtrów do redukcji, których wynik jest prawie równy metodzie najbliższego sąsiada. OpenCV to robi, tak właśnie robią karty graficzne podczas teksturowania bez poziomów mip. Bo choć czas jest dłuższy, to jest on stały w stosunku do rozdzielczości oryginalnego obrazu. No właśnie, a co z jakością? Jeśli chodzi o jakość, istnieją pakiety.

    Jak naprawić

    Prawdopodobnie myślisz, dlaczego ci to wszystko mówię, wciąż jest jasne: jeśli potrzebujesz szybkości, musisz wziąć „sąsiada” lub stałe jądro, jeśli jakość to sploty. Ale faktem jest, że okazuje się, że redukcję przy stałym jądrze można skorygować tak, że jej wynik będzie radykalnie lepszy. Jest o tyle lepiej, że być może dla twoich celów to wystarczy i nie będą potrzebne żadne sploty. Co więcej, złożoność nie będzie stała w stosunku do rozmiaru oryginalnego obrazu, ale będzie tę samą stałą, tak jak w przypadku używania stałego jądra.



    Wynik zmiany rozmiaru 4928x3280 na 256x170 w stałym czasie.


    Jak widać, wyniku tego algorytmu nie da się porównać z wielobarwnym bałaganem wynikającym z działania „najbliższego sąsiada” lub stałego jądra. Na potrzeby przykładów w tym artykule celowo zrobiłem dość duże zdjęcie z drobną siatką, z dużą ilością szczegółów (spójrz na odbicie w hełmie astronauty) i bardzo je pomniejszyłem. Zrobiłem wszystko, co mogłem, aby z wyniku wyszło jak najwięcej artefaktów, ale algorytm i tak daje sobie radę! Kiedy po raz pierwszy dowiedziałem się o tej metodzie od , pomyślałem, że najprawdopodobniej zapewni ona jedynie niewielką poprawę w porównaniu ze stałym jądrem, ponieważ liczba zaangażowanych pikseli jest taka sama. Ale wynik znacznie przekroczył moje oczekiwania.


    Sekret nie polega na tym, aby traktować punkty przetwarzania skupione w grupach po 4 sztuki, jak w przypadku stałego rdzenia, ale zastosować jednolitą siatkę o rozdzielczości 2 razy wyższej niż to, co powinno zostać uzyskane w efekcie końcowym. I na tej podstawie interpoluj końcowy obraz.



    Punkty do wykorzystania przy zmniejszaniu rozmiaru do 20x13.


    Jak widać, sporo punktów oryginalnego obrazu jest nadal zrobionych. Ale ponieważ są równomiernie rozłożone, są bardziej reprezentatywne. A dzięki temu, że jest ich dokładnie 4 razy więcej, wszystkie wnoszą taki sam wkład w ostateczny obraz.


    A teraz najlepsza część: nie musisz niczego programować, aby skorzystać z tej metody! Masz już wszystko, czego potrzebujesz. Pierwszy krok polega na utworzeniu jednolitej siatki pikseli o 2 razy wyższej rozdzielczości metodą „najbliższego sąsiada”, a w drugim kroku skompresowanie jej 2-krotnie przy użyciu filtra stałego, splotów lub filtra skrzynkowego (w zależności od co masz w swojej bibliotece). Jedyną rzeczą jest to, że w przypadku splotów radziłbym zastosować filtr Hamminga lub bicubic, ale nie bilinearny.


    >>> im = Image.open("space.jpeg"); im.load(); im.size (4928, 3280) # Przykład z nieadaptacyjnym jądrem >>> %time im.resize((512, 340), Image.NEAREST)\ .transform((256, 170), Image.AFFINE, (2 , 0, 0, 0, 2, 0), Image.BILINEAR) Czas ściany: 3,59 ms # Przykład ze splotami i filtrem Hamminga >>> %time im.resize((512, 340), Image.NEAREST)\ .resize ( (256, 170), Image.HAMMING) Czas ściany: 2,42 ms # Przykład ze splotami i filtrem dwusześciennym >>> %time im.resize((512, 340), Image.NEAREST)\ .resize((256, 170 ) , Image.BICUBIC) Czas ściany: 3,53 ms # Przykład z filtrem skrzynkowym # Wynik będzie nieco inny, ponieważ OpenCV # ma błąd z dokładnością INTER_NEAREST # zobacz https://github.com/opencv/opencv/issues / 9096 >>> import cv2 >>> im = cv2.imread("space.jpeg") >>> %time cv2.resize(cv2.resize(im, (512, 340), interpolacja=cv2.INTER_NEAREST), ( 256, 170), interpolacja=cv2.INTER_AREA) Czas ściany: 0,81 ms

    Dalszy rozwój pomysłu

    Ta poprawa robi wrażenie, ale nie można na tym poprzestać. Kto powiedział, że do budowy trzeba użyć 2 razy większego obrazu? Dlaczego nie wziąć 3 lub 4 razy, aby uzyskać lepszą jakość. To prawda, że ​​\u200b\u200bw drugim kroku nie będzie możliwe użycie zmiany rozmiaru ze stałym jądrem, ponieważ pojawią się te same problemy, których staramy się pozbyć. Ale paczki proszę. W takim przypadku czas pozostanie stały, będzie po prostu większy.



    Zmień rozmiar z 4928 x 3280 na 256 x 170, używając obrazów pośrednich 2x i 4x.


    Różnice może w tej skali nie są bardzo widoczne, ale są dość mocne. Aby je dostrzec, obejrzyj GIF w powiększeniu:



    Cóż, czas:


    >>> im = Image.open("space.jpeg"); im.load(); im.size (4928, 3280) # Przykład z 2x obrazem pośrednim >>> %time im.resize((512, 340), Image.NEAREST)\ .resize((256, 170), Image.BICUBIC) Czas ściany: 3,53 ms # Przykład z 3x obrazem pośrednim >>> %time im.resize((768, 510), Image.NEAREST)\ .resize((256, 170), Image.BICUBIC) Czas ściany: 6,27 ms # Przykład z 4x obraz pośredni >>> %time im.resize((1024, 680), Image.NEAREST)\ .resize((256, 170), Image.BICUBIC) Czas ściany: 9,23 ms

    Jak widać wersja z obrazem pośrednim 2x działa w czasie w przybliżeniu równym filtrowi bilinearnemu ze stałym jądrem, natomiast wersja z obrazem pośrednim 4x zajmuje czas filtra bicubicznego. Cóż, ogólnie rzecz biorąc, nie można wykorzystać całej liczby punktów.

    Jak dokonać właściwego wyboru

    Powstaje pytanie: skoro ta metoda daje tak lepsze rezultaty i działa z prędkością stałego rdzenia, to po co w ogóle używać stałego rdzenia do redukcji? Metoda ta ma oczywiście szerokie zastosowanie – przy redukcji lepiej jej nie stosować mniej niż 2 razy. A to pokrywa się z granicą stosowalności stałego jądra, którego lepiej nie używać podczas redukcji więcej niż 2 razy. Okazuje się, że łącząc metody, można uzyskać resize o akceptowalnej jakości w ustalonym czasie i w dowolnej skali.

    Ważny dodatek

    Z komentarzy słusznie wynika, że ​​tę metodę słusznie nazywa się supersamplingiem. Supersampling jest często używany w grach w celu wyeliminowania aliasingu. Zasadniczo scena gry to obraz o nieskończonej rozdzielczości, ponieważ możemy ją renderować w dowolnej rozdzielczości. W przypadku supersamplingu scena jest rysowana w wyższej rozdzielczości niż to konieczne, a kilka sąsiednich pikseli jest uśrednianych w jeden. Oznacza to, że analogia jest pełna. Nie zmienia to jednak faktu, że metoda ta, pomimo swoich zalet, jest bardzo rzadko stosowana w oprogramowaniu.

    Przykłady

    I na koniec kilka przykładów z innymi obrazami. Od lewej do prawej:
    1) naprawione jądro, filtr dwuliniowy (czego obecnie używa wiele osób)
    2) sploty dwusześcienne w standardzie
    3) supersampling z 2-krotnym powiększeniem
    4) supersampling z 4-krotnym powiększeniem


    Najważniejszą rzeczą do zapamiętania podczas oglądania jest to, że trzeci obraz jest generowany dokładnie w tym samym czasie co pierwszy, a czwarty, chociaż ≈3 razy dłużej, również zajmuje stały czas i często jest nawet 20 razy szybszy niż drugi.

    Zmniejszono o 15.625 razy.


    Obraz 2448×3264 zmniejszony 9,5625 razy.


    Obraz 2000×2000 zmniejszony 7,8125 razy.

    Z wykształcenia jestem programistą, jednak w pracy musiałem zajmować się przetwarzaniem obrazu. I wtedy otworzył się przede mną niesamowity i nieznany świat przestrzeni barw. Nie sądzę, aby projektanci i fotografowie nauczyli się dla siebie niczego nowego, ale być może komuś ta wiedza będzie przynajmniej przydatna, a co najwyżej interesująca.

    Głównym celem modeli kolorów jest umożliwienie określenia kolorów w ujednolicony sposób. Zasadniczo modele kolorów definiują pewne układy współrzędnych, które pozwalają jednoznacznie określić kolor.

    Najpopularniejszymi obecnie modelami kolorów są: RGB (wykorzystywany głównie w monitorach i aparatach), CMY(K) (stosowany w druku), HSI (szeroko stosowany w wizji maszynowej i projektowaniu). Istnieje wiele innych modeli. Na przykład CIE XYZ (modele standardowe), YCbCr itp. Poniżej znajduje się krótki przegląd tych modeli kolorów.

    Kostka kolorów RGB

    Z prawa Grassmanna wynika idea addytywnego (tj. opartego na mieszaniu kolorów z obiektów bezpośrednio emitujących) modelu reprodukcji kolorów. Podobny model został po raz pierwszy zaproponowany przez Jamesa Maxwella w 1861 roku, ale rozpowszechnił się znacznie później.

    W modelu RGB (od angielskiego czerwony - czerwony, zielony - zielony, niebieski - niebieski) wszystkie kolory uzyskuje się poprzez zmieszanie trzech podstawowych kolorów (czerwonego, zielonego i niebieskiego) w różnych proporcjach. Udział każdego koloru bazowego w kolorze końcowym można postrzegać jako współrzędną w odpowiedniej przestrzeni trójwymiarowej, dlatego model ten nazywany jest często kostką koloru. Na ryc. Rysunek 1 przedstawia model kolorowej kostki.

    Najczęściej model jest zbudowany tak, że sześcian jest pojedynczą kostką. Punkty odpowiadające kolorom podstawowym znajdują się na wierzchołkach sześcianu, leżąc na osiach: czerwony - (1;0;0), zielony - (0;1;0), niebieski - (0;0;1) . W tym przypadku kolory wtórne (uzyskane przez zmieszanie dwóch podstawowych) znajdują się na pozostałych wierzchołkach sześcianu: cyjan - (0;1;1), magenta - (1;0;1) i żółty - (1;1; 0). Kolory czarno-białe znajdują się w początku (0;0;0) i w punkcie najbardziej oddalonym od początku (1;1;1). Ryż. pokazuje tylko wierzchołki sześcianu.

    Obrazy kolorowe w modelu RGB zbudowane są z trzech oddzielnych kanałów obrazu. W tabeli. pokazuje rozkład oryginalnego obrazu na kanały kolorów.

    W modelu RGB na każdą składową koloru przydzielana jest określona liczba bitów, np. jeśli do zakodowania każdego składnika przydzielony jest 1 bajt, to za pomocą tego modelu można zakodować 2^(3*8)≈16 milionów kolorów. W praktyce takie kodowanie jest zbędne, gdyż Większość ludzi nie jest w stanie rozróżnić tak wielu kolorów. Często ogranicza się do tzw. Tryb „High Color”, w którym przydzielonych jest 5 bitów do kodowania każdego komponentu. Niektóre aplikacje wykorzystują tryb 16-bitowy, w którym przydzielonych jest 5 bitów do kodowania składowych R i B oraz 6 bitów do kodowania składowej G. Tryb ten po pierwsze uwzględnia większą wrażliwość człowieka na kolor zielony, po drugie pozwala na efektywniejsze wykorzystanie cech architektury komputera. Liczba bitów przydzielonych do zakodowania jednego piksela nazywana jest głębią kolorów. W tabeli. podano przykłady kodowania tego samego obrazu z różnymi głębiami kolorów.

    Subtraktywne modele CMY i CMYK

    Subtraktywny model CMY (od angielskiego cyan - cyan, magenta - magenta, żółty - żółty) służy do tworzenia wydruków (wydruków) obrazów i jest w pewnym sensie antypodą sześcianu kolorów RGB. Jeśli w modelu RGB podstawowymi kolorami są kolory źródeł światła, to model CMY jest modelem absorpcji kolorów.

    Przykładowo papier pokryty żółtym barwnikiem nie odbija światła niebieskiego, czyli tzw. możemy powiedzieć, że żółty barwnik odejmuje kolor niebieski od odbitego światła białego. Podobnie barwnik cyjan odejmuje kolor czerwony od światła odbitego, a barwnik magenta odejmuje kolor zielony. Dlatego model ten nazywany jest zwykle subtraktywnym. Algorytm konwersji modelu RGB na model CMY jest bardzo prosty:

    Zakłada się, że kolory RGB mieszczą się w zakresie. Łatwo zauważyć, że aby uzyskać czerń w modelu CMY, należy zmieszać w równych proporcjach cyjan, magentę i żółty. Metoda ta ma dwie poważne wady: po pierwsze, czarny kolor uzyskany w wyniku zmieszania będzie wyglądał na jaśniejszy niż „prawdziwa” czerń, a po drugie, prowadzi to do znacznych kosztów barwnika. Dlatego w praktyce model CMY zostaje rozszerzony do modelu CMYK, dodając do trzech kolorów czerń.

    Barwa przestrzeni barwnej, nasycenie, intensywność (HSI)

    Omówione wcześniej modele kolorów RGB i CMY(K) są bardzo proste pod względem sprzętowym, mają jednak jedną istotną wadę. Bardzo trudno jest człowiekowi operować kolorami określonymi w tych modelach, bo... Opisując kolory, człowiek nie posługuje się zawartością podstawowych składników opisywanego koloru, lecz posługuje się nieco innymi kategoriami.

    Najczęściej ludzie operują pojęciami: odcień, nasycenie i jasność. Jednocześnie mówiąc o odcieniu koloru, zwykle mają na myśli kolor. Nasycenie pokazuje, jak rozcieńczony jest opisywany kolor bielą (na przykład różowy jest mieszaniną czerwieni i bieli). Pojęcie lekkości jest najtrudniejsze do opisania i przy pewnych założeniach lekkość można rozumieć jako intensywność światła.

    Jeśli weźmiemy pod uwagę rzut sześcianu RGB w kierunku biało-czarnej przekątnej, otrzymamy sześciokąt:

    Wszystkie szare kolory (leżące na przekątnej sześcianu) są rzutowane na punkt centralny. Aby model ten mógł zakodować wszystkie kolory dostępne w modelu RGB, konieczne jest dodanie pionowej osi jasności (lub intensywności) (I). Rezultatem jest sześciokątny stożek:

    W tym przypadku odcień (H) ustalany jest poprzez kąt względem osi czerwieni, nasycenie (S) charakteryzuje czystość koloru (1 oznacza całkowicie czysty kolor, a 0 odpowiada odcieniowi szarości). Ważne jest, aby zrozumieć, że odcień i nasycenie nie są definiowane przy zerowej intensywności.

    Algorytm konwersji z RGB na HSI można wykonać korzystając z następujących wzorów:

    Model kolorów HSI jest bardzo popularny wśród projektantów i artystów, ponieważ... System ten zapewnia bezpośrednią kontrolę odcienia, nasycenia i jasności. Te same właściwości sprawiają, że model ten jest bardzo popularny w systemach widzenia maszynowego. W tabeli. pokazuje, jak zmienia się obraz wraz ze wzrostem i spadkiem intensywności, odcienia (obrócony o ±50°) i nasycenia.

    Model CIE XYZ

    W celu ujednolicenia opracowano międzynarodowy standardowy model kolorów. W wyniku serii eksperymentów Międzynarodowa Komisja ds. Oświetlenia (CIE) określiła krzywe addycji kolorów podstawowych (czerwonego, zielonego i niebieskiego). W tym systemie każdemu widzialnemu kolorowi odpowiada określony stosunek kolorów podstawowych. Jednocześnie, aby opracowany model odzwierciedlał wszystkie kolory widzialne dla człowieka, konieczne było wprowadzenie ujemnej liczby kolorów podstawowych. Aby uniknąć ujemnych wartości CIE wprowadziłem tzw. nierealne lub wyimaginowane kolory podstawowe: X (wyimaginowany czerwony), Y (wyimaginowany zielony), Z (wyimaginowany niebieski).

    Opisując kolor, wartości X, Y, Z nazywane są standardowymi wzbudzeniami podstawowymi, a wyprowadzone z nich współrzędne nazywane są standardowymi współrzędnymi koloru. Krzywe addycji standardowej X(λ),Y(λ),Z(λ) (patrz rys.) opisują wrażliwość przeciętnego obserwatora na wzbudzenia standardowe:

    Oprócz standardowych współrzędnych kolorów często stosuje się koncepcję względnych współrzędnych kolorów, które można obliczyć za pomocą następujących wzorów:

    Łatwo zauważyć, że x+y+z=1, co oznacza, że ​​do jednoznacznego określenia względnych współrzędnych wystarczy dowolna para wartości, a odpowiadającą jej przestrzeń barw można przedstawić w postaci dwuwymiarowego wykresu:

    Tak zdefiniowany zbiór kolorów nazywany jest trójkątem CIE.
    Łatwo zauważyć, że trójkąt CIE opisuje jedynie odcień, ale w żaden sposób nie opisuje jasności. Do opisu jasności wprowadza się dodatkową oś przechodzącą przez punkt o współrzędnych (1/3;1/3) (tzw. punkt bieli). Rezultatem jest bryła koloru CIE (patrz rys.):

    Ciało to zawiera wszystkie kolory widoczne dla przeciętnego obserwatora. Główną wadą tego systemu jest to, że za jego pomocą możemy stwierdzić jedynie zbieżność lub różnicę dwóch kolorów, ale odległość między dwoma punktami tej przestrzeni barw nie odpowiada wizualnemu postrzeganiu różnicy kolorów.

    Modelka CIELAB

    Głównym celem przy opracowywaniu CIELAB-a było wyeliminowanie nieliniowości układu CIE XYZ z punktu widzenia ludzkiej percepcji. Skrót LAB zwykle odnosi się do przestrzeni barw CIE L*a*b*, która jest obecnie międzynarodowym standardem.

    W systemie CIE L*a*b współrzędna L oznacza jasność (w zakresie od 0 do 100), a współrzędne a,b oznaczają położenie pomiędzy zielono-purpurowym a niebiesko-żółtym. Poniżej podano wzory na przeliczenie współrzędnych z CIE XYZ na CIE L*a*b*:


    gdzie (Xn,Yn,Zn) są współrzędnymi punktu bieli w przestrzeni CIE XYZ, oraz


    Na ryc. sekcje korpusu kolorystycznego CIE L*a*b* przedstawiono dla dwóch wartości jasności:

    W porównaniu do systemu CIE XYZ Odległość euklidesowa (√((L1-L2)^2+(a1^*-a2^*)^2+(b1^*-b2^*)^2)) w systemie CIE L*a * b* znacznie lepiej pasuje do różnicy kolorów postrzeganej przez ludzi, jednak standardowym wzorem na różnicę kolorów jest niezwykle złożony CIEDE2000.

    Telewizyjne systemy różnicowania kolorów

    W systemach kolorów YIQ i YUV informacja o kolorze jest reprezentowana jako sygnał luminancji (Y) i dwa sygnały różnicy kolorów (odpowiednio IQ i UV).

    Popularność tych systemów kolorowych wynika przede wszystkim z pojawienia się telewizji kolorowej. Ponieważ Składnik Y zasadniczo zawiera oryginalny obraz w skali szarości; sygnał w systemie YIQ może zostać odebrany i poprawnie wyświetlony zarówno na starych telewizorach czarno-białych, jak i na nowych telewizorach kolorowych.

    Drugą, być może ważniejszą zaletą tych przestrzeni jest wydzielenie informacji o kolorze i jasności obrazu. Faktem jest, że ludzkie oko jest bardzo wrażliwe na zmiany jasności i znacznie mniej wrażliwe na zmiany koloru. Umożliwia to przesyłanie i przechowywanie informacji o chrominancji na mniejszej głębokości. To właśnie na tej funkcji ludzkiego oka budowane są obecnie najpopularniejsze algorytmy kompresji obrazu (m.in. jpeg). Aby przekonwertować przestrzeń RGB na YIQ, możesz użyć następujących formuł:

    Cele lekcji:

    Edukacyjny:

    • ćwiczenie umiejętności pracy z edytorem graficznym;
    • powtarzanie i utrwalanie umiejętności pracy z narzędziami – „kopiowanie”, „wklejanie”;
    • uczyć, jak wykonać rysunek, wykorzystując kilka identycznych fragmentów rysunku;
    • przedstawić uczniom nowy zespół Odbijać/Zakręt.

    Rozwojowy:

    • rozwijać zainteresowania poznawcze i aktywność twórczą uczniów;
    • rozwijać umiejętności obsługi komputera, rozwijać przyjacielską i biznesową komunikację wśród studentów w pracy zespołowej.

    Edukacyjny:

    • kultywuj zainteresowanie tematem, dokładność, uważność, dyscyplinę.

    Cele lekcji:

    • kontynuować pracę nad rozwijaniem umiejętności posługiwania się edytorem graficznym;
    • rozwijać umiejętności pracy na komputerze PC z oprogramowaniem Paint;
    • rozwinąć umiejętność prawidłowego i kompetentnego wyrażania swoich myśli.

    Typ lekcji: nauka nowego materiału.

    Sprzęt: komputer PC, oprogramowanie - edytor graficzny Farba, projektor, ekran, karty z pytaniami, karty z algorytmem wykonywania pracy praktycznej, książeczki.

    Formy: zbiorowe, grupowe.

    Rodzaje pracy: rozmowa, praca z ulotkami, praca na komputerze.

    Kroki lekcji:

    • Materiał organizacyjny.
    • Ustalenie celu lekcji.
    • Aktualizowanie wiedzy:
      • badanie frontalne
      • praca z ulotkami
    • Nauka nowego materiału:
      • powtarzające się elementy (polecenie Edycja – Kopiuj)
      • Giganci i karły (rozciąganie i ściskanie)
      • Przechylaj, odwracaj i obracaj
      • Minuta wychowania fizycznego
    • Podstawowa konsolidacja tego, czego się nauczyliśmy (praca praktyczna)
      • pracować na komputerze PC przy użyciu kart z algorytmem wykonywania pracy
    • Zadawanie zadań domowych.
    • Podsumowanie lekcji.
      • czego nowego się dzisiaj nauczyłeś?
      • oceny za lekcję.

    Postęp lekcji:

    I. Moment organizacyjny.

    II. Ustalenie celu lekcji

    - Cześć chłopaki, usiądźcie. Zatem zaczynamy lekcję. Powiedz mi, co robiliśmy na ostatniej lekcji?

    Na ostatniej lekcji zapoznaliśmy się z edytorem graficznym Paint. Rysuj obrazy za pomocą obiektów znajdujących się na pasku narzędzi.

    - Tak, zgadza się. Okazuje się jednak, że możesz wykonać dowolne czynności na rysunku. Pomyśl i powiedz mi, jakie działania można wykonać na rysunku?

    Obrazek można kopiować, wklejać, zmieniać jego rozmiar tj. zwiększyć lub zmniejszyć.

    - Prawidłowy. Ale wymieniłeś tylko część działań, które można wykonać na rysunku. Rysunek można również obracać, przechylać lub odbijać. Jakiego jednego słowa można użyć do opisania tych działań?

    Wszystkie te działania można nazwać transformacją.

    - Tak, zgadza się. A teraz, na podstawie wszystkiego, co zostało powiedziane, spróbuj samodzielnie sformułować temat naszej lekcji.

    Temat naszej lekcji to „Przekształcenia rysunkowe”.

    – Tak, tematem naszej lekcji jest „Edytor graficzny Paint: konwersja obrazu”. Dziś na lekcji nauczymy się przekształcać rysunki, tj. zmień rozmiar obrazu, skopiuj, obróć, przechyl. Następnie wykonasz pracę praktyczną. Ale najpierw przypomnimy sobie materiał, którego uczyliśmy się na ostatniej lekcji.

    III. Aktualizowanie wiedzy.

    1. Badanie czołowe.

    • Teraz pokażę Ci karty z przedstawionym narzędziem, a Ty nazwiesz je i powiesz, do czego jest przeznaczone.
    • Jaka jest różnica między losowym wyborem fragmentu a wyborem prostokątnym?
    • Jaka jest różnica między zaznaczeniem z tłem a zaznaczeniem bez tła?
    • Jak narysować kwadrat i okrąg w edytorze graficznym?

    2. Pracuj z ulotkami.

    Pracujcie w parach nad kartkami.

    1. Dokończ zdanie:

    Edytor graficzny to...

    A) urządzenie do tworzenia i edycji rysunków;

    B) program do tworzenia i edycji rysunków;

    C) program do tworzenia i edycji dokumentów tekstowych;

    D) urządzenie do drukowania rysunków na papierze.

    2. Oznacz przyciski paska narzędzi:

    3. Określ, co się stanie w wyniku wykonania następujących czynności:

    • Ustaw główny kolor na żółty;
    • Wybierz narzędzie Owal i ustaw je na tryb wypełnienia 3;
    • Przytrzymaj klawisz Shift i narysuj okrąg;
    • Wybierz narzędzie Linia i ustaw je tak, aby rysowało najgrubsze linie;
    • Przytrzymaj klawisz Shift i narysuj segmenty wystające ze środka żółtego okręgu.

    IV. Nauka nowego materiału.

    1. Powtarzające się elementy (polecenie Edycja - Kopiuj)

    - Chłopaki, proszę spojrzeć na ekran. Co widzisz?<Załącznik 1 >

    Gałęzie różnych roślin: jarzębina, winogrona itp..

    - Tak, zgadza się. Na ekranie widać gałęzie roślin. Teraz pomyśl i powiedz mi, co mają wspólnego wszystkie te gałęzie?

    Każda gałąź składa się z kilku powtarzających się części: liści, jagód.

    - Prawidłowy. Gdzie jeszcze można znaleźć powtarzające się elementy?

    Różne konstrukcje geometryczne, konstrukcje.

    – Można zatem stwierdzić, że powtarzające się elementy widać nie tylko w strukturach geometrycznych, ale także w otaczającym nas świecie. Rozejrzyj się wokół siebie. Liście na drzewach, jagody, owoce – to wszystko są powtórzenia stworzone przez naturę. Budynki mieszkalne i samochody stworzone przez człowieka, przy całej ich różnorodności, również mają powtarzające się elementy. (Pokaz slajdów z obrazami jagód, owoców, drzew itp.). Czy w kreatywności możemy znaleźć powtarzające się obiekty?

    Na rysunkach, obrazach.

    - Prawidłowy. Powtórzony fragment może stać się podstawą kompozycji artystycznej. Spójrzmy na gałązkę jarzębiny. (Pokaz slajdu przedstawiającego gałązkę jarzębiny). Aby to narysować, musisz przygotować tylko jedną jagodę, a następnie wykonać kilka kopii. Liście uzyskuje się również z pojedynczego małego liścia. Ale jak ułożyć liście w różnych kierunkach? Powinny być takie same, ale nie da się narysować absolutnie identycznych obiektów. I w tym przypadku powinny być nie tylko takie same, ale także muszą być ustawione symetrycznie względem gałęzi. Okazuje się, że możesz obrócić wybrany fragment lub stworzyć jego lustrzane odbicie (Odbijać). Możliwości te zapewnia dedykowany zespół Odwróć – obróć z menu Rysunek. Rysunek przedstawia liście uzyskane z pojedynczego arkusza za pomocą poleceń odwracania i obracania. Po wybraniu tego polecenia pojawi się okno dialogowe. (Pokaż slajd z obrazem tego okna dialogowego). Zobacz, jak te polecenia są wykonywane na rysunku. (Następny slajd to „przykłady wykonywania poleceń odbicia i obrotu”).

    Zapiszmy w naszych zeszytach temat lekcji, który sam sformułowałeś: „Edytor graficzny Paint: przekształcanie rysunku”.

    Pamiętasz, gdzie w życiu codziennym możesz zobaczyć odbicie od lewej do prawej, od góry do dołu? Wymyśl przykłady użycia polecenia Odwróć – obróć na rysunkach. I zapisz jeden przykład w swoim zeszycie.

    Chłopaki piszą w zeszycie, a potem sprawdzamy.

    W edytorze graficznym Paint możesz odzwierciedlić fragment rysunku względem pionowej lub poziomej osi symetrii podświetlającego prostokąta. Aby to zrobić, wybierz zdjęcie i wykonaj polecenie Obraz – Odbij i obróć. Pojawi się takie okno:<Rysunek 1 >

    W tym oknie wybieramy akcję, którą należy wykonać na obrazku: obróć od lewej do prawej, odwróć z góry na dół lub obróć o kąt. Spójrz na ekran i powiedz mi, jakie zmiany zaszły u kociąt?<Rysunek 2 >, <Rysunek 3 >

    W pierwszym rysunki nad bałwanami dokonały transformacji: odbicie od lewej do prawej. Drugi jest odbijany od góry do dołu.

    - Tak, zgadza się. Kolejną transformacją jest rotacja. Możesz obrócić fragment względem środka symetrii prostokąta zaznaczenia w oknie Odbicie i obrót, które jest wywoływane z menu Obraz. Wybierz polecenie: Obróć o kąt. Następnie z proponowanych kątów wybierz kąt, którego potrzebujemy.<Rysunek 4 >

    2. Giganci i karły (polecenia Rozciągnij i Kompresuj)

    – Zapoznaliśmy się z tylko jedną transformacją rysunku: odbiciem i obrotem. Ale są też inni. Jak myślisz, które z nich?

    Rysunek można pochylić, powiększyć lub pomniejszyć, tj. zmienić rozmiar obrazu.

    – Tak, to są przekształcenia, które można wykonać na rysunku. Przeczytam ci teraz krótki fragment, a ty powiesz mi, o jakim rodzaju transformacji mówimy. Słuchamy więc uważnie: „Po dachach latały muchy wielkości słoni. W domach trzymano konie, a nie psy. W lesie rosły olbrzymie trawy, a na parapetach zazieleniły się brzozy i osiki. Dzieci w tym kraju rodziły się duże Z wiekiem zmniejszały się, aż całkowicie zniknęły... Tak fantazjował jeden z chłopców.

    Mówimy tutaj o zmianie rozmiaru obrazu. O wzroście i spadku.

    – Oczywiście w tym fragmencie niektóre nasze obiekty były bardzo duże, inne małe. Okazuje się, że w edytorze graficznym można łatwo rozciągnąć lub zmniejszyć wybrany fragment, czyli np. zmień rozmiar obrazu: zwiększ lub zmniejsz.<Rysunek 5 >

    W tym przypadku zmniejszyliśmy bałwana 2 razy. Aby to zrobić, musisz najpierw wybrać bałwana, a następnie uruchomić polecenie Rysunek – Rozciągnij i przechyl. Pojawi się następujące okno:<Rysunek 6 >

    Aby zmniejszyć obraz 2 razy, określ wartości 50 w poziomie i w pionie.

    Rozmiar wybranego fragmentu możesz zmienić nie tylko z poziomu menu Obraz. Można to zrobić przeciągając myszką po znacznikach rozmiaru, które znajdują się na granicy wybranego obszaru. Czasami jest to wygodniejsze, ale zmiana rozmiaru odbywa się „na oko”. Gdy potrzebujesz precyzji, nie obejdzie się bez menu.

    3. Pochylenie, odbicie, obrót.

    W oknie Rozciągnij i przechyl, który jest wywoływany z menu Rysunek, możesz ustawić nachylenie wybranego fragmentu w stopniach:<Rysunek 7 >

    Wykonując tę ​​komendę, nasz kociak lekko się pochyli:<Rysunek 8 >

    4. Minuta wychowania fizycznego.

    Abyśmy mogli zyskać zdrowie -
    Musimy uprawiać sport.
    Aby urosnąć w siłę -
    Do ładowania - raz, dwa, trzy.
    Ręce w pasie, nogi szersze...
    Pochyl się do przodu – Raz, dwa, trzy, cztery.
    Stopy razem, ręce opuszczone,
    Wskocz w miejsce i usiądź.

    V. Podstawowa konsolidacja tego, czego się nauczyliśmy (praca praktyczna).

    – Teraz zajmiesz się praktyczną pracą. Na Waszych biurkach macie karty z algorytmem wykonywania pracy praktycznej. Zanim jednak zasiądziecie do komputerów, przeanalizujmy z Państwem zasady bezpieczeństwa.

    Chłopaki po kolei wymieniają zasady bezpieczeństwa na zajęciach komputerowych.

    – Pamiętałeś o zasadach bezpieczeństwa. Teraz powoli siadamy do komputerów i zaczynamy działać. Jeśli ktoś ma jakieś pytania, niech podniesie rękę, a ja przyjdę.

    Praktyczna praca

    1. Korzystając z możliwości edytora graficznego, narysuj robota.
    2. Wybierz robota. Uruchom polecenie Edycja – Kopiuj i skopiuj je. Następnie za pomocą polecenia Edycja – Wklej wstaw robota 6 razy i umieść wstawione roboty na polu pracy.
    3. Wybierz pierwszego robota. Powiększ robota 2 razy wykonując polecenia Rysunek – Rozciągnij – 200% – 200%.
    4. Wybierz drugiego robota. Zmniejsz rozmiar robota 2 razy, wykonując polecenia Rysunek – Rozciągnij – 50% – 50%.
    5. Wybierz trzeciego robota. Przechyl robota w poziomie o 45 0 wykonując polecenia Rysunek – Rozciągnij i Przechyl.
    6. Wybierz czwartego robota. Obróć robota od lewej do prawej za pomocą poleceń Rysunek – Odwróć i Obróć.
    7. Wybierz piątego robota. Obróć robota z góry na dół za pomocą poleceń Rysunek – Odwróć i Obróć.
    8. Wybierz szóstego robota. Obróć robota o 270 0 wykonując polecenia Rysunek – Odbicie i obrót.
    9. Ostatniego robota pozostaw bez zmian.
    10. Pokaż swoją pracę nauczycielowi.

    VI. Zadawanie zadań domowych.

    1. W edytorze graficznym Paint narysuj dowolny obrazek. I wykonaj na nim wszystkie transformacje, które dzisiaj badaliśmy.

    2*. Narysuj kiść winogron za pomocą poleceń Kopiuj – Wklej I Odwróć – obróć. Zapisz algorytm wykonania tej pracy w zeszycie.

    VII. Podsumowanie lekcji.

    Nasza lekcja dobiegła końca. Bardzo chciałbym poznać Twoją opinię na temat wykonanej pracy. Naturalnie, jeśli wysłucham opinii wszystkich, nie starczy nam czasu, ponieważ do końca lekcji zostało już bardzo niewiele. Ale dzisiaj odrobiliśmy pracę praktyczną i dlatego każdy uczeń powinien otrzymać ocenę, ponieważ wszyscy się staraliście i pracowaliście. Sugeruję samoocenę i wykorzystanie w tym celu emotikonów.

    Buźka to obrazek składający się z liter i znaków specjalnych, który wyraża uczucie lub nastrój.

    Na ekranie znajduje się slajd z obrazem emotikonów: