• No results found

Syst´em pro modelov´an´ı a predikci sportovn´ıch v´ysledk˚u

N/A
N/A
Protected

Academic year: 2022

Share "Syst´em pro modelov´an´ı a predikci sportovn´ıch v´ysledk˚u"

Copied!
94
0
0

Loading.... (view fulltext now)

Full text

(1)

Syst´ em pro modelov´ an´ı a predikci sportovn´ıch v´ ysledk˚ u

Diplomov´ a pr´ ace

Studijn´ı program: N2612 – Elektrotechnika a informatika Studijn´ı obor: 1802T007 – Informaˇcn´ı technologie Autor pr´ace: Bc. V´aclav Slav´ık

Vedouc´ı pr´ace: Doc. RNDr. Miroslav Kouck´y, CSc.

(2)

System for modeling and predicting sports results

Master thesis

Study programme: N2612 – Electrotechnology and informatics Study branch: 1802T007 – Information technology

Author: Bc. V´aclav Slav´ık

Supervisor: Doc. RNDr. Miroslav Kouck´y, CSc.

(3)
(4)
(5)
(6)

Abstrakt

Tato pr´ace se zab´yv´a predikc´ı a modelov´an´ım cyklistick´ych v´ysledk˚u. D˚uraz je kladen pˇredevˇs´ım na obecnost model˚u a je- jich pouˇzitelnost i v jin´ych sportovn´ıch odvˇetv´ıch. Tyto modely jsou vytvoˇreny pˇredevˇs´ım pro individu´aln´ı sporty, kter´e jsou klasi- fikov´any pomoc´ı ˇcasu. Vytvoˇren´e modely jsou zaloˇzeny pˇredevˇs´ım na um´ıstˇen´ı z´avodn´ık˚u, jejich dosaˇzen´ych ˇcasech, ale reflektuj´ı i v´yˇskov´y profil z´avodu, jeho ´uroveˇn ˇci zp˚usob startu. V´ystupem cel´e pr´ace je aplikace, kter´a poskytuje rozhran´ı vhodn´e pro v´yvoj matematick´ych model˚u a z´aroveˇn implementuje statistiky z cyklis- tiky, biatlonu, bˇeˇzeck´eho lyˇzov´an´ı i z´avod˚u F1. Stejnˇe podstatnou souˇc´ast´ı jsou i vytvoˇren´e modely, kter´e umoˇzˇnuj´ı bˇeˇzn´emu uˇzivateli, respektive bookmakerovi, predikovat v´ysledky n´asleduj´ıc´ıch z´avod˚u a pomoc´ı grafick´eho rozhran´ı mu zobrazit velkou ˇsk´alu r˚uzn´ych v´ysledk˚u. Aplikace m˚uˇze b´yt vhodn´ym doplˇnkem pro s´azkov´e kan- cel´aˇre pˇri vypisov´an´ı kurz˚u.

Kl´ıˇcov´a slova: predikce sportovn´ıch v´ysledk˚u, pravdˇepodobnost, cyklistika, statistika

(7)

Abstract

This work focuses on prediction and modeling of cycling results.

Emphasis is placed on the generality of models and on their ap- plicability in other types of sports as well. The models are created primarily for individual sports that are classified by time. The mo- dels obtained are based primarily on the position of the racers, their times achieved, but also reflect the elevation profile of the race, its level or the method of starting. The output of this work is an application which provides an interface suitable for the develo- pment of mathematical models and also implements statistics from cycling, biathlon, cross-country skiing and F1 races. An equally im- portant part of the thesis are models that allow a regular user or a bookmaker to predict the results of the upcoming races and use the graphical interface to display a wide variety of different results. The application can be used as a supplement for bookmakers in order to help them create the odds.

Keywords: predicting sports results, probability, cycling, statistics

(8)

Podˇ ekov´ an´ı

R´ad bych podˇekoval vedouc´ımu diplomov´e pr´ace doc. RNDr. Mi- roslavu Kouck´emu, CSc. za jeho rady, a ˇcas, kter´y mi vˇenoval pˇri ˇreˇsen´ı dan´e problematiky. D´ale dˇekuji i s´azkov´e kancel´aˇri Tipsport, za nast´ınˇen´ı aktu´aln´ıho stavu vyuˇzit´ı predikce v s´azkov´em pr˚umyslu. V neposledn´ı ˇradˇe dˇekuji i sv´e rodinˇe, za jejich podporu po celou dobu m´eho studia.

(9)

Obsah

Seznam zkratek . . . 10

1 Uvod´ 16 2 Specifika sportovn´ıch odvˇetv´ı 19 2.1 Silniˇcn´ı cyklistika . . . 20

3 V´ykon cyklisty 22 3.1 Stanoven´ı koeficient˚u z namˇeˇren´ych hodnot. . . 24

4 V´ysledky z´avod˚u 26 4.1 Datov´e zdroje . . . 26

4.2 Program pro stahov´an´ı v´ysledk˚u . . . 26

4.3 Objektov´y n´avrh statistik . . . 29

4.4 Profil trasy . . . 31

5 Statistick´e modely 42 5.1 Parametry z´avodu . . . 43

5.2 Z´akladn´ı model . . . 44

5.3 Obecn´e modely zaloˇzen´e na vah´ach . . . 46

5.4 Model reflektuj´ıc´ı fyzik´aln´ı z´akonitosti . . . 50

5.5 Dalˇs´ı typy model˚u. . . 54

5.6 Programov´a implementace model˚u . . . 56

6 Vyhodnocen´ı model˚u 58 6.1 Metriky pro vyhodnocen´ı model˚u . . . 58

6.2 Programov´a implementace . . . 61

6.3 Stanoven´ı optim´aln´ıho modelu a parametr˚u. . . 65

(10)

7 Implementace model˚u v dalˇs´ıch sportovn´ıch odvˇetv´ıch 79 7.1 Formule 1 . . . 79 7.2 Bˇeˇzeck´e lyˇzov´an´ı . . . 81

8 Z´avˇer 86

9 Pˇr´ıloha A : Obsah pˇriloˇzen´eho CD 90

(11)

Seznam zkratek

ER Entity-Relationship

HTML HyperText Markup Language JSON JavaScript Object Notation

RGB Red, Green, Blue (aditivn´ı barevn´y model) SQL Structured Query Language

UCI Union Cycliste Internationale URL Uniform Resource Locator XML Extensible Markup Language

(12)

Seznam znaˇ cen´ı

bstart,j : zp˚usob startovn´ı procedury j-t´eho z´avodu (0 = individu´aln´ı, 1 = hro- madn´y)

bstage,j : oznaˇcuje, zda je j-t´y z´avod souˇc´ast´ı etapov´eho z´avodu (0 = ne, 1 = ano) C : souˇcinitel odporu vzduchu

CR : souˇcinitel valiv´eho odporu

d(c1, c2) : vzd´alenost vektor˚u (c1, c2) v gamutu Lab

dj : datum j-t´eho z´avodu vyj´adˇrena poˇctem milisekund po 1.1.1970 ej : ´uroveˇn j-t´eho z´avodu

fe(x, y, xlast, k) : funkce detekuj´ıc´ı hranu v´yˇskov´eho profilu g : t´ıhov´e zrychlen´ı

h(x) : funkce vyjadˇruj´ıc´ı nadmoˇrskou v´yˇsku ve vzd´alenosti x od zaˇc´atku z´avodu hdif f : rozd´ıl mezi nejvyˇsˇs´ım a nejniˇzˇs´ım bodem z´avodu

hheight(y) : funkce pro vypoˇcten´ı nadmoˇrsk´e v´yˇsky z obr´azku hmax : nejvˇetˇs´ı pˇrev´yˇsen´ı na jedin´em stoup´an´ı

htotal : celkov´e pˇrev´yˇsen´ı z´avodu

kadd : poˇcet po sobˇe jdouc´ıch pixel˚u, kter´e mus´ı b´yt rozpozn´any kcolor : prah pro vyhled´av´an´ı barev

kdetect : poˇcet detekˇcn´ıch pixel˚u nutn´ych k spr´avn´e identifikaci hledan´eho pixelu kheight : v´yˇska obr´azku uveden´a v pixelech

kmultiple : pravidlo n´asobku mezi osou x a y pˇri detekci

krelative : maxim´aln´ı moˇzn´a relativn´ı chyba mezi metodou shora a zdola

(13)

kwidth : ˇs´ıˇrka obr´azku uveden´a v pixelech lj : d´elka j-t´eho z´avodu

m : hmotnost

mef f : hmota podl´ehaj´ıc´ı zrychlen´ı

pup(x) : funkce pro vypoˇcten´ı v´yˇsky pixelu metodou zdola nahoru v x-t´em sloupci pdown(x) : funkce pro vypoˇcten´ı v´yˇsky pixelu metodou shora dol˚u v x-t´em sloupci

pi(x) : pravdˇepodobnostn´ı funkce pro i-t´eho z´avodn´ıka v z´avislosti na jeho um´ıstˇen´ı Pi(x1 ≤ X ≤ x2) : pravdˇepodobnost, ˇze se i-t´y z´avodn´ık um´ıst´ı mezi x1 a x2 m´ıstem

p0i(x) : pravdˇepodobnostn´ı funkce nez´avisl´eho rozdˇelen´ı mezi z´avodn´ıky pro i- t´eho z´avodn´ıka

p00i(x) : normalizovan´a funkce p0i(x)

ps,j : souˇcet ´uspˇeˇsnˇe predikovan´ych pravdˇepodobnost´ı

pr,j : v´aˇzen´y souˇcet ´uspˇeˇsnˇe predikovan´ych pravdˇepodobnost´ı P : v´ykon pod´avan´y cyklistou

PA : v´ykon nutn´y k pˇrekon´an´ı odporu vzduchu

PS : v´ykon nutn´y k pˇrekon´an´ı sklonu vozovky (gravitaˇcn´ı pˇritaˇzlivosti) PR : v´ykon nutn´y k pˇrekon´an´ı valiv´eho odporu

PB : v´ykon nutn´y k pˇrekon´an´ı odporu nerovnost´ı vozovky Pacc : v´ykon plynouc´ı ze zrychlen´ı

rtop,i,j : nejlepˇs´ı dˇelen´e um´ıstˇen´ı i-t´eho z´avodn´ıka v j-t´em z´avodˇe rdown,i,j : nejhorˇs´ı dˇelen´e um´ıstˇen´ı i-t´eho z´avodn´ıka v j-t´em z´avodˇe

rweight(x, i, j) : v´aha x-t´eho um´ıstˇen´ı i-t´eho z´avodn´ıka v j-t´em z´avodˇe pro pˇr´ıpad dˇelen´ych um´ıstˇen´ı

(14)

Sj : startovn´ı listina j-t´eho z´avodu sl : sklon vozovky

tj(CS, m, ρ, P ) : funkce pro v´ypoˇcet ˇcasu v j-t´em z´avodˇe (cyklistiky) pˇri p˚usoben´ı se st´al´ym v´ykonem

ttotal,i,j : celkov´y ˇcas i-t´eho z´avodn´ıka v j-t´em z´avodˇe

tloss,i,j : ˇcasov´a ztr´ata i-t´eho z´avodn´ıka v j-t´em z´avodˇe na v´ıtˇeze z´avodu Ti : mnoˇzina x-ov´ych souˇradnic pixel˚u pro i-t´y interval

v : rychlost

v(CS, ρ, m, P, sl) : v´ypoˇcet rychlosti z poˇzadovan´ych parametr˚u pomoc´ı ˇreˇsen´ı kubick´e rov- nice

wdate,j(k) : funkce pro v´ypoˇcet v´ahy data vzhledem k predikovan´emu z´avodu wj : v´aha j-t´eho z´avodu vzhledem k predikovan´emu z´avodu

wlevel,j(k) : funkce pro v´ypoˇcet v´ahy s ohledem na ´uroveˇn z´avodu wlength,j : v´aha j-t´eho z´avodu vzhledem k d´elce predikovan´eho z´avodu wlength2,j : v´aha j-t´eho z´avodu vzhledem k d´elce predikovan´eho z´avodu

wpower,j : v´aha j-t´eho z´avodu odvozena od v´ykonu cyklist˚u

wprof ile,j : v´aha j-t´eho z´avodu vzhledem k pˇrev´yˇsen´ı a d´elce predikovan´eho z´avodu wstart,j(k) : funkce pro v´ypoˇcet v´ahy s ohledem na zp˚usob startu

Z : mnoˇzina z´avod˚u ρ : hustota vzduchu

φ : aritmetick´a odchylka mezi souˇcty pravdˇepodobnost´ı v jednotliv´ych in- tervalech

(15)

Seznam tabulek

5.1 Test dobr´e shody . . . 46

6.1 Z´avislost hodnoty pr,j na poˇctu z´avodn´ık˚u . . . 59

6.2 Souˇcet pravdˇepodobnost´ı dle vybran´ych interval˚u . . . 66

6.3 Test z´akladn´ıch typ˚u model˚u na sez´on´ach 2015,2016 . . . 67

6.4 Poziˇcn´ı a relativn´ı poziˇcn´ı model filtrovan´y podle um´ıstˇen´ı . . . 68

6.5 Rozdˇelen´ı ´uspˇeˇsnosti poziˇcn´ıho modelu podle interval˚u . . . 69

6.6 Rozdˇelen´ı a ´uspˇeˇsnost pravdˇepodobnost´ı po redukci . . . 70

6.7 Uspˇ´ eˇsnost redukˇcn´ıch metod . . . 71

6.8 Vyhodnocen´ı model˚u vytvoˇren´ych s parametry typu a ´urovnˇe z´avodu 72 6.9 Z´akladn´ı koeficienty data pro cyklistiku . . . 73

6.10 Detailnˇejˇs´ı koeficienty data pro cyklistiku . . . 74

6.11 Volba koeficient˚u pro parametr profilov´e n´aroˇcnosti z´avodu . . . 75

6.12 Volba koeficient˚u pro parametr zaloˇzen´y na v´ykonu a profilov´e n´aroˇcnosti z´avodu . . . 76

6.13 Stanoven´ı parametr˚u pro Tour de France . . . 78

7.1 Stanoven´ı ˇcasov´eho koeficientu pro F1. . . 80

7.2 Stanoven´ıˇcasov´eho koeficientu pro F1 pomoc´ı redukce pravdˇepodobnost´ı 81 7.3 Stanoven´ıˇcasov´eho koeficientu pomoc´ı poziˇcn´ı redukce pravdˇepodobnosti pro F1 . . . 82

7.4 V´ysledky z´akladn´ıch typ˚u model˚u na bˇeˇzeck´em lyˇzov´an´ı. . . 83

7.5 Vyhodnocen´ı vzd´alenostn´ıho koeficientu pro bˇeˇzeck´e lyˇzov´an´ı. . . 84

7.6 Casov´ˇ y koeficient pro exponenci´aln´ı funkci v bˇeˇzeck´em lyˇzov´an´ı . . . 84

7.7 Casov´ˇ y koeficient pro lomenou funkci v bˇeˇzeck´em lyˇzov´an´ı . . . 85

7.8 Koneˇcn´y n´avrh parametr˚u pro bˇeˇzeck´e lyˇzov´an´ı . . . 85

(16)

Seznam obr´ azk˚ u

1.1 Celkov´y obrat uzavˇren´ych s´azek v ˇCR. . . 16

3.1 Sloˇzky v´ykonu cyklisty . . . 23

4.1 ER Diagram cyklistick´ych dat . . . 29

4.2 Objektov´y n´avrh v´ysledk˚u z´avodu . . . 30

4.3 Pˇr´ıliˇs n´ızk´y prah pro detekci hran . . . 37

4.4 Vhodnˇe zvolen´y prah pro detekci hran . . . 37

4.5 Grafick´a aplikace pro hled´an´ı v´yˇskov´eho profilu . . . 40

5.1 Funkce v´ahy pro datum . . . 48

5.2 Cetnost z´ˇ avodn´ık˚u v z´avislosti na jejich hmotnosti . . . 51

6.1 Diagram tˇr´ıd model˚u . . . 62

6.2 Vyhodnocen´ı koeficient˚u ˇcasu pro Tour de France . . . 74

(17)

1 Uvod ´

Ve sv´e diplomov´e pr´aci jsem se rozhodl zamˇeˇrit na predikci sportovn´ıch v´ysledk˚u v silniˇcn´ı cyklistice. Stanoven´ı pravdˇepodobnost´ı na rozliˇsn´e ud´alosti pˇredstavuje pomˇernˇe zaj´ımavou aplikaci matematick´e statistiky. Potˇreba podobn´ych aplikac´ı je zˇrejm´a s ohledem na neust´ale rostouc´ı objem kurzov´ych s´azek. Jen v ˇCesk´e repub- lice v roce 2015 ˇcinil obrat uzavˇren´ych kursov´ych s´azek 43,8 mld. Kˇc. Na obr´azku 1.1 vid´ıme celkov´y obrat uzavˇren´ych kursov´ych s´azek v letech 2012-2015, kter´y ne- ust´ale roste. Zaj´ımav´y je pˇredevˇs´ım n´ar˚ust internetov´eho s´azen´ı, naopak s´azen´ı na poboˇck´ach sp´ıˇse stagnuje. Lze rovnˇeˇz pˇredpokl´adat, ˇze nastolen´y trend bude i nad´ale pokraˇcovat. Obrat kursov´eho s´azen´ı v roce 2015 ˇcinil 28,8% z celkov´eho pod´ılu ha- zardn´ıch her v ˇCR a d´ıky zvyˇsuj´ıc´ımu se obratu internetov´eho s´azen´ı se i tento pod´ıl za posledn´ı roky pravidelnˇe zvyˇsuje [13].

Obr´azek 1.1: Celkov´y obrat uzavˇren´ych s´azek v ˇCR

Prvn´ı statistick´e modely se objevily jiˇz v roce 1951, kdy Moroney pˇriˇsel s myˇslenkou, ˇze poˇcet vstˇrelen´ych g´ol˚u ve fotbale vypl´yv´a z vysok´eho poˇctu ´utoˇcn´ych ˇsanc´ı dan´eho t´ymu, a proto navrhl vyuˇz´ıt Poissonovo rozdˇelen´ı. Na jeho myˇslenku nav´azal Ma-

(18)

her, kter´y model aplikoval na nˇekolika nejvyˇsˇs´ıch anglick´ych fotbalov´ych soutˇeˇz´ıch.

Z´aroveˇn pˇridal koeficient obrany a ´utoku pro dom´ac´ı i hostuj´ıc´ı t´ym [10]. Za dalˇs´ım zaj´ımav´ym posunem st´al Dixon s Colesem, kteˇr´ı koriguj´ı Poissonovo rozdˇelen´ı pro nˇekter´e poˇcty vstˇrelen´ych branek [11]. Vˇsechny zm´ınˇen´e modely lze nasadit nejen ve fotbale, ale i dalˇs´ıch sportech, kter´e mohou vyuˇz´ıt stejn´eho principu. Jedn´a se napˇr. o hokej, h´azenou, basketbal. Zejm´ena tedy sporty, kter´e jsou omezeny ˇcasem a rozhoduj´ı v nich vstˇrelen´e branky.

Na poli individu´aln´ıch discipl´ın mnoho zveˇrejnˇen´ych model˚u neexistuje. V´yjimku pˇredstavuje napˇr´ıklad biatlonov´y model, kter´y pˇrich´az´ı s myˇslenkou predikce na z´akladˇe um´ıstˇen´ı z´avodn´ık˚u v pˇredchoz´ıch z´avodech, nebo podle jejich dosaˇzen´ych ˇcas˚u [12]. Pouˇzito je i rozdˇelen´ı na v´ıce nez´avisl´ych ˇc´ast´ı, ke kter´ym pˇristupujeme oddˇelenˇe a na z´avˇer se ˇcasy seˇctou. Jednotliv´e sloˇzky jsou vyj´adˇreny pomoc´ı dis- tribuˇcn´ıch funkc´ı, v´ysledn´y ˇcas se tedy spoˇcte pomoc´ı konvoluce. Nev´yhodu vy- tvoˇren´eho modelu pˇredstavuje pˇredevˇs´ım jeho ´uzk´e spojen´ı s biatlonem. ˇCasto se lze setkat s ˇcl´anky, kter´e predikuj´ı v´yvoj nejlepˇs´ıch ˇcas˚u atletick´ych ˇci plaveck´ych discipl´ın. Tyto sporty se vyznaˇcuj´ı pˇredevˇs´ım velmi obdobn´ymi podm´ınkami na r˚uzn´ych m´ıstech svˇeta, nav´ıc se jedn´a o predikci rekordn´ıch v´ysledk˚u, kde je zˇrejm´e, ˇze funkce bude nerostouc´ı [1]. Nicm´enˇe pro podobn´e sporty by jistˇe bylo moˇzn´e obdobn´ym zp˚usobem predikovat i v´ysledky vybran´ych z´avodn´ık˚u. V cyklistice se vˇsak podm´ınky velmi liˇs´ı a nem´ame k dispozici dostatek informac´ı, aby bylo moˇzn´e obdobn´ym zp˚usobem predikovat ˇcas z´avodn´ık˚u.

Aplikace je programov´ana pomoc´ı programovac´ıho jazyka java, kter´y je pro desk- topovou aplikaci vhodn´y. Ve srovn´an´ı s jazykem C v´ykonnostnˇe sice m´ırnˇe zaost´av´a, ale z program´atorsk´eho hlediska obsahuje velk´e mnoˇzstv´ı framework˚u a v´ykonnostn´ı rozd´ıl nepˇredstavuje z´asadn´ı probl´em. Aplikace vyuˇz´ıv´a n´avrhov´eho vzoru MVC, kter´y ji rozdˇel´ı na 3 samostatnˇe funguj´ıc´ı ˇc´asti [19]. Z´akladn´ım motivem pro pouˇzit´ı tohoto n´avrhov´eho vzoru je oddˇelen´ı programov´eho modelu od uˇzivatelsk´eho roz- hran´ı, ˇc´ımˇz se zv´yˇs´ı jeho pˇrehlednost, ale i znovupouˇzitelnost. Model (M) obsahuje veˇskerou logiku, v´ypoˇcty i pr´aci s datab´azi. Pohled (V) se star´a jen o zobrazen´ı v´ysledk˚u uˇzivateli. Model a pohled jsou ´uplnˇe oddˇeleny a komunikaci mezi nimi zajiˇst’uje controller (C). Grafick´e rozhran´ı bude tvoˇreno s pomoc´ı knihovny J avaF X, kter´a je pˇripravena na pouˇzit´ı spolu s n´avrhov´ym vzorem MVC. Model bude vy-

(19)

tvoˇren pomoc´ı bˇeˇzn´ych tˇr´ıd, contoller pak jen implementuje rozhran´ı Initializable a z´aroveˇn um´ı komunikovat s pohledem, kter´y pˇredstavuje jazyk FXML. FXML je jazyk zaloˇzen´y na xml a umoˇzˇnuje vytvoˇrit pohled v tomto form´atu. Mimo psan´ı po- hledu v xml podobˇe existuje i n´avrh´aˇr Scene Builder, kter´y v´yraznˇe usnadn´ı pr´aci [20]. Pro ukl´ad´an´ı dat bude vyuˇzita datab´aze H2, kter´a je zaloˇzena na relaˇcn´ım modelu a m˚uˇze b´yt pouˇz´ıv´ana bez instalace datab´azov´eho serveru, coˇz m˚uˇze b´yt v´yhodn´e z hlediska pˇrenositelnosti.

