Programma om handgetekende cirkels te beoordelen!

Pagina: 1
Acties:
  • 506 views

Verwijderd

Topicstarter
INLEIDING


Zoals uit de titel al blijkt, wil ik een programma schrijven om handgetekende cirkels mee te beoordelen. Voordat ik begin over het programma zelf, wil ik eerst het onderwerp introduceren (eerste 3 alinea’s). Daarna zal ik even een brainstorm doen over hoe de structuur van het programma zou kunnen zijn.

Begin dit jaar heb ik dit onderwerp gekozen voor wiskunde als praktische opdracht op aanbeveling van mijn leraar. Nu wil ik ermee doorgaan voor mijn profielwerkstuk. Als je op youtube zoekt met “freehand circle drawing” zul je zien dat er heel wat mensen zijn die uit de losse pols een hele mooie cirkel kunnen tekenen. Er is zelfs een wedstrijd georganiseerd waarbij een zekere Alexander Overwijk heeft gewonnen. Die wedstrijd was waarschijnlijk niet serieus (er was waarschijnlijk een jury aanwezig die de cirkels subjectief beoordeelde)

Mijn opdracht was dus om een wiskundige methode te verzinnen om deze cirkels te beoordelen. Ik heb vele methoden gevonden met allemaal hun eigen voor- en nadelen, maar uiteindelijk heb ik één methode eruit gepikt. Voor de mensen die het kennen: bij de methode die ik eruit had gepikt wordt er gebruik gemaakt van regressie analyse (in dit geval circulaire regressie analyse. Als je niet weet wat regressie analyse is, maakt dat niet veel uit om het verder wel te begrijpen. Ik gebruik namelijk een programma die alles automatisch uitrekent). Niet iedereen weet wat het is en daarom zal ik het ook kort toelichten: met regressie analyse kan je, nadat je een bepaald aantal coördinaten weet, de formule van de “best passende cirkel” berekenen. Wiskundig gezien bestaat een cirkel uit oneindig veel punten en daar hebben we te maken met de beperkingen van de praktijk. Ik heb besloten om een smartboard te gebruiken voor het tekenen van de cirkels. Elke pixel levert 2 coördinaten op. Ik ben ook in het bezit van een programma, genaamd Maple 12, die de formule automatisch kan berekenen als jij de punten maar invoert. Op die manier ben je dus niet meer urenlang aan het rekenen.

Leuk zou je denken! Je hebt de best passende cirkel berekend, maar je weet nog steeds niet welke cirkel nou beter is. Daarom heb ik besloten om te kijken naar de oppervlakte tussen de getekende cirkel en de best passende cirkel; Hoe groter de oppervlakte, hoe slechter de cirkel. In de praktijk wil ik het aantal niet gekleurde pixels tellen tussen de getekende cirkel en de best passende cirkel.

DE MENSEN DIE MEER INFO WILLEN KUNNEN ALTIJD HET NODIGE DEEL VAN DE PRAKTISCHE OPDRACHT KRIJGEN.

DE STRUCTUUR VAN HET PROGRAMMA


Zelf heb ik natuurlijk al uitgedacht hoe de structuur van het programma zou kunnen zijn, maar ik heb zelf geen programmeerkennis en het kan dus zijn dat ik belangrijke elementen vergeet in het vervolg (graag reacties).

Zoals ik al had aangegeven hebben we op school een smartboard tot onze beschikking. Het doel is dus om een wedstrijd te organiseren waarbij meerdere mensen een cirkel tekenen.

1) Het programma moet elke pixel van de getekende cirkel omzetten naar twee coördinaten. Net zoals in Paint de pixels eigenlijk met “coördinaten” worden aangegeven.
2) Het programma moet de gevonden coördinaten invoeren in het programma Maple 12. (Dit moet gebeuren op een bepaalde manier gebeuren. Het moet ingevoerd worden ergens in het midden van de worksheet. De punten (6,2) (3,2) (9,5) (2,3) (5,2) moet je als volgt invoeren: Px := [6, 3, 9, 2, 5]: Py := [2, 2, 5, 3, 2]
3) Het zou mooi zijn als het programma “Maple 12” ook automatisch zijn werk liet doen door op een knop “execute the entire worksheet” te klikken, maar dat is optioneel. Handmatig is het een kwestie van eenmaal klikken namelijk.
4) Maple berekent de formule van de best passende cirkel. Het programma neemt deze formule en tekent op hetzelfde blad ook de best passende cirkel.
5) Nu kan het beoordelen beginnen. Dat moet als volgt gebeuren: het geschreven programma moet het aantal niet gekleurde pixels tellen tussen de best passende en getekende cirkel. (Het aantal pixels moet dan de oppervlakte voorstellen)
6) Het programma moet het aantal pixels uitdrukken.
7) Uiteindelijk wil ik er ook een cijfer aan toekennen. Een perfect getekende cirkel krijgt dus een 10 en na een bepaalde grens geef je de cirkel een 1 als cijfer. Om een goede grens in te stellen moet het programma t/m punt 6 wel eerst helemaal in elkaar zitten, anders zou de grens namelijk misschien te hoog of te laag ingesteld zijn.

