Sciaga Nowa

  1. Co to jest grafika komputerowa, przetwarzanie obrazu i rozpoznawanie obrazu?

    Grafika komputerowa: tworzenie obrazów na podst. informacji opisowej:

    - szerokie zastosowania

    - różna złożoność programów i nakładów obliczeniowych koniecznych do utworzenia obrazu

    - wykresy funkcji

    - kompozycje obrazów

    - sceny w symulatorach

    Przetwarzanie obrazu: wszystkie operacje, w których dane wejściowe i wyjściowe mają postać obrazów:

    - usuwanie zakłóceń, poprawa jakości obrazu

    - filtrowanie obrazu

    - kompresja danych obrazowych

    - redukcja obrazu do konturów

    - redukcja obrazu konturowego do figur kreskowych

    - tworzenie przekrojów obrazu

    Rozpoznawanie obrazu: tworzenie opisu obrazu, zakwalifikowanie obrazu do pewnej szczególnej klasy

    - odwrotność grafiki komputerowej

    - w wyniku analizy obrazu powstaje opis matematyczny, ciąg symboli lub graf

    - dalsze przetwarzanie danych opisowych pozwala na wyciąganie wniosków analitycznych

  2. Omówić klasy danych obrazowych

    4 klasy danych obrazowych:

    KLASA I: Obrazy monochromatyczne i kolorowe.

    Dokładnie odzwierciedlają rzeczywistość. Reprezentowane jako macierze pamięci, gdzie komórkami są pixele. Możliwe są różne struktury komórek w zależności od głębi barw.

    KLASA II: Obrazy binarne:

    Obrazy monochromatyczne, czarno-białe(tekst). Element obrazu opisywany przez 1bit. Reprezentowane jako macierze pamięci, lub mapy bitowe, brak standardowego sposobu grupowania bitów w bajty, a bajtów w słowa w pamięci systemu graficznego.

    KLASA III: Linie proste i krzywe:

    Na przykład wykresy, kontury obrazów, krzywe nieregularne.


    Reprezentacja danych: a) współrzędne X i Y kolejnych punktów b) przyrosty ΔX i ΔY c) kody łańcuchowe, w których wektor łączący dwa kolejne punkty jest określony jednym symbolem ze skończonego zbioru symboli d) różnicowy kod łańcuchowy – gdzie reprezentacją każdego punktu jest różnicą pomiędzy dwoma kolejnymi kodami. Zbiór symboli jest również 8-elementowy {0, ±1, ±2, ±3, 4}. Lecz prawdopodobieństwo ich pojawienia się nie jest takie same. Można zatem użyć kodu o zmiennej długości.

    KLASA IV: Punkty i wieloboki:

    Klasa najczęściej wykorzystywana w grafice komputerowej. Obraz reprezentowany jest przez współrzędne punktów i funkcje. Punkty charakterystyczne połączone są liniami prostymi lub krzywymi opisanymi przez funkcje. Różnorodność funkcji i metod opisujących kształt generowanych obiektów.

  3. Napisać program wyznaczający histogram rozkładu jasności obrazku kolorowego o 24-bitowej strukturze piksela

    struct pixel {

    int R;

    int G;

    int B;

    }

    int main()

    {

    pixel OBRAZ[K+1][L+1];

    // Tutaj pobieramy obraz gdzies z zewnatrz

    int histogramR[256];

    int histogramG[256];

    int histogramB[256];

    for(int i=1;i<=L;i++)

    {

    for(int j=1;j<=K;j++)

    {

    histogramR[OBRAZ[i][j].R]++;

    histogramG[OBRAZ[i][j].G]++;

    histogramB[OBRAZ[i][j].B]++;

    }

    }

    int histogramL[256];

    for(int i=1; i<=K;i++)

    for(int j=1;j<=L;j++)

    histogramL[((max(OBRAZ[i][j].R, OBRAZ[i][j].G, OBRAZ[i][j].B)

    +min(OBRAZ[i][j].R, OBRAZ[i][j].G, OBRAZ[i][j].B))/2]++;

    }

  4. Metoda poprawy jakości obrazu poprzez modelowanie histogramu

    Modelowanie histogramu obejmuje procesy: 1. rozciągania histogramu; 2. wyrównywania histogramu; 3. normalizacji histogramu.

    Rozciąganie histogramu: Operacji rozciągania histogramu dokonuje się wówczas, gdy nie pokrywa on całego zakresu poziomów jasności - na histogramie nie występują bardzo ciemne i bardzo jasne składowe. Rozciąganie histogramu polega na takiej konwersji poziomów jasności obrazu wejściowego, by rozkład poziomów jasności na histogramie obrazu wyjściowego obejmował wszystkie poziomy jasności.

    Wyrównywanie histogramu: Celem wyrównania histogramu obrazu jest uzyskanie możliwie równomiernego rozkładu poziomów jasności obrazu dla całego jego zakresu. Skutkiem wyrównania histogramu jest poprawa kontrastu obrazu. Wyrównanie histogramu pozwala na podkreślenie w obrazie tych szczegółów, które są mało widoczne z powodu niewielkiego kontrastu. Nie jest to metoda uniwersalna i w przypadku histogramów o określonym kształcie nie daje zadowalających rezultatów.

    Normalizacja histogramu: Operacja normalizacji histogramu zmienia zakres zmienności poziomów jasności obrazu wyjściowego.

  5. Metoda poprawy jakości obrazu poprzez korekcję tonalną

    Korekcja tonalna jest przykładem operacji punktowej, czyli takiej, która jest wykonywana na pojedynczym px obrazu. W wyniku korekcji tonalnej wykonać można:

    - rozjaśnienie obrazu;

    - przyciemnienie obrazu;

    - obniżenie kontrastu;

    - zwiększenie kontrastu.

    - zmniejszenie kontrastu

    Korekcja tonalna wykonywana jest na krzywej tonów. Krzywa ta jest wykresem opisującym zależności pomiędzy wielkością poziomów jasności na wejściu (obraz przed korekcja) a poziomami jasności na wyjściu (obraz po korekcji). Krzywa odwzorowania tonów jest początkowo linia prosta nachylona pod kątem 45°. Na osi poziomej zaznaczone są poziomy jasności obrazu wejściowego, a na osi pionowej poziomy jasności obrazu wyjściowego. Przed korekcja krzywa przypisuje identyczne poziomy jasności obrazowi wejściowemu i wyjściowemu. W trakcie korekcji kształt krzywej jest zmieniany. Krzywa posiada umowne zakresy (obszary) jasności:

    1. Cienie

    2. Tony średnie

    3. światła

    Obszary zajmują dokładnie 1/3 osi każdy.

    Wyróżniamy 2 rodzaje korekcji tonalnej:

    - liniową

    - nieliniową

    Liniowa korekcja Tonalna – krzywa zależności tonów jest linią prostą lub łamaną nachyloną do osi pod pewnym kątem. Wadą takiej korekcji jest obcięcie pewnych tonów i utrata szczegółów w skrajnych tonach. Efektów takich nie powoduje korekcja nieliniowa.

  6. Napisać program zmieniający jasność obrazu poprzez liniową korekcję tonalną

    struct pixel {

    int R;

    int G;

    int B;

    }

    int main()

    {

    pixel OBRAZ[K+1][L+1];

    // Tutaj pobieramy obraz gdzies z zewnatrz

    double n; // Jakaś wartość od 0 do 1

    for(int i=1;i<=K;i++)

    for(int j=1;j<=L;j++)

    {

    if(OBRAZ[i][j].R+N*256>=255)

          OBRAZ[i][j].R=255;

    else if(OBRAZ[i][j].R+N*256<=0)

          OBRAZ[i][j].R=0;

        else

          OBRAZ[i][j].R=N*256+OBRAZ[i][j];


    if(OBRAZ[i][j].G+N*256>=255)

          OBRAZ[i][j].G=255;

    else if(OBRAZ[i][j]GR+N*256<=0)

          OBRAZ[i][j].G=0;

        else

          OBRAZ[i][j].G=N*256+OBRAZ[i][j];


    if(OBRAZ[i][j].B+N*256>=255)

          OBRAZ[i][j].B=255;

    else if(OBRAZ[i][j].B+N*256<=0)

          OBRAZ[i][j].B=0;

        else

          OBRAZ[i][j].B=N*256+OBRAZ[i][j];

    }

    }

    }

  1. Napisać program zmieniający kontrast obrazu poprzez liniową korekcję tonalną

    struct pixel {

    int R;

    int G;

    int B;

    }

    int main()

    {

    pixel OBRAZ[K+1][L+1];

    // Tutaj pobieramy obraz gdzies z zewnatrz

    int a; // Współczynnik kierunkowy prostej

    for(int i=1;i<=K;i++)

    {

    for(int j=1;j<=L;j++)

    {

    if((a*(OBRAZ[i][j].R-128)+128)<=0)

          OBRAZ[i][j].R=0;

    else if((a*(OBRAZ[i][j].R-128)+128)>=255)

          OBRAZ[i][j].R=255;

        else

          OBRAZ[i][j].R = a*(OBRAZ[i][j].R-128)+128;


    if((a*(OBRAZ[i][j].G-128)+128)<=0)

          OBRAZ[i][j].G=0;

    else if((a*(OBRAZ[i][j].G-128)+128)>=255)

          OBRAZ[i][j].G=255;

        else

          OBRAZ[i][j].G = a*(OBRAZ[i][j].G-128)+128;


    if((a*(OBRAZ[i][j].B-128)+128)<=0)

          OBRAZ[i][j].B=0;

    else if((a*(OBRAZ[i][j].B-128)+128)>=255)

          OBRAZ[i][j].B=255;

        else

          OBRAZ[i][j].B = a*(OBRAZ[i][j].B-128)+128;

    }

    }

    }

  1. Metoda poprawy jakości obrazu poprzez filtrowanie przestrzenne

