- report valid coverage and depth percentiles even when XYZ ground truth is absent
- accept depth bounds and optional color-mapped PNG output for visual inspection
- retain accuracy metrics when point_cloud.obj is available
- add a batch helper that renders Markdown tables and optional JSON and PNG artifacts
- document benchmark inputs, dataset limits, and visualization tradeoffs
- add block-averaged PLY grid decimation with validity-aware vertex generation
- validate and load ply_stride and wls_filter from cloud_point configuration
- pass matcher tuning through CloudPointClient and apply both settings in CLI exports
- cover stride averaging, sparse blocks, invalid values, and config parsing
- add configurable median and edge-aware WLS filtering to the CPU SGBM matcher
- preserve SGBM rejection holes when WLS smooths valid disparities
- detect and link OpenCV ximgproc when available, with a graceful fallback otherwise
- forward CPU tuning through the matcher factory and cover validation and hole preservation
- Configure StereoSGBM with P1/P2 penalties, 5x5 block, uniqueness ratio,
speckle filter and left-right check; previously it ran unregularised and
produced a heavy tail of low-disparity outliers reprojecting metres away
(SCARED benchmark MAE3D 44 mm -> 0.8 mm, RMSE 289 mm -> 1.4 mm)
- Pass the requested disparity count to the CUDA SGM matcher (rounded to
64/128/256) instead of a hard-coded 16
- Add optional `cloud_point` config section (algorithm, num_disparities,
depth range) consumed by CLI options 4/5; ship config.scared.yml
- write_ply now emits a binary PLY with a grid-triangulated mesh so web
viewers stop fabricating slivers from consecutive vertices
- Add config, matcher and PLY export tests; document in README
- Parse port inside try block for proper error reporting instead of unhandled exception
- Make frame_counter atomic to eliminate data race under TcpServer per-client threads
- Validate num_disparities is positive multiple of 16 in StereoMatcherFactory
- Validate stereo pair dimensions match in ScaredDatasetLoader
- Silence nodiscard warnings via std::ignore in tests
TG-3 #ready-for-test
TG-2 #ready-for-test
- Remove unused stdexec dependency
- Fix dangling cv::Mat references and swapped dimensions in image/matrix factories
- Add CameraCalib, StereoCalibrationRPC, ImagePairRPC DTOs with nlohmann serialization
- Implement get-stereo-calibration and get-image-pair RPC handlers with deterministic mock data
- Extend RpcClient with typed getters and params-bearing call overload
- Restructure API.md with full JSON schemas and conventions
- 13 unit and integration tests for serialization
TG-3 #in-progress
TG-7 #ready-for-test