Inverse Methods for Spectroscopic OCT: A Practical Guide
The Forward Problem
Spectroscopic optical coherence tomography (S-OCT) measures the wavelength-dependent backscatter from tissueS-OCT is distinct from conventional OCT in that it resolves wavelength-dependent tissue properties rather than producing purely structural images. The spectroscopic analysis is performed in the short-time Fourier transform domain, trading axial resolution for spectral resolution.
In its simplest form, the detected signal from a single scatterer at depth
where
The Inverse Problem
Extracting
- Depth-dependent attenuation — the signal at depth
is coupled to all tissue above it - Spectral mixing — scattering and absorption both contribute to
- Noise amplification — direct inversion amplifies measurement noise exponentially with depth
Tikhonov Regularization
The standard approach is to minimize a regularized objective:
where
The choice of
Implementation Notes
The core solver is implemented in MATLAB using a custom iterative scheme. Here’s a simplified version of the depth-resolved spectral fitting:
function [mu_s, mu_a] = spectral_fit(signal, wavelengths, depth_axis, alpha)
% Construct forward operator A for each depth
N_z = length(depth_axis);
N_lambda = length(wavelengths);
for iz = 1:N_z
A = build_forward_operator(wavelengths, depth_axis(1:iz));
b = log(signal(:, iz) ./ signal(:, 1));
% Tikhonov solve with L-curve selection
[mu_t(:, iz), ~] = tikhonov_solve(A, b, alpha);
end
% Separate scattering and absorption via spectral model
[mu_s, mu_a] = decompose_attenuation(mu_t, wavelengths);
end
For Python users, the equivalent can be written with NumPy and SciPy:
import numpy as np
from scipy.optimize import minimize
def spectral_fit(signal: np.ndarray, wavelengths: np.ndarray, alpha: float):
"""Depth-resolved spectral fitting with Tikhonov regularization."""
n_wavelengths, n_depths = signal.shape
mu_t = np.zeros_like(signal)
for iz in range(1, n_depths):
A = build_forward_operator(wavelengths, iz)
b = np.log(signal[:, iz] / signal[:, 0])
# Closed-form Tikhonov solution
mu_t[:, iz] = np.linalg.solve(
A.T @ A + alpha * np.eye(A.shape[1]),
A.T @ b
)
return mu_t
Results and Future Directions
Our inverse algorithm achieves spectral reconstruction with relative error below 5% for tissue phantoms with known optical properties. The key insight is that joint regularization across wavelengths outperforms independent per-wavelength fitting — the spectral smoothness of biological chromophores provides a powerful physical prior.
Next steps include extending the framework to handle multiple scattering via a diffusion approximation correction term, and integrating physics-informed neural networks for learned regularization. The energy functional becomes:
where the second term enforces the diffusion equation as a physics constraint.
Footnotes
-
S-OCT is distinct from conventional OCT in that it resolves wavelength-dependent tissue properties rather than producing purely structural images. The spectroscopic analysis is performed in the short-time Fourier transform domain, trading axial resolution for spectral resolution.↩
-
The regularization parameter can also be selected via generalized cross-validation (GCV) or the discrepancy principle. In practice, L-curve tends to perform best for our problem because the forward operator is moderately ill-conditioned with condition numbers typically in the range
– .↩
Linked from
- Why Physicists Should Build Medical Instruments
[^1]: For a detailed treatment of the resolution–bandwidth trade-off, see the mathematical framework in my practical guide to inverse spectroscopic…