Search This Blog

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.

Thursday, July 31, 2014

Liver DCDI:  Performed alternative Blood Vessel segmentation, using the 4D algorithm that takes into account all the timepoints. Result is quite different, with fa=0.24 (comparing to fa=0.32 for the 3D vessel segmentation)

Liver DCDI modelling:  comparison of Whole Liver ROI   vs.  Whole Liver without Blood vessels.



FireVoxel Build 146A is released.

1. FVX file format, version4:  implemented format extension to be able to save current dynamic model and the Input functions.  This would be a great productivity multiplier both for end-User and developer.
2. General  4D "Blood vessel segmentation" algorithm and UI with User-provided input function(s).
3. Implemented and added an UI item  "MainMenu>Segment>Segment dark ridges"  which complements the existing "Segment bright ridges" functionality.
4. Implemented Liver DCDI  Blood Vessel Segmentation 3D:  this is an alternative algorithm that uses a single pre-contrast timepoint  assuming the vessels are darker than the liver tissue.  Existing "Dark Ridge detection"  algorithm is used.  
5. Fixed a defect in the IDIF function.

6. Added several "Keep Highest voxels for each individual timepoint" options as specified by Jean Logan.

Wednesday, July 30, 2014

Added several "Keep Highest voxels for each individual timepoint" options as specified by Jean Logan.

Monday, July 28, 2014

Implementing the new IDIF features requested by Jean Logan. Select top voxels {%,count,mm3}
at each individual timepoint to keep as a part of the IDIF mask.
Implemented Liver DCDI  Blood Vessel Segmentation 3D:  this is an alternative algorithm that uses a single pre-contrast timepoint  assuming the vessels are darker than the liver tissue.  Existing "Dark Ridge detection"  algorithm is used.  Existing Ridge dialog box is called.
Two ROIs are returned one for organ and the other for blood vessel.  There is no differentiation between Arterial and Venous vessels as in Segment4D variant.
Implemented and added an UI item  "MainMenu>Segment>Segment dark ridges"  which complements the existing "Segment bright ridges" functionality.
Implementing a 3-D base variant of the Blood Vessel Segmentation map.  This is in addition to the existing 4-D segmenter so the best option could be chosen.

Sunday, July 27, 2014

Blood vessel segmentation  (using high "Organ Sensitivity Threshold"=20 to detect smaller vessels).
Blood vessel segmentation map in the multi-slice Liver ROI case:




Initial result for Liver Blood vessel map segmentation.  Procedure is general and is not Liver-specific.  User provides 1 or more Input Function by standard loading into the Dynamic Module. Whole organ ROI (liver in this case) is provided.  Result is the set of new ROIs for (NumVessels+1).   In this test  Arterial ROI was added for correctness verification.


Blood Vessel\Organ segmentation map: debugging algorithm and adjusting user interface.

Tuesday, July 15, 2014

FVX file format, version4:  implemented format extension to be able to save current dynamic model and the Input functions.  This would be a great productivity multiplier both for end-User and developer.

Monday, July 14, 2014

Blood vessel segmentation map:  continue the work on the novel segmentation algorithm.
FireVoxel Build 146 is released.
Tested the DTI problems reported by Andrew Rosenktantz but did not reproduce any defects.  Plan of action is proposed with the new Build to pinpoint the problem.

Saturday, July 12, 2014

FireVoxel file format: correcting format so the complete "VOLUME_PROJECTION" structure is saved.  Presently save SliceIndex\TimeIndex result in frequent Blue Screen error, when opening the FireVoxel document.  New FVX format is backward compatible, i.e. old files will be loaded.

Friday, July 11, 2014

Fixed defects of Automatic WM brain seed detection.  Procedure was producing wildly incorrect results in case if some VOIDVOX values were present in the volume.
Some suspicious voxels present in brain image

Implementing a new UI-level function:
User Loads 4D volume + organ ROI.
One or more input functions corresponding to separate blood vessels
are loaded.
Function executes and the result is the Map of the blood vessels inside the
organ.

Thursday, July 10, 2014

ABT  EdgeWave subtest: corrected defect: the difference in result between Release and Debug compiled versions.

Tuesday, July 8, 2014

Working on the final replacement of the DICOM legacy engine, with the DCMTK.

Saturday, July 5, 2014

Fixed error with the floating Layer Control dialog box.  When 2 documents are present in the mainframe, and there is Layer Control dialog, switching the Active document updates the Layer Control correctly, but when the dialog values are modified the displayed images stop updating.
Corrected a defect in  RoiStats3D dialog when measuring the values over ROI and there are several 3D and 4D layers present (calling 3D layer with T>0)
LIVER DCDI case {LI}:  comparison of parametric maps {Total Flow,fa,EMTT,Ki}  REGISTERED vs. UNREGISTERED
Total flow,  UNREG (68.4 +/-41.4) - REG (133 +/- 55)

fa-Arterial fraction,  UNREG (0.64 +/- 0.35) - REG (0.37 +/- 0.34)

EMTT,  UNREG (26.1 +/- 12.1) - REG (17.7 +/-10)

