As a biomedical user (student/researcher), I want to be able to use a “point-and-click” and simple GUI to update user settings and compute head circumference from a single, but occasionally multiple, MRI image(s) to assist with research.
As a user with developer experience, I want to be able to use the command line to process a batch of images one after the other for convenience.
As a user with developer experience, I want to be able to use the command line to update multiple user settings for convenience.
As a future maintainer of this work, I want the tool to be documented, extensible, and open source so that it can be improved easily.
As any type of user, I want the tool to output a text file with head circumference measurements to assist with research.
As any type of user, I want the tool to output a log of user choices in an easily parsable format (i.e. JSON) so that I have a reproducible history of my work.
Requirements
Functional
Definite
The application will correctly compute head circumference from an MRI image.
The user can input MRI images in NRRD/NIfTI file formats using a file menu.
The user can reorient/rotate the image.
The user can process a batch of images using CLI.
The user can interact with the GUI to perform the computation on a single image.
In addition to modifying settings interactively via GUI, the user can load program settings from a JSON file.
The program will output a text file with head circumference measurements.
The text file will be easily importable into a statistics tool (e.g. CSV or TSV format).
The program will output a log of user choices in an easily parsable format (e.g. JSON).
Perhaps
The user can use sliders to reorient/rotate the image.
Slider rotations will be interactive (real-time rotation).
The GUI will display an information panel containing information about user choices, name of file, image resolution, etc.
Improbable
The program will apply the Fourier transform for contour smoothing.
Non-functional
Definite
The project will be open source.
The GUI will be easy to use for non-technical users.
The program will provide users with specific test cases and expected results.
There will be clear documentation for the program.
The program will be maintainable and extensible.
Perhaps
There will be an executable file/package (e.g. .exe, .app) for running the program.