What is a infinite cylinder?

Ajustarea Formelor în TreeLS: Cercuri și Cilindri

25/03/2022

Rating: 3.98 (11563 votes)

În era digitală, capturarea și analiza datelor spațiale au devenit esențiale într-o multitudine de domenii, de la cartografiere și construcții, până la silvicultură și fitness. În contextul inventarierii forestiere, obținerea unor măsurători precise ale trunchiurilor de copaci este crucială. Aici intervine TreeLS, un pachet puternic pentru R, care oferă instrumente avansate pentru prelucrarea norilor de puncte obținuți prin scanare laser terestră (TLS). Una dintre cele mai remarcabile funcționalități ale sale este ajustarea formelor geometrice – în special cercuri și cilindri – la segmentele de trunchiuri. Această capacitate ne permite să extragem parametri vitali precum diametrul și orientarea, transformând norii de puncte în informații structurate și utile. Funcția cheie care realizează această performanță este shapeFit, o metodă sofisticată care adaptează modele matematice la realitatea complexă a datelor din teren.

What is a cylinder_fitting Repo?
Object-oriented implementation of the cylinder_fitting repo by xingjiepan with input validation and type hints. Algorithm by David Eberly. As stated by David Eberly, the main assumption is that the underlying data is modelled by a cylinder and that errors have caused the points not to be exactly on the cylinder.

Funcția shapeFit din TreeLS este proiectată pentru a ajusta fie un cilindru 3D, fie un cerc 2D, pe un set de puncte 3D, extrăgând parametrii optimizați ai acestora. Versatilitatea sa este dată de capacitatea de a selecta tipul de formă (`shape` – 'circle' sau 'cylinder') și, mai important, de a alege algoritmul de optimizare (`algorithm`) cel mai potrivit pentru estimarea parametrilor. Această flexibilitate permite utilizatorilor să adapteze procesul de ajustare la calitatea și caracteristicile specifice ale datelor lor, asigurând acuratețe maximă chiar și în prezența zgomotului sau a anomaliilor. Este un instrument fundamental pentru oricine dorește să obțină măsurători precise din nori de puncte 3D, fie că este vorba de diametre de trunchiuri sau de alte structuri cilindrice.

Cuprins

Algoritmi de Optimizare pentru Ajustarea Formelor

TreeLS oferă o gamă variată de algoritmi pentru ajustarea cercurilor și cilindrilor, fiecare cu propriile sale avantaje și aplicații specifice. Acești algoritmi pot fi clasificați, în linii mari, în două categorii: cei robusti la outlieri și cei mai rapizi, dar mai sensibili la zgomot. Alegerea algoritmului potrivit depinde în mare măsură de calitatea norului de puncte și de cerințele de precizie.

Algoritmul RANdom SAmple Consensus (RANSAC)

Algoritmul RANSAC este o metodă iterativă, non-determinată, folosită pentru a estima parametrii unui model matematic dintr-un set de date care conține observații aberante (outlieri). Principiul său se bazează pe reeșantionarea repetată a subseturilor de date. La fiecare iterație, un subset minim de puncte (numit 'inliers') este selectat aleatoriu, iar un model este estimat pe baza acestora. Apoi, se calculează numărul de puncte din întregul set de date care se potrivesc cu modelul estimat (cu o anumită toleranță). Acest proces este repetat de un număr predefinit de ori, iar modelul cu cel mai mare număr de 'inliers' este considerat cel mai bun. RANSAC este extrem de eficient în gestionarea norilor de puncte zgomotoși, deoarece poate identifica și ignora outlierii, oferind o ajustare fiabilă. Numărul necesar de iterații (k) pentru a găsi cel puțin o dată un subset de 'inliers' este estimat prin formula: k = log(1 - p) / log(1 - w^n), unde p este nivelul de încredere dorit, w este proporția așteptată de 'inliers' în setul de date complet, iar n este numărul de observații eșantionate la fiecare iterație. Această metodă este ideală pentru datele din scanări TLS, care adesea conțin zgomot.

How do you find the best fit right circular cylinder?
Given a set of n n points {ri} {r i}, where ri = (xi,yi,zi) r i = (x i, y i, z i) , you want to find the best fit right circular cylinder to these points. The equation of a cylinder is (r − C)T(I −aaT)(r − C)− −−−−−−−−−−−−−−−−−−−√ = R (r − C) T (I − a a T) (r − C) = R

Algoritmul Iterative Reweighted Least Squares (IRLS)

IRLS este o altă metodă robustă, utilizată pentru estimarea parametrilor cercului sau cilindrului. Spre deosebire de RANSAC, care selectează subseturi, IRLS atribuie greutăți fiecărui punct în mod iterativ, reducând influența outlierilor. Această reponderare se face cu ajutorul estimatorilor M, care minimizează o funcție de eroare mai puțin sensibilă la valorile extreme decât suma pătratelor erorilor. După fiecare etapă de reponderare, se aplică o optimizare Nelder-Mead pentru a determina cei mai buni parametri ai formei pentru norul de puncte dat. Strategia de reponderare utilizată în TreeLS se bazează pe lucrările lui Liang et al. (2012). IRLS este de asemenea o alegere excelentă pentru datele cu zgomot, oferind o ajustare stabilă și precisă.

Algoritmii Nelder-Mead (NM) și QR

Pentru seturile de date care sunt deja curate, fără zgomot semnificativ, algoritmii NM (Nelder-Mead simplex) și QR (descompunere QR) oferă o alternativă mult mai rapidă și la fel de fiabilă. Metoda Nelder-Mead este o tehnică de optimizare directă, care nu necesită calculul gradientului și este adesea folosită pentru probleme de optimizare neliniară. Descompunerea QR este utilizată în contextul ajustării cercurilor prin metoda celor mai mici pătrate. Acești algoritmi sunt mai puțin robuști la outlieri decât RANSAC sau IRLS, dar sunt semnificativ mai rapizi atunci când datele de intrare sunt deja curate și de înaltă calitate. Aceasta îi face ideali pentru scenariile în care preprocesarea datelor a eliminat deja majoritatea zgomotului.

Metoda Brute Force (BF) pentru Ajustarea Cilindrului

Metoda Brute Force este un algoritm specific pentru ajustarea cilindrilor, care combină o abordare iterativă cu ajustarea cercurilor 2D. Această metodă rotește iterativ coordonatele norului de puncte reprezentând un singur cilindru, până la un prag predefinit. Pentru fiecare iterație de rotație, un cerc este estimat după aplicarea rotației. Rotația care minimizează cel mai mult parametrii cercului este apoi folosită pentru a descrie direcția axei cilindrului, împreună cu raza cercului. Această metodă este utilă pentru a găsi orientarea optimă a cilindrului, mai ales când axa acestuia nu este perfect verticală. Parametrul z_dev permite specificarea deviației maxime a unghiului (în grade, 0-90) pe care un cilindru îl poate avea în raport cu o axă verticală perfectă (Z = c(0,0,1)).

Ajustarea Cercului prin Metoda Celor Mai Mici Pătrate (2D)

Metodele de ajustare a cercurilor aplicate în TreeLS estimează parametrii cercului (coordonatele XY ale centrului său și raza) dintr-un set pre-selectat (de-zgomotat) de puncte, folosind o abordare bazată pe metoda celor mai mici pătrate. Aceasta se realizează prin aplicarea fie a descompunerii QR, utilizată în combinație cu algoritmul RANSAC, fie a optimizării simplex Nelder-Mead, combinată cu abordarea IRLS. Indiferent de algoritmul specific utilizat, scopul este de a minimiza suma pătratelor distanțelor de la punctele date la suprafața cercului modelat. Parametrii returnați de metodele de ajustare a cercului sunt:

  • X, Y: Coordonatele centrului cercului 2D.
  • Radius: Raza cercului 2D, în unitățile norului de puncte.
  • Error: Eroarea modelului cercului din ajustarea celor mai mici pătrate.
  • AvgHeight: Înălțimea medie a punctelor segmentului de trunchi.
  • N: Numărul de puncte aparținând segmentului de trunchi.

Ajustarea Cilindrului prin Metoda Celor Mai Mici Pătrate (3D)

