Not logged in, Join Here! or Log In Below:  
 
News Articles Search    
 


Submitted by Mattias Fagerlund, posted on April 20, 2001




Image Description, by Mattias Fagerlund



Here's images from a website we've created ( http://www.cambrianart.com ), where you can evolve your own art - it's similar to Evolver that was mentioned here a while back ( link ) except you can evolve your own images online. These images can be stored or sent as electronic postcards.

If you need sci-fi looking textures for a game, for instance, you can evolve your own - or use the ones that are allready published on the site. Just let us know.

/Mattias Fagerlund


[prev]
Image of the Day Gallery
www.flipcode.com

[next]

 
Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
 
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
 
shrike

April 20, 2001, 09:12 AM

cool program, but the images that you show do no justice to the pretty pics that can be made with it :)

Could you please explain exactly what types of algorithms are used to create the images. Do you use at any point, randomly generated equations for, say the displacement, or color of a pixel. It might be cool to write a little program to generte textures for myself.

 
treething

April 20, 2001, 09:14 AM

Look what i made !

http://www.cambrianart.com/Image.asp?Genome=7xg@hAHcZLxg@hAHcZLgrbKVBNKBixPM6pNX@8HBixPM6pNPBPJBGM&w=800&h=600

Hope the link works. Anyway its nice work.:-)

 
Kevin Kennedy

April 20, 2001, 09:43 AM

How do you generate your seed images?

 
MC BAXTON

April 20, 2001, 11:35 AM

It's nice, although slightly unrealistic.

 
mattias fagerlund

April 20, 2001, 12:30 PM

> cool program, but the images that you show do no justice to
> the pretty pics that can be made with it :)

Argh!! I picked a few that I like from the images I've created, but the nice thing about this kind of system is that the users taste is what matters. Basically, what you're saying is that I have bad taste... ARGH! ;)

> Could you please explain exactly what types of algorithms are
> used to create the images.

Well, here's: http://www.cambrianart.com/About.asp an explanation for the non-technical readers, but, in a short sentance;

"The system uses Genetic Programming to breed quartenion based functions that generate images".

Quartenions are 4x1 vectors (like this [x1,x2,x3,x4]). The programs can take the form of;
result= cos((a+b)/d) where a,b,c and d and quartenions, and the functions (cos,"+","/" and so on) are created so they make sense. For instance, what would the cos of a quartenion be? Well, I define
qcos(x)=[cos(x1),cos(x2),cos(x3),cos(x4)] and so on.

The program is then executed once for every pixel in the image, the first three values of the result quartenion are used for red/green/blue - voilá, we have an image!

For a simpler version, one could start out with black and white images, using functions like

color=(sqr(x)+y)/sin(x/y) (just from the top of my head, prolly look like crap)

I started out that way, see http://www.cambrianart.com/EvolArt/ for some results.

> Do you use at any point, randomly generated equations for, say
> the displacement, or color of a pixel.

Yeah, displacement, RGB, HSV, bumpmap info (not implemented) - anything you'd like. It's all in the functions I've defined.

> It might be cool to write a little program to generte textures
> for myself.

Go ahead, it's waaay fun!

- I don't know if ANY of this made sense - I'm so much into this that I can't tell anymore what people understand readily and what is just pure magic. Ask away if you're interested in more details!

m

 
mattias fagerlund

April 20, 2001, 12:33 PM

> How do you generate your seed images?

