Search This Blog

Tuesday, November 11, 2014

FireVoxel Build 162 is released.



1. Re-engineered the "VolDisplay.cpp"  
2. Implemented the "MainMenu>Projection>Active Layer: Project to single slice volume"
3. Corrected the Layer arithmetic operations  AbsDifference and TruncatedDifference.
4. Layer control dialog:  increased the spacing between the layers name.
5. Added function to measure difference between two SulciPrint2D in Binary Mode.
6. Added function for SulciPrint2D difference in "Depth mode".
7. Added one-step function  "View SulciPrint  (2D\3D) in Binary Mode"
8. Added one step function to view SulciPrint 2D\3D in "Depth mode".
9. Greatly simplified entire "BrainPrint>SulciPrint" workflow putting all the function as ONE-STEP commands under the single menu.
Greatly simplified entire "BrainPrint>SulciPrint" workflow putting all the function as ONE-STEP commands under the single menu.


Added one step function to view SulciPrint 2D\3D in "Depth mode".
Added one-step function  "View SulciPrint  (2D\3D) in Binary Mode"
Added function for SulciPrint2D difference in "Depth mode"

Depth difference map:   units are in 0.01 mm

Added function to measure difference between two SulciPrint2D in Binary Mode.  Measure on the Test-Retest pair, the mismatch is 8% of all surface voxels.


Monday, November 10, 2014

Comparing the volume obtained from Yulin to the Hydrocephallus. Patient 6.


Layer control dialog:  increased the spacing between the layers name, so swapping the layer position is easier now.
Layer arithmetic operations  AbsDifference and TruncatedDifference: made corrections so they perform properly.
1.  SulciPrint2D for Test-Retest pair was produced.
2.  abs(SulcalDepthA(x,y,z)-SulcalDepthB(x,y,z) map was calculated.
3.  Average difference over the Sulcal surface voxels, not including Gyri, was only 0.7 mm.

Sulcal Depth DIFFERENCE map between test retest.  Histogram of the difference values in (0.01mm)






SulciPrint test for the "Test-Retest" pair dataset.

a) BrainMasks were produced using (BiCal+EdgeWave)
b) BrainMasks for test & retest were registered, in binary mode,
using URAl-AutoFocus3D.
c) SulciPrint3D and SulciPrintAxial2D were produced.

Quality of registration is NOT sufficient to simply subtract the SulciPrintAxial2D, but result looks promising.  Working on improving the registration.


Implemented the "MainMenu>Projection>Active Layer: Project to single slice volume"
Re-engineered the "VolDisplay.cpp"   c\c++ module.

Sunday, November 9, 2014

FireVoxel  Build 161 is released.
Liver DCDI Blood Vessel segmentation mini-workflow:  added additional diagnostic regarding the number of required layers.
Fixed crash defect in Blood Vessel segmentation mini-workflow.  Improved the ABT subtest to catch this kind of errors in the future.

Saturday, November 8, 2014

Friday, November 7, 2014

"Process All ROIs as single TACs" instructions:
a) In Layer Control dialog, select the main 4D Volume to be active, not one of ROIs.  This way all ROIs are considered "equal" and would be
processed in the same fashion.
b) Only Enabled ROIs would be processed.  (Enable\Disable layers by pressing the transparency button next to their name in the Layer Control Dialog.

Thursday, November 6, 2014

FireVoxel Build 159 is released:

1. BiCal field:  change the final normalization from the Average Field=1, to Integral of signal remain constant.
2. "ROI Split by Threshold" dialog:  expanded functionality so the ROI is not required, in which case the entire volume is thresholded.
3. "Split ROI by threshold" menu command - expanded to include 3 options for the initial segmentation:  Split by specified Threshold, Split by the portion (50/50), By adaptive split of the histogram
4. "Split ROI by Threshold" functionality - last accepted threshold setting is now remembered.
5. BiCal dialog box:  added a "Determine" button for the "Air Threshold" parameter.  
6. Dynamic Processing Framework:  implemented a new option to process ALL presents ROIs as single TACs.

7. Corrected the defect with using Paintbrush over the "Signal-intensity" volumes.
Corrected the defect with using Paintbrush over the "Signal-intensity" volumes.

Wednesday, November 5, 2014

Dynamic Processing Framework:  implemented a new option to process ALL presents ROIs as single TACs. This is convenient when numerous (10+) ROIs are present and have to be processed.


Calculated parametric information is copied to clipboard in the following format:


Tuesday, November 4, 2014

BiCal dialog box:  added a "Determine" button for the "Air Threshold" parameter.  This invokes the dialog "Split ROI by threshold", so user quickly manually adjust the "Air Threshold" parameter and it is remembered.
"Split ROI by Threshold" functionality - last accepted threshold setting is now remembered.
"Split ROI by threshold" menu command - expanded to include 3 options for the initial segmentation:
a) Split by specified Threshold
b) Split by the portion (50/50)
c) By adaptive split of the histogram
"ROI Split by Threshold" dialog:  expanded functionality so the ROI is not required, in which case the entire volume is thresholded.

