Final Project: Image Matting

May 18, 2011

Project Overview

This project was inspired by the survey report Image and Video Matting: A Survey by J. Wang and M. Cohen. As mentioned in this report, there are numerous techniques to solve matting problem. For the final project, I implemented the CVPR 2006 paper Closed-form Matting by A. Levin et al.

 Development Environment

·         MS Visual Studio 2008 C++ 32bit

·         Library: OpenCV 2.2.0

·         OS: MS Windows 7 64bit

Closed-form Matting Algorithm

1.     The Matting Equations

Matting is an under-constrained problem as shown below.

 ------------------------------------- (1)

·          - The Color of the i-th pixel

·          - The Background Color of the i-th pixel

·          - The Foreground Color of the i-th pixel

·         - Foreground Opacity of the i0th pixel

For a 3 channel color image, 7 unknowns but 3 constraints per pixel!

2.     Other Approaches

3.     Closed-form Matting of “Grayscale” images

Assume that both F and B are “approximately constant” over a small window around each pixel. By this assumption equation (1) can be rewritten as

  a + b ,     i w------------------------------ (2)

·         a = 1 / F - B

·         b = -B / F - B

·         w – small image window

4.     Cost function

Finding a, a, b minimizing this const function,


·         wj –a small window around pixel j

·         eps – a regularization term 

J is quadratic in a, a and b with 3N unknowns for an image with N pixels

5.     Laplacian


Project Results using Levin’s Algorithm







Future Works

Because the OpenCV’s sparse linear solver function “cv::solve” doesn’t accept the sparse matrix of OpenCV(cv

::SparseMat”), I should make a dense matrix(“cv::Mat”)  with many zeros instead of a sparse matrix to use the solver function. This operation not only takes lots of time, but also doesn’t support image size of bigger than 10,000 pixels, because cv::Mat’s size is limited to 10,000 by 10,000.

For the future work, I should make this program work for the bigger images. I found out that a library named TAUCS is widely used. For the research, I need to polish the algorithm and make this work for the video images.