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 |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |