Wat is potrace?
Potrace (polygon tracer) is een gratis opensourceprogramma van Peter Selinger, uitgebracht onder de GPL. Het zet een bitmap om in vloeiende vectoromtrekken. Het leest PBM-, PGM-, PPM- en BMP-bestanden en schrijft SVG, EPS, PostScript, PDF, DXF, GeoJSON en andere formaten.
Potrace trekt in één kleur over: elke pixel is voorgrond of achtergrond. Paden → Bitmap overtrekken in Inkscape gebruikt potrace onder de motorkap, en de meerkleurige modi stapelen meerdere potrace-rondes. De bijbehorende tool mkbitmap schoont een grijswaardenscan op en vergroot hem tot een bitmap vóór het overtrekken.
Wat is de Potrace-drempelwaarde?
Voordat potrace de randen van een afbeelding kan overtrekken, moet de afbeelding worden teruggebracht tot precies twee kleuren: zwart (voorgrond) en wit (achtergrond). Dit heet binarisatie. De drempelwaardeparameter (-k) bepaalt waar de scheidingslijn op de helderheidsschaal valt. Voor het grotere plaatje lees je hoe conversie van raster naar vector werkt en welke afbeeldingen zich goed laten overtrekken.
Elke pixel in de bronafbeelding heeft een helderheidswaarde. In een grijswaardenafbeelding loopt dit van 0 (zuiver zwart) tot 1 (zuiver wit), waarbij 0,5 middelgrijs is. De drempelwaarde bepaalt de grens:
- Pixels met een helderheid onder de drempelwaarde → worden zwart (opgenomen in het vectorspoor)
- Pixels met een helderheid boven de drempelwaarde → worden wit (genegeerd)
De standaard drempelwaarde is 0,5, wat de helderheidsschaal precies in tweeën deelt. Dit werkt goed voor de meeste afbeeldingen met hoog contrast, maar het aanpassen van de drempelwaarde kan de resultaten voor specifieke brontypen aanzienlijk verbeteren.
Technische opmerking: Kleurinvoer wordt eerst teruggebracht tot één helderheidswaarde per pixel en daarna met de drempelwaarde vergeleken. Kleuren met een vergelijkbare helderheid belanden aan dezelfde kant van de grens, ook als ze er verschillend uitzien.
Visuele vergelijking bij verschillende drempelwaarden
Om het effect van drempelwaarde-instellingen te begrijpen, bekijk je hoe dezelfde bronafbeelding eruitziet bij tracering op verschillende waarden. De onderstaande beschrijvingen gelden voor een typische grijswaardenafbeelding met een mix van lichte en donkere elementen:
| Drempelwaarde | Visueel resultaat | Wat wordt vastgelegd |
|---|---|---|
| 0,2 | Zeer licht — minimale voorgrond | Alleen de absolute donkerste pixels (diepe zwarten, zware schaduwen). Het grootste deel van de afbeelding verschijnt als leeg wit vlak. Nuttig om alleen de meest markante, contrastrijke elementen uit een rommelige afbeelding te extraheren. |
| 0,3 | Licht schetsgefoel | Donkere zones en sterke middentonen. Lichte grijstinten en middentonen worden weggelaten. Levert een delicaat, schetsachtig resultaat dat de primaire contouren weergeeft, maar geen fijne details of subtiele arcering. |
| 0,5 | Gebalanceerd (standaard) | Alles donkerder dan middelgrijs wordt voorgrond. Geeft de meest natuurlijke binaire weergave voor de meeste afbeeldingen. Het standaard startpunt voor logo's, lijntekeningen en algemene graphics. |
| 0,7 | Zwaarder — meer voorgrond | Het grootste deel van de afbeelding wordt voorgrond; alleen de lichtste gebieden blijven wit. Geschikt voor het terughalen van details uit lichtgekleurde bronafbeeldingen, vervaagde documenten of potloodschetsen die te licht waren bij 0,5. |
| 0,9 | Zeer zwaar — bijna volledig gevuld | Vrijwel alles wordt zwarte voorgrond. Alleen bijna-witte pixels blijven achtergrond. Nuttig voor het extraheren van zeer vage tekens op een witte achtergrond, maar levert gewoonlijk een te zwaar, detail-verbergend resultaat op. |
De kerngedachte: lagere drempelwaarden leveren lichtere uitvoer met minder detail; hogere drempelwaarden leveren zwaardere uitvoer die meer van de afbeelding vastlegt. Er bestaat geen universeel "juiste" drempelwaarde — die hangt volledig af van de helderheidsverdeling van je bronafbeelding en het gewenste resultaat.
Andere Potrace-parameters
Hoewel de drempelwaarde de grootste invloed heeft op de uitvoer, biedt potrace ook een aantal aanvullende parameters waarmee je het vectorresultaat verder kunt verfijnen.
Hoekafvlakking (-a alpha)
Bepaalt of hoeken in de getraceerde contour worden weergegeven als scherpe hoeken of worden afgevlakt tot rondingen. De waarde loopt van 0 tot 1,334:
-a 0(scherpe hoeken) — Elke hoek in de binaire contour wordt bewaard als scherpe hoek in de SVG. Dit levert hoekige, nauwkeurige uitvoer op. Het beste voor geometrische vormen, pixelart, QR-codes en technische diagrammen waarbij je exacte rechte hoeken wilt.-a 1(standaard) — Matige afvlakking. Hoeken dicht bij 90° worden bewaard; stompe hoeken worden afgevlakt tot rondingen. Dit biedt een goede balans voor de meeste toepassingen — tekst blijft leesbaar, organische vormen voelen natuurlijk aan.-a 1,334(maximale afvlakking) — Alle hoeken worden omgezet in rondingen, ook scherpe. Levert de vloeiendste, meest vloeiende uitvoer. Ideaal voor handschrift, organische vormen en artistieke interpretaties waarbij hoekige artefacten er onnatuurlijk uit zouden zien.
Padoptimalisatie (-O)
Bepaalt hoe agressief potrace de Bézier-curves vereenvoudigt die elk pad vormen. Hogere optimalisatieniveaus produceren SVG-bestanden met minder controlepunten (kleinere bestandsgrootte), maar mogelijk een iets minder nauwkeurige tracering. Het standaardniveau biedt een goede balans tussen getrouwheid en compactheid.
In de praktijk hoeft deze parameter zelden te worden aangepast. De standaardoptimalisatie levert compacte, nauwkeurige paden op die geschikt zijn voor zowel weergave als snijmachines. Hogere optimalisatie kan helpen als je SVG-bestand ongebruikelijk groot is (duizenden complexe paden uit een overgetrokken foto), maar voor typische logo's en lijntekeningen is de standaardwaarde optimaal. Heeft je snijsoftware DXF nodig in plaats van SVG, converteer de SVG dan naar DXF na het overtrekken.
Ruisverwijdering (-t turdsize)
Vóór het traceren verwijdert potrace kleine geïsoleerde gebieden (in de potrace-documentatie "turds" genoemd) uit de binaire afbeelding. De turdsize-waarde geeft de maximale oppervlakte in pixels aan van gebieden die worden weggegooid:
-t 0— Alles bewaren. Geen ruisverwijdering. Zelfs enkele zwevende pixels worden getraceerd tot kleine vectorpaden.-t 2(standaard) — Geïsoleerde gebieden van 1-2 pixels verwijderen. Elimineert de meeste scannerruis en JPG-compressie-artefacten zonder de werkelijke beeldinhoud te beïnvloeden.-t 10— Kleine vlekjes tot 10 pixels verwijderen. Goed voor gescande documenten met zichtbare papiertextuur.-t 50— Agressieve verwijdering. Elimineert grotere artefacten, maar kan ook kleine opzettelijke details zoals leestekens of fijne decoratieve elementen verwijderen.
Turdsize-tip: Als je SVG-uitvoer veel kleine verspreide vectorfragmenten bevat die geen deel uitmaken van het eigenlijke ontwerp, vergroot dan de turdsize. Als kleine opzettelijke details (puntjes, dunne streken) verdwijnen, verklein je de turdsize of stel je die in op 0.
Aanbevolen werkwijzen per type bronafbeelding
Verschillende typen bronafbeeldingen vereisen verschillende combinaties van potrace-instellingen. De onderstaande tabel geeft aanbevolen startpunten voor de meest voorkomende scenario's:
| Bronafbeelding | Drempelwaarde (-k) |
Hoeken (-a) |
Turdsize (-t) |
Opmerkingen |
|---|---|---|---|---|
| Schoon logo (Z&W) | 0,5 | 1 (vloeiend) | 2 (laag) | Standaardinstellingen werken perfect voor contrastrijke logo's op witte achtergrond |
| Potloodschets | 0,35–0,45 | 1,334 (max. vloeiend) | 0 (geen) | Lagere drempelwaarde om te voorkomen dat papiertextuur als ruis wordt vastgelegd; maximale afvlakking voor vloeiende lijnen |
| Inktstempel / zegel | 0,55–0,65 | 1 (vloeiend) | 10–20 (hoog) | Iets hogere drempelwaarde om de volledige stempel vast te leggen; hoge turdsize om inktspatten te verwijderen |
| Foto met laag contrast | 0,3–0,4 | 1 (vloeiend) | 10–50 (hoog) | Lagere drempelwaarde behoudt scheiding; hoge turdsize verwijdert ruis uit grijze zones |
| Kunst met hoog contrast | 0,5 | 0 (scherp) | 2 (laag) | Scherpe hoeken bewaren geometrische precisie; standaard drempelwaarde voor helder Z&W-contrast |
| Gescand document | 0,5–0,6 | 0 (scherp) | 5–15 | Scherpe hoeken voor leesbaarheid van tekst; matige turdsize voor papierstof en scannerartefacten |
| Vervaagde / lichte bron | 0,65–0,8 | 1 (vloeiend) | 2–5 | Hogere drempelwaarde legt lichtgekleurde inhoud vast die bij 0,5 verloren zou gaan |
| Pixelart / QR-code | 0,5 | 0 (scherp) | 0 (geen) | Scherpe hoeken bewaren pixel-perfecte geometrie; geen ruisverwijdering om elke opzettelijke pixel te behouden |
Tips voor voorbewerking
Het aanpassen van potrace-parameters helpt, maar de grootste verbeteringen komen van het voorbereiden van de bronafbeelding vóór de conversie. Deze voorbewerking kan in elke beeldeditor — zelfs de ingebouwde editor van je telefoon. De complete gids voor het vectoriseren van een afbeelding behandelt deze stappen, plus het opschonen na het overtrekken.
Contrast verhogen
De meest effectieve enkelvoudige verbetering. Open de afbeelding in een editor en verhoog de contrastschuifregelaar. Dit vergroot het verschil tussen lichte en donkere pixels, waardoor randdetectie schoner en nauwkeuriger wordt. Voor Z&W-afbeeldingen levert een aanpassing via "Niveaus" of "Curves" om zwarten donkerder en witten lichter te maken zelfs betere resultaten dan een eenvoudige contrastschuifregelaar.
Achtergrondgeluiden verwijderen
Bij gescande documenten en foto's van fysieke objecten is de achtergrond zelden zuiver wit. Papiertextuur, ongelijkmatige belichting, schaduwen en stof introduceren allemaal grijze pixels die potrace mogelijk als voorgrond interpreteert. Vóór het uploaden:
- Gebruik een "Niveaus"-aanpassing om de achtergrond naar zuiver wit te duwen
- Pas een lichte Gaussiaanse vervaging toe (straal van 1-2 pixels) om papiertextuur te verzachten zonder de belangrijkste randen te beïnvloeden
- Snij strak bij om schaduwen en randartefacten van het scannen te verwijderen
Gebruik PNG in plaats van JPG
JPEG-compressie maakt zichtbare blokkerige artefacten rondom scherpe randen — precies de gebieden die potrace analyseert voor randtracering. Deze artefacten zorgen ervoor dat de tracer de JPEG-compressiegrensen volgt in plaats van de werkelijke beeldranden, wat leidt tot gekartelde, rommelige vectorpaden. Gebruik altijd een PNG-bron als dat mogelijk is. Als alleen JPG beschikbaar is, gebruik dan de hoogste kwaliteit (minst gecomprimeerde) versie.
Hogere resolutie gebruiken
Potrace past Bézier-curves aan pixelgrenzen. Meer pixels betekent meer datapunten voor het curve-aanpassingsalgoritme, wat leidt tot vloeiendere, nauwkeurigere curves. Een afbeelding van 2000×2000 pixels levert merkbaar vloeiendere SVG-uitvoer op dan een versie van 500×500 van dezelfde inhoud. Upload waar mogelijk de grootste beschikbare versie van je afbeelding.
Eerst naar grijswaarden converteren
Als je bronafbeelding in wezen zwart-wit is (een logo, tekstscan of lijntekening), verwijdert converteren naar grijswaarden vóór het uploaden eventuele kleurruis die de drempelwaardeberekening kan beïnvloeden. Potrace brengt kleurinvoer intern terug tot helderheid, en gekleurde elementen met een vergelijkbare helderheid kunnen samensmelten of wegvallen.
Potrace installeren en gebruiken
- Linux:
sudo apt install potrace(Debian, Ubuntu) of de pakketbeheerder van je distributie. - macOS:
brew install potrace. - Windows: download de voorgecompileerde binaries van de potrace-site op SourceForge en start
potrace.exevanuit een terminal. - Een BMP overtrekken naar SVG:
potrace -s input.bmp -o output.svg - Met instellingen:
potrace -s -k 0.4 -t 10 -a 1 input.bmp -o output.svg - Vanuit een JPG (potrace kan geen JPG lezen, dus converteer eerst):
magick input.jpg -colorspace Gray -threshold 50% bmp:- | potrace -s -o output.svg
| Optie | Wat het regelt | Standaard |
|---|---|---|
-k, --blacklevel |
Helderheidsgrens tussen zwart en wit | 0,5 |
-t, --turdsize |
Grootste vlekje (in pixels) dat wordt weggelaten | 2 |
-a, --alphamax |
Hoekafronding (0 = scherp, 1,334 = rond) | 1 |
-O, --opttolerance |
Tolerantie voor curve-optimalisatie | 0,2 |
-s / -b |
SVG-uitvoer / kies een backend (pdf, eps, dxf…) | EPS |
-i, --invert |
Zwart en wit omwisselen vóór het overtrekken | Uit |