Tik-76.115 Toiminnallinen määrittely

PicSearch -- Interactive Picture Searcher

http://
Viimeksi päivitetty .

Päivitetty 24.11.96 : ikkunoiden kuvat

Sisällysluettelo

Yhteenveto

1. Johdanto
2. Käsitteitä
3. Liittymät ja työkalut
4. Käyttöliittymä
5. Toiminnot
- 5.1 Info-ruudun toiminta
- 5.2 Esimerkkikuvien käsittely
- 5.3 Hakutoiminnot
- 5.4 Tietokannan käsittely
- 5.5 Muut toiminnot
6. Tiedot ja tietokanta
7. Muut ominaisuudet


Yhteenveto

PicSearch on sovellus, jolla voidaan hakea kuvia niiden sisällön perusteella. Kuvien etsiminen tapahtuu valitsemalla hakualgoritmi ja antamalla ohjelmalle esimerkkikuva (piirtämällä / tiedostosta lukemalla) joka pyrkii esittämään haettua kuvaa. Esimerkkikuvasta lasketaan signature käyttäjän valitsemalla algoritmilla ja tietokannasta etsitään kuvat, jotka vastaavat mahdollisimman hyvin tätä signaturea. Signature tarkoittaa kuvasta laskettua kompaktia esitystä, johon algoritmi pyrkii tiivistämään kuvan olennaiset ominaisuudet. Järjestelmän tuntemat kuvat ovat talletettuna tietokantaan ja niistä on laskettu valmiiksi signaturet kaikilla järjestelmän tuntemilla algoritmeilla.

Ohjelman käyttö tapahtuu graafisen käyttöliittymän kautta. Pääikkunassa on tila esimerkkikuvalle sekä pienet ruudut haun tuloskuville. Esimerkkikuvia voi olla auki useita, mutta haussa käytetään ainoastaan yhtä. Esimerkkikuvaa voi muokata erillisessä piirtoikkunassa, jossa kuvaa voi maalata erilaisilla piirtotyökaluilla sekä prosessoida kuvankäsittelyalgoritmeilla.

Tietokantahaun voi käynnistää joko pääikkunasta tai suoraan piirtoikkunasta yhdellä nappulan painalluksella. Tietokantahaku pyörii rinnakkaissäikeenä ja valmistuttuaan tuo tuloskuvat pääikkunaan näkyviin käyttäjän selattavaksi. Pitkän haun suorituksen voi tarvittaessa keskeyttää.

Kuvia voi viedä tietokantaan yksittäin tuomalla ne ensin esimerkkikuvapaikkaan ja kopiomalla tästä tietokantaan yhdellä nappulan painalluksella. Kuvien poisto tietokannasta ja kopiointi esimerkkikuvaksi käy samaan tapaan. Lisäksi on mahdollisuus ajaa kuvia eräajona tietokantaan.

Järjestelmään voi helposti ohjelmoida uusia algoritmeja. Uusien algortimien mahdollisesti tarvitsemat parametrit syötetään niitä varten määriteltävien dialogi-ikkunoiden kautta. Oman ryhmänsä muodostavat segmentointialgoritmit, joita voidaan käyttää jakamaan kuvat osiin (segmentteihin).

Järjestelmä toteutetaan käyttäen Tcl/Tk:ta sekä C++:aa ja se voidaan näin ollen siirtää ympäristöihin, joissa nämä työkalut ovat saatavilla. (Toimitus: LINUX/UNIX).


1. Johdanto

PicSearch on kuvan sisällön perusteella tehtävien hakujen tutkimiseen tarkoitettu ohjelma. Asiakkaan tavoitteena on saada toimiva kehikko, johon uusien hakualgoritmien lisäys on helppoa ja jolla näiden algoritmien toimivuutta voidaan testata. Ohjelmistoa on tarkoitus käyttää kuvankäsittelyalan tutkimustyössä yliopistolla.

Vaikka järjestelmä on tarkoitettu lähinnä tutkimukseen, on PicSearch:n käyttöliittymä soveltuva myös "loppukäyttäjälle". Projektin tuloksena syntyy siis ohjelmiston ydin ja liittymät tulevaa kehitystä varten.

PicSearch:in keskeinen ominaisuus on vuorovaikutteisuus: käyttäjä tarkentaa hakua sen sijaan että käyttäisi hakuavaimena aina jotain valmista kuvaa ja sopivia parametreja.

Tässä dokumentissa on kuvattu järjestelmän toiminnallisuus. Käsitteitä-luvussa esitellään tärkeimmät termit ja Liittymät ja työkalut -luvussa kuvataan lyhyesti järjestelmän liittymät ympärisöön ja käytetyt ohjelmointivälineet. Käyttöliittymä-luvussa kuvataan järjestelmän käyttöliittymä sanallisesti (ja luonnoksia ikkunoista). Toiminnot-luvussa kuvataan yksityiskohtaisesti järjestelmän tarjoamat toiminnot. Tiedot ja tietokanta -luvussa esitetään järjestelmän tietokaavio (OMT) ja tietokantaan talletettavat tiedot. Muut ominaisuudet -luvussa on kuvattu lyhyesti ei-toiminnallisten ominaisuuksien toteutuminen.


