Felhasználói dokumentáció

A programok Java nyelven készültek, ajánlatos a legújabb Java Runtime Environment segítségével futtatni őket. Linux operációs rendszer és Windows alatt egyaránt futtathatók. A programhoz készült egy Makefile is. Linux alatt ez gond nélkül használható, Windows alatt szükségünk lehet CygWin-re ( – illetve a make és rm parancsokra).

A program indítása

A program egyetlen paramétert vár a parancssorban, ez pedig a konfigurációs file neve, ami leírja a további paramétereket:

  • a bemeneti képfile neve (.png képformátumú),
  • a klaszterező eljárás megadása, további paraméterei,
  • a kimeneti képfile neve és mérete.

Pl. adjuk ki az alábbi parancsot a class file-okat tartalmazó könyvtárban:

java -classpath . Main data/test1.average-link.cfg

Ennek eredménye:

Opening image: 'data/test1.in.png'...done.
Data count: 40
Running clustering algorithm 'average-link'...
....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Postprocessing...done.
Duration: 0s.
Saving to image: 'data/test1.average-link.png'...
        cluster #0 data count: 21
        cluster #1 data count: 19
done.

A felhasznált konfigurációs file: ../data/test1.average-link.cfg
A bemenő tesztkép: ../data/test1.in.png
Az eredményként adott kép: ../data/test1.average-link.png

Ebből már látható a program működése: beolvas egy képfile-t, ebben megkeresi a nem fehér pontokat, és azokból lesznek a klaszterezendő pontok. Ezekből létrehozza az előre megadott számú klasztert, és az azonos klaszterbe eső pontokat azonos színnel, a különböző klaszterbe eső pontokat különböző színnel kiszínezi, és elmenti a megadott képfile-ba. Lehetőség van a pontok véletlenszerű választására is (nem minden pont kerül kiválasztásra), ekkor a piros színű pontok kétszer akkora valószínűséggel választódnak ki, mint a feketék. További lehetőség, hogy zajt is lehet keverni a képhez.

A konfigurációs file

A konfigurációs file felépítése tömören (a szögletes zárójel opcionális paramétert jelöl):

random_seed = int

input_type = random/image_direct/image_random
random esetén:
    point_num = int
image_direct esetén:
    input_file = filename
image_random esetén:
    input_file = filename
    point_num = int
    [noise = float]

[data_file = filename
    [data_size = int]]

algorithm_type = single-link/complete-link/average-link/CURE/ward
CURE esetén:
    param_c = int
    param_alpha = float

final_cluster_num = int

output_file = filename
[output_size = int]

Háromféle inputból választhatunk (input_type):

random
Véletlenszerűen generálunk megadott számú pontot. Ekkor meg kell adni, hogy hány darab pontot generáljunk.
image_direct
Egy képfile-t beolvasunk, és a nem fehér pontjai lesznek a klaszterezendő pontok. Egyetlen paraméter a képfile neve.
image_random
Egy képfile-t beolvasunk, és a nem fehér pontjaiból véletlenszerűen választunk. További paraméterek a pontok száma, és hogy mennyi zajt keverjen az inputhoz ( – a pontok ekkora hányada véletlen, egyenletes eloszlású lesz a teljes tartományban).

random és image_random esetén tudni szeretnénk, hogy pontosan milyen mintahalmazzal dolgozik a program. Erre való a data szekció: kiirathatjuk a felhasznált adathalmazt egy direct_image-nek megfelelő képként – a minták fekete pontok a fehér háttéren. data_file és data_size a képfile nevét és méretét adja meg.

algorithm_type
Itt választhatjuk ki, hogy a négyféle klaszterező eljárás közül melyiket szeretnénk használni. CURE algoritmus esetén további két paramétert kell megadnunk:
param_c
Az egyes klasztereket legfeljebb ennyi reprezentáns ponttal ábrázolunk a klaszterek összevonásakor.
param_alpha
Minden klaszterösszevonás után zsugorítjuk a reprezentáns pontokat a klaszterközéppont felé. Alfa a zsugorítás mértéke, a pont középponttól mért távolsága ennyiszeresére változik. Szélső értékei: 1 esetén a pontok helyzete nem változik, 0 esetén az összes pont a középpontba esik össze.
final_cluster_num
Itt állíthatjuk be, hogy hány klaszterbe szeretnénk sorolni a pontokat. (Addig vonja össze a klasztereket a hierarchikus algoritmus, amíg számuk el nem éri a beállított értéket.)

Az output megadása az output_file és output_size paraméterekkel lehetséges, ezek a kimeneti képfile nevét és méretét adják meg.

Makefile

A Makefile használata:

make all
Lefordul a program, és lefutnak a tesztek. Mivel a tesztek sokáig futhatnak, ez az opció nem ajánlott.
make test
csak a tesztek futnak le
make testX
csak az X. teszt fut le, pl. ,,make test4''
make clean
töröl mindent, amit a ,,make all'' állított elő
make Main.class
lefordítja a programot.

További, kevésbé érdekes opciók a Makefile-ban találhatók.