[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
 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  can be found in
 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.
 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:
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)  and non-negative independent component analysis (nICA) . 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
 D. Lee and H. S. Seung, “Learning the parts of objects by non-negative matrix factorization,” Nature, vol. 401, pp. 788–791, Oct. 1999.
 M. D. Plumbley, “Algorithms for nonnegative independent component analysis,” IEEE Trans. Neural Networks, vol. 14, no. 3, pp. 534-543, May 2003.
The codes were developed by
Tsung-Han Chan, E-mail: ChanTsungHan@gmail.com
Wing-Kin Ma, E-mail: firstname.lastname@example.org
Chong-Yung Chi, E-mail: email@example.com
Yue Wang, E-mail: firstname.lastname@example.org