Veckans problem nr2 - 1bit bitmap to vector

Permalänk
Medlem

Veckans problem nr2 - 1bit bitmap to vector

Efter förra helgens fina tävling så kommer den nya.

Veckans problem är av lite annan karaktär än förra. Denna gång är det mer algorithmskapade som gäller. Problemet gårut på att approximera en godtycklig 1bitars bitmap till vektorer(linjer). Bilder säger mer än 1000 ord så här kommer minst 2000 ord.

Den vänstra bilden är det som programmet skall ta in och högra är det som den skall skicka ut. Du skall, med ett godtyckligt antal linjer försöka omsluta en abstrakt form så gott det går. Som du ser så spelar det ingen roll att det kommer lite utanför och innanför. Det handlar ju om apprixmation. Programmet skall dock inte skicka out en bitmap utan dom blå små punkterna.

Mer information finns på http://jmb.mine.nu/~matricks/veckansproblem/

FET MED CREDZ till alla som försöker.
Ha det så kul och lycka till!

Ladies and gentlemen. Start your braincells!

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Tjohooo

Bra uppgift!

EDIT: Kan man utgå från att det bara är outlines som man skall generera för bilden... Den kommer altså inte ha några "hål" ellr liknande ?

EDIT2: En exempelbild skulle behövas så man kan sätta igång.

Visa signatur

Man kan inte polera en bajskorv

Permalänk
Medlem

hm, jaha då får man lära sig att hantera grafik idag då. det blir spännande
grym ide faktiskt matricks! creds till dig.

Visa signatur

LAN i stockholmv9
http://www.hazard.nu

Permalänk
Medlem

Jajävlar, detta hade jag inte väntat mig.
Bara att börja tänka då... Lycka till alla!

Permalänk
Medlem

Lite mer saker för att göra det lite enklare.

Lördag 11:35 - La till så att bitmappen alltid kommer vara av Pow2 och solid.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Hehe, läser ju Neurala Nätverk nu... Skulle vara häftigt att kunna använda det för att ta reda på formen på nåt sätt. Men det känns inte som den mest intuitiva metoden...

Eftersom man skriver ut till stdout, går det bra att skriva i t.ex. Python då eller (så att du tar outputten från det och petar in i ditt program)?

Roligt problem! Nu borde man få användning för sina algoritmkunskaper.. Men hur exakt ska det lösas? Ska det vara 14 punkter som i bilden, eller så många man kan, eller..?
Antar att det fortfarande är snabbast som vinner..

Visa signatur

Min hemsida: http://www.srekel.net
Pocket Task Force: http://ptf.srekel.net
Kaka e gott! http://kaka.srekel.net

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Srekel
Hehe, läser ju Neurala Nätverk nu... Skulle vara häftigt att kunna använda det för att ta reda på formen på nåt sätt. Men det känns inte som den mest intuitiva metoden...

Eftersom man skriver ut till stdout, går det bra att skriva i t.ex. Python då eller (så att du tar outputten från det och petar in i ditt program)?

Roligt problem! Nu borde man få användning för sina algoritmkunskaper.. Men hur exakt ska det lösas? Ska det vara 14 punkter som i bilden, eller så många man kan, eller..?
Antar att det fortfarande är snabbast som vinner..

Just ja.. det glömde jag skriva. Det har INGET med hastighet att göra dennagång. Det är den som lyckas generera bäst resultat. Jag kommer skriva ett litet program som tar en bitmap, linjer och sedan räknar ut hur bra det igentligen var. Så vilket språk som helst funkar i denna tävling.

Test data och antal linjer jag kommer testa med kommer upp senare idag.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Men det måste väl finnas en maxgräns på antalet genererade punkter? Annars är ju det bästa resultatet alltid det som innehåller alla punkter i bildens periferi... Nån form av optimering av antalet punkter är väl på sin plats i tävlingsreglerna?

Visa signatur

Man kan inte polera en bajskorv

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Pelle76
Men det måste väl finnas en maxgräns på antalet genererade punkter? Annars är ju det bästa resultatet alltid det som innehåller alla punkter i bildens periferi... Nån form av optimering av antalet punkter är väl på sin plats i tävlingsreglerna?

Det står på sidan. Programmet skall ta in max antal linjer som den får skapa.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Ok

Visa signatur

Man kan inte polera en bajskorv

Permalänk
Medlem

Här finns bilden på matricks fina träd, den borde vara korrekt.

edit: Oj, färgerna var fel.
edit: Så.
edit: Förstog fel, tar bort igen.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Don_Tomaso
Här finns bilden på matricks fina träd, den borde vara korrekt.

edit: Oj, färgerna var fel.
edit: Så.

Nja. den är fel. Det skall vara binärt 0 och 1. inte '0' och '1'

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Kanseke jag som gör fel... Men det verkar inte som filen innehåller nån info om bredd och höjd?. Jag öppnade den i adobe photoshop

Visa signatur

Man kan inte polera en bajskorv

Permalänk
Medlem

Pelle76, du kan inte öppna dom i photoshop. raw är inget vanlig bildformat. Detta är ett format jag gjorde för att det skulle vara simpelt att ladda.

http://jmb.mine.nu/~matricks/veckansproblem/testdata/test1.ra...

Där har ni en korrekt. Lite kod för att ladda och sånt kommer snart också.

EDIT: btw, kommer börja skriva på en viewer också. Tar bitmap.raw, alla punkter och visar hur det blev.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Ok... my bad :D... Bara det att det blev en photoshopicn på den så jag trodde att det gick... Men nu skall vi se...

Visa signatur

Man kan inte polera en bajskorv

