Gå til innhold

Deteksjon av figurer/former


Anbefalte innlegg

Hei!

 

Jeg er på jakt etter et bibliotek (eller til nød et program) som detekterer ulike geometriske former i en figur.

 

Hvis figuren f.eks. inneholder en trekant inni en firkant skulle jeg gjerne ha ekstrahert featurene så jeg visste f.eks. størrelse og plassering på hhv. trekanten og firkanten.

 

Noen som har vært borti noe lignende? Biblioteket/programmet _må_ ikke være skrevet i Java selv om det er sterkt ønskelig.

Lenke til kommentar
Videoannonse
Annonse
Hmm... Det virker litt for enkelt det som finnes på UiO-fagene (enkelt i betydningen at de ikke har laget akkurat det jeg trenger). Jeg er egentlig ikke interessert i å lage det jeg trenger nesten fra bunnen. Alternativet er å droppe hele greia. :)

Ok, forstår. Da har jeg dessverre ingen andre forslag å komme med, annet enn hva et kjapt søk på "border detection java" og "edge detection java"kommer med...

 

Her er et program som visstnok skal være ganske bra, men det finner kun kanter, ikke figurer, så du må nok utvide det en del...

Lenke til kommentar

Vet ikke om det finnes noen bibliotek, men kan jo gi noen tips :)

 

Hough Transform (vanskelig): http://cs-alb-pc3.massey.ac.nz/notes/59318/l11.html

 

Edge detectors (Sobel, Prewitt, Canny edge) sammen med thresholding: http://www.cee.hw.ac.uk/hipr/html/edgdetct.html

 

Du trenger også et system for å klasifisere de ulike geometriske figurene...

 

Ta en titt på JAI (Java Advanced Imaging): http://java.sun.com/products/java-media/jai/

 

Si ifra om du ytterlige hjelp.

Lenke til kommentar

Det er mulig at jeg formulerte meg litt dårlig (evt. at jeg ikke ga nok info om hva jeg skal gjøre). La meg forklare.

 

Vi kan anta at bildet er svart-hvitt. La oss si at bildet inneholder en firkant (omtrent som følger):

 

0000000000

0000000000

0001111100

0001111100

0000000000

 

Jeg er da ikke interessert i kantene, men heller plassering, størrelse og form på firkanten (i form av tall, bildet skal ikke endres på noen måte).

 

Enkelte IQ-tester inneholder en serie med figurer der oppgaven er å finne siste. Hvis figuren er en firkant, kan f.eks. firkanten bli gradvis større samtidig som den er hhv. fyllt og ikke fyllt. Min oppgave er å finne den siste figuren.

Lenke til kommentar

Men for å finne plasering, størrelse og form så trenger du vel kantene, right?

 

Hvis du har kantene, kan du finne "Center of Mass", altså sentrum i figuren. Ut i fra det kan du finne plaseringen. Du kan da finne størrelsen (arealet) ved å summere alt som ligger innenfor kantene...

 

Det er noe vanskeligere å finne formen, men en "enkel" måte er å putte en figur i CoM og la den vokse til den treffer kanten. Dette bør fungere greit for, tre og-firkanter samt sirkler.

La meg utdype litt:

 

Plaser (f.eks) en liten firkant i CoM og øk størrelsen. Hvis denne firkanten treffer (alle) kantene kan du anta at formen er, ja, en firkant :) Om den ikke treffer så forsøker du med en annen type figur.

Lenke til kommentar

Tja... Er vel strengt tatt ikke nødvendig, men det blir vel en del enklere når du skal finne formen på figuren. Bare det å finne CoM er jo et problem så lenge du ikke vet formen på en figur.

 

En måte som kan fungere for deg (når du skal finne CoM) er å finne høyde og bredde på figuren når du summerer opp arealet innefor kantene. Tar du så å dividerer høyde og bredde på 2 (finner midten), og trekker en horisontal (for høyden) og vertikal (for bredden) linje igjennom disse midtpunktene vil du finne CoM i skjæringspunktet mellom disse to linjene (sånn ca).

 

CoM vil jo også gi deg plaseringen av figuren...

 

Tror dette begynner å se bedre ut nå :)

Endret av codo
Lenke til kommentar

Takk for svar! For enkle figurer (dvs. blant annet firkanter) er ikke problemet så allverdens vanskelig.

 

Jeg tror jeg i første omgang tar et tilfeldig punkt og finner ut om det ligger innenfor eller utenfor figuren (det er enkelt) og jobber videre derfra.

 

Jeg sier i fra hvis jeg trenger mer hjelp. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...