4.3 Klassieke Computer Vision

Waarom Dit Belangrijk Is

Voordat je leert over moderne computer vision-algoritmen, is het nuttig om eerst te begrijpen wat traditionele computer vision-methoden deden. Dit geeft ons een sterk fundament en maakt het later eenvoudiger om geavanceerdere algoritmen te begrijpen.

image-20260331140710679

Traditionele computer vision was erop gericht computers te leren hoe ze nuttige informatie in beelden kunnen vinden, zoals randen, vormen, hoeken en beweging. Deze methoden vertrouwden op door mensen ontworpen regels, in plaats van automatisch te leren van grote hoeveelheden data zoals moderne deep learning-modellen doen. Hoewel ze eenvoudiger waren, hielpen ze bij het oplossen van veel basis vision-taken en legden ze het fundament voor de krachtigere computer vision-technieken van vandaag.

Klassieke methoden

Filteren

image-20260331141309862

Filteren verandert de lokale beeldstructuur. Sommige filters verminderen ruis, terwijl andere details versterken.

Filteren werkt door elke pixel te bijwerken op basis van zijn nabije pixels. Met andere woorden, het algoritme schuift een klein venster, een kernel genoemd, over het beeld en berekent een nieuwe waarde voor elke positie.

image-20260331152645839

Voorbeelden:

  • Gemiddelde-vervaging: vervangt een pixel met het gemiddelde van zijn buren, zodat het beeld gladder wordt
  • Gaussiaanse vervaging: geeft meer gewicht aan nabijgelegen pixels, wat de vervaging meestal natuurlijker maakt
  • Mediaan-vervaging: vervangt een pixel met de middelste waarde in zijn buurt
  • Verscherpen: vergroot lokale verschillen zodat randen en fijne details duidelijker uitkomen

Deze filters zijn nuttig omdat echte camerabeelden vaak ruis, kleine helderheidsfluctuaties of onstabiele details bevatten die voor latere vision-stappen moeten worden gladgemaakt of versterkt.

Probeer het:

bash
cd 4.3-Classical-Computer-Vision/code
python filtering.py

🚀 Je kunt proberen de schuifregelaar te slepen om verschillende filtermodi te zien en verschillende kernelparameters aan te passen om de veranderingen in het beeld te observeren.

image-20260331153010183

Thresholding

Thresholding is een eenvoudige manier om een grijswaardenbeeld om te zetten in een zwart-wit resultaat. Het basisidee is: kies een drempelwaarde en vergelijk vervolgens elke pixel ermee. Als een pixel helderder is dan de drempel, wordt hij wit; anders wordt hij zwart. Dit verandert continue pixelwaarden in een veel eenvoudigere ja-of-nee beslissing, waardoor het gemakkelijker wordt om objecten van de achtergrond te scheiden.

image-20260331142045879

Dit is nuttig bij:

  • documentverwerking
  • eenvoudige industriële inspectie
  • voorgrondextractie in gecontroleerde scènes

Probeer het:

bash
cd 4.3-Classical-Computer-Vision/code
python thresholding.py

🚀 Probeer de schuifregelaar te slepen om verschillende drempels aan te passen en observeer de veranderingen in het beeld.

image-20260331162811153

Randdetectie

Randen komen vaak overeen met grenzen waar de intensiteit scherp verandert.

image-20260331142022364

Randdetectie is een manier om de belangrijke grenzen in een beeld te vinden. Het basisidee is eenvoudig: het algoritme bekijkt hoeveel de pixelhelderheid van de ene locatie naar de volgende verandert. Als de verandering erg klein is, behoort het waarschijnlijk tot dezelfde regio. Als de verandering plotseling en groot is, is die locatie waarschijnlijk een rand. In de praktijk maken veel methoden eerst het beeld iets gladder om ruis te verminderen, berekenen vervolgens intensiteitsveranderingen in horizontale en verticale richtingen en behouden ten slotte de sterkste veranderingen als randen. Dit helpt een computer om objectcontouren, vormstructuur en scènelay-out duidelijker te benadrukken.

Randdetectie helpt het volgende te onthullen:

  • vormstructuur
  • objectgrenzen
  • scènegeometrie

Probeer het:

bash
cd 4.3-Classical-Computer-Vision/code
python edge_detection.py

🚀 Sleep de schuifregelaar om verschillende modi te zien en pas verschillende parameters aan om de veranderingen in het beeld te observeren.

image-20260331163055712

Contouren

Contouren beschrijven objectomtrekken in een binair beeld.

image-20260331142747289

Contouren zijn een manier voor een computer om de omtrek van objecten te traceren in een binair beeld. Het gebruikelijke proces is: eerst het beeld omzetten naar zwart-wit, vervolgens het ene deel als het object behandelen en het andere als de achtergrond. Daarna volgt het algoritme de grens waar ze elkaar ontmoeten en registreert de omtrek als een set verbonden punten. Op deze manier is een contour eigenlijk de vormrand van een object. Zodra de omtrek is gevonden, kan de computer deze gebruiken om de grootte te meten, objecten te tellen of de vorm gemakkelijker te analyseren.

Ze zijn nuttig voor:

  • vormanalyse
  • objecten tellen
  • oppervlakte en omtrek meten

Probeer het:

bash
cd 4.3-Classical-Computer-Vision/code
python contours.py

🚀 Probeer de schuifregelaar te slepen om verschillende drempels aan te passen en observeer de veranderingen in het beeld.

image-20260331163359282

Morfologische Bewerkingen

Morfologische bewerkingen zijn eenvoudige beeldverwerkingsmethoden die de vorm van witte gebieden in een binair beeld veranderen. Ze werken door een klein patroon, een kernel of structurerend element genoemd, over het beeld te bewegen en te controleren hoe het bij de voorgrond past. Erosie krimpt objecten door grenspixels te verwijderen, zodat kleine ruis kan verdwijnen. Dilatatie laat objecten groeien door pixels rond grenzen toe te voegen, wat kleine gaten kan opvullen. Opening is erosie gevolgd door dilatatie, dus het verwijdert kleine ruis-vlekken terwijl de hoofdvorm behouden blijft. Sluiting is dilatatie gevolgd door erosie, dus het vult kleine gaten op en verbindt gebroken delen. Kortom, morfologie is nuttig voor het opschonen van ruis-volle maskers en het analyseren van objectvormen gemakkelijker te maken.

image-20260331142417743

Veel voorkomende bewerkingen:

  • erosie
  • dilatatie
  • opening
  • sluiting

Deze zijn vooral nuttig wanneer maskers ruisvol of gefragmenteerd zijn.

Probeer het:

bash
cd 4.3-Classical-Computer-Vision/code
python morphological_operate.py

🚀 Probeer de schuifregelaar te slepen om verschillende drempels aan te passen en observeer de veranderingen in het beeld.

image-20260331163707790

Featuredetectie en -matching

Een feature is een visueel onderscheidend punt of patroon. Feature-matching wordt gebruikt om beelden te vergelijken, weergaven uit te lijnen of geometrische relaties te schatten.

image-20260331142714201

Feature-detectie betekent het vinden van bijzondere punten of patronen in een beeld die gemakkelijk weer te herkennen zijn, zoals hoeken, blobs of getextureerde plekken. Feature-matching betekent het vergelijken van deze punten tussen twee beelden om uit te vinden welke overeenkomen met dezelfde locatie in de echte wereld. Een gangbare workflow is: detecteer eerst keypoints, bereken vervolgens een descriptor voor elk, een compacte numerieke samenvatting van de lokale verschijning, en vergelijk ten slotte descriptors om de beste matches te vinden. OpenCV beschrijft matchers zoals Brute-Force, dat één descriptor met alle andere vergelijkt, en FLANN, dat het zoeken in grote sets versnelt. Dit is nuttig omdat zodra goede matches zijn gevonden, de computer beelden kan uitlijnen, panorama's kan stitchen, beweging kan schatten of een object kan lokaliseren vanuit een ander gezichtspunt.

Dit idee is belangrijk voor:

  • panoramastiching
  • beelduitlijning
  • lokalisatie
  • visuele odometrie

Probeer het:

bash
cd 4.3-Classical-Computer-Vision/code
python feature_detection_matching.py

🚀 Probeer de schuifregelaar te slepen om verschillende matching-modi aan te passen en observeer de veranderingen in het beeld.

image-20260331173910126

Veelvoorkomende Misverstanden

  • "Klassieke vision is achterhaald."
    • Het is ouder, maar niet achterhaald. Het is nog steeds nuttig voor voorbewerking, meting en regelgebaseerde logica.
  • "Deep learning heeft alle traditionele beeldverwerking vervangen."
    • In de praktijk bevatten veel moderne systemen nog steeds klassieke bewerkingen.
  • "Als thresholding op één beeld werkt, werkt het overal."
    • Klassieke methoden kunnen gevoelig zijn voor belichting en context.

Oefeningen / Reflectie

  1. Pas thresholding toe op een beeld met een eenvoudige voorgrond en tel de verbonden objecten.
  2. Vergelijk randkaarten voor en na Gaussiaanse vervaging. Wat verandert er?
  3. Probeer erosie en dilatatie op hetzelfde binaire masker. Wat gebeurt er met kleine regio's?
  4. Reflecteer op een situatie waarin een eenvoudige klassieke methode beter kan zijn dan een diep model.

Samenvatting

Klassieke computer vision biedt lerenden een transparante manier om beeldtransformaties te begrijpen. Het blijft ook nuttig in echte systemen voor voorbewerking, filtering, vormredenering en lichtgewicht visuele logica.

Voorgestelde Volgende Stap

Ga verder naar 4.4 Neurale Netwerken en CNN's.

Referenties