Spike Spiegel · 2020-09-01 21:04
Is there a name for this?
Just take a very simple shape, tile it and combine it with another to create a way more complex one.
Cutter · 2020-09-02 00:38
moire patterns?
Agent Richard Gill · 2020-09-02 18:15
>>6535
I guess that comes close in that it describes how it works. Im thinking of storing complex textures expressed as a combination of simple shapes. More akin how fourier transformation is used to describe an image as a decomposition of sin curves. Im sure im not the first one with this idea and there are probably tools out there but im not sure what too look for.
Arisu Mizuki · 2020-09-02 20:43
>>6536
>More akin how fourier transformation is used to describe an image as a decomposition of sin curves
The process is similar for an arbitrary basis. You pick your components (i.e. a basis) and then represent your image as a linear combination of these basis vectors. The last part is pretty easy (you essentially just project the image onto the pixel-space representation of each basis vector and then subtract that off from all subsequent components... look up the Gram-Schmidt procedure), however actually choosing a basis is non-trivial.
The thing is you have many different options and which approach you take will depend on the problem domain. Decomposition into fourier components is a special case of this, where you use sinusoids for your basis. The DCT used in jpeg compression has pic related as a basis. So a jpeg block is just a weighted sum of those little images. In your case, it seems like there are two competing goals you'd like to optimize for your basis:
- Use as few basis vectors as possible
- Make the basis vectors as "simple" as possible
in your OP image the circle basis can be encoded by radius and the grid can be encoded by resolution, so it is very simple, but there are also only two components, so the number of basis vectors is low as well. given an arbitrary image, where these components are not known in advance, the problem becomes a lot harder to define. there is probably research on this subject you could read (start with image processing papers dealing with compression). if it were me, i would define families of "admissible" basis vectors: grids of circles, grids of squares, etc., and then try to work out how to locate an optimal embedding of arbitrary images into your component space. numerical analysis will serve you well here.