Toto varování samozřejmě neznamená, že by virtuální přístroj
gl_camera, který pro svou činnost používá GPU, nedokázal měnit
velikost obrazu, se kterým pracuje. Virtuální přístroj můžete na
obrazovce zvětšovat a zmenšovat, a to i neproporčně, podle libosti.
Tak v čem může být problém?
Při vložení kroku měnícího velikost obrazu do řetězce
strojového vidění se objeví dialog s tímto varováním
Virtuální přístroj gl_camera využívá pro vykreslování obrazu z
kamery grafické rozhraní OpenGL. Pro zpracování obrazu využívá
mohutného masivně paralelního výkonu současných grafických procesorů.
Pomocí shaderů v jazyce GLSL dokáže v reálném čase s obrazem to, co je
prostřednictvím CPU počítače nerealizovatelné. Základem, na kterém je
vše postaveno, je tzv. vykreslovací kontext. Součástí tohoto kontextu,
který sídlí v grafické paměti spravované grafickým procesorem, jsou
např. fragmentové buffery obsahující vykreslovaný obraz, paměťové
pixelové buffery velké jako originální obraz z kamery, bufferové
objekty různých velikostí pro jednotlivé fáze zpracování obrazu,
buffery maskovacích šablon, vertexové objekty pro dodatkovou grafiku,
texturové objekty pro uschovávání obrazů, rasterizovaná písma,
množství přeložených a slinkovaných shaderů a mnoho dalšího. Toto vše
se musí při změně velikosti základního kontextu odstranit a vytvořit
znovu. Již toto samo o sobě je velmi paměťově a výkonově náročný
proces, ale to to stále ještě není ten hlavní problém. Potíž je v tom,
jak jednotlivé grafické ovladače spravují grafickou paměť. Objekty
často nejsou v grafické paměti uvolňovány okamžitě, ale o vše se
starají samostatné uklízecí procesy. A požadavky, při kterých jsou s
vysokou frekvencí odstaňovány a opět vytvářeny objekty v grafické
paměti mohou vést ke kolapsu těchto uklízecích procesů. Při masivním
používání změn velikosti obrazu je tedy dobré se pro danou grafickou
kartu a konkrétní verzi grafických ovladaču nejprve přesvědčit, zda-li
ovladače tuto zátěž zvládají.
I v případě ovladačů, které bez problémů zvládají opakované
odstraňování starých a vytváření nových objektů v grafické paměti,
zůstává tento proces náročným a silně zatěžujícím GPU i CPU počítače.
Náročnost je dobře vidět na rozdílu doby běhu řetězce GPU kroků
strojového vidění při prvním a všech dalších spuštění. První spuštění
může být i stokrát pomalejší než další běhu v trvalém provozu. V
aplikacích strojového vidění je vždy několik možností, jak požadavky
na změny velikosti obrazu řešit bez nepřetržitých změn velikosti
obrazu uvnitř jedné sekvence kroků virtuálního přístroje gl_camera.
Získáme tak nejen bezpečnější, ale také mnohonásobně rychlejší
aplikaci.
RC
|