2. Käsitteitä


3. Liittymät ja työkalut

Liittymät ympäristöön

Järjestelmä keskeinen osa on toimiva käyttöliittymä. Tämä toteutetaan helposti laajennettavaksi ja siirrettäväksi käyttämällä Tcl/Tk:ta. Kaikki jatkuvassa käytössä tarvittavat toiminnot on sijoitettu ohjelman pääikkunaan. Kuvien muokkaus tehdää erillisissä piirtoikkunoissa. Parametrit ja muut harvemmassa käytössä olevat toiminnot hoidetaan dialogi-ikkunoiden kautta.

Järjestelmään ohjelmoidaan yksinkertainen "kuvatietokanta". Tähän tietokantaan liitytään ohjelmallisesti niin, että se voidaan tarvittaessa korvata jollakin kehittyneellä tietokannalla.

Käyttöjärjestelmäriippuvainen koodi (tiedostojen käsittely yms.) sijoitetaan järjestelmän yleisiin kirjastoihin.

Työkalut

Käyttöliittymä toteutetaan Tcl/Tk:lla (versiot 7.5 ja 4.1). Ohjelmointikielenä käytetään C++:aa. Kääntäjänä käytetään Linux/Unix:ssa gcc:tä (Win95:ssä MSVisual C++ v2.0:aa). Projektia varten on TKK:n Laskentakeskuksen Alpha-koneista varattu levytilaa järjestelmän testausta varten.

4. Käyttöliittymä

Käsitteitä: HUOM. Tässä dokumentissa esiintyvät ikkunoiden kuvat eivät ole lopullisia eivätkä välttämättä vastaa täysin tekstissä esitettyä kuvausta. Pääikkunasta ja tarvittaessa piirtoikkunasta ja dialogeista tehdään kolme versiota eri näytön resoluutioille: 800*600, 1024*768, 1280*1024.

Pääikkuna

Pääikkunalla on omana ryhmänään: Pääikkunassa on myös joukko tietokantakuvapaikkoja, joissa näytetään tietokannasta haettujen kuvien miniatyyriversiot. Jokaisen tietokantakuvapaikan yllä on pieni read-only-kenttä, jossa näytetään (tietokantahaun yhteydessä) osuman "hyvyys" prosentteina. Tietokantakuvapaikkojen vieressä on scrollbar, josta voi haun päätyttyä selata tuloskuvia. Kuvapaikkojen vieressä on myös palkkimainen indikaattori, josta näkyy haun eteneminen skaalalla 0 - 100 %.

Pääikkunassa on myös info-ruutu johon ohjelma tulostaa erilaisia ilmoituksia (esim. "Query started").

Pääikkunalla on lisäksi:

Pääikkunan valikkoon (=menuun) on sijoitettu harvemmin tarvittavat toiminnot: Pääikkunan luonnos (päivitetty 24.11.96):

MainWindow

Piirtoikkuna

Jokaiselle esimerkkikuvalle voi avata (tasan yhden) oman piirtoikkunan, jonka kanvaasille ilmestyy kopio esimerkkikuvasta. Tällä kanvaasilla olevaa kuvaa voi muokata ja muutokset päivittää takaisin esimerkkikuvaan.

Piirtoikkunan reunassa on ryhmä ikoneita, joista voi valita siveltimen muodon ja koon. Valittavissa on joukko erikokoisia pyöreitä ja neliskanttisia siveltimiä. Valittu ikoni näkyy alaspainettuna.

Kanvaasin vieressä on kolme scrollbaria RGB-arvoille, joita liikuttamalla saa valittua haluamansa värin. Scrollbarien vieressä on väripaletti, siis joukko valmiita värejä, joista saa valittua aktiivisen värin hiirtä painamalla. RGB-scrollbarien liikuttaminen vaikuttaa tähän aktiiviseen väriin.

Siveltimen koon valinnan tavoin piirtoikkunan reunassa on ryhmä ikoneita piirtotavan valintaa varten. Valittavissa on piirto vapaalla kädellä, viivanpiirto sekä ympyrän ja suorakulmion piirto ääriviivoina tai täytettynä. Vapaalla kädellä piirto tapahtuu yksinkertaisesti painamalla hiiren nappi pohjaan kanvaasilla ja liikuttamalla hiirtä nappi edelleen alaspainettuna. Muissa tapauksissa piirto tehdään napsauttamalla hiirtä halutun piirtokuvion ääripäissä (esim. viivan alku- ja loppupisteet).

Piirtoikkunassa on myös seuraavat nappulat:

Valikossa on lista kuvankäsittelyalgoritmeista, jolla voi avata algoritmikohtaisen "Image processing" -dialogin kuvankäsittelyalgoritmin käyttöä varten. Piirtoikkunan luonnos (päivitetty 24.11.96):

EditWindow

Dialogit

"Search algorithm parameters" -dialogi

Hakualgoritmikohtainen dialogi algoritmin mahdollisesti tarvitsemien parametrien syöttöön.
Esimerkki algoritmin parametridialogista (päivitetty 24.11.96):

