Search This Blog

Monday, August 3, 2020

Build 334 is released.

1. MagTrace defect fix:  when changing slice and restarting MagTrace the contour from the previous slice was restarted and invisbly modified.

2. MagTrace defect fix:  crash when the current spline is exited, deleted and the new spline is started.

Also, includes this fix: Open a document, draw a new spline, delete. Start MagTrace, crash.


3.  MagTrace defect fix:  crash when pressing Alt+1(add anchor) outside the existing selected spline.

4. MagTrace fix: Copy selected spline (Alt+5) or Copy from adjacent slice and snap - Crash. 

5. MagTrace Overlay Edges UI function: fixed the crash and moved this important function to under the Test Menu.  It is used to explain the results of Edge snapping during the regular MagTrace processing. The EdgeMap is upgraded to double Real values now.

6. VolSetBox\VolSetSlice functions: added support for 16->64 bit conversion. 

7. Fixed and extended the Rasterization issues:
Toolbar button : Rasterize selected vector entities
But also under MainMenu>Vector> there are
4 commands:
Rasterize selection
Rasterize All Splines
Rasterize All Polylines
Rasterize All VROIs

8. Added duplicate commands {Construct vector ROI,Construct vector Polygon} accessible through the MainMenu>Vector.

9. MagTrace dialog: updated the dialog title and the names of some parameters.

10. Updated the title of Polygon\Spline properties dialog.

11.  Polygon\Spline drawing : enabled alpha filling mode with variable opacity by switching to Gdiplus engine.  Fixed various issues related to "close contour" option and filling.
 
12. Code:  reduced and simplified m_position usage in entities.  
13. Polyline\Spline dialog:  when properties are changed the entity redraws immediately with the new settings without the need to close dialog box.

14. Improved Hermite spline construction when the contour is closed by correcting the Tangent calculation.



 

Friday, July 17, 2020

Build 333 is released.

1. Code simplification in PWR.H: replaced several function with CString& parameter by functions returning a CString.
2. DisplayVoxelInfo intermittent crash on some projections: fixed by ensuring a single voxel condition in VolGetBox.
3. Implemented  ABT subtest for Single Slice {SAT,VAT,IMAT,MUSCLE} segmentation.
4. Profiled the rounding function rint(x) vs.  floor(x+0.5). The latter is about 10 times faster so switched to the floor() implementation.

4. Streamline the MagTrace parameter dialog.

5. MagTrace node positioning is working correctly on all projections now.  On non-original projections it does not perform the image snapping and defaults to Ctrl mode (precise position).

6. Modified UserInterfaceOptions so that  {LeftSideOnRight,PosteriorSideOnTop} applies only to image loading.  Also options are now stored in the Firevoxel Config file.

7. Fixed defect that polylines and splines are only displayed in their respective projection\slices.  Also spline can only be restarted if it is Visible in the current view.

8. {Polylines,Splines} can only be rasterized if they reside in the original projection.

9. {Polylines,Splines} have a new attribute "Close Contour" available through the Polyline dialog box. This attribute works with the MagTrace::AutoClose parameter which is now operational.
Also, the Alpha attribute for {Polylines,Splines} was introduce which controls the transparency of the Fill.

10. FVX file format  v10 was introduced to accommodate new attributes in {Polylines,Splines}. Formats v2-v9 are supported for loading.

11. Optimization of all Affine reslice functions (Reslice.cpp)

12. SetView Projection (-/+) buttons for the angles to change projection in real time.
13. Volume>Smooth Across dynamic dimension:  works now in any image type including real (64-bit). 

14. Fixed defect: saving FVX file with PHI information present the verification dialog was popping up twice.

Tuesday, July 14, 2020

Build 332A is released.

1.  User Options {LeftOnRight, PosteriorOnTop} are activated upon the load even if the projection is specified in FVX document.
2.  User Options {LeftOnRight, PosteriorOnTop} changed in the UserOptions dialog change the relevant projections of all documents immediately.
3. Defect fixed:  when *.time file for  collection of 3D NIFTI images, the orientation of the 4D volume is corresponding to the orientation of the individual NIFTI files.
4. Initial View Layout now enabled for loading of FVX files.

Wednesday, June 17, 2020

Build 332 is released.

1. Code: Removed unused code from the Nifti Load\Save module.
2. Code optimization: replacing RECT wirh RECT2D, eliminating PR_RectWi etc.
3. VectDotProduct variants : use the fma( x,y,z ) function instead of (x*y)+z for better precision.
4. Replaced pf_sign function implementation with the shorter template  (T(0) < val) - (val < T(0))
5. PWR.H : Complete  efficiency code review.
6. Complete implementation of T1rho Biexponential model. This includes testing for Bi\Mono type and reverting to Mono when required.
7. TSL datasets after cropping preserve the dynamic coordinate properly now.
8. FLEXR registration preserves the TSL (and other possible non-DICOM dynamic) coordinates correctly.
9. Allow User-directed main toolbar alignment through User Options dialog box.
 10.  New Knee-T1rho workflow button with registration items {FLEXR,AutoFocus4D} which work both on the knee and fathom.

11.  AVX2 256-bit instruction using FMA (fused multiply add) to speed up and improve precision of many functions such as {VectDotProduct, SVD, Cross Correlation within FLEXR}



13. Single slice abdominal segmentation: results of the segmentation are automatically measured and displayed (default dialog option = true).

14. Parametric Processsing dialog: a notion of Previously used model (PUM) is introduced, so it comes up as a default for the next loaded volume (unless it has its own model saved). If PUM is not compatible  with the loaded volume, we reset to Model 0 which is compatible with all volumes.

15. When in Dynamic Processing dialog box and no ROI layer is present, the "Process ROI as a single curve" changes to the "Process whole volume as a single curve".

16. Dynamic Modelling dialog box:  Extrapolate button is enabled only when the appropriate models are selected.

17. MainMenu>View : added several functions to close selected Views, Documents, etc.

18. Volume::GetModality function now returns MCLASS_NONE if modality is not present.

19. When any 4D image-file volume (non-DICOM) is loaded and the modality is not present, the dialog box will pop-up prompting user to specify the modality.

20. Fixed the crashing defect and proper operation for Backspace button when operating on the Polylines and MagTrace splines.

21. {MagTrace,Poly} tools:  if the spline or polyline is selected respectively, then starting the tool continues to work with the selected object instead of starting a new one.

22. Moved m_selection construct from individual views to a document (so it is shared by all Views).

23. When non-FVX Image is loading User can customize the initial layout between {FilmView, SingleSlice, Three Projection}.

24. When resolution info in image file (f.e. MIDAS) is invalid  or missing the warning will show up and the file would not be loaded.

25. Replace iround(double v) function with int(rint(v)) construct.

26. If Landmark registration is called and no landmarks are present, display the warning and exit (previously it was crashing).

27. Updated dialog window title. ROI -> Morphology -> Peel / Grow -> (dialog window title) Deflate ROI or Inflate ROI. Update to Peel ROI Grow ROI.

28. When attempting to save FVX document where the PHI information is present, offer dialog with 3 choices: {Deidentify&Save,Save,Cancel}.

29. FireVoxel can have any of the predefined UI color schemes from under UserOptions dialog box.
30. Document background color can be customized now from the UserOptions dialog.

31. Code: replaced Entity:FindProjection( View) by View::FindProjection()

32. Implemented the RRSE (Root Relatived Squared Error) calculation an enabled it in models {26,50} (T1rho).

33.  Implemented ABT subtests for Models {26,50} (T1rho}.

34. Layer Operations dialog:  fixed crash when attempting to remove ALL unchecked layers. Added a warning too.

35. Saving FVX, if PHI is found the deidentify dialog show the tag names of all PHI.

36. File>Deidentify Document menu : displays the tag names if PHI is present, or informs otherwise

 37.  LayerOperations dialog is now activated through LayerControl dialog and able to reuse its functionality.









Monday, June 15, 2020

FireVoxel Build 331 is released.

1. Model 26: T1rho MonoExponential: Enabled the measure noise substraction prior to model fitting.
2. Dicom item range is now remembered between requests to minimize typing.
3. Fixed defect in curve drawing pane (common component) when there were groups of datapoints with identical X value.
4. Dynamic modelling result curve pane now displays X-axis precision dependent on the Units of the dynamic dimension.

5. Fixed the "smudge" defect when moving and/or resizing the views. Now full Client Rectangle is always redrawn.











6. IVIM model outputs the solution interval and error bound information now.



7. Base Entity selection tracker is never drawn now  as it does not relay any useful information.

8. MainMenu>View>DisplayGrid  : setting 0 (mm) now make exactly a 1-voxel-based grid.





9. VROI dialog box : Increased coordinate precision to 1e-4. When defining the VROI its thickness is 1 voxel instead of 0. This fixed another defect when F11 the view change missed the VROI by one slice.



Build 330A is released.

1. Fixed the typo in abdominal segmentation measurement function when converting from mm2->cm2.
2. Fixed crash defect when loading DICOM and some items were checked, so the new version of 3 choice dialog box was crashing.

Friday, June 12, 2020

Build 330 is released.

1. Implemented  new version of Single Slice abdominal fat segmentation to include {SAT,VAT,IMAT,Muscle}.
2. Implemented a separate user interface function for abdominal segmentation using MagTrace.

Sunday, May 31, 2020

FireVoxel Build 329 is released.

1. Started a new DLL project: FvxANN, It is explicit load DLL and is optional during distribution. This means FireVoxel would still work but certain functionalities will be missing. FvxANN interfaces with TorchLib C++ from FAIR.

2. Implemented TSL automatic extraction from DICOM files {SERIES ,PROTOCOL}. 
User has to specify the Units to load.

3. TSL dynamic dimension is fully implemented now.


4.Enabled  FVX file support (Load\Save) for TSL dimension.

5. File filter changed to "4D Image (*.time)"

6. T1rho implemented the mono-exponential model.

7. Implemented completely new Dynamic Modelling Results dialog box:


8. Global optimization outputs now "guaranteed interval of optimal parameters".  In the parametric modelling dialog there are 2 new columns reflecting that info.







9. Parametric results can be copied to Excel via clipboard.




10. In Dynamic Processing dialog box, if no Output Parameters were checked, after warning the system returns back to the dialog instead of quitting it.

11. Parametric model processing verification dialog pops up only in {ROI,ALLROI} modes, but not the voxelwise modes.

12. "Normalize by ROI" : Koefficient typo fixed.
13. Fixed the crash when  VROI is present but unselected, with right mouse button drag.

14.  Fixed crash when executing Cancel Load VROI - Vector -> Load VROI -> Cancel. 

15. ROI>Morphology changed menu to {Peel,Grow} 
16. VROI:  rectangle diagonals are smooth now using Gdiplus. 
17. Parametric modelling dialog: removed the 2nd redundant button now. Also the text on the button now depends on what was selected and will be processed.

18.Provided the Echo time - >TSL conversion for this dataset, as you
suggested. The new function is under MainMenu>4D Processing>Dynamic Dimension Support








Friday, May 15, 2020

Build 328 is released.

1. Removed the "flickering cursor" problem when passing over the polyline or spline.
2. Removed the AllViewsRedraw from CDrawPoly::DeletePoint which was causing a recursive call and crash.
3. Fixed MagTrace defect when MainEntity was selected with the Spline, so while the anchors were visible it was not possible to move them.
4. Fixed a defect while moving curve and splines, when the LButtonUp and RButtonUp events are missing some time which resulted in curve's anchors wildly jumping.
5. Code work on the legacy CDrawTool class, MagTraceTool and PolyTool subclasses
6. Enabled VROIs and Landmarks to have individual colors. The color panel in VROI dialog is now working.
 7. Extensive code optimization in function :  AlViewsRedraw, FV_EndWaitCursor, NonZero,IsZero, NonEqual, IsEqual.

Sunday, May 10, 2020

Build 327 is released.

1. Restored the SAT\VAT segmentation functionality on the entire volume.
2. Provided multiple additional variants for the Abdominal CT fat workflow
3. Fixed the intermittent crash when removing the layers cause by Undo\Redo.
4. New morphological algorithm "Close broken contours and fill 2D" and a corresponding menu item under ROI>Morphology.
5.  Multi-slice projections (such as MaxIP) and FilmView are mutually exclusive now with the corresponding switches disabled
6. VoumeInfo dialog: Copy To Clipboard : fixed defect when only visible items were copied.
7. Vector Rasterize function:  added the Undo
8. Layer control dialog:  changed the "Save RAW" to "Save Image".
9. Main menu>File  change "Load\Save FireVoxel document" to "Load\\Save document"
10. Updated the SetProjection dialog by removing unused entries, adding Minimal Intensity projection.
Build 326 is released.

1. Complete rework of the Whole Fat segmentation from Abdominal CT
   a) Gross problems of Pelvis, Diaphragm, and arms were resolved
   b) New algorithm to separate fat and muscle when the fat and muscles signal intervals
    overlap substantially.
2. New function and UI menu item to segment whole fat on a single selected slice.
3. New function and UI menu item to segment whole fat and with the abdominal cavity ROI present
    to perform SAT\VAT segmentation.
4. Coding update: for all relevant Document::AllViewsRedraw now includes the Layer Control Dialog update.

Wednesday, April 29, 2020

FireVoxel Build 325 is released.

1. FLEXR-Motion Correction: implemented option to consider first N timepoints static (without motion).  Often there is a very little contrast in the initial timepoints, so registration individually is challenging.
2. Replaced "Save RAW" menu and dialog items to "Save Image".
3.Implemented Initial Undo\Redo functionality to cover Paintbrush painting\erase. Undo\Redo buttons in the main toolbar.
4. Implemented the toolbar Undo\Redo button status  update (graying) depending on whether any Undo\Redo records are available.
5. Added keyboard accelerators "Ctrl+Z" and "Ctrl+Y" for Undo\Redo respectively
6. Added unit test for Visceral\Subcutaneous fat segmentation functionality from Abdominal CT.

Monday, April 6, 2020

Build 324 is released.

1. Implemented EdgeWave variant when starting Peel voxels are either External Surface only
or custom provided from the calling function.

2. Implemented the 2D Structure Graph  technology.
This converts any 2D ROI into the planar graph.

3. Implemented EdgeWave variant when the custom Start Surface is provided. Unified that code the External Surface code.

4. Implemented the Subcurtaneous\Visceral FAT separation algorithms. Fully automatic. Initial accuracy is under 2% comparing to manually generated ground truth.

5. Implemented a parameter dialog for the VFAT\SFAT separation

6. Included into the distribution package all Microsoft DLLs corresponding to a redistributable. This allows to avoid missing DLLs issue due to discrepancy between the Visual Studio update and redistributable download site.




7. Spawned previously reused RoiStats4D dialog into a separate DynamicExperimentResults dialog so it can be better customized without affecting other functionalities.

8. Implemented a workflow for Subcutaneous and Visceral abdominal fat separation. Provided QuickStart documentation.

Thursday, March 26, 2020