Ki,  UNREG (4.67 +/- 1.37) - UNREG (5.28 +/- 1.64)

Friday, July 4, 2014

LIVER DCDI case {LI}:  comparison of parametric maps {Total Flow,fa,EMTT,Ki}  before and after whole liver 4D registration.
Total Flow, Unreg - Reg

fa-Arterial fraction, Unreg-Reg

EMTT, Unreg - Reg

Ki, Unreg - Reg

Monday, June 30, 2014

Automatic Build Test: added subtest for the  PET "tau-ridges" segmentation.
Dialog Parametric Map calculation:  made the linear (T1W) concentration conversion consistent with the other parts of the FireVoxel.
IDIF functionality:  made a more User-convenient approach when unambiguous 4D volume is selected for the IDIF extraction.  Previously such layer had to be explicitly selected.
Restored the RoiStats4D dialog after the IDIF function is automatically calculated.
"Liver DCDI workflow" - added vessel names for AIF and VIF extraction functionality to clarify the meaning of the layers in the Layer Control Dialog and in the Dynamic Parametric Map calculation.
IDIF function:  when Auto-Direction is specified (f.e. Portal Vein),  the optimal direction is chosen by the intensity integral at the Peak timepoint, instead of simple count of the voxels in the vessel mask.

Saturday, June 28, 2014

Friday, June 27, 2014

Implemented the IDIF function to perform internal conversion to Isotropic resolution so there is no preffered direction during the segmentation.

Thursday, June 26, 2014

Automatic IDIF function:  simplified logic and made more intuitive interface - search of the MicroSeed is confined to the User-specified "vesel seed box".

Wednesday, June 25, 2014

Liver DCDI modelling, case SK:  processed the whole 71-timepoint dataset (100 min).  Vertical motion in the coronal plane is almost entirely eliminated.

Preliminary evaluation of the PV-IF show a substantial sharpening of this function.  Exactly the same manually constructed ROI is used in this diagram both for registered and unregistered case.

RED -  IF obtained from unregistered data,  BLUE- from registered.
MIDAS\.time  Loading defect correction:  internal times were converted to relative with the Base 0, when the .TIME file is loaded.  Corrected to include absolute times.  This was causing a numerous defects in multi-layer entity processing (f.e. two 4D layers after registration).

Tuesday, June 24, 2014

Increased responsiveness of the application when is inside the long process.  This is done by additionally using DoEvents() function when the ProgressMessage function is called and the DoProgress=false
Moved development to the new 6-core workstation. Rebuild application and ensuring that the Automatic Build Test checks out.

Thursday, June 19, 2014

Debugging and verifying a highly-efficient function to determine variable precision during the Amoeba non-linear optimization, specific to image registration.  This will work across all registration applications 3D\4D.

Wednesday, June 18, 2014

Most recent version of MERGE workflow.  Note that only DWI4D functionality is not implemented.  Result of the workflow is the 5-layer volume residing within the same spatial coordinates and sharing the timeline.  This volume could be viewed simultaneously so all the required ROIs can be constructed by viewing all overlaid layers.

Monday, June 16, 2014

Registration iterative non-linear optimization: investigating a feature matching function to speed up the "Determine Variable Precision" stage of the optimization.
Implementing function to Append\Truncate 4D Volume along dynamic axis.  This will substantially improve  the performance and open additional options for the "Register 4D to 3D" scenarios.

Saturday, June 14, 2014

Implemented functionality and User's Interface for Smoothing the binary Volumes (ROIs)

Liver ROIs, semi-manually constructed by drawing the contour on every 2nd slice required further smoothing.

Friday, June 13, 2014

Preliminary result: Substantial registration improvement is achieved on Liver-GRASP-DCDI exam

 First, User contructs a fairly precise "Whole Liver ROI" on a single timepoint (SK,t=25).
This is done by outlining the liver on every 2nd slice and applying Fill&Morph operation (total time=5 min).  This Whole Liver ROI will be used in registration and further liver function evaluation.
ROI contours are manually drawn on Axial projection and simultaneously displayed on Coronal.


Before registration: SK-case, timepoint t=20, and the Target Liver ROI (t=25)

After registration: Anatomy and the Target ROI are aligned.
Parameter set that has been  used.



GRASP-4D:  Liver is clearly separated with the URAL-gradient at rad=4.1.   As usual with fuzzy boundaries the radius has to be chosen large enough.

Thursday, June 12, 2014

FireVoxel Build 144 is released.
When saving FVX file  format, all the volumetric layer are checked to contain PHI information.  Is yes, the dialog box pops up that recommends to exit and run the Deidentifier.

Wednesday, June 11, 2014

Implemented a "De-identification" functionality for the FVX file format.  This is to further improve the protection of PHI.  All the tags minimally related to PHI are completely cleared.
 A single function, without parameters is placed under  MainMenu>File>Deidentify.

Tuesday, June 10, 2014

Provided initial description of the PET "detect ridges" algorithm.

Monday, June 9, 2014

Restoring Automatic Build Test that was unsynched during the FDG\DEC MERGE workflow development.

