1. Home
  2. Les
  3. Bitmap tracering in Ruby

Bitmap tracering in Ruby

Voornemen

Bitmap tracing is bedoeld om bitmapgegevens om te zetten in vectorgegevens door randen te detecteren. Deze opsporing geschiedt door vergelijking van grijswaarden. Om randen te detecteren, moeten de kleurwaarden voldoende verschillen, anders zal het traceren mislukken.

Traceer de bitmap afbeelding

Starten van de tracering gebeurt door het beeld te selecteren en op het traceer icoon te klikken.


Dit zal de volgende widget openen.

Pas de parameters aan en klik op “Traceren” om het traceren te starten.
Afhankelijk van het bronbeeld en de gekozen waarden krijgt u een traceerresultaat.

Opmerking: Als de instellingen resulteren in een lege trace, zal er een foutmelding verschijnen en worden er geen vectoren aangemaakt!

Parameters

Alleen buitenomtrek

Beperk de detectie van randen tot de buitenste contour. Op deze manier zal het traceringsalgoritme niet zoeken naar extra contouren binnen een gedetecteerde contour. Deze functie wordt gebruikt wanneer men buitencontouren wil snijden.

Traceren met buitenste contour alleen aan (onder) vs. uit (boven)

Genegeerde clustergrootte

Deze parameter wordt gebruikt om ruis te minimaliseren. Het verhogen van deze waarde instrueert Rubyom grotere clusters van pixels met gelijke kleur te negeren.


Tracering met een clustergrootte van 1 (boven), 10 (midden) en 30 (onder).
Door de waarde te verhogen worden de grotere witte punten uitgefilterd tot alleen de contour (zwarte rechthoek) wordt gedetecteerd.

Zwart-wit drempel

Deze parameter heeft de grootste invloed op het traceren, omdat hij het contrastniveau bepaalt dat zal worden gebruikt voor het detecteren van de randen.
Het getal vertegenwoordigt de grijswaarde (Index 0-255) die zal worden gebruikt als drempelwaarde om een pixel al dan niet aan de vector toe te voegen. Dit betekent dat elke waarde eronder als zwart wordt behandeld, elke waarde erboven als wit. De resulterende zwarte en witte gebieden definiëren de randen die zullen worden gedetecteerd (dit gebeurt op de achtergrond die niet zichtbaar is voor de gebruiker).


Resultaten afhankelijk van de gekozen drempel. In het begin worden alleen de echte donkere gebieden gedetecteerd, aan het eind wordt alleen de witte achtergrond uitgesloten.

Niveau afvlakken

Omdat beelden uit pixels bestaan, vormen die “trappen” als er genoeg wordt ingezoomd.

Het traceren van het beeld zou dan een vector genereren die deze “trap” volgt. In de meeste gevallen is dat onbedoeld.
Met “Vloeiend niveau” kunt u bepalen hoe nauwkeurig het algoritme de contour moet volgen. Een hogere afvlakking zal resulteren in minder scherpe vectoren. Aan de andere kant kunnen door te veel afvlakken details verloren gaan.


Het volgen van een “o” zonder afvlakking (links) vs. met veel afvlakking (rechts) toont duidelijk het effect op de cirkels.


Als je te veel gladstrijkt, gaan details verloren.

Hoe haalt u er het beste uit?

Bronbeelden van hoge kwaliteit

Bitmaps in Rubyworden altijd geconverteerd naar afbeeldingen in grijswaarden. Gebruik bitmaps van hoge kwaliteit, want die leveren de beste resultaten op. Afbeeldingen die kleuren delen tussen het te traceren gedeelte en de achtergrond zijn ook moeilijk te traceren. Er kan geen duidelijke rand worden geproduceerd.

  • Goed – hoge kwaliteit, goede resolutie, hoog contrast, weinig anti-aliasing aan randen, geen gemengde kleuren
  • Slecht – lage resolutie, slecht contrast, zware anti-aliased
  • Slecht – kleuren van mes en achtergrond zijn gemengd, creëren van een rand is niet mogelijk

Het beeld verbeteren voor het overtrekken

Elimineer zoveel mogelijk ruis in het beeld door het contrast en de kleurdrempel aan te passen. Alles wat niet in de bitmap staat, kan niet fout gedetecteerd worden. Er zijn een aantal tips die je binnen en buiten Rubyzou kunnen volgen:

Aanpassingen voor het importeren in Ruby

Bijsnijden tot het noodzakelijke deel van het beeld

Knip de delen weg die je niet nodig hebt voor de contour. Het draaien van de afbeelding kan ook helpen om alleen het gewenste deel bij te snijden.

Ervoor:

Erna:

Andere inhoud verwijderen

Open de afbeelding met een beeldbewerker en verwijder zoveel mogelijk achtergrond of ongewenste delen (gum, kleur vervangen, enz.).

Aanpassingen binnen Ruby ®

Aanpassen kleurdrempel (tooncurve)

Pas de kleurdrempels aan om de kwaliteit van de randen te verbeteren. Dit doet u door de afbeelding te selecteren en op het potloodje in de rechterbovenhoek te klikken.

Probeer nu het beeld zo aan te passen, dat de achtergrond zo helder mogelijk wordt en de contour zo zwart mogelijk.
Andersom kan ook, maar dan wordt de omgekeerde contour gedetecteerd!

Om dat gemakkelijk te veranderen, kan het beeld worden omgekeerd. Dit ziet er misschien onbekend uit, maar het verandert niets aan de contour voor het tracing-algoritme en maakt het mogelijk de juiste te traceren.

In principe werkt het zo:

  • X-as bepaalt de ingangskleur (= welke grijswaarden van het origineel moeten worden veranderd)
    • Een punt naar links schuiven brengt meer kleuren naar zwart
  • Y-as bepaalt de uitgangskleur (= in welke kleur de ingangskleur moet worden veranderd)
    • Als je de punt naar boven beweegt, wordt de kleur helderder (naar wit)
  • Pak de lijn op elk punt en verplaats het als dat nodig is
    • Alle kleuren tussen de punten zullen dienovereenkomstig worden gewijzigd

Meer gedetailleerde uitleg is te vinden op het web door te zoeken op “tone curve input output”.

De volgende voorbeelden illustreren de verschillen:


Witte achtergrond, zwarte contour is gemakkelijk te traceren en geeft de gewenste contour.


Zwarte achtergrond, witte contour is moeilijker te traceren en levert de omgekeerde contour op.

Samenvatting

  • Gebruik afbeeldingen van goede kwaliteit.
  • Bitmaps van slechte kwaliteit (b.v. lage resolutie, veel artefacten, laag contrast, gedeelde kleuren tussen contour en achtergrond, enz.
  • Bereid het bronbeeld zo goed mogelijk voor op het traceren.
    Verwijder ruis, overbodige delen, pas contrast en kleurdrempels aan – wat er niet is, kan niet ten onrechte worden gedetecteerd.
  • Weet wat er bereikt moet worden.
    Tweak de juiste parameters op de juiste manier. Gewoon proberen kost veel tijd en is vaak frustrerend.
  • Bitmap tracing kan niet toveren
    Als de contour niet duidelijk gedefinieerd is (omdat er bv. schaduwen zijn, heldere delen die opgaan in de achtergrond, enz.
Updated on 9. september 2022

Related Articles