BIOF350 Project: Automated Tracing of Retinal Axons

Here is an overview of the project in poster form

Due Dates

Method (20%): October 21
Proof-of-concept (20%): November 11
Presentation (30%): December 2
Final Version (30%): December 9

Explanation of your Method

A pseudocode version of your algorithm is due at lab on October 21. We will review these in lab, and I will give you my opinion of what challenges your method will likely face. Include enough detail to begin coding right away (specific thresholds if you need them, etc).

Proof of Concept

By November 11, your program should "work" in some sense, although it will likely need significant improvement. So it should be able to follow an axon (perhaps carefully picked) over at least part of its length. Since the final goal is to follow any axon the user selects, the goal of following a carefully-selected axon is much easier to meet.


Teams of up to three people are allowed. You do not have to be on a team if you prefer to design a solution yourself. All team members will receive the same grade on the project, so if you choose to partner with others, be careful who you choose. I will not make any attempt to determine the relative contribution of each team member.

Programming Languages

Any programming language is fine. But, remember that the image stack is very large! In particular, this can cause trouble in processing, which automatically converts images to RGBA. Because of this, the whole image stack may not fit in RAM even on the MLH 310 computers.
You can start by using CASTER if you like, which is written in Processing. This provides a test framework. If you would prefer a C++ GPU-accelerated framework, you are welcome to start with the 3d_stack demo. I suggest only using this route if you have some experience programming graphics processors (CS492, or something else). The framework is written using Vulkan in order to support the GeForce RTX, but the shaders work nearly the same was as OpenGL, and the Vulkan-specific code is already written. You do not have to use either of these options if you'd prefer to start with a clean slate.

Final Version and Presentation

You will have to explain how well your method worked. If the method worked badly, explain ways you attempted to improve it or solve the various problems encountered so that it would work. Not all methods are equal, but determining a method does not work requires a reasonable effort to determine why, and solve any problems which occur. I do not expect any of the methods will work without significant tinkering.