The first half of the nine (half of 4? what's that in integers?) are randomly selected from our database of previously stored images - the last half (same question! again... voe is me!) are just randomly created (per Koza's method of generating random programs - do a search for John Koza and you'll have more urls than you can easily shake a stick at).

m

 
337

April 20, 2001, 01:29 PM

This is unrelated to the actual program, but isn't it a big load on the server to run your program? What type of setup do you have?

 
juhnu

April 20, 2001, 03:03 PM

genome=1tugZ6MHUPpAHlBcl9OBcJx7k0cZBBBKNic5BcN9pM

do one character represent a one function in this genome or what's in there ?

How is cross breeding made here, with simple crossover between two
genomes by randomly selection the point in string( like aA and bB would become aB and bA ) or ?

I would be also interested in to know what kind of functions this sytems uses. i suppose there are normal sin, cos, sqrst, but is there something more spohisticated like 2d perlin noise or something.

cheers.


 
morgan

April 20, 2001, 03:35 PM

Once again, nice job Mattias!

-m

 
mattias fagerlund

April 20, 2001, 03:37 PM

> This is unrelated to the actual program, but isn't it a big load
> on the server to run your program?

Yeah, kinda, especially for larger images - our internet cable is the limiting factor at the moment, though :(

We, however, cache the images once they've been created. So if person A generates xxyyzz for 800x600, that won't tax the server if you download it to.

> What type of setup do you have?

An athlon 1GHz running Win2k with Internet Server - the pages are ASP and the program that evolves/generates the images is Delphi, compiled to a DLL. The data's stored on a SQL Server 7.0 (I know - I sound like a ad for M$!!!). I could easily partition it to run on several separate servers, but we haven't gotten that kind of load yet - we haven't really released the site yet - as in told anyone about it ;)

Actually, we'd like to sell the entire set-up, but I'm kinda stumped as to how to go about that, and who'd want to buy it? Any ideas, please mail me att mattias@cambrianlabs.com!

m

 
juhnu

April 20, 2001, 04:27 PM

Sorry about the awful english in my last post.

 
[-WD40-]

April 20, 2001, 05:17 PM

I'm sure there's a lot of work involved in that, but I just don't see the point... you should have made an application instead of a web based thing.

MCBAXTON: totally nonsense

 
mattias fagerlund

April 20, 2001, 05:20 PM

>I'm sure there's a lot of work involved in that, but I just
>don't see the point... you should have made an application
>instead of a web based thing.

Well, it was (and still is) an application, but the application has not been published - the web site has. The application also handles animations of images (just like the one on the page), but it's in no state to distribute (i'm sure you all know what that's like), so it rests safely on my harddrive ;)

m

 
Jolle

April 20, 2001, 05:22 PM

Awesome!

 
mattias fagerlund

April 20, 2001, 05:30 PM

I wrote a longins reply to this post allready, but I found out that if you forget to fill out user name and password - you get the message "account not found", and your post is lost... argh!!

>genome=1tugZ6MHUPpAHlBcl9OBcJx7k0cZBBBKNic5BcN9pM
>
>do one character represent a one function in this genome or
>what's in there ?

Yep. That's sufficient in this context, but it generally wouldn't be - in other genetic programming contexts, I mean. I also don't use any random constants (like 6.44323123, that's one of the many many random constants I don't use), so that simplefies the string representation.

Typically, when I do other GP problems, I use 2 bytes/operator and I handle constants like special cases. I'm ramblin' on, I notice ;)

>How is cross breeding made here, with simple crossover between
>two genomes by randomly selection the point in string( like aA
>and bB would become aB and bA ) or ?

Nope, the string is just a representation of the program, that has to be parsed into a lisp like s-expression, that s-expression is then crossed with anothre lisp like s-expression, see http://www.geneticprogramming.com/Tutorial/index.html for details.

It seems I stalled our server running some tests just now, well, I can always restart it tomorrow.

>I would be also interested in to know what kind of functions
>this sytems uses. i suppose there are normal sin, cos, sqrst, but
>is there something more spohisticated like 2d perlin noise
>or something.

Not 2d perlin nois, not right now, but some operators return simple grids and stars, others do vector manipulations (conjugate, invert, find an orthogonal vector to two others). Others yet are just inveted to create nice images. As I mentioned somewhere earlier, I'd like to do dot products and stuff, but I haven't gotten around to it - reality got in the way.

m

 
337

April 20, 2001, 05:41 PM

Just a note.. I appreciate your prompt and thorough replies.

 
wcreviston

April 20, 2001, 06:27 PM

MC BAXTON:
"It's nice, although slightly unrealistic."
... Who said anything about realism?
Your post is Total Nonsense.

-WD40-:
"...you should have made an application instead of a web based thing."
... WTF? The guy did something cool, shared it, and you told him he was wrong? Do I have this right? It's a perfect fit for a web application. There is no software to download. You already have a web browser. I have one too. I don't have to update my computer if the application changes. Why should I put more software on my computer when I already have plenty of programs that display images and let me input data? Give the guy a break.
Your post is Total Nonsense.

Posts like these two are good for nobody. I think it's pretty cool, Mattias.

 
Tobias Franke

April 20, 2001, 06:34 PM

Wow, this is one of those IOTD's that are really interessting! Not like those terrain engines coming up every day...

Here's my creation!

 
Lucid

April 21, 2001, 01:10 AM

this does really kickass... and the use of the website makes it really easy and interesting, as stated earlier...

Have any thoughts about what the next step for this program is? More/different user input?


BTW: you do have good taste... just thought you'd like to know... lol ;)

 
mattias fagerlund

April 21, 2001, 02:55 AM

>this does really kickass... and the use of the website makes
>it really easy and interesting, as stated earlier...

thanks, yes, the main reason I made it web enabled was so that just anyone could use it. Then I more or less gave up on Netscape support, and I haven't the foggiest about mac support... maybe it works on both - I don't really know.

>Have any thoughts about what the next step for this program
>is? More/different user input?

Well, more operators/filters to use in the genome would be cool, perhaps something to give it more of a fake 3d look. Bump mapping for instance.

Perlin 2d noise, as someone suggested, would also be cool, anyone have any other ideas?

>BTW: you do have good taste... just thought you'd like to
>know... lol ;)

