Texture Synthesis using Steerable Pyramids

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.

My Approach

I structured my implementation around these key steps:

Source Textures

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 Texture Source

Tiger fur texture: Note the strong contrast between orange and black stripes

Peacock Texture Source

Peacock feather texture: Note the intricate patterns and beautiful colors

Understanding Oriented Filters

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 Oriented Filters

Tiger texture: Filter outputs show directional components and Laplacian equivalence

Peacock Oriented Filters

Peacock texture: Demonstrates how oriented filters capture different feature directions

Steerable Pyramid Implementation

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 Steerable Pyramid

Tiger texture: Steerable pyramid decomposition shows scale and orientation bands

Peacock Steerable Pyramid

Peacock texture: Multi-scale decomposition reveals intricate feather patterns

Histogram Matching Results

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 Histogram Matching

Tiger texture: Source histogram (left) matched to noise (right)

Peacock Histogram Matching

Peacock texture: Source histogram (left) matched to noise (right)

Synthesis Results

Here are the results of my full texture synthesis algorithm:

Tiger Synthesis Results

Tiger texture: Source (left) and synthesized result (right)

Peacock Synthesis Results

Peacock texture: Source (left) and synthesized result (right)