From 9640952f5e7c34899ab99d8e0df4547b3c9609f8 Mon Sep 17 00:00:00 2001 From: Phil Rukin Date: Thu, 8 Oct 2026 14:50:47 +0200 Subject: [PATCH 1/2] fix(color): recover numeric palette slots lost to transparency (#91) Retry only when an occupied raw cluster has no visible pixels, before component cleanup. Keep numeric counts and seed methods unchanged, clean only the final pass, and leave solver input arrays untouched. Add regressions for transparent palettes, cleanup-only losses, unused centroids, empty images and repeated solves. Preserve the original lower-level SVG hash and HTTP profile contracts. --- README.md | 2 +- vectorizing/solvers/color/ColorSolver.py | 6 +- vectorizing/solvers/color/legacy.py | 36 ++-- vectorizing/solvers/color/quantize.py | 55 ++++++- .../tests/test_color_configurations.py | 29 +++- vectorizing/tests/test_color_numeric.py | 154 ++++++++++++++++++ 6 files changed, 254 insertions(+), 28 deletions(-) create mode 100644 vectorizing/tests/test_color_numeric.py diff --git a/README.md b/README.md index 6b5d2c7..d3f6754 100644 --- a/README.md +++ b/README.md @@ -127,7 +127,7 @@ A typical response would be Or, if `raw = true` was supplied, just plain SVG markup -For color requests, set `color_count` to `"auto"` to estimate 1–16 dominant colors from the image (ignoring background pixels and small blended edges). When any pixel has zero alpha, pixels below half opacity are treated as background, matching color quantization. For example, `midnight_strike.png`, `geo_logo.png` and `test_logo.png` each select three. Auto compares octree and median-cut palettes to retain both vivid accents and subtly patterned backgrounds; numeric quantization is unchanged. Omitting `color_count` still defaults to six; numeric requests retain the existing 2–64 clamp. Automatic selection is a heuristic: very small accents may not contribute to the count. +For color requests, set `color_count` to `"auto"` to estimate 1–16 dominant colors from the image (ignoring background pixels and small blended edges). When any pixel has zero alpha, pixels below half opacity are treated as background, matching color quantization. For example, `midnight_strike.png`, `geo_logo.png` and `test_logo.png` each select three. Auto compares octree and median-cut palettes to retain both vivid accents and subtly patterned backgrounds. Auto replaces background RGB with a representative visible color before quantization. Numeric requests retry with the same safeguard only when a cluster contains background pixels but no visible pixels before component cleanup. Clusters lost solely to cleanup do not trigger a retry; other requests retain the original quantization. Numeric requests keep their requested count and existing initialization method; omitting `color_count` still defaults to six, with the existing 2–64 clamp. The count is a palette budget, not a guarantee of that many output colors: quantization and component cleanup can retain fewer. Automatic selection is a heuristic: very small accents may not contribute to the count. When auto selects one visible color, the binary solver traces it as black on transparent; an entirely transparent image remains empty. Auto requests use the color solver: omitting `solver` selects it, while explicitly sending `solver: 0` with `"auto"` is rejected rather than silently running a binary job. diff --git a/vectorizing/solvers/color/ColorSolver.py b/vectorizing/solvers/color/ColorSolver.py index 24dfa89..2fb5bcd 100644 --- a/vectorizing/solvers/color/ColorSolver.py +++ b/vectorizing/solvers/color/ColorSolver.py @@ -149,7 +149,11 @@ def solve(self) -> list[list[Path] | list[np.ndarray] | list[list[int]] | int]: labels, colors, has_background = ( quantizer(self.img_arr, self.color_count, auto_method=self.auto_method) if self.auto_method is not None - else quantizer(self.img_arr, self.color_count) + else quantizer( + self.img_arr, + self.color_count, + recover_background_slots=True, + ) ) self.timer.end_timer() diff --git a/vectorizing/solvers/color/legacy.py b/vectorizing/solvers/color/legacy.py index de694a9..eb1364d 100644 --- a/vectorizing/solvers/color/legacy.py +++ b/vectorizing/solvers/color/legacy.py @@ -10,6 +10,7 @@ from vectorizing.geometry.potrace import potrace_path_to_compound_path from vectorizing.solvers.color.quantize import ( + _recover_background_slots, get_background_cluster, get_initial_centroids, kmeans, @@ -21,20 +22,31 @@ def quantize( color_count: int, *, auto_method: Image.Quantize | None = None, + recover_background_slots: bool = False, ) -> tuple[np.ndarray, np.ndarray, bool]: - """Run the original strong-filter and overlap-based component cleanup.""" + """Run original cleanup, optionally recovering background-only palette slots.""" background = get_background_cluster(img_arr) if img_arr.shape[-1] == 4 else None - rgb = ( - cv2.cvtColor(img_arr, cv2.COLOR_RGBA2RGB) if img_arr.shape[-1] == 4 else img_arr - ) - rgb = cv2.bilateralFilter(rgb.copy(), 7, 50, 50) - centroids = ( - get_initial_centroids(rgb, color_count, auto_method) - if auto_method is not None - else get_initial_centroids(rgb, color_count) - ) - labels, colors = kmeans(rgb, centroids) - labels = labels.reshape(rgb.shape[:2]) + for attempt in range(2): + rgb = ( + cv2.cvtColor(img_arr, cv2.COLOR_RGBA2RGB) + if img_arr.shape[-1] == 4 + else img_arr + ) + rgb = cv2.bilateralFilter(rgb.copy(), 7, 50, 50) + centroids = ( + get_initial_centroids(rgb, color_count, auto_method) + if auto_method is not None + else get_initial_centroids(rgb, color_count) + ) + labels, colors = kmeans(rgb, centroids) + labels = labels.reshape(rgb.shape[:2]) + if attempt or not recover_background_slots or auto_method is not None: + break + recovered = _recover_background_slots(img_arr, labels, len(colors), background) + if recovered is None: + break + # Keep the original numeric seeding and defer cleanup until recovery ends. + img_arr = recovered if background is not None: labels = np.where(background > 0, 0, labels + 1) colors = np.vstack( diff --git a/vectorizing/solvers/color/quantize.py b/vectorizing/solvers/color/quantize.py index 30f2c89..beb7bc5 100644 --- a/vectorizing/solvers/color/quantize.py +++ b/vectorizing/solvers/color/quantize.py @@ -92,6 +92,34 @@ def auto_color_count( return max(1, best_count), representative, chosen_method +def _recover_background_slots( + img_arr: np.ndarray, + labels: np.ndarray, + cluster_count: int, + background: np.ndarray | None, +) -> np.ndarray | None: + """Replace hidden RGB only for occupied, background-only raw clusters.""" + # Inspect labels before masking or cleanup; losing a tiny visible component + # to cleanup is not evidence that hidden RGB consumed a palette slot. + if background is None: + return None + visible = background == 0 + if not visible.any(): + return None + visible_counts = np.bincount(labels[visible], minlength=cluster_count) + if (visible_counts > 0).all(): + return None + counts = np.bincount(labels.ravel(), minlength=cluster_count) + if not np.any((counts > 0) & (visible_counts == 0)): + return None + _, representative, _ = auto_color_count(img_arr, background) + if representative is None: + return None + recovered = img_arr.copy() + recovered[~visible, :3] = representative + return recovered + + def bilateral_filter(img_arr: np.ndarray) -> np.ndarray: """Gently smooth local color noise without the broad blur of a large kernel.""" return cv2.bilateralFilter(img_arr, 3, 12, 1) @@ -221,17 +249,26 @@ def quantize( color_count: int, *, auto_method: Image.Quantize | None = None, + recover_background_slots: bool = False, ) -> tuple[np.ndarray, np.ndarray, bool]: - """Return area-cleaned labels, an RGB-ordered palette and background status.""" + """Return cleaned labels/palette, optionally recovering background-only slots.""" background = get_background_cluster(img_arr) if img_arr.shape[-1] == 4 else None - rgb = bilateral_filter(img_arr[:, :, :3].copy()) - centroids = ( - get_initial_centroids(rgb, color_count, auto_method) - if auto_method is not None - else get_initial_centroids(rgb, color_count) - ) - labels, colors = kmeans(rgb, centroids) - labels = labels.reshape(rgb.shape[:2]) + for attempt in range(2): + rgb = bilateral_filter(img_arr[:, :, :3].copy()) + centroids = ( + get_initial_centroids(rgb, color_count, auto_method) + if auto_method is not None + else get_initial_centroids(rgb, color_count) + ) + labels, colors = kmeans(rgb, centroids) + labels = labels.reshape(rgb.shape[:2]) + if attempt or not recover_background_slots or auto_method is not None: + break + recovered = _recover_background_slots(img_arr, labels, len(colors), background) + if recovered is None: + break + # Retry the same numeric count and seed method, then clean only once. + img_arr = recovered # Paint order determines which neighboring colors may receive a bounded rim. order = np.lexsort(colors.T[::-1]) diff --git a/vectorizing/tests/test_color_configurations.py b/vectorizing/tests/test_color_configurations.py index f90e078..3835ddf 100644 --- a/vectorizing/tests/test_color_configurations.py +++ b/vectorizing/tests/test_color_configurations.py @@ -6,6 +6,7 @@ from unittest.mock import Mock import numpy as np +import potrace import pytest from flask.testing import FlaskClient from PIL import Image @@ -13,8 +14,9 @@ import vectorizing from vectorizing.server.timer import Timer from vectorizing.solvers.color import legacy +from vectorizing.solvers.color.bitmaps import create_bitmaps from vectorizing.solvers.color.ColorSolver import ColorSolver -from vectorizing.svg.markup import generate_SVG_markup +from vectorizing.svg.markup import generate_original_SVG_markup, generate_SVG_markup from vectorizing.tests.color_reference import original_area_cleanup from vectorizing.util.limit_size import limit_size from vectorizing.util.read import convert_RGB_A @@ -153,11 +155,29 @@ def test_original_opaque_svg_matches_reference( ) +def test_original_transparent_serialization_matches_reference() -> None: + """Pin the original stages independently of numeric palette-slot recovery.""" + image = transparent_artwork() + labels, colors, has_background = legacy.quantize(np.asarray(image), 4) + bitmaps, colors = create_bitmaps(labels, colors, has_background) + paths = legacy.remove_layering( + [potrace.Bitmap(bitmap).trace() for bitmap in bitmaps], + image.width, + image.height, + has_background, + ) + markup = generate_original_SVG_markup(paths, colors, image.width, image.height) + # Captured from the original stages, not regenerated to match recovery. + assert hashlib.sha256(markup.encode()).hexdigest() == ( + "901127e424e2944c199af568da7bf136373b825a8f2939b1df109ed0c1269632" + ) + + def test_original_profile_is_http_default_and_experimental_is_independent( client: FlaskClient, monkeypatch: pytest.MonkeyPatch, ) -> None: - """Pin original raw SVG bytes while keeping the newer pipeline selectable.""" + """Keep the original serializer as HTTP default and profiles selectable.""" image = transparent_artwork() monkeypatch.setattr( vectorizing, @@ -170,9 +190,8 @@ def test_original_profile_is_http_default_and_experimental_is_independent( experimental = client.post("/", json={**base, "configuration": "experimental"}) assert all(r.status_code == 200 for r in (default, original, experimental)) assert default.data == original.data - # Captured from the pre-change solver and SVG serializer, not this implementation. - assert hashlib.sha256(default.data).hexdigest() == ( - "901127e424e2944c199af568da7bf136373b825a8f2939b1df109ed0c1269632" + assert default.data.decode() == generate_original_SVG_markup( + *ColorSolver(image, 4, Timer(), "current").solve(), ) assert experimental.data != default.data assert experimental.data.decode() == generate_SVG_markup( diff --git a/vectorizing/tests/test_color_numeric.py b/vectorizing/tests/test_color_numeric.py new file mode 100644 index 0000000..8f19caa --- /dev/null +++ b/vectorizing/tests/test_color_numeric.py @@ -0,0 +1,154 @@ +"""Keep numeric palette slots available for visible colors on transparent images.""" + +from io import BytesIO +from unittest.mock import Mock + +import numpy as np +import pytest +from cairosvg import svg2png +from PIL import Image + +from vectorizing.server.timer import Timer +from vectorizing.solvers.color import legacy +from vectorizing.solvers.color.ColorSolver import ColorSolver +from vectorizing.solvers.color.quantize import _recover_background_slots, quantize +from vectorizing.svg.markup import generate_original_SVG_markup, generate_SVG_markup + + +@pytest.mark.parametrize("configuration", ["current", "experimental"]) +@pytest.mark.parametrize("hidden_rgb", [(0, 0, 0), (255, 255, 0)]) +def test_numeric_transparent_canvas_does_not_take_a_color_slot( + configuration: str, + hidden_rgb: tuple[int, int, int], +) -> None: + """Retain three visible colors regardless of RGB hidden beneath zero alpha.""" + pixels = np.zeros((128, 128, 4), dtype=np.uint8) + pixels[:, :, :3] = hidden_rgb + pixels[8:56, 8:56] = (255, 128, 128, 255) + pixels[8:56, 72:120] = (128, 255, 128, 255) + pixels[72:120, 8:56] = (128, 128, 255, 255) + image = Image.fromarray(pixels) + solver = ColorSolver(image, 3, Timer(), configuration) + paths, colors, width, height = solver.solve() + + assert solver.color_count == len(paths) == len(colors) == 3 + actual = np.array(sorted(tuple(color[:3]) for color in colors)) + expected = np.array([(128, 128, 255), (128, 255, 128), (255, 128, 128)]) + np.testing.assert_allclose(actual, expected, atol=1) + np.testing.assert_array_equal(np.asarray(image), pixels) + + serialize = ( + generate_original_SVG_markup + if configuration == "current" + else generate_SVG_markup + ) + raster = Image.open( + BytesIO(svg2png(bytestring=serialize(paths, colors, width, height).encode())), + ).convert("RGBA") + assert raster.getpixel((0, 0))[3] == 0 + assert raster.getpixel((32, 32))[3] == 255 + assert serialize(*solver.solve()) == serialize(paths, colors, width, height) + np.testing.assert_array_equal(solver.img_arr, pixels) + + +@pytest.mark.parametrize("configuration", ["current", "experimental"]) +def test_numeric_color_count_does_not_become_automatic(configuration: str) -> None: + """A two-color request stays at two even when three visible colors exist.""" + pixels = np.zeros((128, 128, 4), dtype=np.uint8) + pixels[8:56, 8:56] = (255, 128, 128, 255) + pixels[8:56, 72:120] = (128, 255, 128, 255) + pixels[72:120, 8:56] = (128, 128, 255, 255) + solver = ColorSolver(Image.fromarray(pixels), 2, Timer(), configuration) + paths, colors, _, _ = solver.solve() + assert solver.color_count == len(paths) == len(colors) == 2 + + +@pytest.mark.parametrize("configuration", ["current", "experimental"]) +def test_fully_transparent_numeric_image_stays_empty(configuration: str) -> None: + """No visible representative means no artwork, rather than a binary fallback.""" + solver = ColorSolver(Image.new("RGBA", (8, 8)), 3, Timer(), configuration) + paths, colors, _, _ = solver.solve() + assert solver.color_count == 3 + assert paths == colors == [] + + +@pytest.mark.parametrize("configuration", ["current", "experimental"]) +def test_numeric_palette_keeps_clusters_shared_with_background( + configuration: str, + monkeypatch: pytest.MonkeyPatch, +) -> None: + """Do not retry when all palette colors already have visible pixels.""" + pixels = np.zeros((128, 128, 4), dtype=np.uint8) + pixels[8:56, 8:56] = (0, 0, 0, 255) + pixels[8:56, 72:120] = (128, 255, 128, 255) + pixels[72:120, 8:56] = (255, 128, 128, 255) + estimator = Mock(side_effect=AssertionError("Full numeric palettes must not retry")) + monkeypatch.setattr( + "vectorizing.solvers.color.quantize.auto_color_count", + estimator, + ) + solver = ColorSolver(Image.fromarray(pixels), 3, Timer(), configuration) + paths, colors, _, _ = solver.solve() + assert len(paths) == len(colors) == 3 + estimator.assert_not_called() + + +@pytest.mark.parametrize("configuration", ["current", "experimental"]) +def test_numeric_component_cleanup_does_not_trigger_recovery( + configuration: str, + monkeypatch: pytest.MonkeyPatch, +) -> None: + """Keep original colors when cleanup, not transparency, removes a cluster.""" + pixels = np.zeros((128, 128, 4), dtype=np.uint8) + pixels[:, :, :3] = (20, 40, 60) + pixels[8:56, 8:56] = (20, 40, 60, 255) + pixels[8:120, 72:120] = (250, 250, 250, 255) + pixels[80, 20] = (255, 0, 0, 255) + quantizer = legacy.quantize if configuration == "current" else quantize + module = quantizer.__module__ + clustering = [] + original_kmeans = quantizer.__globals__["kmeans"] + + def capture_clusters( + rgb: np.ndarray, + centroids: np.ndarray, + ) -> tuple[np.ndarray, np.ndarray]: + labels, colors = original_kmeans(rgb, centroids) + visible = labels.reshape(pixels.shape[:2])[pixels[:, :, 3] > 0] + clustering.append(np.bincount(visible, minlength=len(colors))) + return labels, colors + + monkeypatch.setattr(f"{module}.kmeans", capture_clusters) + labels, palette, _ = quantizer(pixels, 3) + assert (clustering[0] > 0).all() + surviving = np.unique(labels[labels != 0]) + assert len(surviving) == 2 + clustering.clear() + + _, colors, _, _ = ColorSolver( + Image.fromarray(pixels), + 3, + Timer(), + configuration, + ).solve() + assert len(clustering) == 1 + np.testing.assert_array_equal(colors, palette[surviving]) + + +@pytest.mark.parametrize("visible_alpha", [0, 255]) +def test_unused_palette_entry_does_not_trigger_recovery( + visible_alpha: int, + monkeypatch: pytest.MonkeyPatch, +) -> None: + """An unused centroid or an empty image is not a background-only color loss.""" + pixels = np.zeros((8, 8, 4), dtype=np.uint8) + pixels[2:6, 2:6, 3] = visible_alpha + background = (pixels[:, :, 3] == 0).astype(np.uint8) + labels = np.zeros((8, 8), dtype=np.uint8) + estimator = Mock(side_effect=AssertionError("No occupied slot was lost")) + monkeypatch.setattr( + "vectorizing.solvers.color.quantize.auto_color_count", + estimator, + ) + assert _recover_background_slots(pixels, labels, 2, background) is None + estimator.assert_not_called() From 1fb307dedf57da5a00cd14bc7f21fce35859a777 Mon Sep 17 00:00:00 2001 From: Phil Rukin Date: Thu, 8 Oct 2026 16:06:41 +0200 Subject: [PATCH 2/2] fix(color): preserve visible colors against hidden RGB bias (#92) Compensate shared numeric palette centers for masked RGB contributions while keeping cluster assignments, paint order and geometry fixed. Leave auto and binary processing unchanged. Add the exact snail fixture and regressions for navy preservation, alpha boundaries, independent bias references and no-op behavior. Check corrected Aftermath fills without replacing approved mask or geometry hashes, and retain the original lower-level palette test. --- README.md | 2 +- vectorizing/solvers/color/legacy.py | 5 +- vectorizing/solvers/color/quantize.py | 51 ++++++++++- vectorizing/tests/images/snail.png | Bin 0 -> 157403 bytes vectorizing/tests/test_color_numeric.py | 110 +++++++++++++++++++++++- vectorizing/tests/test_color_p3.py | 31 ++++++- 6 files changed, 191 insertions(+), 8 deletions(-) create mode 100644 vectorizing/tests/images/snail.png diff --git a/README.md b/README.md index d3f6754..9471bd1 100644 --- a/README.md +++ b/README.md @@ -127,7 +127,7 @@ A typical response would be Or, if `raw = true` was supplied, just plain SVG markup -For color requests, set `color_count` to `"auto"` to estimate 1–16 dominant colors from the image (ignoring background pixels and small blended edges). When any pixel has zero alpha, pixels below half opacity are treated as background, matching color quantization. For example, `midnight_strike.png`, `geo_logo.png` and `test_logo.png` each select three. Auto compares octree and median-cut palettes to retain both vivid accents and subtly patterned backgrounds. Auto replaces background RGB with a representative visible color before quantization. Numeric requests retry with the same safeguard only when a cluster contains background pixels but no visible pixels before component cleanup. Clusters lost solely to cleanup do not trigger a retry; other requests retain the original quantization. Numeric requests keep their requested count and existing initialization method; omitting `color_count` still defaults to six, with the existing 2–64 clamp. The count is a palette budget, not a guarantee of that many output colors: quantization and component cleanup can retain fewer. Automatic selection is a heuristic: very small accents may not contribute to the count. +For color requests, set `color_count` to `"auto"` to estimate 1–16 dominant colors from the image (ignoring background pixels and small blended edges). When any pixel has zero alpha, pixels below half opacity are treated as background, matching color quantization. For example, `midnight_strike.png`, `geo_logo.png` and `test_logo.png` each select three. Auto compares octree and median-cut palettes to retain both vivid accents and subtly patterned backgrounds. Auto replaces background RGB with a representative visible color before quantization. Numeric requests retry with the same safeguard only when a cluster contains background pixels but no visible pixels before component cleanup. Clusters lost solely to cleanup do not trigger a retry. When hidden RGB shares a visible cluster, numeric requests compensate its contribution to the color's mean RGB without reassigning pixels or changing layer masks. Numeric requests keep their requested count and existing initialization method; omitting `color_count` still defaults to six, with the existing 2–64 clamp. The count is a palette budget, not a guarantee of that many output colors: quantization and component cleanup can retain fewer. Automatic selection is a heuristic: very small accents may not contribute to the count. When auto selects one visible color, the binary solver traces it as black on transparent; an entirely transparent image remains empty. Auto requests use the color solver: omitting `solver` selects it, while explicitly sending `solver: 0` with `"auto"` is rejected rather than silently running a binary job. diff --git a/vectorizing/solvers/color/legacy.py b/vectorizing/solvers/color/legacy.py index eb1364d..a13d07d 100644 --- a/vectorizing/solvers/color/legacy.py +++ b/vectorizing/solvers/color/legacy.py @@ -11,6 +11,7 @@ from vectorizing.geometry.potrace import potrace_path_to_compound_path from vectorizing.solvers.color.quantize import ( _recover_background_slots, + _remove_background_color_bias, get_background_cluster, get_initial_centroids, kmeans, @@ -24,7 +25,7 @@ def quantize( auto_method: Image.Quantize | None = None, recover_background_slots: bool = False, ) -> tuple[np.ndarray, np.ndarray, bool]: - """Run original cleanup, optionally recovering background-only palette slots.""" + """Run original cleanup with optional numeric background color recovery.""" background = get_background_cluster(img_arr) if img_arr.shape[-1] == 4 else None for attempt in range(2): rgb = ( @@ -47,6 +48,8 @@ def quantize( break # Keep the original numeric seeding and defer cleanup until recovery ends. img_arr = recovered + if recover_background_slots and auto_method is None: + colors = _remove_background_color_bias(rgb, labels, colors, background) if background is not None: labels = np.where(background > 0, 0, labels + 1) colors = np.vstack( diff --git a/vectorizing/solvers/color/quantize.py b/vectorizing/solvers/color/quantize.py index beb7bc5..50e8422 100644 --- a/vectorizing/solvers/color/quantize.py +++ b/vectorizing/solvers/color/quantize.py @@ -120,6 +120,52 @@ def _recover_background_slots( return recovered +def _remove_background_color_bias( + rgb: np.ndarray, + labels: np.ndarray, + colors: np.ndarray, + background: np.ndarray | None, +) -> np.ndarray: + """Compensate shared centroids for hidden RGB without changing their labels.""" + if background is None: + return colors + visible = (background == 0).ravel() + if not visible.any(): + return colors + assigned = labels.ravel() + counts = np.bincount(assigned, minlength=len(colors)) + visible_labels = assigned[visible] + visible_counts = np.bincount(visible_labels, minlength=len(colors)) + shared = (visible_counts > 0) & (visible_counts < counts) + if not shared.any(): + return colors + + pixels = rgb.reshape(-1, 3) + visible_pixels = pixels[visible] + offset = np.empty((np.count_nonzero(shared), 3), dtype=np.float64) + for channel in range(3): + total = np.bincount( + assigned, + weights=pixels[:, channel], + minlength=len(colors), + )[shared] + seen = np.bincount( + visible_labels, + weights=visible_pixels[:, channel], + minlength=len(colors), + )[shared] + offset[:, channel] = seen / visible_counts[shared] - total / counts[shared] + # Keep FAISS's sampled centers and fixed assignments; remove only the mean + # contribution of masked pixels. Reassigning pixels would change layer masks. + corrected = colors.copy() + corrected[shared] = np.clip( + np.rint(colors[shared].astype(np.float64) + offset), + 0, + 255, + ).astype(colors.dtype) + return corrected + + def bilateral_filter(img_arr: np.ndarray) -> np.ndarray: """Gently smooth local color noise without the broad blur of a large kernel.""" return cv2.bilateralFilter(img_arr, 3, 12, 1) @@ -251,7 +297,7 @@ def quantize( auto_method: Image.Quantize | None = None, recover_background_slots: bool = False, ) -> tuple[np.ndarray, np.ndarray, bool]: - """Return cleaned labels/palette, optionally recovering background-only slots.""" + """Return cleaned labels/palette with optional numeric background recovery.""" background = get_background_cluster(img_arr) if img_arr.shape[-1] == 4 else None for attempt in range(2): rgb = bilateral_filter(img_arr[:, :, :3].copy()) @@ -274,6 +320,9 @@ def quantize( order = np.lexsort(colors.T[::-1]) labels = np.argsort(order)[labels].astype(np.uint16) colors = colors[order] + if recover_background_slots and auto_method is None: + # Correct fills after ordering so paint order and mask geometry stay fixed. + colors = _remove_background_color_bias(rgb, labels, colors, background) if background is not None: labels = write_background_cluster(labels, background) colors = np.vstack( diff --git a/vectorizing/tests/images/snail.png b/vectorizing/tests/images/snail.png new file mode 100644 index 0000000000000000000000000000000000000000..55b2b8e757ddbe5868899bd348b1e3c649016fe2 GIT binary patch literal 157403 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≫&zE1mYd2qethRCDx}Br5ts}!? z*E?j2AImBgzJ-Ef$qrDe)ENPQ7sh|{`>X8I8*aDW?r!V%??OrFR9y|Nn&{3H~7K*1d_*C#t(Vo_amq*ztR0D(9 z6tq+FbOQBWm8?+!)+-fTaitAy%dPQ#VX;R~;3`YptbJjJU;C#r^|b`58n6LeYBK0# zhq#G3Xb^b6KlA(6(t%e1^rZi`I~-?AF13d24jDceMZ+*B1$;1Q(2hBzG`_h98-kA& zN^t-V+m(>tK^mRQsh~=lK{*7SBRQ%d?-=D;nZS>D6X?>94oj;^W5HiN8AEuDI=P zzOanDPFT~zXpe^_cmM9TcJ?X9T6=q&U-ksgY>Bc89B&~hmGtldfFY{|Ze(#e_2=79 zvG?A6h5J6?;nQlRW``erE8o(HJ9Dv~L@yTYBm11O19Nnr$5+U0z!5!;m}rDwBPiVU zgs^$ql}Ff|S)b|V2q@Soou{|6a$e6OPZLG&VD7X3B{pQ}s4O#)`)ttpa6)-yWf2>!-e(t|`vdZW!%$xMh=4j2y4#a+p)7&)H9Ppw8?3cW z-+Uu9j1O^k6Mi_kL7uBBNvfd(y;8Od=Kug807*naR3c+u7|246r~sh6iXc#y zfkYX~3pef-hIZLEUew65sH279^B6!I6p6-iG@k|a*X#EFho9J_ZFc7+o0!$pJAL@i zt3t|=edt_zMlS{y=PxaEB~Y*14VRs3ue|z(9lYOew$xgil4o1{5bmzPExbY1)NGfX z`E%Rh+uusx1O$KD01TRhc2p$r(#j#l27M{LMT^-bcGsP24?lE~z4!Jrhgh(1Xsa5;RSjQle#j-Dz@X4pWFBes|(q|C8fNeYMou3cF-{=+k=lkYkfUk z@;~vVI0h^5?&|67?f$5F7&TdV)lK&4nK$}{6>T7J}OhGE$)o5;`T%I8L zhaD}E62!jX1?n_YM49S*IY;S1&QhRf-mJ#|h;RB=N>Vp>o4^snBjn>a%*bE<;~;!F zE9;{m_h54#3D=v6of^;Y_0{cyt8TP2E}CZbUOZ!kM;EX)5l#kSDE^$c`;-grE>k`y zS9j2WEjM8)=5M(8Ec@{(=h(B)J!3V?uajZ4gPxeR|NF5!__=s3Z@7;VWGBgM@UdUN zx-SFbCcup8@9@R_&pv(6nyRgaD;eHFAHdV{cn=ckinVp%i#tuW{gj{D5))RZ812nP z=NGdOFqa;ZCSS6~-J0}F?dEg|DMMCSagCGkbypl=bLY*l0j%S(&IdD^7zC(cKxFWG zPHF&^imkulPPW!MyCypP=Js=ypk=jco%1^Fe@^?IUH7MZxn6~G3{c<`Vz8Z0S65ee z*T*k)ux!-I8}C)`?wY0lunpw_49ItIwWvi$Sl&qSpe+8Y4WF2q%Y`L7iYH^xNw>1<9yPc%4|1TL#XCsm7um*K>Pfd#XTo%cK1o_z6j zK4XQBqqUBFJxg7A!pjP2?N@OHfAH=Xd23slKU{O6?Rog|_QHd=*(#fSm$OPf`{VwC z{*VK*e?NW)zYmDV7P9?04w!X40+g5k)pQkm=>Bu;jW?dPW~{r_daSbxUxCJ#oT>)a zr0@X?N9@_v-iC<*I8|)vW!ANAw*QF)_`p+w{E&45DAYqkuZX<2Z;lLAOF{zkg z*I#u69}m&OIHY)6l8GZbEn`v+5Kb{zVZ2yki4|o?2 z&|Y}`Ek6Mb9<1=1P>XeSch2j2|9Q=n-)dCy}L%~dDT#h7GnD4apa zf){G505;$bVEB+QJgvVgu9qM2h|bdrw!IpB0gu1+9+(;M1sCu--{hRI2t@Q_tyk-E zc(+%uO|UT?&M)QJd;)mWV^d$DwuBbPUzCRF6FjiQ#y1_S%NH&PHSlr)zu*$SD`#A>Ms6skD8|2Z(10z-hye=b+xpCW^u68WIuydx$ zKc>YJ#d)&IV&mpY^g8t{e7ksgVkwYSc#;yw^9l=jQt`^FrJvZ+1vKy6rg4)-E4X-! ziel?D_(!9VSF?Plc5U$1i;tmExwWi>n7}=Qbg__uw_lrp?-zX-ovY0Mffys1@1_6( z;dzP~8=e-QI7>?^Fl^MrHe=z(-G+35lSy3R-CRPV{BqhwNhAdW7S{yEG=9el;Etd| zx$$?p&|=f)7K#&Gk|a6CG1M`S_-#Ligu>UiwTgV;#{Hw@if`~^jP~8oF)Y|pIj2*v zL6Uy~pi~WDhZiOf(vL#L;@Iezm$fYHNb7nu?{EN08#l5vZlsK7{$yI;sugexPC`#4 zN*-IB%i-VS&cm$_K7qHU-H(G$7_56PStfoode(3{KMc906+Er7NnvwU6%IOfAb$M$7r_!X-St=~RbUmv z75E#gtESYgm^WA;(WGs&imh9(;|5PUP9u|XIUcK#CnM|8v}qH3^WIF2SqZ3-5W9qM ziFf*wmtfr=D^!a_E07h(8R<+5N=N2|_wY0>1jgD1%deKl;{I=+mzu)M&g(KeQpZXWpu3c^i zs7aERiobykVos9^c&m zdk$h3Ku7NXO62(I^zaO*mCDxyAXkg%oz8wk=9Briz`sKqq7W9}nN*D0(lyA0t9ba4 zztbq(evX*a(ZDHy4{zNGVdU-pTM!!pBWJa3Hk-rxjT_Oi`>`m}aV-|nK{{;P8>p=x z4P0EYkzO8u!h`b$4d{m{&(1)zMy1$erw(}M(=Sk$u`A|0ve8I_G{~Pv`}Q62(JNC> zTx{EYR4@|;%c$D&m(Fsmryjwd&ekrG?x_!t#o9lA)ne7+;sWf}`7j*XW4JD3Q9R*n znAYfwHQ7S9h$ER=+=e`Nn*3FKje_HJl<%XHMxv^6z3Yr)iIS6o(0#V>phn_iq-TLH zlWT2u11=c%sxKo6e<7~D8VtMNv2%};u$DJ6GcUf#mr1CF8bdECMlO}QWYc%=-x@F# zmbBidwyeBZ^RE2I6~r3slB?Hs+-rXLR83komt$5YXi;=)O*}X468!PUO109Y`2SaY z=O2G86HysRL=4Kw8aamxE_%_v6#hU*ZV4Sgvbaf= z{evm^=S_U4!<-T(o}NGP(|H-XN<_oiD=wAr)J{P7Qq9R)b@iG*aNhW9@#Y5~qpYk{ zHED!JY4Uzrs1O>AB&+D>o8F6yN>EZ(g6d2i#t%OgcTSq7!k`&0H&)UP769?jmKl^3 z7vtBj=ST(?&SphSZ_p^^O}K-Gx#GHfj2*FTNFNRD4~ss)t1sVWXAD(=B%YqoQf!<}yR>D}&`HRaR}UoSIa647XFgYQR^rY-FPMDf#I5KMYxm^etXM+5#0%ozP*Vb!o&dcXW{@mX#^A+DNP)=VXCBy`4Gv+ z(Ik~dbO)aO#aTL$5sgcSh%T@MT7&H_;Er5_P;;s^?RvMLfB6kdmi~lOhmX^2oX$O0 zehm-DbJViu_ZEmG9qFMNtLDv{V^d`nvY8Cte0CCgo-{NO*PZUsvo5au)q|+VuV1|* zon`^E$sznm5uA^K1sO?q=_dohLF_u*bxU8AmKEz#-%+D&@HwziP~9RW$2$Y+ zh=gP}PywcQQG6#)v$6gm%3NfDe)_RYe)RrR_;&(g&a4e@UA#{Vf`+xGh*D??7BsR*8@G)l`#k;~;#SzUEp?TY!YMA!

$0+< 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 None: + """Hidden black must not darken navy when all three palette slots survive.""" + with Image.open(Path(__file__).parent / "images" / "snail.png") as source: + image = source.copy() + pixels = np.asarray(image) + assert np.count_nonzero(pixels[:, :, 3] == 0) == 43_742 + np.testing.assert_array_equal(pixels[pixels[:, :, 3] == 0, :3], 0) + paths, colors, width, height = ColorSolver(image, 3, Timer(), configuration).solve() + assert len(paths) == len(colors) == 3 + navy = min(colors, key=lambda color: int(np.sum(color[:3]))) + # This opaque pixel is well inside the snail, away from blended edges. + expected = pixels[390, 180, :3] + np.testing.assert_allclose(navy[:3], expected, atol=4) + serialize = ( + generate_original_SVG_markup + if configuration == "current" + else generate_SVG_markup + ) + raster = Image.open( + BytesIO(svg2png(bytestring=serialize(paths, colors, width, height).encode())), + ).convert("RGBA") + np.testing.assert_allclose(raster.getpixel((180, 390))[:3], expected, atol=4) + assert raster.getpixel((180, 390))[3] == 255 + assert raster.getpixel((0, 0))[3] == 0 + np.testing.assert_array_equal(np.asarray(image), pixels) + + @pytest.mark.parametrize("configuration", ["current", "experimental"]) def test_numeric_color_count_does_not_become_automatic(configuration: str) -> None: """A two-color request stays at two even when three visible colors exist.""" @@ -93,6 +126,32 @@ def test_numeric_palette_keeps_clusters_shared_with_background( estimator.assert_not_called() +@pytest.mark.parametrize("configuration", ["current", "experimental"]) +@pytest.mark.parametrize("alpha", [0, 60, 127, 128, 255]) +def test_numeric_color_correction_keeps_alpha_classification( + configuration: str, + alpha: int, +) -> None: + """Color correction cannot move masks or reinterpret half-opacity visibility.""" + pixels = np.zeros((16, 16, 4), dtype=np.uint8) + pixels[:8, :, 3] = alpha + pixels[0, 0, 3] = 0 + pixels[8:12] = (32, 64, 96, 255) + pixels[12:] = (240, 240, 240, 255) + quantizer = legacy.quantize if configuration == "current" else quantize + before_labels, before_colors, before_background = quantizer(pixels, 2) + labels, colors, background = quantizer(pixels, 2, recover_background_slots=True) + assert background is before_background is True + np.testing.assert_array_equal(labels, before_labels) + assert colors.shape == before_colors.shape + assert colors.dtype == before_colors.dtype == np.uint8 + if alpha >= 128: + # Non-masked black must still contribute to the shared visible color. + assert np.sum(colors[1, :3]) < 120 + else: + np.testing.assert_allclose(colors[1, :3], (32, 64, 96), atol=4) + + @pytest.mark.parametrize("configuration", ["current", "experimental"]) def test_numeric_component_cleanup_does_not_trigger_recovery( configuration: str, @@ -152,3 +211,52 @@ def test_unused_palette_entry_does_not_trigger_recovery( ) assert _recover_background_slots(pixels, labels, 2, background) is None estimator.assert_not_called() + + +@pytest.mark.parametrize("count", [2, 8, 64]) +@pytest.mark.parametrize("seed", range(4)) +def test_background_color_bias_matches_independent_reference( + count: int, + seed: int, +) -> None: + """Match per-cluster means, including shared, unused and background-only slots.""" + rng = np.random.default_rng(seed) + rgb = rng.integers(0, 256, (7, 9, 3), dtype=np.uint8) + labels = rng.integers(0, count, (7, 9), dtype=np.uint16) + colors = rng.integers(0, 256, (count, 3), dtype=np.uint8) + background = (rng.random((7, 9)) < 0.4).astype(np.uint8) + before_rgb, before_labels, before_colors = rgb.copy(), labels.copy(), colors.copy() + expected = colors.copy() + for index, color in enumerate(colors): + cluster = labels == index + all_pixels = rgb[cluster] + visible = rgb[cluster & (background == 0)] + if len(visible) and len(visible) < len(all_pixels): + bias = visible.mean(axis=0) - all_pixels.mean(axis=0) + expected[index] = np.clip( + np.rint(color.astype(np.float64) + bias), + 0, + 255, + ).astype(np.uint8) + actual = _remove_background_color_bias(rgb, labels, colors, background) + np.testing.assert_array_equal(actual, expected) + assert actual.dtype == colors.dtype + np.testing.assert_array_equal(rgb, before_rgb) + np.testing.assert_array_equal(labels, before_labels) + np.testing.assert_array_equal(colors, before_colors) + + +@pytest.mark.parametrize("background_value", [None, 0, 1]) +def test_background_color_correction_without_shared_pixels_is_noop( + background_value: int | None, +) -> None: + """Do not alter palettes for opaque images, empty images or unused slots.""" + rgb = np.full((8, 8, 3), 80, dtype=np.uint8) + labels = np.zeros((8, 8), dtype=np.uint8) + colors = np.array([[79, 80, 79], [255, 255, 255]], dtype=np.uint8) + background = ( + None + if background_value is None + else np.full((8, 8), background_value, dtype=np.uint8) + ) + assert _remove_background_color_bias(rgb, labels, colors, background) is colors diff --git a/vectorizing/tests/test_color_p3.py b/vectorizing/tests/test_color_p3.py index 71e4a6d..91d0661 100644 --- a/vectorizing/tests/test_color_p3.py +++ b/vectorizing/tests/test_color_p3.py @@ -61,8 +61,35 @@ def capture_rims(bitmaps: list[np.ndarray]) -> None: "23d8c97dee23ea3f0b22d164d39f726f36ead7f2ce47048ca73326bf2731c7e8", # ARM64 "1f52fe3d8589574cc561bf5ab0dff6a9ce410292d79b9e05dcf0a781f2d919f3", # x86_64 } + # Numeric fills compensate hidden RGB without reassigning pixels or + # changing the approved layer ordering and geometry. np.testing.assert_array_equal( np.asarray(colors)[:, :3], + [ + [6, 9, 22], + [19, 60, 148], + [27, 100, 202], + [40, 35, 63], + [193, 149, 161], + [212, 55, 118], + [234, 214, 216], + [248, 57, 61], + ], + ) + assert (width, height) == (1024, 1024) + svg = generate_SVG_markup(paths, colors, width, height) + # Approved pre-encoding P3: 1,376,657 bytes. Do not discard geometry for size. + assert len(svg.encode()) < 760_000 + + +def test_aftermath_default_quantizer_keeps_original_palette() -> None: + """Keep the original lower-level palette when numeric recovery is not enabled.""" + with Image.open(IMAGES / "aftermath.png") as image: + pixels = ColorSolver(image, 8, Timer(), "experimental").img_arr + _, colors, has_background = quantize(pixels, 8) + assert has_background + np.testing.assert_array_equal( + colors[1:, :3], [ [2, 3, 8], [19, 60, 148], @@ -74,10 +101,6 @@ def capture_rims(bitmaps: list[np.ndarray]) -> None: [248, 57, 61], ], ) - assert (width, height) == (1024, 1024) - svg = generate_SVG_markup(paths, colors, width, height) - # Approved pre-encoding P3: 1,376,657 bytes. Do not discard geometry for size. - assert len(svg.encode()) < 760_000 @pytest.fixture(scope="module")