SearchParamsDialog

"Open file" -dialogi

Yksinkertainen tiedoston avausdialogi. Sisältää listan sovelluksen tuntemien kuvaformaattien nimistä sekä listan tiedostoista, joiden pääte vastaa jotain valitulle kuvaformaatille määritellyistä päätteistä (esim. JPEG:lle, *.JPEG ja *.JPG).
Luonnos tiedoston avausdialogista (päivitetty 24.11.96):

FileOpenDialog

"Save to file" -dialogi

Kuten "Open file" -dialogi. Luonnos tiedoston avausdialogista (päivitetty 24.11.96):

FileSaveDialog

"Image attributes" -dialogi

Dialogi sisältää ainakin: Luonnos dialogista (päivitetty 24.11.96):

ImageParamsDialog

"Signatures" -dialogi

Sisältää listan hakualgoritmeista sekä info-ruudun, jossa näytetään listalta valitun algoritmin laskema signature merkkijonoesityksenä (jos signature on laskettu). Luonnos dialogista (päivitetty 24.11.96):

SignaturesDialog

"Segmentation" -dialogi

Sisältää seuravaa: Luonnos dialogista (päivitetty 24.11.96):

SegmentDialog

"Segmentation algorithm parameters" -dialogi

Segmentointialgoritmikohtainen dialogi algoritmin mahdollisesti tarvitsemien parametrien syöttöön. Luonnos dialogista (päivitetty 24.11.96):

SegmentParamDialog

"Image processing" -dialogi

Sisältää seuravaa: Luonnos dialogista (päivitetty 24.11.96):

ImageProcessDialog

"Image processing algorithm parameters" -dialogi

Kuvankäsittelyalgoritmikohtainen dialogi algoritmin mahdollisesti tarvitsemien parametrien syöttöön. (päivitetty 24.11.96): Parametrit syötetään suoraan "Image processing" -dialogissa.

"Mass insert..." -dialogi

Kuten "Open file" -dialogi, mutta käytetään avaamaan listatiedosto (*.LST), jossa on määritelty tietokantaan luettavat tiedostot. Luonnos dialogista (päivitetty 24.11.96):

BatchInsertDialog

"Options" -dialogi

Sisältää mahdollisuuden muuttaa ohjelman yleisiä parametreja. Ks. 5.5.1 Yleisten parametrien asettaminen. Luonnos dialogista (päivitetty 24.11.96):

OptionsDialog


5. Toiminnot

5.1 Info-ruudun toiminta

Pääikkunassa on info-ruutu, johon tulostuu erilaisia viestejä ja virheilmoituksia ohjelman toiminnasta. Info-ruudun tekstiä voi selata sen laidassa olevalla scrollbarilla. Uuden viestin ilmaantuminen aiheuttaa kuitenkin ruudun kelautumisen loppuun siten että uusi viesti näkyy. Seuraavissa toimintokuvauksissa Info-messages otsikoiden alla olevat tekstit tulostetaan info-ruudulle.

5.2 Esimerkkikuvien käsittely

5.2.1 Uuden esimerkkikuvan luominen

Tyhjä esimerkkikuva tarkoittaa esimerkkikuvaa, jolla ei ole nimeä, tietokanta-id:tä eikä "kuvaa" (siis kuvapisteitä pikselitietona). Sovelluksen käynnistyessä on aina yksi tyhjä esimerkkikuva luotuna.

Uusi tyhjä esimerkkikuva luodaan painamalla pääikkunan "New example" -nappulaa. Tällöin esimerkkikuvalistalle ilmestyy uusi rivi ("<Example n>"), joka tulee myös valituksi ja esimerkkikuvapaikka tyhjentyy. Uuden tyhjän esimerkkikuvan oletusarvoinen leveys ja korkeus määritellään "Options" -dialogin kautta.

Esimerkkikuvia voi olla auki vain tietty maksimimäärä. Luovutettavassa versiossa maksimi on kahdeksan kappaletta.

Info-messages:
"Created new example image '<Example 3>' of size 200 * 200."
"Error: Maximum of 8 example images already present."

5.2.2 Aktiivisen esimerkkikuvan valinta

Aktiivinen esimerkkikuva valitaan pääikkunassa olevalta esimerkkikuvalistalta hiiren vasenta nappia näpäyttämällä. Tällöin ilmestyy esimerkkikuvapaikkaan kyseinen esimerkkikuva. Esimerkkikuvalistalla näkyy kustakin esimerkkikuvasta sille annettu nimi (ks. 5.2.7 Esimerkkikuvan parametrien katselu ja asetus). Jos nimeä ei ole, näytetään kuvan tietokanta-id muodossa "<ImageID: nnnnn>". Jos tietokanta-id:täkään ei ole, näytetään teksti muotoa "<Example n>".

Info-messages:
"Example image 'Full moon' is now active."

5.2.3 Esimerkkikuvan sulkeminen

