Switcheable Detection¶
Koncept:
- Při vytváření Enginu je možné zvolit jednu nebo více detekčních metod.
- Způsob zadání jedné detekční metody
Creator::DesktopArEngineDirector* engineCreator = new Creator::DesktopArEngineDirector(Creator::ConfigFileType_PlainText); engineCreator->setDetectionMethod("/etc/settings.golay"); engineCreator->setDetectionMethodMarkerDefinition("/etc/markers") Creator::ArEngineInterface* arEngine = engineCreator->createArEngine(); delete engineCreator; // Uvolnění engineCreatoru z paměti. arEngine->start();
- Pokud je konfigurace složitější, například v případě aplikace více detekčních metod, je nutné nejprve definovat definovat metody detekční strategie a poté každou detekční metodu zvlášť. Za tímto účelem vrací metoda setDetectionMethod objektDetectionMethodBuilder, v případě přepínání detekčí metod, se jedná o potomka SwitcheableDetectionMethodBuilder.
Creator::DesktopArEngineDirector* engineCreator = new Creator::DesktopArEngineDirector(Creator::ConfigFileType_PlainText); // Nejprve nastavím kořenový detection builder. SwitcheableDetectionMethodBuilder* detectionMethodBuilder = (SwitcheableDetectionMethodBuilder) engineCreator->setDetectionMethod("/etc/switchMethodSettings"); // Poté přidám metody, které obsahuje. detectionMethodBuilder->addDetectionMethod("/etc/settings.golay"); detectionMethodBuilder->addDetectionMethod("/etc/settings.surf"); engineCreator->setDetectionMethodMarkerDefinition("/etc/markers") Creator::ArEngineInterface* arEngine = engineCreator->createArEngine(); delete engineCreator; // Uvolnění engineCreatoru z paměti. arEngine->start();
- Způsob zadání jedné detekční metody
Metody addDetectionMethod opět vracejí příslušný builder. Je tedy teoreticky možné takto vytvořit stromovou detekční struktu, která je schopná pružně reagovat na změny v obraze.
- Detekční strategie budou implementovány jako potomci abstraktního objektu AbstractSwitchableMarkerDetection.
Liší se metodou jako vybírají a používají zvolené detekční metody.- PrioritySwitchMarkerDetection tato třída používá detekční metody podle pořadí, v jakém byli nadefinovány. Nejprve použije vždy první metodu, pokud ta selže (nenajde marker) použije metodu další.
- FastSwitchMarkerDetection tato třída zrychluje detekci. Nejprve se pokusí v najít markery v okolí dříve nalezených, pokud neuspěje (nebo při zpracování každého X-tého snímku) použije druhou metodu na prohledání celého obrazu.
- PrecisionMarkerDetection Metoda používá všechny detekční metody. První metoda prohledává celý obraz, každá další prohledává pouze okolí marketu, která našla předchozí metoda. Cílem je maximalizovat přesnost nalezené pozice a přitom minimalizovat čas.