Search This Blog

Sunday, August 31, 2014

Dialog Split ROI by threshold:  added "%" information for 2 separated segments.

Saturday, August 30, 2014

Dialog "ROI split by threshold":  expanded to work with the Parametric maps.

Friday, August 29, 2014

AutoFocus4D   registration dialog box:  fixed the drop-down combo box to expose all the interpolation options during the registration.
RoiStats3D dialog box: fixed the crash after closing the dialog.

Wednesday, August 27, 2014

Liver Blood vessel segmentation.
New method is based on the "Time of Active Rise" technique developed years ago.  This can be applied to any organ in dynamic contrast studies.  "Time of Active Rise" parametric map is constructed and then a single simple threshold is chosen (in seconds).

Tuesday, August 26, 2014

FireVoxel Build 149 is released.

Download at:
https://drive.google.com/file/d/0B2lI9iEKOqv6N2U0a08taG9ZM2c/edit?usp=sharing



1. Sulci-ROI segmentation:  implemented function "Wave Distance" from the Brain mask ROI surface to its convex hull.
2. Implemented  the Support Module for measuring the Wave Distances in various scenarios.
3. Prototype of Sulci segmentation from  GM-CSF interface.
4. Fixed the crash related to DICOM features:  when volume is transformed with the dimension change (or similar operation),.
5. ABT: new subtest for Rotate+Scale of large volumes with all possible interpolations.
6. Volume Affine transform:  optimized memory usage  and workflow so it is possible to have a destination volume exceeding 1.5 billion voxels. 
7. Volume histogram calculation: optimized the memory workflow so very large volumes could be processed. 
8. DICOM load of very large: optimized memory workflow so no memory failure happens on 1.5 billion voxel volume.
9. Volume Arithmetic operations on very large volumes:  Optimized the memory workflow so the operations do not fail on volumes with upto 1.5 billion voxels timepoint.
10. SIEMENS De-identified DICOM load:  corrected the logic so the 4D dataset could be logically combined and loaded properly.
11. Added User Interface-level functions:
  a)Measure Surface Wave distance to Inside of the ROI
  b)Measure Surface Wave distance to Outside of the ROI
12. Surface Atrophy Depth measurement.  Added User Interface function "MainMenu>Brain>Measure Surface Atrophy depth"
13. Bruker ANALYZE 7.5:  added detection of the signed short integers in ANALYZE file, then offering user an option to treat file as a Bruker ANALYZE 7.5
14. Corrected the loading of ANALYZE-based  (.img)   4D file (.time).
15. MainMenu> {"Open RAW 3D", "Open RAW 4D"} functions:  added functionality so that last used extension is remembered and used as the default next time the dialog opens.
16. Completely re-engineered User Interface and the implementation of the "Aggregate projections"  -  {MIP,Surface}
17. Corrected the UI behavios:  In EdgeWave, if Vol+RoI is present,  ROI is disabled (invisible), but being Active ROI was still chosen as the operand.
18. Parametric Map calculation:  when resulting file is loaded, a check is performed if invalid floating point number is present (INF or NAN), message is  then displayed.
19. Dynamic Parametric Map module:  completely re-engineered the Model-1 ("Variation") and added an ABT validation subtest for this model.
20. Dynamic Parametric Models: Completely re-engineered Model 4 - "Input Function Distance". Added a corresponding ABT validation subtest.
21. Dynamic Parametric Models: Completely re-engineered Model 5 - "Custom Time of Active Rise". Added a corresponding ABT validation subtest.
Dynamic Parametric Models: Completely re-engineered Model 5 - "Custom Time of Active Rise". Added a corresponding ABT validation subtest.
Dynamic Parametric Models: Completely re-engineered Model 4 - "Input Function Distance". Added a corresponding ABT validation subtest.
Dynamic Parametric Map module:  completely re-engineered the Model-1 ("Variation") and added an ABT validation subtest for this model.
Parametric Map calculation:  when resulting file is loaded, a check is performed if invalid floating point number is present (INF or NAN), message is  then displayed to help pinpoint the source of the overflow.  Parametric map loading is then interrupted.
Corrected the UI behavios:  In EdgeWave, if Vol+RoI is present,  ROI is disabled (invisible), but being Active ROI was still chosen as the operand.
Completely re-engineered User Interface and the implementation of the "Aggregate projections"  -  {MIP,Surface}
MainMenu> {"Open RAW 3D", "Open RAW 4D"} functions:  added functionality so that last used extension is remembered and used as the default next time the dialog opens.
Corrected the loading of ANALYZE-based  (.img)   4D file (.time).

There was an additional typo error in the supplied header in image dimensions.



Also, the header of the .TIME file contains a different resolution (1,1,1 mm) from the information stored inside the individual  .img files.   (0.075, 0.15, 0.15mm)
Bruker ANALYZE 7.5:  added detection of the signed short integers in ANALYZE file, then offering user an option to treat file as a Bruker ANALYZE 7.5
File is now loading directly to FireVoxel (using supplied code sample, but without division by 10, see the MaxSI value reported).


Monday, August 25, 2014

                                           Surface Atrophy Depth meausrement.

Added User Interface function "MainMenu>Brain>Measure Surface Atrophy depth"

Two longitudinal timepoints Time0 (2009) and Time2 (2011)  of the same patient's brain were processed.

Step 1.
Brain Mask was extracted using FireVoxel\EdgeWave (after non-uniformity correction using FireVoxel BiCal).

Step 2.
Two Brain Masks were then registered using the Rigid Transform so they are overlaid in the same coordinate system of the Time2











Step 3.  For the Brain Mask of the earlier volume (Time0) we calculated the depth from the Surface into the brain (measured in 0.01 mm).


Step 4.  That "Depth from the surface" map of Time0, was then projected onto the surface-only  BrainMask of Time2.  Thus the surface values of the "Atrophy Depth map" were constructed.
One projection was rendered using the primitive rendering ability of the FireVoxel.
Depth of Surface atrophy (in 0.01 mm). Transparent voxels are due to FireVoxel's rudimentary volume rendering.



As a next step would try to regenerate the surface using better volume rendering tools.





















Sunday, August 24, 2014

Added User Interface-level functions:
a)Measure Surface Wave distance to Inside of the ROI
b)Measure Surface Wave distance to Outside of the ROI



Friday, August 22, 2014

SIEMENS De-identified DICOM load:  corrected the logic so the 4D dataset could be logically combined and loaded properly.  The problem was in De-dentifies replacing the TAG_PATIENT_ID differently for each timepoint.
Two timepoint T0(2009) and T1(2011) were
a) Whole brain segmented for masks M0 and M1.
b) Brain masks M0 and M1 were co-registered.


Result is below:
M0 - red mask (earlier)
M1 - blue mask (later)
Purple (red+blue) = overlap of M0 & M1



Wednesday, August 20, 2014

Prototype of Sulci-segmentation from T2-weighted image  MS31a_T2 using HullWave algorithm

I had to try BrainMask on T2, was not able to find optimal parameters to generate full BrainMask on T2.  But result seems to be good for the upper surface of the brain relevant for Sulci-segmentation.

HullWave works with the binary brain mask obtained from T1,T2 using any segmentation algorithm (FireVoxel\EdgeWave was used in this instance).


Map of detected Sulcal depth (in 0.01 mm)

Volume Arithmetic operations on very large volumes:  Optimized the memory workflow so the operations do not fail on volumes with upto 1.5 billion voxels /timepoint.
DICOM load of very large: optimized memory workflow so no memory failure happens on 1.5 billion voxel volume.
Volume histogram calculation: optimized the memory workflow so very large volumes could be processed.  This function is part of every volume loading operation.  Added optional progress indicator.
Volume Affine transform:  optimized memory usage  and workflow so it is possible to have a destination volume exceeding 1.5 billion voxels. This includes viewing of the resulting volume (rest of the image processing operations is not guaranteed due to 32-bit limits).  Added an optional progress indicator during the Affine reslicing.
Fixing defect:  ABT   Rotate+Scale subtest with the Scale=3 produces a crash.

Tuesday, August 19, 2014

Continued the work to correctly create DICOM header after the transformation {Affine}.
Added ABT test for the Rotation+LargeScale of the 3D brain volume, and checking the SaveDicom\LoadDicom combination.

Monday, August 18, 2014

ABT: adding a subtest for Rotate+Scale of large volumes with all possible interpolations.
Corrected the crash related to DICOM features:  when volume is transformed with the dimension change (or similar operation),  new internal DICOM headers have to be rebuilt.  Presently it produces a crash because the new number of slices can be bigger.

When volume is reformatted (f.e. changing dimensions), internal DICOM headers were not generated properly for the new volume, producing a crash.  Now fixed. 

Sunday, August 17, 2014

Prototype of Sulci segmentation from  GM-CSF interface.
In the literature two possible approaches are described:
a) Having the Whole Brain (WM+GM) mask, segment Sulci using the GM-CSF interface.
b) Having the separate WM and GM mask, segment Sulci using the WM-GM interface.

MethodA is simpler to implement but there are much more difficult cases many sulci are too narrow to be reflected on the whole Brain Mask.

MethodB is considered more reliable, due to thicker layer of GM, but requires the WM-GM segmentation (not present in FireVoxel at the moment).

