• 2023-07-17

Pontfelhő maszkolás és felszín generálás CloudCompare-ben

Pontfelhő maszkolás és felszín generálás CloudCompare-ben

Pontfelhő maszkolás és felszín generálás CloudCompare-ben 1024 576 SurveyTransfer

Egy fotogrammetriai vagy LiDAR feldolgozást követően előálló pontfelhőt tisztítani kell, ez CloudCompare-ben is lehetséges: a feleslegesen leképződött határok levágása, zavaró, rossz helyen létrejött pontok szűrése és törlése, stb. A tisztítás során felmerülhet az igény a pontfelhő maszkolására, azaz a vizsgált térrészen belül a zavaró geometriák kivágására. A maszkolás után adathiány keletkezik, ez pótolható valamilyen szempontrendszer alapján. A pontfelhők maszkolására kimondottan jó eszköz a CloudCompare. A CloudCompare egy ingyenes, nyílt-forráskódú szoftver, ami remek eszközpalettát biztosít a pontfelhők elemzésére. A CloudCompare szoftvert IDE kattintva éred el.

A CloudCompare kimeneti fájljai nagyméretű pontfelhők, ortomozaikok, digitális magasságmodellek (DEM) és 3D modellek lehetnek. Ezeket nehéz lehet megosztani az ügyféllel és a kollégákkal, ezért erősen ajánlott a SurveyTransfer adatmegosztó szoftver használata! További információkért keresd fel a szoftvergyártó weboldalát IDE kattintva.

Mikor is lehet szükség egy pontfelhő maszkolására és egy új felszín generálására? Két konkrét példát is mondok… Vegyük az egyszerűbb esetet először. Egy pontfelhőn vannak olyan épületek, növények, fák, munkagépek és egyéb objektumok, amiket szeretnél kitörölni a felvételezésedből, majd ezek helyét pótolnád egy síkkal.

A másik példa már egy bonyolultabb szituáció. Tételezzük fel, hogy anyagdepók térfogatát kell felmérned egy bányában vagy egy építkezésen. Az anyagdepók nekitámaszkodnak egy egyenetlen, dőlt falsíknak. Amennyiben ez a szituáció áll fenn, úgy nem tudod egy egyszerű síkkal meghatározni az anyagdepó térfogatát, hiszen a számításod így komoly hibával lesz terhelve. A problémát jól szemlélteti a következő ábra.

point cloud CloudComapre mask pontfelhő maszkolás

Ennek a problémának két lehetséges megoldása van. Kétszer mérsz fel (anyagdepó előtti és utáni állapotot), majd ezeket a pontfelhőket veted össze és mérsz térfogatot. A másik megoldás, hogy egy pontfelhő alapján maszkolod az anyagdepót (ábrán Stockpile) és az adathiányos térrészre (ábrán Volume calculation error) interpolálsz egy új felszín CloudCompare-ben. Utóbbi lehetőséget körbejárjuk a cikk folytatásában!

CloudCompare – Pontfelhő maszkolása 1. – CSF Plugin

A CloudCompare CSF (cloth simulation filtering) pluginjáról egy korrábbi írásunkban már esett szó, de újra leírom a módszer lényegét. Sokszor előfordul, hogy nem a teljes pontfelhő felszínére (Digital Surface Model), hanem annak csak a terepfelszínre (Digital Terrain Model) van szükség, azaz az épületeket, fákat és egyéb elemeket maszkolni kell.

point cloud CloudComapre mask pontfelhő maszkolás

Látszólag nem egyszerű feladat, de a CloudCompare CSF (cloth simulation filtering) pluginja segít a pontfelhő maszkolásában. Röviden és konyhanyelven leírom, hogy mit is csinál a CSF a pontfelhővel: a pontfelhő teljes felszínét a feje tetéjére fordítja, majd egy virtuális ruhadarabot helyez rá. Az épületek, növényzet és egyéb objektumok ezen az invertált állományon negatív geometriaként jelennek meg. A pontfelhő ezen „mélyedéseibe” csak korlátozottan illeszkedik a ruhadarab. A ruhadarab mesh modellje fogja jelenteni a feltételezhető terepfelszínt.

point cloud CloudComapre mask pontfelhő maszkolás

A CSF módszer jó megoldás, ha épületeket, fákat vagy munkagépeket akarsz maszkolni. A példa kedvéért kettő munkagépet maszkoltam ki.

point cloud CloudComapre mask pontfelhő maszkolás
point cloud CloudComapre mask pontfelhő maszkolás

CloudCompare – Pontfelhő maszkolása 2. – Manuális megoldás

