Blind source separation of fluorescence microscopy images using FastICA with BM3D denoising and ICASSO robustness validation.
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#E8F4FD', 'primaryBorderColor': '#7BA7C9', 'primaryTextColor': '#2C3E50', 'secondaryColor': '#FDF2E9', 'secondaryBorderColor': '#D4A574', 'secondaryTextColor': '#2C3E50', 'tertiaryColor': '#EAFAF1', 'tertiaryBorderColor': '#82C9A1', 'tertiaryTextColor': '#2C3E50', 'lineColor': '#5D6D7E', 'textColor': '#2C3E50', 'background': '#FFFFFF', 'mainBkg': '#E8F4FD', 'nodeBorder': '#7BA7C9', 'clusterBkg': '#F8F9FA', 'clusterBorder': '#BDC3C7', 'fontSize': '14px'}}}%%
graph LR
A[Mixed Fluorescence] --> B[Anscombe Transform]
B --> C[FastICA Separation]
C --> D[ICASSO Validation]
D --> E[BM3D Denoising]
E --> F[Separated Channels]
style A fill:#FDF2E9,stroke:#D4A574
style B fill:#E8F4FD,stroke:#7BA7C9
style C fill:#E8F4FD,stroke:#7BA7C9
style D fill:#E8F4FD,stroke:#7BA7C9
style E fill:#E8F4FD,stroke:#7BA7C9
style F fill:#EAFAF1,stroke:#82C9A1
In fluorescence microscopy, spectral overlap between fluorophores often produces mixed-channel images where signals from different biological structures bleed into the same acquisition channel. This is particularly problematic when imaging tissue treated with fluorescent drugs whose emission spectrum overlaps with endogenous fluorescence markers.
This MATLAB toolbox applies Independent Component Analysis (ICA) to blindly separate mixed fluorescence channels by maximizing the statistical independence of the recovered source signals. The pipeline supports two ICA backends: the standard FastICA algorithm and Arabica, a robust extension that incorporates bootstrapping for improved stability. An Anscombe variance-stabilizing transform is applied before separation to handle the Poisson-distributed photon noise characteristic of fluorescence imaging.
Post-separation, the BM3D (Block-Matching and 3D Filtering) algorithm denoises each recovered channel. ICASSO resampling analysis validates the robustness of the ICA decomposition by running multiple randomized restarts and clustering the resulting components to assess their reliability.
- FastICA and Arabica (robust FastICA) backends for blind source separation
- Anscombe variance-stabilizing transform for Poisson noise in fluorescence data
- BM3D denoising with inverse Anscombe transform for photon-noise-aware filtering
- ICASSO robustness analysis with configurable number of resampling iterations
- Test images from confocal microscopy stacks with known ground truth channels
- Visualization of separation results with and without denoising
# Clone the repository
git clone https://github.com/petteriTeikari/mixedImageSeparation.git
cd mixedImageSeparation
# In MATLAB, run the main separation script
matlab -r "run('main_separateMixedImages_fastICA.m')"The script loads test images from testImages/, performs ICA separation with optional BM3D denoising, and saves results to figuresOut/.
mixedImageSeparation/
├── main_separateMixedImages_fastICA.m # Main entry point
├── arabica/ # Arabica robust ICA toolbox
│ ├── arabica.m # Main Arabica interface
│ ├── ica/ # ICA estimation modules
│ │ └── fastica/ # Bundled FastICA implementation
│ ├── core/ # Core API utilities
│ └── core_modules/ # Pipeline modules
├── icasso122/ # ICASSO v1.22 reliability analysis
│ ├── icasso.m # Main ICASSO interface
│ ├── icassoEst.m # ICA estimation wrapper
│ ├── icassoCluster.m # Component clustering
│ └── icassoShow.m # Visualization
├── testImages/ # Sample fluorescence microscopy data
│ ├── *_ch2_clean.tif # Clean reference channel
│ ├── *_ch3_mixed.tif # Mixed channel (to separate)
│ └── *_ch1_noiseChannel.tif # Noise-dominated channel
└── figuresOut/ # Output visualizations
-
Hyvarinen, A. & Oja, E. (2000). Independent component analysis: algorithms and applications. Neural Networks, 13(4-5), 411-430. https://doi.org/10.1016/S0893-6080(00)00026-5
-
Bronstein, A.M., Bronstein, M.M., Zibulevsky, M. & Zeevi, Y.Y. (2005). Sparse ICA for blind separation of transmitted and reflected images. Int. J. Imaging Syst. Technol., 15(2), 84-91. https://doi.org/10.1002/ima.20042
-
Shlens, J. (2014). A Tutorial on Independent Component Analysis. arXiv:1404.2986. https://arxiv.org/abs/1404.2986
-
Reyhani, N., Ylipaavalniemi, J., Vigario, R. & Oja, E. (2012). Consistency and asymptotic normality of FastICA and bootstrap FastICA. Signal Processing, 92(7), 1767-1778. https://doi.org/10.1016/j.sigpro.2011.11.025
- FastICA for MATLAB 7.x/6.x (v2.5, 2005): Copyright Hugo Gavert, Jarmo Hurri, Jaakko Sarela, and Aapo Hyvarinen
- Arabica Toolbox (v1.0, 2008): Copyright 2003-2009 Jarkko Ylipaavalniemi, GPLv3+
- ICASSO (v1.22): Johan Himberg, Aalto University
MIT