Metodele de ajustare a cilindrului implementate în TreeLS estimează direcția axei și raza unui cilindru 3D. Algoritmul folosit intern pentru optimizarea parametrilor cilindrului este simplexul Nelder-Mead, care ia ca funcție obiectiv modelul ce descrie distanța de la orice punct la suprafața unui cilindru modelat, pe un nor de puncte cilindric 3D regulat. Această distanță, notată Dp, este definită ca: Dp = |(p - q) x a| - r, unde:

  • Dp: distanța de la un punct la suprafața cilindrului model.
  • p: un punct de pe suprafața cilindrului.
  • q: un punct de pe axa cilindrului.
  • a: vector unitar al direcției cilindrului.
  • r: raza cilindrului.

Algoritmul Nelder-Mead minimizează suma pătratelor Dp dintr-un set de puncte aparținând unui segment de trunchi – în contextul TreeLS. Această abordare permite o ajustare precisă chiar și pentru cilindri cu orientări arbitrare în spațiul 3D. Parametrii returnați de metodele de ajustare a cilindrului sunt:

  • rho, theta, phi, alpha: Parametrii estimați ai axei cilindrului 3D (conform Liang et al. 2012).
  • Radius: Raza cilindrului 3D, în unitățile norului de puncte.
  • Error: Eroarea modelului cilindrului din ajustarea celor mai mici pătrate.
  • AvgHeight: Înălțimea medie a punctelor segmentului de trunchi.
  • N: Numărul de puncte aparținând segmentului de trunchi.
  • PX, PY, PZ: Pozițiile absolute ale centrului punctelor segmentului de trunchi, în unitățile norului de puncte (utilizate pentru reprezentarea grafică).

Parametrii rho, theta, phi, alpha definesc poziția și orientarea axei cilindrului în spațiul 3D, oferind o descriere completă a geometriei trunchiului.

How to fit a cylinder to a point cloud?
model = pcfitcylinder(ptCloudIn,maxDistance) fits a cylinder to a point cloud with a maximum allowable distance from an inlier point to the cylinder. This function uses the M-estimator SAmple Consensus (MSAC) algorithm to find the cylinder.

Metoda Forței Brute pentru Ajustarea Cilindrului

Așa cum am menționat anterior, metoda forței brute de ajustare a cilindrului este o abordare unică, potrivită pentru estimarea unghiurilor de rotație ale axei cilindrului. Aceasta funcționează prin rotirea iterativă a coordonatelor norului de puncte, conform unui prag predefinit. Pentru fiecare iterație de rotație, un cerc este estimat după efectuarea rotației, folosind o metodă robustă precum RANSAC pentru cercuri 2D. Ideea centrală este de a găsi acea rotație care minimizează cel mai mult parametrii cercului, rotație care va descrie cel mai bine direcția axei cilindrului, împreună cu raza cercului rezultat. Această metodă este deosebit de utilă atunci când axa cilindrului este înclinată față de axa Z, permițând o estimare precisă a orientării. Parametrii returnați de metoda forței brute de ajustare a cilindrului sunt:

  • X, Y: Coordonatele centrului cercului 2D după rotație.
  • Radius: Raza cilindrului 3D, în unitățile norului de puncte.
  • Error: Eroarea modelului cercului din ajustarea RANSAC a celor mai mici pătrate, după rotație.
  • DX, DY: Unghiurile de rotație absolute (în grade) aplicate axelor X și Y, respectiv.
  • AvgHeight: Înălțimea medie a punctelor segmentului de trunchi.
  • N: Numărul de puncte aparținând segmentului de trunchi.

Această metodă, deși potențial mai intensivă computațional, oferă o soluție robustă pentru scenariile în care orientarea cilindrului nu este cunoscută a priori și poate fi înclinată.

Comparație a Algoritmilor de Ajustare a Formelor în TreeLS

AlgoritmTip de FormăRobust la OutlieriViteză (Date Curate)Metoda de BazăParametri Cheie
RANSACCerc, CilindruDaMedieRe-eșantionaren (nr. puncte/iterație), conf (nivel încredere), inliers (proporție așteptată)
IRLSCerc, CilindruDaMedieRe-ponderare iterativă, Nelder-Mead-
Nelder-Mead (NM)Cerc, CilindruNuRapidăSimplex-
QRCercNuRapidăDescompunere QR-
Brute Force (BF)CilindruDaMai LentăRotație iterativă + RANSAC 2Dz_dev (deviație unghiulară maximă)

Întrebări Frecvente (FAQ)

De ce este importantă ajustarea formelor în norii de puncte?

Ajustarea formelor geometrice (cum ar fi cercuri și cilindri) la norii de puncte este fundamentală pentru extragerea de informații precise și structurate din datele brute. În silvicultură, de exemplu, permite măsurarea automată și precisă a diametrului trunchiurilor și a înălțimii, esențială pentru inventarierea forestieră, estimarea volumului de biomasă și monitorizarea creșterii. În alte domenii, poate fi utilizată pentru controlul calității în producția industrială (ex: țevi), reconstrucția 3D a obiectelor sau chiar în vizualizarea medicală. Transformă un set de puncte dezordonate într-un model parametric ușor de analizat și utilizat.

Când ar trebui să folosesc un algoritm robust (RANSAC/IRLS) vs. unul rapid (NM/QR)?

Alegerea depinde în principal de calitatea datelor dumneavoastră. Dacă norul de puncte este zgomotos, conține multe observații aberante (outlieri) sau este incomplet, algoritmii robusti precum RANSAC și IRLS sunt de preferat. Aceștia sunt proiectați să gestioneze efectele zgomotului și să ofere o ajustare fiabilă. Pe de altă parte, dacă norul de puncte este deja curat, pre-procesat și cu un zgomot minim, algoritmii mai rapizi precum Nelder-Mead (NM) sau QR pot fi utilizați. Aceștia vor oferi rezultate precise într-un timp de calcul semnificativ mai scurt, dar sunt mai sensibili la prezența outlierilor.

How do cylinder fit methods work in treels?
The cylinder fit methods implemented in TreeLS estimate a 3D cylinder's axis direction and radius. The algorithm used internally to optimize the cylinder parameters is the Nelder-Mead simplex , which takes as objective function the model describing the distance from any point to a modelled cylinder's surface on a regular 3D cylinder point cloud:

Ce reprezintă 'eroarea' returnată de metodele de ajustare?

Parametrul 'Error' returnat de metodele de ajustare (fie pentru cerc, fie pentru cilindru) reprezintă o măsură a cât de bine se potrivește modelul geometric (cercul sau cilindrul) cu punctele din norul de date. De obicei, este vorba de suma pătratelor distanțelor de la fiecare punct la suprafața modelului ajustat. O valoare mai mică a erorii indică o potrivire mai bună și, implicit, o precizie mai mare a parametrilor estimați. Este un indicator crucial pentru evaluarea calității ajustării și pentru compararea performanței diferitelor algoritmi sau seturi de date.

Pot ajusta un cilindru perfect vertical?

Da, algoritmii de ajustare a cilindrilor din TreeLS pot gestiona diverse orientări, inclusiv cilindri perfect verticali. De fapt, în multe aplicații forestiere, trunchiurile sunt considerate aproximativ verticale. Algoritmii precum Nelder-Mead pot estima vectorul de direcție al axei cilindrului indiferent de orientarea sa. Pentru metoda forței brute (`bf`), parametrul z_dev permite specificarea deviației maxime a unghiului față de o axă verticală perfectă, ceea ce poate fi util pentru a ghida algoritmul către o soluție adecvată pentru trunchiuri aproape verticale, dar cu mici înclinații.

În concluzie, funcția shapeFit din TreeLS, împreună cu varietatea sa de algoritmi de optimizare, reprezintă un instrument puternic și flexibil pentru analiza norilor de puncte 3D. Fie că este vorba de cercuri 2D sau cilindri 3D, capacitatea de a selecta algoritmul potrivit – fie el robust pentru date zgomotoase, fie rapid pentru date curate – permite utilizatorilor să obțină măsurători precise și fiabile. Această precizie este fundamentală în aplicații precum inventarierea forestieră, unde detaliile geometrice ale trunchiurilor de copaci sunt de o importanță capitală pentru evaluarea resurselor și managementul durabil al pădurilor. Înțelegerea modului în care acești algoritmi funcționează și a parametrilor pe care îi returnează este cheia pentru a valorifica la maximum potențialul TreeLS și pentru a transforma datele brute din norii de puncte în informații acționabile și valoroase.

Dacă vrei să descoperi și alte articole similare cu Ajustarea Formelor în TreeLS: Cercuri și Cilindri, poți vizita categoria Fitness.

Go up