In this project, I implemented texture synthesis using steerable pyramids, a technique I chose for its ability to preserve both statistical and structural properties of source textures. My implementation uses oriented filters at multiple scales to decompose images into their frequency components, followed by histogram matching to generate new textures.
I structured my implementation around these key steps:
For this project, I worked with two primary example textures: a tiger fur pattern that demonstrates predictable, diagonal stripes, and a peacock feather pattern that is complex and multi-scaled.
Tiger fur texture: Note the strong contrast between orange and black stripes
Peacock feather texture: Note the intricate patterns and beautiful colors
I designed the oriented filters to detect features at different angles (0°, 45°, 90°, 135°). One interesting discovery I made was that when I sum all oriented filter responses, I get a result equivalent to a Laplacian bandpass filter. This confirmed that my oriented basis was complete.
Tiger texture: Filter outputs show directional components and Laplacian equivalence
Peacock texture: Demonstrates how oriented filters capture different feature directions
I broke down the image into different scales and orientations using my steerable pyramid implementation. This allowed me to analyze and modify texture features at multiple resolutions and directions.
Tiger texture: Steerable pyramid decomposition shows scale and orientation bands
Peacock texture: Multi-scale decomposition reveals intricate feather patterns
Before diving into full texture synthesis, I wanted to ensure my histogram matching worked correctly. This was crucial for maintaining the overall tone and contrast of the source texture.
Tiger texture: Source histogram (left) matched to noise (right)
Peacock texture: Source histogram (left) matched to noise (right)
Here are the results of my full texture synthesis algorithm:
Tiger texture: Source (left) and synthesized result (right)
Peacock texture: Source (left) and synthesized result (right)