Texture Synthesis

In the past decade computer graphics experienced a wave of activity in the area of image-based rendering as researchers explored the idea of capturing samples of the real world as images and using them to synthesize novel views rather than recreating the entire physical world from scratch. This, in turn, fueled interest in image-based texture synthesis algorithms. Such an algorithm should be able to take a sample of texture and generate an unlimited amount of image data which, while not exactly like the original, will be perceived by humans to be the same texture.

In computer graphics, early work on texture synthesis (e.g. the seminal paper by Heeger and Bergen) was inspired by research in texture analysis and very much influenced by statistics (the use of global histograms of image features) and psychophysics (the use of multi-scale, multi-orientation filter banks). While the results for stochastic textures were very good, this class of algorithms was unable to deal well with more structured textures. In our 1999 work ([Efros and Leung,'99]) we tried to address this shortcoming by proposing a very different and extremely simple way of synthesizing textures locally, one-pixel-at-a-time. In recent years this algorithm has been used for synthesiszing a large spectrum of textures as well as filling holes in textured regions. In our latest work ([Efros and Freeman,'01]) we show that similarly good results can be obtained by an even simpler (and much faster) procedure of quilting together patches of the input texutre. Moreover, we demonstrate a method of transfering texture from one object onto another (e.g. rendering a man's face with rice). Click below to see the results and read the articles.

Our Texture Synthesis papers:

  • A. A. Efros and T. K. Leung, "Texture Synthesis by Non-parametric Sampling", ICCV 99
  • A. A. Efros and W. T. Freeman, "Image Quilting for Texture Synthesis and Transfer", SIGGRAPH 01
  • Some further work based on Efros and Leung algorithm (partial list):

  • [Wei and Levoy,'00]: optimizations based on multi-scale and VQ
  • [Harrison,'01]: proposes ordering pixels to be synthesized based on Information Theory, includes examples of texture transfer, and a GIMP plug-in
  • [Ashikhmin,'01]: uses correlation between neighboring pixels to speed-up synthesis, includes examples of texture transfer
  • [Hertzmann et.al.,'01] Image Analogies: a general texture transfer framework (software avaliable)
  • [Efros and Freeman,'01] Image Quilting: stitch together patches of input image, texture transfer
  • [Hertzmann et.al.,'02] Curve Analogies
  • [Levina, '02 PhD Thesis, Ch.2] Proves consistancy of Efros and Leung.
  • [Criminisi et al.,'03] Object Removal: by simply changing the order of synthesis, it is able to fill in hole in arbitrary images.
  • [Wexler'04]: optimization based synthesis, instead of in-order. Inspired PatchMatch (used in Adobe products).
  • PatchMatch: clever speedup of nearest neighbor patch search. Basis for Adobe Photoshop "Context-aware Fill".
  • [Buades 2005]: Non-Local Means fliter for denoising.
  • Surface Texture Synthesis: [Efros,'98 (class project)], [Ying et.al,'01], [Wei and Levoy,'01], [Turk,'01], [Gorla et.al.,'01].
  • Other Work in Texture Synthesis:

  • Kris Popat's PhD thesis
  • David Heeger's Pyramid Based Texture Analysis/Synthesis
  • [Zhu et.al,'97,'98]: FRAME model
  • Jeremy De Bonet's texture synthesis page
  • Eero Simoncelli's texture synthesis page
  • [Zhu et.al.,'00]: Julesz Ensemble
  • [Xu et.al.,'00]: Chaos Mosaic
  • [Schödl el.al,'00]: Video Textures
  • [Bar-Joseph et.al,'01]
  • [Liang et.al.,'01]: Patch-based sampling
  • [Soatto et.al.,'01]: Dynamic Textures
  • [Liu et.al.,'02]: Near-regular Patterns
  • Turns out, these ideas have been around for decades:

  • [Garber,'81] PhD thesis: "Computational Models for Texture Analysis and Texture Synthesis"
  • [Draves,'93]: Fuse program

  • Back to Berkeley Texture page or Alyosha's web page