Aplikacja OPPOC

Obiektowe Procedury Przetwarzania Obrazów Cyfrowych
w języku Java.


Spis zawartości:

  1. Aplikacja - podstawowe informacje.
  2. Zrzuty ekranów.
  3. Struktura i cechy aplikacji.
  4. Instalacja i uruchamianie aplikacji.
  5. Rozwijanie aplikacji poprzez plug-in'y.
  6. Wersje oprogramowania.
  7. Źródła aplikacji.
  8. Uwagi.


Aplikacja - podstawowe informacje

Aplikacja OPPOC (Obiektowe Procedury Przetwarzania Obrazów Cyfrowych) została napisana w języku Java. Jest ona przeznaczona do przetwarzania obrazów cyfrowych. Przetwarzanie realizowane jest poprzez operacje graficzne z takich dziedzin, jak:

Do realizacji przetwarzania została wykorzystana biblioteka Java Advanced Imaging (JAI) firmy Sun. Biblioteka ta zawiera wiele operacji graficznych, które są wywoływane przez obiekty aplikacji OPPOC. Aktualnie wszystkie operacje graficzne wykorzystują mechanizmy zdefiniowane w tej bibliotece, jednak jest możliwe utworzenie operacji przetwarzających obrazy bezpośrednio na wartościach punktów.

Cele jakie przyświecały powstawaniu aplikacji, to:


Zrzuty ekranów


Struktura i cechy aplikacji

Aplikacja funkcjonuje jako archiwum uruchomieniowe (jar), które zawiera całą strukturę aplikacji, czyli skompilowane klasy, obrazy graficzne i inne wykorzystywane pliki. Archiwum uruchomieniowe aplikacji jest złożone z pakietów, co w strukturze dyskowej oznacza, że każdy pakiet posiada własny katalog. Poza katalogami pakietów występują jeszcze inne katalogi konieczne do poprawnego funkcjonowania aplikacji. Struktura katalogów aplikacji w archiwum:

Struktura całej aplikacji została tak zaprojektowana, aby pełniła rolę platformy do prostego definiowania operacji graficznych. Technologia definiowania operacji elementarnych opiera się na zestawie klas i obiektów mających na celu ułatwienie dodawania nowych operacji służących do przetwarzania obrazów cyfrowych, ułatwienie wykorzystywania oprogramowanych operacji oraz umożliwienie tworzenia przez użytkownika operacji złożonych.

Technologia dodawania nowej operacji polega na odpowiednim zmodyfikowaniu plików oppoc*.properties oraz na dodaniu klasy, dziedziczącej po klasie Operation, do pakietu jat.oppoc.op. Oczywiście, aby dodać operację w ten sposób, należy zmodyfikować źródła aplikacji. Innym prostszym sposobem jest dodanie plug-in'a. Poniżej zawarto przykład dodania operacji Kopiuj, która przepisuje obrazy wejściowe na wyjściowe. Przykład przedstawia sposób definiowania nowej operacji graficznej w kolejnych krokach:

  1. W jednym z plików oppoc*.properties należy sprawdzić ostatni numer operacji. Numer ten znajduje się w pozycji o.Number. W tworzonej operacji powinien być wykorzystywany numer następny. Fragment pliku z pozycją "o.Number":
    		    o.interp_nearest=Nearest neighbor
    		    o.interp_bilinear=Bilinear
    		    o.interp_bicubic=Bicubic
    		    o.interp_bicubic_2=Bicubic 2
    		    o.Error=Operation perform error. Check parameters.
    		    o.Icon=op/operation.jpg
    		    o.Number=64
    
    		    o.memText=@M of @@M
    		
  2. Należy utworzyć plik Kopiuj.java z nową klasą reprezentującą operację graficzną. Plik powinien być skopiowany do katalogu pakietu jat.oppoc.op. Poniżej znajduje się treść przykładowego pliku:
    		    package jat.oppoc.op;
    
    		    import jat.oppoc.ui.*;
    		    import java.util.*;
    		    import java.awt.image.renderable.ParameterBlock;
    		    import javax.media.jai.PlanarImage;
    
    		    //
    		    // Definicja klasy operacji graficznej dziedziczącej 
    		    // po klasie Operation
    		    //
    		    public class Kopiuj extends Operation {
    
    		    //
    		    // Konstruktor klasy Kopiuj. m.in. uruchamia 
    		    // konstruktor przodka
    		    //
    		    public Kopiuj() {
    		    super(UITools.getString("o65.Name"));
    		    min_in = Integer.parseInt(UITools.getString("o65.MinIn"));
    		    max_in = Integer.parseInt(UITools.getString("o65.MaxIn"));
    		    setIcon(UITools.getIcon(UITools.getString("o65.Icon")));
    		    init();
    		    }
    
    		    //
    		    // Metoda inicjuje komponenty parametryzujące operację. 
    		    // Jeżeli występują komponenty, to powinny być umieszczone 
    		    // na obiekcie 'panel'
    		    //
    		    private void init() {
    		    panel = new UIPanel();
    		    }
    
    		    //
    		    // Metoda konieczna do implementacji. 
    		    // Wektory in1 i in2 zawierają wejściowe obrazy cyfrowe.
    		    // Do wektora out należy dodawać przetworzone 
    		    // obrazy wejściowe
    		    //
    		    public void run(Vector in1, Vector in2, Vector out) {
    		    for (Enumeration e = in1.elements(); e.hasMoreElements();)
    		    out.add((PlanarImage) e.nextElement());
    		    for (Enumeration e = in2.elements(); e.hasMoreElements();)
    		    out.add((PlanarImage) e.nextElement());
    		    }
    
    		    //
    		    // Metoda konieczna do implementacji.
    		    //
    		    public PlanarImage run(ParameterBlock pb) {
    		    return null;
    		    }
    		    }
    		
  3. Należy zmienić pozycję "o.Number" na "65" w plikach oppoc*.properties.
  4. Do plików oppoc*.properties należy dodać wpis związany z dodawaną operacją, przykład dla pliku angielskiego:
    		    o65.Name=Copy
    		    o65.Tab=Area
    		    o65.Menu=Area
    		    o65.Class=jat.oppoc.op.Kopiuj
    		    o65.Title=Copy
    		    o65.Icon=op/copy.jpg
    		    o65.MinIn=1
    		    o65.MaxIn=0
    		
  5. W katalogu jat/oppoc/icons/op należy zapisać plik z ikoną graficzną dla operacji. W przypadku nie umieszczenia pliku zostanie przypisana ikona domyślna.
  6. Należy zbudować aplikację wywołując polecenie ant w katalogu, gdzie znajduje się plik build.xml (oczywiście należy posiadać zainstalowany program "ant").
  7. Aplikacja na pasku narzędziowym, na zakładce Area (Obszar) i w menu powinna zawierać wywołanie nowej operacji graficznej.


Instalacja i uruchamianie aplikacji

Instalacja aplikacji polega tylko na skopiowaniu pliku oppoc.jar do wybranego katalogu na dysku. Jednak, aby aplikacja mogła być uruchamiana i używana, konieczne jest zainstalowanie maszyny wirtualnej języka Java oraz biblioteki dla operacji graficznych na stacji roboczej.

Maszynę wirtualną można zainstalować w wersji dla programistów (Java 2 SDK Standard Edition) lub dla użytkowników (Java 2 Runtime Environment - w skrócie JRE). W przypadku używania maszyny wirtualnej dla użytkowników, aplikację można uruchamiać poprzez dwukrotne kliknięcie na pliku oppoc.jar.

Bibliotekę operacji graficznych należy zainstalować w wersji przeznaczonej dla SDK lub dla JRE w zależności od instalacji maszyny wirtualnej. Najnowsze wersje pakietów instalacyjnych Javy oraz biblioteki graficznej Java Advanced Imaging (JAI) są udostępniane nieodpłatnie przez firmę Sun pod adresem http://java.sun.com/products/java-media/jai/.

Poniżej, w kolejnych krokach, jest opisana typowa instalacja wszystkich elementów dla platformy Windows. W przypadku używania innych platform (np. GNU/Linux) instalacja wygląda bardzo podobnie.

Instalacja maszyny wirtualnej:

  1. Należy pobrać ze strony http://java.sun.com plik instalacyjny maszyny wirtualnej języka Java w wersji co najmniej 1.4. Przykładowe pliki dla SDK: "j2sdk-1_4_1_02-windows-i586.exe" lub JRE: "j2re-1_4_1_02-windows-i586.exe".
  2. Należy uruchomić pobrany program instalacyjny i kompletnie zainstalować środowisko Javy.
  3. W pliku konfiguracyjnym systemu operacyjnego (autoexec.bat) należy ustawić ścieżkę przeszukiwań "PATH" na podkatalog "bin" w katalogu z zainstalowaną Javą w przypadku pakietu SDK.

Instalacja biblioteki operacji graficznych:

  1. Należy pobrać ze strony http://java.sun.com/products/java-media/jai/ plik instalacyjny biblioteki Java Advanced Image w wersji co najmniej 1.1.2. Przykłądowe pliki dla SDK: "jai-1_1_2-beta-lib-windows-i586-jdk.exe" lub dla JRE: "jai-1_1_2-beta-lib-windows-i586-jre.exe".
  2. Należy uruchomić pobrany program instalacyjny i kompletnie zainstalować bibliotekę.

Po wykonaniu powyższych kroków aplikacja OPPOC jest przygotowana do uruchamiania poprzez kliknięcie dwukrotne na pliku oppoc.jar (w przypadku instalacji JRE) lub po wprowadzeniu polecenia:
		c:\oppoc>java -jar oppoc.jar
	    


Rozwijanie aplikacji poprzez plug-in'y

Aplikacja, w prosty sposób, może być rozwijana poprzez dodawanie nowych operacji (plug-in) przez każdego z użytkowników. Do dodania nowej operacji jest potrzebny pakiet SDK Javy wraz biblioteką JAI.

Podręcznik dodawania nowej operacji, jako plug-in, jest dostępny po uruchomieniu aplikacji OPPOC: w menu "Pomoc" ("Help"), w pozycji "Plug-in".


Wersje oprogramowania


Źródła aplikacji

Źródła aplikacji są umieszczone w repozytorium CVS na sourceforge.net.


Pobranie aplikacji


Uwagi

Proszę o przesyłanie uwag, propozycji, błędów oraz problemów związanych z aplikacją OPPOC na adres: jacekteska@users.sourceforge.net.




Prawa autorskie Jacek A. Teska (2002-2004)