"Ancient" project, KMUTT · grant-funded, paid in installments
| Metric | Before | After |
|---|---|---|
| Overall accuracy | 90.08% | 99.52% |
| Crack IoU | 78.25% | 83.25% |
| Spalling IoU | 89.34% | 97.28% |
| Decay IoU | 54.58% | 98.43% |
| Unseen surface | — | 0.0048% |
Automated detection of cracks, spalling, and decay on Thai heritage structures from real terrestrial-laser-scan (TLS) point clouds — real scans of Wat Chaiwatthanaram and Wat Yai Chai Mongkhon, both Ayutthaya-era sites, some over 5 million points per scan.
The project's git-committed src/ package (a RandLA-Net/PointNet++ semantic-segmentation track, plus a FastAPI backend) is teammates' work. His own contribution is a separate, self-directed track: a full multi-view 3D→2D rendering and consensus-classification pipeline, built and iterated across many solo engineering sessions using real Colab GPU runs rather than guesswork.
The renderer projects the point cloud into 2D from 32 camera views, then reaches a per-pixel consensus across views to classify damage. The original isotropic point-splat renderer left visible gaps at oblique camera angles. Rewrote it around EWA (Elliptical Weighted Average) surface splatting — anisotropic covariance-based projection adapted from the same math family used in 3D Gaussian Splatting (Zwicker et al., 2001) — applied as a closed-form, single-pass render, with no training involved. Result: the rate of surface points never seen by any camera view dropped to 0.0048%, and every IoU metric improved substantially (see table).
Along the way, diagnosed and fixed several real rendering and reliability bugs on live Colab GPU runs, not in the abstract:
Built independently: density-based clustering (DBSCAN/HDBSCAN) to segment the point cloud, curvature/roughness saliency scoring to identify which points carry structurally important detail, then adaptive voxel downsampling applied only to the non-salient points. On a real 5.49-million-point scan, this cut the cloud to 1.53 million points — a 72.14% reduction — while preserving the fine detail that damage detection depends on.
Evaluated whether 3D Gaussian Splatting could be used directly for the semantic-segmentation task itself (not just as the projection math EWA borrows from). Root-caused four compounding bugs in a teammate's existing 3DGS implementation, scoped what a real fix would take, and made a reasoned decision not to pursue it — documented with the actual reasoning rather than left as an unexplained dead end.
Private research code; it is not published on GitHub.