These scripts were used to obtained the results reported in a research paper. They were divided into two parts, and respectively correspond to two workflows, which are detailed in README.
Quantifying multi-scattering-induced image degradation via no-reference methods.
- Preprocessing of NIR transillumination images (16-bit grayscale).
- Extracting metrics from image intensity profiles,
including FWHM, signal‑to‑background ratio (SBR), contrast‑to‑noise ratio (CNR), radial entropy and Gini coefficient. - Custom tools for results visualisation.
Herein, the spectral data was obtained via Multi-layer Monte Carlo simulation.
- Preprocessing of transmission spectra (SNV and Savitzky‑Golay derivative).
- Statistical significant testing (Welch's t‑test with FDR correction) across NIR wavebands (650-1200 nm).
- Machine learning classification using SVM and PLS‑SVM with cross‑validation.
- Conducting ablation on spectral datasets in terms of signal-to-noise ratio and wavelength channels.
- Visualising the results of univariate and multivariate analysis.
Both the workflows were used to evaluate the imaging performance under the illumination of difference light sources (broadband and high-radiance) and other universal parameters.
├── work_1
│ ├── main.mlx
│ ├── eliminateOutliers.m
│ ├── extractMetrics.m
│ ├── calculateCNR.m
│ ├── radEntropy.m
│ ├── showBubbleChart.m
│ ├── Display.m
│ ├── denseColormap.m
│ └── truncAxis.m
│
├── work_2
│ ├── MCML
│ ├── simOneCW.m
│ ├── mcTest.m
│ ├── runDatasets.m
│ ├── opticalPara.m
│ ├── srcPara.m
│ ├── tissueModel.m
│ ├── detPhotonW.m
│ ├── skinTissue.xlsx
│ └── spectra.xlsx
│ ├── uvAnalysis
│ ├── main.m
│ ├── specttest.m
│ ├── SNV.m
│ ├── SGDeriv.m
│ ├── transSpec.m
│ ├── MSC.m
│ └── AsLSDetrend.m
│ ├── mvAnalysis
│ ├── utils_Funs.py
│ └── Task.py
│ └── data
│
├── mcxlab.zip
│
└── README.md
- Python 3.9+
- Required packages
numpyscipypandasmatplotlibscikit-learnopenpyxl
- MATLAB R2023b or newer.
- mcxlab from Monte Carlo eXtreme (MCX) v2025 (https://mcx.space/wiki/?Get)
All MATLAB functions are implemented without reliance on proprietary toolboxes.
- In these scripts (such as the main functions), set the directory-relevant variables to point to yours.
- Add the unzipped folder path of mcxlab package (including its subfolders) into your MATLAB path.
- Uncomment part of the sections in Task.py to run shot‑noise simulations or discrete waveband selection experiments.
This project is released under the MIT License. See the LICENSE file for details.
This project makes use of Monte Carlo eXtreme (MCX) software package for photon transport simulation.
We appreciate the developers of the open-source project that support experiment conduction in this research.
- MCX is developed by Qianqian Fang and contributors.
- Copyright (c) 2009-2025 Qianqian Fang <q.fang at neu.edu>
- MCX is released under the GNU General Public License v3.0 (GPLv3).
- Source code and documentation are available at: https://github.com/fangq/mcx
- For academic citations, please refer to the official MCX citation guidelines.