15-462 Final Project: Texture by Numbers

Jing Jin

Additional Implementation Details:

Texture by numbers is one of the many uses of image analogies. An image analogy takes two related images: A and A', and another image B, and produces an image B' such that the relation between B and B' is the same as the relation between A and A'. By concentrating on texture by numbers, I was able to make some assumptions that simplified the process. For example, I can assume that A and B have similar colors and luminance and that A' and B' have similar colors and luminance.

One extremely limiting constraint for this project is the memory and harddrive space limit of the machine. Because in texture by numbers, every pixel needs to be compared to every other pixel in every image. For example, if we have two 100x100px images, then there are (100x100)^2 comparison values generated. Because of this, loops had to be used to iteratively calculate the values, store them into a file, clear them, and process more values. Even this, however, does not allow images much larger than 100x100 to be compared, because the enormous data files fill the harddrive. Therefore, all of the results are itsy bitsy tiny little pictures. Another reason that there is too much data might be caused by the size of the descriptor. However, this is difficult to adjust depending on the picture, and descriptors smaller than 8x8 usually produce bad results

Even though these images are as small as can be, each took about half an hour to process, so a lot of improvements that could have helped, such as using a pyramid or checking for coherence never got to be implemented.

Itsy Bitsy Teeny Tiny Little

A A' B B'
Artifacts can clearly be seen on B', this is because the descriptor only had a radius of 2
With a radius of 4, there is still clear evidence of artifacs
This is the best one so far.... with a radius of 8.

 

All base files can be found here. And all results can be found here.

Done!