LiveMutaSprite is live. Now on Gumroad and itch.io — buy and download today.
Handbook/ Transform operations/ Pixel-art UnDetail

Pixel-art UnDetail

Bring over-detailed PNG assets down to a coarser pixel structure on purpose — no gray fringes, edge artifacts, or RGBA mush.

Summary

Pixel-art UnDetail reduces over-fine PNG assets down to a coarser pixel structure on purpose — block-wise downscaling and nearest-neighbor upscaling, output at the original size by default. It deliberately avoids gray fringes, semi-transparent edge artifacts and RGBA-average mush. It's a standalone transformation operation, separate from the chroma-key flow.

When to use it

  • A generator/paintover asset is too fine for your pixel-art game and should look coarser.
  • The usual workaround "downscale + nearest-neighbor upscaling" gives you gray edges or semi-transparent mush — UnDetail separates alpha, edge colors and block colors cleanly.
  • You want to keep the original size but lower the level of detail.

When not UnDetail:

  • You want real pixel art with a curated palettePixelize.
  • You want to cut out → a chroma-key profile.

How it works

UnDetail splits the image into blocks, picks one color per block, and reassembles the result back to the original size. What's decisive for clean results:

  • RGB is sampled only from opaque / sufficiently covered pixels — transparent edges bring no foreign colors or pseudo-alpha into the output.
  • Exactly single-colored blocks bypass quantization and keep their original color.
  • Smooth-area snap snaps optically smooth low-variance blocks onto shared area colors, so even surfaces don't go noisy block by block.
  • Smooth-island cleanup adjusts tiny color outliers to the neighboring areas.

Settings

Slider Effect
Profile Custom (default) · Pixelart Smooth 8 · Pixelart Strong Smooth 16 — tuned parameter bundles.
Block size 2/3/4/6/8, default 4 — how coarse the pixel structure gets.
Sampling Block color via Dominant (default) · Median · Average.
Quantization Color grid Off · Light (default, 16 levels) · Strong (32 levels).
Smooth-area Snap (default) / Off, threshold 0–32 (default 8) — unify smooth areas.
Smooth-island cleanup On (default) / Off — align small color islands to neighboring areas.
Alpha Hard (default) · Coverage threshold · Keep alpha, threshold default 128.
Edge bleed Fill RGB under transparent edge pixels (default on) — prevents gray fringes.
Output size Original size (default) · Small image (32/64/128/256 or manual 8–4096) · Both.

Recommended settings by use case:

Goal Recommendation
Light coarsening, keep the original Default (Custom, Block 4, Quantization Light)
Even areas, less noise Pixelart Smooth 8 or Strong Smooth 16
Also export a small sprite Output size: Both, pick a target width

CLI / Automation

Headless, the same coarsening — invocation and positional arguments in the CLI overview. You pick this operation with --operation undetail.

Relevant flags (mirroring the sliders above): --undetail-profile {custom,balanced,strong_smooth}, --undetail-block-size {2,3,4,6,8} (Block size, default 4), --undetail-sampling {dominant,median,average}, --undetail-quantization {off,light,strong}, --undetail-smooth-mode {off,snap} with --undetail-smooth-threshold 0–32, --undetail-island-cleanup {off,on}, --undetail-alpha-mode {hard,coverage,preserve} with --undetail-alpha-threshold 1–255, --undetail-bleed-edge-rgb {on,off} (Edge bleed) plus the output size --undetail-output-scale {original,small,both} with --undetail-small-width PX.

Example:

clean_sprite_chromakey.py art.png art_undetail.png --operation undetail --undetail-block-size 4 --undetail-quantization light

FAQ

What's the difference from "Pixelize"? UnDetail is a block mosaic + per-channel posterize — it reduces detail but produces no coherent palette and knows no target resolution. Pixelize is the pixel-art converter with a curated, limited palette and a real low-resolution grid. Pick UnDetail for coarsening, Pixelize for intentional pixel art.

Do I get semi-transparent edges? In the standard mode no — transparent pixels keep alpha 0, and the edge bleed fills sensible RGB values under the edge. So no gray fringes form.

Does this scale my chroma-key result? No. UnDetail is its own operation; chroma-key itself still never scales. The defaults of the two flows aren't mixed.

Limits

  • No curated palette / no target resolution — that's Pixelize's job.
  • No sprite generation, no general retouching or style-transfer function.
  • No cloud / third-party services — everything runs locally.

Examples

UnDetail: left, noisy detail art; right, smoothed/simplified block by block.

An over-drawn/noisy source is simplified block by block — calmer areas, clearer pixel art.

Related features