Aktiivinen esimerkkikuva suljetaan painamalla pääikkunassa olevaa "Close example" -nappulaa. Ohjelma ei tee talletusvarmistuksia. Esimerkkikuvan tunniste poistuu esimerkkikuvalistalta ja aktiiviseksi esimerkkikuvaksi tulee listalla edellisenä ollut. Jos esimerkkikuvia on vain yksi, ei kuvaa suljeta vaan se tyhjennetään (ks. 5.2.4 Esimerkkikuvan tyhjennys).

Info-messages:
"Example image 'Full moon' closed, example image <ImageID: 597> is now active."

5.2.4 Esimerkkikuvan tyhjennys

Aktiivinen esimerkkikuva muutetaan tyhjäksi painamalla pääikkunassa olevaa "Clear" -nappulaa. Ohjelma ei tee talletusvarmistuksia. Esimerkkikuvan tietokanta-id, nimi ja muut parametrit tyhjentyvät, koko muuttuu oletusarvojen mukaiseksi (ks. 5.5.1 Yleisten parametrien asettaminen) ja kuvapistetiedot katoavat. Jos esimerkkikuvalle on aukaistu piirtoikkuna, niin tämä sulkeutuu. Esimerkkikuvan tunniste esimerkkikuvalistalla vaihtuu muotoon "<Example n>".

Info-messages:
"Active example image cleared."

5.2.5 Esimerkkikuvan luku levyltä

Pääikkunassa olevaa "Open..." -nappulaa painamalla avataan "Open file" -dialogi. Tässä dialogissa käyttäjä antaa esimerkkikuvaksi luettavan tiedoston nimen. Ohjelma lukee kuvan tiedostosta ja nollaa parametrit sekä lasketut signaturet ja segmentit. Kuvan korkeus ja leveys asettuvat luetun kuvan koon mukaan. Ohjelma pyrkii ensisijaisesti käyttämään tiedoston nimen päätteen mukaista kuvaformaattia lukemiseen. Jos tiedoston alun data ei vastaa kuvaformaattia, yrittää ohjelma lukea tiedoston yksitellen kaikilla tuntemillaan kuvaformaatteilla (ks. 5.5.3 Kuvaformaatit). Jos luku ei onnistu (tuntematon formaatti / muu syy), pysyy aktiivinen esimerkkikuva muuttumattomana.

Jos esimerkkikuvalle oli aukaistu piirtoikkuna, päivittyy sinne uusi kuva onnistuneen kuvan lukemisen yhteydessä. Myös esimerkkikuvalistalla oleva tunniste päivittyy.

Info-messages:
"Opening file '~/moonlight.ppm'..."
"PPM image file '~/moonlight.ppm' read OK."
"Can not read '~/moonlight.ppm' : unknown image format."
"Can not read PPM file '~/moonlight.ppm' : unexpected end-of-file."
"Can not read '~/moonlight.ppm' : file does not exist."

5.2.6 Esimerkkikuvan kirjoitus levylle

Pääikkunassa olevalla "Save..." -nappulaa painamalla avataan "Save to file" -dialogi. Tässä dialogissa käyttäjä antaa sen tiedoston nimen, johon esimerkkikuva tallennetaan. Kuva talletetaan dialogissa valitussa kuvaformaatissa (oletusarvoisesti PPM). Jos levyllä on jo saman niminen tiedosto, ohjelma kysyy dialogissa "File already exists, Overwrite it ? Yes/No".

Info-messages:
"Saving image to file '~/moonlight.ppm' in PPM format."
"Saved to file '~/moonlight.ppm' OK."
"Can not save to file '~/moonlight.ppm' : access denied."

5.2.7 Esimerkkikuvan parametrien katselu ja asetus

Perustiedot

Pääikkunan "Image attributes..." -nappulasta, voidaan avata esimerkkikuvalle "Image attributes" -dialogi, jossa voi muuttaa kuvaan liittyviä parametreja (nimi, par1, par2, korkeus ja leveys). Lisäksi dialogissa näytetään info-tietona esimerkkikuvan mahdollinen tietokanta-id ja tiedoston nimi. Nimen muuttuminen päivittyy myös esimerkkilistalle. Kuvan korkeudella ja leveydellä on maksimiarvot, joita ei voi ylittää.

Jos käyttäjä pienentää kuvan korkeutta tai leveyttä, ohjelma kysyy varmistusdialogissa: "Size modification results in loss of data. Resize anyway ? Yes/No/Cancel". Yes = hyväksyy kaikki annetut parametrit; No = hyväksyy muut parametrit kuin kuvan korkeus ja leveys; Cancel = palaa "Image attributes" -dialogiin. Esimerkkikuvan koon muuttaminen poistaa kuvaan liittyvät signaturet ja segmentoinnit. Jos esimerkkikuvalle oli piirtoikkuna avattuna, muuttuu piirtoikkunassa olevan kuvan koko esimerkkikuvan kokoa vastaavaksi.

Info-messages:
"Image size changed to 300 * 300"

Signaturet

"Image attributes" -dialogista voi myös avata "Signatures" -dialogin, joka sisältää listan hakualgoritmeista sekä info-ruudun, jossa näytetään listalta valitun algoritmin laskema signature (jos tällainen on laskettu). Signaturet esitetään merkkijonomuodossa (algoritmin ohjelmoija ohjelmoi myös funktion, joka tuottaa signaturesta tällaisen esityksen).

5.2.8 Esimerkkikuvan segmentointi

Pääikkunan "Segmentation..." -nappulasta voidaan avata esimerkkikuvalle "Segmentation" -dialogi. Tätä dialogia voidaan käyttää esimerkkikuvan segmentointiin. Dialogissa voidaan listalta valita käytettävä segmentointialgoritmi, jolle voidaan myös syöttää sen mahdollisesti tarvitsemat parametrit "Segmentation algorithm parameters" -dialogilla (algoritmin ohjelmoija määrittelee dialogin).

Dialogissa olevaa "Execute" -nappulaa painamalla listalta valittu segmentointialgoritmi segmentoi esimerkkikuvan. Listalla aktiivisena olevan algoritmin laskemia segmenttejä voidaan selata dialogissa olevassa info-ruudussa (algoritmin ohjelmoija ohjelmoi myös funktion joka tuottaa sopivan esityksen segmentistä).

Info-messages:
"Segmenting image..."
"Segmentation done : found 5 segments."

5.2.9 Esimerkkikuvan muokkaus

Piirtoikkunan avaaminen

Pääikkunan "Edit..." -nappulasta voidaan aktiiviselle esimerkkikuvalle avata piirtoikkuna, johon ilmestyy kopio esimerkkikuvasta. Jos esimerkkikuvalle on jo avoinna piirtoikkuna, aiheuttaa "Edit..." -nappulan painaminen tämän ikkunan aktivoitumisen. Kullekin esimerkkikuvalle on siis korkeintaan yksi piirtoikkuna.

Piirtäminen

Piirtotoiminnot on kuvattu Piirtoikkunan kuvauksen yhteydessä.

Esimerkkikuvan päivitys

Piirtoikkunassa oleva kuva kopioidaan esimerkkikuvansa päälle, kun käyttäjä painaa ikkunassa olevaa "Accept changes" -nappulaa. Jos esimerkkikuva ei ollut pääikkunassa aktiivisena, tulee se aktiiviseksi aivan kuin käyttäjä olisi sen aktivoinut (ks. 5.2.2 Aktiivisen esimerkkikuvan valinta). Jos käyttäjä painaa "Accept and Query" -nappulaa, aloitetaan lisäksi haku aktiivisena olevalla hakualgoritmilla. Kummassakaan tapauksessa piirtoikkuna ei sulkeudu.

Kuvan käsittely algoritmilla

Piirtoikkunassa olevaa "Image processing..." -nappulaa painamalla päästään "Image processing" -dialogiin. Tästä dialogista voidaan valita kuvankäsittelyalgoritmi ja asettaa algoritmin tarvitsemat parametrit algoritmikohtaista dialogia käyttämällä (jälleen algoritmin ohjemoija ohjelmoi ko. dialogin). "Execute"-nappulan painaminen aiheuttaa piirtoikkunassa olevan kuvan muokkauksen valittuna olevalla kuvankäsittelyalgoritmilla ja "Image processing" -dialogin sulkeutumisen.

Piirtoikkunan sulkeminen

"Close" -nappulan painaminen aiheuttaa piirtoikkunan sulkeutumisen. Jos kuvaa on muokattu, kysyy ohjelma: "Image has changed. Accept changes? Yes/No/Cancel". Yes = muutokset päivittyvät esimerkkikuvaan, No = muutokset eivät päivity, Cancel = piirtoikkunaa ei suljetakaan. Tämän varmistuksen voi poistaa "Options" -dialogin kautta.

5.3 Hakutoiminnot

5.3.1 Hakualgoritmin valinta ja parametrien asetus

Aktiivinen hakualgoritmi valitaan hiirellä pääikkunalla olevalta hakualgoritmilistalta.

Pääikkunassa olevalla "Parameters..." -nappulalla saadaan esiin aktiivisen hakualgoritmin "Search algorithm parameters" -dialogi. Tällä dialogilla asetetaan hakualgoritmin mahdollisesti tarvitsemat parametrit (algoritmin ohjelmoija ohjelmoi myös tämän dialogin). HUOM. tässä tarkoitetut hakualgoritmin parametrit välittyvät vertailua suorittavalle metodille, eivät signaturen laskualgoritmille (tämän parametrit ovat kovakoodattuja, ks. 5.5.5 Uuden algoritmin lisäys).

Info-messages:
"Active search algorithm is now 'Wavelet'"

5.3.2 Hakutyypin valinta

Pääikkunan valikosta löytyy valinta "Search type", jonka alta löytyvistä vaihtoehdoista voidaan valita käytettävä hakutyyppi. Kukin hakualgoritmi kuuluu yhden tai useamman hakutyypin alle ja hakualgoritmilistalla näytetään ainoastaan aktiivisen hakutyypin alle kuuluvat hakualgoritmit.

Info-messages:
"Search type changed to 'Sketch', 5 algorithms available"

5.3.3 Haun käynnistäminen

