# Project 2: Image Blending (Writeup)

## Jason Pacheco (pachecoj)

### February 17, 2010

## Algorithm Description

A straitforward implementation of seamless image blending due
to Perez,
et al. is implemented in the function `poisson()`. Among
the various performance considerations are,

- Use of sparse matrices, particularly for
**A** - Pre-computing discrete gradients in X and Y direction
- Elements of
**A**are pre-computed once and then initialized using`sparse(i,j,s,m,n)`

## Graduate Credit: Transparency

Default Rule |
Transparency Rule |

For graduate credit I implemented the transparency rule presented
in **Perez et al.** in the
functions `poisson_transparent()`
and `compute_diffs_blended()`. Namely,

The images to the right show the results **with** and **without** the
transparency rule. Some loss of detail is incurred in the blending
of the source image since strong target gradients will be shown
through the source image. This is noticeable in the face image to
the right.

However, certain images such as the writing image to the right benefit greatly from this hueristic. The closeups show that implementing the transparency rule avoids blurring of the target gradient in parts of the source where no texture exists.

More comparisons are provided in the full results section below.

## Results

The results are provided below for both the "vanilla" implementation (e.g. default gradient rule) and the transparency rule. Some have been scaled down, you may click on these to view the full-size image.

Default Implementation |
Transparency Rule |