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
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).
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.
- Kuvalla tarkoitetaan tässä dokumentissa oliota, joka
käsittää kuvadatan ja joukon parametreja.
Kuva voi olla myös tyhjä, jolloin kuvadataa ei ole.
- Kuvan parametreilla tarkoitetaan erilaisia kuvaan liittyviä
tietoja (esim. nimi, korkeus, leveys), ei kuitenkaan signatureja
tai segmenttejä.
- Tietokanta-id:llä tarkoitetaan yksiselitteistä tunnistenumeroa,
jolla tietokannassa olevat kuvat identifioidaan.
- Esimerkkikuva on kuva, jota käytetään vertailukuvana
tietokantahauissa ratkaisemaan haettavien kuvien paremmuusjärjestyksen.
- Signature on kuvasta laskettu kompakti esitys,
joka pyrkii tiiviisti kuvaamaan kuvan tai osakuvan sisältöä.
- "Hakualgoritmi"-sanaa käytetään tässä dokumentissa
tarkoittamaan sekä kuvasta signaturen laskevaa algoritmia että
ko. algoritmin laskemien signaturejen vertailumetodia, jolla
määritellään kuinka hyvin kaksi signaturea vastaa toisiaan.
- Kuvankäsittelyalgoritmi on algoritmi, joka muokkaa
kuvan sisältöä jollakin tavalla.
- Segmentointialgoritmi on algoritmi, joka laskee kuvasta
segmentit, ts. jakaa sen loogisiin osiin.
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.
Käsitteitä:
- Ikkunalla tarkoitetaan seuraavassa ikkunaa, joka ei estä
sovelluksen muiden ikkunoiden aktivointia.
- Dialogilla tarkoitetaan ikkunaa, joka on suljettava ennen kuin
sovelluksen muihin ikkunoihin voi antaa syötettä.
- Kuvapaikalla tarkoitetaan sellaista aluetta näytöllä, jossa
voi näyttää kuvan.
- Listalla tarkoitetaan listbox-tyyppistä ikkunapalikkaa, jossa
näkyvistä alkioista voi valita yhden (jos useampia niin kutsutaan
monivalintalistaksi).
- Nappula tarkoittaa yksinkertaista button-tyyppistä ikkunapalikkaa.
- Kenttä tarkoittaa entryfield-tyyppistä ikkunapalikkaa, johon
käyttäjä voi syöttää tekstiä (yhden rivin). Jos kenttään ei voi syöttää
tekstiä on se read-only-kenttä.
- Scrollbar
- Checkbox
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ääikkunalla on omana ryhmänään:
- Esimerkkikuvapaikka:
Kuvapaikka, jossa näytetään aktiivisena oleva esimerkkikuva.
- Esimerkkikuvalista:
Lista esimerkkikuvien nimistä. Käytetään aktiivisen esimerkkikuvan
valintaan.
- "New example" -nappula, josta avataan uusi tyhjä esimerkkikuva.
- "Close example" -nappula, josta suljetaan aktiivinen esimerkkikuva.
- Hakualgoritmilista:
Lista, josta valitaan haussa käytettävä algoritmi.
- "Parameters..." -nappula,
josta avataan "Search algorithm parameters" -dialogi.
- "Open..." -nappula,
josta avataan "Open file" -dialogi esimerkkikuvan levyltä lukua
varten.
- "Save..." -nappula,
josta avataan "Save to file" -dialogi esimerkkikuvan levylle
kirjoitusta varten.
- "Clear" -nappula, josta esimerkkikuva tyhjennetään.
- "Image attributes..." -nappula, josta avataan
"Image attributes" -dialogi.
- Segmentation..." -nappula, josta avataan
"Segmentation" -dialogi.
- "Edit..." -nappula, josta avataan/aktivoidaan
esimerkkikuvan piirtoikkuna (jossa siis voidaan muokata esimerkkikuvaa).
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:
- "Query" -nappula: Käynnistää tietokantahaun.
- "Stop/Continue query" -nappula: Tietokantahaun keskeytys/jatkaminen.
- "Insert" -nappula: Aktiivisen esimerkkikuvan talletus
tietokantaan.
- "Copy" -nappula: Aktiivisen tietokantakuvapaikan kuvan
kopiointi esimerkkikuvaksi.
- "Delete" -nappula: Aktiivisen tietokantakuvapaikan kuvan
poisto tietokannasta.
Pääikkunan valikkoon (=menuun) on sijoitettu harvemmin tarvittavat toiminnot:
- Sovelluksen sulkeminen
- Kuvien massasyöttö: "Batch insert" -dialogin avaus
- Sovelluksen yleisten parametrien asetus: "Options" -dialogin avaus
- Hakutyypin valinta: Vaikuttaa valittavissa olevien
hakualgoritmien joukkoon (siis hakualgoritmilistan sisältöön).
Pääikkunan luonnos (päivitetty 24.11.96):
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:
- "Clear" -nappula kanvaasin puhdistusta varten
- "Image processing..." -nappula, josta voi avata
"Image processing" -dialogin kuvankäsittelyalgoritmin käyttöä varten.
- "Accept changes" -nappula, josta päivitetään esimerkkikuva.
- "Accept and Query" -nappula, josta päivitetään esimerkkikuva
sekä aloitetaan haku valittuna olevalla hakualgoritmilla.
- "Close" -nappula piirtoikkunan sulkemista varten.
Valikossa on lista kuvankäsittelyalgoritmeista, jolla voi avata
algoritmikohtaisen "Image processing" -dialogin kuvankäsittelyalgoritmin
käyttöä varten.
Piirtoikkunan luonnos (päivitetty 24.11.96):
"Search algorithm parameters" -dialogi
Hakualgoritmikohtainen dialogi algoritmin mahdollisesti
tarvitsemien parametrien syöttöön.
Esimerkki algoritmin parametridialogista (päivitetty 24.11.96):
"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):
"Save to file" -dialogi
Kuten "Open file" -dialogi.
Luonnos tiedoston avausdialogista (päivitetty 24.11.96):
"Image attributes" -dialogi
Dialogi sisältää ainakin:
- Read-only-kentän, jossa esimerkkikuvan tietokanta-id (jos on).
- Read-only-kentän, jossa esimerkkikuvan tiedoston nimi (jos on).
- Nimi-kentän, jossa voi syöttää kuvalle nimen.
- Par1-kentän, vapaavalintaisen merkkijonon syöttöön.
- Par2-kentän, vapaavalintaisen merkkijonon syöttöön.
- Width-kentän, jossa kuvan leveys pikseleinä (voi muuttaa).
- Height-kentän, jossa kuvan korkeus pikseleinä (voi muuttaa).
- "Signatures..." -nappulan,
jolla voi avata "Signatures" -dialogin.
- "OK" - ja "Cancel" -nappulat
Luonnos dialogista (päivitetty 24.11.96):
"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):
"Segmentation" -dialogi
Sisältää seuravaa:
- Listan segmentointialgoritmeista
- "Parameters..." -nappulan, jolla voi avata
"Segmentation algorithm parameters" -dialogin.
- "Execute" -nappulan, joka segmentoi esimerkkikuvan valitulla
segmentointialgoritmilla.
- Info-ruudun, jossa näytetään listasta valitun algoritmin
esimerkkikuvalle laskemat segmentit (yksi kerrallaan).
- "Next" - ja "Prev" -nappulat, joista voi selata segmenttejä
info-ruudussa.
- "Close" -nappula
Luonnos dialogista (päivitetty 24.11.96):
"Segmentation algorithm parameters" -dialogi
Segmentointialgoritmikohtainen dialogi algoritmin mahdollisesti
tarvitsemien parametrien syöttöön.
Luonnos dialogista (päivitetty 24.11.96):
"Image processing" -dialogi
Sisältää seuravaa:
- Listan kuvankäsittelyalgoritmeista
- "Parameters..." -nappulan, jolla voi avata
"Image processing algorithm parameters" -dialogin.
- "Execute" -nappulan, joka prosessoi piirtoikkunassa olevan kuvan
valitulla kuvankäsittelyalgoritmilla ja sulkee dialogin.
- "Cancel" -nappulan
Luonnos dialogista (päivitetty 24.11.96):
"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):
"Options" -dialogi
Sisältää mahdollisuuden muuttaa ohjelman yleisiä parametreja.
Ks. 5.5.1 Yleisten parametrien asettaminen.
Luonnos dialogista (päivitetty 24.11.96):
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.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."
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."
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."
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).
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."
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.
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"
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.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.
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."
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."
Ohjelman toimintaan vaikuttavat yleiset parametrit asetetaan
pääikkunan valikosta avattavalla "Options" -dialogilla.
Dialogissa voidaan asettaa arvot ainakin seuraaville
parametreille:
- Näytetäänkö keskeytetyn/keskeytyneen haun tulokset : kyllä/ei
- Jos piirtokuva on muuttunut ja käyttäjä sulkee piirtoikkunan,
tehdäänkö muutoksien hyväksymisvarmistus : kyllä/ei
- Kopioidaanko kuvat tietokantaan fyysisesti vaiko
ainoastaan alkuperäisen tiedoston nimi
(ks. 5.5.4 Linkit alkuperäisiin tiedostoihin).
- Tyhjästä luodun esimerkkikuvan oletuskoko: korkeus ja leveys
(eivät voi ylittää tiettyjä maksimiarvoja).
- PicGUI-alijärjestelmän debug-viestit päällä/pois
- PicCore-alijärjestelmän debug-viestit päällä/pois
- PicAlgorithm-alijärjestelmän debug-viestit päällä/pois
- PicDb-alijärjestelmän debug-viestit päällä/pois
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".
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.
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ä.
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.
Tietokaavio
Seuraavassa kaaviossa on esitetty ohjelman tärkeimmät tiedot
OMT-kaaviona.
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.