Pääikkunassa olevalla "Query"-nappulalla käynnistetään tietokantahaku. Haku voidaan käynnistää myös suoraan piirtoikkunasta "Accept and Query"-nappulalla. Haussa käytetään aktiivisena olevaa esimerkkikuvaa ja aktiivisena olevaa hakualgoritmia. Jos hakualgoritmi käyttää esimerkkikuvaa, lasketaan tästä signature. Tämän jälkeen käynnistyy hakusäie, joka etsii tietokannasta (max.)200 parhaiten hakuehtoihin sopivaa kuvaa. Haun käynnissä olo ei vaikuta muihin toimintoihin. HUOM. Aktiivisen esimerkkikuvan muuttaminen / poistaminen tai aktiivisen hakualgoritmin vaihtaminen eivät vaikuta käynnissä olevaan hakuun.

Uuden haun käynnistyessä mahdollisesti käynnissä ollut haku keskeytyy. "Options" -dialogilla voidaan kontrolloida sitä, näytetäänkö tällöin keskeytetyn haun sen hetkiset (vajavaiset) tulokset.

Info-messages:
"Computing 'Wavelet' signature."
"Query started with algorithm 'Wavelet'."

5.3.4 Haun etenemisen esittäminen

Pääikkunalla olevalla indikaattoripalkilla esitetään haun eteneminen skaalalla 0-100%. Haun käynnistyessä palkki nollaantuu ja loppuessa se on saavuttanut 100 prosentin kohdan. Tämän lisäksi käytetään viestejä info-ruudussa.

Info-messages:
"Query status: 50 % of images scanned in 13 seconds."
"Query finished. Total time: 27 seconds."

5.3.5 Haun keskeyttäminen

Käyttäjä voi keskeyttää haun pääikkunassa olevasta "Stop query"-nappulasta. "Options" -dialogilla voidaan kontrolloida sitä, näytetäänkö tällöin haun sen hetkiset (vajavaiset) tulokset.

Info-messages:
"Query stopped. 40% of images scanned in 10 seconds."

5.3.6 Keskeytetyn haun jatkaminen

Jos käyttäjä on keskeyttänyt haun "Stop query"-nappulalla, muuttuu ko. nappulan teksti muotoon "Continue query" (haun alkaessa/jatkuessa taas muotoon "Stop query"). Käyttäjä voi jatkaa keskeytettyä hakua "Continue query"-nappulalla, jolloin keskeytynyt haku jatkuu täsmälleen siitä mihin se oli jäänyt. HUOM. Jos käyttäjä poistaa kuvia tietokannasta kesken haun, saattaa haun valmistuttua osa tuloskuvista olla tyhjiä.

Info-messages:
"Resuming query, 60% of images left to be scanned."

5.3.7 Haun tuloksien selaaminen

Haun valmistuttua (mahdollisesti myös keskeytymisen yhteydessä: ks. 5.5.1 Yleisten parametrien asettaminen) näytetään löydetyt tuloskuvat parhausjärjestyksessä tietokantakuvapaikoissa. Kunkin kuvan vieressä on pieni read-only-kenttä, jossa näytetään kuvan vastaavuus hakuparametreihin (0-100%, tulkinta hakualgoritmikohtaista). Koska tietokantakuvapaikkoja on pääikkunassa vain pienehkö määrä, voidaan tuloskuvia selata näissä kuvapaikoissa scrollbarin avulla.

5.4 Tietokannan käsittely

5.4.1 Aktiivisen tietokantakuvapaikan valinta

Aktiivinen tietokantakuvapaikka valitaan yksinkertaisesti painamalla hiiren vasenta nappia halutun kuvapaikan kohdalla. Tällöin kuvan kehys muuttuu "valituksi". Aktiivisen tietokantakuvan valinnan ideana on se, että valittu kuva voidaan kopioida esimerkkikuvaksi painamalla "Copy" -nappulaa tai poistaa tietokannasta painamalla "Delete" -nappulaa.

5.4.2 Kuvan vienti tietokantaan

Aktiivinen esimerkkikuva voidaan tallettaa tietokantaan painamalla pääikkunassa olevaa "Insert" -nappulaa.

Jos esimerkkikuvalla ei ole tietokanta-id:tä, eli sitä ei ole koskaan talletettu tietokantaan, annetaan sille uusi yksikäsitteinen tietokanta-id. Aina ennen kuvan tallentamista kuvasta lasketaan kaikkia hakualgoritmejä vastaavat signaturet, jonka jälkeen kuva parametreineen (nimi, koko jne.) ja signaturet talletetaan tietokantaan. Signature-laskennan aikana esimerkkikuvaa ei voi muokata / poistaa. Talletettu kuva ilmestyy johonkin tietokantakuvapaikoista osoittamaan että kuva todella tallentui tietokantaan.

Jos kuvalla oli jo tietokanta-id, eli kuva on jo tietokannassa (tai ainakin sen jokin versio), ilmestyy näytölle kysymysdialogi: "Image already in database. Update / Save as new / Cancel". Update = esimerkkikuva talletetaan entisellä tietokanta-id:llään (siis edellisen version päälle). Save as new = esimerkkikuva saa uuden tietokanta-id:n. Cancel = kuvaa ei talleteta lainkaan.

