FOK!forum / Wetenschap & Technologie / Random plaatjes generen totdat je fotos krijgt #2
firefly3woensdag 5 maart 2014 @ 08:02
Als je telkens een plaatje liet genereren door gewoon elke pixel een random kleur te geven, zou er toch ooit een foto uit moeten komen? Alle mogelijkheden bestaan, dus in principe zou je ook ooit een keer een "foto" van je tegenkomen waarbij je met een groene t-shirt op een walvis staat, samen met tweelingzussen en twee zonnen aan de hemel?

De mogelijkheden lijken wel eindeloos, maar de kans is denk ik klein dat er een "foto" uit komt. Als op een gegeven moment pc's snel genoeg zijn, kunnen we dan realistische beelden uit de massa plaatjes filteren? Bijvoorbeeld in combinatie met gezichts-herkennings algoritmes, waarbij elk random plaatje waar "iemand" op staat eruit wordt gefilterd?

Ik ben zeer benieuwd wat ons te wachten staat!!
firefly3woensdag 5 maart 2014 @ 08:03
Bedankt voor de positieve feedback! :)
ComplexConjugatewoensdag 5 maart 2014 @ 08:18
Ik denk dat dit idee wel om hele snelle computers zou vragen, de kans dat je random zo'n plaatje genereert in een mensenleven lijkt mij op dit moment onwaarschijnlijk klein.
DrDarwinwoensdag 5 maart 2014 @ 08:21
Stel, je legt een puzzle die qua maat exact in de doos past, in losse delen in die doos.
Hoe lang je ook schud, het gaat nooit een compleet in elkaar gelegde puzzel worden.
LXIVwoensdag 5 maart 2014 @ 08:56
quote:
0s.gif Op woensdag 5 maart 2014 08:21 schreef DrDarwin het volgende:
Stel, je legt een puzzle die qua maat exact in de doos past, in losse delen in die doos.
Hoe lang je ook schud, het gaat nooit een compleet in elkaar gelegde puzzel worden.
Dat is niet waar. Als je lang genoeg schudt, valt de puzzel uiteindelijk compleet in elkaar.
LXIVwoensdag 5 maart 2014 @ 08:57
Als ik waterstof, koolstof, stikstof, zuurstof, ijzer, etc, etc, etc, alle elementen waaruit een mens bestaat, in een doos stop, en ik schud lang genoeg, dan komt er een moment waarop er een complete drDarwin uit de doos stap.

Als ik maar lang genoeg schud.
DrDarwinwoensdag 5 maart 2014 @ 09:04
quote:
0s.gif Op woensdag 5 maart 2014 08:56 schreef LXIV het volgende:

[..]

Dat is niet waar. Als je lang genoeg schudt, valt de puzzel uiteindelijk compleet in elkaar.
Nee, die puzzel krijg je op die manier nooit compleet in elkaar.
Door het schudden vervalt de puzzel echter tot gruis.
Alfjewoensdag 5 maart 2014 @ 09:38
Als je een plaatje zou genereren van 10 bij 10 pixels met slechts 16 mogelijke kleuren is de kans dat je precies het plaatje genereert dat je wilt 1/16 tot de macht 100 (10x10 pixels)
Dat is een kans van 1 op 2,85 * 10^120. Kan je nagaan als je een fatsoenlijk formaat en meer kleuren mogelijkheden hebt. Dus nee, er zal praktisch nooit een foto uitkomen.
Opa.Bakkebaardwoensdag 5 maart 2014 @ 09:44
Leuk script en leuk topic dit. Na een paar keer proberen kreeg ik al dit:

15n52rm.png

Een soort disco eend.
Alfjewoensdag 5 maart 2014 @ 09:47
quote:
14s.gif Op woensdag 5 maart 2014 09:44 schreef Opa.Bakkebaard het volgende:
Leuk script en leuk topic dit. Na een paar keer proberen kreeg ik al dit:
Welk script, is volgens mij niet gegeven in dit topic?
Ik kan me eerlijk gezegd niet voorstellen dat dit plaatje volledig random is samengesteld, precies die lichtovergangen zijn bijzonder onwaarschijnlijk.
Opa.Bakkebaardwoensdag 5 maart 2014 @ 09:50
quote:
0s.gif Op woensdag 5 maart 2014 09:47 schreef Alfje het volgende:

[..]

Welk script, is volgens mij niet gegeven in dit topic?
Ik kan me eerlijk gezegd niet voorstellen dat dit plaatje volledig random is samengesteld, precies die lichtovergangen zijn bijzonder onwaarschijnlijk.
Toch is het echt zo. Het script is gegeven in het vorige topic: W&T / Random plaatjes generen totdat je fotos krijgt
Ik zie nu dat er meerdere versies zijn maar de versie waar ik naar link heb ik gebruikt.
Alfjewoensdag 5 maart 2014 @ 09:56
Oh dit is een vervolg topic, sorry, niet gezien.
Maar dit plaatje is dus niet volledig random elke pixel een kleur geven, maar een aantal voorwaarden die randomized worden. Dat is wel wat anders.
wuuhtwoensdag 5 maart 2014 @ 10:18
http://nl.m.wikipedia.org(...)ndeloos_typende_apen
esv7woensdag 5 maart 2014 @ 10:47
quote:
14s.gif Op woensdag 5 maart 2014 09:44 schreef Opa.Bakkebaard het volgende:
Leuk script en leuk topic dit. Na een paar keer proberen kreeg ik al dit:

[ afbeelding ]

Een soort disco eend.
7jGl8.jpg :D
firefly3woensdag 5 maart 2014 @ 19:27
quote:
14s.gif Op woensdag 5 maart 2014 09:44 schreef Opa.Bakkebaard het volgende:
Leuk script en leuk topic dit. Na een paar keer proberen kreeg ik al dit:

[ afbeelding ]

Een soort disco eend.
Gaaf!
firefly3woensdag 5 maart 2014 @ 19:33
quote:
0s.gif Op woensdag 5 maart 2014 09:56 schreef Alfje het volgende:
Oh dit is een vervolg topic, sorry, niet gezien.
Maar dit plaatje is dus niet volledig random elke pixel een kleur geven, maar een aantal voorwaarden die randomized worden. Dat is wel wat anders.
Ik genereer in principe lichtgolven die een andere richting op gaan en een andere vorm/frequentie hebben. Beetje zoals licht uit de natuur de camera in valt. Als je dat niet doet heb je één en al gruis. Om iets uit het niets te maken heb je toch de basis nodig: energie golven. Je beeldscherm is het oog waar het licht in valt.
firefly3woensdag 5 maart 2014 @ 20:56
yc45k.jpg

ju9wck.jpg
ludicrous_monkwoensdag 5 maart 2014 @ 22:50
quote:
14s.gif Op woensdag 5 maart 2014 09:44 schreef Opa.Bakkebaard het volgende:
Leuk script en leuk topic dit. Na een paar keer proberen kreeg ik al dit:

[ afbeelding ]

Een soort disco eend.
nemo_gulls_mine.jpg
:o
firefly3maandag 10 maart 2014 @ 21:46
30agt5f.jpg
2upg32d.jpg
1emog9.jpg
90n76x.jpg
2cyo8m1.jpg
jq2sf9.jpg
Cockwhalemaandag 10 maart 2014 @ 22:37
Ik zie een neger dat gemolesteerd wordt door een 'alien', een grey (of gray?) om exact te zijn. Klopt dat?
Hermen6dinsdag 11 maart 2014 @ 01:44
quote:
0s.gif Op woensdag 5 maart 2014 09:38 schreef Alfje het volgende:
Als je een plaatje zou genereren van 10 bij 10 pixels met slechts 16 mogelijke kleuren is de kans dat je precies het plaatje genereert dat je wilt 1/16 tot de macht 100 (10x10 pixels)
Dat is een kans van 1 op 2,85 * 10^120. Kan je nagaan als je een fatsoenlijk formaat en meer kleuren mogelijkheden hebt. Dus nee, er zal praktisch nooit een foto uitkomen.
^DIT

Om te benadrukken hoe klein deze kansen zijn:

Er zitten ongeveer 10^80 atomen in ons hele universum.

Er zijn misschien eindeloos veel kansen maar je bent ook bijna een eindeloze periode bezig om dit te genereren, maakt niet uit hoe snel je computers zijn.
Tchockdinsdag 11 maart 2014 @ 01:50
quote:
0s.gif Op woensdag 5 maart 2014 09:38 schreef Alfje het volgende:
Als je een plaatje zou genereren van 10 bij 10 pixels met slechts 16 mogelijke kleuren is de kans dat je precies het plaatje genereert dat je wilt 1/16 tot de macht 100 (10x10 pixels)
Dat is een kans van 1 op 2,85 * 10^120. Kan je nagaan als je een fatsoenlijk formaat en meer kleuren mogelijkheden hebt. Dus nee, er zal praktisch nooit een foto uitkomen.
Maar gelukkig is het doel niet het genereren van het logo van Ajax, of de eerste foto vanaf de maan of zo. Het doel is een afbeelding met genoeg herkenbare elementen. Daar zijn er an sich al miljoenen en miljoenen van. Komt nog bij dat er ook duizenden varianten van elke afbeelding zijn die we niet of nauwelijks van elkaar kunnen onderscheiden met het blote oog. Je doet in je berekening net alsof er maar één foto bestaat.
TheThirdMarkdinsdag 11 maart 2014 @ 02:41
quote:
0s.gif Op dinsdag 11 maart 2014 01:50 schreef Tchock het volgende:

[..]

Maar gelukkig is het doel niet het genereren van het logo van Ajax, of de eerste foto vanaf de maan of zo. Het doel is een afbeelding met genoeg herkenbare elementen. Daar zijn er an sich al miljoenen en miljoenen van. Komt nog bij dat er ook duizenden varianten van elke afbeelding zijn die we niet of nauwelijks van elkaar kunnen onderscheiden met het blote oog. Je doet in je berekening net alsof er maar één foto bestaat.
Het herkennen van beelden ligt vast in de schaduwzone van de hersenen. Pak maar een papier en een pen en ga gewoon lijnen trekken. Op den duur zul je er ''iets'' in zien. Maar valt een lijn niet binnen de marges van de schaduw zal de mens het niet erkennen.
Met pixels tot de macht onnozel is de kans extreem klein dat er daadwerkelijk iets zichtbaar wordt dat iedereen als hetzelfde iets zal herkennen.

Staat tegenover dat extreem klein niet gelijk is aan onmogelijk.
Tchockdinsdag 11 maart 2014 @ 03:00
quote:
14s.gif Op dinsdag 11 maart 2014 02:41 schreef TheThirdMark het volgende:

[..]

Het herkennen van beelden ligt vast in de schaduwzone van de hersenen. Pak maar een papier en een pen en ga gewoon lijnen trekken. Op den duur zul je er ''iets'' in zien. Maar valt een lijn niet binnen de marges van de schaduw zal de mens het niet erkennen.
Met pixels tot de macht onnozel is de kans extreem klein dat er daadwerkelijk iets zichtbaar wordt dat iedereen als hetzelfde iets zal herkennen.
Dat ben ik simpelweg niet met je eens. Je redeneert weer naar één oplossing toe (namelijk een losse lijn die blijkbaar een herkenbare tekening moet maken) in plaats van alles te beschouwen. Om er maar eens wat bij te pakken:

15n52rm.png
zojio9.jpg
uosx1.jpg

Toegegeven, het is geen Staatsieportret van onze nieuwe Koning, maar het is opmerkelijk hoe snel een afbeelding redelijk herkenbaar wordt. Er hoeft geen perfecte replica van Van Gogh's Zonnebloemen uit te rollen voor dit topic een succes wordt. En volgens mij zitten we al relatief dicht bij iets wat de meeste mensen wel als een beest zouden herkennen.

Ik zeg trouwens doodleuk 'we', maar ik heb verder geen plaatjes gemaakt. TS is de grote baas.
quote:
Staat tegenover dat extreem klein niet gelijk is aan onmogelijk.
Ook dat ;)
Alfjedinsdag 11 maart 2014 @ 09:43
quote:
0s.gif Op dinsdag 11 maart 2014 01:50 schreef Tchock het volgende:

[..]

Maar gelukkig is het doel niet het genereren van het logo van Ajax, of de eerste foto vanaf de maan of zo. Het doel is een afbeelding met genoeg herkenbare elementen. Daar zijn er an sich al miljoenen en miljoenen van. Komt nog bij dat er ook duizenden varianten van elke afbeelding zijn die we niet of nauwelijks van elkaar kunnen onderscheiden met het blote oog. Je doet in je berekening net alsof er maar één foto bestaat.
De berekening is inderdaad gebaseerd op het precies verkrijgen van één plaatje dat je wilt. Ik bedoelde het ook meer als indicatie van de ongeloofelijke hoeveelheid mogelijkheden die al bestaan bij een heel klein plaatje met maar 16 kleuren. Er zullen ongetwijfeld een heleboel van die mogelijkheden zijn die iets herkenbaars opleveren, maar zeker niet zoveel dat dat een impact heeft op het aantal mogelijkheden. Met grotere plaatjes wordt het aantal mogelijkheden ook nog in rap tempo groter.
firefly3dinsdag 11 maart 2014 @ 12:52
Terwijl jullie hier bezig waren met discussiëren ben ik een enorme stap dichterbij gekomen bij fotorealisme :D Ik heb energie golven die meer dan 100% waren terug geduwd naar 100% en de sub golven kleiner gemaakt. Het gevolg is dat verkeerde overbelichting verwijderd is en veel meer detail. Het is bijna eng. Vanavond de screenshots!!!!!
firefly3dinsdag 11 maart 2014 @ 12:57
Sommige stukken vandaag zijn al niet van echt te onderscheiden...
Tchockdinsdag 11 maart 2014 @ 13:23
quote:
0s.gif Op dinsdag 11 maart 2014 12:57 schreef firefly3 het volgende:
Sommige stukken vandaag zijn al niet van echt te onderscheiden...
Ja zien dan :D
RobbieRonalddinsdag 11 maart 2014 @ 17:47
Leuk! Blijft erg interessant. Mogen wij vanavond ook spelen met die nieuwe code of hou je dat liever voor jezelf?
firefly3dinsdag 11 maart 2014 @ 17:49
quote:
1s.gif Op dinsdag 11 maart 2014 13:23 schreef Tchock het volgende:

[..]

Ja zien dan :D
Kan het straks posten! Alles om ons heen is denk ik ook gewoon een expressie van een energie golf. Beetje snaar theorie achtig maar dan op alle schalen bij elkaar. Eigenlijk wel logisch. Zo krijg je complexiteit uit niets op alle niveaus. Het heelal zijn de golven/snaren van het niveau erboven. Jij bent niet alleen de bomen om je heen, jij bent ook de bacterie dat aan de andere kant van de aarde zit want het zijn dezelfde golven :P wie weet ;)
Tchockdinsdag 11 maart 2014 @ 17:49
quote:
1s.gif Op dinsdag 11 maart 2014 17:49 schreef firefly3 het volgende:

[..]

Kan het straks posten! Alles om ons heen is denk ik ook gewoon een expressie van een energie golf. Beetje snaar theorie achtig maar dan op alle schalen bij elkaar. Eigenlijk wel logisch. Zo krijg je complexiteit uit niets op alle niveaus. Het heelal zijn de golven/snaren van het niveau erboven. Jij bent niet alleen de bomen om je heen, jij bent ook de bacterie dat aan de andere kant van de aarde zit want het zijn dezelfde golven :P wie weet ;)
Niet te hard van stapel lopen jij.
firefly3dinsdag 11 maart 2014 @ 18:00
quote:
10s.gif Op dinsdag 11 maart 2014 17:49 schreef Tchock het volgende:

[..]

Niet te hard van stapel lopen jij.
Naja ik ben ook al een aantal jaren bezig geweest met knutselen met cellular automatons enz, complexiteit dat ontstaat uit simpele basis regels. Het probleem ermee was altijd schaal, hoe je de gevormde complexiteit kunt gebruiken als input voor een hoger niveau van complexiteit. Energie golven overbruggen het probleem van schaal, het is geen aparte laag maar het zit overal.
firefly3dinsdag 11 maart 2014 @ 18:59
24pb592.jpg
2q8982a.jpg
23sayo7.jpg
firefly3dinsdag 11 maart 2014 @ 19:20
quote:
0s.gif Op dinsdag 11 maart 2014 17:47 schreef RobbieRonald het volgende:
Leuk! Blijft erg interessant. Mogen wij vanavond ook spelen met die nieuwe code of hou je dat liever voor jezelf?
Ik hou het momenteel liever voor mezelf :)
Tchockdinsdag 11 maart 2014 @ 19:21
quote:
Sorry als ik je teleurstel, maar deze zijn niet wezenlijk anders dan wat er in het vorige topic al stond. :@
firefly3dinsdag 11 maart 2014 @ 19:22
quote:
0s.gif Op dinsdag 11 maart 2014 19:21 schreef Tchock het volgende:

[..]

Sorry als ik je teleurstel, maar deze zijn niet wezenlijk anders dan wat er in het vorige topic al stond. :@
Er is veel meer detail en het is veel scherper :o

Dit soort patronen vind je nergens terug hoor:

263bsjp.jpg

Of deze scherpte

x3thyd.jpg

Er wordt denk ik teveel naar het totaal plaatje gekeken of het herkenbaar is in plaats van de specifieke gebieden die eruit springen met iets herkenbaars. Scherpte etc schept mogelijkheden.

[ Bericht 9% gewijzigd door firefly3 op 11-03-2014 19:33:24 ]
Robuustheiddinsdag 11 maart 2014 @ 19:54
Typisch een voorbeeld van Infinite Monkey Theorem
firefly3donderdag 13 maart 2014 @ 19:57
Een nieuwe fout ontdekt sinds gisteren, we zien slechts 1/200ste van wat er eigenlijk is. Ik hoop het nu verder uit te kunnen werken.
esv7donderdag 13 maart 2014 @ 23:38
quote:
0s.gif Op donderdag 13 maart 2014 19:57 schreef firefly3 het volgende:
Een nieuwe fout ontdekt sinds gisteren, we zien slechts 1/200ste van wat er eigenlijk is. Ik hoop het nu verder uit te kunnen werken.
We zien nu 1/200ste van wat er daadwerkelijk gegenereerd wordt? :o
Sommige plaatjes worden al aardig creapy trouwens, die laatste lijkt op een soort van gemuteerde baby oid.
firefly3vrijdag 14 maart 2014 @ 11:13
quote:
0s.gif Op donderdag 13 maart 2014 23:38 schreef esv7 het volgende:

[..]

We zien nu 1/200ste van wat er daadwerkelijk gegenereerd wordt? :o
Sommige plaatjes worden al aardig creapy trouwens, die laatste lijkt op een soort van gemuteerde baby oid.
Ja, ik probeer de rest ook zichtbaar te maken. :)
firefly3vrijdag 14 maart 2014 @ 11:14
eirw46.jpg
firefly3vrijdag 14 maart 2014 @ 12:51
r2mbzr.jpg
firefly3donderdag 27 maart 2014 @ 19:34
28hgy8i.jpg
15cd7pg.jpg
firefly3vrijdag 28 maart 2014 @ 10:38
akzcj4.jpg
-0mega-vrijdag 28 maart 2014 @ 10:56
quote:
0s.gif Op vrijdag 28 maart 2014 10:38 schreef firefly3 het volgende:
[ afbeelding ]
Boze demonenbaby :'(
firefly3dinsdag 1 april 2014 @ 12:25
quote:
0s.gif Op vrijdag 28 maart 2014 10:56 schreef -0mega- het volgende:

[..]

Boze demonenbaby :'(
:D
firefly3dinsdag 1 april 2014 @ 12:25
fwkfwh.jpg 33loy1w.jpg

[ Bericht 34% gewijzigd door firefly3 op 01-04-2014 12:45:41 ]
firefly3dinsdag 1 april 2014 @ 17:59
Ik heb ideeen om alles om te zetten naar een echt licht spectrum. Het gaat super veel werk worden maar het gaat spannend worden wat we te zien zullen krijgen. Ik zit nu met drie banden te spelen, vergelijkbaar met drie spotlights van rood, groen en blauw die af en toe overlappen. Hoe zou het zijn als ik niet drie golflengtes heb, maar honderden die allemaal hun eigen tint hebben? Hoe hoog zal de detail dan niet zijn?!! :D


Natuurlijk belichten werkt al, nu nog de detail omhoog schroeven enz: 2qnab2x

[ Bericht 7% gewijzigd door firefly3 op 02-04-2014 14:20:13 ]
firefly3woensdag 2 april 2014 @ 19:31
Ik zal later proberen om hogere resolutie plaatjes te generen, hier alvast nog meer plaatjes met "ware kleuren":

33y2uzm.jpg
i4ia6c.jpg
9ko4d0.jpg
2whjsr9.jpg
firefly3donderdag 3 april 2014 @ 15:52
1zqy91e k20e2w.jpgfml35d

[ Bericht 27% gewijzigd door firefly3 op 04-04-2014 12:32:49 ]
firefly3maandag 7 april 2014 @ 12:48
Nog een wolken plaatje. 6gaf5j.jpg
Bosbeetlemaandag 7 april 2014 @ 13:09
:) blijft een leuk topic dit :)
Bosbeetlemaandag 7 april 2014 @ 13:27
Heb je eigenlijk al eens geprobeerd om uit een groep foto's deze waarden te halen, dus zeg maar je algorithme omkeren. Je maakt nu een aantal componenten en maakt daaruit een foto, deze componenten kun je natuurlijk ook gewoon uit een foto uitlezen. Als je de marges van de waarden die je daaruit krijgt invoert in je originele algoritme zit je denk ik op een hele goede weg.
-0mega-maandag 7 april 2014 @ 18:20
Ik had trouwend ook een (lastig) ideetje: is het niet een optie om met SIFT features uit bestaande fotos te halen en je gegenereerde fotos daarop te proberen te matchen? Probleem is natuurlijk foto-tekenende featuregroeperingen te vinden, maar op die manier kun je volgens mij wel veel sneller een random plaatje vinden dat op bijv. Een landschapsfoto moet lijken, of een portretfoto, etc.

Of Ipv sift iets anders dat features uit een plaatje trekt.
firefly3dinsdag 8 april 2014 @ 08:12
quote:
2s.gif Op maandag 7 april 2014 13:27 schreef Bosbeetle het volgende:
Heb je eigenlijk al eens geprobeerd om uit een groep foto's deze waarden te halen, dus zeg maar je algorithme omkeren. Je maakt nu een aantal componenten en maakt daaruit een foto, deze componenten kun je natuurlijk ook gewoon uit een foto uitlezen. Als je de marges van de waarden die je daaruit krijgt invoert in je originele algoritme zit je denk ik op een hele goede weg.
Ipv de rgb waardes, heb ik helaas minstens het lichtspectrum waardes nodig, hoeveel lichtgolven met welke frequentie zijn binnengevallen. Van die rgb uitkomst kan ik helaas de formule niet achterhalen.
firefly3dinsdag 8 april 2014 @ 08:16
quote:
1s.gif Op maandag 7 april 2014 18:20 schreef -0mega- het volgende:
Ik had trouwend ook een (lastig) ideetje: is het niet een optie om met SIFT features uit bestaande fotos te halen en je gegenereerde fotos daarop te proberen te matchen? Probleem is natuurlijk foto-tekenende featuregroeperingen te vinden, maar op die manier kun je volgens mij wel veel sneller een random plaatje vinden dat op bijv. Een landschapsfoto moet lijken, of een portretfoto, etc.