Saturday, June 7, 2014

Corrected the display of VoidVoxel values in the parametric maps

Friday, June 6, 2014

Corrected "Volume Histogram" and related function to properly process volumes containing the
VOIDVOXEL values.

Good registration result in  ASL to MR-GRASp registration
This requires some preprocessing of GRASP to obtain an accurate BrainMask.


Thursday, June 5, 2014

PET workflow: implemented User Interface-level function:  Crop Empty Areas.
Implemented UserInterface-level   "Dynamic Integral" function:

Wednesday, June 4, 2014

Brain FDG-DCE  merge workflow.  This workflow can be made 100% automatic. 
INPUT:      folder containing DICOM file
OUTPUT:  Single merged FVX file, containing both MR4D and PET4D.




Tuesday, June 3, 2014

Implemented "Convert Mosaic to Volume" function and tested it on MR-ASL data.


Monday, June 2, 2014

Tested the "Arterial delay" parameter in the GRASP-DCE abdominal.  Setting "Arterial delay" up to 5 sec improves the fit substantially.

Sunday, June 1, 2014

Corrected problem, during the Save\Load of the 13-layer registered document to FVX format.
For unknown reasons, an UNICODE  "_fgetts" function was failing (part of VC++).  Was replaced by a FireVoxel_fgetts.

Saturday, May 31, 2014

PET-FDG BrainMask,  a variant without filling the holes. Some arbitrary threshold parameters here.

PET-FDG  completely automatic  (approximate) Whole Brain Mask.
Primary purpose is a reliable target ROI for registration\motion correction.  Are there other interesting applications of this technique.

Friday, May 30, 2014

PET-FDG:  enabling the BrainMask\EdgeWave tool for brain extraction.
PET-FDG:   developing automatic function for "Target ROI" detection suitable for the Motion Correction.

Wednesday, May 28, 2014

Tuesday, May 27, 2014

FireVoxel Build 142 is released.

ViewFilter dialog box is activated on F9.  This allows to easily activate dialog without accessing LayerControl dialog>ViewFilter functionality.
Re-designed ViewFilter dialog box so the color-value scale could be easier incorporated into the screenshot for the publication.

Friday, May 23, 2014

Dialog "Layer Operations": extended to 20 layers. Corresponding crashes are fixed.

Wednesday, May 21, 2014

Dynamic Averaging function: corrected defect due to the conversion of the Real-volume to 32-bit representation.
Modified the "Linear concentration" formula, to compensate for initial "bright" timepoints.
In patient RE this resulted to Max concentration increasing from 0.005 to 0.03


Modified the RoiStats4D dialog, so that the linear concentration of ROI and fitted model could be displayed overlaid.


MainMenu>ROI>Skeleton:  added UI level function for ROI skeleton detection.  Simplistic algorithm works well in 2D case.  3D case would require new more complex algorithm.
PET brain "Ridge Segmentation" function:   finalized interface and functionality for 2D and 3D cases.  Simplistic skeletonization algorithm that works well in 2D, for some reason is not performing well in 3D and would require more time to integrate more precise 3D skeletonization.
Therefore, due to a limited time available,  "Process slices individually" option is always on in 3D case for the time being.

Friday, May 16, 2014


Initial test of FireVoxel "Detect Ridges" function on brain PET.

Left: FireVoxel                                    Right: drawn by expert.

Implemented 2D ROI volume skeletonization function.

Wednesday, May 14, 2014


FireVoxel Build 140D is released.
Detected ridges function: corrected defect by enabling processing of 3D volumes.
Modified DlgRoiStats4D dialog when it is used after Parametric map modeling to display  RoiTAC vs. Fitted TAC.  "Show All" option is disabled in this situation.

FireVoxel Build 140C is released.
Fixed the problem with the "Segment Ridges" tool.  Resulting document was using the same name as the original thus failing to load.
FireVoxel Build 140B is released.
Layer control dialog:  layout is modified to accommodate
up to 20 layers.
Layer Control Dialog:  added Layer Name editing functionality.  If user doubleclicks on the Layer Name, the dialog box pops up that allows to specify the name of the layer.

Monday, May 12, 2014

Added the "Detect Bright Ridges" function to the User Interface.

Operating volume - user specified increase in the resolution of the resulting "Ridges".  It is practical experience that skeletons might benefit from the increase in resolution since their width of 1 voxels is used to simulate the objects of 0-thickness.  "Increase resolution coefficient" in practice range from 1 to 3.
Interpolation - specifies the algorithm used in image upscaling.

Background detection is a part of the algorithm.  Background is detected by overall smoothing of the volume.  User has to specify  "Radius (vox)" and the type of the smoothing Kernel.

Output parameter - specifies the result of the processing.
Elevation Map - Signal intensity volume specifying the likelihood that corresponding voxel is a ridge.
Ridge Mask:  Binary ROI representing wide ridges.
Skeleton Mask:  Centerlines of the Ridges represented as binary volumes.
Volume Constrained Smoothing function:  updated and corrected defects to allow a Single Slice volume processing.
Liver DCDI: case DA: whole liver calculation