W metodach filtrowania przestrzennego przetwarzaniu podlega bezpośrednio funkcja jasności (obraz jest reprezentowany jako macierz poziomów jasności). Funkcję działającą na obraz wejściowy można opisać wyrażeniem:

g(x, y) = T[ f (x, y)]

gdzie:

f(x,y) - funkcja reprezentująca obraz wejściowy;

g(x,y) - funkcja reprezentująca obraz przetworzony;

T - operator lokalny działający na określonym obszarze obrazu np.: (3x3, 5x5 lub 7x7 pikseli).

Wartość jasności piksela obrazu wyjściowego obliczana jest na podstawie jasności pikseli obrazu wejściowego leżących w bezpośrednim sąsiedztwie danego piksela. W metodach tych definiowana jest maska, która przemieszcza się w obrębie obrazu z krokiem równym odstępowi między pikselami i zgodnie z definicją operatora T wyznaczana jest nowa wartość g(x,y) dla każdego piksela obrazu.

Przykłady filtrów:

  1. Omówić zasadę działania filtru medianowego do usuwania zakłóceń typu punktowego

Filtr medianowy, jest to filtr przetwarzania przestrzennego i służy do usuwania zakłóceń typu punktowego. Działa erozyjnie, co jest zjawiskiem niepożądanym. Polega to na tym, że po wielokrotnym użyciu filtru medianowego krawędzie obiektów o różnych poziomach jasności stają się poszarpane. W wyniku działanie filtru medianowego piksel obrazu wyjściowego przyjmuje wartość mediany z wartości pikseli obrazu wejściowego znajdujących się w jego otoczeniu. Medianę wyznacza się w ten sposób, że wartości pikseli z otoczenia sortuje się od największego do najmniejszego a następnie wybiera się wartość środkową ciągu. W przypadku masek o parzystej liczbie pikseli w otoczeniu, medianę oblicza się przez uśrednienie wartości dwóch pikseli środkowych posortowanego ciągu.

  1. Wyznaczyć szerokość pasma video (VBW) karty graficznej generującej obraz o rozdzielczości KxL z częstotliwością odświeżania VFreq i czasami wygaszania HBlank i Vblank

  2. Wyznaczyć częstotliwość sygnału synchronizacji poziomej (HFreq) karty graficznej generującej obraz o rozdzielczości KxL z częstotliwością odświeżania VFreq i czasami wygaszania HBlank i Vblank

    Jeśli mamy obliczyć HSync to:

  3. Omówić kryterium wyboru pikseli w algorytmie Bresenhama kreślenia odcinka

    Rysowanie odcinka metodą Bresenhama opiera się na zmiennej decyzyjnej, której znak decyduje o kolejnym kroku algorytmu. Zmienna określa kierunek poziomy, pionowy lub idealnie skośny rysowania kolejnego piksela odcinka. Algorytm działa na liczbach całkowitych.

    Założenia:
    - odcinek określony przez współrzędne początku i końca (x
    0 ,y0) i (xk ,yk);

    - x0 < xk

    - współczynnik kierunkowy odcinka spełnia nierówność: 0<dy/dx ≤ 1

    gdzie: dy = yk - y0

    dx = xk – x0

    Rysowanie zaczynamy od piksela P0 = (x0 ,y0). Ponieważ kąt nachylenia odcinka jest ograniczony do przedziału [0, 45°], więc po znalezieniu kolejnego Pi = (xi ,yi) następny piksel wybieramy z pośród tylko dwóch: Si+1= (xi+1, yi) i Ti+1= (xi+1, yi+1)

    Wielkości s i t są określone równaniami:

    Odejmując te równania stronami i mnożąc przez dx otrzymujemy:

    Ponieważ dx > 0, więc znak di określa, która z wielkości s i t jest większa.

    Jeśli di > 0, to i za Pi+1 przyjmujemy piksel Ti+1, w przeciwnym razie, jeżeli di < 0, wybierzemy piksel Si+1.

    Równość di = 0 oznacza, że oba piksele Si+1 i Ti+1 leżą w tej samej odległości od odcinka i wtedy możemy arbitralnie decydować, np., że

    Pi+1 = Ti+1.

    Dla i+1 wzór (1) ma postać:

    Odejmując od niego stronami równanie (1) uzyskujemy zależność:

    stąd:

    gdyż:

    Jeżeli di ≥ 0 (wybieramy wtedy Pi+1 = Ti+1) to yi+1 = yi + 1 i zależność rekurencyjna (2) upraszcza się do postaci:

    a jeżeli di < 0 (wybieramy wtedy Pi+1 = Si+1) to yi+1 = yi i mamy:

    Dla i = 0, ze wzoru (1) dostajemy wartość początkową zmiennej decyzyjnej

  4. Omówić kryterium wyboru pikseli w algorytmie Bresenhama kreślenia okręgu

    Założenia:

    - promień okręgu R jest liczbą naturalną, a jego środek leży w początku układu współrzędnych;

    - ośmiokierunkowy wybór piksela;

    - ze względu na symetrię okręgu ograniczymy wyznaczanie piksela tylko do 1/4 okręgu (dla a = 1 wystarczy rozważenie 1/8 okręgu).

    Rysowanie zaczynamy od piksela P0=(0,R), następne wyznaczamy zgodnie z kierunkiem obrotu wskazówek zegara. Po znalezieniu piksela Pi, wybór następnego Pi+1 ogranicza się do jednego z trzech pikseli oznaczonych na rysunku literami A, B lub C.

    Punkt Z, w którym współczynnik kierunkowy wektora stycznego:

    jest równy -1, dzieli ćwiartkę okręgu na dwa wycinki:

    - w wycinku 1: p 2 x < q 2 y - wybieramy piksel Pi+1 spośród pikseli A i B zwiększając kolejno wartość x;

    - w wycinku 2: p 2 x ≥ q 2 y - wybieramy piksel Pi+1 spośród pikseli B i C zmniejszając kolejno wartość y.

    Wybór piksela leżącego bliżej okręgu (A czy B lub B czy C) można dokonać wyznaczając wartości f(x,y) dla odpowiednich współrzędnych (x i y). Sposób nie efektywny – działa na liczbach rzeczywistych. W przypadku krzywych opisanych równaniem wyższego stopnia złożony obliczeniowo.

  5. Omówić modelowanie powierzchni metodą Coonsa

    Dane są 4 krzywe definiujące brzeg płatu powierzchni. Zakładamy, że wycinek powierzchni S(u,v) jest znormalizowany do kwadratu jednostkowego, parametry u i v należą do przedziału <0, 1>. Krzywe brzegowe można przedstawić jako: P(u,0), P(u,1), P(0,v) i P(1,v). Płat powierzchni Coonsa buduje się interpolując punkty leżące na przeciwległych krzywych brzegowych. Utworzona powierzchnia przedstawiona jest równaniem parametrycznym:

    gdzie: Fi są odpowiednio dobieranymi funkcjami interpolującymi spełniającymi warunki brzegowe:

    F0(0) = 1, F0(1) = 0, F1(0) = 0 i F1(1) = 1

    Najprostszymi funkcjami Fi są funkcje: /złożenie liniowe powierzchni prostoliniowych ang. ruled surfaces/

    F0(u) =1-u i F1(u) =u oraz F0(v) =1-v i F1(v) =v

  6. Omówić funkcję składową i własności krzywych Beziera

    Krzywe Beziera definiujemy przez łamaną kontrolną o N+1 wierzchołkach P0, P1,..., PN. Początkowy i końcowy punkt leżący na krzywej pokrywa się z pierwszym i ostatnim punktem kontrolnym. Krzywe Beziera są styczne do łamanej kontrolnej w punkcie początkowym i końcowym. Umożliwia to łączenie ze sobą krzywych i powierzchni Beziera z zachowaniem ciągłości klasy C1 połączenia. Powierzchnia Beziera jest powierzchnią parametryczną S(u, v) wyznaczoną na podstawie siatki punktów kontrolnych, zwanej grafem kontrolnym określonej wg. odpowiedniego wzoru. Powierzchnia Beziera jest iloczynem tensorowym krzywych Beziera krzywych większość własności krzywych Beziera przenosi się również na powierzchnie.

    Właściwości krzywych i powierzchni Beziera:

    - nie przechodzą przez wszystkie punkty kontrolne

    - krzywe pozostają w wypukłej części łamanej kontrolnej, a powierzchnie leżą w powłoce wypukłej grafu kontrolnego

    - nie umożliwiają lokalnej kontroli kształtu. Punkty kontrolne mają wpływ nie tylko na punkty leżące w najbliższym otoczeniu, lecz także na punkty na całej długości krzywej lub powierzchni. Przesunięcie dowolnego punktu kontrolnego powoduje zmianę położenia wszystkich punktów tworzących krzywą lub powierzchnię

    - dla N punktów kontrolnych generowana jest krzywa stopnia N- 1. Wpływa to na złożoność obliczeniową algorytmów realizujących operacje na krzywych i powierzchniach

    - Krzywa Beziera jest styczna do łamanej kontrolnej w punktach węzłowych. Styczne w tych punktach pokrywają się z odcinkami odpowiednio P0P1 i PN-1PN łamanej kontrolnej. Umożliwia to łączenie krzywych z zachowaniem ciągłości połączenia C1.

  7. Omówić funkcję składową i własności krzywych B-sklejanych

    Krzywa B-sklejana jest definiowana przez N+1 punktów kontrolnych Pi, tworzących łamaną kontrolną o N+1 wierzchołkach na której określone są węzły ti. Funkcja bazowa Ni,k(t) jest wielomianem stopnia k-1, k-2 który zapewnia ciągłość klasy Ck-2 na całej długości definiowanej krzywej. Wartość krzywej zależy od położenia węzłów ti i ti+k. modyfikacja punktu kontrolnego zmienia lokalnie kształt krzywej. Kształt krzywej może być modyfikowany poprzez wielokrotne zdefiniowanie tego samego punktu kontrolnego. Stopień k funkcji bazowej wpływa na odległość krzywej od punktów definiujących.

    Właściwości krzywych i powierzchni B-sklejanych:

    - definiowane są na podstawie łamanych lub grafów kontrolnych

    - umożliwiają lokalną kontrolę kształtu tworzonej krzywej lub powierzchni

    - stopień k funkcji bazowej zapewnia ciągłość klasy Ck-2 na całej długości definiowanej krzywej

    - gładkość powierzchni jest kontrolowana przez stopień k i l funkcji bazowych

    - stopień funkcji bazowych nie zależ od liczby punktów kontrolnych

  8. Omówić funkcję składową i własności krzywych β-sklejanych

    Właściwości krzywych i powierzchni β-sklejanych:

    - mogą być wykorzystywane w interakcyjnych systemach graficznych, w których wymagana jest dokładana kontrola kształtu generowanych obiektów

    - kontrola kształtu oraz transformacje mogą być dokonywane lokalnie

    - parametry β1 i β2 mogą być przedstawione w formacie funkcji, co umożliwia ciągłą kontrolę kształtu

    - stopień bazowych funkcji β-sklejanych jest stały (3 dla krzywych i 6 dla powierzchni)

    - nie przechodzą przez punkty kontrolne, nawet przez punkt początkowy i końcowy. Dla zapewnienia przejścia przez określony punkt kontrolny należy do łamanej kontrolnej lub grafu dołożyć dodatkowy punkt

    Parametr β1 wpływa na symetrię krzywej, natomiast β2 kontroluje stopień przylegania krzywej do łamanej kontrolnej. Je żeli β1=1 i β2=0 to funkcje bazowe β-sklejane redukują się do funkcji bazowych B-sklejanych 3-go stopnia.

  9. Omówić klasy ciągłości w procesie modelowania krzywych i powierzchni nieregularnych- GDZIe to jest??!

  10. Omówić na przykładzie funkcji biblioteki OpenGL przekształcenia geometryczne w przestrzeni 3D

    W środowisku OpenGL rozróżniamy 3 podstawowe operacje przekształcenia geometryczne:

    - przesunięcie – translację

    - skalowanie

    - rotację – obrót

    Przesunięcie – jest wykonywane poprzez przesunięcie obiektu o zadany wektor. Realizowane przez funkcję glTranslate*();

    Skalowanie – zmienia rozmiar obiektu.

    S = <SX, SY, SZ> P(PXSX, PYSY, PZSZ). Realizowane jest przez funkcję glScale*().

    Rotacja – obrót obiektu wokół środka układu współrzędnych. Realizowana przez funkcję glRotate*(). Jej parametry to kąt obrotu, oraz osie wokół których nabyć wykonany obró t.

  11. Omówić na przykładzie funkcji biblioteki OpenGL rzutowanie perspektywiczne i równoległe

    Rzut perspektywiczny nadaje realizm symulacjom i animacjom oraz imituje wrazenie glebi obrazu. Wielkosc rzutu obiektu jest odwrotnie proporcjonalna do odleglosci obiektu od srodka rzutowania. Rzuty tego typu nie nadaja sie jednak do rejestrowania ksztaltu obiektu i dokonywania pomiarow (np. katy na ogol nie sa zachowywane). Punkt zbieznosci dla peku prostych rownoleglych do danej osi ukladu wspolrzednych, okreslamy jako osiowy punkt zbieznosci. W zaleznosci od liczby istniejacych osiowych punktow zbieznosci rozrozniamy rzuty jedno-, dwu- i (rzadko stosowane) trzy-punktowe. Liczba osiowych punktow zbieznosci zalezy od tego ile osi ukladu wspolrzednych przecina rzutnia. W OpenGL za rzut perspektywiczny odpowiada funkcja glFrustnum(), jej parametry to kolejno krawędzie lewa, prawa, dolna, górna bliższej płaszczyzny odcięcia, oraz paramRetry odległość bliższej i dalszej płaszczyzny odcięcia

    Rzut równoległy (ortagonalny) jest najprostszym rodzajem rzutow, dla ktorego obraz punktu jest sladem normalnej do plaszczyzny rzutowania przechodzacej przez ten punkt. Jezeli plaszczyzna rzutowania jest XY wowczas wspolrzednej Z przypisuje sie wartosc 0. Tego typu rzutowanie okresla sie stosujac prostokatna lub szescienna bryle rzutowania. Nic, co znajduje sie poza ta bryla nie jest rzutowane. Bryle rzutu okresla sie podajac blizsza, dalsza, lewa, prawa, gorna i dolna plaszczyzne obcinania. Rzuty te latwo uzyskac jednak nie daja one obrazow realistycznych chyba, ze obserwator znajduje sie daleko od obiektu. Ten rodzaj rzutowania stosuje sie w projektowaniu architektonicznym i programach CAD. Do określenia parametrów tego rzutu w OpenGL służy funkcja glOrtho przyjmująca kolejno za parametry lewą prawą, dolną, górną, bliższą i dalszą płaszczyznę odcięcia.

  12. Omówić składanie przekształceń z wykorzystaniem funkcji biblioteki OpenGL działających na stosie macierzy modelowania

    Operacje obrotu, translacji oraz skalowania można przedstawić za pomocą macierzy, przez którą należy pomnożyć współrzędne wierzchołka którego chcemy zmodyfikować. Ogólna postać takiej macierzy to:

    Następuje złożenie wszystkich przekształceń, w postaci jednej macierzy przekształceń. UWAGA Przekształcenia macierzowe w OpenGL wykonywane są w odwrotnej kolejności niż wynikałoby to z kodu programu.

    Funkcje działające na stosie macierzowym:

    void glPushMatrix(void) – Skopiowanie macierzy na wierzchołku stosu.

    void glPopMatrix(void) – Zdjęcie macierzy z wierzchołka stosu.

    void glLoadIdentity(void) – Załadowanie macierzy jednostkowej na wierzchołek stosu

    void glMatrixMode(GLenum tryb) – Wybór aktywnego stosu macierzowego (tryb = GL_MODELVIEW – stos macierzy modelujących, tryb = GL_PROJECTION – stos macierzy rzutujących).

    Funkcje przekształceń – patrz wyżej!

  13. Prymitywy geometryczne dostępne w bibliotece OpenGL

Podstawowymi funkcjami służącymi do definiowania kształtów obiektów są glBegin(), glEnd() oraz glVertex*()

glVertex*() - Definiuje pojedynczy wierzchołek figury podstawowej. Jako parametry pobiera jego współrzędne w przestrzeni x, y, z, w.

glBegin(GLenum mode) – Rozpoczyna definicję obiektu. Z wierzchołków zdefiniowanych pomiędzy glBegin() oraz glEnd() tworzone będą figury podstawowe. Ich rodzaj określa parametr mode, który może przyjmować następujące wartości:

GL_POINTS – definiuje punkty p1, ...pn

GL_LINES – definiowane są niepołączone ze sobą odcinki prostej pomiędzy punktami: p1 oraz p2, p3 oraz p4 itd.

GL_LINE_STRIP – definiowane są połączone ze sobą odcinki prostej. Pierwszy od p1 do p2, drui od p2 do p3,..., ostatni od pn-2 do pn

GL_LINE_LOOP – podobnie jak w przypadku GL_LINE_SYTRIP, definiowane są połączone ze sobą odcinki prostej, z tym że automatycznie dodawany jest odcinek pomiędzy punktami p1 oraz pn, dopełniając w ten sposób pętlę.

GL_TRIANGLES – definiowane są niepołączone ze sobą trójkąty. Pierwszy o wierzchołkach w p1, p2, p3, drugi p4,p5,p6 itd. Jeżeli n nie jest wielokrotnością 3, wówczas punkty, które pozostają bez swojego dopełnienia do 3, zostają odrzucone

GL_TRIANGLE_STRIP – definiowane są połączone ze sobą trójkąty, w taki sposób że pierwszy tworzą wierzchołki p1,p2,p3, drugi p3,p2,p4,..., ostatni p1, pn-1, pn.

GL_TRIANGLE_FAN - podobnie jak w przypadku GL_TRIANGLE_STRIP definiowane są połączone ze sobą trójkąty, z tym że wszystkie one mają wspólny wierzchołek p1. Kolejne trójkąty tworzą wierzchołki: pierwszy p1, p2, p3, drugi, p1,p3,p4, …, ostatni p1, pn-1,pn

GL_QUADS – definiowane są niepołączone ze sobą czworokąty o wierzchołkach w punktach: pierwszy p1, p2, p3, p4; drugi p5, p6, p7, p8; itd. Jeżeli n nie jest wielokrotnością 4, wówczas punkty, które pozostają bez swojego dopełnienia do 4, zostają odrzucone.

GL_QUAD_STRIP – definiowane są połączone ze sobą czworokąty. Pierwszy tworzą wierzchołki p1, p2, p4, p3, drugi p3, p4, p6, p5, …, ostatni pn-3, pn-2, pn, pn-1.

GL_POLYGON – definiowany jest wielokąt o wierzchołkach p1, p2, …, pn.