Info-messages:
"Example image 'MoonLight' saved to database with new id 1251."
"Image 'MoonLight' (id 1251) updated to database."

5.4.3 Kuvan kopiointi tietokannasta esimerkkikuvaksi

Aktiivisen tietokantakuvapaikan kuva voidaan kopioida aktiiviseen esimerkkikuvaan painamalla pääikkunan "Copy" -nappulaa. Jos aktiiviselle esimerkkikuvalle oli aukaistu piirtoikkuna, päivittyy uusi kuva myös sinne. Esimerkkikuvalle tulee myös tietokannasta luetun kuvan tietokanta-id, nimi ja muut parametrit (myös signaturet). Esimerkkikuvalistalla oleva tunniste päivittyy.

5.4.4 Kuvan poistaminen tietokannasta

Aktiivisen tietokantakuvapaikan kuva voidaan poistaa tietokannasta painamalla pääikkunan "Delete" -nappulaa. Ohjelma varmistaa poiston dialogilla : "Delete image 'MoonLight' from database? Yes/No". Poistettu kuva katoaa myös tietokantakuvapaikastaan. Poiston yhteydessä nollataan niiden esimerkkikuvien tietokanta-id:t, joilla se oli sama kuin juuri tietokannasta poistetulla kuvalla.

Info-messages:
"Image 'MoonLight' (id 1251) removed from database."

5.4.5 Kuvien massasyöttö tietokantaan

Tietokantaan voidaan lisätä kuvia eräajona. "File" -valikosta "Batch insert..." avaa "Open file" -dialogin, jossa oletuksena näytetään kaikki tämänhetkisen työhakemiston *.LST päätteiset tiedostot.

Batch-tiedoston formaatti on yksinkertainen: normaalissa tekstitiedostossa on lista linkkejä, jotka osoittavat lisättäviin kuvatiedostoihin. Kukin linkki on omalla rivillään rivin alussa. Linkki on kuvatiedoston nimi tiedostojärjestelmässä. Apuna voidaan käyttää "maskeja", jolloin yhdellä linkillä voidaan viitata useampaan kuin yhteen tiedostoon (esim "foo*.jpg", jolloin hakemiston kaikki "foo" alkuiset JPEG kuvat lisätään kantaan). Jos tiedoston nimi on annettu yksiselitteisesti (siis ei maskin avulla), voi sen perään liittää arvot kuvan nimelle sekä par1:lle ja par2:lle. Erottimena toimii #.
Esim. ~/images/moonlight.ppm # MoonLight # 10.123

Käyttäjä valitsee haluamansa batch-tiedoston ja painaa "OK" -nappulaa, tai peruuttaa koko operaation "Cancel" -nappulalla. Edellisessä tapauksessa avataan batch-tiedosto ja jokaisen linkin kohdalla yritetään löytää linkin osoittama(t) kuvatiedosto(t). Jos tiedostoa ei löydy, tulostetaan virheilmoitus info-ruutuun. Massasyöttö pyörii omana säikeenään eikä vaikuta ohjelman muuhun toimintaan.

Massasyöttöjä voi olla käynnissä korkeintaan yksi. Jos käyttäjä valitsee "Batch insert..." massasyötön ollessa jo käynnissä, kysyy ohjelma dialogissa: "Batch insertion already running. Stop it? Yes/No". Yes = massasyöttö keskeytetään, No = käynnissä oleva massasyöttö jatkuu eikä uutta käynnistetä.

Info-messages:
"Batch insertion started using file '~/dbimages.lst'"
"Batch insertion: File '~/images/moonlight.ppm' not found!"
"Batch insertion: 103 image(s) inserted successfully to database. 3 image file(s) not found."

5.5 Muut toiminnot

5.5.1 Yleisten parametrien asettaminen

Ohjelman toimintaan vaikuttavat yleiset parametrit asetetaan pääikkunan valikosta avattavalla "Options" -dialogilla. Dialogissa voidaan asettaa arvot ainakin seuraaville parametreille: Edellä kuvatut parametrit pidetään talletettuna tietokannassa.

5.5.2 Ohjelmasta poistuminen

Ohjelma suljetaan pääikkunan "File" -valikon "Quit"-valinnalla. Jos haku on käynnissä, se keskeytyy. Jos massasyöttö on käynnissä, ohjelma kysyy dialogissa: "Batch insertion running. Exit anyway? Yes/No". Jos tietokannan prosessointi (ks. 5.5.5 Uuden algoritmin lisäys) on käynnissä, ohjelma kysyy dialogissa: "Processing database. Exit anyway? Yes/No".

5.5.3 Kuvaformaatit

Ohjelma pystyy lukemaan kuvia tiedostoista eri kuvaformaateissa. Samoin tietokannassa olevat kuvat voivat olla missä tahansa ohjelman tuntemassa kuvaformaatissa. Tiedostosta luetun esimerkkikuvan tallentaminen tietokantaan (pääikkunassa "Insert" -nappulalla) tapahtuu samassa formaatissa kuin missä alkuperäinen tiedosto oli. Järjestelmään on mahdollista jälkeenpäin ohjelmoida tuki uusille kuvaformaateille. Toimitettu versio pystyy lukemaan ja kirjoittamaan kuvia formaateissa PPM, SunRaster ja JPEG.

