We really like the mathematics behind cellular automata, and the fact that it is pretty much raw binary. Which got us thinking: what if we could convert selfies to be read as unique cellular automata, as determined by specific facial features? That's when the idea was formed.

What it does

The current image is taken, the edges are detected to create a 2D binary matrix, from which a characteristic equation was solved to get the unique eigenvalue of the image. This eigenvalue was reverse engineered to create a minimal polynomial, because of the relationship between minimal polynomials and cyclic behavior of cellular automata; this polynomial was then optimized and evaluated with Bernoulli random variables, but are trivial when x=0, so only x=1 was considered. This provided a numeric value which is congruent to a simple automata rule between 1 and 256. This new rule number, which is unique to the image captured, is then used to build the totalistic cellular automaton.

How I built it

We used the capabilities and structure of the Wolfram Language and syntax to build all the code.

Challenges I ran into

We ran into some issues with cloud deployment in terms of efficiency. We also ran into facial recognition issues which were resolved using edge detection algorithms. Lastly, we ran into typical formatting and syntax issues due to general unfamiliarity of the language.

Accomplishments that I'm proud of

We're very proud of making everything work; a lot of extensive math literature and background went into this, and while it's mostly in the backend and not noticeable, it took the most work. We're also proud of creating a code which has the property of uniqueness for each image.

What I learned

We learned Wolfram Language we also learned a lot about image processing and writing succinct code.

What's next for Selfie-Automaton-Generator

Creating an interactive microsite via cloud deployment.

Built With

Share this project: