Ga naar hoofdinhoud
LibraTool logoLibraTool

Gratis Afbeelding vergroten

Vergroot een foto 4× met een AI-model dat op je eigen apparaat draait — scherpere randen en leesbare tekst, niet alleen grotere pixels. Er wordt niets geüpload, geen account, geen watermerk.

Sleep bestanden hierheen of klik om te bladeren

PNG, JPG, WebP, AVIF, GIF, BMP, HEIC, HEIF · verwerkt op je apparaat

of druk op Ctrl+V om vanaf het klembord te plakken

Je kunt meerdere bestanden tegelijk slepen

Bestanden bladeren
Real-ESRGAN tekent detail opnieuw op 4× in plaats van pixels uit te rekken. Het model van 4,6 MB wordt één keer gedownload en draait daarna volledig op dit apparaat — je foto wordt nooit geüpload.

Hoe het werkt

De upscaler draait Real-ESRGAN general-x4v3 — een convolutioneel superresolutienetwerk van 4,6 MB — via onnxruntime-web in een Web Worker op je eigen computer. Het model wordt eenmalig van onze eigen server opgehaald, in de cache bewaard en daarna offline gebruikt; je foto wordt lokaal naar een canvas gedecodeerd en nooit geüpload. De schaalfactor staat vast op 4×, omdat die op twee plekken hard in de graaf is ingebakken.

  1. 1
    De afbeelding wordt in overlappende tegels verdeeld
    Een resultaat van 4× heeft zestien keer zoveel pixels, dus een foto van 4000×3000 zou 192 megapixel worden — genoeg om het browsertabblad niet alleen te vertragen maar gewoon te laten crashen. In plaats daarvan wordt de afbeelding verdeeld in kernen die hem precies bedekken, en elke kern wordt aan alle kanten met een extra marge context gelezen, zodat de convolutiestapel (met een receptief veld van 34 pixels) echte naburige pixels heeft om mee te werken. Randen worden met randherhaling aangevuld, nooit met nullen, want dan zou het model een zwarte rand rond het beeld verscherpen.
  2. 2
    Elke tegel wordt verpakt als planaire RGB-tensor
    Een tegel wordt een float32-tensor met vorm [1, 3, H, W], met de rode, groene en blauwe kanalen als aparte vlakken en de waarden eenvoudig gedeeld door 255 — zonder enige normalisatie op gemiddelde/standaardafwijking. Elke tegel wordt aangevuld tot precies dezelfde vierkante grootte, omdat de WebGPU-backend zijn shaders voor elke nieuwe invoervorm opnieuw compileert en een plan met drie verschillende tegelgroottes die kosten drie keer zou betalen.
  3. 3
    Inferentie draait op WebGPU waar dat bestaat, anders op de CPU
    De sessie wordt eerst met WebGPU gemaakt en valt bij elke fout terug op WebAssembly met één thread — grafische stuurprogramma's melden regelmatig ondersteuning en falen dan halverwege het opbouwen van de graaf, en langzamer is beter dan kapot. Omdat de terugval de realistische groottelimiet en de looptijd sterk verandert, controleert de tool de taak opnieuw tegen de provider die hij echt heeft gekregen voordat de eerste tegel draait, en vertelt je achteraf welke is gebruikt.
  4. 4
    Tegels worden met een overvloeiing samengevoegd en begrensd
    Tegels stomp tegen elkaar zetten laat een zichtbaar raster achter, dus de bijdrage van elke tegel wordt gewogen met een lineaire helling over de gedeelde strook. De twee hellingen zijn exact complementair, zodat de gewichten op elke uitvoerpixel precies optellen tot 1 en er geen lichte of donkere lijn langs een naad verschijnt. De ruwe uitvoer van het model wordt binnen de graaf niet afgekapt — gemeten waarden lopen van ongeveer −0,18 tot +1,19 — dus elke sample wordt vóór de omzetting naar 8 bits begrensd op het bereik 0–255, wat spikkels langs randen met veel contrast voorkomt. Alfa wordt apart en bilineair geresampled, omdat het netwerk zelf geen alfapad heeft.
  5. 5
    Het resultaat wordt in de worker gecodeerd
    De samengestelde pixels worden op een OffscreenCanvas getekend en meteen naar PNG gecodeerd, zodat er geen asynchrone vertraging zit vóór de knop Downloaden. Overschakelen naar JPG codeert opnieuw vanuit het canvas dat de worker nog vasthoudt, in plaats van het model opnieuw te draaien. Er wordt ook een kleine uitsnede uit het midden op 100% getoond naast hetzelfde gebied geschaald door de browser — de enige vergelijking waarbij een verschil van 4× echt zichtbaar is.

De modelgewichten worden eenmalig van onze eigen server gedownload en in de cache bewaard; je afbeelding wordt volledig in je browser gedecodeerd, in tegels verdeeld, opgeschaald en gecodeerd, en geen enkel deel ervan wordt ooit ergens naartoe gestuurd.

Gerelateerde tools

Veelgestelde vragen