5.5.4 Linkit alkuperäisiin tiedostoihin

Koska järjestelmän toimitettu versio käyttää vain itsetehtyä alkeellista kuvatietokantaa, ei tietokantaan talletettavia kuvia kannata välttämättä kopioida fyysisesti tähän tietokantaan. Sen sijaan voidaan tallettaa ainoastaan alkuperäisen tiedoston nimi (jos sellaista ei ole, talletetaan kuva aina fyysisesti). Tällaisen "linkki-talletuksen" käyttämisen voi valita "Options" -dialogin kautta. HUOM. Jos alkuperäinen kuva poistetaan, näkyy se tietokantahauissa tyhjänä kuvana. Jos kuvaa on muutettu muuta kuin tämän järjestelmän kautta, ovat kuvalle lasketut signaturet virheellisiä.

5.5.5 Uuden algoritmin lisäys

Kun järjestelmään on ohjelmoitu uusi hakualgoritmi, havaitsee järjestelmä käynnistyessään että tietokannan kuville ei ole laskettu signatureja tällä hakualgoritmilla ja kysyy: "New algorithm(s) added. Process the database? Yes/No". Yes käynnistää säikeen, joka käy kaikki tietokannan kuvat läpi ja laskee näille puuttuvat signaturet. Tänä aikana ei uusia algorimeja voi käyttää, eikä käynnistää kuvien massasyöttöä. Uusia hakualgoritmeja voi käyttää vasta kun kaikille tietokannan kuville on laskettu signaturet ko. algoritmilla.

6. Tietokaavio ja tietokanta

Tietokaavio

Seuraavassa kaaviossa on esitetty ohjelman tärkeimmät tiedot OMT-kaaviona.

OMT-kaavio

Picture on looginen kuva, joka sisältää kuvadatan RawPicture-oliona (joka voi olla esitetty RGB-kuvana tai jossain muussa jälkeenpäin ohjelmoitavassa muodossa). Kuvaan liittyy myös yksi kuvaformaatti (ImageFormat), jossa kuva on tallennettu tiedostoon / tietokantaan. Picture voi sisältää myös joukon erilaisia signatureja (Signature:sta johdetut luokat). Lisäksi Picture voi sisältää joukon erilaisia segmentaatiota (kukin laskettu eri segmentointialgoritmilla), joista kukin sisältää joukon segmenttejä.

Haku (Query) koostuu yhdestä (esimerkkikuvasta lasketusta) signaturesta ja siihen liittyy yksi hakualgoritmi. Tulevassa kehityksessä haku voidaan laajentaa käsittämään useita signatureja ja esimerkkikuvia. Haku tuottaa tulosjoukon (ResultSet), joka on kokoelma (loogisia) kuvia.

Tietokanta

Tietokantaan on tallennettuna kuvat ja näiden parametrit. Jokaisesta tietokantaan talletetusta kuvasta on myös talletettuna kaikilla hakualgoritmeilla lasketut signaturet. Lisäksi jokaiselle kuvalle voi olla tallettuna eri segmentointialgoritmeilla laskettuja segmentaatiota (= näiden laskemat segmentit). Tietokannassa on tieto järjestelmän sisältämistä haku- ja segmentointialgoritmeista (id + nimi).

Tietokantaan on myös talletettuna järjestelmän tarvitsemat yleiset parametrit.

7. Muut ominaisuudet

Laajennettavuus

Järjestelmään pystyy tuomaan uusia algoritmeja ohjelmoimalla näiden toiminnallisuuden sopivasta pääluokasta (SearchAlgorithm + Signature, SegmentationAlgorithm, ImageProcessingAlgorithm) johdettuun C++ -luokkaan. Lisäksi tarvitaan dialogi-ikkunan määrittely algoritmin tarvitsemien parametrien määrittelyyn. Lisätyn algoritmin voi liittää mihin tahansa hakutyyppiin.

Helppokäyttöisyys

Kaikkien jatkuvassa käytössä olevien toimintojen aktivoinnit ovat pääikkunan / piirtoikkunan nappuloissa. Hakualgoritmin ollessa valittuna, käy haun käynnistäminen yhdellä nappulan painalluksella.

Siirrettävyys

Järjestelmä käyttää käyttöliittymän määrittelyyn Tcl/Tk:ta ja on siirrettävissä järjestelmiin, joihin ko. paketti on saatavilla. Testataan varsinaisesti Linux:ssa, kokeilevasti myös "Unix:ssa" ja Win95:ssä.

Hakutoimintojen laajentamismahdollisuus

Muuttamalla esimerkkikuvalistan monivalintalistaksi ja lisäämällä toiminnallisuus usean algoritmin yhtäaikaiseen käyttämiseen, voi algoritmien ominaisuuksia yhdistellä tietokantahauissa.