Język JAVA podstawy. Wykład 5, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podobne dokumenty
Kontenery i komponenty graficzne

Tworzenie elementów graficznych

dr inż. Piotr Odya dr inż. Piotr Suchomski

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Dokumentacja do API Javy.

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com

Akwizycja obrazów. Zagadnienia wstępne

Języki i metody programowania Java. Wykład 2 (część 2)

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Java - interfejs graficzny

Programowanie Multimediów. Programowanie Multimediów JAVA. grafika w JAVA 2D API [1]

Grafika i komunikacja człowiek komputer Laboratorium. Część 1: Wstęp do grafiki

Język JAVA podstawy. Wykład 5, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006

Grafika na stronie www

Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit)

Programowanie obiektowe

Programowanie zdarzeniowe

Grafika komputerowa. Oko posiada pręciki (100 mln) dla detekcji składowych luminancji i 3 rodzaje czopków (9 mln) do detekcji koloru Żółty

Grafika komputerowa. Dla DSI II

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Kurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016

INFORMATYKA WSTĘP DO GRAFIKI RASTROWEJ

Programowanie w Javie Wykład 6 Okienka w Javie (AWT)

Programowanie obiektowe

Programowanie w Internecie. Java

Język Java część 2 (przykładowa aplikacja)

Rozdział 6 Grafika i multimedia w Javie

Zamiana reprezentacji wektorowej na rastrową - rasteryzacja

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

1 Atrybuty i metody klasowe

Informatyka i Ekonometria Programowanie komputerów Ćwiczenia Tworzenie aplikacji wykorzystaniem graficznego interfejsu użytkownika - Swing.

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

Formaty plików graficznych

Graphic User Interfaces pakiet Swing

Analiza i Przetwarzanie Obrazów. Szyfrowanie Obrazów. Autor : Mateusz Nawrot

Programowanie graficznych interfejsów użytkownika

Gimp Grafika rastrowa (konwersatorium)

Aplikacja wielow tkowa prosty komunikator

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Java niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)

Programowanie obiektowe

Grafika Komputerowa Wykład 1. Wstęp do grafiki komputerowej Obraz rastrowy i wektorowy. mgr inż. Michał Chwesiuk 1/22

Technologie Informacyjne

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Interfejsy i klasy wewnętrzne

SWING. dr Jarosław Skaruz

Podstawy Języka Java

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wykład 6: Dziedziczenie

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Do opisu kolorów używanych w grafice cyfrowej śluzą modele barw.

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Wykład 7: Pakiety i Interfejsy

Język Java część 2 (przykładowa aplikacja)

Aplikacja wielowątkowa prosty komunikator

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Klasy abstrakcyjne i interfejsy

Podstawy grafiki komputerowej

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Enkapsulacja, dziedziczenie, polimorfizm

Adam Korzeniewski p Katedra Systemów Multimedialnych

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Cechy formatu PNG Budowa bloku danych Bloki standardowe PNG Filtrowanie danych przed kompresją Wyświetlanie progresywne (Adam 7)

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Wymagania edukacyjne na ocenę z informatyki klasa 3

Programowanie obiektowe zastosowanie języka Java SE

Język Java. Rysowanie GUI Określanie wyglądu komponentów

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Rozdział 4 KLASY, OBIEKTY, METODY

Pierwsza ramka. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 10

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Przedmowa 11 Ważniejsze oznaczenia 14 Spis skrótów i akronimów 15 Wstęp 21 W.1. Obraz naturalny i cyfrowe przetwarzanie obrazów 21 W.2.

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Cała prawda o plikach grafiki rastrowej

Ćwiczenia z grafiki komputerowej 4 PRACA NA WARSTWACH. Miłosz Michalski. Institute of Physics Nicolaus Copernicus University.

Warstwa Rysunek bitmapowy Rysunek wektorowy

Grafika rastrowa (bitmapa)-

Percepcja obrazu Podstawy grafiki komputerowej