Sunday, November 2, 2014

BiCal field:  change the final normalization from the Average Field=1, to Integral of signal remain constant.

Friday, October 31, 2014

Non-Uniformity Normalization Using 3D Canny Edges and Legendre Polynomial Approximation of the Bias Field: Validation on 7T  T1W Brain Images.  ISMRM 2013. Artem Mikheev, Henry Rusinek, Graham Wiggins.

Ultra High Field MRI: What is in Full Bloom & What is Sprouting? ISMRM SCIENTIFIC WORKSHOP  2013.  Artem Mikheev, Henry Rusinek, Graham Wiggins.

Original (Non-uniformity: WM=28.5%  GM=33.5%)

N3-corrected (field smoothness = 10mm.  Nonuniformity WM=13.5%  GM=19.8%)

BiCal (Nonuniformity: WM=7.1%   GM=13.4%)


All acquisitions were performed on a 7T imager (Magnetom; Siemens, Erlangen, Germany) by using a volume-transmit 24-element receive coil array (Nova Medical, Boston, Mass). A 3D automatic shimming was first performed by adjusting all fist and second order shim currents, then shim performance was verified by using the interface on the imager console. This was followed by either sagittal (n=2) or axial (n=2) 3D MPRAGE sequences acquired on four volunteers (28-54 year old, 3 males). The acquisition parameters were: TR/TE/TI=2.6/2600/1100 msec, FA=6°, 248  SL=0.6 mm, 346 × 323 x 248 matrix, acceleration factor of two. 

Thursday, October 30, 2014

FireVoxel Build 158 is released.



1. Implemented an initial version of the fully elastic registration algorithm.  In this variant - a 3D volume and the "Starting Shape" ROI are provided.  
2. ROI Inflate-Deflate dialog box:  encapsulated programming interface.
3. URAL feature generation function (both Grad\Edge).  Made adjustment to algorithm that greatly improve the speed of the processing on binary volumes (was done in context of the Mongoose-Elastic registration)
4. Landmark Matching\Registration function:  upgraded to accept arbitrary number of Landmarks.
5. Added a handy function to determine if 3D polynomial transform is actually 2D.
6. Performed correction for the "Calculate the Texture Gradient over the ROI only" function.
7. Finalized, documented and sealed 2 most promising variants of the new Elastic Mongoose registration\segmentation algorithm.
8. BrainPrint - SulciBasePrint: Can be now generated in FireVoxel directly.
9. Added ".image"  to the list of the supported DICOM extensions.
10. Liver DCDI:  Blood Vessel removal Dialog:  corrected an error with displaying the percentage of the Vessel and Liver.
11. Performed a major reengineering of a composite DynamicCoordinate structure in FireVoxel
12. FVX file format load:  Implemented function that ensures the Chronological order of Dynamic coordinates.
13. Fixed an error in "ChangeEndianess" function that was causing an aborted load of .im files.
14. .IM file RAW load:  added special processing in case the time values are not in chronological order.
15. MIDAS .time format::  Added improved heuristic about the "Starting Index Convention"
16. T1-inversion recovery model:  completely reengineered the model, implemented a Global Fit solution, updated the user interface.
17. "Brain EdgeWave Express" workflow:  corrected the aborted processing defect when submitted volume is 4D.
18. PET-MR  4D-4D registration:  complete re-engineering of calculations and User interface.
19. Speed up and minor corrections to the "T1-inversion recovery" parametric models
Speed up and minor corrections to the "T1-inversion recovery" parametric models.
PET-MR  4D-4D registration:  complete re-engineering of calculations and User interface.

Wednesday, October 29, 2014

"Brain EdgeWave Express" workflow:  corrected the aborted processing defect when submitted volume is 4D.
In most dynamic models:  improved checking of the required Dynamic dimension to be present and have the proper values.
T1-inversion recovery (MODULUS):  parametric fitting and T1-map for the whole slice.  Processing time is 3 min/Slice but could be substantially improved.

