Commit da5c157f authored by Andrey Filippov's avatar Andrey Filippov

CLAUDE: test 6 extension - crease bands per kernel type (Andrey's symmetry argument quantified)

Same ramp, same chain: identity 0.000; aberration-like kernel 0.624 counts
(band/output 0.18% - present in every render, invisible under content);
pure LoG 0.547 (176% of its near-zero output); folded 0.682. The aberration
kernels DO band identically in absolute counts - the LoG only unmasks them
by removing the content. Corollary: the CURRENT pixel-LoG conditioning also
reveals the render's own crease bands (the oracle product bands too, with a
different pattern).
Co-Authored-By: 's avatarClaude Fable 5 <noreply@anthropic.com>
parent b70a65c5
......@@ -547,6 +547,36 @@ public class CuasLogFold {
smooth[2][y*width+x] = 0.05 * y * y;
}
}
// same ramp through kernel types: identity, aberration-like (test-5 kab),
// pure LoG, folded kab*L0 - crease-band amplitude per kernel (Andrey
// 07/06/2026: aberration kernels share the machinery - do THEY band?)
{
double [] ramp = smooth[1];
String [] knames = {"identity", "aberration-like kab", "pure LoG", "folded kab*L0"};
double [][][] ktiles = {id_ktile, kab_ktile, log_ktile, mulQuad(kab_ktile, log_td)};
double [][] oracles = { // cos-attenuated pixel-domain truth per kernel
pixConvolve(ramp, width, attenuate(delta, KERNEL_WIDTH), KERNEL_WIDTH, false),
pixConvolve(ramp, width, attenuate(kab, KERNEL_WIDTH), KERNEL_WIDTH, false),
pixConvolve(ramp, width, log_pix, log_w, false),
pixConvolve(pixConvolve(ramp, width, attenuate(kab, KERNEL_WIDTH), KERNEL_WIDTH, false),
width, log_pix, log_w, false)};
System.out.println(" crease bands on ramp 5/row, by kernel (max |8-row band| in diff vs pixel truth; out_rms = output scale):");
for (int t = 0; t < ktiles.length; t++) {
double [] out = cltConvolve(imageDtt, ramp, width, ktiles[t]);
int aw6 = width - TRANSFORM_SIZE, half = TRANSFORM_SIZE/2;
double max_band = 0; double orms = 0; int ocnt = 0;
for (int y = 56; y < 72; y++) {
double sum = 0;
for (int x = margin; x < aw6-margin; x++) {
sum += out[y*aw6+x] - oracles[t][(y+half)*width + (x+half)];
orms += out[y*aw6+x]*out[y*aw6+x]; ocnt++;
}
max_band = Math.max(max_band, Math.abs(sum/(aw6-2*margin)));
}
System.out.println(String.format(" %-20s max|band| = %7.4f out_rms = %9.3f band/out = %8.5f",
knames[t], max_band, Math.sqrt(orms/ocnt), max_band/Math.max(Math.sqrt(orms/ocnt),1e-12)));
}
}
for (int t = 0; t < smooth.length; t++) {
double [] out = cltConvolve(imageDtt, smooth[t], width, log_ktile);
double [] orc = pixConvolve(smooth[t], width, log_pix, log_w, false);
......
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