A CloudCompare manuális pontfelhő maszkolása segít a korábban említett komplex módon elhelyezkedő anyagdepók mérésében. Nézzük meg, hogyan lehet a következő példában a törmeléket megfelelően maszkolni, majd megmérni annak térfogatát!

Megjegyzés: A CloudCompare néha munkamenet közben leáll, ezért javaslom, hogy rendszeresen mentsd el az egész munkádat. Ezt úgy teheted meg, ha az összes réteget kijelölöd a DB Tree-ben, majd a menüsávban a floppy ikonra kattintasz és egy „.bin” fájlt mentesz el. Sajnos ezt ugyanígy kell megtenned minden egyes mentés során.

point cloud CloudComapre mask pontfelhő maszkolás

Első lépésben CloudCompare-ben kell megnyitni a maszkolni kívánt pontfelhőt. A Segment (point cloud CloudComapre mask pontfelhő maszkolás) funkcióval körberajzolható a maszkolandó objektum. Ez az eszköz a felső menüsávból érhető el. Aktiválva, megjelenik egy külön funkcióablak. Ekkor már elkezdhető a maszkolandó tereptárgy körberajzolása. Töréspont bal egérgombbal rakható le és az alakzat a jobb egérgombbal zárható. Ezután a Segment out (point cloud CloudComapre mask pontfelhő maszkolás) gombbal lehet ténylegesen maszkolni a pontfelhőt.

point cloud CloudComapre mask pontfelhő maszkolás

A maszkolási metódus lezárásához a Confirm Segmentation (point cloud CloudComapre mask pontfelhő maszkolás) opciót kell választani. Ilyenkor a CloudCompare DB Tree-ben két pontfelhő jelenik meg: maszkolt (szegmentált) és visszamaradt pontfelhő. Javaslom, hogy ne töröld ki a visszamaradt (anyagdepót reprezentáló) pontfelhőt, mert még jól jöhet. 🙂

point cloud CloudComapre mask pontfelhő maszkolás

CloudCompare – Maszkolt pontfelhőben keletkezett adathiány pótlása 1.

Amennyiben egy olyan különálló tereptárgyat, például egy munkagépet kell maszkolni a pontfelhőből, amit körbevesz a vizsgálandó terepszint, akkor elegendő a CloudCompare felső menüsávjából kiválasztani a Rasterize függvényt (point cloud CloudComapre mask pontfelhő maszkolás). Itt fontos, hogy az adathiányos területre (Empty cells/Fill with) az interpoláció legyen beállítva. Az Update grid nagy piros gombra kattintva megjelenik egy magasság szerint színezett előnézet. Mindezek után a Cloud gombra kattintva hozzáadhatod a CloudCompare rétegfájához az eredményt.

point cloud CloudComapre mask pontfelhő maszkolás

Jól látszik, hogy a létrehozott új pontfelhő (kék) szépen kitöltötte a maszkolás után keletkezett adathiányos területeket.

point cloud CloudComapre mask pontfelhő maszkolás

De mi a helyzet a másik maszkolási területtel, ott is alkalmazható ez a módszer? Ezen a területen kevésbé sikeres az interpoláció. Itt a maszkolás miatt nagy szintkülönbség alakult ki a rézsű felső és alsó része között, ezért a köztes részen „úgy gondolja” az algoritmus, hogy egy rámpaszerű lejtő várható. A következő fejezetben megmutatom, hogy ez hogyan javítható a pontfelhőn!

point cloud CloudComapre mask pontfelhő maszkolás

CloudCompare – Maszkolt pontfelhőben keletkezett adathiány pótlása 2.

Az előző fejezet végén felvázolt problémát úgy lehet megoldani, ha a maszkolás után fennmaradt pontfelhőn helyettesítő adatpontokat helyezünk el. Lássuk mindezt CloudCompare-ben!

A maszkolás után fennmaradt (anyagdepót megjelenítő) pontfelhőt jelöld ki a DB Tree-ből, majd válaszd ki a menüsávból a Point list picking (point cloud CloudComapre mask pontfelhő maszkolás) eszközt. Ezzel az eszközzel CloudCompare-ben pontokat helyezhetsz el a pontfelhőn bal egérgombbal kattintgatva. Úgy érdemes lehelyezni a pontokat, hogy azok X, Y koordinátái lekövessék a rézsű geometriáját. Nyilván ez a felhasználó becslésén alapuló eljárás, de az esetek többségében jól meghatározható, hogy hol is lehet a rézsű talpszintje. Minél sűrűbben helyezünk le pontokat, annál biztosabb, hogy az interpolációval jó eredményt kapunk.

point cloud CloudComapre mask pontfelhő maszkolás

