In de afgelopen maanden heb ik aan meerdere leuke projecten gewerkt, een daarvan is het herkennen van vinyl platen op basis van de cover. Op die manier kunnen vinyl platen snel herkend worden en gelabeld.

OpenCV

Het script dat ik hiervoor heb geschreven was bedoeld voor de Raspberry Pi om met een camera module nieuwe platen te herkennen.

Het Python script maakt gebruik van OpenCV (Open Source Computer Vision). Een bibliotheek aan computer visie algoritmes waaronder Feature detection & matching.

Wat is feature detection

Bij feature detection gaat het script op zoek naar unieke kenmerken. Dit zijn voornamelijk hoeken en randen in een afbeelding. Deze features kun je daarna vergelijken met een andere afbeelding om te kijken hoeveel features overeen komen (matching gedeelte).

Bij Feature matching ga je de hele lijst met afbeeldingen langs en kijk je welke afbeelding de beste match is.

Getting and cleaning data

Als eerste stap ben ik op zoek gegaan naar data. Met een dataset waar de afbeeldingen in zaten ben ik aan de slag gegaan. Het ging om zo’n 10.000 afbeeldingen. Alle afbeeldingen zijn uiteindelijk opgeslagen op hetzelfde formaat 600×600. Dit had kleiner mogen zijn.

Matching & script optimaliseren

Bij de eerste testen zijn afbeeldingen per run opnieuw gescand. Dit bleek net wat te lang te duren omdat hij per scan alle 10.000 afbeeldingen moet afgaan.

Uiteindelijk heb ik ervoor gekozen om alle afbeeldingen de features te scannen en deze op te slaan in een CSV document. Op deze manier hoeven er geen 10.000 bestanden geopend te worden maar enkel 1 groter bestand.

Resultaten

Uiteindelijk heb ik het script kunnen optimaliseren naar 30 seconden waarbij het de juiste afbeelding teruggeeft. Als het dataset groter wordt gemaakt doet het script er ook langer over.

Bij een te groot dataset zal er een foutmelding waarschijnlijk volgen.

– Dit artikel word nog aangevuld