VERDERE INFORMATIE EN MIJN VRAGEN


Het profielwerkstuk moet voor de kerstvakantie van 2009 af zijn. Mijn laatste dag om het in te leveren is dus vrijdag 18 december. Ik wil zo ver mogelijk komen tot aan de einddatum en daarna ook nog gewoon doorgaan met het schrijven van het programma ook al telt het niet meer mee voor mijn PWS.

Graag zou ik van jullie sowieso algemene informatie willen ontvangen. Bijvoorbeeld welke programmeertaal ik moet gebruiken (hou daarbij wel rekening met het feit dat ik totaal geen programmeerkennis heb). Welke boeken kan ik het beste gebruiken voor dat doel? Welke programma’s zouden handig zijn terwijl ik hiermee bezig ben? Verder hebben jullie misschien ook suggesties voor de structuur van het programma of zelfs andere suggesties, op- of aanmerkingen. Hoe dan ook; ALLE helpende reacties zijn welkom. Mensen die mij actief willen helpen zijn natuurlijk altijd welkom!!!

Bij voorbaat dank _/-\o_ ,

Fatih C.

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Mocht er informatica gegeven worden bij jou op school dan is het wellich handig om de programmeertaal te kiezen die ze daar gebuiken; dan kun je als je vragen hebt gewoon even binnen lopen en een vraag stellen. Het is een recht toe recht aan algebra probleem; iets wat in princiepe iedere (gangbare) programmeertaal op zou moeten kunnen lossen.

  • mithras
  • Registratie: Maart 2003
  • Niet online
Maple is prima in staat hier aan te rekenen. Naar mijn mening heb je heel erg goed gekeken naar de methode om een cirkel te mappen op de zelf getekende polygoon.

Ik zou je één tip meegeven: kijk naar de kleinste kwadraten methode. Voor een verschil tussen je getekende en "perfecte" cirkel, maken grote uitschieters meer uit dan kleine (neem ik aan). Hierdoor zal je een groot verschil (bijv "4 pixels") erger moeten vinden dan een klein verschil ("2 pixels"). Met een kwadratische methode vergroot je deze verschillen, wat (meestal) betere resultaten oplevert. Verder: veel succes!

Over de programmeertaal: dat moet in principe in iedere taal wel kunnen. Ik werk vaker met Matlab, een uitgebreider variant van Maple. Maar beide moeten scripts kunnen opslaan om die later te kunnen uitvoeren. Je zou het dus in zijn geheel in Maple kunnen doen. Maar anders is een willekeurige taal naar keuze voldoende.

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21:46

Matis

Rubber Rocket

mithras schreef op woensdag 16 september 2009 @ 19:03:
Ik zou je één tip meegeven: kijk naar de kleinste kwadraten methode. Voor een verschil tussen je getekende en "perfecte" cirkel, maken grote uitschieters meer uit dan kleine (neem ik aan). Hierdoor zal je een groot verschil (bijv "4 pixels") erger moeten vinden dan een klein verschil ("2 pixels"). Met een kwadratische methode vergroot je deze verschillen, wat (meestal) betere resultaten oplevert. Verder: veel succes!
Je doelt op de Mean Squared Error? Wikipedia: Mean squared error

Dat is idd de beste methode om de fout te meten. Niet alleen is dit efficiënt voor je cpu, kwadrateren kan hij nl. heel goed, het is ook nog een keer een gewogen fout. Dubbele afwijking is viervoudige fout.

If money talks then I'm a mime
If time is money then I'm out of time


  • mithras
  • Registratie: Maart 2003
  • Niet online
Matis schreef op woensdag 16 september 2009 @ 19:06:
[...]

Je doelt op de Mean Squared Error? Wikipedia: Mean squared error

Dat is idd de beste methode om de fout te meten. Niet alleen is dit efficiënt voor je cpu, kwadrateren kan hij nl. heel goed, het is ook nog een keer een gewogen fout. Dubbele afwijking is viervoudige fout.
MSE is afaik meer bekend in de kansrekening, maar dat is inderdaad een voorbeeld van kwadratisch vergelijken van waarden. Het principe van vergelijken van waarden in kwadratische vorm bestaat echter ook in andere methodieken.

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21:46

