Blind Source Separation: Theory and Applications