Build 323 is released.
1. Fixed defect in Paintbrush over CT-abdomina volume (Zero transform message was popping up while changing paintbrush radius.
2. FLEXR registration: enabled the scenario when Source and/or Target are binary images (1 bpv) optionally overlayed by a ROI.
3. FLEXR implemented a proper resulting volume type conversion when "Output Real" version is ON\OFF. This included conversion to the original image type if OutputReal=FALSE.
4. Implemented "CT Abdomen Whole FAT segmentation" function. This includes a custom dialog.
This is under Worflows>CT Abdominal Fat segmentation>Segment Whole Fat mask

Sunday, March 15, 2020

Build 322 is released.

1. FLEXR: Implemented MicroSegmentation local similarity measure which performs Otsu thresholding for each keypoint vicinity thus providing flexible registration. Results are most identical with Mutual Information but do not have NumBin parameter.
2. FLEXR including Dialog:  implemented Output Target masking options {NONE,Zero,VOID} on how the Target mask is applied when the Source(Moving) frame is resliced.
3. FLEXR: implemented experimental OptiMap local registration match measure.
4. Detect Body Mask updated the algorithm and exposed basic dialog box under MainMenu>Segment>Detect Body Mask
5. Implemented an initial variant of the BiCal batch with the optional output to {Dicom,Dicom Compressed,Nifti }
 
 6. Implemented customizable overlay grid on original Projections only. It is under Main Menu>Display>Display Grid


 
Build 321A is released.
Corrected defect in "Load RAW Folder" UI setting which was reset.

Wednesday, February 26, 2020

Build 321 is released.

1. Speed optimization of Dot Vector Product function (since it was 50% of total FLEXR time).
It is used widely throughout FVX including BiCal.
2. FLEXR :Guassian RBF matrix construction (fully dominates time):  separate the bottleneck into
a single MatrixLineConvolution and minor optimization of it
3.  GRBF deformable field:  optimization matrix calculation (at least 10000x10000 - 30000x30000). Noticed the sparsity of the underlying calculation and devised a variant based on skipping negligible values (1e-16) with x15 memory and speed improvement.
4. GRBF final field calculation:  separable  exponential term exp(-hypot3(x,y,z)) it was possible to pre-calculate the tables once for each axis for x4 speedup.
5. FLEXR-3D: When the Source Mask is supplied, in final Reslicing clip Source using Source Mask with VOIDVOX. This helped to uncover some deficiencies in COPD Lund Registration.
6. FLEXR: re-implemented new logic to handle cases with\without the Source Mask. New approach to ROI padding = {Displacement Padding+MeasurePadding}.
7. FLEXR: Removed "Inflate ROI" parameter from the dialog and internal processing.
8. FLEXR GRBF: Substantially decreased memory requirements for optimization matrices.
9. FLEXR GRBF: fixed the defect when the lower part of the symmetric matrix was not constructed.
10. FLEXR:  Edge Keypoint generation: added Nlimit parameter (~10,000 for neck) to select strongest keypoints. This allows specify grid of any density.  There was no substantail improvement in the Neck MI, perhaps sparse field regularity is critical.
11. FLEXR dialog box:  implemented Combo (dropdown) box for selecting Transform Type.
12.FLEXR: Implemented NW  Sparse-to-Dense interpolation scheme (from EpicFlow) paper. It is very fast and with good (not the top) accuracy.
13. FLEXR dialog:  removed option for the Gradient Norm. Now it is done automatically.
14. FLEXR-MC:  Output volume is now displayed with the same Window Center\Width as the original
15. FLEXR: Implemented option to display  Keypoints after the completion.  This is a new checkbox option in FLEXR dialog box.
16.  FLEXR: MST (minimal span tree) is calculated once for both Forward and Backward (symmetry) run.
17. FLEXR:MST: calculation now take next to 0 memory.
18. FLEXR: Dialog: added option for the Regular Keypoint Grid.
19. FLEXR (incl Dialog):  Added  new Similarity Measure = Signal Difference.
20: FLEXR: Implemented Mutual Info\MI-NORM local similarity measures and corresponding Dialog items.
21. File>Open Image (multiple files): corrected various small defects, including saving the file name instead of path to FVX config file.
22. FLEXR: further optimized speed of NW transform and Local Mutual Info.

Sunday, February 16, 2020

Build 320 is released.

1. FLEXR-MC: dialog\Test defect fix.
2. FLEXR-MC:   GRBF transform progress message defect fix.
3. MainMenu>Measurements>Two Volume RMSD : corrected so in case of 4D volume the Current Timepoints are compared.
4. TPS transofrm: fixed a small defect in optimization matrix construction.
5. GRBF tranfrorm: fixed defect in the final field interpolation.
6. Main Menu>Segmentation>Feature Points : fixed crash defect when called on a selected timepoint of the 4D volume
7. Main Menu>Measurement>RMSD : fixed crash defect when a single layer and present, outputs warning "2 non-roi operands are required".
8. FLEXR-MC (motion correction) dialog box:  Added a "Serial" algorithm option
9. FLEXR-MC dialog box:  added option to Correct Gross Motion only, when user specifies only Gross Motion timepoints and deformation field is re-used for in-between timepoints.
10. FLEXR-MC dialog: Added the the Ensemble 4D dynamic algorithm option (Averages all registered frames to make new target at each step).
11.  FLeXR-MC dialog : Added Use SVD option.
12. Corrected *.TIME\MIDAS load to accept the {PT,PET} as modality (only PT earlier)
13. NIFTI\TIME file load: removed reliance on the Byte Per Voxel tag in the TIME header. This was leading to the confusion, such as float-32.  Additional feature the NIFTI files of different byte type can be loaded as 4D.
14. Main Menu>4D Processing:  added functions to measure Cross Frame Mutual Info over the ROI for 4D volume (both MI and MINORM). This is a helper function for evaluating the quality of Motion Correction
15. Volume>Crop specified dynamic points : corrected so the final cropped redraw is done for all layers.

Monday, February 3, 2020

Build 319 is released.

1. Re-ran the Neck registration example using new Tomasi feature detector.
Comparison of the largest displacement between t1 and t38 shows good registration (red over green).
2

2. Performance optimization in "Voxel Context" similarity measure.
3. Change the Parallel design within the "Voxel Context" similarity measure to reduce the memory bandwidth.
4. Implemented ABT subtest for FLEXR Neck Motion correction.
5. Optimized the VolumeConvolute3D( PDOUBLE ) function for speed. Checked presence of VOID voxels and simplified calculation without them.
6. FLEXRMC dialog box: removed irrelevant Similarity Measure options, leaving only {VoxelContext, Xcorr, URAL}
7. NIFTI Save:  implemented cal_min\cal_max fields save (Window Center\Width), so it can be
properly opened by other software (f.e. Mango).
8. Fixed the defect so the 3D Crosshair Cursor only getting synchronized when the UI is in the "Select Mode". Otherwise it was repositioning when LMB click during {Zoom,WindowLevel,etc}
9. Fixed precision problems with 3D Crosshair cursor.
10. UI Interface: introduced new items  under Main Menu>Registration :
       a) FLEXR-MC (motion correction)
       b) FLEXR-3D (general deformable registration).
