[Python] Connected Components equivalenties

Pagina: 1
Acties:

  • steveman
  • Registratie: Mei 2001
  • Laatst online: 23:08

steveman

Comfortabel ten onder

Topicstarter
Hallo,

voor een project waar ik mee bezig ben wil ik werken met connected components. Ik heb al wat literatuur erover doorgespit en het een en ander aan c++ code erover gezien (Maar aangezien ik zelf vooral ervaring heb in Java en Python snap ik daar werkelijk geen @#$& van...).

De manier die ik uit probeer te werken werkt als volgt:

Tijdens een eerste pass worden alle voorgrondpixels voorzien van labels, op basis van 4-connectivity (indien ik het allemaal aan de praat krijg wil ik nog met 8-connectivity verder) Waar er "botsingen" optreden wordt er notitie gemaakt dat deze labels aan elkaar gelijk zijn.

Van al deze genoteerde botsingen wordt een equivalentielijst gemaakt, en aan de hand van deze lijst worden er in de 2e pass de definitieve labels toegekend.

Klinkt heel mooi, en dat is het vast ook... echter ontstaat bij mij een probleem bij het oplossen van de equivalenties. Bij lange slierten (en ook de historische handgeschreven teksten waar het voor gebruikt gaat worden) heb ik steeds dat 1 component ongewenst opgedeeld wordt.

Een voorbeeldje:

http://www.ai.rug.nl/~renkema/ccomps.jpg

Zodoende luidt mijn vraag: weet iemand hier hoe je die equivalenties goed oplost? Heeft iemand een voorbeeld in (quasi)code?

"Take the risk of thinking for yourself. Much more happiness, truth, beauty, and wisdom will come to you that way." -Christopher Hitchens | In memoriam? 🏁 ipv kruis!


Verwijderd

Het is mij niet helemaal duidelijk wat je probleem is. Alle componenten met een label die binnen 1 equivalentieklasse vallen, krijgen uiteindelijke hetzelfde label (als ik goed begrepen heb wat je bedoelt). Daar valt volgens mij niet zoveel aan op te lossen.

Het lijkt er meer op dat er gewoon een bug in je code zit, terwijl het algoritme dat je probeert te gebruiken correct is. Misschien kun je wat van je code laten zien?