Of Ipv sift iets anders dat features uit een plaatje trekt.
Bij het zoeken naar features, "train" ik het naar een plaatje dat ik wil hebben. Dat wil ik voorkomen. Verder heeft een vlak of raster structuur een hoger score terwijl het plaatje zelf er nep uit kan zien met wat zwarte strepen op een wit achtergrond. Tot nu toe ben ik het verst gekomen door gewoon de natuurwetten te volgen.
Bosbeetledinsdag 8 april 2014 @ 09:01
quote:
1s.gif Op dinsdag 8 april 2014 08:12 schreef firefly3 het volgende:

[..]

Ipv de rgb waardes, heb ik helaas minstens het lichtspectrum waardes nodig, hoeveel lichtgolven met welke frequentie zijn binnengevallen. Van die rgb uitkomst kan ik helaas de formule niet achterhalen.
Jammer, kun je ook niet een schatting herleiden, dat zou je interessante marges moeten opleveren.
firefly3donderdag 10 april 2014 @ 16:22
quote:
2s.gif Op dinsdag 8 april 2014 09:01 schreef Bosbeetle het volgende:

[..]

Jammer, kun je ook niet een schatting herleiden, dat zou je interessante marges moeten opleveren.
Het origineel aantal zandkorrels in de bakstenen van een huis berekenen is nog makkelijker helaas.
firefly3donderdag 10 april 2014 @ 16:23
2aam52t.jpg
Tchockdonderdag 10 april 2014 @ 16:28
quote:
1s.gif Op donderdag 10 april 2014 16:22 schreef firefly3 het volgende:

[..]

Het origineel aantal zandkorrels in de bakstenen van een huis berekenen is nog makkelijker helaas.
Een van de meest gebruikte bakstenen is het Waalformaat van 210 x 100 x 50mm, pak daar de inhoud, dichtheid en grootte van een gemiddeld deeltje (zo'n 2 micrometer) bij en je bent er. Nu jij.
firefly3donderdag 10 april 2014 @ 17:14
quote:
10s.gif Op donderdag 10 april 2014 16:28 schreef Tchock het volgende:

[..]

Een van de meest gebruikte bakstenen is het Waalformaat van 210 x 100 x 50mm, pak daar de inhoud, dichtheid en grootte van een gemiddeld deeltje (zo'n 2 micrometer) bij en je bent er. Nu jij.
Dat is waar ;)
firefly3donderdag 10 april 2014 @ 17:21
20if4j.jpg
ludicrous_monkdonderdag 10 april 2014 @ 18:03
Ik constateer nog steeds dat alle plaatjes uit dit algoritme op een bepaalde manier op elkaar lijken, dat het beeld erg onscherp blijft en veel minder hoogfrequente content bevat dan de meeste foto's, en dat er nog steeds geen echte features in te herkennen zijn (behalve door pareidolia). Het algoritme houdt ook geen rekening met zaken die in de meeste foto's aanwezig zijn, zoals belichting, schaduwen, perspectief, e.d. Het resultaat is dat er wel plaatjes uitkomen, maar zeker geen foto's.

Dus nog fiks werk aan de winkel, wil je dat wel voor elkaar krijgen. Ik denk zelf dat een betere approach is om (quasi-)random inhoud te voeren aan een realistische, fysisch correcte 3D renderer. Dan voldoen de plaatjes in elk geval aan de beperkingen die een foto ook heeft.
Tchockdonderdag 10 april 2014 @ 18:06
quote:
0s.gif Op donderdag 10 april 2014 18:03 schreef ludicrous_monk het volgende:
(behalve door pareidolia)
Maar het is natuurlijk wel interessant - wanneer stopt iets met pareidolia zijn, en wordt het een echt gezicht? Volgens mij is die grens maar vaag. Auto's en dieren lijken ook gelaatsuitdrukkingen te hebben die je enkel toe kunt schrijven aan dit soort menselijke herkenningsprocessen, maar dat maakt niet per se dat er niets in kan zitten. :)

[ Bericht 0% gewijzigd door Tchock op 10-04-2014 19:29:17 ]
ludicrous_monkdonderdag 10 april 2014 @ 18:12
quote:
0s.gif Op donderdag 10 april 2014 18:06 schreef Tchock het volgende:

[..]

Maar het is natuurlijk wel interessant - wanneer stopt iets met pareidolia zijn, en wordt het een echt gezicht? Volgens mij is die grens maar vaag. Auto's en dieren lijken voor ook gelaatsuitdrukkingen te hebben die je enkel toe kunt schrijven aan dit soort menselijke herkenningsprocessen, maar dat maakt niet per dat er niets in kan zitten. :)
De grens is vaag maar ook heel breed. Neem bijvoorbeeld striptekeningen van mensen. Dat noem je ook geen pareidolia meer. Maar striptekeningen zijn ook zeker geen foto's.

Mijn punt is: als je striptekeningen wilt, dan zal je een programma moeten maken dat de beperkingen van een striptekening kent. Als je foto's wilt, zal je de beperkingen van een foto moeten hebben (oftewel: het plaatje moet een resultaat kunnen zijn van rondkaatsend licht dat uiteindelijk in een camera valt, binnen realistische grenzen en in een realistische omgeving. Vandaar dat ik zat te denken aan 3D renderers, die dat proces uiterst goed kunnen simuleren.).
firefly3donderdag 10 april 2014 @ 19:24
Dan kan je net zo goed terragen downloaden en dan random terrain klikken en je bent er. Random terrein genereren deed ik al toen ik 16 was. Het is nu tijd om de lat hoger te zetten. De wereld van tevoren op delen in drie dimensies is valsspelen. De uitdaging is om 1 formule te houden voor alles.
ludicrous_monkdonderdag 10 april 2014 @ 20:09
quote:
0s.gif Op donderdag 10 april 2014 19:24 schreef firefly3 het volgende:
De uitdaging is om 1 formule te houden voor alles.
Wat bedoel je daarmee dan?
firefly3donderdag 10 april 2014 @ 20:50
quote:
0s.gif Op donderdag 10 april 2014 20:09 schreef ludicrous_monk het volgende:

[..]

Wat bedoel je daarmee dan?
1 formule dat een 2d wereld kan genereren, 3d, of wat dan ook.
Nieuwschierigdonderdag 10 april 2014 @ 22:20
quote:
0s.gif Op donderdag 10 april 2014 20:50 schreef firefly3 het volgende:

[..]

1 formule dat een 2d wereld kan genereren, 3d, of wat dan ook.
Een formule die vanuit het niets leven kan genereren. ^O^
firefly3donderdag 10 april 2014 @ 22:53
quote:
99s.gif Op donderdag 10 april 2014 22:20 schreef Nieuwschierig het volgende:

[..]

Een formule die vanuit het niets leven kan genereren. ^O^
^^

Langzaam maar zeker aan de weg timmeren en kijken waar we uit komen :)

1t3s6h.jpg

xtude.jpg

34ziuzl.jpg
2eaj5n8.jpg

ax04sg.jpg

2lbj8ra.jpg

[ Bericht 3% gewijzigd door firefly3 op 10-04-2014 23:38:02 ]
Tchockvrijdag 11 april 2014 @ 00:50
quote:
0s.gif Op donderdag 10 april 2014 22:53 schreef firefly3 het volgende:

[..]

^^

Langzaam maar zeker aan de weg timmeren en kijken waar we uit komen :)

[ afbeelding ]

[ afbeelding ]

[ afbeelding ]
[ afbeelding ]

[ afbeelding ]

[ afbeelding ]
Ik weet niet wat er is veranderd maar dit lijkt nergens meer op. Praktisch alle kleur, diepte en scherpte is verdwenen.
firefly3vrijdag 11 april 2014 @ 07:19
quote:
11s.gif Op vrijdag 11 april 2014 00:50 schreef Tchock het volgende:

[..]

Ik weet niet wat er is veranderd maar dit lijkt nergens meer op. Praktisch alle kleur, diepte en scherpte is verdwenen.
+ Meer kleur
+ Meer detail

- Scherpte
- Realisme (tekening achtig)

De reden is gek genoeg een hogere frequentie. Er gebeurd teveel en er is niet 1 focus punt.

Even snel om het een beetje goed te maken ;)

9tinbl.jpg

[ Bericht 18% gewijzigd door firefly3 op 11-04-2014 07:31:52 ]
Gehennadinsdag 15 april 2014 @ 16:14
Ik had vandaag even zin om Octave (open-source variant van Matlab) te proberen.

Het leek mij wel interessant om te kijken wat er gebeurde als ik nu een plaatje genereer, waarbij elke gegenereerde pixel (van links boven tot aan rechts beneden) kijkt naar zijn buren. Het idee komt een beetje van Wolfram's Rule 30

Alleen wordt bij mij óf het gemiddelde gebruikt van de omringende pixels óf dat een pixel gewoon een random kleur krijgt. Voor dit laatste bestaat een kans van 1 op p.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n = 100;            
m = 100;
w = ones(n, m);          # define a 2D n x m matrix 
p = 4;                   # propability (1 out of p) to choose a random color

for i=[2:n-1],
    for j=[2:m],
        if randi(p) == int8(p/2)
            w(i,j) = rand;                     
         else
             w(i,j) = mean( [w(i-1, j-1), 
                             w(i  , j-1),
                             w(i+1, j-1),
                             w(i-1, j  )]);
        end
    end
end
imshow(w)

maar het resultaat is niet zo heel spannend nog:
2ex7rmf.png

en na dit plaatje weer 10x als input te hebben gebruikt:
jj1yco.png

Binnenkort even kijken wat er gebeurt als ik RGB-plaatjes probeer ipv deze simpele monochroom versies
Bosbeetledinsdag 15 april 2014 @ 16:34
quote:
0s.gif Op dinsdag 15 april 2014 16:14 schreef Gehenna het volgende:
Ik had vandaag even zin om Octave (open-source variant van Matlab) te proberen.

Het leek mij wel interessant om te kijken wat er gebeurde als ik nu een plaatje genereer, waarbij elke gegenereerde pixel (van links boven tot aan rechts beneden) kijkt naar zijn buren. Het idee komt een beetje van Wolfram's Rule 30

Alleen wordt bij mij óf het gemiddelde gebruikt van de omringende pixels óf dat een pixel gewoon een random kleur krijgt. Voor dit laatste bestaat een kans van 1 op p.

code:
[ code verwijderd ]

maar het resultaat is niet zo heel spannend nog:
[ afbeelding ]

en na dit plaatje weer 10x als input te hebben gebruikt:
[ afbeelding ]

Binnenkort even kijken wat er gebeurt als ik RGB-plaatjes probeer ipv deze simpele monochroom versies
Hij is wel grappig, wat gebeurt er als je dit loslaat op een bekend plaatje (het lijkt erop alsof je een soort smoothing filter met random pixels hebt gemaakt)
Renderclippurdinsdag 15 april 2014 @ 20:40
Wat voor script/programma wordt er gebruikt om die wolkenplaatjes te maken?
Gehennadinsdag 15 april 2014 @ 21:00
quote:
2s.gif Op dinsdag 15 april 2014 16:34 schreef Bosbeetle het volgende:

[..]

Hij is wel grappig, wat gebeurt er als je dit loslaat op een bekend plaatje (het lijkt erop alsof je een soort smoothing filter met random pixels hebt gemaakt)
Dat ga ik binnenkort even uitchecken :) dat is een logische stap op die RGB plaatjes :)
Klaploperdinsdag 15 april 2014 @ 21:37
Heb niets toe te voegen, maar tof topic! Blijft leuk om te zien hoe mensen overal graag gezichten in herkennen.
firefly3woensdag 16 april 2014 @ 08:11
quote:
0s.gif Op dinsdag 15 april 2014 16:14 schreef Gehenna het volgende:
Ik had vandaag even zin om Octave (open-source variant van Matlab) te proberen.

