Una extensión complementaria opcional mobilitydb_pcl vive bajo contrib/pcl/. Enlaza el backend de PostgreSQL en ejecución con la Point Cloud Library y expone un pequeño conjunto de operaciones por pcpatch como funciones SQL. El despacho de tipo de punto consciente del esquema elige pcl::PointXYZ, pcl::PointXYZI, o pcl::PointXYZRGB en el momento de la llamada según la disposición de dimensiones del pcid de entrada.
pcpatch_to_pcd(pcpatch) → bytea y pcpatch_from_pcd(bytea, pcid) → pcpatch — ida y vuelta a través del formato de cable PCD de PCL. El ida y vuelta preserva todos los valores de dimensión de forma bit-exacta.
pcpatch_voxel_grid(pcpatch, leaf double precision) → pcpatch — submuestreo VoxelGrid, leaf en las unidades espaciales del esquema. Preserva Intensity / RGB.
pcpatch_sor(pcpatch, k integer DEFAULT 50, stddev_mul double precision DEFAULT 1.0) → pcpatch — Eliminación de valores atípicos estadística (Statistical Outlier Removal). Descarta los puntos cuya distancia media a sus k vecinos más cercanos cae fuera de (media ± stddev_mul × stddev). Preserva Intensity / RGB.
pcpatch_icp(source pcpatch, target pcpatch, max_iter int DEFAULT 50, max_corr double DEFAULT 1.0) → double[] y pcpatch_gicp(...) con la misma firma — registro rígido IterativeClosestPoint y GeneralizedICP. Ambos devuelven un array de 8 dobles [tx, ty, tz, qw, qx, qy, qz, fitness] componible en una pose de MobilityDB mediante pose_make_3d. El coste de Mahalanobis de GICP sobre covarianzas locales por punto es notablemente más robusto que ICP en superficies no planas / con vegetación (escaneos de corredores viales, fachadas patrimoniales fotogramétricas).
pcpatch_normals(pcpatch, k int DEFAULT 10) → double[] — normal de superficie + curvatura por punto mediante NormalEstimation<PointXYZ, Normal> de PCL sobre los k vecinos más cercanos. Devuelve un array plano de longitud 4 × npoints dispuesto como [nx_0, ny_0, nz_0, curv_0, nx_1, ny_1, nz_1, curv_1, …]. Casos de uso: detección de cambios de superficie orientada entre estudios repetidos, exportación Potree --normal, siembra de mallas fotogramétricas. Para parches muy grandes (>50 k puntos) considere submuestrear primero con pcpatch_voxel_grid.
El puente está condicionado a CREATE EXTENSION mobilitydb_pcl en bases de datos que ya han cargado pointcloud + mobilitydb. Las instrucciones de compilación y una suite de regresión determinista están en contrib/pcl/README.md.