Search This Blog

Wednesday, February 14, 2018

FireVoxel Build 266 is released.


1.  Fixed defect in Applications>Brain MR>Automatic seed finder when the slice index was changed to a random value after the operation.

2.  Implemented a general operation for all models, so that the Input Function can have entirely different timing from the TAC data.  Integrated with model #32:  FDG 2 compartment Model


FDG 2CM data obtained as TAC (*.txt) from Jean



3. Fixed redundant sorting problem when constructing the DICOM tree (observed on Renal data)


4. Added and ABT unit subtest for the Model 32:  "FDG 2CM"

FireVoxel Build 265 is released.

1.  All EdgeWave-related processing was upgraded to seeds with double float coordinates.

2.  Changed the notion of a single slice VROI so the [Z0,Z1] coordinates are now [z,z+0.99....]

3.  Kidney Segmentation from Arterial Phase (KSFAP):  implemented a single click workflow with the dedicated dialog box.









4.  Produced an initial documentation "KSFAP QuickStart"

5.  Modified the "Save Stats"  file procedure in the RoiStats3D dialog box.

Tuesday, February 6, 2018

Implemented an Automatic  keypoint generator for the deformable registration based on the Texture Edge detector.  It provides results visually comparable to the Foerstner Keypoint detector, so it can become a viable alternative to Foerstner.
Advantage is that it is more studied and optimized in FireVoxel.  Eventually quality of the deformable registration would be compared for two or more keypoint algorithms.

Foerstner - Green squares, URAL texture is red dots.
   


Friday, February 2, 2018

Updated parameters for AutoMatic Kidney segmentation to improve segmentation results:

case Good1  Ctx+Mdl = Whole Kidney masks

Following parameters were changed:
In the first EdgeWave step , the Peel was reduced to 1 mm.



Also insured the Kidney is clipped 2nd time after the Whole Kidney mask is obtained








In the last step of (Bright Ridge Segmentation), the threshold parameter was reduced.



Tuesday, January 30, 2018

FireVoxel Build 264A is released.

1.  Implemented new options for  "User Options" dialog.
User can now specify RAM compression separately for {Integer,Real} volumes.  Configuration is saved and restored in the new FireVoxel sessions.

2.  Foerstner keypoints operator:  isolated the code and restored the correct operation

3.  Implemented ABT subtest for Foerstner Keypoints operation.








4.  when loading the  {.nii} files which only have values {0,1} the resulting volume type is binary.

5.  Fixed  defect when loading ROI as the new volume from RAW files {MIDAS,ANALYZE,NIFTI}
New behavior:
MIDAS:  if the ROI color tag is present - the initial forground color is set to specified tag value.

If tag was not present in MIDAS, or it is {NIFTI,ANALYZE} - the color is picked up from the ROI color generator, and would typically be one of the primary color  {Blue,red} and so on.

6.  Fixed defect:  When orthogonal projections are present, VROI is present, pressing F11 (=Advance to Next Landmark) on the orthogonal projection makes the image and vroi disappear.

7.  Fixed the defect when Synchronized cursor is enable and User constructs VROI and it disappeared for some volumes.

Monday, January 22, 2018

FireVoxel Build 264 is released.

1.  Implemented changes to the Main ToolBar, StatusBar and MainFrame window.  Removed the crash when attempting moving the ToolBar.  ToolBar can be now moved and re-dcoked repeatedly.

2.  Dynamic Modelling module:  performed the editing of all models for {Modality,DD}, modified
some models as specified.

3. Implemented the MCLASS_NONE modality concept.  This allows loading of RAW files  {Nifti,Midas} and then detecting a missing modality and requesting the Modality dialog.
UI Option "Verify RAW Modality" was changed so the dialog always comes up when modality is missing.

4. Fixed the error when saving the INTEGER (16-bit) volume to NIFTI (resulring image was all 0).

5. Fixed an issue when  loading the float32 NIFTI was crashing.  This was due to the presense
of invalid float32 (nand) representing the entire background.  So the new code converts all nand values to 0.

6. Fixed the defect with  "Realice_*.IMG"  Analyze volume.

7.  When loading the image without the modality, the document displayed prior to popping up the Modality dialog box, so User is more aware which modality to choose.  In 4D case, the volume automatically advances to the point of Max Info.

8.  Implemented "FDG Two Compartment model"  {K1,k2,k3,k4}


AIF (carotid artery)


ROI and its fitting.





Wednesday, January 17, 2018

FireVoxel 263A is released.

1.  4D Volume ->  Save .time:   replaced the RAW subtype selection dialog with the standard "DlgListChoice"