glEnd() - funkcja oznaczająca koniec definicji obiektu.


  1. Wykorzystując wskazaną funkcję modelowania geometrycznego biblioteki OpenGL napisać program generujący obraz bryły o zadanych parametrach

    Np. Ostrosłup prawidłowy czworokątny o boku a jak na rysunku:

    // Dolna podstawa

    int a =4;

    glBegin(GL_QUADS);

    glVertex3f(a/2,0,-a/2);

    glVertex3f(a/2,0,a/2);

    glVertex3f(-a/2,0,a/2);

    glVertex3f(-a/2,0,-a/2);

    glEnd();

    // Sciana 1 , a*sqrt(3)/2 – wysokość ostrosłupa

    glBegin(GL_TRIANGLES);

    glVertex3f(a/2,0,-a/2);

    glVertex3f(a/2,0,a/2);

    glVertex3f(0,a*(sqrt(3)/2),0);

    // Sciana2

    glVertex3f(a/2,0,a/2);

    glVertex3f(-a/2,0,a/2);

    glVertex3f(0,a*(sqrt(3)/2),0);

    // Sciana3

    glVertex3f(-a/2,0,a/2);

    glVertex3f(-a/2,0,-a/2);

    glVertex3f(0,a*(sqrt(3)/2),0);

    // Sciana3

    glVertex3f(-a/2,0,-a/2);

    glVertex3f(a/2,0,-a/2);

    glVertex3f(0,a*(sqrt(3)/2),0);

    glEnd();

  2. Narysować i opisać model procesu rzutowania 3D


    Na wejściu do procesu podawana jest macierz współrzędnych we współrzędnych obiektu. Następnie wykonywane są:

    1. macierz modelowania M

    - translacja

    - rotacja

    - skalowanie

    2. macierz rzutowania P

    - rzut ortogonalny

    - rzut perspektywiczny

    3. Dzielenie perspektywiczne

    Przekształcenie normalizujące w celu przejścia do wsp. w pixelach.

    4. przekształcenie do wsp. ekranowych

    Definiowanie okna zobrazowania.

  3. Jakie czynniki fizyczne wpływają na wrażenie koloru? Podać ich interpretację na przykładzie wykresu rozkładu energii światła w funkcji długości fali

    Barwa (ang. hue) – określana przez dominującą długość fali, czynnik jakościowy – to co odróżnia np. zieleń od błękitu.

    Nasycenie (ang. saturation) – określane jako stosunek energii dominującej długości fali e2 do wypadkowej energii e1 pozostałych fal tworzących widmo świetlne. Nasycenie (czystość barwy) jest tym większe, im większa jest wartość e2 w stosunku do e1. Dla e1=0 nasycenie maksymalne, dla e2=e1 nasycenie zerowe (barwy achromatyczne).

    Jasność (ang. ligthness) – określana stopniem podobieństwa barwy do bieli (dla odcieni jasnych) czy czerni (dla odcieni ciemnych), czynnik ilościowy proporcjonalny do całki z widmowego rozkładu energii światła.


  4. Narysować i opisać model koloru CIE La*b. W jakim zakresie definiuje się parametry tego modelu