Matis

Rubber Rocket

mithras schreef op woensdag 16 september 2009 @ 19:09:
MSE is afaik meer bekend in de kansrekening, maar dat is inderdaad een voorbeeld van kwadratisch vergelijken van waarden. Het principe van vergelijken van waarden in kwadratische vorm bestaat echter ook in andere methodieken.
MSE wordt idd veel gebruikt in kansrekeningen en correlatieberekening. In het tekenen van perfecte cirkels kun je je natuurlijk afvragen, wat is erger, de helft van de cirkel wijkt 4px af van *perfect* of de hele cirkel 2px (om maar een zijstraat te noemen).

Verder hulde voor de TS, voor zijn superuitgebreide FiPo _/-\o_ dat zien we graag hier op GoT _/-\o_

If money talks then I'm a mime
If time is money then I'm out of time


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:26

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op woensdag 16 september 2009 @ 18:41:
Graag zou ik van jullie sowieso algemene informatie willen ontvangen. Bijvoorbeeld welke programmeertaal ik moet gebruiken (hou daarbij wel rekening met het feit dat ik totaal geen programmeerkennis heb). Welke boeken kan ik het beste gebruiken voor dat doel? Welke programma’s zouden handig zijn terwijl ik hiermee bezig ben? Verder hebben jullie misschien ook suggesties voor de structuur van het programma of zelfs andere suggesties, op- of aanmerkingen. Hoe dan ook; ALLE helpende reacties zijn welkom. Mensen die mij actief willen helpen zijn natuurlijk altijd welkom!!!
Ondanks je uitgebreide topicstart (hulde daarvoor) komt het eigenlijk alleen maar neer op "welke taal moet ik nemen" en "ik weet er nog niet zoveel vanaf, geef me aub zoveel mogelijk info" en dat is hier nu niet de bedoeling. Je kan een hele hoop talen nemen, de taal is maar een middel. Daarnaast verwachten we hier van je dat je daadwerklijk eerst zelf aan de slag gaat voordat je hier een topic opent. Dat heb je nog niet eens gedaan.

Ook vraag je of mensen je actief willen helpen. Dat is pure werving en niet toegestaan hier.

Ga dus echt eerst eens zelf aan de slag. Het is jouw werkstuk, al het werk zou je dan ook zelf moeten doen i.p.v. hier mensen te gaan zoeken om het werk voor je te doen. Als je dan tegen een wat specifieker probleem aanloopt kan je altijd een nieuw topic openen want dan hopelijk net zo uitgebreid is als deze :)

[ Voor 10% gewijzigd door Creepy op 16-09-2009 19:28 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 16 september 2009 @ 18:41:
Graag zou ik van jullie sowieso algemene informatie willen ontvangen.
Ik zou liever wat specifieke en concrete vragen zien ;)
Verwijderd schreef op woensdag 16 september 2009 @ 18:41:
Bijvoorbeeld welke programmeertaal ik moet gebruiken (hou daarbij wel rekening met het feit dat ik totaal geen programmeerkennis heb).
Topics met die vraag gaan doorgaans meteen dicht. Iedereen gaat z'n favo taaltje lopen roepen en feitelijk maakt het geen drol uit waarin je het doet; wat je wil kan in zowat elke taal en je zult voor jezelf moeten besluiten welke je het best ligt en aansluit op je doel
Verwijderd schreef op woensdag 16 september 2009 @ 18:41:
Welke boeken kan ik het beste gebruiken voor dat doel?
[Alg] Centraal boekentopic - part II
Verwijderd schreef op woensdag 16 september 2009 @ 18:41:
Verder hebben jullie misschien ook suggesties voor de structuur van het programma of zelfs andere suggesties, op- of aanmerkingen.
Hoewel nogal breed gesteld; we zien hier graag ook wat je zelf al hebt geprobeerd. Ik zie dat je er wel al over hebt nagedacht; dan zien we vervolgens graag concrete implementaties en horen we graag van je (concreet) waar je gestrand bent ;)
Verwijderd schreef op woensdag 16 september 2009 @ 18:41:
Hoe dan ook; ALLE helpende reacties zijn welkom. Mensen die mij actief willen helpen zijn natuurlijk altijd welkom!!!
Werving is hier niet toegestaan ;)

[edit]
* RobIII mept creepy :( :>

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

Pagina: 1

Dit topic is gesloten.