A Point list picking eszközön belül a floppy ikon alatt lehet kimenteni a pontokat CSV fájlba (x,y,z). Ezt tegyük meg!

point cloud CloudComapre mask pontfelhő maszkolás

A Point list picking bezárható, majd a CloudCompare-ben maradva a másik maszkolt pontfelhőt (amiből hiányzik az anyagdepó) kiválasztva is el kell indítani a Point list picking eszközt. Amennyiben a rézsűtalp síkján elhelyezünk pontokat, úgy megkapjuk a Z koordináták értékeit is. Ez a példa esetében -178.62.

point cloud CloudComapre mask pontfelhő maszkolás

Notepad vagy Notepad++ programokban megnyitva a korábban kimentett CSV fájlt, átírhatók a Z koordináták értékei, ahova az előbb meghatározott rézsűtalp értékei helyettesíthetők be. 

Megjegyzés: Ha valamelyik irányba dől a felszín, úgy célszerű több pontot lehelyezni és többször lekérdezni a rézsűtalp magassági értékeit.

point cloud CloudComapre mask pontfelhő maszkolás

A CSV fájl elmentése után, az megnyitható CloudCompare-ben, ahol pontfelhőként jelennek meg a pontok.

point cloud CloudComapre mask pontfelhő maszkolás

Mindezek után, ha biztosak akarunk lenni abban, hogy az interpoláció nem hoz létre hibásan kinéző pontfelhőt, akkor a maszkolás helyén fellépő adathiányt könnyedén fel lehet tölteni plusz adatokkal. Ehhez CloudCompare-ben válaszd ki a Trace polyline (point cloud CloudComapre mask pontfelhő maszkolás) eszközt, majd kösd össze a maszkolt pontfelhőn látható sík pontjait a feltételezett rézsűtalp pontjaival. A feltételezett rézsűtalp pontfelhő pontjait is javasolt összekötni egymással a következő minta szerint. Ha kész vagy, nyomj a Trace polyline helyi menüjében a Confirm gombra (point cloud CloudComapre mask pontfelhő maszkolás).

point cloud CloudComapre mask pontfelhő maszkolás

Jelöld ki a CloudCompare DB Tree-ben az új polyline-t, majd válaszd ki az Edit/Polyline/Sample Points funkciót. Amennyiben megadunk egy tetszőleges pontszámot és leokézzuk a párbeszédablakot, úgy a berajzolt vonal mentén pontokat (egy új pontfelhőt) hoz létre a CloudCompare.

point cloud CloudComapre mask pontfelhő maszkolás

Megjegyzés: Ha van adat a lejtő névleges dőléséről, akkor CloudCompare-ben az Edit/Plane/Create funkcióval létrehozható egy egyszerű sík. Ezzel pontosítható a rézsű geometriája. Beállítható a sík centroidjának koordinátája, a dőlésiránya, dőlésszöge, magassága és szélessége. A létrejött sík tovább igazítható a Translate/Rotate funkcióval. Végezetül a síkból is pontfelhő gyártható a Sample Points funkcióval.

point cloud CloudComapre mask pontfelhő maszkolás_18_2

A pontfelhőket (maszkolt pontfelhő, Point list picking pontok, Trace polyline pontjai (+ a sík pontjai)) kijelölve a CloudCompare DB Tree-ben, összeolvaszthatók a pontfelhők egy újba. Ehhez az Edit/Merge funkciót kell kiválasztani. Ezután az összeolvasztott pontfelhőn lefuttatható a Rasterize függvény (point cloud CloudComapre mask pontfelhő maszkolás) interpolációval.

point cloud CloudComapre mask pontfelhő maszkolás

Érdekesség: A CloudCompare az interpoláció eredményének nem képes beállítani az eredeti/származtatott RGB színezést, de ez utómunkával visszaállítható akár QGIS alatt a WhiteboxTools eszközökkel.

Amennyiben a maszkolt pontfelhőt és a létrehozott interpolált pontfelhőt kijelölöd, úgy a Tools/Volume/Compute 2.5D volume függvénnyel kiszámolható az anyagdepó térfogata.

point cloud CloudComapre mask pontfelhő maszkolás

Természetesen ezek a kalkulációk is sokféle 2.5D, 3D fájlt eredményeznek, amiknek a megosztása nehézkes lehet. Próbáld ki a SurveyTransfert és tapasztald meg milyen, amikor könnyedén oszthatod meg a térinformatikai fájlokat másokkal!

Ha nagyon-nagyon tetszett, amit olvastál, akkor meg is oszthatod az ismerőseiddel. Ne fogd vissza magad! 🙂

Tetszett, amit olvastál? Akarsz hasonlókat olvasni?