Opracowany przez Miedzynarodowa Komisje Oswietleniowa

(CIE) model barw CIE La*b* jest najwazniejszym modelem w

odniesieniu do grafiki komputerowej. Opisywane barwy

mieszaja sie w elipsoidzie o trzech prostopadlych osiach. Wzdluz

osi a barwy przechodza od zielonej do czerwonej, wzdluz osi b

od zoltej do niebieskiej, w punkcie zbiegu jest biel (szarosc).

Wzdluz osi pionowej L okreslajacej jasnosc, biegna barwy

achromatyczne - od bieli do czerni.

Barwy objete w kuli CIE La*b* tworza najszersza game barw,

model zostal opracowany na bazie modelu CIE Yxy.

Zastosowana transformacja wspolrzednych umozliwia latwiejsze

wyliczenie odleglosci pomiedzy dwoma barwami w przestrzeni.


Kazdy inny model barw da sie opisac we wspolrzednych La*b*,

ale nie na odwrot. Czyni to model ten niezaleznym od urzadzen

wejscia/wyjscia. Model wykorzystywany jest do obliczen na

barwach przez systemy zarzadzania barwami CMS.

a*,b*∈[-60;60]

L∈[0;100]

  1. Narysować i opisać modele koloru RGB i CMY. Podać równanie konwersji RGB → CMY

RGB w systemie wykorzystane są 3 barwy podstawowe Red,

Green, Blue. Odpowiadają one składowym koloru w monitorach


rastrowych. Model ten może zostać przedstawiony jako sześcian

o krawędzi jednostkowej. W punkcie (0,0,0) znajduje się barwa

czarna, w punkcie (1,1,1) barwa biała. Osie odpowiadają

odpowiednio barwom modelu RGB. Wierzchołki na osiach

reprezentują barwy podstawowe, zaś wierzchołki przeciwległe

barwy dopełniające. Jest to przykład systemu addytywnego,

ponieważ mieszanie barw odbywa się poprzez dodawanie

składowych w odpowiednich proporcjach.

CMY – barwy podstawowe: cyjan, magenta, yellow.


Odpowiadają one różnicy podstawowych barw systemu RGB.

Składowe te nazywane są substraktywnymi, ponieważ usuwają

składowe RGB z widma światła białego.


RGB→CMY:

  1. Omówić model koloru CMYK. Podać równanie konwersji CMY → CMYK

    Model CMYK jest rozszerzeniem modelu CMY o barwę czarną jest wykorzystywany szczególnie w urządzeniach drukujących. Dodanie barwy czarnej było konieczne z powodu iż suma barw systemu CMY nie daje barwy czarnej, a jedynie barwę szarą, lub popielatą.

    Konwersja CMY→CMYK:

    k to współczynnik regulacji kontrastu z zakresu [0;1]. Z reguły przyjmuje się k=1

  2. Narysować i opisać model koloru HLS i HSV. W jakim zakresie definiuje się parametry tego modelu

    Model HLS:

Kolor definiowany jest za pomocą trzech wielkości: barwy (H- hue), jasności (L- lightness) i nasycenia (S- saturation). Barwa jest reprezentowana za pomocą okręgu. Wartości definiujące barwę mieszczą się w przedziale (0°-360°). Trzy kolory podstawowe (red, green, blue) i trzy kolory dopełniające (cyan, magenta, yellow) są rozmieszczone regularnie na okręgu tworząc sześcian regularny. Jasność (L)definiuje wartościami od 0 (kolor czarny) do 1(kolor biały) wszystkie odcienie szarości (skala kolorów achromatycznych). Nasycenie (S) fizycznie odpowiada ilości fal o różnej długości składających się na dany kolor. Wartość 1 odpowiada kolorowi czystemu lub w pełni nasyconemu i tworzonemu za pomocą fal o tej samej długości.


    Model HSV:

Model ten czesto nosi nazwe HSB, gdzie B oznacza jaskrawosc. Przedstawia sie go w postaci ostroslupa prawidlowego o podstawie szesciokatnej. Wierzcholki podstawy odpowiadaja barwom spektralnym, wierzcholek ostroslupa odpowiada barwie czarnej, a spodek wysokosci barwie bialej.

Barwa mierzona jest katem β wokol osi V: =0 dla barwy czerwonej; β=120 dla barwy zielonej; β=240 dla barwy niebieskiej. Barwe dopelniajaca do danej otrzymuje sie przez zwiekszanie β o 180. Wartosc nasycenia okresla wzgledna odleglosc punktu od pionowej osi , dla punktow lezacych na osi V wartosc nasycenia jest rowna zero, a dla punktow lezacych na trojkatnych scianach ostroslupa wartosc nasycenia wynosi jeden. Barwa ma najmniejsza wartosc V=0 w wierzcholku ostroslupa, maksymalna wartosc V=1 osiaga w punktach podstawy. Okreslanie barwy uzytkownik moze rozpoczac od podania kata i V=S=1; wybiera on tym samym czysta barwe spektralna. Nastepnie sciemnia ja ( dodaje barwe czarna zmniejszajac odpowiednio wartosc V) lub rozjasnia ( dodaje barwe biala zmniejszajac wartosc nasycenia S).

  1. Operacje w przestrzeni kolorów RGB

