Skip to content
This repository was archived by the owner on Feb 16, 2026. It is now read-only.

FastICA blind source separation for microscopy images with BM3D denoising and ICASSO robustness analysis

License

Notifications You must be signed in to change notification settings

petteriTeikari/mixedImageSeparation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mixed Image Separation

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
Loading

Overview

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.

Key Features

  • 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

Quick Start

# 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/.

Project Structure

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

References

  1. 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

  2. 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

  3. Shlens, J. (2014). A Tutorial on Independent Component Analysis. arXiv:1404.2986. https://arxiv.org/abs/1404.2986

  4. 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

Third-Party Components

  • 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

License

MIT

About

FastICA blind source separation for microscopy images with BM3D denoising and ICASSO robustness analysis

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages