Project

General

Profile

Switcheable Detection

Koncept:

  1. Při vytváření Enginu je možné zvolit jednu nebo více detekčních metod.
    1.  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();
      
      
    2. 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();
      
      

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.

  1. 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.
    1. 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ší.
    2. 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.
    3. 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.