[Updated :Oct, 4, 2008]

CAMNS: A New Framework for Non-negative Blind Source
Separation |

CAMNS stands for **Convex Analysis of Mixtures of Non-negative Sources**.
It is a new framework for non-negative blind source separation (nBSS), based on
convex analysis and optimization. CAMNS does not rely on the assumption of
independent (or uncorrelated) sources, the entrenched premise in many existing
BSS frameworks. Instead, CAMNS is based on deterministic assumptions, an
important one of which is ‘local dominance’ which is likely to be satisfied by
sparse or high-contrast sources.

Simply speaking there are two advantages with CAMNS: 1) theoretically it guarantees perfect separation of the sources (of course under the conditions that the underlying assumptions are satisfied); 2) it can be practically realized by solving a sequence of linear programs, the process of which does not suffer from local minima or maxima.

The theory and implementations of CAMNS are described in details in

[1] T.-H. Chan, W.-K. Ma, C.-Y. Chi, and Y. Wang, “A convex analysis framework for blind separation of non-negative sources,” vol. 56, no. 10, pp. 5120-5134, Oct. 2008.

Abridged versions of [1] can be found in

[2] T.-H. Chan, W.-K. Ma, C.-Y. Chi and Y. Wang, “A
convex analysis based criterion for blind separation of non-negative sources,”*IEEE
ICASSP-2007*, Honolulu, Hawaii, April 15-20, 2007, pp. 961-964.

[3] T.-H. Chan, W.-K. Ma, C.-Y. Chi and Y. Wang, “Blind
separation of non-negative sources by convex analysis: effective method using
linear programming,” *IEEE ICASSP-2008*, Las Vegas, Nevada, Mar. 31-
Apr. 4, 2008, pp. 3493-3496.

Matlab Source Codes for
CAMNS |

Our purpose of releasing our MATLAB source codes is to enable colleagues to verify, modify, or extend CAMNS without having to go through the details first. You are free to use these codes for non-commercial purpose.

Our CAMNS program package relies on a (also free) convex optimization software SeDuMi. Please install it on your computer if you don’t have one. The main function for the CAMNS program is:

- hS=CAMNS_LP(X,N): an algorithm implementing the CAMNS-LP method.
**X**is an M by L observation matrix, and**hS**is an N by L extracted source matrix.- M is the number of observations, N is the number of sources, and L is the number of data length.

**Example: Human face separation with 5 sources and 5 mixtures**

Here is a MATLAB example for human face separation. We take five 320 x 240 human face images to synthetically generate five observations and then apply CAMNS to extract the sources from these observations. For performance comparison, we also test two benchmarked nBSS algorithms, namely non-negative matrix factorization (NMF) [4] and non-negative independent component analysis (nICA) [5]. The results are as follows:

5 Human face images (sources) |

5 synthetic observed images |

5 extracted images obtained by CAMNS algorithm |

5 extracted images obtained by NMF algorithm |

5 extracted images obtained by nICA algorithm |

[4] D. Lee and H. S. Seung, “Learning the parts of objects by non-negative
matrix factorization,” *Nature*, vol. 401, pp. 788–791, Oct. 1999.

[5] M. D. Plumbley, “Algorithms for nonnegative independent component
analysis,” *IEEE Trans. Neural Networks*, vol. 14, no. 3, pp. 534-543,
May 2003.

Support |

The codes were developed by

Tsung-Han Chan, E-mail: ChanTsungHan@gmail.com

Wing-Kin Ma, E-mail: wkma@ieee.org

Chong-Yung Chi, E-mail: cychi@ee.nthu.edu.tw

Yue Wang, E-mail: yuewang@vt.edu