2.  Eliminated the redundant attribute "Concentration Required" from all dynamic models.

3.  Fixed the defect, when selecting the Tofts model (without prior loaded Input Functions) the "Load Input Function" (and other related IF buttons) dialog remained disabled.

4.  Changed convention:  when the Model not requiring Input Function is selected, the InputFunction panel buttons now becoming disabled.

5.  Enable modality CT inside the Toft's models (#8,#9)

Sunday, January 14, 2018

FireVoxel Build 263 is released

1.  Re-enabled the EdgeWave Single Slice variant function.
2.  Implemented the ABT Subtest for EdgeWave Single Slice.
3.  Implemented generic "ListChoice" dialog box to use in many scenarios.
4.  Implemented  checkbox "User Option" - Verify Modality when loading RAW images.
     Dialog box with the selection of modalities appears during the RAW load.
5.  Fixed defects in DICOM management of the Dicom internal header structure for cleaner DICOM save.

Friday, January 12, 2018

FireVoxel 262C is released.

1.  Fixed the critical defect in Dynamic Experiment dialog box:  when the User was switching to Models with Input Functions, the module was not recognizing the switch and not updating the dialog
items properly.

Wednesday, January 10, 2018

Vocal cord dataset.  Pre-processed the volume with Multiscale texture gradient (Rad=3).
Applied StdDev map to both original and Gradient image.
Used timepoints  [25,406], to exclude the streak frames


StdDev for  a) Original image                                            b) Gradient Map
c) Edges



Tuesday, January 9, 2018

FireVoxel Build 262B

1. Fixed crash when processing texture gradient on the 1-slice volumes.
2. Multiscale Texture Gradient function now produces actual Real map instead of pseudo-Real
3.  Enabled Gradient calculation on 4D volumes applied to all timepoints.

Sunday, January 7, 2018

FireVoxel 262A is released

1.  Re-engineered the MGH (FreeSurfer)  Read support.  Added the MGH\MGZ   ABT Unit test.
2.  Paintbrush drawing at Rad=0:  cursor radius is now minimal but will always remain visible.
3. Defect fix:  When Brush painting, after a certain stroke the Left Mouse (LMB) button is released.  Then if user continued the painting, but press the LMB first and only then  Ctrl button (usually it is Ctrl then LMB), FireVoxel was connecting the previously finished stroke with the newly started one, thus making the unexpected brush segments.

Wednesday, January 3, 2018

FireVoxel 262 is released.


1.  Fixed VolMinMax function to super-fast variant that does not require decompressing the volume and does not take any memory.  (defect fixed:  4GB CT was not loaded due to allocation restrictions).

2. Fixed the AboutDlg to display  "Allocated Memory" correctly when its size exceeds 2GB.

3. VolInfo dialog:  fixed the Frame Memory size information display when exceeds 2GB.

4.  Fixed defect: When older version of the FireVoxel (f.e. 255) tries to load new FVX file format introduced in later version (f.e.  261),  now exists gracefully instead of crashing.

5. Enabled the memory compression for Real images (PET, parametric maps etc).  On the large, 4GB,
mouse electrodes volume it is a x5 improvement comparing to Build 261.

6.  When saving the FVX document, check the appropriate disk space available and display the message if not enough space.

7.  Re-enabled parallel display when showing FilmView.  This makes big difference for very large volumes.

8. Fixed the CreatePaintbrush function so there is no increasing GDI handle leak during the extended drawing.

9.  When User starts to draw an ROI, without the ROI layer present,  a new ROI layer is created. But the Integer\Real layer still remains Active.  So MouseMove generates the access to the DisplayVoxelInfo, causing the decompress.  Now this access is disabled while painting, for much faster painting (x5 ? noticable on very large images)

10.  Re-enabled the Optimal Window Center\Width calculation for Real volumes to match the appearance in Build 255.

Monday, January 1, 2018

Saturday, December 30, 2017

1.  Input Function panel buttons are only enabled when the currently selected model allows the Input Functions.

2.  Each model now displays the number of the required input function in its name

Friday, December 29, 2017

Implemented a "Summary dialog", just before the Dynamic Model calculation is about to start, this dialog is displayed with all relevant processing info.  User can Proceed or Decline:

Thursday, December 28, 2017

Re-implemented the Concentration Conversion dialog so that only Concentration types relevant to the currently selected image are displayed.

Wednesday, December 27, 2017

Implemented the "Allowed Modality" and "Allowed Dynamic Dimension" attributes for every Dynamic Model.  Now when the User displays the list of models, only the relevant models (based on the currently loaded volume) are displayed.
MR  with Time 

MR with b-values
PET with Time

MR with TE

