From 5aaacc1ad76017a66232180c9bdebe52a634b488 Mon Sep 17 00:00:00 2001 From: EC2 Default User Date: Sat, 4 Apr 2026 21:45:06 +0000 Subject: [PATCH] Add progressive multi-resolution generation pyramid (Proposal 6) Adds MultiResModel that runs a 3-level resolution pyramid: first 10% of shapes at quarter res (16x faster eval), next 30% at half res (4x faster), remaining 60% at full res. Shapes are scaled and propagated from lower to higher resolution levels. Feature flag: USE_PROGRESSIVE_RESOLUTION. Includes before/after comparison images in test-results/proposal6/. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../java/com/bobrust/generator/Model.java | 13 + .../com/bobrust/generator/MultiResModel.java | 161 +++++++++++ .../com/bobrust/util/data/AppConstants.java | 4 + .../generator/ProgressiveResolutionTest.java | 270 ++++++++++++++++++ test-results/proposal6/nature_diff.png | Bin 0 -> 9610 bytes test-results/proposal6/nature_multi_res.png | Bin 0 -> 5842 bytes test-results/proposal6/nature_single_res.png | Bin 0 -> 5928 bytes test-results/proposal6/nature_target.png | Bin 0 -> 1220 bytes test-results/proposal6/photo_detail_diff.png | Bin 0 -> 8882 bytes .../proposal6/photo_detail_multi_res.png | Bin 0 -> 5252 bytes .../proposal6/photo_detail_single_res.png | Bin 0 -> 5209 bytes .../proposal6/photo_detail_target.png | Bin 0 -> 25783 bytes 12 files changed, 448 insertions(+) create mode 100644 src/main/java/com/bobrust/generator/MultiResModel.java create mode 100644 src/test/java/com/bobrust/generator/ProgressiveResolutionTest.java create mode 100644 test-results/proposal6/nature_diff.png create mode 100644 test-results/proposal6/nature_multi_res.png create mode 100644 test-results/proposal6/nature_single_res.png create mode 100644 test-results/proposal6/nature_target.png create mode 100644 test-results/proposal6/photo_detail_diff.png create mode 100644 test-results/proposal6/photo_detail_multi_res.png create mode 100644 test-results/proposal6/photo_detail_single_res.png create mode 100644 test-results/proposal6/photo_detail_target.png diff --git a/src/main/java/com/bobrust/generator/Model.java b/src/main/java/com/bobrust/generator/Model.java index 68e7d07..8263f93 100644 --- a/src/main/java/com/bobrust/generator/Model.java +++ b/src/main/java/com/bobrust/generator/Model.java @@ -78,6 +78,19 @@ private void addShape(Circle shape) { } } + /** + * Add a pre-defined shape to this model without running optimization. + * Used by MultiResModel to propagate shapes from lower to higher resolutions. + */ + public void addExternalShape(Circle shape) { + addShape(shape); + } + + /** Returns the current model score. */ + public float getScore() { + return score; + } + private static final int max_random_states = 1000; private static final int age = 100; private static final int times = Math.max(1, Runtime.getRuntime().availableProcessors() / 2); diff --git a/src/main/java/com/bobrust/generator/MultiResModel.java b/src/main/java/com/bobrust/generator/MultiResModel.java new file mode 100644 index 0000000..5bd1a4a --- /dev/null +++ b/src/main/java/com/bobrust/generator/MultiResModel.java @@ -0,0 +1,161 @@ +package com.bobrust.generator; + +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; + +/** + * Progressive multi-resolution model for shape generation. + * + * Uses a resolution pyramid: + * + * + * Shapes generated at lower resolutions are scaled and propagated to all + * finer resolution levels, so the full-resolution model stays in sync. + */ +public class MultiResModel { + /** Models at each resolution level: [0]=full, [1]=half, [2]=quarter */ + private final Model[] levels; + + /** Dimensions at each level */ + private final int[][] dims; + + /** The full-resolution target image */ + private final BorstImage fullTarget; + + private final int backgroundRGB; + private final int alpha; + private int shapesAdded; + + /** + * Create a multi-resolution model. + * + * @param target the full-resolution target image + * @param backgroundRGB background color + * @param alpha alpha value for blending + */ + public MultiResModel(BorstImage target, int backgroundRGB, int alpha) { + this.fullTarget = target; + this.backgroundRGB = backgroundRGB; + this.alpha = alpha; + this.shapesAdded = 0; + + int fw = target.width; + int fh = target.height; + + dims = new int[][] { + { fw, fh }, // Level 0: full + { Math.max(1, fw / 2), Math.max(1, fh / 2) }, // Level 1: half + { Math.max(1, fw / 4), Math.max(1, fh / 4) }, // Level 2: quarter + }; + + levels = new Model[3]; + levels[0] = new Model(target, backgroundRGB, alpha); + levels[1] = new Model(scaleImage(target, dims[1][0], dims[1][1]), backgroundRGB, alpha); + levels[2] = new Model(scaleImage(target, dims[2][0], dims[2][1]), backgroundRGB, alpha); + } + + /** + * Process one shape at the appropriate resolution level. + * + * @param currentShape current shape index (0-based) + * @param maxShapes total number of shapes to generate + * @return the counter from the worker (number of energy evaluations) + */ + public int processStep(int currentShape, int maxShapes) { + float progress = (float) currentShape / maxShapes; + int level; + if (progress < 0.10f) { + level = 2; // Quarter resolution + } else if (progress < 0.40f) { + level = 1; // Half resolution + } else { + level = 0; // Full resolution + } + + // Run generation at selected level + int n = levels[level].processStep(); + + // Get the shape that was just added + Circle shape = levels[level].shapes.get(levels[level].shapes.size() - 1); + + // Propagate the shape to all finer levels + for (int i = level - 1; i >= 0; i--) { + Circle scaled = scaleCircle(shape, level, i); + levels[i].addExternalShape(scaled); + } + + shapesAdded++; + return n; + } + + /** + * Scale a circle from one resolution level to another. + */ + private Circle scaleCircle(Circle shape, int fromLevel, int toLevel) { + float scaleX = (float) dims[toLevel][0] / dims[fromLevel][0]; + float scaleY = (float) dims[toLevel][1] / dims[fromLevel][1]; + + int newX = Math.round(shape.x * scaleX); + int newY = Math.round(shape.y * scaleY); + + // Scale the radius and snap to nearest valid size + int scaledR = Math.round(shape.r * scaleX); + int newR = BorstUtils.getClosestSize(scaledR); + + // Create a new circle in the target level's worker + // We need to access the worker through the model + return new Circle(getWorker(levels[toLevel]), newX, newY, newR); + } + + /** + * Get the full-resolution model (level 0). + */ + public Model getFullResModel() { + return levels[0]; + } + + /** + * Get the model at a specific level. + */ + public Model getModel(int level) { + return levels[level]; + } + + /** + * Get the number of shapes added so far. + */ + public int getShapesAdded() { + return shapesAdded; + } + + /** + * Scale a BorstImage to a new size. + */ + private static BorstImage scaleImage(BorstImage source, int newWidth, int newHeight) { + BufferedImage scaled = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = scaled.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); + g.drawImage(source.image, 0, 0, newWidth, newHeight, null); + g.dispose(); + return new BorstImage(scaled); + } + + /** + * Reflectively get the Worker from a Model. This is needed because Worker + * is package-private and we need it to create Circle instances. + */ + private static Worker getWorker(Model model) { + try { + var field = Model.class.getDeclaredField("worker"); + field.setAccessible(true); + return (Worker) field.get(model); + } catch (Exception e) { + throw new RuntimeException("Failed to access Model.worker", e); + } + } +} diff --git a/src/main/java/com/bobrust/util/data/AppConstants.java b/src/main/java/com/bobrust/util/data/AppConstants.java index ec40b60..429bb46 100644 --- a/src/main/java/com/bobrust/util/data/AppConstants.java +++ b/src/main/java/com/bobrust/util/data/AppConstants.java @@ -46,6 +46,10 @@ public interface AppConstants { // TSP cost function weights float TSP_W_PALETTE = 3.0f; // Weight for palette change cost float TSP_W_DISTANCE = 1.0f; // Weight for Euclidean distance cost + + // When true, use progressive multi-resolution generation: + // first 10% shapes at quarter res, next 30% at half res, remaining 60% at full res + boolean USE_PROGRESSIVE_RESOLUTION = true; // Average canvas colors. Used as default colors Color CANVAS_AVERAGE = new Color(0xb3aba0); diff --git a/src/test/java/com/bobrust/generator/ProgressiveResolutionTest.java b/src/test/java/com/bobrust/generator/ProgressiveResolutionTest.java new file mode 100644 index 0000000..4fd1065 --- /dev/null +++ b/src/test/java/com/bobrust/generator/ProgressiveResolutionTest.java @@ -0,0 +1,270 @@ +package com.bobrust.generator; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import javax.imageio.ImageIO; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Tests for Proposal 6: Progressive Multi-Resolution Generation. + * + * Verifies that multi-resolution generation produces reasonable quality, + * benchmarks timing vs single-resolution, and generates before/after + * comparison images in test-results/proposal6/. + */ +class ProgressiveResolutionTest { + private static final int ALPHA = 128; + private static final int BACKGROUND = 0xFFFFFFFF; + private static final int MAX_SHAPES = 100; + private static final File OUTPUT_DIR = new File("test-results/proposal6"); + + @BeforeAll + static void setup() { + OUTPUT_DIR.mkdirs(); + } + + // ---- Test 1: Multi-res model produces valid output ---- + + @Test + void testMultiResModelProducesValidOutput() { + BufferedImage img = TestImageGenerator.createPhotoDetail(); + BorstImage target = new BorstImage(ensureArgb(img)); + + MultiResModel multiRes = new MultiResModel(target, BACKGROUND, ALPHA); + + for (int i = 0; i < MAX_SHAPES; i++) { + multiRes.processStep(i, MAX_SHAPES); + } + + Model fullModel = multiRes.getFullResModel(); + + // Should have produced the expected number of shapes + assertEquals(MAX_SHAPES, fullModel.shapes.size(), + "Full-res model should have " + MAX_SHAPES + " shapes"); + + // Score should have improved from initial + float initialScore = BorstCore.differenceFull(target, + createBackground(target.width, target.height)); + assertTrue(fullModel.getScore() < initialScore, + "Score should improve: initial=" + initialScore + " final=" + fullModel.getScore()); + + System.out.println("Multi-res final score: " + fullModel.getScore()); + } + + // ---- Test 2: Single-res vs multi-res quality comparison ---- + + @Test + void testQualityComparisonAndImages() throws IOException { + String[] imageNames = {"photo_detail", "nature"}; + BufferedImage[] images = { + TestImageGenerator.createPhotoDetail(), + TestImageGenerator.createNature() + }; + + for (int idx = 0; idx < images.length; idx++) { + BufferedImage img = ensureArgb(images[idx]); + BorstImage target = new BorstImage(img); + String name = imageNames[idx]; + + // --- Single resolution --- + Model singleRes = new Model(target, BACKGROUND, ALPHA); + long singleStart = System.nanoTime(); + for (int i = 0; i < MAX_SHAPES; i++) { + singleRes.processStep(); + } + long singleTime = System.nanoTime() - singleStart; + float singleScore = singleRes.getScore(); + + // --- Multi resolution --- + MultiResModel multiRes = new MultiResModel(target, BACKGROUND, ALPHA); + long multiStart = System.nanoTime(); + for (int i = 0; i < MAX_SHAPES; i++) { + multiRes.processStep(i, MAX_SHAPES); + } + long multiTime = System.nanoTime() - multiStart; + float multiScore = multiRes.getFullResModel().getScore(); + + double singleMs = singleTime / 1_000_000.0; + double multiMs = multiTime / 1_000_000.0; + double speedup = (double) singleTime / multiTime; + + System.out.println(name + ":"); + System.out.println(" Single-res: score=" + singleScore + + " time=" + String.format("%.0f", singleMs) + "ms"); + System.out.println(" Multi-res: score=" + multiScore + + " time=" + String.format("%.0f", multiMs) + "ms"); + System.out.println(" Speedup: " + String.format("%.2fx", speedup)); + + // Save comparison images + ImageIO.write(img, "png", new File(OUTPUT_DIR, name + "_target.png")); + ImageIO.write(singleRes.current.image, "png", + new File(OUTPUT_DIR, name + "_single_res.png")); + ImageIO.write(multiRes.getFullResModel().current.image, "png", + new File(OUTPUT_DIR, name + "_multi_res.png")); + + // Generate difference image (amplified 4x for visibility) + BufferedImage diff = generateDiffImage( + singleRes.current.image, + multiRes.getFullResModel().current.image); + ImageIO.write(diff, "png", new File(OUTPUT_DIR, name + "_diff.png")); + + // Multi-res quality should be within reasonable range of single-res + // (allow up to 30% worse score since early shapes are optimized at lower resolution) + assertTrue(multiScore <= singleScore * 1.30f, + name + ": Multi-res score (" + multiScore + + ") should not be dramatically worse than single-res (" + singleScore + ")"); + } + } + + // ---- Test 3: Resolution level selection is correct ---- + + @Test + void testResolutionLevelSelection() { + BufferedImage img = TestImageGenerator.createSolid(); + BorstImage target = new BorstImage(ensureArgb(img)); + + MultiResModel multiRes = new MultiResModel(target, BACKGROUND, ALPHA); + + // Track shapes added at each level by checking model shape counts + int level0Before = multiRes.getModel(0).shapes.size(); + int level1Before = multiRes.getModel(1).shapes.size(); + int level2Before = multiRes.getModel(2).shapes.size(); + + int totalShapes = 100; + // First 10 shapes should use level 2 (quarter) + for (int i = 0; i < 10; i++) { + multiRes.processStep(i, totalShapes); + } + + // Level 2 should have generated 10 shapes + assertEquals(10, multiRes.getModel(2).shapes.size() - level2Before, + "Level 2 should have 10 shapes after first 10% of generation"); + + // Next 30 shapes should use level 1 (half) + for (int i = 10; i < 40; i++) { + multiRes.processStep(i, totalShapes); + } + + // Level 1 should have generated 30 new shapes (plus 10 propagated from level 2) + int level1Shapes = multiRes.getModel(1).shapes.size() - level1Before; + assertEquals(40, level1Shapes, + "Level 1 should have 40 shapes (30 generated + 10 propagated)"); + + // Remaining 60 shapes at full resolution + for (int i = 40; i < totalShapes; i++) { + multiRes.processStep(i, totalShapes); + } + + // Full-res model should have all shapes + assertEquals(totalShapes, multiRes.getModel(0).shapes.size() - level0Before, + "Level 0 should have all " + totalShapes + " shapes"); + } + + // ---- Test 4: Circle scaling between levels ---- + + @Test + void testShapePropagation() { + BufferedImage img = TestImageGenerator.createGradient(); + BorstImage target = new BorstImage(ensureArgb(img)); + + MultiResModel multiRes = new MultiResModel(target, BACKGROUND, ALPHA); + + // Generate a single shape at quarter resolution + multiRes.processStep(0, 100); + + // Shape should have been propagated to half-res and full-res + assertTrue(multiRes.getModel(2).shapes.size() >= 1, + "Quarter-res model should have at least 1 shape"); + assertTrue(multiRes.getModel(1).shapes.size() >= 1, + "Half-res model should have at least 1 propagated shape"); + assertTrue(multiRes.getModel(0).shapes.size() >= 1, + "Full-res model should have at least 1 propagated shape"); + } + + // ---- Test 5: Timing benchmark ---- + + @Test + void testTimingBenchmark() { + BufferedImage img = TestImageGenerator.createPhotoDetail(); + BorstImage target = new BorstImage(ensureArgb(img)); + int shapes = 50; + + // Warm up + Model warmup = new Model(target, BACKGROUND, ALPHA); + for (int i = 0; i < 10; i++) warmup.processStep(); + + // Single resolution + Model singleRes = new Model(target, BACKGROUND, ALPHA); + long singleStart = System.nanoTime(); + for (int i = 0; i < shapes; i++) singleRes.processStep(); + long singleNs = System.nanoTime() - singleStart; + + // Multi resolution + MultiResModel multiRes = new MultiResModel(target, BACKGROUND, ALPHA); + long multiStart = System.nanoTime(); + for (int i = 0; i < shapes; i++) multiRes.processStep(i, shapes); + long multiNs = System.nanoTime() - multiStart; + + System.out.println("Timing (" + shapes + " shapes):"); + System.out.println(" Single: " + String.format("%.0f", singleNs / 1e6) + " ms"); + System.out.println(" Multi: " + String.format("%.0f", multiNs / 1e6) + " ms"); + System.out.println(" Ratio: " + String.format("%.2fx", (double) singleNs / multiNs)); + + // Multi-res should not be catastrophically slower (overhead of managing 3 models) + assertTrue(multiNs < singleNs * 3, + "Multi-res should not be more than 3x slower than single-res"); + } + + // ---- Helpers ---- + + private static BufferedImage ensureArgb(BufferedImage img) { + if (img.getType() == BufferedImage.TYPE_INT_ARGB) return img; + BufferedImage argb = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB); + Graphics2D g = argb.createGraphics(); + g.drawImage(img, 0, 0, null); + g.dispose(); + return argb; + } + + private static BorstImage createBackground(int w, int h) { + BorstImage bg = new BorstImage(w, h); + Arrays.fill(bg.pixels, BACKGROUND); + return bg; + } + + /** + * Generate a difference image (amplified 4x) between two images. + */ + private static BufferedImage generateDiffImage(BufferedImage a, BufferedImage b) { + int w = a.getWidth(); + int h = a.getHeight(); + BufferedImage diff = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); + + for (int y = 0; y < h; y++) { + for (int x = 0; x < w; x++) { + int ca = a.getRGB(x, y); + int cb = b.getRGB(x, y); + + int dr = Math.abs(((ca >> 16) & 0xff) - ((cb >> 16) & 0xff)); + int dg = Math.abs(((ca >> 8) & 0xff) - ((cb >> 8) & 0xff)); + int db = Math.abs((ca & 0xff) - (cb & 0xff)); + + // Amplify 4x + dr = Math.min(255, dr * 4); + dg = Math.min(255, dg * 4); + db = Math.min(255, db * 4); + + diff.setRGB(x, y, 0xFF000000 | (dr << 16) | (dg << 8) | db); + } + } + + return diff; + } +} diff --git a/test-results/proposal6/nature_diff.png b/test-results/proposal6/nature_diff.png new file mode 100644 index 0000000000000000000000000000000000000000..9cdd8db9ad197c9bb08bf3247c528d88b09ab7c1 GIT binary patch literal 9610 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 literal 0 HcmV?d00001 diff --git a/test-results/proposal6/nature_multi_res.png b/test-results/proposal6/nature_multi_res.png new file mode 100644 index 0000000000000000000000000000000000000000..a3395f0b98f0dea488c643c167be24ef59636228 GIT binary patch literal 5842 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%0Dgxp`t^|l!A}r1feh+M~$;Xh>j}B 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 literal 0 HcmV?d00001 diff --git a/test-results/proposal6/nature_target.png b/test-results/proposal6/nature_target.png new file mode 100644 index 0000000000000000000000000000000000000000..674423b31bf68b66007081c6b118414509e6bc09 GIT binary patch literal 1220 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 a;O*q60bMos74*L-V7G&-{Zl(e{Qm=4(#0|W literal 0 HcmV?d00001 diff --git a/test-results/proposal6/photo_detail_multi_res.png b/test-results/proposal6/photo_detail_multi_res.png new file mode 100644 index 0000000000000000000000000000000000000000..70eb5019f07661bebd9f34bb5617d77e54a5d868 GIT binary patch literal 5252 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 z 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 bEvo4Q1>yku6+Pk)N&cszpebJ{YZmx_CgBha literal 0 HcmV?d00001