Wykład 8: Obsługa Wyjątków

Klasyfikacja metod kompresji

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

FORMATY PLIKÓW GRAFICZNYCH

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Bartosz Jachnik - Kino

Definiowanie własnych klas

SYLABUS/KARTA PRZEDMIOTU

GRAFIKA RASTROWA GRAFIKA RASTROWA

Transkrypt:

Język JAVA podstawy Wykład 5, część 3 1

Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do grafiki w Javie 2. Budowa GUI: komponenty, kontenery i układanie komponentów 3. Budowa GUI: obsługa zdarzeń 4. Grafika wektorowa porysujmy sobie 5. Reprezentacja koloru 6. Grafika rastrowa obrazy 7. Obsługa czcionek 2

Standardowo przyjmuje się, że kolor na podstawie przestrzenni RGB definiowany jest jako liniowa kombinacja barw podstawowych: kolor = r*r+g*g+b*b, gdzie RBG to kolory podstawowe, a rgb to wartości wag z zakresu (0,1). Zakres wag w systemach komputerowych jest przeważnie modyfikowany do postaci zakresu dyskretnych wartości tś całkowitych o dynamice 8 bitowej czyli 0..255. Stąd też programista definiuje kolor jako zbiór trzech wag z zakresu 0..255. W Javie istnieje klasa Color, która bezpośrednio umożliwia nam zdefiniowanie koloru w modelu RGB, np. new Color(0,0,255) daje barwę niebieską (R=0, G=0, B=255). W Javie istnieją predefiniowane stałe statyczne w klasie Color reprezentujące najczęściej wykorzystywane kolory np. Color.blue. 3

Wartości wag dla koloru w systemie RGB możemy uzyskać stosując komponent Javy JColorChooser: c = JColorChooser.showDialog(((Component) e.getsource()).getparent(), "Wybierz kolor:", Color.red); 4

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Wyboru extends JFrame { JButton jb_test; Color c; public Wyboru() { super("wybierz kolor!"); c=color.red; initgui(); } public void initgui(){ setsize(300, 300); jb_test=new JButton("TEST"); JButton jb_choose = new JButton("Wybierz kolor..."); jb_choose.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { c = JColorChooser.showDialog(((Component) e.getsource()).getparent(), "K:", Color.red); jb_test.setbackground(c); } }); add(jb_choose, BorderLayout.NORTH); add(jb_test, BorderLayout.CENTER); setdefaultcloseoperation(exit_on_close); }//koniec initgui() public static void main(string args[]) { Wyboru wk = new Wyboru(); wk.setvisible(true); ibl }//koniec main() }//koniec class 5