T1-inversion recovery model:  completely reengineered the model, implemented a Global Fit solution, updated the user interface.

Data curve (Red),  Model Curve (Black)

Dynamic model  "T1 mapping using inversion-recovery - MODULUS" : made correction to allow data to have repeating TI-values.
MIDAS .time format::  Added improved heuristic about the "Starting Index Convention"
.IM file RAW load:  added special processing in case the time values are not in chronological order.
Fixed an error in "ChangeEndianess" function that was causing an aborted load of .im files.

Tuesday, October 28, 2014

FVX file format load:  Implemented function that ensures the Chronological order of Dynamic coordinates. 
Performed a major reengineering of a composite DynamicCoordinate structure in FireVoxel.  This influences the way the dynamic coordinates are stored and used.

Monday, October 27, 2014

Liver DCDI:  Blood Vessel removal Dialog:  corrected an error with displaying the percentage of the Vessel and Liver.

Sunday, October 26, 2014

Sulci Base Print with the Sulci Depth.  This is a quantified print, not a volume rendering.
Units are in 0.01 mm.  All processing and print are produced by FireVoxel, no additional software.



The above image is dual with the "Binary SulciBasePrint" which could be directly derived from the above.
SulciBasePrint:   Initial result of Sulci Depth maps (raw data to be improved).  Note!  THIS PICTURE IS NOT A VOLUME RENDERING.  Instead it is a fully quantifiable base print.  Signal intensities are in 0.01mm units representing Sulci depth

Added ".image"  to the list of the supported DICOM extensions.
BrainPrint - SulciBasePrint:

Can be now generated in FireVoxel directly.  Below is an intermediate result of binary SulciPrint, without Sulci Depth information (next step).  Note that the visible width of the Sulci is highly influenced by the User-define "Sulci minimal depth parameter"



Saturday, October 25, 2014

Implementing the "Sulci Base Print"  function for the BrainPrint project.

Friday, October 24, 2014

Finalized, documentd and sealed 2 most promising variants of the new Elastic Mongoose registration\segmentation algorithm.
Performed correction for the "Calculate the Texture Gradient over the ROI only" function.  This would speed up substantially and produce less irrelevant features for certain registrations.

Wednesday, October 22, 2014

Invented and implemented a superior "Feature-match" function for the Elastic Flow.  It is insensitive to the ordering of the voxels in the Match Search Apperture.

Monday, October 20, 2014

Implemented a function for Volume reslicing using the Flow Map.
Images of {1,32} bit and standard interpolations are allowed.

Friday, October 17, 2014

Added a handy function to determine if 3D polynomial transform is actually 2D.
Updated the Polynom::PruneZero() function, to check term coefficients to be fabs(k)<MACHEPS instead of exact zero

Wednesday, October 15, 2014

Landmark Matching\Registration function:  upgraded to accept arbitrary number of Landmarks.
URAL feature generation function (both Grad\Edge).  Made adjustment to algorithm that greatly
improve the speed of the processing on binary volumes (was done in context of the Mongoose-Elastic registration)

Tuesday, October 14, 2014

Internal code:  updated the Isotropic voxel test to include the DICOM_SPCEPS constant.
ROI Inflate-Deflate dialog box:  encapsulated programming interface.  Added static parameters separate for Inflate\Deflate so User's set options are remembered.

Friday, October 3, 2014

Implementing an initial version of the fully elastic registration algorithm.  In this variant - a 3D volume and the "Starting Shape" ROI are provided.  During the iterative matching process the Shape
is adjusted to elastically match the contents of the underlying volume.

Sunday, September 28, 2014

FireVoxel Build 156 is released.

1. Gradient withing URAL-radius to the Volume boundaries are set to 0 to avoid introducing non-existing features that might steer registration.
2. If one of the timepoints in registration is binary (as sometimes in hybrid scenario), the URAL_NORM=Linear is always chosen for that specific timepoint independent of what norm is specified by the user.
3. MainMenu>Volume>Effective Noise:  corrected the defects, crashes on 4D volumes4. RoiStats3D dialog:  added information about the number of the VOID voxels of the SI-Volume within the specified ROI.

4. Implemented the corrections to the Liver DCDI  4D registration parameters.  
Implemented the corrections to the Liver DCDI  4D registration parameters.  This was to fix example "OV" that had very high contrast enhancement thus failing the registration as high gradient inside the contrast regions were attracting the feature detector.
URAL_UNI measure was employed, with the sigmoid function base of 3*Noise.  Automatic noise detection step was added to the registration.

Saturday, September 27, 2014

RoiStats3D dialog:  added information about the number of the VOID voxels of the SI-Volume within the specified ROI.
MainMenu>Volume>Effective Noise:  corrected the defects, crashes on 4D volumes.  Obtain the result on GRASP very similar to the Riccian noise result but without the user specifying the size of the search window.

Friday, September 26, 2014

Added corrections to the general registration algorithm for URAL measure:

a) Gradient withing URAL-radius to the Volume boundaries are set to 0 to avoid
introducing non-existing features that might steer registration.

b) If one of the timepoints in registration is binary (as sometimes in hybrid scenario), the URAL_NORM=Linear is always chosen for that specific timepoint independent of what
norm is specified by the user.
FireVoxel Build 155 is released.


In 3D volume DICOM load, increased the interslice distance tolerance from 1e-4 to 1e-3. This allows to load A.R. volumes without warning messages.
FireVoxel Build 154 is released.

1. Added the BrainCT  workflow (MainMenu>Applications).
Added new function "BrainCT>Segment Intracranial cavity".
2. EdgeWave dialog:  corrected a major UI error.  When no seeds are present, the logic of selecting the Connected Component choices (radiobuttons) was damaged.
3. Corrected interface and initial parameters to process the CT-brain scans without leaks.
4. Toft's model (#8):  re-arranged the optimization variables to improve the solution bounds.
5.  Introduced a “Balanced solution” concept for parametric fitting and Toft’s model in particular.
6. Tofts modified model (k-trans,Ve,Va):  implemented changes to model similar to the regular model.
7. Corrected defect:  Unable to "Crop 4D All Layer" \ "Crop 4D Active Layer" using the vector ROI.
8. Added ABT subtest for "Tofts modified (K-trans,Ve,Va)" model.
9. Fixed major bug in registration of real-valued volumes (=PET).

Tuesday, September 23, 2014

Monday, September 22, 2014

Added ABT subtest for "Tofts modified (K-trans,Ve,Va)" model.
Corrected defect:  Unable to "Crop 4D All Layer" \ "Crop 4D Active Layer" using the vector ROI.
Tofts modified model (k-trans,Ve,Va):  implemented changes to model similar to the regular model.
Tofts model (but general issue important to all models, incl. Eric's IVIM), this problem originated in Henry's report of very high Ve (>18000) in particular ROI fit.

During the parameter fitting, there might be numerous solutions (both voxelwise and Single ROI), whose Minimization Cost differ by the miniscule amount (<0.01 in relative terms of Absolute Minimum Cost).

We "Balance" the solution by considering all such solutions equally valid candidates.  Then several logics could apply.

Below is the result of one such "Balanced" solution, on the same AATH dataset.  Note, the balancing is done on the level of the single voxel without taking neighboring voxels into account.

New Option is added to the Parmetric Model processing:  "Balance Solution" - ON\OFF.

K-trans (regular)
K-trans (Balanced)

Ve (regular)
Ve (Balanced)




















Residual (regular)
Residual (Balanced)




Toft's model (#8):  re-arranged the optimization variables to improve the solution bounds
old: (Ktrans,kep)   -> new: (Ktrans,Ve).  Since user supplies the Bounds for Ve, the calculation
of bounds for  the derived kep = Ktrans/Ve was introducing too big of the interval.

Sunday, September 21, 2014

Corrected interface and initial parameters to process the CT-brain scans without leaks.

EdgeWave dialog:  corrected a major UI error.  When no seeds are present, the logic of selecting the Connected Component choices (radiobuttons) was damaged.
Added the BrainCT  workflow (MainMenu>Applications).
Added new function "BrainCT>Segment Intracranial cavity"

Wednesday, September 17, 2014

Code work and maintenance eliminating the procedure handling 24-bit signal representations.

Tuesday, September 16, 2014

FireVoxel Build 152 is released.

1. Corrected the defect:  when new document & file are created as a result
of the operation, the document file name may exceed 256 characters which is
the MFC limit for VisualC++ 2010.
2.  Implemented the Registration by DICOM tags only.
3.  Completely re-engineered the AATH model.
4.  Added the ABT subtest for the AATH model.
5. Added the ABT subtest for Blood vessel segmentation.
Added the ABT subtest for Blood vessel segmentation.

Monday, September 15, 2014

Added the ABT subtest for the AATH model.
Completely re-engineered the AATH model.  Fully parallel implementation on a single TAC level.
Implementation is fast enough to process large ROIs in voxelwise manner.