Applied Optics Group

Featured story

Software Downloads

PyFibreBundle – Fibre Bundle Image Processing Library  (Python)

Michael Hughes, Actively Maintained

PyFibreBundle is a Python library for image processing of fibre bundle images. It includes functions for locating, cropping and masking the fibre, filtering and triangular linear interpolation to remove fibre cores, mosaicing and super-resolution by bundle shifting. Latest stable release is v1.0.0. Contributions on Github welcome.

Pip: pip install pyfibrebundle

User Guide:




Michael Hughes, Actively Maintained

PyHoloscope is a python library for holographic microscopy, include off-axis and inline. It is currently under development and not fully documented. The latest version can be downloaded from Github. Contributions on Github welcome.




Michael Hughes, Actively Maintained

ImageDisplayQT is a widget for PyQT GUIs for fast and convenient display of live scientific images (such as a feed from a microscope).  Features zoom and pan, pixel inspection, region of interest and easy-to-use overlays. Contributions on Github welcome.

Pip: pip install ImageDisplayQT




Fibre LP Mode Solver and Simulator (Matlab)

Michael Hughes, Last Updated June 2020

This library solves the eigenvalue equation for a step-index fibre under the weakly-guided, linear polarisation approximation, generating propagation constants and other parameters, including power in core, for each of the supported LP modes. (The solution is only valid for small fibre numerical apertures with step index profiles.) Mode amplitudes and intensities can be plotted, and arbitrary input fields can be coupled into the fibre, allowing the coupling efficiency and power in each mode to be calculated. The fields can be propagated along an arbitrary length of fibre.

User Guide: Fibre LP Mode Solver and Simulator Readme


Fibre Bundle Simulator (Matlab)

Michael Hughes, Last Updated April 2020

Fibre Bundle Simulator (Matlab) allows image acquisition through a fibre images to be simulated. The simulation does not model multimodal behaviour of the fibre cores, instead each core is modelled as a 2D intensity function such as a circle or Gaussian. The fibre bundle parameters are defined using make_bundle and the distal object is sampled using sample_with_bundle. An image of the proximal face of the bundle is then obtained using project_cores. Alternatively, to quickly create an image, generate_bundle_image performs both of these functions.

User Guide: Fibre Bundle Simulator Notes


Fibre Bundle Core Removal by Interpolation (Matlab)

Michael Hughes, Last Updated April 2020, No longer maintained

Removes core pattern in fibre bundle images by triangular linear interpolation. Calibration requires identifying location of each core, and so all images must be clearly resolved. Method is slower than simple spatial filtering but can deal better with broken cores or more complex reconstruction schemes (super-resolution etc.). It also may work better for coherent imaging where simple filtering does not preserve integrated intensity for each core. This code is not longer maintained as we have migrated to Python (see PyFibreBundle).

User Guide: Bundle Image Interpolation Notes


Fibre Bundle Inline Holography (Matlab)

Michael Hughes, Last Updated June 2020, Permanently Archived

This figshare collection from our paper on inline holographic microscopy through fibre imaging bundles contains MATLAB code and example data for pre-processing and numerical refocusing of inline holograms captured through a fibre imaging bundle. Please see the paper on Arxiv or in Applied Optics for full details. This code is not longer maintained as we have migrated to Python (see PyHoloscope and PyFibreBundle).



LightCrafter 3000 Interface (Matlab)

Michael Hughes, Updated 2018

DLPMat provides a Matlab class with methods for interacting with the Texas Instruments LightCrafter DLP. It has been tested with a device using the DM365 Controller. As of the current version, most (but not all) write commands are implemented, but no read commands are implemented. Communications are via a TCP/IP interface. Please consult the DM365 Command Interface Guide for general information about controlling the LightCrafter and a full list of commands.

User Guide: DLPMat User Guide


Dynalog File Analyser (Matlab)

Michael Hughes, Last Updated 2011, Not Maintained

A set of functions for Octave/Matlab (developed for Octave v3.2.4, but should run under Matlab with minimal modification.) They can be used to interrogate dynalog files generated by the Varian Clinac 4D Radiotherapy Treatment System and generate, among other things, fluence maps. The functions were written as part of a project on quality assurance in 2011 and may not function with more up-to-date systems. There is no GUI, the user will require a working knowledge of matlab/octave and a general understanding of dynalog files. For applications, see how the code has been used in several third-party publications such as “Evaluation of MLC leaf positioning accuracy for static and dynamic IMRT treatments using DAVID in vivo dosimetric system” and “Using Bespoke Matlab Software for the Collection and Processing of Dynalog Files from the Varian Millennium 120 MLC system following delivery of Intensity Modulated Fields“.  No further updates are planned.

User Guide: Dynalog File Analyser User Notes