(20)

2 Specifika sportovn´ıch odvˇ etv´ı

Sportovn´ı odvˇetv´ı lze rozdˇelit na mnoho kategori´ı. N´as zaj´ım´a pˇredevˇs´ım hledisko predikce v´ysledk˚u. Z tohoto pohledu nemus´ı b´yt ani tak d˚uleˇzit´e, jestli se jedn´a o t´ymov´y nebo individu´aln´ı sport, jelikoˇz na v´ysledky vybran´eho t´ymu lze pohl´ıˇzet podobnˇe jako na v´ysledky jedin´eho z´avodn´ıka.

Na n´asleduj´ıc´ım grafu je zn´azornˇeno rozdˇelen´ı s ohledem na zp˚usob predikce.

Sportovn´ı odvˇetv´ı, kter´a byla oznaˇcena jako z´apasov´a pˇredstavuj´ı sporty, kde se utkaj´ı dva soutˇeˇz´ıc´ı t´ymy, ˇci jednotlivci, a obvykle konˇc´ı po pˇredepsan´em ˇcase, nebo urˇcit´em poˇctu bod˚u.

sportovn´ı odvˇetv´ı

z´avodn´ı

klasifikovan´e body, vzd´alenost´ı skoky, vrhaˇcsk´e discipl´ıny,..

klasifikovan´e ˇcasem cyklistika, bˇeh,..

z´apasov´e

omezen´e body volejbal,..

tenis, omezen´e ˇcasem

fotbal, h´azen´a, box,..

Z´avod˚u se naopak m˚uˇze ´uˇcastnit libovoln´y poˇcet z´avodn´ık˚u a vyhodnocuj´ı se na z´akladˇe ˇcasu, ˇci dosaˇzen´ych bod˚u. Ve vˇsech odvˇetv´ıch, kter´a byla oznaˇcena jako z´avodn´ı, lze urˇcit um´ıstˇen´ı z´avodn´ık˚u a na jeho z´akladˇe i predikovat v´ysledky nadch´azej´ıc´ıch z´avod˚u. Rozd´ıl mezi klasifikac´ı pomoc´ı ˇcasu a bod˚u (vzd´alenosti) je zejm´ena v uspoˇr´ad´an´ı, kde v pˇr´ıpadˇe ˇcasov´e klasifikace v´ıtˇez´ı z´avodn´ık s nejniˇzˇs´ım ˇcasem. V bodov´em hodnocen´ı naopak vˇetˇsinou v´ıtˇez´ı z´avodn´ık s vyˇsˇs´ım poˇctem z´ıskan´ych bod˚u.

Diplomov´a pr´ace je zamˇeˇrena zejm´ena na cyklistiku a tak modely budou vy- tvoˇreny tak, aby mohly b´yt implementov´any ve vˇsech z´avodn´ıch sportech, zejm´ena pak tˇemi, kter´e vyuˇz´ıvaj´ı ˇcasov´e klasifikace. Naopak kategorie z´apasov´ych sport˚u je s modely v t´eto pr´aci nesluˇciteln´a.

(21)

2.1 Silniˇ cn´ı cyklistika

Silniˇcn´ı cyklistika patˇr´ı mezi individu´aln´ı sporty. Z´avodn´ıci pˇresto ˇcasto spolupracuj´ı a to zejm´ena v r´amci sv´eho t´ymu. V r´amci vybran´eho t´ymu maj´ı z´avodn´ıci obvykle pˇridˇeleny t´ymov´e pokyny a ˇcasto odv´ad´ı pr´aci pro l´ıdra t´ymu, na ´ukor osobn´ıch ambic´ı. Mezi r˚uzn´ymi odnoˇzemi profesion´aln´ı cyklistiky je pr´avˇe silniˇcn´ı kr´alovnou tohoto sportu, coˇz se odr´aˇz´ı v poˇctu profesion´aln´ıch sportovc˚u a jejich z´azem´ı.

Pouˇz´ıvaj´ı se silniˇcn´ı kola, kter´a jsou specifick´a pˇredevˇs´ım ´uzk´ymi pl´aˇsti, respek- tive galuskami. Pro vˇsechna kola plat´ı pravidlo minim´aln´ı hmotnosti, z´avodn´ı stroj nesm´ı b´yt lehˇc´ı neˇz 6,8 kg [2]. Prakticky vˇsechny profesion´aln´ı z´avodn´ıci maj´ı kola s hmotnost´ı velmi bl´ızkou uveden´emu limitu a tak m˚uˇzeme pracovat pˇri predikci v´ysledk˚u v´yhradnˇe s touto hmotnost´ı.

2.1.1 Jednor´ azov´ e z´ avody

Jednor´azov´ym z´avodem, nebo tak´e jednodenn´ım z´avodem, rozum´ıme takov´y z´avod, kter´y se startuje hromadnˇe. Z´avod konˇc´ı v pˇredem stanoven´em m´ıstˇe a po jeho pr˚ujezdu jsou z´avodn´ıci klasifikov´ani. Jedin´ym rozhoduj´ıc´ım krit´eriem pro vyhod- nocen´ı v´ysledk˚u je ˇcas, pokud nedojde k poruˇsen´ı pravidel a t´ım i k diskvalifikaci.

2.1.2 Casovka ˇ

Casovka, ˇˇ ci j´ızda proti chronometru, je z´avod s individu´aln´ım startem. Trasa z´avodu je opˇet pevnˇe d´ana. Startuj´ıc´ı z´aroveˇn nesm´ı vyuˇz´ıvat bl´ızk´e j´ızdy za sv´ym soupeˇrem (j´ızdu v h´aku). V´ahov´y limit je stejn´y jako pro jin´e z´avody, nicm´enˇe je povolen´e pouˇz´ıvat speci´aln´ı vybaven´ı, kter´e je pro hromadn´e z´avody zak´azan´e[2]. Zejm´ena se jedn´a o aerodynamick´e helmy, n´astavce na ˇrid´ıtka a pˇr´ıpadnˇe i diskov´a kola.

2.1.3 Etapov´ e z´ avody

Etapov´y z´avod se skl´ad´a z nˇekolika etap. Etapa m˚uˇze b´yt jednor´azov´ym z´avodem s hromadn´ym startem, ale i t´ymovou ˇci individu´aln´ı ˇcasovkou. Obvykle se kon´a za jeden den pouze jedna etapa. Z´avody se v´yraznˇe liˇs´ı i svou d´elkou, na ˇcesk´em ´uzem´ı

(22)

se napˇr´ıklad kon´a 4-etapov´y Czech Cycling Tour. Nejdelˇs´ı ale i nejzn´amˇejˇs´ı jsou tˇr´ıt´ydenn´ı etapov´e z´avody Tour de France, Giro d’ Italia a Vuelta.

2.1.4 Problematika predikce v´ ysledk˚ u

V silniˇcn´ı cyklistice nast´av´a nˇekolik probl´em˚u z pohledu predikce v´ysledk˚u, se kter´ymi se v jin´ych sportech nesetk´ame, nebo jen v mal´e m´ıˇre. Z´avodn´ık˚um se, podobnˇe jako v jin´ych odvˇetv´ıch, v pr˚ubˇehu sez´ony podstatnˇe mˇen´ı jejich kondice. Oproti ostatn´ım sport˚um je vˇsak velmi sloˇzit´e odhadnout z´avodn´ıkovu formu jednoduch´ym pohledem na v´ysledky. V´ysledek z´avodu totiˇz m˚uˇze v´yraznˇe ovlivnit defekt v nevhodnou chv´ıli, ale zejm´ena pozice z´avodn´ıka v t´ymu. Pokud se jezdec v z´avodˇe vyskytuje v pozici domestika, tak i pˇres jeho moˇznou velice dobrou formu, v´ysledek nebude odpov´ıdat skuteˇcn´ym moˇznostem z´avodn´ıka. Nˇekteˇr´ı jezdci tak´e smˇeˇruj´ı svou formu pouze k urˇcit´emu z´avodu. Zejm´ena se jedn´a o z´avodn´ıky, kteˇr´ı se specializuj´ı na tˇr´ıt´ydenn´ı etapov´e z´avody.

(23)

3 V´ ykon cyklisty

V´ykon cyklisty hraje v silniˇcn´ı cyklistice z´asadn´ı roli. Na jeho z´akladˇe se budeme snaˇzit v dalˇs´ıch kapitol´ach zjistit n´aroˇcnost ter´enu a jeho vhodnost pro urˇcit´e typy z´avodn´ık˚u. Pˇri v´ypoˇctu v´ykonu zanedb´ame ztr´aty pˇri pˇrenosu s´ıly. Celkov´y v´ykon se skl´ad´a z nˇekolika z´akladn´ıch sloˇzek a je d´an jako

P = PA+ PS+ PR+ PB+ Pacc, (3.1) kde jednotliv´e sloˇzky vyjadˇruj´ı potˇrebn´y v´ykon k pˇrekon´an´ı odporu vduchu (PA), odporu sklonu vozovky (PS), valiv´eho odporu (PR), odporu nerovnost´ı (PB) a zrych- len´ı (Pacc)[4].

Odpor vzduchu hraje v cyklistice zcela z´asadn´ı roli. Pr˚umˇern´e rychlosti se bˇehem z´avod˚u pohybuj´ı okolo 40 kmh−1, takˇze se jiˇz nejedn´a o lamin´arn´ı, ale o turbulentn´ı proudˇen´ı. Sloˇzku tohoto v´ykonu spoˇcteme jako

PA= 1

2Cv3Sρ, (3.2)

kde C je souˇcinitel odporu vzduchu, S pˇredstavuje pr˚uˇrez cyklisty, v jeho rychlost a hustota vzduchu je pak oznaˇcena symbolem ρ.

Pacc oznaˇcuje v´ykon potˇrebn´y ke zrychlen´ı, nebo zpomalen´ı, a je roven Pacc = mef fav, kde a pˇredstavuje zrychlen´ı ze z´avodn´ıkovi rychlosti v a mef f je hmota, kter´a tomuto zrychlen´ı podl´eh´a.

V´ykon, vynaloˇzen´y na pˇrekon´an´ı gravitaˇcn´ı s´ıly, hraje roli zejm´ena v kopc´ıch, kde ho z´avodn´ık mus´ı pˇrekon´avat, respektive jej vyuˇzije pˇri sjezdu, kdy ho naopak zrychluje a je d´an

PS = mgslv, sl ∈ h−1, 1i, (3.3) kde m je hmotnost z´avodn´ıka s kolem, sl pˇredstavuje okamˇzit´y sklon vozovky.

Pr˚umˇern´y sklon vozovky pak vypoˇcteme jako pod´ıl mezi nastoupanou v´yˇskou a ujetou vzd´alenost´ı.

(24)

V´ykon, potˇrebn´y k pˇrekon´an´ı valiv´eho odporu, spoˇcteme jako PR = mgCRv, kde m je opˇet hmotnost z´avodn´ıka vˇcetnˇe jeho bicyklu, g gravitaˇcn´ı zrychlen´ı a v z´avodn´ıkova rychlost. CRz´avis´ı na tlaku a materi´alu pneumatik, v silniˇcn´ı cyklistice se tato hodnota pohybuje okolo 0.003. Odpor, vznikaj´ıc´ı nerovnostmi povrchu, b´yv´a ve vˇetˇsinˇe silniˇcn´ıch z´avod˚u velmi zanedbateln´y. V´yjimku by tvoˇrily z´avody s pave sektory. V´ypoˇcet by vˇsak byl zˇrejmˇe velmi n´aroˇcn´y a nepˇresn´y, jelikoˇz velmi z´avis´ı na drobn´ych detailech na trase a tak´e na materi´alu a vzorku pneumatik. Z tˇechto d˚uvodu se tento faktor zanedb´av´a a ani neexistuje pˇresnˇe stanoven´y vzorec pro jeho v´ypoˇcet [4].

Po vyj´adˇren´ı vˇsech sloˇzek a dosazen´ı, z´ısk´ame v´ysledn´y v´ykon cyklisty P = {1

2Cv2Sρ + mg(sl+ 0, 003) + mef fa}v. (3.4) Casto se setk´ˇ ame se situac´ı, kdy je nezn´amou rychlost z´avodn´ıka, naopak zn´ame v´ykon a vˇsechny ostatn´ı koeficienty v rovnici. Z´ısk´ame tedy kubickou rovnici ve tvaru

CSρv3+ (mg(sl+ 0, 003) + mef fa)v − 2P = 0. (3.5) Jelikoˇz nenast´av´a ˇz´adn´a okolnost, kter´a by usnadnila ˇreˇsen´ı t´eto rovnice, mus´ıme j´ı ˇreˇsit obecnˇe. V takov´em pˇr´ıpadˇe se rovnice tˇret´ıho ˇr´adu ˇreˇs´ı pomoc´ı Carda- nov´ych vzorc˚u [8]. V programovac´ım jazyce JAVA, pak tuto implementaci nalez- neme napˇr´ıklad v tˇr´ıdˇe EquationM anager z knihovny ixent a je dostupn´a pod licenc´ı GNU [9].

Obr´azek 3.1: Sloˇzky v´ykonu cyklisty

(25)

V grafu3.1 jsou zobrazeny jednotliv´e sloˇzky v´ykonu cyklisty v z´avislosti na jeho rychlosti dle vzorce (3.4) s volbou koeficient˚u CS = 0.356, hustoty vzduchu ρ = 1, 22kgm−3, hmotnost´ı jezdce vˇcetnˇe kola m = 70kg, norm´aln´ım t´ıhov´ym zrychlen´ım g a sklonem vozovky sl = 5%. M˚uˇzeme n´azornˇe vidˇet, ˇze pˇri niˇzˇs´ıch rychlostech je hlavn´ı sloˇzkou v´ykonu pr´avˇe odpor sklonu vozovky. Aˇz pˇri rychlosti nad 45 km/h zaˇc´ın´a v´ykon nejv´ıce ovlivˇnovat aerodynamick´y odpor.

3.1 Stanoven´ı koeficient˚ u z namˇ eˇ ren´ ych hodnot

Mark Cote provedl zaj´ımav´y test silniˇcn´ıho a ˇcasovk´aˇrsk´eho kola od firmy Specia- lized [3]. Testy byly provedeny na dr´aze a pak tak´e na bˇeˇzn´e silnici, bez v´yrazn´eho pˇrev´yˇsen´ı. Oba testy vykazuj´ı velmi podobn´e v´ysledky, kter´e potvrzuj´ı jejich spr´avnost.

V´ykony na dr´aze a na silnici (v bezvˇetˇr´ı) by mˇely b´yt velmi bl´ızk´e, jelikoˇz jedin´y rozd´ıl je v odporu, kter´y vznik´a vlivem nerovnost´ı vozovky. A ten je pˇri silniˇcn´ıch z´avodech velmi mal´y a obecnˇe se zanedb´av´a. Na dr´aze vˇsak nehraje roli v´ıtr, kter´y na bˇeˇzn´em prostranstv´ı m˚uˇze v pr˚ubˇehu ˇcasu mˇenit sv˚uj smˇer a proto budeme uvaˇzovat namˇeˇren´e hodnoty z dr´ahy. Pˇri pr˚umˇern´e rychlosti 40, 07kmh−1 musel z´avodn´ık na silniˇcn´ım kole vyprodukovat pr˚umˇern´y v´ykon 291,1 W. Na ˇcasovk´aˇrsk´em kole pak rychlosti 39, 92kmh−1 odpov´ıdal v´ykon jen 220,8 W.

Namˇeˇren´e hodnoty pouˇzijeme pro stanoven´ı koeficient˚u v rovnici (3.4). M´ame tedy zn´am´e hodnoty v podobˇe pr˚umˇern´e rychlosti a v´ykonu. Hmotnost kola s jezd- cem rovnici nikterak z´asadnˇe neovlivˇnuje, jelikoˇz test byl proveden na rovinat´em ter´enu. A tak hmotnost bude ovlivˇnovat pouze s´ılu z valiv´eho odporu a ta je pomˇernˇe n´ızk´a. Hmotnost tedy stanov´ıme na 80 kg, bˇehem testu byla namˇeˇrena pr˚umˇern´a teplota 31C a test prob´ıhal na dr´aze v Asheville, kter´y se nach´az´ı v nadmoˇrsk´e v´yˇsce 650 metr˚u. Za t´eto teploty a nadmoˇrsk´e v´yˇsky se hustota vzduchu ρ = 1, 078kgm−3. Test prob´ıhal za co moˇzn´a nejkonstantnˇejˇs´ı rychlosti, takˇze zrychlen´ı ze vzorce (3.4) zanedb´ame. D´ale pouˇzijeme norm´aln´ı t´ıhov´e zrychlen´ı, jelikoˇz se v z´avislosti na nadmoˇrsk´e v´yˇsce a poloze nikterak v´yraznˇe nemˇen´ı. Dosazen´ım tˇechto hodnot do vzorce (3.4) tedy snadno zjist´ıme hodnotu

CS = 2P − 0, 006mgv

v3ρ . (3.6)

Aˇckoliv nejsme schopni urˇcit obsah pr˚umˇetu cyklisty ve smˇeru p˚usoben´ı vˇetru (S)

(26)

a souˇcinitel odporu vzduchu (C), um´ıme urˇcit jejich souˇcin a takov´a hodnota je postaˇcuj´ıc´ı. V´yˇska i hmotnost z´avodn´ık˚u je rozd´ıln´a, ale jejich pr˚umˇet na bicyklu je relativnˇe podobn´y. CS pro silniˇcn´ı kolo je tedy 0,356, pro ˇcasovk´aˇrsk´y speci´al pak 0,265.

(27)

4 V´ ysledky z´ avod˚ u

4.1 Datov´ e zdroje

Mezin´arodn´ı cyklistick´a unie (UCI) ˇz´adn´e v´ysledky ve formˇe datab´az´ı, ˇci jin´ych da- tov´ych v´ystup˚u, jak´ymi jsou XM L ˇci J SON , veˇrejnˇe neposkytuje. Data sd´ıl´ı pouze s n´arodn´ımi federacemi a pˇr´ıpadnˇe ofici´aln´ımi sponzory, jak vyplynulo z probˇehl´e ko- munikace. Na jejich webov´ych str´ank´ach jsou v´ysledky pro n´avˇstˇevn´ıky samozˇrejmˇe dostupn´e, ale jsou plnˇe generovan´e pomoc´ı javascriptu, coˇz znemoˇzˇnuje ´uˇcinn´e stro- jov´e zpracov´an´ı. Dalˇs´ı alternativu z ofici´aln´ıch zdroj˚u pˇredstavuj´ı poˇradatel´e jednot- liv´ych z´avod˚u. Je zˇrejm´e, ˇze jejich data budou pravdˇepodobnˇe pod stejn´ymi pr´avy jako data UCI. Z´ısk´av´an´ı dat, ze str´anek jednotliv´ych z´avod˚u, je pak nemoˇzn´e z hle- diska obrovsk´e ˇcasov´e n´aroˇcnosti. Kaˇzd´y z´avod je jinak form´atov´an a bylo by nutn´e vytvoˇrit velk´e mnoˇzstv´ı program˚u pro stahov´an´ı potˇrebn´ych dat. Jedin´y pˇrijateln´y zdroj tedy tvoˇr´ı statistick´e servery. Opˇet sice neposkytuj´ı ˇz´adn´y pˇr´ım´y v´ystup s daty, ale je moˇzn´e vytvoˇrit vlastn´ı program, kter´y data ze serveru z´ısk´a. Program vˇsak bude pˇr´ımo z´avisl´y na form´atu webov´ych str´anek a v pˇr´ıpadˇe jak´ekoliv zmˇeny ze strany provozovatele, bude nutno velkou ˇc´ast vytvoˇren´eho programu na stahov´an´ı dat pˇrepsat. K t´eto situaci nakonec i doˇslo. Stejnˇe tak tomu bylo i v pˇr´ıpadˇe biat- lonov´ych v´ysledk˚u, kter´e pr´ace rovnˇeˇz vyuˇz´ıv´a.

4.2 Program pro stahov´ an´ı v´ ysledk˚ u

Zvolen byl statistick´y server procyclingstats.com, kter´y shromaˇzd’uje velk´e mnoˇzstv´ı cyklistick´ych v´ysledk˚u ,ale i startovn´ı listiny nadch´azej´ıc´ıch z´avod˚u. U mnoha z´avod˚u jsou k dispozici tak´e v´yˇskov´e profily z´avod˚u ve formˇe obr´azku. Server a jeho web je prim´arnˇe urˇcen pro n´avˇstˇevn´ıky a tak jeho v´ystup pˇredstavuje bˇeˇzn´a HTML str´anka.

(28)

Jiˇz bylo pˇredesl´ano, ˇze se form´at webu pˇri psan´ı diplomov´e pr´ace zmˇenil, pops´ana tedy bude jeho aktu´aln´ı podoba.

Program, stahuj´ıc´ı cyklistick´e v´ysledky, vyuˇz´ıv´a tˇr´ıdy z bal´ıˇcku system.imports (ImportF unction, U RLW orker) a jeho konkr´etn´ı implementace, kterou pˇredstavuje pˇredevˇs´ım tˇr´ıda CyclingImport se nach´az´ı v bal´ıˇcku individual.cycling.imports.

Stahov´an´ı dat ze serveru dan´y server samozˇrejmˇe vytˇeˇzuje a nav´ıc je ˇcasovˇe n´aroˇcn´e.

Casov´ˇ a n´aroˇcnost lze ˇreˇsit vyuˇzit´ım v´ıce vl´aken, ale v takov´em pˇr´ıpadˇe lze pˇredpokl´adat, ˇze server bude blokovat IP adresu, kterou vyuˇz´ıv´a n´aˇs program. Text konkr´etn´ı webov´e str´anky je stahov´an metodou getT ext tˇr´ıdy U RLW orker. Pˇri oslovov´an´ı serveru je nutn´e nastavit http hlaviˇcku prohl´ıˇzeˇce, jinak je poˇzadavek ze strany ser- veru zam´ıtnut. Zejm´ena pˇri v´yvoji, je nutn´e ˇcasto stahovat stejn´e str´anky. S ohle- dem na ˇcasovou n´aroˇcnost, ale i vyt´ıˇzen´ı serveru jsou staˇzen´e str´anky ukl´ad´any, a v pˇr´ıpadˇe poˇzadavku na st´ahnut´ı stejn´eho obsahu, jsou naˇcteny z lok´aln´ıho disku uˇzivatele.

4.2.1 St´ ahnut´ı v´ ysledk˚ u z´ avodu

Kaˇzd´y dostupn´y z´avod je um´ıstˇen na adrese http : //www.procyclingstats.com/race/race id, kde race id je identifik´ator dan´eho z´avodu. Server rovnˇeˇz podporuje i alternativn´ı

zp˚usob zad´an´ı z´avodu ve form´atu http : //www.procyclingstats.com/race.php?id = race id, coˇz bude pravdˇepodobnˇe poz˚ustatek star´e struktury webu, ale nen´ı pˇresmˇerov´av´an na novou adresu. Na tento fakt je tˇreba si d´avat pozor, ˇcasto bylo potˇreba z´ıskat da- nou adresu z´avodu a na serveru se objevuje pomˇernˇe nepochopitelnˇe v obou verz´ıch, proto je v programu internˇe pˇrepisov´ana na prvn´ı verzi, aby nedoˇslo k nˇejak´e z´amˇenˇe.

Obdobn´a situace se opakuje i u dalˇs´ıch stahovan´ych str´anek.

Pokud zn´ame race id m˚uˇzeme zaˇc´ıt stahovat danou str´anku a z n´ı zaˇc´ıt z´ısk´avat potˇrebn´e informace. K rozparserov´an´ı str´anky je pouˇzit HTML parser jsoup. K z´ısk´an´ı potˇrebn´ych v´ysledk˚u jsou tak´e hojnˇe vyuˇz´ıv´any regul´arn´ı v´yrazy. Z t´eto str´anky z´ısk´ame mimo v´ysledk˚u i d´elku a datum kon´an´ı z´avodu. D´ale lze zjistit o jak´y typ z´avodu se jedn´a, m´ıstu kon´an´ı, ˇci ˇc´ıslo etapy, v pˇr´ıpadˇe etapov´eho z´avodu. Pokud je k dispozici v´yˇskov´y profil z´avodu, je rovnˇeˇz k dispozici na specifick´em m´ıstˇe na t´eto str´ance, respektive jeho odkaz na pˇr´ımou adresu s obr´azkem. Zjiˇstˇen´ı, jestli se jedn´a o ˇcasovku, ˇci hromadn´y z´avod nen´ı ´uplnˇe spolehliv´e, jelikoˇz je zaloˇzeno na zjiˇst’ov´an´ı,

(29)

zda se v n´azvu etapy vyskytuje nˇekter´e slovo, kter´e je na tˇechto str´ank´ach spojeno s ˇcasovkou (ITT, Time Trial a dalˇs´ı). V´ysledky z´avodn´ık˚u se na str´ance nach´az´ı ve formˇe tabulky, kter´a je tvoˇrena pomoc´ı HTML znaˇcek typu div a span. U kaˇzd´eho z´avodn´ıka mohou b´yt uvedeny ´udaje o um´ıstˇen´ı, ˇcasu, n´azev t´ymu, ˇci bodech do celkov´eho poˇrad´ı ˇzebˇr´ıˇcku UCI. Tyto hodnoty nejsou uvedeny vˇzdy a mohou b´yt v r˚uzn´em poˇrad´ı, proto je tˇreba zjisti, o jak´a data se jedn´a nejdˇr´ıve z prvn´ıho ˇr´adku tabulky a n´aslednˇe pˇrizp˚usobit z´ısk´av´an´ı dat. Pokud bychom takto pˇr´ımo ukl´adali v´ysledky, hrozilo by, ˇze neidentifikujeme pˇresnˇe z´avodn´ıka, jelikoˇz existuje moˇznost v´ıce z´avodn´ık˚u stejn´eho jm´ena (vˇcetnˇe pˇr´ıjmen´ı). Jm´eno z´avodn´ıka vˇsak z´aroveˇn odkazuje i na str´anku s jeho detaily, kter´e m´a opˇet unik´atn´ı adresu a podle n´ı tedy jednoznaˇcnˇe rozpozn´ame konkr´etn´ıho z´avodn´ıka. Z detailn´ı str´anky o z´avodn´ıkovi ve tvaru http : //www.procyclingstats.com/rider/rider id, kde rider id je unik´atn´ı id z´avodn´ıka, nav´ıc zjist´ıme i datum narozen´ı z´avodn´ıka a jeho n´arodnost. Nˇekdy b´yv´a k dispozici i hmotnost a v´yˇska.

Aby mohl b´yt uveden´y postup efektivnˇe pouˇzit, potˇrebujeme zjistit identifik´atory z´avod˚u race id, coˇz lze z kalend´aˇre jednotliv´ych sez´on, kter´y je uveden na stejn´em serveru. Po zjiˇstˇen´ı z´avod˚u, jiˇz jen opakujeme v´yˇse popsan´y algoritmus, dokud nejsou uloˇzeny vˇsechny poˇzadovan´e z´avody.

Ukl´ad´an´ı dat

Pro ukl´ad´an´ı potˇrebn´ych dat byla vybr´ana datab´aze H2, d˚uvody pro jej´ı v´ybˇer byly jiˇz zm´ınˇeny dˇr´ıve. Vˇsechna data jsou ukl´ad´ana, po sesb´ır´an´ı vˇsech v´ysledk˚u o jednom z´avodu, v r´amci jedin´e transakce. V pˇr´ıpadˇe jak´ekoliv chyby, budou vˇsechna data z datab´aze vymaz´ana a postup se bude znovu opakovat.

Z ER diagramu 4.1 m˚uˇzeme vidˇet vˇsechny detaily jednotliv´ych tabulek. U ta- bulek racer a race existuje pˇrirozen´y prim´arn´ı kl´ıˇc id url, pˇresto je pouˇzit jako prim´arn´ı kl´ıˇc speci´aln´ı ˇc´ıseln´y identifik´ator. K tomuto kroku bylo s´ahnuto z d˚uvodu zbyteˇcn´eho n´ar˚ustu objemu dat, jelikoˇz ve v´ysledc´ıch potˇrebujeme tuto vazbu za- chovat. A zˇrejmˇe ˇc´ıseln´y identifik´ator zab´ır´a mnohem m´enˇe pamˇeti, neˇz ˇretˇezec o d´elce aˇz 100 znak˚u. Z´aroveˇn si potˇrebujeme uchovat i vazbu na strukturu serveru, ze kter´eho data stahujeme.

(30)

Obr´azek 4.1: ER Diagram cyklistick´ych dat

4.3 Objektov´ y n´ avrh statistik

Statistick´e modely potˇrebuj´ı k predikci v´ysledky pˇredch´azej´ıc´ıch z´avod˚u. V´ysledky se ukl´adaj´ı do datab´aze, ale pro pr´aci s modely je tˇreba je mapovat do objekt˚u. N´avrh je udˇel´an co nejobecnˇeji, aby bylo moˇzn´e vyuˇz´ıvat z´akladn´ı funkcionalitu spoleˇcnˇe pro r˚uzn´a sportovn´ı odvˇetv´ı a tak´e vytv´aˇret obecn´e modely pracuj´ıc´ı s obecnou v´ysledkovou vrstvou, spoleˇcnou pro v´ıce sportovn´ıch odvˇetv´ı. Obecn´y objektov´y n´avrh je um´ıstˇen v bal´ıˇcku system.statistics, konkr´etn´ı implementace je n´aslednˇe u kaˇzd´eho sportovn´ıho odvˇetv´ı ve vlastn´ım bal´ıˇcku.

Na obr´azku 4.2 vid´ıme diagram tˇr´ıd, kter´y je spoleˇcn´y pro vˇsechny sportovn´ı odvˇetv´ı z kategorie z´avod˚u. Abstraktn´ı tˇr´ıda A P erson vytv´aˇr´ı z´aklad spoleˇcn´y pro vˇsechny z´avodn´ıky, kteˇr´ı od n´ı dˇed´ı, a obsahuje z´akladn´ı ´udaje, jak´ymi jsou n´arodnost, datum narozen´ı, pohlav´ı, jm´eno a nepovinn´e ´udaje o v´yˇsce a hmotnosti.

Tˇr´ıda RacerStartAlocation obsahuje z´akladn´ı ´udaje o startovn´ı pozici z´avodn´ıka, kter´ymi m˚uˇze b´yt ˇcas startu, ˇci jeho pozice nebo ztr´ata na prvn´ıho startuj´ıc´ıho.

Startovn´ı listina, kterou pˇredstavuje abstraktn´ı generick´a tˇr´ıda A StartList, obsa- huje u kaˇzd´eho z´avodn´ıka (libovoln´eho potomka tˇr´ıdy A P erson) jeho startovn´ı po- zici (potomka RacerStartAlocation). Tˇr´ıda A RacerResult pˇredstavuje v´ysledky z´avodn´ıka v r´amci vybran´eho z´avodu a mus´ı implementovat metody dan´e roz-

(31)

hran´ım I Result. Um´ıstˇen´ı z´avodn´ıka m˚uˇze b´yt dˇelen´e, a z´avodn´ık rovnˇeˇz nemus´ı z´avod dokonˇcit, b´yt diskvalifikov´an, nebo do z´avodu neodstartuje. Tuto funkcio- nalitu zajiˇst’uje tˇr´ıda P osition. V´ysledky cel´eho z´avodu jsou pak obsaˇzeny tˇr´ıdou A RaceResults, kter´a ke kaˇzd´emu z´avodn´ıkovi (potomek A P erson) uchov´av´a jeho v´ysledky.

Obr´azek 4.2: Objektov´y n´avrh v´ysledk˚u z´avodu

Pˇr´ıstup ke vˇsem v´ysledk˚um zprostˇredkov´av´a abstraktn´ı tˇr´ıda A Statistics, kter´a opˇet vyuˇz´ıv´a genericity a pracuje s potomky tˇr´ıd A RaceResults, A P erson a roz- hran´ı I Race. Tato tˇr´ıda se statistikami umoˇzˇnuje naˇc´ıst v´ysledky podle zvolen´eho data z datab´aze. D´ale vrac´ı seˇrazen´a data z´avod˚u (sestupnˇe i vzestupnˇe), pˇr´ıpadnˇe um´ı poskytnout z´avody dle data a samozˇrejmˇe v´ysledky po zad´an´ı konkr´etn´ıho z´avodu. Statistiky, stejnˇe jako nˇekter´e dalˇs´ı uveden´e tˇr´ıdy, vyuˇz´ıvaj´ı haˇsovac´ı mapy pro pˇr´ıstup k poˇzadovan´ym dat˚um.

(32)

4.4 Profil trasy

Profil trasy je velmi d˚uleˇzit´y k z´uˇzen´ı favorit˚u na v´ıtˇezstv´ı v z´avodˇe. Z´ısk´an je ve formˇe obr´azku a je ukl´ad´an do souborov´eho adres´aˇre, nyn´ı je potˇreba z nˇej z´ıskat co nejpˇresnˇejˇs´ı data o sklonu vozovky v aktu´aln´ıch ´usec´ıch.

Obr´azek je naˇcten pomoc´ı knihovny opencv, kter´a tak´e poskytuje n´astroje pro pr´aci s n´ım. A je definov´an jako matice s rozmˇery kwidth(ˇs´ıˇrka obr´azku) x kheight(v´yˇska obr´azku), jej´ıˇz prvky tvoˇr´ı pixely. Tato matice je reprezentov´ana tˇr´ıdou M at. Kaˇzd´y pixel po naˇcten´ı m˚uˇze b´yt vyj´adˇren v r˚uzn´ych barevn´ych form´atech.

Profil se ve vˇetˇsinˇe pˇr´ıpad˚u vyznaˇcuje urˇcitou barvou, kter´a je sice v kaˇzd´em obr´azku r˚uzn´a, nicm´enˇe v r´amci jednoho b´yv´a obvykle pouze jedna. ´Upln´a automa- tizace prakticky moˇzn´a nen´ı, jelikoˇz jsou potˇreba zjistit ´udaje o nadmoˇrsk´e v´yˇsce a ty lze z obr´azku pˇreˇc´ıst jen velice obt´ıˇznˇe. Nicm´enˇe graf si zachov´av´a stejn´e mˇeˇr´ıtko, proto n´am staˇc´ı zjistit 2 body, kter´e nemaj´ı stejnou nadmoˇrskou v´yˇsku a n´aslednˇe lze velice jednoduˇse ostatn´ı body jiˇz dopoˇc´ıtat. Proto se uˇzivateli zobraz´ı obr´azek, z kter´eho n´aslednˇe zad´a 2 poˇzadovan´e body. Jelikoˇz je nutn´y tento z´asah uˇzivatele, kter´y znemoˇzn´ı plnˇe automatick´e zpracov´an´ı, jiˇz nepˇredstavuje velk´y probl´em, po- kud na obsluze nech´ame i jeden dalˇs´ı krok, kter´ym je zad´an´ı barvy profilu trasy. Toto zad´an´ı provede velice jednoduˇse kliknut´ım na obr´azek, ze kter´eho je barva vybr´ana podle pixelu, na kter´em doˇslo k ud´alosti kliknut´ı myˇs´ı.

