diff --git a/image_analysis/scale_merge/RotationScaleMerge.cpp b/image_analysis/scale_merge/RotationScaleMerge.cpp index 367f27fa..83696826 100644 --- a/image_analysis/scale_merge/RotationScaleMerge.cpp +++ b/image_analysis/scale_merge/RotationScaleMerge.cpp @@ -1192,7 +1192,10 @@ void RotationScaleMerge::RefineModulation(int n_iter, int n_groups) { } if (!(pxmax > pxmin) || !(pymax > pymin)) return; - constexpr int NB = 16; + // 24 rather than 16: held out on unseen frames, 16 -> 24 is worth 0.1-0.2 pp of merged R_meas, + // while 24 -> 48 buys 0.02 and 64 is worse. The cross-validation gate below refuses the surface + // outright where 24 is too fine for the data, so the finer grid needs no separate guard. + constexpr int NB = 24; const float sx = NB / (pxmax - pxmin), sy = NB / (pymax - pymin); std::vector cell(fulls.size(), -1); for (size_t i = 0; i < fulls.size(); ++i) {