Most of the medical images (e.g. CT, MRI, PET, etc.) comprises multiple frames
which represent slices, phases, timing etc. from the same imaging object. With the
powerful support of multidimensional data representation, those images can be saved
as multidimensional matrices in Matlab. However, within Matlab, most of
image manipulation functions are limited or tailored for two-dimensional
matrix. The MatrixUser is a matrix analysis software package which features
functions designed and optimized specifically for manipulating multidimensional
real or complex data matrix. Within a nice graphical representation, image
analysis including multidimensional matrix display, matrix (image stack)
processing and rendering can be conveniently accomplished with minimum
efforts.
The current MatrixUser version (v2.1) is made available at SourceForge website.
MatrixUser is released as a free software. This means that you are free to use and
modify this software as your needs, as long as you acknowledge the original author in
any future work. If you find MatrixUser useful for the publication of any scientific
results, including a line in your acknowledgments section referencing to MatrixUser
and this belowing address is requested.
MatrixUser downloading address:
To run MatrixUser, a Matlab installment is required. The current MatrixUser version has been tested under the following Matlab versions:
Installing and running MatrixUser is easy, you just need to download MatrixUser
source code which is distributed as a compressed file, then extract the MatrixUser
root folder, put the folder to any location in you computer. To run MatrixUser, start
Matlab, then simply run the ‘Main.m’ script under the MatrixUser root folder.
The MatrixUser main window (Figure 1) works as a matrix manager.
Current MatrixUser version supports displaying any valid Matlab multi-dimensional matrix and Matlab structure variable. By default, MatrixUser reads Matlab base workspace, scans existing matrices in the Matlab session, then creates a matrix list for tracking matrix content. Once those matrices are updated by the user, MatrixUser will also update the matrix list. Moreover, there are several different approaches to import data from outside Matlab into MatrixUser. The imported matrices will be saved into Matlab base workspace. The import functions are located under ‘Load’ menu, including:
The default Matlab .mat file is natively supported by MatrixUser.
If image content exists in the system clipboard, it can be converted into a RGB image which contains a three slice matrix with each slice corresponds to the individual Red, Green and Blue channel.
MatrixUser takes a full screenshot for current monitor and saves it into a RGB image as described above.
Binary data file is supported by MatrixUser. The user needs to properly configure loading parameters (Figure 2) according to the matrix size and data type information.
MatrixUser supports loading multiple DICOM files by using a file filter interface (Figure 3). The user needs to load DICOM files into the loading interface by selecting desired DICOM files (multiple selection supported). The selected files are listed in the DICOM file list. The user can click any single DICOM file to read associated DICOM header and image preview. To manually create a matrix using DICOM files, choose files from the DICOM file list, press ‘>>>>>>’ to push the files into selected DICOM file list, provide a matrix name, press ‘Convert’ button to create a matrix based on chosen DICOM files. The user can load those created matrices into base workspace by pressing ‘Load matrix’ button.
MatrixUser supports loading DICOM files in a batch mode. This function requires the path of the folder containing DICOM files is provided. MatrixUser will try to create separate matrices for DICOM files coming from different image series. A matrix selection interface will provide converted matrices with loading functions.
NIfTI file with .nii suffix is supported by MatrixUser.
To activate MatrixUser display window, press ‘MatrixUser’ button. If the selected matrix contains complex value, four options are available for displaying magnitude, phase, real and imaginary of the matrix. Figure 4 demonstrates an overview of the window layout of the MatrixUser display window. The window consists of
Matlab toolbar provides basic interactive functions for displaying matrix. These functions include:
Most of the matrix analysis functions are represented on function bench panel. MatrixUser groups these functions into categories and dynamically loads them according to the dimension size and compatibility of current display matrix. A multi-tab is used to contain individual function button associated with each function. The tabs under the multi-tab are used to switch between function categories, which include
The matrix calculator consists of three control items, including a matrix expression editbox, an execution button ( ) and a matrix saving button ( ). Valid matrix calculation expression can be executed in the calculator and updated in the display window, serving as a convenient way to analyze matrix calculation result. Matrix concatenation and recombination can also be done in the calculator, for example, to side-by-side compare multiple 3D matrices (Figure 5). Some valid calculation examples are, but not limited to:
where A, B, C and D are multi-dimensional matrices with proper matrix size. Also note that the source matrices have to stay in the base workspace for being referenced. Pressing the execution button will perform the calculation and save the result as a temporary matrix. The user can also save the temporary matrix into workspace by pressing matrix saving button. The saved temporary matrix will have a ‘_tmp’ suffix by default.
The display axes renders an image for one slice of current matrix. The user can use mouse cursor to inspect the coordinate and value of any voxel. Moving mouse wheel back and forth moves the slice location along current dimension and updates the display axes.
The matrix color control group provides a set of sliders, editboxes and popup menu which help control image color scheme and contrast. This group consists of
MatrixUser measures the dimension size of the display matrix and assigns one slider and editbox for each dimension that is above 2 (i.e. no slider and editbox for the first and second dimension). These control items are located in individual dimension tab and can be used to switch among slices in current active dimension.
Matrix display functions are listed under this tab.
This function category performs quick math calculation for current matrix. A few commonly used math calculation are provided under this tab. Instead, complex calculation can be performed using matrix calculator as mentioned above.
This function category performs spatial transformation or fast Fourier transform (FFT) to current matrix.
This function category performs basic matrix processing functions.
MatrixUser provides a set of function buttons for performing Region-of-Interest (ROI) analysis (Figure 14). To create a ROI, the user needs to click ROI button first, then draw a ROI on the image axes. The statistical measures (i.e. mean, standard deviation and relative standard deviation) for voxels in delineated ROI is calculated and updated with moving ROI position or changing ROI shape. The ROI function buttons consists of
MatrixUser supports functions for performing multi-slice manual segmentation. To create a segmentation, click segmentation button, then draw a region on the image axes. The user can modify the region location and shape prior to confirming segmentation with double click. The segmentation buttons consists of
To edit segmented region (Figure 16), press to open a segmentation manager. The manager records the type and location for existing segmented regions. The user can click any region item to inspect the location of the region. To edit chosen region, click ‘Edit’ button to activate the region outline. Both the shape and mask flag are editable for segmented region. After editing, click ‘Update’ to conform modification. The user can press to save current segmentation into a MAT file which contains a mask matrix and a cell array storing segmentation location information. The user can also press to save the mask matrix into workspace. Pressing can load previous segmented regions from a saved MAT file. Notice that the user can press to remove segmentation from overlapping with background matrix.
This function category generates surface or mesh plot for current image.
Matlab default image tools (Figure 17) are tailored for MatrixUser and included in this category.
Uncategorized functions are categorized under this tab.