1. Operacje bezpośrednie

- dodawanie kolorów C1+C2=[r1+r2, g1+g2, b1+b2]

- mnożenie przez skalar αC=[αr, αg, αb] α € <0;1>;

2. Operacje pośrednie

Obliczenia w przestrzeni kolorów

3. Nakładanie kolorów

i ze starej ściągi

zmiana jasnosci

filtr kolorowy

zwiekszenie kontrastu

utrata ostrosci

wygladzanie (smoothing)

uwypuklenie (relief)

redukcja liczby barw

zmiana nasycenia

zmiana barwy

przejscie na obraz monochromatyczny

progowanie

fotoinwersja

  1. Cieniowanie powierzchni metodą Gourauda

    1. Wyznaczenie barwy w wierzchołkach trójkąta:

    - wyznaczenie wektorów normalnych do wszystkich wierzchołków jako średniej arytmetycznej wektorów normalnych wszystkich ścian, do których ten wierzchołek należy.

    - na podstawie wektora normalnego wyznaczenie barwy wierzchołka korzystając z wybranego modelu oświetlenia

    2. Liniowa interpolacja barwy dla wszystkich punktów wielokąta zgodnie z zaprezentowanymi wzorami:


  2. Cieniowanie powierzchni metodą Phonga

    Cieniowanie metoda Phonga polega na interpolacji wektora normalnego dla każdego punktu wielokąta, a następnie wyznaczenie na tej podstawie intensywności barwy.

    Etapy:

    1. Wyznaczenie wektorów normalnych do wszystkich wierzchołków wielokąta jako średniej arytmetycznej wektorów normalnych wszystkich ścian, do których ten wierzchołek należy.

    2. Liniowa interpolacja wartości wektorów normalnych dla wszystkich punktów wielokąta (dla wszystkich pikseli):

    2.1. Interpolacja wzdłuż krawędzi;

    2.2. Interpolacja wzdłuż linii horyzontalnych.

    3. Na podstawie wartości wektorów normalnych wyznaczenie barwy dla wszystkich punktów wielokąta zgodnie z przyjętym modelem oświetlenia

  3. Model oświetlenia Phonga

    - uwzględnia odbicie kierunkowe (zwierciadlane) światła

    - powierzchnia odbijająca ma charakter lustrzany: powierzchnie gładkie z połyskiem (światło odbijane w jednym kierunku)

    - zapewnia złudzenie odblasku światła na powierzchni obiektów

    - w miejscu rozświetlenia barwa zbliżona do barwy padającego światła

    - efekty oświetlenia zależne od położenia obserwatora (kata pomiędzy kierunkiem światła odbitego a kierunkiem do obserwatora)

  4. Równanie renderingu

    - globalny model oświetlenia

    - rozwiązuje problem propagacji energii świetlnej w środowisku, nie zajmuje się interakcją światła z danym rodzajem powierzchni

    - oparte na znanym w termodynamice zjawisku transferu ciepła drogą promieniowania i zasadzie zachowania energii

    - modelowanie oświetlenia poprzez wielokrotne rozwiązanie równania renderingu dla każdego punktu lub powierzchni elementarnej wizualizowanej sceny

    gdzie:

    g(x,x’) – czynnik geometryczny określający położenie punktu x w stosunku do punktu x’

    - jeżeli x i x’ są dla siebie niewidoczne to: g(x,x’) = 0

    - w pozostałych przypadkach: g(x,x’) = 1/r2 gdzie r jest odległością między x i x’

    ε(x,x’) – intensywność światła emitowanego z punktu x’ w kierunku punktu x , różna od zera jedynie dla powierzchni aktywnych oświetleniowo (pierwotne źródła światła)

    I(x’,x”) – intensywność światła w punkcie x’ emitowanego lub odbijanego w punkcie x” w kierunku punktu x’

    ρ(x,x’,x”) – współczynnik odbicia światła I(x’,x”) w kierunku punktu x


Wyszukiwarka

Podobne podstrony:
opracowane zagadnienia ściąga nowa
K IO ściąga nowa(1)
Prawo cywilne - ściąga nowa, do szkoły, ściągi
sciaga nowa pytania jarzyna, AGH Wggioś górnictwo i geologia - materiały, Geofizyka
biotechnologia sciaga nowa, zchomikowane
hydro calosc sciaga (nowa) id 2 Nieznany
materialoznawstwo (sciaga nowa)
opracowane zagadnienia ściąga nowa
Sciaga Nowa
IMMUNO nowa - sciaga, STOMATOLOGIA, III ROK, Patomorfologia
Pedagogika specjalna - nowa sciaga kopia, Pedagogika specjalna
nowa sciaga do glupiej luizy haha, Wyższa Szkoła Biznesu w Dąbrowie Górniczej, Psychologia spoleczna
sciaga obrobka nowa!!!!, AGH, Semestr II, Podstawy Nauk o materiałach[Kot,Dymek,Rakowski], PNOM, egz
Wypiek odroczony-sciaga2, NAUKA, NAUKA nowa, BIOTECHNOLOGIA
gotowa sciaga, NAUKA, NAUKA nowa, BIOTECHNOLOGIA
Nowa ściąga

więcej podobnych podstron