MR with TI

Friday, December 22, 2017

FireVoxel Build 260B is released.


1.  Updated a cluster of functions around {VolumeCleanMask,VolumeFillBox} to match new memory scheme for Real images

2. Corrected the crash and improved the performance and memory demands while loading the 450MB  Nifti  4D volume.

Monday, December 18, 2017

FireVoxel 260A is released.

1.  Fixed the defects in
     a)  Dynamic Integral function
     b)  Dynamic Maximum function.

     This was due to the switch to Real engine.

2.  Corrected and optimized the CreateVolumeUniform function.




FireVoxel  Build 260 is released.


1. EdgeWave:  merged the EdgeWaveCG (Competitive growth) into the EdgeWave basic function.  Added the "CG" option to the EdgeWave dialog box.













2. Fixed the defect of the displaying REAL volumes (detected by the diffusion ADC processing).

3.  Fixed very subtle defect in the setting the histogram range inside the RoiStats3D dialog box.
This is due to the Range parameters, when send and retrieved from the MS Dialog Control, change their value for unknown reason (different floating point settings?).   So the range has to be expanded
by relative 1e-10 to compensate for that effect.

Friday, December 15, 2017

FireVoxel 259D is released.

1. Correction:  restored and improved the logic of determining the optimal  Window Center\Width for signal to display mapping.  This was detected during testing the Linear Conversion.

2.  Enabled  Layer Operations >  Arithmetic Operations   on   Real volumes.
Enabled the operation on mixed  real-Integer volumes.

Thursday, December 14, 2017

Build 259C is released.


1.  Added a warning, in all Dynamic Models with Input Functions:  if the IF is a flat zero (after current conversion), it stops. May be indication of incorrectly supplied data.

2.  Defect: fixed so that RoiStats3D are now workingnon REAL images 3D/4D.

3.  RoiStats3D dialog:  Histogram save for the REAl images  is working now

Histogram
Max Count:= 43

Signal        Count
0.000020       3
0.000060       6
0.000099       6
0.000139       7
0.000179       7

Cortex\Medulla segmentation from the Arterial phase.

After obtaining the Whole Kidney ROI from arterial phase, we run a fully automatic function
"Segment>Detect Bright Ridges" with the following parameters:







Result is the separation of Whole Kidney ROI into  Cortex and Medulla

"Good case-1"
"Bad case -1"
"Bad case-2"

Wednesday, December 13, 2017

Disadvantage of "EdgeWave+Blanket" segmentation approach is the need for manually constructed blanket.

Attempt was made to automatically generate a suitable blanket.

a) A seed was placed on the cortex, same seed would be later reused for the final segmentation.

b) EdgeWave CG ran with some general parameters so roughly to capture cortex.

c)  Inflate the resulting ROI by 4mm.
d) Fill the contours 2D (F7).

This result we call AutoBlanket and it is called AutoBlanket


"Good Case-1"   result of AutoBlanket.

  Then we clip the image by the Blanket ROI and run EdgeWaveCG second time, we the new parameters to capture the Whole Kidney.











Final Result:  AutoBlanket (Red) in the background.  Whole Kidney mask is Green (Overlay)





Same approach for "Bad Case-2"

"Bad Case-1"  Whole Kidney

"Bad Case-2"  Whole Kidney

Preliminary result for the Whole Kidney ROI from Arterial Phase.
All 3 example uses  "EdgeWave with Blanket" functionality with the default parameters.
User only presses Accept button.
Blanket ROI was constructed with 5 contours in Axial projection (then morphed).

"Good case 1" - Whole Kidney ROI from Arterial phase.
"Bad Case 1" - whole Kidney ROI from Arterial Phase.
"Bad Case 2" - Whole Kidney ROI

