Skip to content
← Back to Blog

Inverse Methods for Spectroscopic OCT: A Practical Guide

· technical · 4 min read

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.

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 forward model relates the measured spectral interference signal to the tissue’s optical properties — specifically the scattering coefficient and the absorption coefficient . This work builds on our Spectroscopic IV-OCT project.

In its simplest form, the detected signal from a single scatterer at depth can be written as:

where is the source spectrum, is the local reflectivity, and is the total attenuation coefficient. The factor of 2 accounts for the double-pass geometry inherent to OCT.

The Inverse Problem

Extracting and from the measured signal is an ill-posed inverse problem. The key challenges include:

  1. Depth-dependent attenuation — the signal at depth is coupled to all tissue above it
  2. Spectral mixing — scattering and absorption both contribute to
  3. Noise amplification — direct inversion amplifies measurement noise exponentially with depth

Tikhonov Regularization

The standard approach is to minimize a regularized objective:

where is the forward operator, is the measured data, is a regularization matrix (often the identity or a finite-difference operator), and is the regularization parameter.

The choice of is criticalThe 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 –.

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 .
. Too large, and the solution is over-smoothed; too small, and noise dominates. We use the L-curve method to select automatically by finding the corner of the trade-off curve between and .

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

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

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