Mendelova univerzita v Brně Provozně ekonomická fakulta
Vytvoření šachových figur pomocí 3D tiskárny a jejich rozpoznání v obraze Bakalářská práce
Vedoucí práce: Ing. Marcel Vytečka
Tomáš Rozbořil Brno 2014
Rád bych touto cestou poděkoval vedoucímu této práce, panu Ing. Marcelu Vytečkovi, za jeho cenné rady při tvorbě této práce a za veškerý čas, který mi věnoval. Dále bych chtěl poděkovat rodičům za podporu během mého celého studia.
Čestné prohlášení Prohlašuji, že jsem tuto práci: Vytvoření šachových figur pomocí 3D tiskárny a jejich rozpoznání v obraze vypracoval samostatně a veškeré použité prameny a informace jsou uvedeny v seznamu použité literatury. Souhlasím, aby moje práce byla zveřejněna v souladu s § 47b zákona č. 111/1998 Sb., o vysokých školách ve znění pozdějších předpisů, a v souladu s platnou Směrnicí o zveřejňování vysokoškolských závěrečných prací. Jsem si vědom, že se na moji práci vztahuje zákon č. 121/2000 Sb., autorský zákon, a že Mendelova univerzita v Brně má právo na uzavření licenční smlouvy a užití této práce jako školního díla podle § 60 odst. 1 Autorského zákona. Dále se zavazuji, že před sepsáním licenční smlouvy o využití díla jinou osobou (subjektem) si vyžádám písemné stanovisko univerzity o tom, že předmětná licenční smlouva není v rozporu s oprávněnými zájmy univerzity, a zavazuji se uhradit případný příspěvek na úhradu nákladů spojených se vznikem díla, a to až do jejich skutečné výše. V Brně dne 21. května 2014
_______________________________
Abstract Rozbořil, T. Creating chess pieces using 3D printers and their detection in the image. Bachelor thesis. Brno 2014. The bachelor thesis deals with the creation of 3D chess pieces and their detection in the image. The results are two sets of figures useful when playing the slot machine and the module is deployed to detect the chessboard in the image that can be used in a chess automaton. Keywords Chess, 3D object, recognition in image, OpenCV
Abstrakt Rozbořil, T. Vytvoření šachových figur pomocí 3D tiskárny a jejich rozpoznání v obraze. Bakalářská práce. Brno 2014. Bakalářská práce se zabývá tvorbou 3D šachových figur a jejich rozpoznáním v obraze. Výsledkem jsou dvě sady figurek využitelné při hře na herním automatu a naimplementovaný modul pro rozpoznání herní plochy v obraze, který je možné použít v šachovém automatu. Klíčová slova Šachy, 3D objekt, rozpoznání v obraze, OpenCV
Obsah
9
Obsah 1
2
Úvod a cíl práce
15
1.1
Úvod....................................................................................................................................... 15
1.2
Cíl práce................................................................................................................................ 15
Analýza současného stavu 2.1
16
Gambit: A Robust Chess-Playing Robotic System ................................................ 16
2.1.1
Snímání obrazu ....................................................................................................... 16
2.1.2
Rozpoznání šachových figurek ......................................................................... 16
2.2 CHESS ROBOT SYSTEM: A MULTI-DISCIPLINARY EXPERIENCE IN AUTOMATION ................................................................................................................................ 17 2.2.1 2.3
MarineBlue: A Low-Cost Chess Robot ...................................................................... 19
2.3.1 3
Zpracování obrazu ................................................................................................. 19
Teoretická část
20
3.1
Návrh 3D objektů ............................................................................................................. 20
3.2
Vytvoření 3D objektů ...................................................................................................... 21
3.2.1
CNC stroje .................................................................................................................. 21
3.2.2
3D tiskárna................................................................................................................ 21
3.3
4
Modul umělého vidění .......................................................................................... 17
Rozpoznání obrazu .......................................................................................................... 22
3.3.1
Segmentace ............................................................................................................... 22
3.3.2
Programové prostředí .......................................................................................... 23
Praktická část 4.1
24
Stanovení vstupních podmínek .................................................................................. 24
4.1.1
3D tisk ......................................................................................................................... 24
4.1.2
Šachovnice ................................................................................................................ 24
4.1.3
Šachové figurky ....................................................................................................... 24
4.2
Tvorba 3D objektů ........................................................................................................... 24
4.2.1
Návrh šachových figurek ..................................................................................... 24
10
Obsah
4.2.1.1 Program Rhinoceros ............................................................................................. 25 4.2.2 4.3
Tisk šachových figurek ......................................................................................... 26
Manipulace s figurkami .................................................................................................. 26
4.3.1
Elektromagnet ......................................................................................................... 27
4.3.2
Úprava figurek ......................................................................................................... 28
4.4
Modul pro rozpoznání v obraze .................................................................................. 29
4.4.1
Barevné rozpoznávání .......................................................................................... 29
4.4.2
Kamera ....................................................................................................................... 29
4.4.3
Barevné rozlišení figurek .................................................................................... 30
4.4.4
Získání vstupních dat ............................................................................................ 30
4.4.5
Algoritmus detekce středů figurek .................................................................. 30
4.4.6
Algoritmus barevné detekce šachovnice ....................................................... 32
4.4.7
Algoritmus detekce šachovnice pomocí hran.............................................. 34
4.4.8
Ukončení práce modulu ....................................................................................... 37
5
Závěr
38
6
Literatura
39
A
Fotografie šachových figur
42
Obsah
11
12
Seznam obrázků
Seznam obrázků Obr. 1
RGB krychle
18
Obr. 2
Prostředí programu Rhinoceros
26
Obr. 3
Univerzální uchopovač
27
Obr. 4
Uchopovač elektomagnetu
28
Obr. 5
Upravený model pěšce
29
Obr. 6
Detekce středů pomocí ohodnocení pixelů
31
Obr. 7
První nalezený modrý pixel
32
Obr. 8
Automatická detekce políček
33
Obr. 9
Vyznačení problémové hranice
34
Obr. 10
Detekce rohových bodů šachovnice
35
Obr. 11
Rekonstrukce herní plochy
36
Obr. 12
Zkoumané okolí středů
36
Obr. 13
Pěšec
42
Obr. 14
Věž
42
Obr. 15
Kůň
43
Obr. 16
Střelec
43
Obr. 17
Dáma
44
Obr. 18
Král
44
Seznam tabulek
13
Seznam tabulek Tab. 1
Tabulka barev a jejich hodnot v RGB modelu
18
Tab. 2
Testování detekce šachovnice pomocí hran
37
Úvod a cíl práce
15
1 Úvod a cíl práce 1.1
Úvod
Odvětví 3D modelování se už dlouhou dobu nezabývá pouze estetickou stránkou věci, či vytvářením návrhů například domů nebo bytů. V současné době se můžeme setkat s 3D modely, které slouží jako předloha pro výrobu reálných věcí. Výrobky vytvořené přesně podle virtuální předlohy jsou především daleko přesnější, než kdyby je člověk vytvářel sám například dřevařstvím nebo sochařstvím. Také čas potřebný k výrobě se zkracuje. Dalším důležitým faktorem je vynaložení síly a energií k dosažení daného cíle. I v tomto případě se většinou více vyplatí použít počítačem řízené stroje, než výrobek vytvářet ručně. Rozpoznání obrazu je důležitým faktorem při automatizovaných procesech. Je důležité určit, do jaké míry je rozpoznání obrazu vhodné pro konkrétní úlohu. Můžeme z celého obrazu vybrat pouze důležité části označené jednou zvolenou barvou, někdy stačí rozpoznávat pouze základní barvy, jindy je ale potřeba rozpoznávat celý obraz, vše závisí na konkrétním požadavku. Různými barvami můžeme také například jednoznačně identifikovat jednotlivé součástky, s kterými je potřeba dále pracovat. Vhodně zvoleným rozpoznáním obrazu můžeme přispět k automatizaci různých procesů a následně se tak obejít potřebu lidské kontroly.
1.2 Cíl práce Cílem této práce je vytvoření 3D šachových figur pro šachový automat a softwarového modulu pro jejich rozpoznání v obraze. Součástí cíle je návrh modelů figur pomocí CAD nástrojů a jejich tisk na 3D tiskárně. Softwarový modul pro rozpoznání pozice šachových figur na hrací desce slouží k určení souřadnic pro manipulaci prostřednictvím stacionárního robotu.
16
Analýza současného stavu
2 Analýza současného stavu Pro nalezení správného řešení je vhodné seznámit se s principem a funkcemi automatů, následně je důležité zhodnotit způsob řešení, ale většina firem si svoje návrhy a postupy chrání před konkurencí. Asi nejznámější je souboj dvou šachových automatů ChessKA a KUKA Monster. Nejvyšší důraz při hledání již naimplementovaných šachových automatů bude kladen především na snímání hrací plochy a problematiku rozpoznání hrací plochy i jednotlivých figurek.
2.1 Gambit: A Robust Chess-Playing Robotic System Gambit představuje herní manipulátor určený pro hru na fyzické desce proti lidskému protihráči. Pro správný chod nevyžaduje speciální úpravy standardního šachového pole či figurek. Při hře komunikuje s protihráčem přirozeným hlasovým rozhraním (Matuszek, 2014). 2.1.1
Snímání obrazu
Pro snímání hrací plochy je využito dvou kamer. První kamera je technologicky identická jako kamera Xbox Kinect. Pracuje v tříbarevném kanálu barev RGB (redčervená, green-zelená, blue-modrá). Pro úspěšné snímání obrazu musí být hrací plocha ve vzdálenosti od 0,5m do 5m. Kamera je umístěna na rameno manipulátoru. Druhá kamera je vestavěna přímo do uchopovacích kleští manipulátoru. Byla navržena primárně pro Apple MacBook. Pro zachování integrity dat bylo nutné využití vysokorychlostního USB zesilovače a stínovaného kabelu. V první řadě musí systém detekovat šachovnici. Pozice šachovnice se určí pomocí rohových bodů. Vzhledem ke vzdálenosti rohových bodů se poté rekonstruuje celá šachovnice. Snímání šachovnice probíhá nepřetržitě, proto se s ní může libovolně manipulovat i v průběhu herní partie. Systém je schopný detekovat i lidskou ruku v případě manipulace se šachovými figurkami. Po detekci šachovnice následuje vyhledání umístěných figurek v poli. Následně je pomocí algoritmu GNU Chess vyhodnocen tah. V případě neplatného tahu dá systém pokyn k napravení chyby (Matuszek, 2014). 2.1.2
Rozpoznání šachových figurek
Systém je sestaven tak, že potřebuje vidět rozestavění figur před začátkem každé partie. V budoucnu se počítá ale i s připojením šachového automatu v jakékoliv fázi hry. Rozpoznání figurky spočívá ve čtyřech operacích. První operací je detekce čtverců na hrací desce. Vyhledání čtverců funguje nezávisle na rotaci plochy. Po určení pozice konkrétního políčka následuje určení barvy. To spočívá v porovnání histogramů jeho barvy s předem definovanými šablonami. Tímto stylem se porovnávají prázdná i obsazená políčka. Pokud se zpra-
Analýza současného stavu
17
covává obsazené pole, následuje podobné rozpoznání pro barvy dané figurky. Poslední operací je klasifikace typu figurky. Klasifikace je implementována pro každou barevnou sadu zvlášť (Matuszek, 2014).
2.2 CHESS ROBOT SYSTEM: A MULTI-DISCIPLINARY EXPERIENCE IN AUTOMATION Tento šachový automat byl sestaven pro automatizované ovládání robotu pomocí vzdálené aplikace. Aplikace reprezentuje stěžejní prvek automatu, skládá se z rozhraní pro hráče, modulu obsahující šachové algoritmy, šachového stroje a rozhraní pro ovládání robotu. Automat je ovládán hráčem skrze virtuální prostředí, které posílá data robotu a ten následně manipuluje reálnými figurkami (Goncalves, 2014). 2.2.1
Modul umělého vidění
Pro detekování jednotlivých polí na šachovnici je využíváno tzv. umělého vidění. Snímání provádí webkamera, která je umístěna nad hrací plochou. Webkamera je velmi flexibilní vzhledem k vzdálenosti od šachovnice. Kalibrace kamery rovněž umožňuje libovolnou změnu barev jak šachovnice, tak i figurek. Samotné zpracování obrazu začíná aplikací Gaussova filtru pro odstranění šumu. Následují výpočty pro korekci chyb způsobených zkreslením obrazu z kamery. Poté probíhá vyhledání šachovnice. Hrací pole se detekuje pomocí rohových bodů, které označí uživatel modulu. Pokud je kamera umístěna paralelně s hrací plochou, podle rohů se vypočítají všechny pozice ostatních polí. Pokud tomu tak není, musí se aplikovat algoritmus pro natočení obrazu šachovnice tak, aby byla hrací plocha přesně ve vertikální poloze. K rozpoznání barev je potřeba kalibrace kamery. Algoritmus zpracování je navržen tak, aby zpracovával každý pixel zvlášť. Barevná škála je rozložena do RGB modelu. Pro každou barevnou složku je vyhrazeno 8 bitů, systém tedy dokáže rozpoznat 6777216 (256×256×256) barev. Každá barva se vykresluje pomocí barevné krychle, u které je možné definovat hodnoty od (0, 0, 0) do (28 R; 28 G; 28 B) pro každou RGB komponentu v každém vrcholu krychle. V následující tabulce jsou uvedeny základní barvy, jejich hodnoty a jejich umístění na krychli (Obr. 1).
18 Tab. 1
Analýza současného stavu Tabulka barev a jejich hodnot v RGB modelu
Barva Červená Zelená Modrá Žlutá Bílá
Hodnota (255, 0, 0) (0, 255, 0) (0, 0, 255) (255, 255, 0) (255, 255, 255)
Bod R G B Y W
Zdroj: CHESS ROBOT SYSTEM: A MULTI-DISCIPLINARY EXPERIENCE IN AUTOMATION
Obr. 1 RGB krychle Zdroj: CHESS ROBOT SYSTEM: A MULTI-DISCIPLINARY EXPERIENCE IN AUTOMATION
Při takovém množství barev je nutné definovat právě dvě barvy, které rozlišují políčka na šachovnici. Tato kalibrace se tedy hodí především pro barvy, které lze v barevné krychli lehce definovat. Kalibraci je nutné provádět před každou hrou. V průběhu hry by se pak neměly měnit například světelné podmínky, či jiné další změny ohrožující správné rozpoznání barev. Detekce figurek se provádí pouze za předpokladu, že figurka je umístěna na herní ploše a je tedy prokazatelně součástí partie, což zrychluje celý proces rozpoznávání. V opačném případě by mohlo docházet i k rozpoznávání již vyhozených figurek. Chyba může nastat v situaci, kdy figurka překrývá i sousední pole (Goncalves, 2014).
Analýza současného stavu
19
2.3 MarineBlue: A Low-Cost Chess Robot Hlavním cílem konstruktérů tohoto robotu bylo vytvořit plně funkční šachový automat za co nejnižší cenu. Po jeho sestrojení byl robot využíván pro výukové účely. Celá sestava se skládá ze čtyř základních částí: šachovnice a šachové figurky, kamera, robotická ruka a řídící počítač (Urting, 2014). 2.3.1
Zpracování obrazu
Prvním krokem při rozpoznávání obrazu je určení pozice a orientace šachovnice, druhým krokem je identifikace každého políčka a určení pozic figurek. Celý mechanismus je navržen do tří částí: klasifikace pixelů, vrstva hrací desky a vrstva šachovnice. Klasifikace pixelů probíhá v modelu RGB. Úlohou této vrstvy je především rozdělení částí obrazu do čtyř tříd podle barevnosti pixelů, aby s nimi mohly další vrstvy pracovat. Jsou to třídy pro světlá a tmavá políčka na šachovnici a pro světlé a tmavé figurky. Nejprve nastává kalibrace, díky které se určí správné barvy pro každou třídu. Po klasifikaci tříd se jim přiřadí všechny pixely získané z obrazu. Pro správné rozlišení figurek se shodnou barvou s políčkem, na kterém stojí, se musí celý obraz transformovat do modelu HSB (Hue-barevný tón, Saturation-sytost barvy, Brightness-hodnota jasu). Výstup z tohoto je použit v druhém kroku. Vstupem pro druhý krok je matice s klasifikací pixelů. Následuje vyhledání šachovnice pomocí rohových bodů. Po detekci šachovnice se určí barvy všech políček, následuje hledání šechových figurek a jejich barev. Výstupem druhé vrstvy je záznam o všech barevných polích a jejich obsazenost či neobsazenost barevnou figurkou. Barva figurek je vyhodnocena pomocí dříve definovaných tříd pro světlé a tmavé figurky. Vypočítá se množství pixelů náležící daným třídám. Pokud množství pixelů pro figurku překročí předem daný počet, algoritmus situaci vyhodnotí tak, že na zkoumaném poli se nachází figurka. Rovněž i vrstva šachovnice pracuje s daty z předešlé vrstvy. Tato vrstva si uchovává informace o předchozím tahu a porovnává jej s aktuálním. Díky tomuto systému nemusí aplikace zpracovávat informace o přesouvání figurek. Nicméně kamera pro snímání obrazu je umístěna nad šachovnicí, a tak prakticky vidí jen kruhovitý tvar figurky. Rozpoznání typu figurky při tomto snímaní je téměř nemožné. Vyhodnocení správnosti tahu se tedy řeší porovnáním situace a snímku z předchozího tahu. Informaci o typu figurky si systém pamatuje již od začátku herní partie, kdy je umístění všech figurek předem známé. Správnost tahu vyhodnocuje šachový algoritmus, ve kterém jsou naimplementovány všechny přípustné tahy. Algoritmus rovněž detekuje nepřípustné operace (například vyhození šachových figurek stejné barvy). Úlohou poslední vrstvy je tedy rozpoznání barvy figurek, ne jejich typ (Urting, 2014).
20
Teoretická část
3 Teoretická část Následující kapitola uvádí různé přístupy k řešení dílčích problematik práce. V podkapitolách jsou tyto přístupy porovnány a nalezna nejlepší východiska.
3.1 Návrh 3D objektů V drtivé většině případů se pro návrh 3D objektů využívá grafických editorů. Existuje nepřeberné množství různých programů dostupných jak v placených, tak i ve volně šiřitelných verzích. Placené editory nabízí mnohem více funkcí pro práci s návrhem, nicméně volba konkrétního editoru závisí pouze na uživateli a jeho konkrétních potřebách. Pokud se jedná o návrh jednodušších či více známějších objektů, existuje zde celá řada zejména zahraničních webů (Google sketchup DB, Solidworks DB), které nabízí různé šablony ke stažení zdarma. Tyto weby uživatelům většinou rovněž umožňují stažené šablony dále upravovat a šířit dle vlastních potřeb. Nejčastějším principem při modelování je vytvoření výsledného obrazu z menších a jednodušších objektů (např. kvádr, krychle, koule, aj.), které lze následně spojit do sebe, nebo je upravovat triviálními funkcemi (stříhání, změna velikosti, ohyb, aj.). Výsledný objekt se může rovněž doplnit o samostatné plochy, popřípadě řada grafických editorů umožňuje automaticky spojit dva sousedící objekty. Tento způsob se hodí zejména lidem, kteří nejsou graficky zruční, a návrh modelu tzv. od ruky by pro ně mohl být obtížný. Nevýhoda spočívá v situaci, kdy je potřeba navrhnou pouze plášť objektu, jinak řečeno, objekt musí být dutý, což vyžadují například programy pro tisk v 3D tiskárnách. Při návrhu se může lehce stát, že část nějakého tělesa může zasahovat i dovnitř objektu, pak je potřeba toto těleso upravit, nebo problémovou část vyjmout. Druhým hojně využívaným postupem při modelování je princip, kdy se navrhne pouze obrys pláště výsledného objektu, který se pak nechá rotovat kolem zvolené osy o 360° a vznikne tak daný návrh. Časově je tento postup rychlejší, než návrh objektu z triviálních těles. Také je zde vyloučena skutečnost, že by figurka nebyla dutá. Velká nevýhoda spočívá ale v tom, že při vytváření objektu musí mít návrhář velkou prostorovou představivost a musí být graficky zručnější než při prvním uvedeném postupu. Dalším možným postupem je definice těles podle matematických rovnic. Reálně se však používá minimálně a to především k výukovým účelům. Tento postup je také určen především pro tvorbu triviálních těles, definovat složitý objekt je zde téměř nemožné. Pro práci se šachovým automatem je nutné navrhnout zcela nové figurky, protože použitá šachovnice je unikátní a oproti standardním hracím plochám je doplněna o prohlubně. Pro návrh figurek nejlépe vyhovuje princip vytváření objektu z jednodušších těles. Některé figurky (pěšec, střelec) lze bez problému vymodelovat i pomocí rotace obrysu tělesa, nicméně jiné figurky (věž, dáma, král) se skládají z menších částí, které tímto způsobem navrhnout nelze. Tělo figurky, které by
Teoretická část
21
vzniklo rotováním obrysu, je možné velmi dobře napodobit například komolým kuželem. Pro vymodelování koně je rovněž výhodnější využití triviálních objektů.
3.2 Vytvoření 3D objektů V dnešní době se používají nejčastěji dva postupy pro vytvoření objektu z vymodelované předlohy. 3.2.1
CNC stroje
CNC je zkratkou anglického „Computer Numerical Control“, která se používá i u nás. Ve spojení s obráběcím strojem lze používat ekvivalent počítačem řízený obráběcí stroj, tedy obráběcí stroje využívající počítač CNC řídicí systém k tomu, aby dokázali obrábět výrobek dle předem připravených technologických NC programů. Základní rozdělení obráběcích strojů je na soustružnické, frézovací a kombinované a dále na EDM, drátořezky (t-support.cz, 2014). Princip výroby daného 3D objektu je následující: Do stroje se vloží nejčastěji kovový materiál, ze kterého má daný objekt vzniknout a CNC stroj ho pomocí frézování, soustružení a vrtaní vytvoří. Výhody CNC strojů spočívají především ve vyšší rychlosti i přesnosti ve vytváření objektů. Další výhodou je volba materiálu. V dnešní době se tyto stroje využívají především k výrobě kovových součástek, nicméně k obrábění se může využít i dřevo nebo plast. Nevýhodou je bezesporu velmi vysoká pořizovací cena celého systému a rozměry, které jsou obvykle větší než u 3D tiskáren. 3.2.2
3D tiskárna
Existuje několik druhů tiskáren, od profesionálních tiskáren v ceně několika stovek tisíc korun až po domácí tiskárny, které stojí desítky tisíc. Rozdíl je především v kvalitě a přesnosti tisku nebo v rozměrech ať už samotné tiskárny, či tisknutelného objektu. 3D tiskárny jsou využívány především ve firmách pro tisk součástek a ve školství. V domácím rodinném prostředí ještě nemají takové využití jako klasické papírové tiskárny. Samotný princip spočívá v tom, že tryska v tiskové hlavě naší při velmi vysoké teplotě okolo 260 °C termoplastickou hmotu po velmi miniaturních plochách. Tento princip vývoje skrývá různé výhody i nedostatky. Výhoda spočívá především ve velmi vysoké přesnosti, která se v dnešní době standardně pohybuje okolo 0,1 až 0,3 mm u každé tisknutelné plochy. Další výhodou je cena tisku, která se pohybuje v závislosti na velikosti objektu do desítek korun včetně materiálu i energií. Mezi nevýhody patří bezesporu velmi vysoká časová náročnost tisku čítající někdy i desítky hodin, nicméně po zadání tisku stroj standardně nevyžaduje asistenci člověka. Další nevýhodou může být odolnost materiálu a nejedná se zde jen o odolnost termoplastické hmoty konkrétně. Znehodnocení výsledného objektu
22
Teoretická část
může nastat například při vertikálním zatížení ostrým předmětem, což je zapříčiněno samotným tiskem po vertikálních plochách, takže se jednotlivé plochy můžou od sebe odlomit. Při horizontálním zatížení je toto riziko daleko menší. Nevýhoda 3D tiskáren spočívá také v barvě tisku. Termoplastická hmota se vyrábí v různých barvách, nicméně drtivá většina tiskáren má zásobník pouze na jednu barvu. Existují už i profesionální 3D tiskárny umožňující vícebarevný tisk, ale jejich pořizovací cena je poměrně vysoká. Dalším důležitým prvkem při pořizování zejména domácí 3D tiskárny je fakt, že majitel by měl být alespoň trochu technicky zručný a měl by rozumět konstrukci zakoupeného produktu. Existuje zde mnoho příčin, díky kterým může vzniknout komplikace při tisku a uživatel ji musí sám vyřešit. Například jedna z častých chyb spočívá v ucpání tiskové hlavy hmotou. Uživatel musí být schopný rozmontovat hlavu a vyčistit ji, což se u klasických laserových nebo inkoustových tiskáren téměř nestává. Někteří výrobci 3D tiskáren proto pořádají i různé přednášky o obsluze a manipulaci s tiskárnou, kde radí jak provádět nejrůznější drobné opravy (Polesný, Čížek, 2014). Nově se objevují i další jiné typy 3D tiskáren využitelných v různých dalších odvětvích jako je například gastronomie, cukrářství, nebo i lékařství. K vytvoření šachových figurek pro tuto práci je výhodnější využití 3D tiskárny. Hlavním důvodem je především materiál. Není zapotřebí vyšší odolnosti, a tak bohatě postačuje využití plastů. Vzhledem ke složitosti figurek je princip výroby u 3D tiskáren je rovněž vhodnější než u CNC strojů a to i se zachováním požadované přesnosti.
3.3 Rozpoznání obrazu Detekování potřebných tvarů i objektů je základní část pro další práci s obrazem. Využívá se v mnoha oborech jako je například bezpečnost (kontrola objektů), nebo v oblasti fotografií, kde se hojně využívá například detekce a rozpoznání obličeje. 3.3.1
Segmentace
Segmentace je základní metoda při zpracování obrazu, kdy se snímaný obraz rozdělí na části, které co nejvíce odpovídají reálnému zachycení potřebného objektu, nebo mají společné předem dané parametry (např. společná velikost, barva). Následné díly – segmenty se poté zpracují samostatně. Po dokončení zpracování se segmentace rozděluje na kompletní, kdy oblasti odpovídají předloze, a neúplnou, kdy se definují pouze potřebné oblasti, které odpovídají hledaným vlastnostem (např. stejná barva pozadí). Mezi hlavní výhody segmentace patří zejména snížení objemu dat, což vede k vyšší rychlosti zpracování obrazu. Nevýhoda může spočívat v šumu, nebo ve zkreslení snímaného obrazu. Základní metodou segmentace je prahování (tresholding). Prahování je poměrně rychlé a není zvlášť výpočetně náročné, nicméně jeho využití najde uplatnění spíše v jednoduchém prostředí (např. nalezení předmětu na jednobarevném
Teoretická část
23
pozadí). V těchto případech je možné zkoumat hodnoty jasu pozadí a porovnávat je s hodnotami zkoumaných objektů. Velmi důležité je také využití histogramů, pokud je možnost barvy obrazu zobrazit pomocí odstínů šedi, tak vzniká histogram intenzity, kdy stupně intenzity nabývají hodnot 0-255. Druhým principem segmentace je použití tzv. regionálních metod (regionbased). Tyto metody jsou schopny nalézt body shodující se dle předem daných parametrů (barva, jas). Princip spočívá v tom, že segment se tvoří zdola nahoru, od prvního pixelu, až po výsledný segment. Určí se algoritmus pro rozdělení iniciálních pixelů, standardně rovnoměrně nebo náhodně, výsledný pixel pak vzniká rozrůstáním okolních iniciálních pixelů. Výhodou této metody je především možnost její aplikace i při vysokém šumu. Nevýhoda oproti prahování je ta, že tyto metody mohou mít při stejném obrazu různé výsledky. (Úlohy pro praktickou výuku zpracování obrazových dat, 2014) 3.3.2
Programové prostředí
V základech většiny programovacích jazyků (např. C++, PHP, Pascal) detailnější práce s obrazem není podporována. Proto je zapotřebí do prostředí těchto jazyků importovat pomocné knihovny, které práci podporují. Některé knihovny jsou rovněž vyvíjeny v různých verzích pro různé programovací jazyky. První alternativou může být soubor knihoven SimpleCV. SimpleCV umožňuje práci s obrazem i s videem z různých zdrojů (např. webkamera, Kinect, IP kamera nebo mobilní telefon). Navíc je celá tato knihovna zdarma ke stažení a open source, což umožňuje zcela libovolně měnit kód. Je napsána v Pythonu a je podporována v prostředích Windows, Mac a Ubuntu Linux. Byla vyvinuta techniky ze Sight Machine a pod licencí BSD (SIMPLECV TUTORIAL, 2014). Další podobnou knihovnou je OpenCV, která je dostupná pro více programovacích jazyků (C++, C, Python, Java a MATLAB) a rovněž je podporována i prostředím Android. Je využívána velikými korporacemi v odvětví informačních technologií jako jsou např. Google, Yahoo, Microsoft, Intel, IBM aj. Obsahuje více než 2500 optimalizovaných funkcí pro práci s obrazem a také podporuje i 3D objekty (ABOUT | OpenCV, 2014). Jinou alternativou může být např. Framework Accord.NET sloužící především k vědeckým výpočtům, ale i pro zpracování obrazu, avšak pro tuto práci nejlépe vyhovuje knihovna OpenCV.
24
Praktická část
4 Praktická část 4.1 Stanovení vstupních podmínek Práce navazuje na předešlý výzkum v oblasti 3D tisku i šachového automatu. Proto je nezbytně nutné seznámit se s daným prostředím vývoje a přizpůsobit tomu postup vývoje při řešení. 4.1.1
3D tisk
Škola vlastní 3D tiskárnu od zahraniční firmy Dimension. Obsahuje zásobník na 1000 cm3 termoplastické hmoty a samostatný zásobník pro tzv. support. Označení support se vztahuje na další typ termoplastické hmoty, který slouží jako podpěra pro tisk komplikovaných tvarů. Obecně není spotřeba supportu tak vysoká, jako je spotřeba hlavního materiálu. Z výsledného modelu se support jednoduše odstraní pomocí chemické reakce, která vznikne při kontaktu s vlažnou vodou se speciální chemickou příměsí. Nejdůležitějším bodem při vytváření 3D modelů je zvolit program, který umí výsledný model exportovat do formátu stl. Tento formát podporuje i software pro tisk objektů. 4.1.2
Šachovnice
Hrací pole pro šachové figurky odpovídá daným klasickým zvyklostem a je samozřejmě zachováno i rozložení barev. Skládá se z navzájem propojených políček o rozměrech 45×45×20 mm. Je důležité, aby výsledné figurky nepřesahovali do ostatních polí a to jak podstavou, tak i tvarem. Do každého políčka je vyhloubena kuželovitá prohlubeň o průměru 22 mm a hloubce 30 mm. Pro větší stabilitu figurek musí tedy být obvod podstavy u každé figurky větší než u této prohlubně, nebo je potřeba podstavu doplnit o kužel podobných rozměrů. 4.1.3
Šachové figurky
Dle daných zvyklostí je pro hru potřeba vytvořit dvě sady šachových figurek v rozdílných barvách.
4.2 Tvorba 3D objektů 4.2.1
Návrh šachových figurek
Vzhledem ke stylu práce manipulátoru Katana by bylo výhodné, kdyby byly všechny typy figurek stejně vysoké. Důvodem je zjištění výškové souřadnice u figurek, které by za takovýchto podmínek nebylo potřeba. Nicméně takto navržené figurky nevyhovují z estetického hlediska. Proto byly zvoleny celkem dvě výšky pro figur-
Praktická část
25
ky. První činí 41 mm pro pěšce, druhá činí 46 mm a slouží pro zbytek figurek. Dané výšky jsou uvedeny od hrací desky, čili nezapočítává se do nich hloubka kuželovitého otvoru o velikosti 30 mm v každém políčku. Pro vymodelování šachových figurek bylo využito programu Rhinoceros. Tento program umožňuje tvorbu zcela nových objektů, ale rovněž i import již vytvořených. Importovaný objekt může být vytvořen i v jakémkoliv jiném programu, pokud byl uložen v podporovaném formátu. 4.2.1.1 Program Rhinoceros Program Rhinoceros nabízí značné množství různých funkcí pro práci s 3D objekty. Níže jsou uvedeny pouze ty funkce, které přímo souvisí s touto konkrétní prací. Konstrukce objektů je možná pomocí tří základních prvků v 3D modelování a jejich následných úprav. Tyto prvky jsou křivka, plocha a těleso. Křivka umožňuje práci s 2D objekty definovanými pomocí dvou bodů, čili např. úsečka, nebo kružnice. Tyto objekty se dají libovolně vytvářet, a poté jim uživatel může libovolně měnit parametry. Dále je z nich možné sestavit kostru výsledného modelu a podle ní jej pak vytvořit. Při tvorbě takovýchto modelů je využito především spojování křivek pomocí ploch. Plocha je rovněž 2D objekt, který se ale definuje pomocí minimálně tří bodů. Kromě tvorby pláště objektů má plocha v tomto programu i další využití. Za zmínku stojí určitě tzv. řezná rovina, kterou lze využít při oddělování jednotlivých částí těles. Při této úpravě stačí pouze vybrat těleso, či skupinu těles a směr roviny. Výsledná rovina pak rozměrově odpovídá pouze přesně zvolenému výběru a může se kombinovat s funkcemi střihu nebo rozdělení těles. Další užitečnou funkcí je Plynulý přechod. Pomocí této funkce lze velmi jednoduše uzavírat různé prohlubně, které mohou vzniknout při návrhu složitějších těles. Parametry této funkce mohou být jednak samostatné křivky, ale i hrany již hotových těles. Třetím prvkem při tvorbě modelů je těleso. Program Rhinoceros umožňuje automatickou tvorbu triviálních těles (např. koule, kvádr, jehlan). Po vytvoření těles je opět možné upravovat jejich parametry. Dalším užitečným nástrojem pro tvorbu těles je funkce Rozpojit. Pomocí této funkce je možné těleso rozbít na drobnější části (např. na plochy) a i s nimi je možné dále samostatně pracovat. Pracovní plocha programu je v základu rozdělena na čtyři samostatné plochy, které nabízí různé pohledy na skladbu těles. Standardně jsou to pohledy shora, zepředu, zprava a perspektiva, přičemž k manipulaci prvků se většinou využívají první tři jmenované. Pohled perspektiva slouží především k lepšímu přehledu o celkovém tvaru modelů, manipulace je i u tohoto pohledu možná, ale je nepřesná. U každého pohledu si uživatel může zvolit styl zobrazení objektů. Základní jsou dva a to zobrazení kostry pomocí křivek a zobrazení tělesa pomocí pláště. Všechny typy pohledů lze zaměnit za jiné (např. pohled zleva) nebo je úplně vypnout, čímž se může získat další volný prostor, který se může využít k zvětšení jiného pohledu.
26
Praktická část
Obr. 2
Prostředí programu Rhinoceros
4.2.2
Tisk šachových figurek
Vzhledem k využití šachových figurek není potřeba tisknout figurky plné, tzn. modely figurek jsou uvnitř tvořeny pouze sestavou podpěr a vzduchovými bublinami. Ke standardní práci s figurkami není potřeba jejich větší odolnosti, kterou by měly, kdyby se tiskly plné a bez dutin. Další výhodou tohoto tisku je úspora materiálu. Vzhledem k velikosti figurek bude v tomto případě úspora poměrně malá, ale při tvorbě větších objektů může hrát velkou roli ve spotřebě materiálu. Vzhledem k tvaru některých figurek je potřeba zvolit tisk i se supportem. To se týká především figurek, které se svým tvarem zužují a opět rozšiřují (např. pěšec s kulatou hlavičkou). Během tisku nestačilo úzké místo dostatečně rychle schnout a tím pádem se vrchní část zhroutila.
4.3 Manipulace s figurkami Posun figurek zajišťuje manipulátor Katana. Manipulátor pohybuje objekty pomocí univerzálního uchopovače. Univerzální uchopovač Katany se skládá z těla uchopovače a dvou čelistí, které obsahují infračervené, lokální snímače síly a mohou obsahovat i snímače vodivosti viz Obr. 3. Signály jsou předzpracovány přímo mikrokontrolerem čelistí. Digitalizované signály jsou poté poslány přes konektory k základní desce Katany (Neuronics AG, 2006).
Praktická část
27
Obr. 3 Univerzální uchopovač Zdroj: Návod k použití robotů Katana, 2006
Vzhledem k nepravidelnému tvaru některých figurek (např. kůň) by mohlo docházet k chybám při uchopování. Nicméně i pokud by byla figurka pevně uchycena, nelze v tomto případě zajistit, že figurka bude ve středu čelistí a mohla by tak nastat kolize při upuštění figurky nad novým políčkem. Z tohoto důvodu bylo rozhodnuto o využití elektromagnetu, kterým bude Katana pohybovat při transportu figurek. 4.3.1
Elektromagnet
Výhodou elektromagnetu je rovněž redukce drobnějších nepřesností v řádech jednotek milimetrů, které může Katana způsobit. Figurka bude pomocí magnetických sil ve středu elektromagnetu, i pokud při výpočtu středu daného políčka vznikne drobná odchylka. Úchop či upuštění figurky bude řízeno sepnutím a následným vypnutím elektromagnetu. Pro přesné vycentrování uchycených figurek bylo využito uchycení elektromagnetu ve tvaru koule. Ovšem i v ohledu uchopení elektromagnetu bylo rozhodnuto, že nebude uchopen čelistmi Katany. Pokud by u Katany nastala neočekávaná chyba, musela by se po odstranění chyby opět kalibrovat, což v praxi znamená, že se čelisti rozevřou a zavřou, takže elektromagnet by z čelistí vypadl. Proto byl vyroben speciální uchopovač přesně na míru elektromagnetu (Obr. 4), který je možné spojit s manipulátorem bez pomoci čelistí.
28
Praktická část
Obr. 4
Uchopovač elektromagnetu
4.3.2
Úprava figurek
Samotné šachové figurky z termoplastické hmoty nejsou ovšem magnetické, a tak je potřeba jejich skladbu doplnit o magnety. Nejjednodušším řešením je přilepení magnetu na každou figurku, ale toto řešení není esteticky zcela vhodné. Proto je potřeba magnet importovat do těla každé figurky. Nejlepší volbou v tomto případě bylo využití válcového magnetu o průměru 12 mm a o výšce 1 mm. K tomuto účelu bylo potřeba pozměnit návrhy jednotlivých figurek. Každá figurka byla horizontální rovinou rozdělena na dvě části. První část tvořila většinu z původní figurky a byla doplněna o prohlubeň rozměrově shodnou s daným magnetem. Střed prohlubně byl určen podle vertikální osy každé figurky. Druhá část tvořila zbytek původní figurky, která zakryla magnet. Vzhledem k síle importovaného magnetu výška druhé části figurky nesmí přesáhnout 5 mm. Obě části i magnet byly společně spojeny pomocí lepidla.
Praktická část
Obr. 5
29
Upravený model pěšce
4.4 Modul pro rozpoznání v obraze Rozpoznání herní partie v obraze slouží především ke kontrole herního pole. Hlavní úlohou zde bude detekování všech platných figurek během hry. Pokud nebude detekován očekávaný počet figurek, modul ohlásí chybu. V opačném případě modul vrátí matici, která reprezentuje hrací desku i s informacemi o poloze figurek. Po stanovení základních parametrů a seznámení se s daným prostředím bylo předmětem vývoje i testování bylo hned několik algoritmů, které se poté porovnaly. Na konci testování byl pak vybrán nejefektivnější z nich. 4.4.1
Barevné rozpoznávání
Veškeré parametry herní scény se budou vyhodnocovat pomocí barevného rozpoznání obrazu. Jednotlivé sady šachových figurek budou rozlišeny pomocí odlišných barev. Detekce tvaru figurek je v tomto případě zcela zbytečná. Typ figurky není potřeba ověřovat, protože je možné si jej uchovat u každé figurky před začátkem herní partie, kdy je rozpoložení šachových figurek pokaždé stejné. 4.4.2
Kamera
Ke snímání obrazu bylo využito webové kamery Microsoft LifeCam studio. Tato kamera umožňuje snímat obraz ve vysokém rozlišení 1080p a v tomto rozlišení je schopná snímat scénu pomocí jednotlivých fotek i nahrávat video. Je vybavena automatickým ostřením, což zajišťuje ostrý obraz už od vzdálenosti 10 cm. Také podporuje formát širokoúhlého videa (Microsoft Hardware, 2013).
30
Praktická část
Vzhledem k tomu, že modul vyhodnocuje pouze barvu jednotlivých figurek, byla kamera umístěna nad herní plochu. Je důležité zvolit vhodnou pozici tak, aby kamera byla schopná zachytit celou partii. K detekci tedy zcela postačí pouze jedna kamera a není potřeba dalších podpůrných zařízení, jako tomu bylo u některých jiných šachových automatů. 4.4.3
Barevné rozlišení figurek
Vzhledem k pozici kamery byly změněny standardní barvy u obou sad šachových figurek. Důvodem je barevné rozložení šachovnice, mohou tak vznikat kolize při detekování černých figurek na černých polích a bílých figurek na bílých. Z tohoto problému tedy vyplývá, že jednotlivé sady figurek mohou mít jakékoliv rozdílné barvy kromě černé a bílé. Pro tyto účely bylo využito dvou základních barev z RGB modelu, tedy červené a modré. 4.4.4
Získání vstupních dat
Tato část je pro všechny algoritmy totožná. Jedná se o získání snímku šachovnice z webkamery ve snímku formátovaném v RGB modelu. Obraz je nahrán ve vysokém rozlišení 1920×1080 pixelů. Následně je uložen v instanci třídy cv::Mat, která jej reprezentuje jako matici bodů/pixelů. Kvůli nedokonalosti webkamery je nutné získaný obraz kalibrovat. Původní snímek je po krajích mírně deformován vlivem soudkovitého zkreslení, což je dáno čočkou objektivu. Po kalibraci jsou okraje snímku srovnány. 4.4.5
Algoritmus detekce středů figurek
Hlavní myšlenkou tohoto algoritmu je detekce šachovnice pomocí středů šachových figurek. Teoreticky je tento postup umožněn, protože díky kuželovitým prohlubním je zajištěno, že figurky se nachází uprostřed políčka. Algoritmus vyhledá středy určitých figurek, podle kterých se pak rekonstruuje zbytek herního pole. K určení hodnoty, podle které se vypočítá zbytek šachovnice, postačují pouze dvě sousedící figurky. Prvním zkoumaným algoritmem bylo porovnání sousedících pixelů s pixelem zkoumaným. Na začátku probíhá převod obrazu z RGB do HSV modelu, ve kterém probíhá veškeré další zpracování. Model HSV je pro zkoumání barev vhodnější než model RGB. Po převodu bylo každému pixelu přiřazeno ohodnocení číslem 0. Poté se celý obraz procházel pixel po pixelu. Zkoumala se nejprve jeho hodnota, poté hodnoty okolních pixelů (vlevo, vpravo, nahoře, dole). Pokaždé, když byla barva pixelu detekována jako barva náležící figurce, bylo inkrementováno ohodnocení zkoumaného pixelu.
Praktická část
Obr. 6
31
Detekce středů pomocí ohodnocení pixelů
Jak je možné vidět na Obr. 6, tento algoritmus neurčí pouze jeden pixel, ale hned několik možných středů. Tato skutečnost se dá eliminovat několika způsoby. Prvním je zkoumání i rohových sousedů daného pixelu (např. vlevo nahoře, vlevo dole). Během testování tohoto způsobu byly ale výsledky pouze nepatrně přesnější. Větší přesnost se ale dá získat pomocí druhého podobného průchodu maticí ohodnocení jednotlivých pixelů. Opět se prochází celá matice a zkoumá se ohodnocení pixelu, vzhledem k ohodnocení okolních. Pokud jsou zkoumaný pixel a jeho sousedé ohodnoceny maximální hodnotou z předchozího testování (5 nebo 9 podle počtu zkoumaných pixelů) nebo vyšší, tak je hodnota zkoumaného ohodnocení rovněž inkrementována. I když i tato metoda při testování občas označovala více pixelů, přesnost již byla taková, že za střed se dal určit jakýkoliv označený pixel. Výhoda tohoto algoritmu spočívá především v jeho funkčnosti na jakémkoliv tvaru figurek. Nevýhodou je ovšem jeho vysoká časová náročnost. Algoritmus byl efektivní pouze na snímcích upravených pro toto konkrétní testování o rozměrech do 100×100 pixelů. Při testování na standardním vstupu z webkamery (rozlišení 1920×1080), trvalo zpracování déle než 10 sekund, což bylo vyhodnoceno jako neefektivní pro tuto práci. Druhým testovaným algoritmem tohoto typu byla detekce středu pomocí dvou úhlopříček daných figurek. Bod, ve kterém se tyto úhlopříčky protnuly, byl zvolen jako střed figurky. Tento algoritmus je mnohem méně časově náročný, avšak také se nedá považovat za uspokojivý. Hlavním nedostatkem je tvar figurek z horního pohledu, který v tomto případě musí být co možná nejdokonalejší kruh. V tomto případě je tedy vyloučeno využití například šachového koně. Vzhledem k tvaru figurek použitých v této práci by bylo možné využití pouze pěšců pro dané měření. Nicméně i tato volba nemusí být zcela korektní, vzhledem k faktu, že ša-
32
Praktická část
chovnice se nemusí nacházet přesně pod webkamerou, a tak mohou být pod určitými úhly tvary figurek zkresleny, což zapříčiní nepřesnost měření. Oba zkoumané algoritmy pro detekci středů jsou použitelné, avšak nesplňovaly konkrétní podmínky ve zkoumaném prostředí. Proto ani nebyly dále testovány. Jejich výhodou je ovšem možná aplikace na jakoukoliv sadu šachových figurek na herní desce o libovolných rozměrech. 4.4.6
Algoritmus barevné detekce šachovnice
Stejně jako v předchozím algoritmu, barevná detekce probíhá v barevném modelu HSV. Obraz se opět zpracovává postupně pixel po pixelu stejně tak jako při standardním průchodem matice. Nyní je ovšem důležité detekovat samotnou herní plochu a zpracovávat pouze potřebnou část obrazu. Většina snímku tvoří pouze okolí, které není potřeba dále zpracovávat a vzhledem k rozlišení 1920×1080 by se muselo zpracovávat celkem 2073600 pixelů, což, jak bylo uvedeno výše, může být výpočetně velmi náročné. Detekce šachovnice začíná nalezením dvou pixelů, které odpovídají šachové figurce. První z nich je umístěn co nejvíce vlevo, druhý odpovídá nejvrchnějšímu. Sloučením potřebných souřadnic těchto dvou bodů vzniká bod, který je považován a levý horní bod hrací desky. Tímto postupem se rohový bod nalezne lépe, než pouhým detekováním prvního potřebného pixelu, protože vzhledem k průchodu obrazem tím není zaručeno, že to bude zrovna potřebná část věže.
Obr. 7
První nalezený modrý pixel
Následuje nalezení spodního pravého bodu šachovnice, který se hledá obdobným způsobem, detekce nejspodnějšího a nejpravějšího bodu, které odpovídají barvě opačné figurky a jejich následná kombinace. Z těchto dvou bodů se určí parametry, které jsou využity ve funkci pro vyříznutí obrazu. Po detekci desky se vypočtou dvě hodnoty: jedna osmina šířky a jedna osmina délky. Díky těmto hodnotám je možné určit pozici jakéhokoliv políčka.
Praktická část
Obr. 8
33
Automatická detekce políček
Na Obr. 8 je možné vidět, že detekce jednotlivých políček nemusí být vždy perfektně přesná a některé figurky (hlavně kůň) mohou být detekovány i v sousedních políčkách, nicméně pokud porovnáme jednotlivé části figurky v obou polích, je možné považovat chybu za zanedbatelnou. Následuje průchod obrazem po jednotlivých políčkách. Jednotlivá políčka se rovněž zpracovávají pixel po pixelu. Pokud je počet pixelů, které náleží červené či modré figurce větší než 50%, vyhodnotí se toto pole jako obsazené danou barvou. Tento zkoumaný algoritmus se jevil jako časově nenáročný. Rovněž poměrně dobře reagoval i na zkreslení způsobené různými úhly snímání obrazu. Největší nevýhoda ovšem spočívá v aplikaci tohoto algoritmu v daném prostředí. Pro toto řešení je potřeba, aby plocha, na které šachovnice leží, byla jiné barvy, než jakou jsou obarveny obě sady figurek. Během testování byl v 100 % chybně vyhodnocen roh pro modré figurky, což bylo dáno nevhodným prostřením pro tento algoritmus. Jako potenciální roh byly označovány pixely především z vyznačené hranice na Obr. 9. Tento problém byl vyřešen vyříznutím problematické části v obrazu, nicméně toto řešení je nevhodné. Pokud by byl v budoucnosti šachový automat přemístěn na jinou pozici, mohlo by se tak přijít o část obrazu.
34
Obr. 9
Praktická část
Vyznačení problémové hranice
Další nevýhodou je náchylnost na různé světelné podmínky. Při optimálních podmínkách bylo během testování za potřebí nejvýše tří snímků k úspěšné detekci šachovnice. Ovšem za špatných světelných podmínek byla detekce šachovnice úspěšná v 20 % případů. 4.4.7
Algoritmus detekce šachovnice pomocí hran
Posledním zkoumaným principem bylo detekování herní plochy pomocí hran šachovnice. Kromě práce s barvami umožňuje OpenCV i detekování hran různých předloh. Nicméně šachovnice je poměrně specifický objekt a existuje speciální funkce pouze pro detekování rohových bodů na šachovnici. Pro přesnější výsledky je vhodné zkoumaný obraz ještě před použitím funkce převést do formátu osmibitové šedé škály. Ovšem během testování bylo zjištěno, že tento způsob detekce je možný pouze s prázdnou šachovnicí. Při umístění figurek mohou některé překrývat jednotlivé hrany políček a znehodnotit tak celý proces. Celá detekce je i značně časově náročná. Na testovaném počítači opakovaně trvala okolo devíti sekund. Po detekci je možné rozmístit všechny figurky a začít hru. Je však velmi důležité, aby se v pozdějších fázích už nemanipulovalo s herní deskou, poté by se opět musela provádět detekce plochy.
Praktická část
Obr. 10
35
Detekce rohových bodů šachovnice
Jak je možné vidět na Obr. 10, funkce určí pouze body uvnitř šachovnice, zbylé krajní body je potřeba dopočítat. Určení všech ostatních bodů se provádí pomocí konstanty, která se určí ze vzdálenosti mezi body č. 1 a 2. Poté se určí polovina vzdálenosti mezi body č. 1 a 2 a polovina vzdálenosti mezi body č. 2 a 3, díky kterým se určí konstanta pro výpočet středu políčka. Následuje rekonstrukce celé herní plochy (Obr. 11).
36
Obr. 11
Praktická část
Rekonstrukce herní plochy
Na Obr. 11 je rovněž možné pozorovat drobné nepřesnosti v poslední řadě figurek. Ty jsou zapříčiněny především nepatrným pootočením celé desky a tím, že výpočet konstanty pro okolní body probíhá pouze pomocí vzdáleností dvou bodů. Existuje možnost přesnějšího výpočtu například průměrem z více takto vypočítaných vzdáleností. Během testování se ovšem ukázalo, že i takto vypočítané hranice svému účelu postačují. Samotná detekce figurek pak spočívá ve zkoumání okolí středů jednotlivých políček. V této práci bylo k tomuto účelu využito matice 11×11 pixelů, kdy střed matice je na stejném místě, jako střed každého políčka. Tato matice se může libovolně zvětšovat či zmenšovat dle konkrétních potřeb.
Obr. 12
Zkoumané okolí středů
Vzhledem k tomu, že se zkoumá pouze střed políček, je možné stanovit přísnější podmínku pro vyhodnocení barvy figurek. V tomto případě byla tato podmínka stanovena na 90 % pixelů.
Praktická část
37
Tento algoritmus je nejpřesnější ze všech zkoumaných. Jeho nevýhodou je velmi časově náročná detekce herní plochy, ale detekci je možné provádět pouze před začátkem partie, pokud bude zaručeno, že se s herní plochou dále nebude manipulovat. Kromě toho je ale určení barvy figurek nejrychlejší. Proto byl tento algoritmus rozdělen do dvou funkcí, a to pouze na detekování šachovnice a pouze na detekování obsahu políček. Ovšem i tento algoritmus je stejně jako druhý testovaný velmi citlivý na světelné podmínky. Výsledky testování jsou zaznamenány v Tab. 2. Tab. 2
Testování detekce šachovnice pomocí hran
Světelné podmínky Dobré Špatné
Detekce šachovnice 90% 20%
Detekce figurek 98% 20%
Testování probíhalo pouze na jednotlivých snímcích. Chybné detekování šachovnice nepředstavuje kritickou chybu, protože poté se může celý proces opakovat na dalším novém snímku tak dlouho, dokud nebude šachovnice úspěšně načtena. 4.4.8
Ukončení práce modulu
Po průchodu každým políčkem se výsledek detekování figurky zaznamená do matice, která reprezentuje herní plochu. Přípustné hodnoty dané matice jsou: • 0 pro prázdné pole • 1 pro pole obsazené modrou figurkou • 2 pro pole obsazené červenou figurkou
38
Závěr
5 Závěr Cílem práce bylo vytvoření 3D šachových figurek a sestavení modulu pro jejich rozpoznání v obraze. K vymodelování figurek bylo využito CAD nástroje Rhinoceros. Obě vytištěné sady figurek splňují všechny předem dané parametry a je možné jejich využití při reálné hře i s manipulátorem Katana. Při tvorbě softwarového modulu pro rozpoznání v obraze byly zkoumány a testovány celkem tři algoritmy. Výsledky testů jsou popsány v příslušných kapitolách. Všechny algoritmy zpracovávají obraz ve formě matice, proto správně pracují pouze ve stavu, kdy je šachovnice umístěna paralelně s webkamerou. Z tří zkoumaných algoritmů vyhovovaly daným podmínkám pouze dva. Detekce šachovnice na základě barev i na základě hran dokázaly úspěšně nalézt herní plochu a rozdělit ji na jednotlivá políčka. Funkčnost obou algoritmů ovšem závisí na dobrém osvětlení herní scény. Při špatném osvětlení velmi často šachovnice nebyla úspěšně detekována. Rovněž i při detekci jednotlivých políček některá z nich modul vyhodnotil chybně, a to i při zvětšení barevné škály pro jednotlivé sady figurek. Po testování byl zvolen jako nejlepší algoritmus detekování šachovnice na základě hran, který šachovnici označil nejpřesněji. Díky tomu je možné prohledávat pouze okolí středů políček a ne jejich celé plochy, což zrychlí celý proces rozpoznávání. Modul je funkční a může být využit v práci šachového automatu.
Literatura
39
6 Literatura ABOUT | OpenCV. ITSEEZ. OpenCV [online]. 2014 [cit. 2014-05-01]. Dostupné z: http://opencv.org/about.html BRADSKI, G R. -- KAEHLER, A. Learning OpenCV : computer vision with the OpenCV library. Farnham: O'Reilly, 2008. 555 s. ISBN 978-0-596-51613-0. DOSTÁL, R. C/C++ : hotová řešení. 1. vyd. Brno: Computer Press, 2009. 376 s. ISBN 978-80-251-2190-0. GONCALVES, JOSÉ, JOSÉ LIMA A PAULO LEITAO. DEPARTAMENTO DE ELECTROTECNIA, Quinta de Sta Apol´onia. CHESS ROBOT SYSTEM: A MULTI-DISCIPLINARY EXPERIENCE IN AUTOMATION. 2013, 8 s. LifeCam Studio. Microsoft Hardware [online]. 2013 [cit. 2014-05-11]. Dostupné z: http://www.microsoft.com/hardware/cs-cz/p/lifecam-studio MATUSZEK, CYNTHIA, BRIAN MAYTON, ROBERTO AIMI, MARC PETER DEISENROTH, LIEFENG BO, ROBERT CHU, MIKE KUNG, LOUIS LEGRAND, JOSHUA R. SMITH A DIETER FOX. Gambit: A Robust Chess-Playing Robotic System. 2013, 7 s. NEURONICS AG. Návod k použití robotu Katana. 2006, 62 s. POLESNÝ, DAVID A JAKUB ČÍŽEK. Týden Živě 264: 3D tiskárna do bytu Up! Mini – Živě.cz. Živě.cz [online]. 2014 [cit. 2014-04-16]. Dostupné z: http://www.zive.cz/clanky/tyden-zive-264-3d-tiskarna-do-bytu-up-mini/sc3-a-172389/default.aspx PRATA, S. Mistrovství v C++. 3. vyd. Brno: Computer Press, 2007. 1119 s. ISBN 97880-251-1749-1. PROCHÁZKA, D. Přednášky k předmětu Programovací jazyk C++. [online]. 2009. URL: http://is.mendelu.cz/eknihovna/slozky_objekty.pl?slozka=21;zobrazit= 1239;typ=opora.
40
Literatura
PROCHÁZKA, D. Přednášky z předmětu Základy objektového návrhu. [online]. 2009. URL: http://is.mendelu.cz/eknihovna/slozky_objekty.pl?slozka=21;zobrazit= 1241;typ=opora. SimpleCV: SimpleCV Tutorial - Tutorial. SIGHT MACHINE. SimpleCV [online]. 2013 [cit. 2014-05-03]. Dostupné z: http://tutorial.simplecv.org/en/latest/ STROJNET. Obráběcí stroje a technika. Bazar strojů, katalogy, novinky, videa [online]. 2011 [cit. 2014-03-15]. Dostupné z: http://www.strojnet.cz/clanky/obrabecistroje-cnc.php Úlohy pro praktickou výuku zpracování obrazových dat. Web - ČVUT v Praze [online]. 2011 [cit. 2014-04-20]. Dostupné z: http://www.fbmi.cvut.cz/files/predmety/3528/public/Metody%20rozpozn %C3%A1n%C3%AD%20objekt%C5%AF%20v%20obrazu.pdf URTING, DAVID A YOLANDE BERBERS. DEPARTMENT OF COMPUTER SCIENCE CELESTIJNENLAAN. MarineBlue: A Low-Cost Chess Robot. 2013, 6 s. VYTEČKA, M. Šachový automat s využitím manipulátoru Katana. Diplomová práce. Brno: MENDELU Brno, 2013. 61 s.
Přílohy
41
Přílohy
42
Fotografie šachových figur
A Fotografie šachových figur
Obr. 13
Pěšec
Obr. 14
Věž
Fotografie šachových figur
Obr. 15
Kůň
Obr. 16
Střelec
43
44
Fotografie šachových figur
Obr. 17
Dáma
Obr. 18
Král