Commit c592e5ff authored by Andrey Filippov's avatar Andrey Filippov

CLAUDE: probe inter-corr sel_sensors/num_cams/count + fix saveTDRender NPE (TEMP)

Post-mortem showed both CLT buffers loaded but inter-correlation -> 0 tiles.
index_inter_correlate selects by __popc(sel_sensors); static reading says
sel_sensors should be 1 (single-cam rectilinear), so a runtime value differs.
- GpuQuadJna.execCorr2D_inter_TD: one-shot print sel_sensors/popc/num_cams/
  num_colors/scales + the returned num_corr_tiles.
- saveTDRender: makeArrays NPE'd on null titles (derefs titles[i]); pass a
  non-null titles[] so the render saves instead of crashing the run.
TEMP — remove with the rest of the -Dtp.dbg.corrpair probe.
Co-Authored-By: 's avatarClaude Opus 4.8 (1M context) <noreply@anthropic.com>
parent f163b14a
...@@ -2939,8 +2939,10 @@ public class CuasMotion { ...@@ -2939,8 +2939,10 @@ public class CuasMotion {
private void saveTDRender(boolean use_reference, String title) { private void saveTDRender(boolean use_reference, String title) {
gpuQuad.execImcltRbgAll(gpuQuad.getNumColors() <= 1, use_reference, null); gpuQuad.execImcltRbgAll(gpuQuad.getNumColors() <= 1, use_reference, null);
float [][] rbg = gpuQuad.getRBG(0); // single-camera rectilinear float [][] rbg = gpuQuad.getRBG(0); // single-camera rectilinear
String [] titles = new String [rbg.length]; // makeArrays derefs titles[i] -> must be non-null
for (int i = 0; i < titles.length; i++) titles[i] = title + "-" + i;
ImagePlus imp = ShowDoubleFloatArrays.makeArrays( ImagePlus imp = ShowDoubleFloatArrays.makeArrays(
rbg, gpuQuad.getImageWidth(), gpuQuad.getImageHeight(), title, null); rbg, gpuQuad.getImageWidth(), gpuQuad.getImageHeight(), title, titles);
if (imp != null) { if (imp != null) {
parentCLT.saveImagePlusInModelDirectory(imp); parentCLT.saveImagePlusInModelDirectory(imp);
System.out.println("saveTDRender(): saved post-mortem render '"+title+"' (use_reference="+use_reference+")"); System.out.println("saveTDRender(): saved post-mortem render '"+title+"' (use_reference="+use_reference+")");
......
...@@ -309,10 +309,18 @@ public class GpuQuadJna extends GpuQuad { ...@@ -309,10 +309,18 @@ public class GpuQuadJna extends GpuQuad {
float[] s = scaleTriplet(scales); float[] s = scaleTriplet(scales);
lib.tp_proc_exec_corr2d_td(proc, sel_pairs_in[0], sel_pairs_in[1], sel_pairs_in[2], sel_pairs_in[3], s[0], s[1], s[2]); lib.tp_proc_exec_corr2d_td(proc, sel_pairs_in[0], sel_pairs_in[1], sel_pairs_in[2], sel_pairs_in[3], s[0], s[1], s[2]);
} }
private boolean inter_td_probed = false; // TEMP probe one-shot (By Claude 06/26/2026), remove after fix
@Override public void execCorr2D_inter_TD(double[] scales) { @Override public void execCorr2D_inter_TD(double[] scales) {
ensureRbgCorr(); ensureRbgCorr();
float[] s = scaleTriplet(scales); float[] s = scaleTriplet(scales);
lib.tp_proc_exec_corr2d_inter_td(proc, getSensorMaskInter(), s[0], s[1], s[2]); int sel = getSensorMaskInter();
int n = lib.tp_proc_exec_corr2d_inter_td(proc, sel, s[0], s[1], s[2]); // returns last_num_corr_tiles
if (!inter_td_probed) { // TEMP PROBE — remove after fix
inter_td_probed = true;
System.out.println(String.format(
"PROBE inter_corr: sel_sensors=%d (popc=%d) num_cams=%d num_colors=%d scales[%.3f,%.3f,%.3f] -> num_corr_tiles=%d",
sel, Integer.bitCount(sel), num_cams, num_colors, s[0], s[1], s[2], n));
}
} }
@Override public void execCorr2D_combine(boolean init_corr, int num_pairs_in, int pairs_mask, boolean no_transpose_vertical) { @Override public void execCorr2D_combine(boolean init_corr, int num_pairs_in, int pairs_mask, boolean no_transpose_vertical) {
int num_pairs = getNumUsedPairs(); int num_pairs = getNumUsedPairs();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment