Search This Blog

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

Monday, October 30, 2017

Implemented an efficient convolution ( integral   f(x)*e(-K*(X-x)))  based on the iterative formula.
This applies to non-uniformly sample data.

Resulted in x10  speed improvement in the following models:

1.  Totfs 8
2. Tofts Modified #9
3.  Sokoloff short formula  #33
4.  Sokoloff long formula #34
FireVoxel Build 255 is released.

Saturday, October 28, 2017

DICOM file save:  Window Center and Width are now save to DICOM from current FireVoxel settings.

Friday, October 27, 2017

Thursday, October 26, 2017

Improved the handling of the VTF file save when the target folder is invalid or does not exist.
Dynamic Model #21:  Fixed the "indefinite hang" defect.
Fixed defects in "Linear Conversion over the ROI" function (renamed from Amplification).

Wednesday, October 25, 2017

FireVoxel Build 254 was released
Implemented ROI morphology functions, under   ROI>Morphology menu

1,  Medial Plane extraction (skeleton) by erosion
2,  Medial plane MAT transform
3.  Average depth (internal thickness) calculation.

Sunday, October 15, 2017

Dynamic model #43 (2CXM with Grid Simplex) : Corrected the naming of the Output parameters
1.  Corrected the SVD calculation in Procrustes problem for 3D landmark matching (2 monkeys\3 landmarks)

2.  Provided an ABT subtest for this case.

Friday, October 6, 2017

Breast  Lesion T1-EPI-PET workflow:

1.  Modified User Interface so the parameter selection dialog is activated on every run.
2.  Removed the corresponding "Set parameter...." menu items, since they are not needed
due to #11.
3.  Corrected the default parameters for PET-T1 registration

Thursday, October 5, 2017

FireVoxel Build 253 is released.
Corrected defect in EdgeWave dialog when the "Connected Component" parameter was incorrectly recorded.
Reengineered the Global Optimization function, that resuled in  x500 speed up for T2\T2* fitting
Reengineered the 2XCM with Grid Simplex for   x8 speed up.  This is achieved by optimizing the principal exponent convolution function and is applicable to many other models.

Tuesday, October 3, 2017

Fixed Dynamic Model 16 (T2/T2* mapping) defect when Real volumes were not processed
in the "Process As Single TAC" mode.




Implemented much faster version of 2CXM based on the convolution of PWL and Exponential function.

Added a corresponding ABT subtest.

Thursday, September 28, 2017

x2 Speed up for the convoluting PWL (piece wise linear) function with the exponential kernel, by reducing the number of required exponent calculations.

Tuesday, September 26, 2017

2CXM model was implemented using the    Simplex Optimization with Gridding
Initial setup contains ROI region (orange) and Arterrial Input Function  (blue).  It is displayed as concentration.

Fitting curves displayed as Concentration


Resulting fitting optimal parameters


Friday, September 15, 2017

BiCal on 4D images: implemented an option and the user interface for  "Static\Dynamic" field option when in "Static field" we perform BiCal only once on the starting timepoint and then apply the resulting field to the rest of the timepoints.

Thursday, September 14, 2017

Whole Lever ROI was segmented on VIBE and.
Then GRASP was registered to   VIBE+ROI.
Note: BiCal non-uniformity correction on GRASP was critical.

GRASP case 01

GRASP case 02

Initial variant of fully automatic liver registration from VIBE abdominal MR.
This uses: BiCal, Edge Constrained Smooth, EdgeWave with Competitive Growth.

VIBE case 01
VIBE case 02

Tuesday, September 12, 2017

Implemented Foerstner landmark Keypoints for Large Deformation registration


Large deformation registration: Foerstner Operator map: fixed the situation when some voxel have numerical overflow.