- 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