Search This Blog

Tuesday, October 20, 2020

 1. Implemented initial version of the Omni-directional IDIF.  

This is a Bi-directional tracking map. Max length in both directions is 70 mm. Color represents the "generation index".  VROI is macroseed in this picture.  Black color corresponds to Miniseed (generation=1).  

 



 

Corresponding IDIF function

 



Wednesday, October 7, 2020

 1. Fixed DICOM load problem.  DICOM file had  *.im extensions (identical to MIDAS). So expanded the list of possible DICOM extensions.

2. Disabled access to Test Menu items in Release builds. 

3. Implemented new Gamma-variate fir Dynamic Model and made it possible to be called directly from RoiStats4D dialog box.

4. Radiomics file output : Added Volume name to each line.

5. Radiomics dialog :  checkbox option to output Tab-delimited file.


6. Radiomic dialog: checkbox option to output Tab-delimited text to Clipboard to paste directly to Excel.

7.  Expanded the check if the file is DICOM. Checks for the DCIM at the byte position 128.

8. When parametric map is calculated, the new layer now inherits the orientation of the working volume.

9. Polyline properties dialog box : fixed defect Line width – Option does not work. 

10.  Alt+1  now works with polyline (in addition to spline) to click-insert a new point.

 

Wednesday, September 30, 2020

Build 338 is released

 1. Code: Replaced FireVoxel custom data types with new VC++ buil-in types {INT8,INT16,INT32,INT64}

2. RoiStats3D dialog - corrected a subtle defect when remembered previous Histogram settings result in "No Valid Voxels" situation with newly loaded image, so it is not possible to open the dialog.  In this situation "Exclude Outside Range" flag is reset to prevent this deadlock.

3. Code :  replaced class function CDrawSet::{CurrentTime,CurrentDynInx} with CDrawView.

4. Fixed defect: unable to construct VROI on some .im and old FVX files.

5. Fixed crash when calling RoiStats3D dialog after "Ambiguous layers present".

6. For RoiStats3D dialog and Radiomics execution: changed how the notepad.exe is called so the FireVoxel does not have to wait till user exits the notepad.

7. ViewTac dialog box: voxel radius is changed now by using standard spin control

to avoid keyboard entering.

8. Fixed crash in Dynamic Experiment : Extrapolate functionality.

9. Added checks for Extrapolated dynamic points to be different from original dynamic points. Exclude repeats from specified extrapolated points.

10. RoiStats4D dialog : fixed defect when it was not possible to change the Curve panel background color.

12. RoiStats4D dialog : removed redundant Info button.

13. Dynamic Framework:  changed output parameter units naming from mm2/s to mm2/sec

14. Removed redundant item MainMenu>4D Processing>Parametric modelling.

15. Output naming consistency in IVIM models #17 and #18.

16. Dialogs RoiStats3D\RoiStats4D, common behavior:  when VROI is present in addition to raster ROI program checks if a single VROI is selected.  If single selected, then a corresponding temporary raster ROI is formed, new ROI layer  is NOT added anymore. If more than one VROI layer is selected, the stop warning is displayed.

17. Fixed naming (ADC->DDC) in Model 21: DWI Stretched exponent.

18. Implemented proposed parameter name changes in models {17,18,19,21,28}

19. Temporarily disabled resizing of the Single Curve dialog box till fully implemented.

20. RoiStats4D dialog: made "Copy (clipboard)" and "Save" function to produce identical format.




Tuesday, September 29, 2020

Build 337C is released.

  1 Radiomics: implemented GLRLM feature class (16 features).

Friday, September 25, 2020

FireVoxel Build 337B is released.

 

 1. Radiomics : GLCM corrections:

    a) Pxplusy array calculation 

    b) HXY1,HXY2 calculation

2. Radiomics  GLCM: Checkerboard (64x64) AND (65X65) step (1) image:

   a)Verified distance=1, directions (0,2), directions(1,3).

   b) Verified identical features for directions 0-3,  1-3

3. Performed comparison to MAZDA radiomics GLCM on abdominal CT  tumor. Obtained a close match on all features except the 2 entropy features. Seems like Mazda is using log10() function in calculations (appears also in its documentation) instead of log2.  Mazda and FVX entropy measures differ by coefficient log2(10). Testing was performed on all angles separately and distances {1,2}

4. Performed correction in DICOM header cloning with different Source and Target geometry.

5. ABT subtest for registration of 3D volumes with different number of slices.


Wednesday, September 23, 2020

Build 337A is released.

 

 1.  Radiomics 2D workflow fixes

       a) ClusterShade twice removed, Cluster tendency inserted

       b)  AngularSecondMoment accumulation bug fixed.

2. RoiStats3D dialog:  added a Variance  calculation to the list of the 1st order features.

3. RoiStats3D dialog: added functionality to define the Range using Percentage of the Spectrum cut-off (Low\High)

4. RoiStats3D dialog:  Features panels more orderly output by dividing feature names and values.


Monday, September 14, 2020

Build 337 is released.

 

 1. Update Histogram Segmentation functions to be compatible with the new {BinWidth,NumBins} duality.

2. Code: consolidated various Histogram segmentation functions.

3. Implemented code for the Radiomics 2nd order functions.

4. Implemented separate setting sets for Integer\Real volume Histogram.  Now setting are remembered and restored between separate Histogram dialog calls and according to the image type.

5. Implemented a complete Radiomics 2D features workflow (GLCM class only)

Friday, September 11, 2020

Build 336A is released.

 1. Code: Updated function  VA_VolCalcRoiInfo  and separated a function VA_VolCalcRoiInfoCutPct for maximum efficiency.

2. Corrected defect CVol::RoiGetPeelProfile

3. Major redesign of the RoiStats3D dialog box to enable  dual {BinWidth, Number of Bins}




Tuesday, September 1, 2020

Build 336 is released.

 1. Minor speed and precision optimizations for the "Model #42 T1 mapping using variable flip angle with B-field".

2. Expanded the MIDAS format to include voxels with different X,Y size. This defect came up when calculating parametric maps with voxels x!=y.

3. Removed the Skip current time option from Volume Smooth dialog and corresponding API structure.

4. Volume>Smooth function : extended to work on real volumes.

5. Volume>Edge-Constrained smooth function : extended to work on 4D volumes.

6. 4D Multi-echo interpolation function: added the pre-smoothing filter and air thresholding.

7. Volume>Crop>Current Slice now crops all timepoints of the 4D volume (not just the selected one).

8. Enabled and upgraded the Extrapolate mode of dynamic modelling. 

Saturday, August 29, 2020

FireVoxel Build 335B is released.

  1.  Fixed defect: when saving thenloading FVX file the current dynamic models and its hyper-parameters should be restored.

2. Re-implemented the Dynamic model #42 : T1 mapping using variable flip angle with B-field. Provided 2 optional solutions for the user:  Linearized (fast) and Global (precise)

Wednesday, August 26, 2020

Build 335A is released.

 

1. DrawCurve panel component : fixed defect when drawing curve with repeating X-coordinates.

2. Multi-echo volume folding : corrected T2*:=0  when the curve is increasing and can not be modelled by decay.

3. FVXDCM_DC : GetSingleSliceResolution : corrected defect when PixelSpacingX not equal PixelSpacingY.

4. Multi-echo volume folding : Fixed  the volume header error when folding the header.

5. Implemented UI function to removed all dynamic dimensions except Time.

Tuesday, August 11, 2020

Build 335 is released.

 

1. License key file: Extended diagnostic message.

2. Code: move FVXDCM_GetAbsoluteTime function info  FvxDcm module.

3. MagTrace is restricted to  the original projection (0,0,0) for now.

4. Moved Progress Message support functionality into FvxMem.DLL.

5. Restricted MagTrace tool to operate on the original projection only. Added a warning message.

6. SAT\VAT segmentation toll: restricted to Integer volume only. Added a warning message.

7.  UI function: Multiframe DICOM splitting into single slice DICOM files into specified folder.

8. UI function:  "folding" of the 4D multi-echo volume into the single echo TE=0 using T2star fitting.

9. When loading DICOM as a Real Volume (with Rescale\Intercept tags present), recover the RescaleType DICOM attribute if present and display voxel units accordingly.

10. After Loading dicom  Intercept\Slope tags are cleared, since the conversion of data is performed already and the original (before rescale) pixel data is discarded.

11. Added extra Fail diagnostics into FVX document save function.

12. SAT\VAT single slice segmentation:  added a check that a single Spline is required on the selected slice. If found only that spline is rasterized (as opposed to ALL in previous veriions).

13. Fixed positioning defect when moving vector entities incl. VROI as a whole (hold RMB).  Optimized the CDrawObj::MoveHandleTo function.

14. Optimization of { Volume,DICOM} deidentification functions.  If PHI tag is present but value is empty - it is considered absent.

15.Fixed defect :1. Start MagTrace and Esc (without drawing a line) – Crash.

16. Fixed defect:  Rasterize All Splines and Rasterize All Polylines – Both commands do the same.

17. DICOM load : made changes to extra Add\Mul logic with Rescale dialog box.   Changed the DICOMAUTOLOAD structure.

18. Implemented the Multi-Slice abdominal fat segmentation workflow from MagTrace contours on every Nth slice.

 



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.