Het leek mij wel interessant om te kijken wat er gebeurde als ik nu een plaatje genereer, waarbij elke gegenereerde pixel (van links boven tot aan rechts beneden) kijkt naar zijn buren. Het idee komt een beetje van Wolfram's Rule 30

Alleen wordt bij mij óf het gemiddelde gebruikt van de omringende pixels óf dat een pixel gewoon een random kleur krijgt. Voor dit laatste bestaat een kans van 1 op p.

code:
[ code verwijderd ]

maar het resultaat is niet zo heel spannend nog:
[ afbeelding ]

en na dit plaatje weer 10x als input te hebben gebruikt:
[ afbeelding ]

Binnenkort even kijken wat er gebeurt als ik RGB-plaatjes probeer ipv deze simpele monochroom versies
Gaaf om te zien dat er meer mensen bezig zijn met dit onderwerp!
firefly3woensdag 16 april 2014 @ 08:13
quote:
0s.gif Op dinsdag 15 april 2014 20:40 schreef Renderclippur het volgende:
Wat voor script/programma wordt er gebruikt om die wolkenplaatjes te maken?
Een wat vernieuwde versie van de code die ik openbaar had gemaakt (eventueel te vinden in de vorige reeks).
Bosbeetlewoensdag 16 april 2014 @ 15:34
testje.gif

Dit zijn 100 iteraties van gehenna's algoritme alleen dan gemaakt in fiji/imagej daar kan ik wat makkelijker echte beelden in gooien. (vooralsnog mean'd hij alleen met zijn links en rechts liggen de pixels maar dat moet niet te moeilijk zijn om er een boven en onder bij te pakken :P)

warning: lelijke code is lelijk ik moest eerst een 2d array functie maken :P een leuke vingeroefening voor mijn werk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function make2DArray(m,n){
    matrix = newArray((m*n)+1);
    matrix[0] = m;
    return matrix;    
}

function fill2DArray(matrix,m,n,i){
    matrix[((m%matrix[0])+(matrix[0]*n))+1] = i;
    return matrix;    
}

function read2DArray(matrix,m,n){
    i = matrix[((m%matrix[0])+(matrix[0]*n))+1];
    return i;
}

function makeImagefromArray(matrix){
    m=matrix[0];
    n=(lengthOf(matrix)-1)/matrix[0];
    
    newImage("Untitled", "8-bit black",m, n, 1);
    for(i=0; i<m; i++){
        for(j=0;j<n;j++){
            pixel = read2DArray(matrix,i,j);
            setPixel(i,j,pixel);
        }
    }
}

x = 100;
y = 100;

test = make2DArray(x,y);
test2 = make2DArray(x,y);

test = fill2DArray(test,8,8,255);

for(j=1;j<100;j++){
for(i=2;i<lengthOf(test)-1;i++){
    r=random();
    rpix=random()*255;
    
    if(r < (1.2/10)){ test2[i]=rpix;
    }
    else{
    test2[i]=(test[i-1]+test[i]+test[i+1])/3;
    }
    test = test2;
}
}


makeImagefromArray(test2);
Bosbeetlewoensdag 16 april 2014 @ 15:42
hier de goede:

testje2.gif

[ Bericht 1% gewijzigd door Bosbeetle op 16-04-2014 15:50:40 ]
Gehennawoensdag 16 april 2014 @ 16:12
quote:
2s.gif Op woensdag 16 april 2014 15:34 schreef Bosbeetle het volgende:
[ afbeelding ]

Dit zijn 100 iteraties van gehenna's algoritme alleen dan gemaakt in fiji/imagej daar kan ik wat makkelijker echte beelden in gooien. (vooralsnog mean'd hij alleen met zijn links en rechts liggen de pixels maar dat moet niet te moeilijk zijn om er een boven en onder bij te pakken :P)

warning: lelijke code is lelijk ik moest eerst een 2d array functie maken :P een leuke vingeroefening voor mijn werk
[ code verwijderd ]

Haha tof :)

Bij mij pakt hij ook alleen het gemiddelde van de pixel z'n linkerbuur en z'n 3 bovenburen (omdat ik linksboven begin met vullen is de rest sowieso nog wit).
Bosbeetlewoensdag 16 april 2014 @ 16:23
quote:
14s.gif Op woensdag 16 april 2014 16:12 schreef Gehenna het volgende:

[..]

Haha tof :)

Bij mij pakt hij ook alleen het gemiddelde van de pixel z'n linkerbuur en z'n 3 bovenburen (omdat ik linksboven begin met vullen is de rest sowieso nog wit).
Ja ik heb een voor en na plaatje :) iteratie 1 gaat hij random noise toevoegen en vanaf 2 pakt hij nu gewoon een blokje van 9 pixels om hem heen.

Maar het is eigenlijk gewoon een simpel filter met wat randomness :D
Bosbeetlewoensdag 16 april 2014 @ 17:02
paris-people-30.2.jpg

+10 keer het gehenna algoritme

testje3.jpg

+100 keer het gehenna algoritme

testje4.jpg
Gehennawoensdag 16 april 2014 @ 17:03
Even een klein beetje aangepast, het scriptje leest nu een plaatje in:
33blkwz.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# n = 100;            
# m = 100;
# w = ones(n, m);          # define a 2D n x m matrix 
p = 4;                   # propability (1 out of p) to choose a random color

[img, map, alpha] = imread('rb.jpg');

[n, m] = size(img);

for i=[2:n-1],
    for j=[2:m-1],
        if randi(p) == int8(p/2)
            img(i,j) = randi(256);                     
         else
            img(i,j) = mean( [img(i-1, j-1), 
                              img(i  , j-1),
                              img(i+1, j-1),
                              img(i-1, j  ),
                              img(i  , j  ), 
                              img(i+1, j  ),
                              img(i-1, j+1),
                              img(i  , j+1),
                              img(i+1, j+1)] );
        end
    end
end
imshow(img, map)

zonder het random gedeelte, maakt hij er dit van (aanpassing in grootte zijn dankzij mijn gnuplot instellingen):
2ey9vgn.jpg

en met het random gedeelte:
2im3qdf.jpg

:')
Bosbeetlewoensdag 16 april 2014 @ 17:04
dit is 100 keer de bovenste

testje4.jpg
Gehennawoensdag 16 april 2014 @ 17:05
quote:
2s.gif Op woensdag 16 april 2014 17:02 schreef Bosbeetle het volgende:
[ afbeelding ]

+10 keer het gehenna algoritme

[ afbeelding ]
wow, het is al heel duidelijk een man met een saxofoon :o
Bosbeetlewoensdag 16 april 2014 @ 17:06
quote:
12s.gif Op woensdag 16 april 2014 17:05 schreef Gehenna het volgende:

[..]

wow, het is al heel duidelijk een man met een saxofoon :o
_O-
Tchockwoensdag 16 april 2014 @ 17:10
Ik snap er geen fuck meer van maar leuk om te lezen en zien dit. :D
Bosbeetlewoensdag 16 april 2014 @ 17:20
quote:
0s.gif Op woensdag 16 april 2014 17:10 schreef Tchock het volgende:
Ik snap er geen fuck meer van maar leuk om te lezen en zien dit. :D
Ik heb nu wel voor het eerst in mijn leven een blur filter gemaakt :D ^O^
firefly3woensdag 16 april 2014 @ 17:36
e6uknp.jpg
firefly3woensdag 16 april 2014 @ 17:41
kbrthe.jpg
Klaploperwoensdag 16 april 2014 @ 20:25
quote:
0s.gif Op woensdag 16 april 2014 17:36 schreef firefly3 het volgende:
[ afbeelding ]
Sneeuwpop, inc. wortelneus.
firefly3donderdag 17 april 2014 @ 12:28
quote:
1s.gif Op woensdag 16 april 2014 20:25 schreef Klaploper het volgende:

[..]

Sneeuwpop, inc. wortelneus.
:)
firefly3donderdag 17 april 2014 @ 12:30
21o8ugo.jpg14slhua.jpg
Tchockdonderdag 17 april 2014 @ 12:43
quote:
Fuuuuuck.
Bosbeetledonderdag 17 april 2014 @ 12:45
Dat oog is wel creepy ja :D
firefly3donderdag 17 april 2014 @ 15:12
Foto vanuit een vliegtuigraampje genomen ;)m7b6nd.jpg
Bosbeetledonderdag 17 april 2014 @ 16:37
Grapige rule110 variatie [01101110] maar dan op even lijnen van links naar rechts gelezen en op oneven lijnen van rechts naar links :P

testje6.gif
firefly3donderdag 17 april 2014 @ 17:01
2irxh02.jpg2qs3rpu.jpg
Nieuwschierigdonderdag 17 april 2014 @ 17:37
quote:
Het blijft toch een beetje de categorie: kikkervisjes in troebel water.
firefly3dinsdag 22 april 2014 @ 14:23
wldcm0.jpg xmr9dx
Gehennadinsdag 22 april 2014 @ 14:58
quote:
Verander je je code en/of instellingen ook steeds, of zijn dit gewoon wat willekeurige try-outs?
firefly3dinsdag 22 april 2014 @ 17:18
Het is een aanpassing van de huidige versie 10p658n.jpg
firefly3zaterdag 10 mei 2014 @ 14:13
1zm2ulc.jpg
21myud1.jpg
v6hxyx.jpg
2643x29.jpg
fa9bbs.jpg

[ Bericht 10% gewijzigd door firefly3 op 10-05-2014 14:35:05 ]
Mankezaterdag 10 mei 2014 @ 14:43
Gaaf!
firefly3maandag 12 mei 2014 @ 15:20
quote:
0s.gif Op zaterdag 10 mei 2014 14:43 schreef Manke het volgende:
Gaaf!
Bedankt!
firefly3dinsdag 13 mei 2014 @ 14:26
2m4uogk.jpg
Gehennadinsdag 13 mei 2014 @ 14:39
quote:
0s.gif Op dinsdag 13 mei 2014 14:26 schreef firefly3 het volgende:
[ afbeelding ]
:o
Klaploperdinsdag 13 mei 2014 @ 15:28
quote:
0s.gif Op dinsdag 13 mei 2014 14:26 schreef firefly3 het volgende:
[ afbeelding ]
Nice!
Bosbeetledinsdag 13 mei 2014 @ 16:18
quote:
0s.gif Op dinsdag 13 mei 2014 14:26 schreef firefly3 het volgende:
[ afbeelding ]
_O_ deze is wel erg nice!
#ANONIEMdinsdag 13 mei 2014 @ 16:24
quote:
0s.gif Op dinsdag 13 mei 2014 14:26 schreef firefly3 het volgende:
[ afbeelding ]
_O_
Ziet er echt gaaf uit
En leuk dat je door te experimenteren een eigen blur-filter hebt gemaakt, Bosbeetle. :D
firefly3woensdag 14 mei 2014 @ 07:20
Bedankt allemaal! De sinussen voldeden niet om een scherper beeld te krijgen, dus moest ik ze ombuigen enz. Scherpere buigingen betekent hardere grenzen :)
Gehennawoensdag 14 mei 2014 @ 11:47
quote:
1s.gif Op dinsdag 13 mei 2014 16:24 schreef robin007bond het volgende:

[..]

