Toon posts:

[C#] vorm herkenning in een bitmap

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wat ik probeer te vinden is hoe je een vorm kunt herkennen en de x en y positie kunt krijgen van het middelpunt. Ik zit al de hele dag te zoeken maar echt wijzer ben ik er niet van geworden.

toepassing:
Ik heb een foto met een doos met 3 stickers (zie voorbeeld sticker) erop. Van deze stickers wil ik het middelpunt traceren om zo te weten komen hoe ver de doos staat, waar die staat. Op de foto kunnen dus allerlei andere dingen komen te staan die genegeerd moeten worden.

  • Paul
  • Registratie: September 2000
  • Laatst online: 18:18
Ik denk dat het makkelijkste is om er een edge-detection-filter op los te laten zodat je een kruis omgeven door een circel overhoudt, en dan 2 kruisende lijnen te zoeken waarvan de lengte een functie is van de hoek waaronder ze elkaar kruisen (ik neem aan dat de stickers onder iedere mogelijke hoek kunnen staan?) waarbij je nog als extra controle kunt kijken of de circel er omheen ligt.

Zijn het standaardstickers/zijn ze altijd even groot? Dan kun je daaruit al de afstand afleiden. Ook het vlak moet te berekenen zijn door de hoek tussen de lijnen.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Bedenk wel dat dit redelijk moeilijk is.

Maar een 1e opzet zou kunnen zijn. Zoek eerst eens naar een klein vierkantje met de kleuren geel en zwart. Als je dit vierkantje gevonden hebt dan rondom dit vierkantje gaan zoeken naar de randen ( waar het geel / zwart overgaat in een andere kleur ). Dan heb je de straal te pakken.

Dan zou je in theorie kunnen zeggen hoe groot de sticker is.
Nu alleen enkele problemen :
1 : Door het niet recht positioneren van het artikel voor de camera hoef je geen rondje te krijgen maar kan je ook een ellips krijgen te zien.
2 : Door fouten van de camera krijg je kleurverschillen waardoor je geen rgb-waarden kunt zoeken, maar benaderingen
3 : door fouten van de camera kun je stofjes in je sticker krijgen dit is dus niet het einde van de sticker, maar gewoon een stofje.
4 : Wat moet er gebeuren als er meerdere dozen met meerdere stickers op de foto staan???
5 : Kan er 1 sticker verborgen worden door andere producten???

Verwijderd

Topicstarter
Gomez12 schreef op woensdag 10 januari 2007 @ 20:17:
Dan zou je in theorie kunnen zeggen hoe groot de sticker is.
Nu alleen enkele problemen :
1 : Door het niet recht positioneren van het artikel voor de camera hoef je geen rondje te krijgen maar kan je ook een ellips krijgen te zien.
2 : Door fouten van de camera krijg je kleurverschillen waardoor je geen rgb-waarden kunt zoeken, maar benaderingen
3 : door fouten van de camera kun je stofjes in je sticker krijgen dit is dus niet het einde van de sticker, maar gewoon een stofje.
4 : Wat moet er gebeuren als er meerdere dozen met meerdere stickers op de foto staan???
5 : Kan er 1 sticker verborgen worden door andere producten???
Even een reactie:
1: Het kan inderdaad zo zijn dat de doos niet recht is gepositioneerd voor de camera. Maar dit is niet de eerste zorg
4: Er staan geen meerder dozen met meerdere sticker
5: 1 sticker kan niet verborgen worden.

Ik weet inmiddels hoe ik een kleurwaarde kan krijgen van een pixel, maar hoe kan je bijvoorbeeld een gele vierkant en een zwarte vierkant naast elkaar opsporen? Elke pixel bijlangs gaan lijkt me geen optie ..

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Verwijderd schreef op woensdag 10 januari 2007 @ 20:30:
[...]

Ik weet inmiddels hoe ik een kleurwaarde kan krijgen van een pixel, maar hoe kan je bijvoorbeeld een gele vierkant en een zwarte vierkant naast elkaar opsporen? Elke pixel bijlangs gaan lijkt me geen optie ..
Je hoeft ook niet elke pixel langs te gaan, geef gewoon randvoorwaarden aan.bijv, de sticker moet 20 pixels groot zijn. Nu hoef je maar 1 op de 20 pixels te analyseren tijdens je eerste run.
Is deze geel of zwart dan kun je hierna om deze pixel heen gaan analyseren om te zien of er nog meer gekleurde pixels omheen liggen.

Dus gewoon een filter maken wat in 1e instantie heel grofweg door je pixels heengaat, daarna rond de gevonden pixels iets fijner gaan zoeken om te zien of het in algemene zin een sticker betreft ( bijv 2 run is rondom de gevonden pixel dat er binnen 5 pixels nog zo'n pixel moet liggen ). Na een aantal keren filteren heb je de sticker gevonden en kan je per pixel de stickergrootte analyseren.

Btw. Is er geen mogelijkheid om vierkante / rechthoekige stickers te maken, lijkt me een stuk makkelijker dan ronde stickers ( het kruis kan nu alle kanten opgedraaid zitten, en de straal bepalen wordt dan redelijk intensief, terwijl je met rechthoekige stickers al vrij snel kan zeggen dat je alleen de langste straal moet nemen )

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Er liep toevallig gisteren een enigszins soortgelijk topic waar ik wat informatieve linkjes heb geplaatst. Misschien dat je er iets aan hebt. Helaas is de betreffende post verder ook aardig op jou van toepassing; we zien hier graag dat je zelf ook een beetje moeite doet als je met een vraag komt aanzetten in PRG ;)
Verwijderd schreef op woensdag 10 januari 2007 @ 20:30:
Elke pixel bijlangs gaan lijkt me geen optie ..
En waarom zou je? Je kunt eerst heel grof, bijvoorbeeld in een grid van 25x25 pixelwaardes uitlezen en daar de beste kanshebbers van nader bestuderen. Zo ga je 25^2 maal zo snel door je plaatje heen; plus de "nadere bestudering". Uiteraard is 25 maar een waarde die ik zo even uit mijn duim trek; misschien is 10x10 of 100x100 wel beter van toepassing voor je.

edit:
Oh, dat zei Gomez12 ook al, 2 1/2 uur geleden :X

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Misschien heb je wat aan de officiële term voor dit soort problematiek: vision systemen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1