Thibault North

fr | de

2015 - Raytracer

A non-sequential ray-tracing application written in pure C, and taking advantage of the refractive index database, thereby enabling the use of many optical surfaces.

3D raytracing Octree

Left: raytracing in a biconvex lens, right: octree data structure for ray-surface intersections.

Source code to be available soon under a non-restrictive licence.

2014 - Pulse propagation in nonlinear fibers

GPU implementation with PyOpenCL / reikna

Python implementation of pulse propagation in non-linear optical fibers with the Split-Step Fourier method, as well as for the Runge-Kutta in the Interaction Picture method. Speedup: 30x (double precision), 178x (single precision), with a GeForce GTX 550Ti

Computation times for various methods

(GPU SP: Single point operations on the GPU. CPU, numexpr: usage of the numexpr expression evalutor)

PyQtGraph user interface

Pulse propagation (time, frequency) Pulse spectrogram

Uses UNIX sockets to fetch results from simulations running on multiple machines.

2014 - Timelapse deflickering / various photo scripts

Scripts written in Python with scikit-image for various operation on timelapse shots.

2013 - Optical Bragg grating fetching from O-Eland

This script allows the user to search for Bragg gratings satisfying a set given condition on the O-Eland website, which contains large HTML pages of wavelength-sorted gratings.

Usage: python gratings.py

The optional URL is the page address, i.e. http://www.o-eland.com/FBG%20Inventory/FiberGrating_Uniform2000.htm

By default, the list of 1500-1599nm uniform gratings products is selected.

Once the page parsing is finished, the user can find gratings based on 4 conditions: - 'bw' : its 3dB bandwidth - 'wl' : its central wavelength - 'ref': its reflectivity in % - 'l' : its fiber length

Sorting can be achieved by adding a separated '|' sign, followed by the sorting column(s)

Example:

0.1 < bw < 0.15 and wl > 1580 | ref bw

15-021-0-60392  1590.13 46.3    0.14    1.0
15-026-5-5878   1594.206        76.4    0.13    1.5
15-026-5-5877   1594.259        81.3    0.13    1.5
15-034-3-7534   1595.064        88.9    0.134   1.5
15-022-2-8446   1594.985        96.5    0.14    1.5
15-022-2-8449   1595.031        97.9    0.14    1.5
15-052-1-p7834  1588.844        99.3    0.13    1.5
15-065-0-60591  1584.92 99.9    0.11    1.0

2012-06 - Contributions to Poole, website generator

Poole runs this website. An extension was written to support as many languages as desired.

Also, a tiny extension computing the size of files to be downloaded was implemented.

2012-05 - Photomerge

Photomerge is a very small multi-threaded C application which simply aims at merging pictures. It is written for POSIX OSes, and depends on libjpeg. It takes the maximum value of any pixel from the given set of pictures, and outputs the final image to a jpeg file.

Usage:

./photomerge *.JPG results in a file called result.jpg

Merge of sky images

2012 - Booking tools

During my time at the Photonic System Laboratory, equippement had to be booked to be used. This command line interface allows a registered user to browse existing reservations and add its own.

Also, a daemon mode is provided. In this mode, one or more items can be chosen for a given date. Items available will be booked immediately for the specified dates. Items that are currently busy will be polled for availability, and booked immediately if possible, and and e-mail will be send for confirmation.

usage: ping.py [-h] [--pattern PATTERN [PATTERN ...]] [--date-incr DATE_INCR]
    [--daemon] [--dates DATES [DATES ...]]
    [--sleep-time SLEEP_TIME] [--auto-book AUTO_BOOK]

optional arguments:
-h, --help            show this help message and exit
--pattern PATTERN [PATTERN ...]
            Pattern matching a device
--date-incr DATE_INCR
            Start date increment in days
--daemon              Start as daemon with the specified pattern
--dates DATES [DATES ...]
            Start and end date
--sleep-time SLEEP_TIME
            Daemon sleep time in seconds
--auto-book AUTO_BOOK
            Autobook devices of --pattern when available

2010 - Dijkstra's shortest-path in 3D images

An extension of the previous algorithm when each pixel has 27 neighbours in an image stack. Code written in C, available soon.

2009 - Analysis of retina images, vessel detection

Blood vessels in a retina image Adaptation to labyrinth solving

The C implementation also features multi-scale shortest-path search:

Multi-resolution approach Benchmark

2009 - Bachelor thesis, Vascular Morphology Index

Following blood vessels

2007 - ASAP (Asap is Simply an Avr Project)

Project with Jean G. Conception of plateform composed of an AVR microchip from Atmel (ATMega644) clocked at 20MHz. Extension board for 3D accelerometers as well as for serial (RS232) interface were conceived.

AVR module Complementary modules

Code written in C to drive servos (PWM), to parse NMEA data from a Garmin GPS, and to fetch values from the accelerometers.