V programu je zabudovan´e i automatick´e detekov´an´ı, kter´e vyhodnot´ı jako barvu profilu takovou, kter´a je nejˇcetnˇejˇs´ı, pˇriˇcemˇz b´ıl´a barva je vyˇrazena, jelikoˇz pomoc´ı n´ı profil obvykle vyznaˇcen nen´ı. ´Uspˇeˇsnost t´eto automatick´e detekce vˇsak nen´ı pˇr´ıliˇs vysok´a a vzhledem k v´yˇse uveden´emu je zad´an´ı ponech´ano pˇredevˇs´ım na obsluze programu.

Nejsloˇzitˇejˇs´ım probl´emem je nalezen´ı pixel˚u, kter´e oznaˇcuj´ı v´yˇskov´y profil z´avodu.

K jejich nalezen´ı bylo vytvoˇreno nˇekolik metod, kter´e se z´aroveˇn i doplˇnuj´ı.

4.4.1 Sloupcov´ a detekce

V kaˇzd´em sloupci pixel˚u, kter´y pˇredstavuje v´yˇskov´y profil, mus´ıme oznaˇcit jeden, kter´y pˇredstavuje nadmoˇrskou v´yˇsku. Jelikoˇz barevn´a plocha zv´yraznˇen´eho profilu nem´a naprosto stejnou barvu, nen´ı moˇzn´e pˇr´ımo porovn´avat hodnoty z RGB modelu.

(33)

K vyhled´an´ı podobn´ych barev vyuˇzijeme gamut Lab, do kter´eho je nutn´e obr´azek nejprve pˇrev´est. Mˇejme vybranou barvu, kter´a je d´ana vektorem c1 = (L1, a1, b1).

Tuto barvu potˇrebujeme porovnat s aktu´alnˇe vybran´ym pixelem z obr´azku, coˇz provedeme pomoc´ı podm´ınky

d(c1, c2) ≤ kcolor, kcolor ∈ h0, 1i, (4.1) kde c2 je vektor z Lab prostoru a oznaˇcuje barvu aktu´alnˇe porovn´avan´eho pixelu a d(c1, c2) je vzd´alenost barev dan´a rovnic´ı

d(c1, c2) =p

(L2− L1)2+ (a2− a1)2+ (b2− b1)2. (4.2) Konstanta kcolor je pak nastavena na hodnotu 0.1 ale uˇzivatel j´ı m˚uˇze za bˇehu pro- gramu libovolnˇe mˇenit. C´ılem je nal´ezt v kaˇzd´em sloupci v´yˇsku vyznaˇcen´eho pro- filu. Algoritmus pro stanoven´ı hledan´eho pixelu, kter´y zn´azorˇnuje n´ami hledanou nadmoˇrskou v´yˇsku, je tedy nez´avisl´y na ostatn´ıch sloupc´ıch a proto bude nast´ınˇen pouze pro vybran´y sloupec.

Metoda zdola nahoru

Zaˇcneme od nejspodnˇejˇs´ıho pixelu v r´amci sloupce hledat prvn´ı pixel, kter´y spln´ı podm´ınku ze vztahu (4.1). Tento pixel budeme tak´e oznaˇcovat jako detekˇcn´ı, v r´amci t´eto metody pˇredstavuje nutnou, ale nikoliv postaˇcuj´ıc´ı podm´ınku, pro na- lezen´ı v´yˇsky v sloupci. Pokud se nepodaˇrilo naj´ıt ˇz´adn´y pixel, pak je hodnota v tomto sloupci nezn´am´a. V opaˇcn´em pˇr´ıpadˇe pokraˇcujeme na vyˇsˇs´ı, dokud je splnˇena podm´ınka (4.1). Pˇri jej´ım prvn´ım nesplnˇen´ı jsme nalezli v´yˇsku profilu, kter´a se nach´az´ı na pˇredch´azej´ıc´ım pixelu. V tomto pˇr´ıpadˇe hovoˇr´ıme o zastavovac´ıch pixe- lech.

V pˇr´ıpadˇe ide´aln´ıho obr´azku by tento n´avrh mˇel b´yt spr´avn´y. Poˇcet pixel˚u ve sloupci, kter´e by mˇely b´yt detekov´any jako stejn´a barva, je obvykle vysok´y. A je- likoˇz nejsou obr´azky zdaleka ide´aln´ı, tak i jedin´y chybn´y pixel, m˚uˇze zp˚usobit velk´e nepˇresnosti. Tento probl´em lze ´uspˇeˇsnˇe vyˇreˇsit pozmˇenˇen´ım algoritmu tak, ˇze po vyhled´an´ı pixel˚u s c´ılovou barvou nestaˇc´ı ke stanoven´ı v´yˇsky pouze prvn´ı nesplnˇen´ı n´ami popsan´e podm´ınky o hled´an´ı barev. Naopak budeme vyˇzadovat nesplnˇen´ı v kadd ∈ N, kadd > 2 po sobˇe jdouc´ıch pixelech. Pˇri stanoven´ı pozice pixelu, kter´y

(34)

oznaˇcuje v´yˇsku, je nutn´e odeˇc´ıst novˇe zavedenou konstantu kadd, jelikoˇz se jedn´a jiˇz o pixely jin´e barvy. Funkci, kter´a provede tento v´ypoˇcet pro x-t´y sloupec budeme znaˇcit pup(x) ∈ {0, ..kheight− 1}, x ∈ {0, ..kwidth− 1}

Metoda shora dol˚u

Pro vybran´y sloupec stanov´ıme v´yˇsku, jako pixel, kter´y jako prvn´ı spln´ı podm´ınku (4.1). Pˇri tomto hled´an´ı postupujeme od horn´ıho pixelu. Obdobnˇe jako u metody zdola nahoru vyuˇzijeme vˇetˇs´ı poˇcet zastavovac´ıch pixel˚u, kter´e mus´ı n´asledovat po sobˇe. Nicm´enˇe toto zlepˇsen´ı zde nen´ı tak nutn´e jako u metody pˇredch´azej´ıc´ı. D˚uvod je zˇrejm´y, obvykle se jedn´a o chybu v obr´azku a pravdˇepodobnost, ˇze pixel obsahuje n´ami vybranou barvu, nebo podobnou dle nastaven´ych krit´eri´ı, je menˇs´ı, neˇz ˇze obsahuje jakoukoliv barvu jinou. Stejnˇe jako u pˇredch´azej´ıc´ı metody oznaˇc´ıme v´yˇsku hledan´eho pixelu v x-t´em sloupci pdown(x) ∈ {0, ..kheight−1}, x ∈ {0, ..kwidth−1}

Kombinovan´a metoda

V´yˇse uveden´e metody jsou navrˇzen´e tak, ˇze by mˇely b´yt ekvivalentn´ı a v pˇr´ıpadˇe ide´aln´ıho obr´azku v´yˇskov´eho profilu tak´e jsou. Nicm´enˇe profily jsou velmi r˚uznorod´e a kaˇzd´a z metod m´a sv´e v´yhody.

Obˇe strategie jsou problematick´e v pˇr´ıpadˇe, ˇze se v obr´azku vyskytuje stejn´a barva, kter´a oznaˇcuje v´yˇskov´y profil i pro jin´e ´uˇcely. M˚uˇze j´ım b´yt textov´y popis, ˇci zv´yraznˇen´ı nˇejak´e pr´emie. Vhodnou kombinac´ı tˇechto metod m˚uˇzeme probl´em odstranit.

Za vˇerohodnˇe stanovenou v´yˇsku metodou shora pup(x) a metodou zdola pdown(x) pro x-t´y sloupec prohl´as´ıme x-t´y sloupec, kter´y spln´ı podm´ınku

|pdown(x) − pup(x)| ≤ krelativekheight, x ∈ {0, ..kwidth−1}, krelative ∈ h0, 1i, (4.3) a pro usnadnˇen´ı si tak´e nadefinujeme funkci

p(x) =

1, |pdown(x) − pup(x)| ≤ krelativekheight

0, ostatn´ı

(4.4)

kde krelative je relativn´ı velikost moˇzn´e chyby, a byla zvolena hodnota krelative = 0.05. Porovn´an´ım v´ysledk˚u, z dvou rozd´ıln´ych metod, prakticky vylouˇc´ıme moˇznost

(35)

nalezen´ı podobn´e barvy, kter´a vˇsak nepˇredstavuje v´yˇsku z´avodu. Tato metoda bude m´ıt za d˚usledek ˇcastˇeji nestanovenou v´yˇsku v r´amci vybran´eho sloupce, avˇsak spo- lehlivost spr´avnˇe stanoven´eho pixelu bude vyˇsˇs´ı.

Stanoven´ı souˇradnice vˇerohodn´eho pixelu

Kombinaci metod budeme vyuˇz´ıvat jen pro stanoven´ı x-ov´e souˇradnice vˇerohodn´eho pixelu, coˇz je takov´a souˇradnice, o kter´e lze s velkou pravdˇepodobnost´ı prohl´asit, ˇze jej´ı v´yˇsku lze velmi pˇresnˇe urˇcit z´akladn´ımi metodami shora a zdola. U takov´e souˇradnice pak lze stanovit tˇemito metodami, prakticky bez rizika chyby, hledanou v´yˇsku a tu pak vyuˇz´ıt v metod´ach s omezen´ım. Pokud bychom stanovili vˇerohodnou souˇradnici pˇri prvn´ı splnˇen´e podm´ınce (4.3) st´ale by existovalo riziko, ˇze nebyla zvo- lena spr´avnˇe. Profil trasy se zejm´ena nenach´az´ı na cel´e jeho ˇs´ıˇrce. Takˇze se pokus´ıme rizikov´ym oblastem obr´azku, pokud to bude moˇzn´e, vyhnout.

K doc´ılen´ı spolehliv´ych v´ysledk˚u cel´y obr´azek rozdˇel´ıme na t ˇc´ast´ı podle osy x, budeme tedy hledat v menˇs´ıch intervalech. Mnoˇziny x-ov´ych souˇradnic Ti jsou tedy d´any jako

Ti = {b(kwidth− 1)(i − 1)

t c, d(kwidth− 1)(i)

t e}, i ∈ {1, ..t}, ∀|Ti| ≥ k2, k2 ∈ 2n+1, n ∈ N, (4.5) kde k2 je poˇcet po sobˇe jdouc´ıch x-ov´ych souˇradnic v intervalu Ti, pro kter´e mus´ı platit (4.3). Prostˇredn´ı z tˇechto k2 souˇradnic pˇredstavuje n´ami hledanou v´ychoz´ı souˇradnici, kter´a je d´ale pouˇz´ıv´ana. Pro zv´yˇsen´ı d˚uvˇeryhodnosti cel´e mnoˇziny Ti zavedeme podm´ınku

P|Ti|

j=1p(Ti,j)

|Ti| < k3, k3 ∈ h0, 1i (4.6) kde k3je relativn´ı ´uspˇeˇsnost urˇcuj´ıc´ı podobnost stanoven´ı pixelu pomoc´ı dvou rozd´ıln´ych metod na dan´e mnoˇzinˇe x-ov´ych souˇradnic.

Poˇcet souˇradnic, kter´e by splnily uveden´e podm´ınky m˚uˇze b´yt velmi rozs´ahl´y.

K dalˇs´ımu postupu vˇsak potˇrebujeme pouze jedinou a tak vybereme prvn´ı, kter´a krit´eria spln´ı. Abychom nejprve vyhled´avali mezi nejlepˇs´ımi kandid´aty na stano- ven´ı vˇerohodn´e souˇradnice, budeme prohled´avat mnoˇziny Ti v n´asleduj´ıc´ım poˇrad´ı {Tb|T |

2 c, Tb|T |

2 c+1, Tb|T |

2 c−1, .., Tt, T1}.

(36)

Omezen´ı metod

Metoda shora i zdola trp´ı z´asadn´ım probl´emem, kter´y spoˇc´ıv´a v moˇzn´em zanesen´ı podobn´e barvy do obr´azku nesouvisej´ıc´ı s profilem trasy. V´yraznˇe vylepˇsit lze tak, ˇze se omez´ı hled´an´ı, v sloupci pixel˚u, jen na urˇcitou ˇc´ast. Pokud nebudeme prohled´avat oblasti, kter´e jistˇe nemohou obsahovat hledanou v´yˇsku, vyhneme se potenci´alnˇe moˇzn´ym chyb´am. Potˇrebujeme tedy co nejv´ıce z´uˇzit mnoˇzinu sloupce, kde hled´ame.

Z´aroveˇn se, ale nesm´ı mnoˇzina zmenˇsit pˇr´ıliˇs, mohli bychom i ´uplnˇe vynechat hledan´y pixel.

U z´akladn´ıch metod operujeme v kaˇzd´em sloupci s mnoˇzinou P0 = {0, 1, ..kheight− 1}. Tuto mnoˇzinu, vˇsak bez jak´ychkoliv dalˇs´ıch znalost´ı, z´uˇzit nelze. Z praktick´eho hlediska vˇsak v´ıme, ˇze vozovka vytv´aˇr´ı prakticky spojitou funkci a jej´ı sklon, jistˇe nem˚uˇze b´yt vˇetˇs´ı neˇz 30%. Takov´e silnice se zkr´atka obvykle v˚ubec nebuduj´ı, v silniˇcn´ı cyklistice se na tento ´udaj m˚uˇzeme pomˇernˇe dobˇre spolehnout. V obr´azku vˇsak pracujeme pouze s pixely a tak´e se zde vyskytuj´ı urˇcit´e chyby. Z´aroveˇn m˚uˇze b´yt profil v r˚uzn´em pomˇeru os x a y.

Pokud m´ame tedy danou pozici pixelu P1 = [x1, y1], m˚uˇzeme podle naˇseho pˇredpokladu tvrdit, ˇze pixel P2 = [x2, y2] bude m´ıt souˇradnici y2omezenou podm´ınkou

y1− |x1− x2|kmultiple≤ y2 ≤ y1 + |x1− x2|kmultiple, (4.7) kde kmultiple je koeficient moˇzn´e zmˇeny v ose y v z´avislosti na ose y. Zav´ad´ıme tedy omezen´ı na jin´em sloupci, ide´alnˇe s co moˇzn´a nejbliˇzˇs´ı souˇradnic´ı na ose x. Tato z´avislost je jedin´ym rozd´ılem oproti metod´am, kter´e jsou pops´any v´yˇse. Metoda shora s omezen´ım zˇrejmˇe mus´ı zaˇc´ınat na souˇradnici y2 = y1+ |x1 − x2|kmultiple+ kdetect, kde kdetect oznaˇcuje poˇcet detekˇcn´ıch pixel˚u. Metoda zdola pak zaˇc´ın´a na souˇradnici y2 = y1− |x1− x2|kmultiple− kdetect

Pokroˇcil´e metody s omezen´ım nejprve stanov´ı v´ychoz´ı(vˇerohodn´y) pixel Pv = (xv, yv) a d´ale pokraˇcuj´ı na pixel Pv+1 = [xv + 1, yv + 1], kde se pomoc´ı omezen´e metody shora ˇci zdola urˇc´ı yv+1. Obdobn´ym zp˚usobem se d´ale pokraˇcuje na dalˇs´ı pixely, dokud nenaraz´ıme na posledn´ı souˇradnici na ose x. Omezuj´ıc´ı podm´ınka se aplikuje pro nejbliˇzˇs´ı zjiˇstˇen´y pixel. Takto jsme urˇcili vˇsechny hledan´e pixely pravostrann´e ˇrady x-ov´ych souˇradnic Xr = {xv, xv+1, xv+2, ..xkwidth−1}. Stejn´ym

(37)

postupem urˇc´ıme i postupnˇe y-ov´e souˇradnice k pixel˚um s x-ov´ymi souˇradnicemi Xl = {xv, xv− 1, xv − 2, .., x0}.

Ve v´ychoz´ı implementaci jsou zvoleny konstanty kdetect = 10, kmultiple = 5, kter´e bezpeˇcnˇe zaruˇc´ı moˇznost naj´ıt hledan´y pixel. Metody s omezen´ım nejprve potˇrebuj´ı naj´ıt vˇerohodn´y pixel, coˇz je pomˇernˇe v´ypoˇcetnˇe n´aroˇcn´y algoritmus. Pˇresto jsou d´ıky omezen´ı, celkovˇe rychlejˇs´ı neˇz metody z´akladn´ı, a z´aroveˇn maj´ı schopnost l´epe rozpoznat hledan´y profil trasy. Drobnou nev´yhodou je nutnost pˇresnˇejˇs´ıho nastaven´ı limitu barev, kter´e jsou rozpozn´av´any pˇri stanoven´ı vˇerohodn´eho pixelu.

4.4.2 Hranov´ a detekce

Navrˇzen´a metoda sloupcov´e detekce vykazuje ve velk´em mnoˇzstv´ı pˇr´ıpad˚u velice dobr´e v´ysledky, v nˇekter´ych vˇsak selh´av´a. Jiˇz u sloupcov´e detekce byla zavedena z´avislost na ostatn´ıch sloupc´ıch, jelikoˇz nadmoˇrsk´a v´yˇska silnice v obr´azku pˇredstavuje hranu. Nab´ız´ı se tedy moˇznost vyuˇz´ıt detekci hran, kter´a je v oblasti rozpozn´av´an´ı obrazu velmi dobˇre zn´ama.

Potˇrebujeme z´ıskat hrany z obr´azku, kter´y zn´azorˇnuje profil z´avodu. Hrany sta- nov´ıme pomoc´ı Cannyho detektoru, kter´y se skl´ad´a ze 4 z´akladn´ıch krok˚u. Nejprve eliminuje ˇsum pomoc´ı Gaussova filtru, n´aslednˇe se stanov´ı gradient, naleznou lok´aln´ı maxima a nakonec se eliminuj´ı nev´yznamn´e hrany. K realizaci v programovac´ım ja- zyce vyuˇzijeme knihovnu OpenCV . Vstupn´ı obr´azek nejprve pˇrevedeme do odst´ın˚u ˇsedi, pomoc´ı funkce cvtColor. N´aslednˇe jej pomoc´ı funkce blur vyhlad´ıme filtrem o velikosti 3 x 3. A na konec pouˇzijeme funkci Canny, kter´a vytvoˇr´ı hrany podle Can- nyho detektoru. Uveden´y postup je volen pˇresnˇe dle tutori´alu vyuˇzit´e knihovny [18].

Velmi d˚uleˇzit´a je volba horn´ıho a doln´ıho prahu pro detektor. Tato volba v´yraznˇe ovlivˇnuje mnoˇzstv´ı detekovan´ych hran. Na obr´azku 4.3 vid´ıme v´ysledek detekce v pˇr´ıpadˇe velmi n´ızk´eho prahu. Doˇslo tedy k nalezen´ı velk´eho poˇctu hran, i takov´ych, kter´e profil v˚ubec nevyznaˇcuj´ı. N´asledn´e odhalen´ı spr´avn´e hrany by tak bylo velmi sloˇzit´e.

Na obr´azku 4.4 naopak vid´ıme vhodnˇe zvolen´y prah, kter´y poˇcet hran velmi omezil. Pˇrestoˇze se jedn´a o ide´aln´ı obr´azek, s velmi vhodnˇe zvolen´ym prahem pro detekci hran, st´ale byly nalezeny i takov´e hrany, kter´e nepˇredstavuj´ı v´yˇskov´y profil trasy. K ide´aln´ımu pˇr´ıpadu, kdy by byly nalezeny jen hrany pˇredstavuj´ıc´ı hledan´y

(38)

Obr´azek 4.3: Pˇr´ıliˇs n´ızk´y prah pro detekci hran

Obr´azek 4.4: Vhodnˇe zvolen´y prah pro detekci hran profil, vˇsak prakticky nikdy nedoch´az´ı.

Detekovan´e hrany m´ame nyn´ı uloˇzeny v matici, kterou pˇredstavuje tˇr´ıda M at a m´a rozmˇery identick´e vstupn´ımu obr´azku, z nˇehoˇz jsou hrany vytvoˇreny. Hodnoty v x-t´em ˇr´adku a y-t´em sloupci t´eto matice jsou d´any funkc´ı m(x, y) ∈ {0, 1}. V pˇr´ıpadˇe, ˇze m(x, y) = 1 byla na y-t´em sloupci a x-t´em ˇr´adku detekov´ana hrana.

Nalezen´ı spr´avn´e hrany zˇrejmˇe, bez dalˇs´ıch znalost´ı, nen´ı moˇzn´e. Automatick´a detekce i vzhledem k dalˇs´ım okolnostem, jiˇz byla dˇr´ıve vylouˇcena. Nech´ame tedy uˇzivatele vybrat spr´avnou hranu manu´alnˇe. Uˇzivatel bude vyzv´an, aby myˇs´ı vybral pixel z obr´azku, kter´y je souˇc´ast´ı hledan´e hrany. Pixel bude m´ıt souˇradnice xc ∈ {0, ..klength− 1}, yc∈ {0, ..kheight− 1}. M´ame tedy pˇredpoklad, ˇze hledan´a hrana by se mˇela nach´azet velmi bl´ızko souˇradnic´ım xc, yc.

Nadefinujme si funkci, kter´a hled´a nejbliˇzˇs´ı hranu v r´amci vybran´eho sloupce fe(x, y, xlast, k), kde (x, y) jsou souˇradnice, kde pˇredpokl´ad´ame hledanou hranu a

(39)

xlast je x-ov´a souˇradnice poslednˇe nalezen´e hrany a k je koeficient omezuj´ıc´ı hled´an´ı hrany. Funkce bude vracet y-ovou souˇradnici yf, kde yf bude prvn´ı souˇradnice, kter´a spln´ı podm´ınku m(x, yh) = 1, ve kter´e je dosazov´ano v dan´em poˇrad´ı yh ∈ {y, y + 1, y − 1, y + 2, y − 2, ..}, 0 ≤ yh ≤ kheight− 1&|yh− y| ≤ |x − xlast|k.

Vyjdˇeme tedy ze souˇradnic (xc, yc) k nim nalezneme prvn´ı skuteˇcnou polohu hrany (xc, fe(xc, yc, xc− 1)). Pokud funkce fe uspˇ´ eˇsnˇe nalezla hranu, budeme po- kraˇcovat ve zjiˇst’ov´an´ı dalˇs´ı souˇradnice a bude m´ıt hodnotu (xc+1, fe(xc, fe(xc, yc, xc− 1), xc)), v opaˇcn´em pˇr´ıpadˇe pokraˇcujeme tak´e, ale posledn´ı ´uspˇeˇsnˇe vyhledan´a souˇradnice z˚ust´av´a p˚uvodn´ı, takˇze n´asleduj´ıc´ı poloha bude m´ıt souˇradnice (xc+ 1, fe(xc, yc, xc− 1)). Stejn´ym zp˚usobem vyhled´ame i vˇsechny n´asleduj´ıc´ı souˇradnice. Z´ısk´ame tak vˇsechny souˇradnice vpravo od prvn´ıho vyhledan´eho pixelu. Od v´ychoz´ıho pixelu n´aslednˇe budeme postupovat i opaˇcn´ym smˇerem, postup je analogick´y, jen v´ychoz´ı souˇradnice xlast = xc + 1. Zjednoduˇsenˇe m˚uˇzeme ˇr´ıct, ˇze z v´ychoz´ıho pixelu po- kraˇcujeme obˇema smˇery po hledan´e hranˇe a detekujeme tak pouze ji. Probl´emy tak nast´avaj´ı jen v pˇr´ıpadˇe, ˇze se hrany navz´ajem prot´ınaj´ı.

4.4.3 Stanoven´ı v´ yˇ skov´ eho profilu

Pro pˇrepoˇcten´ı nalezen´eho profilu z pixel˚u, na nadmoˇrskou v´yˇsku a vzd´alenost od startu, n´am postaˇc´ı z´aznam s nalezen´ymi pixely (xi, yi), 0 ≤ i ∈ N ≤ kwidth − 1. D´ale z tˇechto hodnot spoˇcteme nejmenˇs´ı, respektive nejvˇetˇs´ı hodnoty na obou os´ach, kter´e oznaˇc´ıme xmin, xmax, ymin, ymax. Rovnˇeˇz mus´ıme zn´at vzd´alenost z´avodu l, nejvyˇsˇs´ı (hmax) a nejniˇzˇs´ı (hmin) nadmoˇrskou v´yˇsku. Na z´akladˇe tˇechto hodnot jsme jiˇz schopni stanovit libovolnou nadmoˇrskou v´yˇsku a vzd´alenost u kaˇzd´eho pixelu.

Nadmoˇrskou v´yˇsku ve vybran´em pixelu vypoˇcteme jako hheight(y) = yzero+ ycoefy; ycoef = hmax− hmin

ymax− ymin; yzero= hmin− yminycoef, (4.8) kde y je y-ov´a souˇradnice pixelu v obr´azku, yzero je nadmoˇrsk´a v´yˇska odpov´ıdaj´ıc´ı nejniˇzˇs´ımu pixelu a ycoef je pˇr´ıbytek nadmoˇrsk´e v´yˇsky pˇri posunu o jeden pixel nahoru. Obr´azky jsou indexovan´e vˇzdy od lev´eho horn´ıho rohu, kter´y m´a tedy souˇradnice (0, 0). Je tedy velmi d˚uleˇzit´e s t´ım pˇri implementaci poˇc´ıtat.

l(x) = (x − xmin)lpp; lpp= l

xmax− xmin, (4.9)

(40)

kde x je x-ov´a souˇradnice pixelu v obr´azku, lpp je pˇr´ır˚ustek vzd´alenosti pˇri pohybu o 1 pixel d´ale.

4.4.4 Grafick´ e rozhran´ı

Uveden´e metody a implementovan´e algoritmy, vzhledem k r˚uznorod´ym obr´azk˚um, nemohou b´yt zcela univerz´aln´ı a bezchybn´e. Proto bylo vytvoˇreno grafick´e rozhran´ı, pomoc´ı kter´eho uˇzivatel m˚uˇze jednoduˇse zvolit vhodn´a ˇreˇsen´ı a vykon´av´a i funkci kontrolora.

Pomoc´ı Scene Builderu byl vytvoˇren z´akladn´ı vzhled grafick´eho rozhran´ı. Mo- del z n´avrhov´eho vzoru MVC pˇredstavuje tˇr´ıda ImageT oP rof ileConvertor, cont- roller pak ImageT oP rof ileController. Aby mohlo grafick´e rozhran´ı i model bˇeˇzet zd´anlivˇe souˇcasnˇe (pseudoparalelnˇe) nebo v pˇr´ıpadˇe v´ıcej´adrov´eho poˇc´ıtaˇce ´uplnˇe pa-

ralelnˇe, mus´ı rozhran´ı i model bˇeˇzet v jin´em vl´aknˇe. Proto tˇr´ıda ImageT oP rof ileConvertor implementuje rozhran´ı Runnable. Uˇzivatel nejprve naˇcte obr´azek, ze kter´eho chce

vytvoˇrit v´yˇskov´y profil. Realizace je velmi jednoduch´a s vyuˇzit´ım tˇr´ıdy F ileChooser a jej´ı metody showOpenDialog, pomoc´ı niˇz m˚uˇzeme do naˇs´ı aplikace nahr´at libo- voln´y obr´azek. Tˇr´ıda F ileChooser umoˇzˇnuje nab´ızen´e soubory filtrovat. Uˇzivateli tedy nab´ıdneme moˇznost v´ybˇeru pouze ze soubor˚u, kter´e jsou obr´azky pomoc´ı tˇr´ıdy ExtensionF ilter. Tak´e pˇrid´ame speci´aln´ı filtr, kter´y nab´ıdne pouze takov´e obr´azky, jejichˇz profily zat´ım nebyly pˇrid´any do datab´aze. Obr´azky maj´ı pˇred kon- covkou jm´eno odpov´ıdaj´ıc´ı atributu url id z tabulky cycling race. Sql dotaz, kter´y vybereme vˇsechny z´avody, kter´e nemaj´ı z´aznam v tabulce cycling prif ile vypad´a n´asledovnˇe

SELECT url_id FROM CYCLING_RACE

WHERE id NOT IN (SELECT DISTINCT(race_id) FROM cycling_profile) AND id_relation IS NULL

Atribut id relation mus´ı b´yt NULL, jinak by se jednalo o celkov´e v´ysledky eta- pov´ych z´avod˚u, u kter´ych vˇsak ˇz´adn´y profil nem˚uˇzeme nal´ezt. Takov´y obr´azek se samozˇrejmˇe ani nikde vyskytovat nem˚uˇze, takˇze by nebylo chybou tuto podm´ınku vynechat, ale zbyteˇcnˇe bychom pˇrid´avali filtry, kter´e nejsou potˇreba.

Po naˇcten´ı se obr´azek zobraz´ı v aplikaci a z´aroveˇn se automaticky dopln´ı d´elka

(41)

Obr´azek 4.5: Grafick´a aplikace pro hled´an´ı v´yˇskov´eho profilu

z´avodu podle ´udaje, kter´y je uloˇzen v datab´azi. Pokud by ´udaj neodpov´ıdal, m˚uˇze jej uˇzivatel pˇrepsat a posl´eze bude spoleˇcnˇe s profilem uloˇzen. Obsluha programu n´aslednˇe mus´ı vyplnit informace o nadmoˇrsk´e v´yˇsce. Bud’ vypln´ı minim´aln´ı a ma- xim´aln´ı nadmoˇrskou v´yˇsku, nebo nadmoˇrskou v´yˇsku na startu a v c´ıli z´avodu za podm´ınky, ˇze se nerovnaj´ı. Pomoc´ı tˇechto ´udaj˚u n´aslednˇe m˚uˇze b´yt vypoˇcten skuteˇcn´y v´yˇskov´y profil. Nyn´ı pˇrich´az´ı na ˇradu samotn´e rozpozn´av´an´ı profilu, uˇzivatel si m˚uˇze vybrat ze 4 z´akladn´ıch funkc´ı, kter´e jsou v´yˇse pops´any. V pˇr´ıpadˇe sloupcov´e metody shora, zdola, nebo jej´ı kombinace, je tˇreba zadat pr´ah pro oznaˇcen´ı barvy za shod- nou pomoc´ı slideru (posuvn´eho tlaˇc´ıtka) a kliknut´ım myˇsi vybrat barvu profilu z

(42)

obr´azku. Po kliknut´ı se zaˇcne okamˇzitˇe poˇzadavek zpracov´avat. V´ysledek je n´aslednˇe zobrazen pod obr´azkem origin´aln´ıho obr´azku.

V pˇr´ıpadˇe v´ybˇeru hranov´e detekce je tˇreba nejprve pomoc´ı slideru vybrat vhodn´y pr´ah pro vytvoˇren´ı hran. Detekce je velmi rychl´a a tak se uˇzivateli okamˇzitˇe pˇri pohybu sliderem zobrazuje. Pot´e, co je uˇzivatel s detekovan´ymi hranami spokojen, klikne na spodn´ı obr´azek a ten nahrad´ı obr´azek p˚uvodn´ı. D´ale jiˇz staˇc´ı jen kliknout myˇs´ı pobl´ıˇz hledan´e hrany a program opˇet zobraz´ı v doln´ım obr´azku nalezenou hranu.

Na obr´azku4.5 vid´ıme v´yslednou aplikaci, kde bylo pouˇzito kombinovan´e sloup- cov´e detekce. Na detekovan´em obr´azku je ˇcervenou barvou zn´azornˇen profil vyhle- dan´y vlevo od vˇerohodn´eho pixelu a ˇcernou profil vpravo. Uˇzivatel m˚uˇze mˇenit metody detekce a prahy, neˇz je spokojen s v´ysledkem. Po zobrazen´ı obr´azku s dete- kovan´ym profilem se aktivuje tlaˇc´ıtko pro uloˇzen´ı profilu.

References

Related documents

Uveden´ a simulace je zaloˇ zena, jak jiˇ z bylo zm´ınˇ eno, na opakovan´ em gene- rov´ an´ı n´ ahodn´ ych dat, na kter´ ych se prov´ ad´ı dan´ y algoritmus a jsou

Diskr´ etn´ı wavelet transformace (DWT) nal´ ez´ a vyuˇ zit´ı pˇri potlaˇ cov´ an´ı ˇsumu v obrazu.. Opaˇ cn´ y postup se naz´ yv´ a rekonstrukce, kdy pˇri nezmˇ enˇ

D´ ale pr´ ace zahrnuje moˇ znosti dekompo- zice a rekonstrukce pomoc´ı wavelet transformace s pouˇ zit´ım r˚ uzn´ ych wavelet funkc´ı, modifikace d´ılˇ c´ıch koeficient˚

Aˇ ckoli byly matematick´ e z´ aklady pr´ ace pokl´ ad´ any za ´ uˇ celem stavby model˚ u reakˇ cn´ıho transportu kontaminace, lze vybran´ e z nalezen´ ych n´ astroj˚

Pˇredloˇ zen´ a disertaˇ cn´ı pr´ ace se zab´ yv´ a adaptac´ı existuj´ıc´ıho syst´ emu automatick´ eho rozpozn´ av´ an´ı ˇreˇ ci (ASR) pro dalˇs´ı jazyky.. Zamˇ eˇruje

Na obr´ azku 4.35 je zobrazeno porovn´ an´ı akustick´ eho tlaku nad nosn´ıkem uni- morf (bez elektrod i s elektrodami vych´ az´ı nad nosn´ıkem velice podobn´ y akustick´ y

Pˇri zpracov´ an´ı poˇ zadavk˚ u pˇrid´ avaj´ıc´ıch nov´ y z´ aznam trestn´ e ˇ cinnosti, aplikace z´ısk´ av´ a data o poˇ cas´ı.. Zdrojem dat je port´

Bylo by tak´ e vhodn´ e, vyrobit nanovl´ akenn´ y filtr s niˇ zˇs´ım tlakov´ ym sp´ adem (ide´ alnˇ e stejn´ ym, jako maj´ı komerˇ cn´ı c´ıvky) a zjistit jeho ´