Archive for October, 2005

Friday, October 28th, 2005

Vracht picies

Zie hier de beloofde resultaten. Ze geven weer waar ik afgelopen week mee bezig was. De pagina’s geven telkens een vergelijking tussen de vier geïmplementeerde technieken:

  • wang-tiles – dynamic programming (wdp)
  • wang-tiles – graph cut (wgc)
  • ω-tiles – dynamic programming (odp)
  • ω-tiles – graph cut (ogc)

Eerst een test voorbeeld met aangepaste basis patches waar men goed kan zien waar en hoe de algoritmes werken: quilting

Verscheidene vergelijkingen met standaard texturen.

Zoals men kan zien, zijn er nog bugs in. Het vreemde is dat deze bij bepaalde resultaten wel en anderen niet voorkomen. Ik weet (nog) niet echt waar dat aan kan liggen. Hierop zal ik volgende week nog zitten denken. Misschien zal na de vergadering morgen met Ares wat meer duidelijk zijn.

Wednesday, October 26th, 2005

Tom en de graph cut…

Zoals al gezegd ging ik het graph cut algoritme implementeren. Dit is bij deze gebeurd… hoera.. hoera.. :D

(more…)

Thursday, October 20th, 2005

Dynamic programming en tiling…

Een van de methodes om te knippen, maw. het pad te kiezen waarlangs men gaat beslissen welk deel van beide plaatjes we gaan nemen, is dynamic programming. Deze gaat volgens een accumulerende history de fout beoordelen.

Nu ik heb de indruk dat die soms erg de mist in gaat. Deze resultaten heb ik verkregen door het stochastisch tile algoritme uit te werken…

  • wd-cohen2: Men kan hier opmerken dat sommigen bloempjes gewoon doormidden zijn gesneden.
  • wd-wind: Met dit ander voorbeeld kan men nog duidelijker zien dat er bepaalde vormen worden “weggesneden”.

Nu weet ik niet of dit normaal is of dat ik ergens met een bug zit.. Ik hoop niet een bug.. :p

Wednesday, October 19th, 2005

Eerste resultaten!

Het was een lange dag vandaag. Maar het heeft zijn vruchten geworpen, want ik heb zowaar mijn eerste resulaten!! Aanschouw:

Wang-tiles

Dit is een voorbeeld van de wang tiles met dynamic programming! Zoals men wel kan zien, zijn er nog fouten in het algoritme. Desalniettemin ben ik erg optimistisch, er is namelijk een prentje!!

update 14:15 De tegels zijn al aansluitend…

Wednesday, October 19th, 2005

De nodige algoritmen.

Hier zou ik een overzicht willen geven, van welke algoritmen ik zou willen implementeren.

Er zijn 2 grote Tile families: de wang-tiles en de nieuwe ω-tiles. Beide families zou ik willen implementeren. Om dan te snijden in afbeeldingen zijn er twee technieken: dynamic programming en grafen. Ook deze zou ik willen hebben. Ik dacht ook aan smoothing technieken te implementeren. Maar dat zal enkel gebeuren als er tijd over is.

Overzicht:

  • wang-tiles – dynamic programming
  • wang-tiles – graph cut
  • ω-tiles – graph cut

(al dan niet met smoothing)

Wednesday, October 19th, 2005

CxImage en problemen…

Na lang twijfelen, ben ik vandaag over gegaan naar de bibliotheek CxImage ipv CImg. Hoofdreden hiervoor was het vervelend verkrijgen van de kleurwaarden van pixels. Het was uitermate moeilijk om die deftig te achterhalen op de manier die ik wil. CxImage gebruikt een struct voor een kleur, waardoor ik die kan doorgeven. CImg gebruikte meteen de kleurwaarde voor Red, Green en Blue apart. Lastig…

