Get Started
Home
Topics
Search
Library
7 min read · Evaluation · Image Generation · Sep 10, 2026

Mi-Ripple: Restoring Images Degraded by Iterative AI Editing

Source: research paper via Hugging Face Daily Papers
0:00 / 10:59
Iterative reference-based image editing accumulates grid and grain artifacts that prompts can’t fix and generic denoising destroys. Mi-Ripple diagnoses first—spectral peaks versus content-entangled granularity—then routes to notch filtering, masked suppression, or regeneration from a cleaned reference, keeping high-frequency retention above 98.9%.
TL;DR
Mi-Ripple is a diagnosis-first workflow that repairs the grid and grain textures (“digital ripple”) that accumulate when you keep feeding an AI-edited image back as the next edit’s reference, choosing between spectral Notch filtering, structure-aware smoothing, or regenerating from a cleaned reference based on whether the artifact is separable from real content.
Why It Matters
Here’s the concrete situation. You use a hosted image editor (say, an OpenAI image model or Gemini’s image preview) to iterate on a picture: generate, tweak the prompt, feed the last output back as the reference, repeat. After a few rounds, the image at full resolution starts showing faint grids, honeycomb patterns, or a persistent granular “crust” over foliage and skin. Thumbnails look fine. Print or 100% zoom does not.
Prior work on generated-image artifacts (checkerboards from deconvolution, Spectral fingerprint discrepancies used to detect fakes) has mostly asked “is this image synthetic?” This paper asks the practical follow-up: given that you already have the ripply image and no access to model weights, seeds, or samplers, how do you clean it up without destroying legitimate detail like hair strands or leaf veins? The nearest empirical reference point the authors cite is Banana100, which documents recursive degradation but does not prescribe treatment.
How It Works
The core insight is that not all ripple is the same, and the right fix depends on which kind you have. A lattice artifact shows up as isolated peaks in the frequency spectrum: it lives at specific frequencies and is spatially separable from content. A granular artifact (crusty foliage, speckled skin) is entangled with real texture. Filter it and you erase the scene.
So Mi-Ripple runs a diagnosis stage first. Two probes cooperate: a spectral probe on the CIELAB L* lightness channel looks for peaks that stick out above a local median baseline (the anomaly score), and a spatial “scale-tile” probe scans 128-pixel tiles for repeated blob-like units with consistent size, circularity, and low directionality. Together they classify a region as lattice-positive, granular, both, or clean.
Routing then follows:
•
Lattice, isolated peaks: apply selective notching. In plain terms, find the specific frequency components that stick out, multiply the spectrum by a Gaussian-feathered mask that suppresses just those, and inverse-transform. Phase is preserved, so pixel alignment is kept and you can measure filtering damage directly against the input.
•
Granular in a flat region: apply a strict masked band-reduction that only fires where edge strength, orientation coherence, and texture density say “this is not real structure.”
•
Granular entangled with real content (dense foliage, hair): don’t filter. Instead, produce a reference-grade cleaned version (stronger suppression, face-protected, not shown as final art), regenerate the image using that as the reference, then re-diagnose the new output and notch any fresh lattice peaks it introduces.
A verification stage checks that filtering didn’t do harm: residual standard deviation in lightness stays bounded, and high-frequency content is retained above 90% (measured as the ratio of high-passed standard deviations, output over input). Regenerated candidates skip the pixel-aligned check because the content legitimately changed, and get human review instead.
def mi_ripple(img): diag = diagnose(img) # spectral peaks + scale-tile probe if diag.lattice and diag.peaks_isolated: out = selective_notch(img, diag.peaks) elif diag.granular and diag.region_flat: out = masked_band_reduce(img, diag.structure_mask) else: # content-entangled clean_ref = reference_grade_clean(img, protect=faces) out = regenerate(clean_ref) if diagnose(out).lattice: out = selective_notch(out, ...) return out if verify(img, out) else human_review(out)
What They Found
The evidence is a mix of measured filtering-damage numbers and single-draw before/after comparisons. It is not a leaderboard study, and the authors are careful to say so.
•
Filtering is low-distortion when it applies. Across fourteen notch-only executions, whole-image residual standard deviation stays between 0.08 and 0.44 lightness units (on a 0\u2013100 scale), with high-frequency retention 98.9\u201399.8%. The fourteen include reuse of some candidates, so it is not fourteen independent images.
•
Reference cleaning meaningfully changes what the next generation produces. In one paired example, cleaning the reference before regeneration cut output “debris density” (small Canny components per megapixel) from 1,842 to 1,020, a 45% drop. A dense-moss comparison saw the scale index fall from 35.3% (untreated reference) to 15.8% (cleaned reference) on a common canvas.
•
Cross-version endpoint sweep. On eight scenes edited four times through the gpt-image-2.5 route, restoration pushed six of eight endpoints to the “none” grade on the scale index. Moss gorge went 25.3% \u2192 11.1%, wisteria 41.1% \u2192 12.1%, ice cave 20.0% \u2192 0.0%. Two scenes remained structured after treatment.
•
Ripple is configuration-dependent, not vendor-defined. In a 69-image survey, one channel was lattice-positive in 43/43 outputs, while another was negative at 1280\u00d7720 (20/20) but positive at 1536\u00d71024 (6/6). Same nominal vendor, different resolution, different artifact.
•
Prompt-based mitigations do not reliably help. Eight paired comparisons of an unchanged prompt versus one with an added foliage-texture constraint: the constraint raised the scale index in five pairs and lowered it in three. Sign-test p-values for decomposed prompt components were 0.29, 0.73, and 0.73. You cannot prompt your way out of this.
Separately, an analysis of Banana100 sequences from seven model families shows that some families carry a persistent characteristic period (Qwen holds a six-pixel horizontal period across all ten edit steps), others accumulate autocorrelation strength over steps, and the two sets overlap but are not the same. Persistence and accumulation are distinct phenomena.
What’s Useful
•
If you run iterative reference-based editing in production and see progressive texture degradation, the practical operational lesson is to preserve approved references and use a star-shaped edit graph (each new edit branches from a known-good ancestor) rather than a chain that reuses the last output. The paper does not benchmark this, but the moss-chain trajectory (0.9% \u2192 23.7% granular coverage over five same-scene generations) is what motivates the advice.
•
If you already have degraded images and control the pixels, the diagnose-then-route pattern is worth adopting even without the specific thresholds. The key discipline is: never accept a lower artifact score as the goal; always check filtering damage with an aligned pixel comparison, and never run the aligned check on a regenerated image (content changed, so the numbers are meaningless).
•
If you were planning to add “clean, sharp, no artifacts” style clauses to editing prompts as a fix, the paired-prompt evidence suggests this is not a reliable control. Worth testing on your own scenes, but do not expect it to substitute for post-hoc filtering or reference cleaning.
•
If you are building a detector or QC tool, note that spectral anomaly alone is not specific to synthetic images (one JPEG photograph in the survey scored 3.12, well into the “generated” range). Combine spectral and spatial probes, and treat missing eligible windows as a distinct outcome, not as “clean.”
The paper mentions repository scripts for diagnosis, scale indexing, notching, spatial suppression, reference cleaning, regeneration, and verification, but does not supply a public URL in the supplied text.
Caveats
•
Almost every restoration comparison is a single draw, not an average over repeated trials. “45% debris reduction” is one paired example, not an expected-value estimate. Treat the numbers as existence proofs of the routes, not as effect sizes you can quote to a PM.
•
The two editing channels used are described as sampled access conditions on commercial APIs. The authors explicitly refuse to rank vendors, because different channels also differ in resolution, delivery path, and possibly watermarking, and any of those can produce lattice-like spectra.
•
The diagnostic thresholds (excess above local baseline, tile qualification criteria, grade cutoffs) were calibrated on this study’s own annotated windows. They are within-study triage tools, not a validated universal classifier.
•
Regeneration routes can invent detail, shift colors, or change canvas size. One targeted case in the paper introduced a color shift after cleaning. The aligned distortion check does not catch this: it only measures whether subsequent filtering damaged the regenerated candidate, not whether the regeneration was faithful to intent.
•
The proposed star-shaped workflow (branch from approved references instead of chaining outputs) is a recommendation, not a benchmarked intervention. The authors flag it as unmeasured.
Topics
Don't miss new content
Log in to follow topics and personalize your feed.
Related topics you might like
Evaluation87 episodes
Image Generation29 episodes
Computer Vision86 episodes