11. NainMenu>Workflows: introduced the CT lung workflow item. This only include the FLEXR3D item with the default parameters suitable for COPD registration project.
12. Layer Control dialog is fully resizable now by pulling any of the 4 corners.
13. MainMenu>File>Open RAW Image:  any number of files can be selected for simultaneous load.
14. MainMenu>File>Open  FireVoxel document : any number of files can be selected for simultaneous load.
15. When the last window of the current document is about to close, the Save option is offered.
16. Implemented ROI Multi-Layer averaging operation : under Main Menu>Roi>Average ROI Layers

Wednesday, January 29, 2020

Build 318 is released.

1. Consolidated all the variants of the Foerstner feature detector and removed related redundancies.
2. Changed BiCal UI so the corrected volume is always displayed, additionally\optionally overlaid by the bias field.
3. BiCal dialog :  Background Preserve\Morph feature is activated if AirMorphRad<1000. Otherwise it is skipped. Reset the default dialog parameter to 1000.
4. Full re-engineering of the Feature Point detection functionality.  UI menu changed to include Tomasi Feature detector.
5. Developed  a novel Basic Feature Detector method similar to structure tensor logic but without taking the gradient - working directly with the signal values. One advantage over the Structure Tensor method is that the Detector Threshold values can be expressed in Signal values.
5a. Exposed both Tomasi and Basic feature detectors through UI.
6. Implemented generic dialog box Specify Three Double values. This allows some common task to reduce burden on the User to go through several dialogs.
7. Exposed a Threshold parameter for Feature Point detectors and used the Specify Three Doubles dialog for the Feature point detectors.
8. Tensor Structure feature response: Replaced Separable (non-isotropic) Gaussian smooth filter with the Isotropic spherical filter.
9. Using the isotropic Tomasi feature detector resulted in Lund registration substantial improvement to:  Average\Median\Max error of   1.01\0.90\3.25 mm.
10. When loading NIFTI integer volume, check if there are only 2 signal values are present [0,Sig]. In that case offer User an option to load as Binary ROI.
11. Implemented VROI rasterization from Vector Menu and toolbar button
12. Provided a combined menu for ROI>{Clear Inside [Z0,Z1] interval,Clear Outside [Z0,Z1]}.

Tuesday, January 28, 2020

Build 317A is released.
1. FLEXR : enabled the option for the GRBF interpolation.
2. Code prunning to remove unused\secondary FLEXR variants.
3. Re-enabled the "Preserve FOV" option during the Volume Transform.

Sunday, December 15, 2019

Build 317 is released.

1. Fixed defect and provide x8 speed up for Voxel Context similarity measure.
2. Fixed defect while cloning the dynamic volumes.  For some reason the DICOM header of the 0th timepoint was cloned over the rest. So now it  uses all timepoint headers appropriately. This defect occurred  while doing motion correction on the DTI  5-slice kidney mosaic.
3. Fixed the defect in KSFAPv2 procedure. This was due to an earlier upgrade of the Ridge detection function to REAL output.
4. DICOM Open dialog box: corrected selection  behavior of the "Copy" and "Delete" buttons.  Now the checked items are considered for the whole tree, not just the subtree of the selected item.
5. Removing redundant records during the DICOM tree construction: was slow on the large collectrons (32,000 files).  Optimized and sped up from 16 sec to 2 sec and added the Progress indicator.
6. Modified the PR_SendMessageInterval so when (DoProgress==false) there is no action and unwanted hourglass would not appear
7. Remove the "Double Pass" option from the BiCal Research dialog.
8. FVX ParSVD :  with Epsilon precision:  change the Eps to be a relative to the norm of the Right Hand Vector.
9. Conjugate Gradients for Linear Equations: made corrections when NAND happens within the main iteration loop
10. Restored the AVX2-base Vector Dot Product function for about 20% speed-up in BiCal. It appears however that the AVX2 slightly looses precision
11. Argazi (Texture) Edge detector : fixed defects in determining the direction of the gradient vector. (defects were in the ORANGE structure initialization).
12. ARGAZI Image gradient: updated normalization based on the radius and vicinity weights so that the value of the gradient closely matches the derivative taken from the voxel values.
13. Introduce advanced BiCal variant  BiCal# base on the Gradient detection only. This skips the Edge detection and Constrained Smoothing stage.  Number of the UI parameters will be removed
14. Removed basic BiCal dialog. Old BiCal+ menu item and dialog where optimized and rename a new basic BiCal.  New BiCal# menu item and dialog were introduced.
15. Complete new ABT: BiCal subtest including {Brain,Breast,Abdomen} and synthetic chessboard images overlaid with  exp(k*X),exp(k*Y),exp(k*Z) fields for precise reconstruction.

Thursday, November 28, 2019

Build 315 is released




1. Implemented the initial variant of the FLEXR - Motion Correction dialog box.






































2. Implemented an initial variant of the FLEXR- Motion Correction wrapper code. Tested in on 10-timepoints Neck DCE-MRI.
3.  Fixed one of the memory leak defect in FLEXR-MC.
4. Parallelized the TPS parameter calculation in FLEXR-SYMM variant
5. Added a "Output : Real Voxels" option in the FLEXR-MC dialog.
6. Fixed the Dynamic Dimension defect when loading DWI images and selecting the "Selected and Checked" DICOM load.
7. Replaced DICOM load choice with "Selected only" and "Checked only".

Monday, November 18, 2019

Build 314 is released.

1. Implemented a module for synthetic testing off some Dynamic Models. Tested the M49 DCE Reference Region model and fixed the calculation defect.  Residual cut by half.

2. Enable the 3D Raster Paintbrush.  Added the correspoding option to Paintbrush Dialog.


