Search This Blog

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).