My girldfriend tells me I have good taste in women, but not much else... ;) I think she's joking, though...

m

 
=[Scarab]=

April 21, 2001, 03:50 AM

This is an awesome idea, and it has been well executed! Great job, and look what I made. ;)
L I N K

 
[-WD40-]

April 21, 2001, 11:22 AM

wcreviston:
"There is no software to download. You already have a web browser. I have one too. I don't have to update my computer if the application changes. Why should I put more software on my computer when I already have plenty of programs that display images and let me input data?"

Pardon me? What you're saying is that you'd like other people to manage your softwares and data? Just like the incomming Windows XP and all that "rent your softwares" thing...personnally I don't think it's a good idea. You'll end up paying a whole lot of extra money and besides your data won't be confidential anymore.

I know this do not apply to the actual IOTD. What I didn't like about this web based application is that it was way too slow (and I'm on cable) compare to a real application...

 
[-WD40-]

April 21, 2001, 11:32 AM

BTW, this is my contribution:

http://www.cambrianart.com/Image.asp?Genome=BtB31yJMBBue6JktpMVXl1fPcicBnouKLjBPIBcIxitcpO0cUPPcB4Kp6GKP1LBBue6JktpMVXlitcpBnouKLjBPIBcI&w=640&h=480

Looks like a raytraced picture, with bump mapping, ambient and specular lighting, reflection, refraction...pretty cool actually..oh and there's also 3 lights (blue, yellow, pink) with a light volume on the yellow one

Amazing raytracer you got there :)

 
MC BAXTON

April 21, 2001, 11:59 AM

What should I say ? Yes, it's quite amazing, however I do not think so. Something new, and that's all

 
 
[-WD40-]

April 21, 2001, 02:17 PM

MC BAXTON: total nonsense, yes, again

 
[-WD40-]

April 21, 2001, 04:50 PM

BTW, will you release your software? You said you built one, it would be nice if you'd release it

 
Raspberry

April 21, 2001, 04:51 PM

What are the input quaternions though, are they based on the x, and y location of the pixel they are being applied to? nice idea for a generative algorithm. generally cool!

 
Waramp

April 21, 2001, 05:41 PM

It'sa a very cool thing indeed. I was playing around with the Genome strings, just swapping numbers and such, and its quite neat how you can 'customize' the image just by swapping out a few numbers and letters here and there...

This is WD-40's image w/ 2 small changes to the genome string.

http://www.cambrianart.com/Image.asp?Genome=BtB31yJMBBue6JktpMVXl1fPcicBnouKLjBPIBcIxitcpO0cUPPcB9Lp6GKP1LBBue6JktpMVXlitcpBnouKLjBPIBcI&w=640&h=480

Very nice work Mattias...

Oh - and MC Baxton...where is your IOTD? It's been a few weeks...

Waramp.

 
MC BAXTON

April 21, 2001, 06:20 PM

DEAR [-WD40-]!
Your buttons are too big, they show your destructive attitude.
Please keep your 'dark( or evil) side' for yourself.
Do not destroy poor IOTD page, please respect Kurt Miller's work.

And... Dear waramp... please do not put extremely long strings into this iotd, cuz as you know, not all strings can correctly fit into IOTD window.

 
This thread contains 42 messages.
First Previous ( To view more messages, select a page: 0 1 ... out of 1) Next Last
 
 
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.