3.  When the "Synchronized 3D Cursor" UI option is enabled, it now works when the Paintbrush is applied.








4. Implemented far more precise (when K->0) formula  Func[i] = Integ<G(u)*exp(-K(X[i]-u))du> 
This affects many models using this convolution, resulting in higher precision for cases when K->0

5.  Fixed 32-bit buffer size overflow in VA_VolGetAll() function.
6.  Added Progress bar to  Layer Arithmetic operations.

Saturday, November 16, 2019

Build 313A is released.
1. Model 49 (DCE Reference Region): corrected crash in voxel-wise processing.
2. . Model 49 (DCE Reference Region): added ABT subtest

Saturday, November 9, 2019

FireVoxel Build 313 is released.

1. Imlemented Model #49: MR 2 compartment Reference Region model (Yankeelov 2005)
2. RoiStats4D dialog: displaying the curve without offset now to avoid visual confusion.
3. UI:  Re-enabled BiCal option to output the Bias field
4.  Verified that Model #49 with the Identity test, i.e. running on Reference Region returns RR {Ktrans,Ve} with high precision.
5. Open DICOM dialog:  corrected the defect when Copy operation and there are several source files
in different source folders but with the same file title resulting in overwritten files.
6. Fixed a typo error in the determining DICOM frame exact acquisition time.
7. Implemented Volume>Voxel Value Conversion> Change Transparent Signal.
8. Model #31 (MRTM2) fixed defect when the output Parametric Map color scheme was not initialized.
9. Fixed defect in 2-Volume Max Difference function
10.  Removed redundant HCT correction from some models

11. Added ability to add\modify the DICOM tags  {TE,TR,FA}


12. Fixed the defect in Dynamic Experiment dialog: when the IF and Tissue Concentration dialogs appear then {TE,TR,FA} fields are filled properly from the Volume DICOM tags

13. Enabled the FWTE calculation of the Concentration->Signal so it can be used in Modelling.

14. Extended the "Edit DiCOM tags" functionality to optionally Edit all the timepoints at once.














15. Volume Value Conversion dialog (after DICOM load): change layout to make functionality more clear so Add\Mul are applied ONLY when loading as INTEGER.











16. Corrected the imperfect shape of the Raster Paintbrush at small radii.

Wednesday, October 16, 2019

Build 312 is released.

1. N4explorer: corrected default parameter ranges. Report now display the elapsed time for the entire optimization.
2. OverlapError calculation in N4explorer: changed the ThresholdDelta=>1e-3 to make it much faster.
3. Speed optimization from Xcorrelation measure calculation  in the context of the discrete registration (x3 speed up achieved).
4. FLEXR deformable registration:  integrated the new XCORR measure and achieved a very good result on COPD Lung registration with :  1.32\1.24\4 mm.
5. Speed optimization of the XCORR measure on the very large volumes.
6. Incorporated XCORR measure into the FLEXR deformable registration for 1.2 mm accuracy on Lung COPD data
7. FLEXR:  insured the "Identity Test" with high precision, i.e. registering the volume to itself and checking high precision with Average Err < 1e-5.

9.a higher precision in Lung registration, now at Average \Median = 0.98\0.80 mm.
Also, even better visual quality on the Neck registration:
10. Doublechecked the legacy interpolation modules and finally cleared it to be perfectly fine.
11. Extended the *.time functionality to support VFA dynamic dimension.
12. Various TPS transform optimizations.
13.  In "TAC: Curve View" dialog fixed defect so the Tissue Properties are transferred properly for the Input Functions.


Tuesday, September 24, 2019

Build 311 is released.

1. Fixed memory defect in (freeing PDICOMREC)
CVol::CreateDynCrdFromFF , FV_LoadDicomFileSet

2.  Implemented 99% automatic MRI  Neck segmentation algorithm for the Neck registration project.





3. Implemented 1st variant of Neck MR registration.
4.  Added the Volume>Signal Value Conversion>Scale To Interval function

5. Fixed defect in retrieving the VROI coordinates in Seed functions (was adding extra slice).

6. Implemented ZNCC (Zero Normalized Cross Correlation) measure in the ReMIND deformable registration code.  This is for Neck Motion Correction project.  Result seems to be visually as good as the original SSC metric.

7. Performed comparison of   ABS(ZNCC)  vs.  Max(0,ZNCC) similarity measure

7. Finetuned the ReMIND:XCORR variant of the deformable registration on the COPD lung images. It reaches good 2/0.9 mm average/median error.
8. Implemented the OE (Overlap Error) measure with the specified precision of threshold so it could work on REAL volumes.
9. Nonuniformity measurement functions:  added the automatic CopyToClipboard feature.
10. Fixed DICOM load defect when 8-bit volume with Rescale\Intercept was present (GE-CT)
11. Fixed crash in Landmark Registration (Cloning of the DICOM header when number of target slices exceeds source).

Monday, September 9, 2019

Build 310 is released.

1. OpenDicom dialog box:  fixed defect in "Show Compatible Volumes" functionality.
2. OpenDICOM dialog box: added a function (button) "Uncheck All" - removes all checks from All
items
3. Developed a 3-choice customizable dialog for a more transparent UI.
4. Eliminated the performance inefficiency in Zooming\Affine functionality. All zooming functions are impacted and the most visibly the FilmView.
5. Major rework of the OpenDICOM dialog box. Separating the Selection and Loading functionality.  New ability to load arbitrary combinations of compatible Series.
6. Implemented "Average Nonuniformity Measurement" for all opened documents.

Saturday, September 7, 2019

FireVoxel Build 309A is released.

1. OpenDICOM dialog box: Impemented he "Dicom Tag Difference" tool that detects all different DICOM tags for 2 selected files and copies the aggregate result to the clipboard.

