User API

The methods in qpsphere for determining radius and refractive index of spherical objects from quantitative phase images can be divided into edge-based (qpsphere.edgefit) and image-based (qpsphere.imagefit). The method qpsphere.analyze() combines both in a user-convenient interface.

Basic usage

The high-level API of qpsphere heavily relies on qpimage for accessing meta data to convert in-between units (e.g. pixel size in meters). If the experimental data file format is supported by qpformat, this leads to particularly clean and simple code;

import qpformat
import qpsphere

# load an experimental data set
ds = qpformat.load_data(path="path/to/data_file",
                        # set pixel size in meters
                        meta_data={"pixel size": .12e-6}
# get QPImage instance (also contains meta data, e.g. pixel size)
qpi_sensor = ds.get_qpimage()
# obtain the region of interest containing a spherical object
qpi_object = qpi_sensor[100:300, 50:250]
# determine the refractive index and radius of the object
n, r = qpsphere.analyze(qpi=qpi_object,
                        # estimate of the object's radius in meters
                        # OPD edge-detection approach
                        # OPD projection model

where n is the average refractive index (RI) and r is the radius of the object in meters estimated by the optical path difference (OPD) edge-detection approach.

Choosing method and model

Although the OPD edge-detection approach is fast, it is inaccurate because it is resolution-dependent and because it approximates light scattering by an integral over the RI along straight lines. Higher accuracy can be achieved by fitting a 2D model to the experimental phase image. When setting method="image" in the example above, the following models are available:

  • “mie”: a full Mie model (very slow)

  • “mie-avg”: a polarization-averaged Mie model (faster than “mie”)

  • “projection”: an OPD projection model

  • “rytov”: the Rytov approximation

  • “rytov-sc”: the systematically corrected Rytov approximation

A comparison of these models can be found in [MSG+18].