Here are the results of MethodA implemented in FireVoxel.  Sulci is represented as a color map where color corresponds to the length of the curved path from the "brain hull\envelop" to the particular point in sulcal space (measured in mm).


"Curved depth" map in 0.01 mm units.

Saturday, August 16, 2014

Implementing, testing and debugging the Support Module for measuring the Wave Distances in various scenarios.

Friday, August 15, 2014

Sulci-ROI segmentation:  implementing function for defining the "Wave Distance" from the Brain mask ROI surface to its convex hull.
Experimenting with the "Sulci-ROI" detection algorithm using the brain mask (EdgeWave) as the input.

Sunday, August 10, 2014

FireVoxel Build 148 is released.

1. Fixed the defect of crashing (greek)  GE DICOM.
2. Fixed the defect with initial document projection when loading the FVX document file.
3. Fixed the crash, when the RAW file picked from the "Recent File List" but actually missing on disk produces the crash.
4. Fixed the load RAW (.im) -> save FVX -> load FVX  failure.
5. Fixed the "Simple Model" not displaying the result of Parametric Map calculation.
6. ABT test:  added subtest to the "Signal measurements" (#0) model.
7. FireVoxel distribution package:  removed redundant libimp5md.dll ( Intel OpenMP)
8. Removed all the usage of Intel Performance Primitives and remove 4 corresponding DLLs from the distribution package.

9.  Fixed RoiStats3D dialog error in reporting the Median value of the ROI.
Fixed RoiStats3D dialog error in reporting the Median value of the ROI (reported by Tracy Butler).

Removed all the usage of Intel Performance Primitives and remove 4 corresponding DLLs (ipp*.dll) from the distribution package.
FireVoxel distribution package:  removed redundant libimp5md.dll ( Intel OpenMP)
ABT test:  added subtest to the "Signal measurements" (#0) model.
Fixed the "Simple Model" not displaying the result of Parametric Map calculation.
Fixed the load RAW (.im) -> save FVX -> load FVX  failure.
Fixed the crash, when the RAW file picked from the "Recent File List" but actually missing on disk produces the crash.
Fixed the defect with initial document projection when loading the FVX document file.
Fixed the defect of crashing (greek)  GE DICOM.
FireVoxel Build 147 is released.

1. Dialog RoiStats 4D:  corrected the synchronization effect between displayed TAC and the underlying volume window.
2. Blood Vessel map segmentation: Implemented additional controls to adjust the how aggressive the segmentation is:
a) Introduced "vessel time delay" parameter due to dispersion
b) L2-Normalization of TAC comparison, since the numerical values of TACs and IFs are quite different due to dispersion and better shape comparison is expected that way.
Parallelized segmentation algorithm.
3. DCMTK integration:  implemented the DICOM Save function.
4. DCMTK integration:  Implemented the DICOM Crop & Save subtest
5. DCMTK library is fully integrated.

6. Fixed the RAW file load defect (initial slice\Film view projection).


Saturday, August 9, 2014

RAW file load defect (initial slice\Film view projection):  fixed.
This was due to recently introduced feature of remembering the initial View in the FVX file format, an unintended consequence.
DCMTK library is now 100% integrated.

Friday, August 8, 2014

DCMTK integration:  implementing 2 core support function for reformatting the DCMTK headers after crop and other attribute change operations.  This is used in every single FVX operation that generates a new volume after some processing.

Thursday, August 7, 2014

DCMTK library integration:  adding the Automatic Build Test subtest when
a. DICOM document loaded -> VA
b) Result is cropped and saved to DICOM
c) Result is loaded from created DICOM -> VB
d) VA and VB are compared.

Tuesday, August 5, 2014

DCMTK integration:  debugging the   Load RAW->Save DICOM-> Load DICOM->Compare to RAW operation.

Monday, August 4, 2014

DCMTK:  implemented the creation of the Basic  Dicom header when loading a non-DICOM file (f.e RAW).  This is required for the Dicom-Save functionality.
DCMTK integration:  implemented the DICOM Save function.
Blood Vessel map segmentation: Implemented additional controls to adjust the how aggressive the segmentation is:
a) Introduced "vessel time delay" parameter due to dispersion
b) L2-Normalization of TAC comparison, since the numerical values of TACs and IFs are quite different due to dispersion and better shape comparison is expected that way.

Parallelized segmentation algorithm.

Sunday, August 3, 2014

If we make parameters of Blood Vessel segmentation to remove more susceptible blood vessels we can bring the fa (Arterial fraction) all the way down to minimal 0.05.  At that level the modelling result seem to stabilize, i.e. removing even  more vessels does not make difference.


Saturday, August 2, 2014

Dialog RoiStats 4D:  corrected the synchronization effect between displayed TAC and the underlying volume window.