2. DICOMREC structure modification to include additional BOLUS attributes.

3. Incorporated the Bolus attributes into DICOM 4D Volume construction logic so the CIR31 series 98 are properly separated now.




4.  OpenDicom dialog new feature:  all composite SERIES corresponding to dynamic
Volumes With Contrast are now marked with the red frame around the SL or VL icon.
5. BACKSPACE button is now working as a DELETE button when not the single Polyline is selected.

6. N4explorer: Fixed  typo errors in displaying the result.

Thursday, September 5, 2019


BICAL paper evaluation:Suggested parameters accessible through BiCal+ functionality:

Abdominal GRASP case

head BPD  7T

Breast FAT\FGT case

Friday, August 30, 2019

Build 309 is released.

1. Corrected crash defect in Nonuniformity Measurement.
2. DICOM load: fixed defect in logic combining separate SERIES into a 4D Volume.  Some Volumes
were incorrectly assembled
3. BiCal: Corrected  defect in core BiCal procedure (edgemap reuse in iteration).
4. BiCal: fixed the defect with isotropic volumes DoublePass
5. Fixed the crash in Noise calculation function on REAL images
6. BiCal: enabled REAL input images.
7. Fixed N4explorer  parameter setting for Noise.
8. NIFTI load: fixed defect loading single NIFTI 4D file.
9. Further correction in DICOM logic of parsing the 4D files.
10. Fixed a defect in loading of b-values from SIEMENS DICOM file.

Tuesday, August 27, 2019

Build 308 is released.

1. DICOM Tags for Diffusion: fixed the B-factor (B-value) loading for the following Philips models:
{ Ingenia, Achieva, Multiva, Intera }
2.Bical now outputs REAL type image as the result of the processing.
3. BicalResearch dialog: Implemented an additional option "DoublePass" which further improves the results.

4. BiCalResearch dialog: redesign of several fields - now includes the AirThreshold in Noise units, a separate Baackground panel.

5. Streamlined the BicalResearch dialog box.  Change the AirLevel and EdgeLevel parameters to
be in Noise units to make it more robust across the images.

6. Combine two Non-uniformity measurement items into one under the MainMenu>Nonuniformity

7.  MainMenu>Transform>Rotate
Corrected several defects with the global parameter in the dialog.

Saturday, August 24, 2019


Best parameters for processing the GRASP\Abdominal case, from BicalResearch dialog:

Tuesday, August 20, 2019

Build 307 is released.

1. BiCal: Fixed the Edge detector threshold defect
2. BiCal Research dialog: Exposed the  Edge Radius, Edge Threshold parameters.
3. BiCal Research dialog: Noise calculation is done automatically and that level is
displayed so the User can set Edge threshold based on noise units.
4. Bical Research dialog: introduced new Basis functions:
{Legendre,Chebyshev1,Chebyshev2, Regular Polynomial,Cosine}
5. BiCal research dialog: removed the "SVD tau" parameter.  "Background morph" parameter is now in (mm).
6. Fixed defect (crash) when during the Polyline drawing the User presses delete without pressing ESC first.
7. Enable the load of TIME\NIFTI   4D files.

Thursday, August 15, 2019

FireVoxel Build 306 is released.

1. Implemented function to load all the FVX documents from the specified folder.
This is under the MainFrame>File> menu.

2. Removed a failing check for the presence of the VC++ 2019 Redistributable.
3. Added a voxelwise CJV calculation under the Nonuniformity>Measure menu.
4. Corrected the calculation of CJV measure according to B. paper.

5. Re-implemented N4-explorer tool with 5 optimization measures
{ roiaNU,robNU,CSM,blobCJV,voxCJV }
   a) Start application and File>Open FireVoxel Folder.
   b) Specify location of the folder, press OK.  All fvx files in that folder will be opened.
   c) Application will check if all documents have the same number of Active ROIs.
   d) Press MainMenu>Nonuniformity>N4 Explorer. Corresponding dialog will show up.
   Define the ranges for the optimization parameters. Set the constant parameters using the
   N4 parameter dialog box in the left lower corner.
   e) Optimization will run. Final dialog will show up. Each of 5 optimization results will be displayed   in the Info dialog and the same result will be copied to the clipboard.


6. BiCal Dialog: introduced the bool variable : "Output Foreground" that outputs the ROI mask for the foreground voxels used in BiCal calculation.

Monday, August 12, 2019

FireVoxel Build 305 is released.