En leuk dat je door te experimenteren een eigen blur-filter hebt gemaakt, Bosbeetle. :D
wel met mijn code O~) haha
firefly3vrijdag 23 mei 2014 @ 03:27
Ik ben nu weer bezig met kleur. Alweer wat verbeteringen. Het begint steeds echter te worden. Ooit kunnen we oneindig veel films bekijken die uit 1 algoritme zijn gegenereerd :D Met een beetje denkwerk kan er ook geluid bij, deels met hetzelfde algoritme en denkwijze. Virtual reality bril op en je zit in een andere wereld.
firefly3vrijdag 23 mei 2014 @ 12:29
16gwthl.jpg 2u6kxon.jpg
firefly3vrijdag 23 mei 2014 @ 12:56
11kiecy.jpg
firefly3zondag 25 mei 2014 @ 13:34
qyuvjl.jpg
mal6br.jpg
rlhk0g.jpg
firefly3donderdag 19 juni 2014 @ 13:01
ms0sqb.jpg

[ Bericht 100% gewijzigd door firefly3 op 19-06-2014 13:18:37 ]
firefly3woensdag 25 juni 2014 @ 17:27
2rm3411.jpg
Waterdrinkerwoensdag 25 juni 2014 @ 18:52
Random muziek zou wel helemaal raar zijn ja. :o
OllieWilliamswoensdag 25 juni 2014 @ 21:28
TVP

ik zal komend weekend eens een pythonscriptje trachten te schrijven en zien of ik iets kan bewerkstelligen
Bosbeetledonderdag 26 juni 2014 @ 08:55
quote:
0s.gif Op woensdag 25 juni 2014 18:52 schreef Waterdrinker het volgende:
Random muziek zou wel helemaal raar zijn ja. :o
hehe dat heb ik wel eens geprobeerd te evolueren :D was niet echt een succes. Maar als ik ooit wat meer tijd heb ga ik het wel weer eens maken, heb veel geleerd tijdens het maken van dat algoritme :D

MUZ / Muzikale evolutie: een experiment
Waterdrinkerdonderdag 26 juni 2014 @ 10:27
quote:
2s.gif Op donderdag 26 juni 2014 08:55 schreef Bosbeetle het volgende:

[..]

hehe dat heb ik wel eens geprobeerd te evolueren :D was niet echt een succes. Maar als ik ooit wat meer tijd heb ga ik het wel weer eens maken, heb veel geleerd tijdens het maken van dat algoritme :D

MUZ / Muzikale evolutie: een experiment
Da's wel cool ja. :)

Al is echte random muziek totaal niet muziek die wij mooi vinden; we houden juist van gestructureerde muziek, met bijvoorbeeld een vierkwartsmaat, in groepjes van 4 maten, met thema's en herhalingen, enzovoorts.

Maar okay, da's offtopic. :+
Bosbeetledonderdag 26 juni 2014 @ 10:41
quote:
0s.gif Op donderdag 26 juni 2014 10:27 schreef Waterdrinker het volgende:

[..]

Da's wel cool ja. :)

Al is echte random muziek totaal niet muziek die wij mooi vinden; we houden juist van gestructureerde muziek, met bijvoorbeeld een vierkwartsmaat, in groepjes van 4 maten, met thema's en herhalingen, enzovoorts.

Maar okay, da's offtopic. :+
Als je gewoon in een toonladder gaat zitten maakt de maatvoering nog niet eens zo heel veel uit... en klinkt het altijd best wel okay. Ik wil ooit nog een keer een projectje in die richting doen, bij dit soort evolutie projecten is de selectie altijd het grootste probleem, het 2de probleem is een goed fenotype/genotype systeem te maken.
firefly3vrijdag 12 december 2014 @ 17:22
4r6dyg.png
dustbrainvrijdag 12 december 2014 @ 17:49
quote:
0s.gif Op woensdag 5 maart 2014 08:21 schreef DrDarwin het volgende:
Stel, je legt een puzzle die qua maat exact in de doos past, in losse delen in die doos.
Hoe lang je ook schud, het gaat nooit een compleet in elkaar gelegde puzzel worden.
Dat komt omdat de gebeurtenissen onafhankelijk van elkaar moeten zijn. Het ene puzzelstukje dat op de goede plek ligt zorgt er, vanwege simpele fisieke redenen, voor dat de andere puzzelstukjes niet de juiste positie kunnen innemen. Daarom lijkt het mij sterk dat een aap een verhaal kan typen aangezien zijn hersens zo ontwikkeld zijn dat het nooit helemaal willekeurig is wat hij typt.

Echter, stel dat ik een grote doos met letters heb en 1 voor 1 een letter eruit pak, dan heb ik kans dat ik de bijbel schrijf met op de laatste bladzijde Newtons calculus
dustbrainvrijdag 12 december 2014 @ 17:55
quote:
0s.gif Op dinsdag 11 maart 2014 01:44 schreef Hermen6 het volgende:

[..]

^DIT

Om te benadrukken hoe klein deze kansen zijn:

Er zitten ongeveer 10^80 atomen in ons hele universum.

Er zijn misschien eindeloos veel kansen maar je bent ook bijna een eindeloze periode bezig om dit te genereren, maakt niet uit hoe snel je computers zijn.
Kwantumcomputers
Tchockvrijdag 12 december 2014 @ 17:55
quote:
0s.gif Op vrijdag 12 december 2014 17:49 schreef dustbrain het volgende:

[..]

Dat komt omdat de gebeurtenissen onafhankelijk van elkaar moeten zijn. Het ene puzzelstukje dat op de goede plek ligt zorgt er, vanwege simpele fisieke redenen, voor dat de andere puzzelstukjes niet de juiste positie kunnen innemen. Daarom lijkt het mij sterk dat een aap een verhaal kan typen aangezien zijn hersens zo ontwikkeld zijn dat het nooit helemaal willekeurig is wat hij typt.

Echter, stel dat ik een grote doos met letters heb en 1 voor 1 een letter eruit pak, dan heb ik kans dat ik de bijbel schrijf met op de laatste bladzijde Newtons calculus
Die laatste gaat ook fout. Aangezien het aantal letters in de doos beperkt is (per definitie), is het aantal letters A ook beperkt (als het goed is 1/26e van het totaal). Als je een A pakt is de kans dat je daarna nóg een A pakt niet meer perfect willekeurig, omdat het aantal A's in de doos één lager is dan het aantal van alle andere letters.

Daarom is het bekende beeld van de aap achter de typemachine zo aantrekkelijk: een typemachine kan een oneindige reeks karakters produceren waarbij de kans op elk karakter (in theorie) altijd even groot blijft. Maar je hebt over de intelligentie van de aap wel gelijk.
dustbrainvrijdag 12 december 2014 @ 18:00
quote:
0s.gif Op vrijdag 12 december 2014 17:55 schreef Tchock het volgende:

[..]

Die laatste gaat ook fout. Aangezien het aantal letters in de doos beperkt is (per definitie), is het aantal letters A ook beperkt (als het goed is 1/26e van het totaal). Als je een A pakt is de kans dat je daarna nóg een A pakt niet meer perfect willekeurig, omdat het aantal A's in de doos één lager is dan het aantal van alle andere letters.

Waarom ga je er vanuit dat de letters niet op williekeuriuge wijze in de doos liggen? Zolang de letters op willekeurige wijze in de doos liggen maakt het niet uit hoe ze eruit gepakt worden.

Beperkheid maakt ook niet uit. De bijbel is beperkt
Resistordonderdag 18 juni 2015 @ 19:21
*ROTSCHOP*
(omdat ik dit wel relevant vind voor dit topic)

http://tweakers.net/geek/(...)innige-plaatjes.html
quote:
Google legt training neurale netwerken uit met kunstzinnige plaatjes

Door Krijn Soeteman, donderdag 18 juni 2015 12:28

Google Research publiceert informatie over zijn onderzoek naar neurale netwerken. Dat doen ze aan de hand van verschillende soorten plaatjes, zowel door het netwerk te voeden met beeltenissen als andersom: een netwerk leren vormen te maken uit willekeurige ruis en al wat daartussen zit.

De achterliggende technieken voor neurale netwerken zorgen voor interessante beeltenissen. Het laat zien dat kunstliefhebbers zich in de nabije toekomst misschien moeten gaan afvragen of ze naar een door een mens vervaardigd werk kijken of naar een werk bedacht door een paar sets kunstmatige neuronen.

Een naam voor de nieuwe kunststroming is er in ieder geval al: inceptionism. De stroming bestaat uit neurale netwerken die getraind worden door miljoenen plaatjes te analyseren, waarna elke laag van het netwerk gaat bepalen wat voor eigenschappen op het plaatje te zien is om uiteindelijk bij de laatste laag te bepalen wat er te zien is. Een eerste laag kijkt bijvoorbeeld naar hoeken en randen, daaropvolgende lagen interpreteren de basisvormen, zoals een deur of een dier. De laatste lagen worden actief bij nog complexere vormen, zoals hele gebouwen. Als die procedure omgedraaid wordt door bijvoorbeeld te vragen aan het netwerk om zich een plaatje voor te stellen van een banaan vanuit willekeurige ruis, dan wordt het echt interessant.

noise to banana ruis banaan Het blijkt dat netwerken die getraind zijn om verschillende plaatjes te interpreteren heel wat informatie in zich hebben om zelf onderwerpen weer te geven, al klopt het niet altijd, zoals bij het woord 'dumbbell' waar structureel een deel van een mensen-arm bij tevoorschijn komt:

Het team heeft ook testen gehouden met interpretaties waarbij niet van te voren ingegeven wordt wat er uitgelicht moet worden, maar het netwerk zelf mag beslissen wat er te zien is. Dan wordt een willekeurig plaatje ingeladen en wordt aan een laag van het neurale netwerk gevraagd om uit te lichten wat het netwerk dan detecteert. Omdat elke laag van het neurale netwerk op een andere manier omgaat met abstractie, komen er van alleen simpele streken tot figuren en hele beelden uit. Door een feedback-loop te maken, komen er steeds beter herkenbare plaatjes uit.

Uiteindelijk doet Google dit werk natuurlijk niet voor de lol. Het is om te begrijpen en visualiseren hoe neurale netwerken leren moeilijke classificatie-taken uit te voeren, hoe netwerkarchitectuur te verbeteren is en wat het netwerk leerde tijdens de training.
Bron van het artikel: http://googleresearch.blo(...)per-into-neural.html met gallery https://goo.gl/photos/fFcivHZ2CDhqCkZdA
Bosbeetledonderdag 18 juni 2015 @ 20:01
haha toen ik dat op tweakers las dacht ik ook aan dit topic :)
Maanvisvrijdag 19 juni 2015 @ 09:55
quote:
2s.gif Op donderdag 18 juni 2015 20:01 schreef Bosbeetle het volgende:
haha toen ik dat op tweakers las dacht ik ook aan dit topic :)
Ik moest laatst ook al denken aan dit topique, vanwege deze uitleg over een belangrijk aspect van JPEG compressie:
(er wordt dus blijkbaar gewerkt met het feit dat de waardes in een plaatje uit te drukken zijn in cosinussen en daarmee gecomprimeerd kunnen worden)
Bosbeetlevrijdag 19 juni 2015 @ 09:58
quote:
0s.gif Op vrijdag 19 juni 2015 09:55 schreef Maanvis het volgende:

[..]

Ik moest laatst ook al denken aan dit topique, vanwege deze uitleg over een belangrijk aspect van JPEG compressie:
(er wordt dus blijkbaar gewerkt met het feit dat de waardes in een plaatje uit te drukken zijn in cosinussen en daarmee gecomprimeerd kunnen worden)
Fourier transformatie een vrij oud principe maar computers waren daar vroegah niet snel genoeg voor.
Maanvisvrijdag 19 juni 2015 @ 10:02
quote:
2s.gif Op vrijdag 19 juni 2015 09:58 schreef Bosbeetle het volgende:

[..]

Fourier transformatie een vrij oud principe maar computers waren daar vroegah niet snel genoeg voor.
zelfs niet met lookup tables?
Bosbeetlevrijdag 19 juni 2015 @ 10:04
quote:
0s.gif Op vrijdag 19 juni 2015 10:02 schreef Maanvis het volgende:

[..]

zelfs niet met lookup tables?
Nouja ze hebben op een gegeven moment het fast fourier algoritme ontwikkeld en computers zijn nu snel genoeg.... maar veel meer weet ik er ook niet van, behalve dat ik het gebruik :D

https://en.wikipedia.org/wiki/Fast_Fourier_transform
Maanvisvrijdag 19 juni 2015 @ 10:13
quote:
2s.gif Op vrijdag 19 juni 2015 10:04 schreef Bosbeetle het volgende:

[..]

Nouja ze hebben op een gegeven moment het fast fourier algoritme ontwikkeld en computers zijn nu snel genoeg.... maar veel meer weet ik er ook niet van, behalve dat ik het gebruik :D

https://en.wikipedia.org/wiki/Fast_Fourier_transform
Maar je zou dus eigenlijk bijv. (excuses als het bullshit blijkt te zijn, zo erg zit ik er niet in) een plaatje van een boom kunnen pakken en daarvan de transformaties kunnen analyseren, en vervolgens daar een soort van 'gerandomizede' versie van kunnen maken, en op basis daarvan weer een plaatje kunnen samen stellen. En dan kijken of je iets gemaakt hebt wat op een boom lijkt :).
Bosbeetlevrijdag 19 juni 2015 @ 10:33
quote:
0s.gif Op vrijdag 19 juni 2015 10:13 schreef Maanvis het volgende:

[..]

Maar je zou dus eigenlijk bijv. (excuses als het bullshit blijkt te zijn, zo erg zit ik er niet in) een plaatje van een boom kunnen pakken en daarvan de transformaties kunnen analyseren, en vervolgens daar een soort van 'gerandomizede' versie van kunnen maken, en op basis daarvan weer een plaatje kunnen samen stellen. En dan kijken of je iets gemaakt hebt wat op een boom lijkt :).
dat is een stuk moeilijker dan je denkt. Je moet dan namelijk ook definieren waarin "boom" anders is dan niet "boom" en daar zijn ze in dat stuk over google hierboven dus druk mee bezig.

Hier bijvoorbeeld 2 bomen

Specimen_Tree_Removal_Page.jpg
tree.png

en hier de FFT (zonder de fase plot) van de twee plaatjes

tree1.png
tree2.png

Zoals je ziet kun je er niet veel van maken, zo'n boom heeft vrij veel hoge frequenties (takken, kleine blaadjes) die zitten meer aan de buitenkant. En 1 grote frequentie de boom zelf. En dat kruis komt omdat het een vierkant plaatje is die zitten er altijd in.

Maar als ik nu een plaatje van een mens zou nemen zou de FFT er ongeveer hetzelfde uitzien.

m.a.w. je kunt er wel wat mee maar plaatjes worden er niet ineens makkelijker mee te analyseren
Bosbeetlezondag 30 augustus 2015 @ 16:01
Toch even voor de grap weer eens gericht een plaatje geëvolueerd

doel:
JM1.jpg

10000 iteraties evolutie
JM1_104.jpg

100000 iteraties evolutie
JM1_105.jpg

(laat mijn werkcomputer morgen er wel een avondje op doorrekenen om te kijken waar ik uitkom :P )
mannenkokengewoonbetermaandag 31 augustus 2015 @ 01:07
Volgens mij kom je op een gegeven moment juist uit op een effen vlak.

Als je random laat generenen, en dan neem ik aan dat je herhalingen uitsluit, dan zal je uiteindelijk als je lang genoeg doorgaat alle combinaties hebben gehad, en tot stilstand komen op een effen vlak.

Taylorreeks geloof ik,....toch ?
f(x) = \sum_{n=0}^{+ \infty} \frac{f^{(n)}(a)}{n!} (x-a)^{n}

(Damn dat ziet er indrukwekkend uit)
#ANONIEMmaandag 31 augustus 2015 @ 06:32
quote:
2s.gif Op zondag 30 augustus 2015 16:01 schreef Bosbeetle het volgende:
Toch even voor de grap weer eens gericht een plaatje geëvolueerd

doel:
[ afbeelding ]

10000 iteraties evolutie
[ afbeelding ]

100000 iteraties evolutie
[ afbeelding ]

(laat mijn werkcomputer morgen er wel een avondje op doorrekenen om te kijken waar ik uitkom :P )
Kun je hier iets meer over vertellen?
Waarom evolueert het beeld richting de foto? Met welk beeld ben je begonnen?

Ik snap er gewoon echt weinig van. :T
Bosbeetlemaandag 31 augustus 2015 @ 09:19
quote:
0s.gif Op maandag 31 augustus 2015 01:07 schreef mannenkokengewoonbeter het volgende:
Volgens mij kom je op een gegeven moment juist uit op een effen vlak.

Als je random laat generenen, en dan neem ik aan dat je herhalingen uitsluit, dan zal je uiteindelijk als je lang genoeg doorgaat alle combinaties hebben gehad, en tot stilstand komen op een effen vlak.

Taylorreeks geloof ik,....toch ?
f(x) = \sum_{n=0}^{+ \infty} \frac{f^{(n)}(a)}{n!} (x-a)^{n}

(Damn dat ziet er indrukwekkend uit)
Ik denk in mijn geval niet omdat ik selecteer, het is dus geen complete random.

quote:
1s.gif Op maandag 31 augustus 2015 06:32 schreef Stompzinnig het volgende:

[..]

Kun je hier iets meer over vertellen?
Waarom evolueert het beeld richting de foto? Met welk beeld ben je begonnen?

Ik snap er gewoon echt weinig van. :T
Het is heel eenvoudig. Ik heb dat bovenste plaatje van jim morrison dat is mijn doel. Vervolgens maak ik tien plaatjes met 100 noise pixels bovenop mijn beginplaatje (eerst is dat gewoon een zwart vlak), random gegenereerd. Daarvan kies ik de 2 die het meest op dat plaatje van jim morrison lijken (met een eenvoudige least squares) dan neem ik het gemiddelde van die 2 plaatjes. En dat 10000 keer. :) Uiteindelijk krijg iets dat steeds meer op Jim lijkt....

Opzich is dit geen goed model voor evolutie omdat het doel al duidelijk is en selectie plaatsvind op gelijkenis op dit doel. Wat dus betekend als je dit maar lang genoeg doet je uiteindelijk exact het Jim plaatje terug krijgt. (maar de tussenstappen kunnen er wel tof uitzien)
NobodyKerzmaandag 31 augustus 2015 @ 21:02
quote:
0s.gif Op woensdag 5 maart 2014 09:38 schreef Alfje het volgende:
Als je een plaatje zou genereren van 10 bij 10 pixels met slechts 16 mogelijke kleuren is de kans dat je precies het plaatje genereert dat je wilt 1/16 tot de macht 100 (10x10 pixels)
Dat is een kans van 1 op 2,85 * 10^120. Kan je nagaan als je een fatsoenlijk formaat en meer kleuren mogelijkheden hebt. Dus nee, er zal praktisch nooit een foto uitkomen.
En wat is dan "precies het plaatje"? Je kan hetzelfde plaatje in talloze verschillende tinten en combinaties hebben: Negatief, gespiegeld, veller dan het orgineel, donkerder dan het orgineel, de kleuren gehusseld. Of bijna indentiek op een paar pixels na.

Die som is dus wat moeilijker dan dat.
lnloggendinsdag 1 september 2015 @ 08:47
Zodra het plaatje ook maar enige grootte heeft (zeg meer dan 50x50) is het aantal mogelijkheden dat iets voorstelt, of een enigszins herkenbare foto afbeeldt, echt zó onvoorstelbaar astronomisch veel kleiner dan het aantal mogelijkheden met enkel ruis, onherkenbare smurrie, en random betekenisloze pixels. Zelfs met alle computerkracht ter wereld zou je statistisch gezien vele triljarden keren langer dan de leeftijd van het universum moeten blijven proberen tot je er ooit iets zinnigs uit krijgt.
Bosbeetledinsdag 1 september 2015 @ 09:38
quote:
0s.gif Op dinsdag 1 september 2015 08:47 schreef lnloggen het volgende:
Zodra het plaatje ook maar enige grootte heeft (zeg meer dan 50x50) is het aantal mogelijkheden dat iets voorstelt, of een enigszins herkenbare foto afbeeldt, echt zó onvoorstelbaar astronomisch veel kleiner dan het aantal mogelijkheden met enkel ruis, onherkenbare smurrie, en random betekenisloze pixels. Zelfs met alle computerkracht ter wereld zou je statistisch gezien vele triljarden keren langer dan de leeftijd van het universum moeten blijven proberen tot je er ooit iets zinnigs uit krijgt.
Daarom moet je ook eigenlijk geen ruis genereren maar iets anders... zoals de TS ook aan het doen. Verder als je evolutie toepast op goede critereria hoef je niet zo lang te rekenen (er zijn al vele voorbeelden van)
Alfjedinsdag 1 september 2015 @ 11:57
quote:
0s.gif Op maandag 31 augustus 2015 21:02 schreef NobodyKerz het volgende:

[..]

En wat is dan "precies het plaatje"? Je kan hetzelfde plaatje in talloze verschillende tinten en combinaties hebben: Negatief, gespiegeld, veller dan het orgineel, donkerder dan het orgineel, de kleuren gehusseld. Of bijna indentiek op een paar pixels na.

Die som is dus wat moeilijker dan dat.
Er zijn inderdaad wel varianten die je ook goed zou kunnen keuren, maar we hebben het hier over 10 bij 10 pixels dan is vrijwel elke pixel die afwijkt ook wel echt opvallend. Ook zijn er maar 16 kleuren, er zijn dus niet veel kleuren die dusdanig op elkaar lijken dat een kleurverschil niet erg opvalt.

Het sommetje was vooral bedoeld om aan te geven hoe gigantisch snel het aantal mogelijkheden stijgt. En ook al stijgt het aantal mogelijkheden die iets voorstellen ook snel en zijn afwijkingen minder storend, dat haalt het nooit bij het geweldig aantal mogelijkheden die niets voorstellen.
Tchockdinsdag 1 september 2015 @ 12:32
quote:
0s.gif Op dinsdag 1 september 2015 11:57 schreef Alfje het volgende:

[..]

Er zijn inderdaad wel varianten die je ook goed zou kunnen keuren, maar we hebben het hier over 10 bij 10 pixels dan is vrijwel elke pixel die afwijkt ook wel echt opvallend. Ook zijn er maar 16 kleuren, er zijn dus niet veel kleuren die dusdanig op elkaar lijken dat een kleurverschil niet erg opvalt.

Het sommetje was vooral bedoeld om aan te geven hoe gigantisch snel het aantal mogelijkheden stijgt. En ook al stijgt het aantal mogelijkheden die iets voorstellen ook snel en zijn afwijkingen minder storend, dat haalt het nooit bij het geweldig aantal mogelijkheden die niets voorstellen.
Dat valt reuze mee. Mensen zijn zo goed in dingen herkennen. Voorbeeld:

frown.gif

Dit plaatje is ook weinig anders dan ruis met drie donkere vlakken er in. Bovendien heb je het over "het" plaatje. Terwijl in dit topic elke herkenbare vorm acceptabel is. We* werken niet naar één doel toe.

*niet dat ik daar ook iets aan heb bijgedragen op visueel vlak
firefly3woensdag 2 september 2015 @ 07:31
Van klein naar groot:

Ik denk dat we pixels moeten blijven groeperen.

Hiernaast bestaat de wereld uit een combinatie van chaos en orde.

Ten derde perspectief.

Meer hebben we denk ik niet nodig. Stap 2 zijn formules in formules en zal al echt gaaf zijn.
Bosbeetlewoensdag 2 september 2015 @ 09:45
Wat dat betreft doet google het beter dan wij :D

https://photos.google.com(...)VFBBZEN1d205bUdEMnhB

Dit zijn onder andere plaatjes van hun algoritmes maar ook wat de neural networks van google maken als je ze vraagt een van de onderstaande dingen te tekenen:

RqZ-hbpoHW4mCoV-KYZBqUJOru_GNzXUUAlm_NsrPnw=w737-h432-no

http://www.gizmag.com/goo(...)eptionism-art/38113/
firefly3woensdag 2 september 2015 @ 09:59
quote:
2s.gif Op woensdag 2 september 2015 09:45 schreef Bosbeetle het volgende:
Wat dat betreft doet google het beter dan wij :D

https://photos.google.com(...)VFBBZEN1d205bUdEMnhB

Dit zijn onder andere plaatjes van hun algoritmes maar ook wat de neural networks van google maken als je ze vraagt een van de onderstaande dingen te tekenen:

[ afbeelding ]

http://www.gizmag.com/goo(...)eptionism-art/38113/
Nice!

Wel een groot verschil overigens: ze trainen naar een doel (dmv een plaatjes database) en combineren het.

In theorie zou je 1 formule kunnen hebben voor alles. Ook wat wij nog niet kennen en zonder plaatjes database.

Ze creeëren niet "iets uit het niets", maar "een combinatie uit heel veel"
Bosbeetlewoensdag 2 september 2015 @ 10:09
quote:
1s.gif Op woensdag 2 september 2015 09:59 schreef firefly3 het volgende:

[..]

Nice!

Wel een groot verschil overigens: ze trainen naar een doel (dmv een plaatjes database) en combineren het.

In theorie zou je 1 formule kunnen hebben voor alles. Ook wat wij nog niet kennen en zonder plaatjes database.

Ze creeëren niet "iets uit het niets", maar "een combinatie uit heel veel"
Ik vind het wel een leuk gebied van de wetenschap we kunnen neurale netwerken dingen leren, en vervolgens als dat gelukt is moeten we weer terug gaan en onderzoeken hoe (en wat) die neurale netwerken nou weer geleerd hebben. We maken dus een systeem met allemaal kleine stapjes maar kunnen zelf de combinatie van die stapjes bij elkaar niet meer begrijpen.

Gaat niet lang duren of we zijn computer algoritmes net zo aan het bestuderen als de natuur. (google is het eigenlijk al aan het doen)
firefly3woensdag 2 september 2015 @ 12:15
quote:
2s.gif Op woensdag 2 september 2015 10:09 schreef Bosbeetle het volgende:

[..]

Ik vind het wel een leuk gebied van de wetenschap we kunnen neurale netwerken dingen leren, en vervolgens als dat gelukt is moeten we weer terug gaan en onderzoeken hoe (en wat) die neurale netwerken nou weer geleerd hebben. We maken dus een systeem met allemaal kleine stapjes maar kunnen zelf de combinatie van die stapjes bij elkaar niet meer begrijpen.

Gaat niet lang duren of we zijn computer algoritmes net zo aan het bestuderen als de natuur. (google is het eigenlijk al aan het doen)
Het algoritme is denk ik een patroon herkenning. M.a.w. hij mixt het resultaat van de input. Hiernaast plakt hij een aantal variaties naast elkaar als eindbewerking.

Het gaafste is om iets te hebben zonder bepaalde data input en zonder bepaalde data output.

Zo random mogelijk met alleen basis natuurwetten als regel, in plaats van een mengeling van input data. Maarja, hoe doe je dat, echt iets uit het niets krijgen?
firefly3woensdag 2 september 2015 @ 12:38
Ik bied hieronder de versie aan tot hoe ver ik was gekomen.

Kopieer de code naar een tekst bestandje en maak er een .html file van. (Hernoem het naar bestandsnaam.html).

Zo werkt het:

1) Declaratie variabelen
2) Initialisatie golven en kleuren
3) Ophalen golf sterktes voor desbetreffende pixels en licht sterkte bewaren.
4) Golven belichten aan de hand van frequentie (kleur) en voorgaande golven.
5) Render

Veel plezier :). Dit forceerd mij om in de toekomst er harder aan te werken.

SPOILER
<html>
<title></title>

<canvas id="view" width="250", height="250">
Canvas
</canvas>

<body bgcolor = "#FFFFFF">
</body>

<script type="text/javascript">

// Made by firefly3

var counter = 0;

element = document.getElementById("view");
c = element.getContext("2d");

width = element.width;
height = element.height;

imageData = c.createImageData(width, height);

var red = new Array(width);
var green = new Array(width);
var blue = new Array(width);

var redOld = new Array(width);
var greenOld = new Array(width);
var blueOld = new Array(width);

var amountofwaves = 18; //23 24 14 20

var lengthwaveA = new Array(amountofwaves);
var lengthwaveB = new Array(amountofwaves);
var lengthwaveC = new Array(amountofwaves);
var lengthwaveD = new Array(amountofwaves);

var phaseshiftwaveA = new Array(amountofwaves);
var phaseshiftwaveB = new Array(amountofwaves);
var phaseshiftwaveC = new Array(amountofwaves);
var phaseshiftwaveD = new Array(amountofwaves);

var lengthwaveA2 = new Array(amountofwaves);
var lengthwaveB2 = new Array(amountofwaves);
var lengthwaveC2 = new Array(amountofwaves);
var lengthwaveD2 = new Array(amountofwaves);

var phaseshiftwaveA2 = new Array(amountofwaves);
var phaseshiftwaveB2 = new Array(amountofwaves);
var phaseshiftwaveC2 = new Array(amountofwaves);
var phaseshiftwaveD2 = new Array(amountofwaves);

var wavelengthmax = 780.0
var wavelengthlowest = 380.0;

var spectrumrange = wavelengthmax - wavelengthlowest;

var amountoflightbeams = 10;

var wavelightfrequencies = new Array(amountofwaves);

var wavelightstrength = new Array(amountofwaves);

var historyred = new Array(width);
var historygreen = new Array(width);
var historyblue = new Array(width);

for(f = 0; f < amountofwaves; f++)
{

wavelightfrequencies[f] = new Array(amountoflightbeams);

}

for (i = 0; i < width; i++)
{
red[i] = new Array(height);
green[i] = new Array(height);
blue[i] = new Array(height);

redOld[i] = new Array(height);
greenOld[i] = new Array(height);
blueOld[i] = new Array(height);

historyred[i] = new Array(height);
historygreen[i] = new Array(height);
historyblue[i] = new Array(height);


for (j = 0; j < height; j++)
{
red[i][j] = 0;
green[i][j] = 0;
blue[i][j] = 0;

redOld[i][j] = 0;
greenOld[i][j] = 0;
blueOld[i][j] = 0;

historyred[i][j] = 0;
historygreen[i][j] = 0;
historyblue[i][j] = 0;

}
}

function setPixel(imageData, x, y, r, g, b, a)
{
index = (x + y * imageData.width) * 4;
imageData.data[index+0] = r;
imageData.data[index+1] = g;
imageData.data[index+2] = b;
imageData.data[index+3] = a;
}

function reset()
{

counter = 0;

for (xc = 0; xc < width; xc++)
{
for (yc = 0; yc < height; yc++)
{

historyred[xc][yc] = red[xc][yc];
historygreen[xc][yc] = green[xc][yc];
historyblue[xc][yc] = blue[xc][yc];

red[xc][yc] = 0;
green[xc][yc] = 0;
blue[xc][yc] = 0;

}
}
}

function history()
{

for (x = 0; x < width; x++)
{
for(y= 0; y< height; y++)
{

setPixel(imageData, y, x, historyred[x][y],historygreen[x][y],historyblue[x][y], 255);

}
}

c.putImageData(imageData, 0, 0);
}

function diff(num1, num2){
return (num1 > num2)? num1-num2 : num2-num1
}

function record()
{


}