definiowany jest również w innych systemach kolorów, np. referencyjnym CIE XYZ, HSI, HSB, Lab, Luv, YUV, YCrCb, itd. Każdy z tych systemów ma swoje znaczenie. Przykładowo model typu YUV (Yluminancja, U i V składowe chrominancji) ułatwiają proces kompresji JPEG/MPEG poprzez większą kompresję stratną składowych chrominancji, na które oko ludzkie jest mniej wrażliwe. Przykładowo kodowanie 422 4:2:2 oznacza, że na 4 piksele luminancji ji( (w wierszu) przypadają dwa piksele chrominancji (np. 4Y 2U i 2V). W kodowaniu usuwanych jest połowa wartości pikseli chrominancji dla każdego komponentu! W kodowaniu 4:1:1 pozostaje tylko ¼ wartości chrominancji dla każdego komponentu. Przy dekodowaniu stosuje się różne techniki (powielanie, filtracja) w celu eliminacji widocznych błędów (najczęściej efektu "schodkowego"). ") Na kolejnym slajdzie pokazano znaczenie takich kompresji. 6

Luminancja (Y) co 4 wartość, U i V bez zmian Chrominancja (U i V) co 4 wartość, Y bez zmian ORYGINAŁ (1100/830) 7

Luminancja (Y) co 8 wartość, U i V bez zmian Chrominancja (U i V) co 8 wartość, Y bez zmian ORYGINAŁ 8

Luminancja (Y) co 16 wartość, U i V bez zmian Chrominancja (U i V) co 16 wartość, Y bez zmian ORYGINAŁ 9

Luminancja (Y) co 64 wartość, U i V bez zmian Chrominancja (U i V) co 64 wartość, Y bez zmian ORYGINAŁ 10

W internecie znajdziemy wiele przykładowych kodów umożliwiających przeliczenie wartości pomiędzy systemami kolorów (np. RGB >YUV >RGB). Podsumowując należy wskazać najbardziej istotne klasy w Javie związane z kolorem: java.awt.color.colorspaceawt obsługa systemów kolorów, java.awt.color reprezentacja koloru, java.awt.image.colormodel model koloru dla potrzeb definiowania obrazów cyfrowych 11

Klasa ColorSpace umożliwia operacje na systemie kolorów. Klasa Color obsługuje standardowy model RGB opisany wcześniej. Natomiast nieco uwagi wymaga klasa ColorModel. Warto zauważyć, że została ona zdefiniowana w pakiecie image. Klasa ColorModel opisuje bowiem konkretną metodę odwzorowania wartości piksela obrazu na dany kolor. Najbardziej j znane formy zapisu komponentów to tablice komponentów (czyli 4 macierze, po jednej dla przezroczystości A i RGB) lub jedna wartość 32 bitowa, gdzie każde 8 bitów tej liczby wykorzystywane jest do przechowywania informacji o danym komponencie (najstarsze 8 bitów to A, potem kolejno RGB). Wykorzystywane podklasy klasy abstrakcyjnej ColorModel to: ComponentColorModel, l IndexColorModel d loraz PackedColorModel. d l 12

ComponentColorModel każda próbka (komponent) jest przechowywana oddzielnie. Dla każdego piksela tworzony jest zbiór odseparowanych próbek (danego systemu kolorów, np. R G B). Kolejność występowania próbek jest definiowana przez przestrzeń kolorów, przykładowo dla przestrzeni RGB TYPE_RGB, index 0 oznacza próbkę dla komponentu RED, itd. Typ danych dla przechowywania pojedynczych próbek może być 8, 16 lub 32 bitowy: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT. 13

IndexColorModel odwołuje się do koloru nie poprzez zbiór próbek lecz poprzez wskaźnik do tablicy kolorów. W indeksowanej tablicy kolorów mamy zdefiniowany zestaw kolorów (np. RGB(100, 230,340)). Indeks do tablicy oznacza zatem kolor. W macierzy danych obrazu wartości traktowane są jako indeksy do tablicy kolorów. Typowe zastosowanie skala szarości w medycynie. 1 7 3 4 1 2 3 4 5 6 7 14

PackedColorModel jest abstrakcyjną klasą w ramach której kolor jest oznaczany dla danej przestrzeni kolorów poprzez definicję wszystkich komponentów oddzielnie, spakowanych w jednej liczbie 8, 16 lub 32 bitowej. Podklasą tej abstrakcyjnej klasy jest DirectColorModel. Przy wywołaniu konstruktora podaje się liczbę bitów na piksel oraz wartości masek dla każdego komponentu celem wskazania wartości tych hkomponentów. Jak widać sposób modelowania koloru istotnie wpływa na metodę reprezentacji obrazów rastrowych. Obraz cyfrowy w modelu rastrowym będzie się składał z macierzy wartości próbek (dane obrazu) oraz systemu (np. RGB) i modelu koloru (ComponentColorModel). 15

Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do grafiki w Javie 2. Budowa GUI: komponenty, kontenery i układanie komponentów 3. Budowa GUI: obsługa zdarzeń 4. Grafika wektorowa porysujmy sobie 5. Reprezentacja koloru 6. Grafika rastrowa obrazy 7. Obsługa czcionek 16