MRI Volume Slice - Project Spotlight

My engineering honours thesis back in 2014 was in visual neuroscience. I worked a lot with MRI brain images as a technique called retinotopic mapping is a big tool in this field. Specifically for my thesis, I was looking for novel ways to automatically segment different brain tissue from a specific type of brain data (functional MRI data). That aside, it means I have quite an affinity towards MRI data. A typical display across many different tools that deal with brain data is a 3-window view, where each window slices the brain data across a different axis - X, Y and Z. Clicking inside one of the windows affects which slice the other two windows are showing. It's hard to describe and is easier to understand by playing around with it.

I am really proud of this little project. Partly because I'm still surprised at how responsive it is even though it's manipulating quite a large amount of data on the fly (about 20mb), but also because I built it while on holidays just a few months after I had started my first developer job. At the time, I was still most comfortable with vanilla-js and as such, there's no framework for this simple app. I think this is still mostly appropriate, especially because of its small scope and because it makes such heavy use of canvas though I am often tempted to write a React wrapper for it.

One of the most interesting challenges with this project was dealing with the 3D data and being able to grab a "slice" of the image from multiple axes. One of the things that makes it interesting is the data comes in one big flat array and I specifically chose to keep it in this format and write my own abstractions to get the data I needed for any given slice.

I also took full advantage of Hacktober-Fest (2018) and got a number of people to work on the project. While I wrote the core of the app that dealt with the data, many of the UI elements such as the loading bar, the upload field and the fetching of initial data was contributed to the project by others. For someone so new to dev work it was a great learning experience, writing up issues to be tackled by a random developer, as well as the review process for when dealing with people I didn't know but still wanting to keep a high standard of the repo. Honestly though, it wasn't hard as I had a number a great people contributing and a few that came back for more because they enjoyed it so much.

As a closing note, the data you see in the app is from OpenNeuro, a database of publically available neuroimaging data provided by researchers. This is not the only website that fosters open-science around brain data, but I think it's pretty neat that this data is available for someone like me to mess around with. (Note the face has been removed from the data set for privacy reasons).


The Repo
The App


Did you know you can get Electronic-Mail sent to your inter-web inbox, for FREE !?!?
You should stay up-to-date with my work by signing up below.