Permalänk
Medlem

http://jmb.mine.nu/~matricks/veckansproblem/source/loadraw.cp...

Där har ni hur man laddar bitmap.raw
Nu måste jag skaffa mat. Sedan kommer viewern och testtool:et

EDIT:

Lördag 13:20 - Lagt till mer information om bitmapparna. Dom kommer inte sträcka sig ända ut mot kanterna.

Så man slipper massa drygheter bara.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Nice matricks, känns som om jag har startat upp en tradition på denna delen av forumet :P.
Dock är jag inte så skillad inom detta, men kul att titta på

Visa signatur

Övriga Ämnen - Enbart för människor som är seriösa!

Permalänk
Medlem

Nån som har lust att göra en reader för Java... Är lite kass på den biten

Visa signatur

Man kan inte polera en bajskorv

Permalänk
Medlem

Angående "poängberäkning" så kan man få ett pluspoäng för varje ruta som är korrekt "markerad" och ett minuspoäng för varje ruta som är felaktigt markerad. Sen summerar man det och ser vem som fått mest.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Pelle76
Nån som har lust att göra en reader för Java... Är lite kass på den biten

Tänkte börja titta på detnu, kan dela med mig om jag lyckas.

Visa signatur

LAN i stockholmv9
http://www.hazard.nu

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Don_Tomaso
Angående "poängberäkning" så kan man få ett pluspoäng för varje ruta som är korrekt "markerad" och ett minuspoäng för varje ruta som är felaktigt markerad. Sen summerar man det och ser vem som fått mest.

Vi (jag och vb) funderade på om man skulle få ett poäng för varje vit pixel som låg utanför polygonen, och ett poäng för varje svart som låg innanför, och summera dom. Lägst poäng = teh winnar!
Det kanske var så du menade?

Visa signatur

Min hemsida: http://www.srekel.net
Pocket Task Force: http://ptf.srekel.net
Kaka e gott! http://kaka.srekel.net

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Don_Tomaso
Angående "poängberäkning" så kan man få ett pluspoäng för varje ruta som är korrekt "markerad" och ett minuspoäng för varje ruta som är felaktigt markerad. Sen summerar man det och ser vem som fått mest.

Jag tänker göra det så här. -1 minus för alla vita prickar utan för och -1 för alla svarta prickar innan för. Optimal lösning ner 0 poäng och sedan neråt.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Sätt det till plus så slipper man alla negativa tal och kalla det för fel. Minst fel vinner.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av matricks
Jag tänker göra det så här. -1 minus för alla vita prickar utan för och -1 för alla svarta prickar innan för. Optimal lösning ner 0 poäng och sedan neråt.

Du använder inte nån kvadratmetod som ger att det är mer fel ju längre bort från linjen den ligger?

När kommer testverktygen, vill se hur bra min lösning ter sig som jag hittills knapprat ihop?

Visa signatur

Sverige är ett så litet land att det bara får plats en åsikt i taget där.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av BoBo
Tänkte börja titta på detnu, kan dela med mig om jag lyckas.

Ok... trevligt. Bara så man kan få in bilden som en matris eller nåt i den stilen... Sen kan man ju börja knappa

Visa signatur

Man kan inte polera en bajskorv

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Daniel
Du använder inte nån kvadratmetod som ger att det är mer fel ju längre bort från linjen den ligger?

När kommer testverktygen, vill se hur bra min lösning ter sig som jag hittills knapprat ihop?

Tuggar pizza just nu.. sedan skall jag fortsätta.. 2 timmar kanske eller något.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

hm, jag å c++ är inte kompisar. kan någon förklara följande rader ur inläsningsgrejen lite snabbt:
w = fgetc(pFile);
w |= fgetc(pFile)<<8;
w |= fgetc(pFile)<<16;
w |= fgetc(pFile)<<24;
h = fgetc(pFile);
h |= fgetc(pFile)<<8;
h |= fgetc(pFile)<<16;
h |= fgetc(pFile)<<24;

Visa signatur

LAN i stockholmv9
http://www.hazard.nu

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av BoBo
hm, jag å c++ är inte kompisar. kan någon förklara följande rader ur inläsningsgrejen lite snabbt:
w = fgetc(pFile);
w |= fgetc(pFile)<<8;
w |= fgetc(pFile)<<16;
w |= fgetc(pFile)<<24;
h = fgetc(pFile);
h |= fgetc(pFile)<<8;
h |= fgetc(pFile)<<16;
h |= fgetc(pFile)<<24;

Samma sak som:

fread(&w, 1, sizeof(int), pFile);
fread(&h, 1, sizeof(int), pFile);

fast jag skrev det sådär så att det funkar på Mac och andra big endian maskiner

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Hur är det med oss som vill ställa upp med ett annat språk en cpp? Räcker det med en exefil som ber om en bitmap, sparar punkterna till en fil enligt anvisningen, och stänger av sig?

Edit: Varför inte acceptera bmp:s också, och inte bara raw? Jag vet inte i nuläget hur man öppnar raw-filer, och du har angett ett exempel för cpp. Vi andra behöver altså slösa tid på att leta upp info om raw-filer, medan de andra får det gratis.

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av s.c.s.i.
Hur är det med oss som vill ställa upp med ett annat språk en cpp? Räcker det med en exefil som ber om en bitmap, sparar punkterna till en fil enligt anvisningen, och stänger av sig?

Japp!!

Fast du måste ju lämna in source också så jag kan verfiera så att du inte är en sån där CHEEEEEEEEEEETER!

EDIT: btw, irc kanal har skapats #veckansproblem på quakenet

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.