1.  Defect:  when multilayer entity is Rotated (MainMenu>3D Projection>Rotate & Create new volume"), the layer Enable attributes were not properly transferred.

2.  Defect:  MainMenu>3D Projection>Rotate Ortho :  layer attributes were not transferred from Source to Target.

3.  Dynamic Modelling: Warning displayed when Concentration conversion is specified (Tissue and\or IF) and there are less than 3 timepoints are present.

4.  Fixed the defect in VolCleanMask.  This was detected by malfunctioning "EdgeWave+Blanket" function.
FireVoxel  259A is released.

Monday, December 11, 2017

1.  Fixed the Hang problem while intensely using the Paintbrush over large ROI area for prolonged time 2-3 min.

2.  Provided a clearer message when User attempts to use ROI-4D in dynamic modelling (only 3D ROIs are allowed).

3.   RoiStats4D dialog with ROI3D:   fixed the base Time issue when saving the TAC to .txt file.

4.  Layer  Drag-n-drop between documents:  complete ViewFilter is now correctly copied.

5.  Added ABT subtest for   FVX:  Save-Load-Compare operation.
FireVoxel Build 259 is released.
Major reengineering project to replace internal code representation of Real volumes,

Saturday, December 2, 2017

Enable Single value measurement operations (such as RMSE) on 4D volumes.

Sunday, November 26, 2017

Wednesday, November 22, 2017

Open DICOM dialog:  implemented a feature making it easier to extract the desired series only in convoluted DICOM sets.

User specifies that the Series Description should include the specified substring.  Then hit the Refresh button and the reduced tree will appear.

In this particular scenario, User presses "Load 4D" and chooses indices  [3,7] to be loaded.

Tuesday, November 21, 2017

New design in the Open DICOM dialog box. 

"Info" button and the corresponding pop-up dialog box were removed.

Instead User has now a "Full Info" checkbox.  Old  "Quick Info" panel is now can be switched between the old  "Quick Info" list of DICOM tags, and full list of DICOM tags.
This makes access much faster and reduces the cluttering.



Monday, November 20, 2017

Removed additional level of folders while making "Copy Subtree" operation from DICOM dialog box.
Dicom Tree:  Composite Series:   Subseries with exactly same time are also sorted by the increasing Series Number dicom tag.

Dynamic Circle Cursor for Paintbrush\Erase: completely re-engineered
a) Cursor generated on-the-fly, avoiding start-up delay and excessive memory allocation
b) No limit for the cursor size - "Halo" defect is supposed to disappear.
Display warning when unsuitable Tissue concentration or Input Function concentration model is chosen.
Dynamic Experiment module:
When "ROI as a single TAC" mode is used
a)  Output information about the Tissue and Input Function signal conversion.
b) Do not display the Curve Fitting if the model does not support it.


Tuesday, November 14, 2017

Monday, November 13, 2017

DCDI Model #15 is implemented to fit the requirements of the Dynamic Framework

Would greatly benefit from Arterial and PV delay paramets




Removed experimental Dynamic Models from the model menu.
Implemented flexible mechamism, so the models could be easily inserted\removed into
this list.


Sunday, November 12, 2017

a) Implemented the new 2CXM\LLS model.
b)  Added a hypermater to optionally exclude the non-physiological voxels.
c)  Defect fixed: Enable FireVoxel document\file when there is an active model without hyperparameters.
2CXM model:  two variants were implemented -  NLLS and LLS

With LLS variant a double integration is performed and the corresponding 4x4 linear system is solved using SVD.  Resulting solution is converted to physiological parameters {vp,ve,PS,Fp} and substituted to an analytical solution containing a convolution of two different exponents with the AIF.

Sample ROI for the test

Tests were performed on the GRASP-4D with 76 timepoints [0,411] sec.

Small ROI (yellow was chosen)






First we performed the fitting with "ROI as a single TAC".












A good fit was observed RMSE=25.  But corresponding parameters contain the negative value, which is not physiological.

Next we performed voxel-by-voxel fitting.  This model   #45 2CXM-LLS  has a single hyperparameter "Exclude invalid", which optionally excludes the unphysiological voxels from the map (defaullt=0  - Include all).
LLS: Residual distribution [0,100] (include all mode)

 If we turn  "Exclude Invalid =1",  this would exclude the voxels from the result where one of the key fittted parameters   are negarive:  this includes transit times {T,Te,Tp}  and {vp,ve,PS}

Fitting with  unphysiological (invalid) voxels removed.

When such invalid voxels are removed, we can see that a minor portion of the ROI resulted in non-negative parameter values.




NLLS variant:  gridded Simplex algorithm was used.












Below is the fitting residual comparison for LLS and NLLS.

LLS:  fit residual distribution [0,100]


NLLS: fit residual distribution [0,100]



Timing:  for the whole slice ROI  (24,000 voxels):
Processing times  are   LLS:  0.5 sec
                                     NLLS:  55 sec










Saturday, November 4, 2017

Sokoloff (short) model:  added a hyperparameter to specify precision of the Arterial Delay calculation
FireVoxel 255D is released.
Fixed dynamic range defect while loading the NIFTI-4D (float32) files.
Updated Dynamic Model "Sokoloff short formula" so that user can set both {Min,Max} arterial
delay times.

Friday, November 3, 2017

FireVoxel 255B is released.
1.  Restored and verified all  ABT\Registration subtests
2. Expanded the parameter fields in AutoFocus3D dialog box (Scale values etc)
3.  Fixed defect  with NIFTI-4D (float32) loading