Andere voordelen van deze bibliotheek:

  • minder nonsense: het bevat enkel image bewerking, geen 3d of windows. Dit helpt voor de grootte en de leesbaarheid van de code.
  • native ondersteuning van formaten: hierdoor kan ik bmp/jpg/gif/png/tiff/ico/tga ondersteunen. Dit echter wel voor een prijs… de exe is nu 700 KB. Een kleine prijs vind ik.
  • ondersteuning van functies voor een techniek die ik wil uitwerken voor betere resultaten.. (zie later)

En ja hoor, de nodige kopzorgen kwamen met deze invoering naar boven. Allerlei onverklaarbare link problemen staken de kop op. Na een 7tal uur zwoegen heb ik die uiteindelijk kunnen oplossen. Ondertussen een kleine handleiding geschreven voor linkproblemen in vc7! (kan nog handig zijn ;-) )

Ondertussen heb ik de header files voor eens en voor altijd goed geplaatst, zodat ik daar ook zo weinig mogelijk problemen mee kan krijgen!

Friday, October 14th, 2005

Week 3

Week 3 zit er nu bijna op. Morgen nog even met Ares praten en dan hier en daar wat verder doen. Afgelopen week is dus de implementatie goed en wel begonnen. Alle hulpklassen voor het eerste stadium van het programma zijn geschreven. Alles is eigenlijk klaar behalve de implementatie van de eigenlijke algoritmes. :p Met andere woorden, vanaf volgende week begint dan het echte werk! ;-)

Bedoeling is om zowel de ω-tile als de wang-tile algoritmes te implementeren en deze te vergelijken. Met een beetje geluk kan ik dan ook optimalisaties vinden en doorvoeren.

Wednesday, October 12th, 2005

Random en C++

Random getallen… een heel triviaal gegeven.. totdat je ze moet genereren. Zoals iedereen wel weet, zijn random getallen meestal niet zo random. We noemen ze dan ook pseudo random. C++ gebruikt zule pseudo random getallen. Voor meer info over pseudo en echte random getallen, verwijs ik graag naar de cursus Ontwikkeling van Veilige Software.
Bij het kiezen van 4 subpatches in een textuur kan het dus ook voorkomen dat er bijna dezelfde worden gekozen. Misschien later echte random getallen gebruiken?
Ook eerste breinbrekers gevonden in C++. Wat blijkt, strings kan je niet zomaar concateneren met getallen. Dit werkt dus niet:
int i = 5;
string str = "Het getal "+i+" is natuurlijk.";

Nu, als men van andere talen zoals java, delphi, c#, php,.. komt, kan dit soms vreemd overkomen. Maar als men bedenkt dat in C++ een string gelijk is aan char* (of een array van chars), kan men wel al denken dat dit problemen gaat geven. De juiste code is dan ook volgend meer ingewikkeld stukje:

int i = 5;
char str[100];
sprintf(str, "Het getal %i is natuurlijk.", i);

Dit was wel even wennen (en zoeken). Maar ik kan nu toch al deftig 4 subpatches uithalen!

UPDATE:
Men kan wel gemakkelijk(er) ints naar strings omzetten, nl met:

string intToStr(int x){
std::ostringstream s;
if (s < < x)
return s.str();
return "";
}

Dit helpt wel even. :p En hier kan je dan wel de + operator gebruiken!

Monday, October 10th, 2005

CImg en libjpeg

Vandaag heb ik wat zitten implementeren. Of liever gezegd proberen…
(more…)

Friday, October 7th, 2005

Het krijgt vorm!

Vandaag 2de meeting met begeleider Ares Lagae gehad. Het was zeer informatief. We hebben het onderwerp van het eerste deel afgebakend. Ik weet dus wat ik dit semester ga doen. De nadruk zal vooral liggen op Texture Synthese, waarbij men van een bestaande afbeelding vertrekt en daar een (oneindig grote) texture van maakt. Het belooft zeer interessant te worden. Maandag begin ik alvast aan de structuur van de implementatie.

Ik heb de blog ook upgedate met de planning, een literatuurstudie en hier en daar paar dingetjes herschikt.