DEV Community

Cover image for Generate All Possible Images!
Alireza Shabani
Alireza Shabani

Posted on • Edited on

Generate All Possible Images!

Let's discuss a HUGE project but so useful one!
The main idea is to generate all possible pictures with a specific resolution such as 1080×1920.


Why:

Your first question might be, why the hell should this happen?

Cause it is literally EVERYTHING!!! Everything has happened, Everything that will happen, it can be a huge resource of inspiration, it can be leaked photos, it can be any media that will be released tomorrow, it can be exactly the future. This is "Why".

If we want to generate all 1080p pictures, it will be around

< 1080*1920*255*255*255 = 3.47892351×10¹³ >

, it is noticeable we are facing two different issues:

Time
Size

Therefore i though as the first step , i should use a lower resolution to generate , so i did some research:

○ 352 x 240 (240p)
○ 480 x 360 (360p)
○ 858 x 480 (480p)
○ 1280 x 720 (720p)
○ 1920 x 1080 (1080p)
○ 3860 x 2160 (2160p)

The best choice is 240p. it will be something like:


Alright, Let's check a number of possibilities:

240×352×256×256×256 = 1.417339208×10¹²

it is still a lot but with a huge difference in size.
so I had another idea, limiting the range of red/green/blue:

2 Different Ways

Option 1

instead of having (256³)=16777216 options for each pixel , have ((256/8)³)=32768 => we saved 16777216/32768=512 , in other words (240×352×32*32*32)=2768240640 possibilities

How About analysing size and time:

Size:

Each .Jpg format 240p : 51KB (maximum)
Each .Png format 240p : 254KB (maximum)
It is clear we have to use .jpg format.
All possible pictures size will be :

(240×352×32*32*32)*51KB = 141180272640KB or 137871360MB or 134640GB or 131TB

Time:

Each pixel (in a loop not random) takes 0.000000166

Each 240p picture generate takes

(0.000000166*(352*240))+0.08 = 0.09402368

Then for all Possible pictures, it takes

0.01*2768240640= 27682406.4 sec or 461373.4 min or 7689.5 hour or 320.3 days




Option 2

instead of having (256³)=16777216 options for each pixel , have ((256/32)³)=512 => we saved 16777216/512=32768 , in other words (240×352×8*8*8)=43253760 possibilities

How About analysing size and time:

Size:

Each .Jpg format 240p : 51KB (maximum)
Each .Png format 240p : 254KB (maximum)
It is clear we have to use .jpg format.
All possible pictures size will be :

(240×352×8*8*8)*51KB = 2205941760KB or 2154240MB or 2103.7GB or 2.05TB

Time:

Each pixel (in a loop not random) takes 0.000000166

Each 240p picture generate takes

(0.000000166*(352*240))+0.08 = 0.09402368

Then for all Possible pictures, it takes

0.01*43253760= 432537.6 sec or 7208.9 min or 120.1 hour or 5 days




Thanks for your attention, hope you like the idea and I really love to see your ideas to optimize!

Revisto

Top comments (9)

Collapse
 
muhimen123 profile image
Muhimen

So, have your code started running?

Collapse
 
revisto profile image
Alireza Shabani • Edited

not yet , looking to optimize

Collapse
 
muhimen123 profile image
Muhimen

Do you mean optimize?

Thread Thread
 
revisto profile image
Alireza Shabani

definitely

Collapse
 
biaus_ profile image
Frank

99.99% of all the possible images will be just trash
How about running each imh through a image classifier and see if the creation is something detectable or not. 🤔😂😂

Collapse
 
acornavi profile image
acornavi

You use available images/videos to create vectors or classes.

Collapse
 
issam467 profile image
Qwer Itf

I don't want to discourage you, but your method of calculation is terribly wrong. The correct method is 32 ^ ( 352 * 240 * 3 ). This is the total number of generated images. If you want their total size, multiply this by the size of a single image."

Collapse
 
acornavi profile image
acornavi

I'm working on this project since 1989. I call it Aleph. Actually, there is a limited number of images that could be used for further analysis and data extraction. First, remove all negatives, remove all white noise-based images to a certain degree of very low patterning, remove all mirror images and all repetition images. This cuts significantly the final number of the images.. The next step si to optimize the way you record data, binary code is taking the most memory.
My project is based on the idea that science can search a database instead of researching real data. Please contact me if you are interested in cooperation. Thanks!

Collapse
 
issam467 profile image
Qwer Itf

A curious question: how far have you progressed with this project? If this project is completed, it will pose a major problem as it will completely violate people's privacy. I have a brilliant and useful suggestion if you're interested in hearing it