Johdatus Konenäköön
Hulvattoman laaja kenttä
- Ks. 979 sivuinen kurssikirja, jonka lähdeluettelo kattaa sivut 791-931
- Ts. Tästä ei voi millään kurssilla esittää kuin vilauksen.
Haastavaa.
- Runsaasti esitietoja
- Reaalimaailman ongelmat, suorituskyky, monimutkaisuus, parametrien paljous
Johdatus Konenäköön
Lupaavaa.
- Osaamme luoda 3d malleja digikuvista
- Konenäkö paljastaa vikoja 30m/s kulkevasta prosessituotteesta
- Autot tunnistavat jalankulkijoita
- Ainoa tapa saada tietokone toimimaan ihmisen maailmassa
Mielenkiintoista
- Kertoo aika paljon ihmisen toiminnasta.
Mitä tietoja konenäkö vaatii?
Viikkoaikataulu
8-10 |
- |
- |
- |
- |
- |
10-12 |
Luku & puuha- tuokio |
- |
- |
- |
Tutoriaali |
14-16 |
- |
- |
- |
- |
Kotitenttien palautus |
16-20 |
- |
- |
- |
- |
- |
Viikkoaikataulu
Lukutuokiot |
2 |
8 |
16 |
Tutoriaalit |
2 |
9 |
18 |
Kotitentti + kirja |
5 |
8 |
40 |
Harjoitustyö (kotona) |
7 |
5 |
35 |
|
9-16 |
9 |
109h = 4op |
Harjoitustyöt
Lyhyesti:
- Jokainen porukka saa harjoitustyöaiheen.
- Aiheet haastavia, oikeita ongelmia.
- Tarkoitus on yrittää. Onnistuminen on vapaaehtoista.
- Kaikista aiheista voi tehdä opinnäytetyön (Erikoistyö, kandi, gradu)
- Joistain aiheista voi tehdä maksetun gradun.
Harjoitustyöt
Case 1. SYKE, Mikroskopianäytteet
Palkallinen gradu kesällä 2012
Harjoitustyöt
Case 2. SYKE, Lohivideot
Palkallinen gradu kesällä 2012
Harjoitustyöt
Case 3. Liikuntatieteiden laitos, liikuntamäärämittaus
Harjoitustyöt
Case 4. Tietotekniikan laitos, Spektrikuvamosaiikki
Mahdollisesti palkallinen gradu kesällä 2012
Harjoitustyöt
Case 5. Kirjainten tunnistus
Onko kuvassa tekstiä? Missä kohdassa? Mitä tekstiä?
Ryhmät
- Jos haluat suorittaa yksin, siitä vain.
- Muuten suosittelemme 3 hengen ryhmiä. Vertaistuki helpottaa.
- Valitkaa sellaiset ryhmät, joissa löytyy yhteistä aikaa.
- Ville Isomöttönen auttaa ryhmien muodostuksessa
Miksi Haskell?
Syntaksi
- \(K(x,y) = \begin{cases}1, &\text{jos } ||x-y|| < 50 \\ 0, &\text{muuten} \end{cases}\)
vs.
-- Haskell esim. 1.
k (x,y) | l1norm (x-y) < 50 = 1
| otherwise = 0
Miksi Haskell?
Syntaksi
- \(\left[T f\right](x,y) = \begin{cases}1, &\text{jos } f(x,y) > \frac{1}{2} \\ f(x,y), &\text{muuten} \end{cases}\)
vs.
-- Haskell esim. 2.
t f (x,y) | f(x,y) > 0.5 = 1
| otherwise = f(x,y)
Miksi Haskell?
Kuvankäsittelyesimerkki
- Sovelletaan edellisen kalvon funktiota tähän kuvaan.
Miksi Haskell
Kuvankäsittelyesimerkki
import WebTools
import CV.Pixelwise
-- Haskell esim. 3.
main = webG "testikuva" "images/FourierSmall.jpg" (remapImage t)
t f (x,y) | f(x,y) > 0.5 = 1
| otherwise = f(x,y)
- HUOM Asentamalla kurssisoftat ja hakemalla tämän webbisivun, voit muokata koodia ja kokeilla eri funktioita.
Miksi Haskell
Komentotulkkiesimerkki
awgre:kurssi2012(master) aleator$ ghci
GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help
Prelude> import CV.Filters
Prelude CV.Filters> import CV.Image
Prelude CV.Filters CV.Image> Just x <- loadImage "images/FourierSmall.jpg"
Prelude CV.Filters CV.Image> let result = gaussian (13,13) x
Prelude CV.Filters CV.Image> saveImage "tulos.png" result
Prelude CV.Filters CV.Image> ^d
Miksi Haskell
Käyttöliittymäesimerkki
{-#LANGUAGE DeriveGeneric, RecordWildCards#-}
module Main where
import Graphics.Tools.DefaultGUI
import CV.Image
import CV.Filters
import CV.ImageMath as IM
data Parameters = P {threshold :: Bool
,t :: DoubleRange Zero One
,mat :: ConvolutionMask Five Five } deriving (Generic)
instance Default Parameters
instance Persist Parameters
instance Tangible Parameters
main :: IO ()
main = defaultGUI "ParametriTiedosto" "rectangle_5.png" experiment
experiment :: Parameters -> Image GrayScale D32 -> [PaintableBox]
experiment P{..} image = [PB result, PB conv]
where
conv = convolve2D (value mat) (2::Int,2::Int) image
result | threshold = unsafeImageTo32F (IM.moreThan (realToFrac (value t)) conv)
| otherwise = conv
Miksi Haskell
Käyttöliittymäesimerkki
Miksi Haskell?
Yhteenvetona
- Tutkimusryhmämme käytössä.
- Mainio syntaksi.
- Vähemmän ajonaikaisia virheitä.
- Paljon modulaarisempi kuin olio-ohjelmointikielet.
Saako ne edes asennettua?
Empiirisesti ottaen.. Tässä on yksi syy miksi aloitussessio on niin pitkä..
- Hieman hankalaa se saattaa olla.
- Linuksiin onnistuu heittämällä..
- .. paitsi mikroluokassa.
- Mäkissä pitäisi toimia suurelta osin.
- Windowsista emme osaa sanoa.
(oikea) Linux
GHC, OpenCV
- Distron pakettimanagerista sellaisenaan.
CV ja Graphicstools
cabal update ; cabal install CV -fopencv23 ; cabal install Graphicstools
- mahdollisesti
cabal install CV -fopencv23 --extra-include-dirs=<mihin opencv on asennettu> --extra-lib-dirs=<samoin>
Hakyll
Mikroluokan linuks
GHC, OpenCV
- IT tuen mukaan esiasennettuina.
CV ja Graphicstools
- Ks. Tarkemmat ohjeet
cabal update ; cabal install --extra-lib-dirs=/usr/local/lib -fopencv23
- Huom. Ellei mikrotuki suoriudu, ohjelmat joudutaan ajamaan komennolla
LD_LIBRARY_PATH=/usr/local/lib <ohjelma>
Hakyll
OS X
GHC
OpenCV
- Ensin asennetaan Homebrew ja sitten
brew install opencv
CV
cabal install -fopencv23 --extra-lib-dirs=/usr/local/lib/libcv.dylib --extra-include-dirs=/usr/local/include/opencv/
GraphicsTools
- Suorituspisteitä siitä, jos keksii miten tämä onnistuu vaivattomasti. Ks. Tarkemmat ohjeet
Hakyll
Mikroluokan OS X
Anna vain olla. Niin teki IT-tukikin kahden päivän jälkeen.
Windows
GHC
OpenCV
CV
- samoin kuin linuksissa, mutta polkuja täytyy säätää ja varmaan mingw:kin pitää asentaa.
GraphicsTools
- Onnistumisesta papukaijamerkki.
Voihan Murmutus
Olemme myös harmissamme hankaluudesta, mutta
- Olette tietotekniikan laudatur kurssilla. Ts. osaatte asentaa hankalankin ohjelman jos haluatte.
- Vaihtoehdot ovat myös hyviä!
Katsotaan ne asennusongelmat nyt..
Kalvosarja loppuu tähän
- Seuraavaksi laitamme jokaiselle jonkun konenäkötyökalun toimimaan.
- Oma läppäri on ykkösvalinta.
- Mikroluokissa tointaa ottaa nimikkokoneet.