function play()
{

}
function loop()
{
if(counter == 0)
{

lengthadj = 1.0;

scale = 800;//1200;//3900;//2400 1900 2500;

scale2 = scale / 4;





for (wavesInit = 0; wavesInit < amountofwaves; wavesInit++)
{

lengthwaveA[wavesInit] = (((Math.random()*20)+1) / scale) * lengthadj;
lengthwaveB[wavesInit] = (((Math.random()*20)+1) / scale) * lengthadj;
lengthwaveC[wavesInit] = (((Math.random()*20)+1) / scale) * lengthadj;
lengthwaveD[wavesInit] = (((Math.random()*20)+1) / scale) * lengthadj;

lengthadj *= 1.1; // 1.2
randadj = (Math.random()*10);
lengthadj *= 1 + (randadj/100.0);

phaseshiftwaveA[wavesInit] = ((Math.random() * 10) / 10) * (Math.PI*2.0);
phaseshiftwaveB[wavesInit] = ((Math.random() * 10) / 10) * (Math.PI*2.0);
phaseshiftwaveC[wavesInit] = ((Math.random() * 10) / 10) * (Math.PI*2.0);
phaseshiftwaveD[wavesInit] = ((Math.random() * 10) / 10) * (Math.PI*2.0);


lengthwaveA2[wavesInit] = (((Math.random()*20)+1) / scale) * lengthadj;
lengthwaveB2[wavesInit] = (((Math.random()*20)+1) / scale) * lengthadj;
lengthwaveC2[wavesInit] = (((Math.random()*20)+1) / scale) * lengthadj;
lengthwaveD2[wavesInit] = (((Math.random()*20)+1) / scale) * lengthadj;



phaseshiftwaveA2[wavesInit] = ((Math.random() * 10) / 10) * (Math.PI*2.0);
phaseshiftwaveB2[wavesInit] = ((Math.random() * 10) / 10) * (Math.PI*2.0);
phaseshiftwaveC2[wavesInit] = ((Math.random() * 10) / 10) * (Math.PI*2.0);
phaseshiftwaveD2[wavesInit] = ((Math.random() * 10) / 10) * (Math.PI*2.0);

//spectrumrange = wavelengthmax - wavelengthlowest;
wavelightstrength[wavesInit] = 0;


for(f = 0; f < amountoflightbeams; f++)
{
wavelightfrequencies[wavesInit][f] = wavelengthlowest + (Math.random()*400);
}



}


// Colorrange check

heighestredimage = 0;
heighestgreenimage = 0;
heighestblueimage = 0;
lowestredimage = 0;
lowestgreenimage = 0;
lowestblueimage = 0;


for (x = 0; x < width; x++)
{


for(y = 0; y< height; y++)
{


amount = 1.0;
amountold = amount;
amounttotal = 0;

amount2 = 1.0;
amountold2 = amount2;


amountR = 1.0;
amountoldR = amount;
amountG = 1.0;
amountoldG = amount;
amountB = 1.0;
amountoldB = amount;







for (wave = 0; wave < amountofwaves; wave++) // 25 20 // 30
{


amountA = Math.sin(phaseshiftwaveA[wave]+(x*lengthwaveA[wave]));
amountB = Math.sin(phaseshiftwaveB[wave]+(y*lengthwaveB[wave]));
amountC = Math.sin(phaseshiftwaveC[wave]+(x*lengthwaveC[wave]));
amountD = Math.sin(phaseshiftwaveD[wave]+(y*lengthwaveD[wave]));


amountE = Math.sin(phaseshiftwaveA2[wave]+(x*lengthwaveA2[wave]));
amountF = Math.sin(phaseshiftwaveB2[wave]+(y*lengthwaveB2[wave]));
amountG = Math.sin(phaseshiftwaveC2[wave]+(x*lengthwaveC2[wave]));
amountH = Math.sin(phaseshiftwaveD2[wave]+(y*lengthwaveD2[wave]));




// If 1 was the max, multiplying would decrease the wave. Now max is 2.
amountABCD = (amountA * amountB) + (amountC * amountD);


amountEFGH = (amountE * amountF) + (amountG * amountH) + (amountE * amountG);

amount2 = amountold2;


// multiply previous layer with new layer

amount = amountold * amountABCD;// + (0.5*amountEFGH*amountold);

amount2 = amountEFGH;

wavelightstrength[wave] = amount;




amountold = amount;
amounttotal += amount;

amountold2 = amount2;



}


for(wavesl = 0; wavesl < amountofwaves; wavesl++)
{
for(f = 0; f < amountoflightbeams; f++)
{

spectrumvalue = wavelightfrequencies[wavesl][f];

redvalue = 0;
greenvalue = 0;
bluevalue = 0;

if ((spectrumvalue >= 380.0) && (spectrumvalue < 440.0))
{
redvalue = -(spectrumvalue - 440.0) / (440.0 - 350.0);
greenvalue = 0.0;
bluevalue = 1.0;
}

if ((spectrumvalue >= 440.0) && (spectrumvalue < 490.0))
{
redvalue = 0.0;
greenvalue = (spectrumvalue - 440.0) / (490.0 - 440.0);
bluevalue = 1.0;
}
else
if ((spectrumvalue >= 490.0) && (spectrumvalue < 510.0))
{
redvalue = 0.0;
greenvalue = 1.0;
bluevalue = (-(spectrumvalue - 510.0)) / (510.0 - 490.0);
}
else
if ((spectrumvalue >= 510.0) && (spectrumvalue < 580.0))
{
redvalue = (spectrumvalue - 510.0) / (580.0 - 510.0);
greenvalue = 1.0;
bluevalue = 0.0;
}
else
if ((spectrumvalue >= 580.0) && (spectrumvalue < 645.0))
{
redvalue = 1.0;
greenvalue = (-(spectrumvalue - 645.0)) / (645.0 - 580.0);
bluevalue = 0.0;
}
else
if ((spectrumvalue >= 645.0) && (spectrumvalue <= 780.0))
{
redvalue = 1.0;
greenvalue = 0.0;
bluevalue = 0.0;
}
else
{
redvalue = 0.0;
greenvalue = 0.0;
bluevalue = 0.0;
}


colorintensity = 0;



if ((spectrumvalue >= 380.0) && (spectrumvalue < 420.0))
{
colorintensity = 0.3 + 0.7 * (spectrumvalue - 350) / (420.0 - 350.0);
}
else
if ((spectrumvalue >= 420.0) && (spectrumvalue < 700.0))
{
colorintensity = 1.0;
}
else
if ((spectrumvalue > 700.0) && (spectrumvalue < 780.0))
{
colorintensity = 0.3 + 0.7 * (780.0 - spectrumvalue) / (780.0 - 700.0);
}
else
{
colorintensity = 0.0;
}




colorintensity *= wavelightstrength[wavesl];




redvalue *= colorintensity;
greenvalue *= colorintensity;
bluevalue *= colorintensity;




red[x][y] += redvalue;

green[x][y] += greenvalue;

blue[x][y] += bluevalue;


}



// colorrange check

if (heighestredimage < red[x][y])
{
heighestredimage = red[x][y];
}
if (heighestgreenimage < green[x][y])
{
heighestgreenimage = green[x][y];
}
if (heighestblueimage < blue[x][y])
{
heighestblueimage = blue[x][y];
}
if (lowestredimage > red[x][y])
{
lowestredimage = red[x][y];
}
if (lowestgreenimage > green[x][y])
{
lowestgreenimage = green[x][y];
}
if (lowestblueimage > blue[x][y])
{
lowestblueimage = blue[x][y];


}

}
}
}




// Normalize and render
for (x = 0; x < width; x++)
{
for(y = 0; y < height; y++)
{


redrange = heighestredimage - lowestredimage;
greenrange = heighestgreenimage - lowestgreenimage;
bluerange = heighestblueimage - lowestblueimage;

redstep = 255.0 / redrange;
greenstep = 255.0 / greenrange;
bluestep = 255.0 / bluerange;



rednormalized = (red[x][y] - lowestredimage) * redstep;
greennormalized = (green[x][y] - lowestgreenimage) * greenstep;
bluenormalized = (blue[x][y] - lowestblueimage) * bluestep;



red[x][y] = rednormalized;
green[x][y] = greennormalized;
blue[x][y] = bluenormalized;


setPixel(imageData, y, x, red[x][y],green[x][y],blue[x][y], 255);

redOld[x][y] = red[x][y];
greenOld[x][y] = green[x][y];
blueOld[x][y] = blue[x][y];
}
}

}

else
{



}

document.onkeypress = function (e)
{
e = e || window.event;
var charCode = e.charCode || e.keyCode,
character = String.fromCharCode(charCode);

if(character == 'a')
{
reset();
}
}



c.putImageData(imageData, 0, 0);

counter++;

setTimeout("loop()",0); // 100
}

loop();

</script>
<br>
<button onclick="reset()">New</button>
<button onclick="history()">History</button>
<button onclick="record()">Record</button>
<button onclick="play()">Play</button>

<br>
<br>

</html>
firefly3donderdag 8 september 2016 @ 20:49
Wat kleine aanpassingen.

2n3kg0.jpg

t9y3km.jpg

2crvf3o.jpg
#ANONIEMzondag 18 september 2016 @ 20:58
quote:
0s.gif Op donderdag 8 september 2016 20:49 schreef firefly3 het volgende:
Wat kleine aanpassingen.

[ afbeelding ]

[ afbeelding ]

[ afbeelding ]
Volg dit topic al vanaf het begin, maar had hem op dit account nog niet in MyAt.

Die bovenste: groen oog met zwarte iris/pupil, links daarvan een oortje, rechtsonder een neus en een mond.

[ Bericht 1% gewijzigd door #ANONIEM op 18-09-2016 20:59:35 ]
firefly3zaterdag 22 oktober 2016 @ 00:33
:)
Heeft er nog iemand nieuwe ideeen? Kort samengevat: ik simuleer willekeurige lichtgolven die in een lens worden geprojecteerd en dan terug op de "javascript canvas". Het probleem zit in het willekeurige, het blijven vage objecten maar geen steden bijvoorbeeld. Opnieuw kom je dan op hetzelfde vraagstuk terecht: iets uit het niets creëren. Complexiteit zijn algoritmes die als samenhang meer kunnen creëren (cellular automata etc). Is er een mogelijkheid om complexiteit te combineren met chaos zoals in de realiteit? Een perfect evenwicht?

Waar ik achter ben gekomen is dat complexiteit een reeks van simpele regels zijn rondom een eenvoudig object. Deze regels zijn door de bedenker ingevoerd en hebben dan al een vaststaand eindresultaat (zie wanneer een cellular automaton vastloopt: formule = afgelopen). Veel wetenschappers zeggen dat het universum ook doodvriest tot een eindstadium van totale "equilibrium" of hoe je het ook schrijft.
firefly3zaterdag 22 oktober 2016 @ 00:35
M.a.w, we zijn weer terugbeland bij hetzelfde vraagstuk. A.k.a. we zijn nog bij stap 0 met ons javascriptje..

Moeten we een wereld in die wereld schapen? Een automaton bouwen die zijn eigen algoritme maakt? Buiten onze wiskunde denken waarbij 1+1=3? Ik weet niet eens wat voor input we nodig hebben in welk vorm dan ook..

Er is maar 1 manier om de loop oneindig te laten doorlopen, door een niveau van complexiteit hierover uit te laten voeren zodat de "natuurwetten veranderen".

[ Bericht 20% gewijzigd door firefly3 op 22-10-2016 00:51:02 ]
Bosbeetlezaterdag 22 oktober 2016 @ 10:26
quote:
1s.gif Op zaterdag 22 oktober 2016 00:35 schreef firefly3 het volgende:
M.a.w, we zijn weer terugbeland bij hetzelfde vraagstuk. A.k.a. we zijn nog bij stap 0 met ons javascriptje..

Moeten we een wereld in die wereld schapen? Een automaton bouwen die zijn eigen algoritme maakt? Buiten onze wiskunde denken waarbij 1+1=3? Ik weet niet eens wat voor input we nodig hebben in welk vorm dan ook..

Ergens 1 of 2 random scherpe randen maken gaat je ook al hele andere plaatjes opleveren.

Er is maar 1 manier om de loop oneindig te laten doorlopen, door een niveau van complexiteit hierover uit te laten voeren zodat de "natuurwetten veranderen".
Ik denk dat je moet gaan kijken wat er ontbreekt in jouw plaatjes. Er zitten bijvoorbeeld zelfden scherpe randen in... ze zien er allemaal vrij golvend uit. Heb al eens geprobeerd om iets meer met ruis te doen.. je gebruikt nu allemaal perfecte lichtstralen die hooguit door andere perfecte lichtstralen geintefereerd worden. Maar in het echt worden lichtstralen door allerhande dingen vervormd verstrooid etc. Dus probeer eens te werken met niet perfecte golven en iets meer ruis.

Ik denk dat daar ook het grote verschil zit jij maakt random lichtstralen maar de lichtstralen die een foto maken zijn alles behalve random, je kunt namelijk prima zes keer van hetzelfde object de zelfde foto maken... en daar zitten dan wel kleine verschillen in maar geen werelden van verschil.
firefly3zaterdag 22 oktober 2016 @ 16:23
quote:
2s.gif Op zaterdag 22 oktober 2016 10:26 schreef Bosbeetle het volgende:

[..]

Ik denk dat je moet gaan kijken wat er ontbreekt in jouw plaatjes. Er zitten bijvoorbeeld zelfden scherpe randen in... ze zien er allemaal vrij golvend uit. Heb al eens geprobeerd om iets meer met ruis te doen.. je gebruikt nu allemaal perfecte lichtstralen die hooguit door andere perfecte lichtstralen geintefereerd worden. Maar in het echt worden lichtstralen door allerhande dingen vervormd verstrooid etc. Dus probeer eens te werken met niet perfecte golven en iets meer ruis.

Ik denk dat daar ook het grote verschil zit jij maakt random lichtstralen maar de lichtstralen die een foto maken zijn alles behalve random, je kunt namelijk prima zes keer van hetzelfde object de zelfde foto maken... en daar zitten dan wel kleine verschillen in maar geen werelden van verschil.
Bedankt voor je input. Momenteel weet ik nog niet hoe ik scherpe randen maak zonder dat het een cartoonachtig plaatje wordt waar je niets aan hebt. Dus dat is wel jammer.
Quyxz_zaterdag 29 oktober 2016 @ 00:15
Wow TS, je bent wel heel fanatiek!

Misschien vind je dit praatje ook wel leuk. Het is niet precies hetzelfde als jij doet, maar gaat wel over computers die herkenbare plaatjes produceren.

TheeTijdmaandag 7 november 2016 @ 08:39
Leuk topic :)
firefly3zondag 19 februari 2017 @ 00:12
quote:
1s.gif Op zaterdag 29 oktober 2016 00:15 schreef Quyxz_ het volgende:
Wow TS, je bent wel heel fanatiek!

Misschien vind je dit praatje ook wel leuk. Het is niet precies hetzelfde als jij doet, maar gaat wel over computers die herkenbare plaatjes produceren.

Bedankt. Gaaf!!
firefly3donderdag 2 april 2020 @ 21:40
Het algoritme een beetje bijgeschaafd!!

9.jpg

10.jpg

11.jpg

12.jpg

13.jpg
firefly3donderdag 2 april 2020 @ 21:57
14.jpg

15.jpg

16.jpg

17.jpg

18.jpg
firefly3donderdag 2 april 2020 @ 22:20
:')

23.jpg

Vliegende blauwe donut
26.jpg

[ Bericht 14% gewijzigd door firefly3 op 02-04-2020 22:32:25 ]