Search This Blog

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.

Wednesday, September 6, 2017

FireVoxel  Build 251A is released.
Layer Control Dialog:  changed the logic so if no Layers are disabled then the Active layer is deleted with the warning.
Layer Control Dialog - fixed arbitrary Active layer change when switching between 2 documents.

Monday, September 4, 2017

Implemented an initial upgrade to EdgeWave:   EdgeWaveCG (with Competitive Growth option)
Below is comparison of current EdgeWave and EdgeWaveGC   with identical parameters  and seed.

conventional EdgeWave:  (0.9/3/5mm/8mm)




EdgeWave CG   (0.9,3,5mm,8mm)

Thursday, August 31, 2017

Removed large legacy code related to a redundant BGR representation of colors parallel to the COLORREF (RGB) definition used by Windows.  This greatly simplifying the ROI display code.
Fixed the L\B-endian issue in the layer name when loading a RAW  MIDAS file.

Wednesday, August 30, 2017

FireVoxel Build 249B is released.
Layer Control dialog box:  fixed the "Invalid Layer Index" defect after removing several layers.
Implemented Foerstner Operator map generation.  This is used for the Automatic Landmark generation in Large Deformation Registration.  MainMenu>Segmentation>Foerstner Operator Map.



Tuesday, August 29, 2017

1.  LayerControl dialog: fixed defect when selection was arbitrarily change after activating ViewFilter function.

2. Fixed defect: when a layer is saved into a RAW file, its name is changed in layer control, but there is a latency in name display/.
Implemented an initial variant of the "Make Landmark to ROI Cone"  under  "Renal fat assessment workflow"


Monday, August 28, 2017

1.  Fixed the defect in the Multi file Layer load, when not able to load a single file.
2.  Corrected defects related to the "L\R-endian" info added to some layer names.  F.e. ABT
subtests on Dynamic framework were failing.

Sunday, August 27, 2017

FireVoxel Build 248 is released.
Polyline segment measurement functionality:
Implemented a function so that the length of the Polyline segments is displayed in real time
while the user is dragging the polyline.  This only works in Orthogonal projections for now.

The corresponding flag is under  MainMenu>Measurement>Display Curve Length


Layer Control Dialog:  Load RAW button:  allows a multiple selection of  several files which would be loaded as several layers in one step.

Saturday, August 26, 2017

Layer Control Dialog:  Change of the behavior:   Remove button now removes the Disabled Layers only.
User needs to uncheck (=ddisable) the layers that have to be removed.

Friday, August 25, 2017

Wednesday, August 9, 2017

When RAW file (MIDAS) is loaded, the endiannes of the RAW data is analyzed and is reflected in the corresponding Layer name (need to open Layer control dialog to view it).


Tuesday, August 8, 2017

Fixed cluster of defects related to the loading of the GE Mammography DICOM:
a) Image Patient Orientation tags are missing in this dataset  - enabled loading anyway.
b) Fixed situation when document load failed but the Document window appeared anyway causing the crash.