1. BiCal optimization matrix construction: Further acceleration which becomes dominant at the higher degree of the field.
2. BiCal:  Removed a non-existent option for field in AIR from use interface, since there is only VOIDFIELD option is allowed in the Air.  BiCal research dialog box is simplified .
3. FireVoxel start-up:  added checks that VC++ Redistributable 2013 and 2019 are present.
4. Fixed the incorrect initial volume zooming position when loading a document (expressed in Debug version only)
5. MRTM2 (model #31):  added an Output parameter : RMSE/Average Signal.
6. MainMenu>Nonuniformity>Measure NU of two layers  added the CJV measure.
7. Added ABT subtest for MRTM2.
8. Fixed the issue with the negative field in the RoiStat3D dialog box. Implemented a custom
dialog field function for double precision floats with the user-specified precision (from 15 to 30 decimal positions).

Wednesday, August 7, 2019

Build 304D is released.

1. Added additional diagnostics for the Input\Output files presence during the N4 execution.
2. BiCal dialog: Changed the Subsample parameter to Processing Scale parameter [0.1,10]. Fixed the defects and tested. Note: now the larger number will slow down processing, smaller will speed up.
3. Substantial BiCal speedup when using Processing Scale = 0.5. On 7T brain a minor reduction in quality with NU raising from 0.051 -> 0.057
4. BiCal: Speedup in matrix construction

Tuesday, August 6, 2019

FireVoxel 304B is released

1. Modified the command line construction for the N4*.exe tool.

Tuesday, July 30, 2019

FireVoxel Build 304A is released.

1. Fixed defect in reporting the diagnostics message for the Windows system GetLastError() function.
2. Enable N4-ANTS to run on the Real volume (this also allows a direct N4 second pass on the same image).
3. Added an execution notification while N4 command line is running.
4. Performed optimizations so the BiCal single run reaches very close result to BiCal double run but without extra time or blurring of the double run.
5. MRTM2 model (#31) added the Relative Error output parameter

Monday, July 29, 2019

FireVoxel Build 304 is released.

1. Dynamic Experiment dialog:  implemented a model-specific Input Function panel naming. When model is changed a proper panel name {Input function, Reference Curve,...} are displayed.

2. Restored the "Process Single curve" from the main menu without the need to create a document.

3. Restored the MRTM2 model:












4.  Rotate Volume UI parameters are now remembered between the calls.

Tuesday, July 23, 2019

Build 303C is released.

1. Transform>Rotate and Create New : corrected the naming of the 1st layer.
2. Corrected the Defect in LayerControl:Save ALL.  Now the folder is allow to have a dash "-" in it.

Monday, July 22, 2019

FireVoxel Build 303B is released.

1. Transform>Rotate Ortho  : fixed the defect with the naming of the 1st layer.
2. Enabled the Progress bar inside the  Transform>Rotate Ortho
3. Added extra diagnostics to the intermittent Save All defect.
Build 303 is released.

1. Provided 5 research branches for FLEXR deformable registration algorithm. They all achieve
fairly good registration of about 1.5 mm, but further development is needed to match the state of
the art 0.9 mm on the COPD datasets.

2. Provided BiCal Research dialog with most internal parameters exposed.

Tuesday, April 16, 2019

Build 302 is released.

1. Model 17: IVIM-segmented:  removed the check for non-pysiological fitting parameters, so  no VOID voxels are generated.
2. Implemented a variant of LES-SVD solution that find solution of specified precision.
This greatly accelerates the Jacobi-based parallel solution.
3. Big acceleration in Flow field computation for RGBF.
4. Corrected the Flow field transform to produce an identical interpolated volume for the Identity transform.
5. Improved diagnostic messages for Layers with the different Resolution\Orientation from the Base Layer.
6. Implemented ABT-subtest:  Lung landmark-based registration using GRBF
7. Corrected algorithm for the specified precision LES-SVD solution.
8. Expanded Transfrom>MakeIsotropic function to include option for Target resolution with the dialog.
9. Transform>Rotate Volume:  now rotates the centers of the existing VROIs and approximates the resulting size of the VROIs.
10. Integration of the existing code for large deformation registration : project ReMIND
11. Optimization of the memory and speed for ReMIND.
12. GRBF Dense Field optimization: replace SVD with HouseholderQR for speed. Removed the initial Affine transform alignment,
13. Implemented Key (PET) model 48.
14. Implemented Input Function dispersion in Model 48 which can be used in other models.
15. Enabled MagTrace to work on Real Volumes.

Tuesday, March 26, 2019

FireVoxel Build 301 is released.


1. Fully parallelized the Foerstner Map calculation (for keypoints detection)
2. Corrected Jacobian map calculation for vector fields.
3. Corrected crash when calculating the EDT (Euclidian Distance Transform) in Parallel mode.
4. Corrected the MST optimization so the resulting displacement only resides in the areas
permitted by the Source ROI mask.
5. Processed a problematic case for Monkey->Reference registration.  Use Average (not PCA) to accumulate.  Use 3vox Rad in URAL gradients. Then following:





Pre-1

Post-1
6.  Expanded Tissue attribute structure to accommodate up 16 values.
7. Introduced FVX document v9.  Provided backward compatibility
for FVXv8.
8. Tissue Properties (such as T1 for ROI) are now save as part of the FVX file.
9. Eliminated legacy FDX_Text() dialog support,  Microsoft corrected the DDX_Text bug
for "double" fields.

Sunday, March 17, 2019

FireVoxel Build 300 is released.

1. Implemented corrected Optimum Location calculation in the 3-D Euclidian Distance Transform.
2. Implemented capability for each Dynamic Model to restrict allowed Concentration Conversions to the specified subset.
3. Dialog Parametric Maps calculation:  presently selected Tissue and Input Function concentration conversions are displayed.

4. Dialog Layer Control: "Save ALL" functionality is implemented to Save ALL marked layers to the specified folder in specified RAW format.

Tuesday, March 5, 2019

FireVoxel Build 299 is released.

1.  Corrected FileExists function to work with files >2GB.
2. When loading the *.time file with TE info, the TE info should be in (sec) in *.time file.
At the same time the DICOM header stores that info in (ms), so the proper synchronization
was implemented.
3.  Implemented fully parallel algorithm for "Equlidian Distance Transform over Sampled Function" with the complexity O(n) where  n is the number of voxels. This is an important functional block inside larger Viterbi algorithm inside the Deformable Registration project.
4. Implemented new Model "3. Interleaved 2-state profile".

Sunday, March 3, 2019

FireVoxel Build 298 is released.

1.  Fixed defect in MouseHolder segmentation: segmented subvolumes retain the 4D attributes of the original 4D Volume.
2. Fixed general defect:  when 4D volume with dynamic dimension other than time is transformed, the dynamic coordinates of the transformed volume are now correctly preserved.