Search This Blog

Thursday, September 24, 2015

Fixed the crash on  ROI image only (without SI volume) when the RoiStats3D dialog (F3) is activated.
Color Dialog defects:  fixed the   "always 0 color" and "crash on the exit" defects by recompiling the FireVoxel.exe module with 8-byte alignment.

Wednesday, September 23, 2015

Replaced all numerical ("double float") fields handling within all of the 76 Dialog boxes in FireVoxel.
MFC dialog "double float" numerical field failure:  developed a workaround by replacing MFC function:  

           AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, double& value)


with the custom function.  This custom function will be in place till the MFC dialog problem is fixed.





Sunday, September 20, 2015

Completely removed the Intel\TBB library from FireVoxel.exe and all DLLs.  This was replaced with the Microsoft's native library <ppl.h>.  Dependency on the VC++ 2013 redistributable was removed from the FireVoxel.

Friday, September 18, 2015

All higher level DICOM processing function (incl.  Constructing DICOM tree, etc) - was moved out of the main FireVoxel.exe to the VolumeAnalyze. dll.  This is to improve the architecture by leaving only the User-Interface functionality in .exe while moving all the math and processing into the dll.
This architecture is also more suitable to working with the command line modules if this would be required.

Tuesday, September 15, 2015

Diagnosed a major MS VC++ defect regarding the numerical input fields in MFC dialog boxes.
Came up with the workaround for standalone applications - fixing FireVoxel would require linking the FireVoxel project (UI part) with the debug version of the MFC.

Saturday, September 12, 2015

Windows native CColorDialog contain a defect in current release of VC++ 2015.
Encapsulated this dialog within a standard call to avoid crash.  Replace all 6 occurrences of this dialog within other dialogs.

Friday, September 11, 2015

Fixed the defect when after running the "Segment Whole Kidney with blanket", the Volume display interpolation would always reset to FALSE.

Thursday, September 10, 2015

Implemented new model:  Sokoloff (Short formula) with 2 Input functions and Double Pass (with optional parameter fixing after the first pass).

Friday, September 4, 2015

FireVoxel Build 196 is released.

1. Fully compiled and linked all the FireVoxel libraries in 64-bit mode.
2. Upgraded development environment to VC++ 2015 (v 14)
3. CFileDialog  (Load\Save) started to cause crash under VC++ 2015. This happened when the initial Directory path was specified during initialization.  Fixed the crash by setting the VistaStyle=0. It is purely Microsoft's bug so the flag is just a workaround.
4. DCMTK 64-bit reengineering: supplied an external definition for HostID and removed the DCMTK for obtaining network hostID that was crashing in 64-bit Release mode.
5. FireVoxel-64 bit is completely cleared on all ABT subtests in Debug|Release modes.
6. Fixed the b-value loading problem on the "*.time" 10-timepoint dataset from MSKCC.
7. Multi-projection crosshair cursor - corrected redrawing when the User paints with the paintbrush. Before the crosshair would only partially redraw leaving numerous lines on the screen.
Multi-projection crosshair cursor - corrected redrawing when the User paints with the paintbrush. Before the crosshair would only partially redraw leaving numerous lines on the screen.

Thursday, September 3, 2015

Fixed the b-value loading problem on the "*.time" 10-timepoint dataset from MSKCC.
FireVoxel-64 bit is completely cleared on all ABT subtests in Debug|Release modes.

Wednesday, September 2, 2015

IN PROGRESS:   x64\Release - clearing up the ABT\Dynamic Processing subtest

Tuesday, September 1, 2015

DCMTK 64-bit reengineering: supplied an external definition for HostID and removed the DCMTK for obtaining network hostID that was crashing in 64-bit Release mode.

Monday, August 31, 2015

Cleared the FireVoxel- ABT-  Dynamic Experiment subtest with 64-bit application.

Sunday, August 30, 2015

Verified the FireVoxel ABT-EdgeWave subtest for 64-bit application mode.
CFileDialog  (Load\Save) started to cause crash under VC++ 2015. This happened when the initial Directory path was specified during initialization.  Fixed the crash by setting the VistaStyle=0. It is purely Microsoft's bug so the flag is just a workaround.

Saturday, August 29, 2015

FireVoxel64bit:  enabled loading of previous 32-bit FVX files and provided backward compatibility.

Friday, August 28, 2015

Thursday, August 27, 2015

Fully compiled and linked all the FireVoxel libraries in 64-bit mode.

Monday, August 24, 2015

DCMTK-OFFIS toolkit, produced the 64-bit version by eliminating makefile and constructing the VC++ project from the ground up.

Friday, August 21, 2015

FireVoxel Builds {193,194,195} are released.

1. Volume reslicing using polynomial transforms:  corrected imprecision defect due to incorrect rounding.
2. MainMenu>Volume>Smooth (and other smoothing operations):  restored correct operation on the ROI.
3. Sokoloff model (Short formula):  added additional user controls so the values of all parameters {K1,k2,k3} could be fixed during the optimization.  User simply set  k2_min = k2_max = Desired Value.
4. Sokoloff model (Long formula):  added additional user controls so the values of all parameters {K1,k2,k3} could be fixed during the optimization.  User simply set  k2_min = k2_max = Desired Value.
5. Enabled loading of the GE-scanner diffusion dataset by providing a specialized procedure to load    b-values from the private GE tags.
6. Corrected defect when FVX format file for storing the parameters of Dynamic Experiment are changed.
7. Implemented the "Blood Volume" User parameter for Sokoloff  Short\Long models.
8. Loading ANALYZE file:  fixed defect of incorrect truncation of signed negative numbers to 0.
9. Implemented new User- Interface-level function that produces all 6 projections of the SulciPrint3D directly from the BrainMask
10. Implemented User-level  Active volume "Mirror along axis" function. This is under "MainMenu>3D Projection>Mirror along axis".  Function is now working for all 3 axis {X,Y,Z}.
11. Corrected and updated the "Open TAC as 4D volume" function.  This allows user to specify the *.TXT file containing the TAC.
12. Implemented basic variant of Monte-carlo simulation for all Dynamic Models in FireVoxel.
13. Implemented a new menu "Dynamic Processing" in the MainFrame part of the processing (i.e. when no volume is required to be loading).
14. Implemented the functionality for F3\F4    Roi Stats  3D\4D:  when ROI is missing, function calculates stats for the ROI that covers the entire volume.
15. Dynamic Experiment framework: fixed defect in all models involving the Input Function(s).
16. Enabled that Concentration conversion parameters are remembered and then recalled between several calls to the corresponding dialog box.
In Menu items:
1. "MainFrame>Applications>Convert TAC to Concentration"
2. "Main Menu>4D Process>Convert TAC to Concentration"

Enabled that Concentration conversion parameters are remembered and then recalled between several calls to the corresponding dialog box.
Dynamic Experiment framework: fixed defect in all models involving the Input Function(s).
When Concentration conversion other than "Signal" was specified, the converted signal was posted
over the original signal data.  So on the following runs, the model calculations were entirely wrong.

Wednesday, August 19, 2015

Implemented the functionality for F3\F4    Roi Stats  3D\4D:  when ROI is missing, function calculates stats for the ROI that covers the entire volume.
Implemented a new menu "Dynamic Processing" in the MainFrame part of the processing (i.e. when no volume is required to be loading).


Tuesday, August 18, 2015

Implemented basic variant of Monte-carlo simulation for all Dynamic Models in FireVoxel.

User starts with obtaining the required ROI and saving it to the file.

User create a 4D-volume from the specified TAC setting the level of noise (10% in this example). Then runs the chosen model over the 4D volume, where each voxel corresponds to the original TAC+ random Noise.

Resulting is the map(s) of the selected parameters (K1 in this example).



Next user is able to do some basic statistics on the specified parameter, K1 in this case.

Corrected and updated the "Open TAC as 4D volume" function.  This allows user to specify the *.TXT file containing the TAC.  User specifies dimensions of the resulting volume where which voxel is constructed given the specified TAC + random Noise (Noise level is specified by the User).
This functionality allows to perform Monte-Carlo modelling of the Dynamic Models.

Single Timepoint of the resulting volume where vox(x,y,z) = TAC[t]+RandomNoise(x,y,z)

Monday, August 17, 2015

Implemented User-level  Active volume "Mirror along axis" function. This is under "MainMenu>3D Projection>Mirror along axis".  Function is now working for all 3 axis {X,Y,Z}.
Implemented new User- Interface-level function that produces all 6 projections of the SulciPrint3D directly from the BrainMask.  There is no need to generate intermediate   SulciPrint3D structure. Function is under the MainMenu>Applications>BrainPrint>Generate SulciPrint2D from BrainMask (6 projections).


Wednesday, August 12, 2015

Initial tests of the "Snowball" methodology for automatic fluid registrations, segmentations, and organ localization.  In one scenario we would try to locate both kidneys on the volume, fully automatically, using only sparsely defined library of shapes.


Red is a template shape approximating a kidney.  Current positioning describes a step of iterations when template is moving across the volume with some substantial step (but smaller than the Snowball capture radius).

After just few iterations of a fully automatic procedure, we end up with this localization.  It has a certain match score.  Hypothetically, an automatic localization algorithm might work simply traversing all possible positions with step (SX,SY,SZ)<Snowball Capture radius.  Position with the highest score is chosen.



This is just for illustration purposes, how primitive features are constructed at each step of the iteration.

































Loading ANALYZE file:  fixed defect of incorrect truncation of signed negative numbers to 0.
Implemented the "Blood Volume" User parameter for Sokoloff  Short\Long models.

Tuesday, August 11, 2015

Saving Active Dynamic model settings to FVX file:  corrected a design flaw.  Sometimes we change the number of Free and Output parameters in the models.  If this model was save previously to FVX file as an Active model the current version of FireVoxel often would not be able to load such FireVoxel file and it will be lost.  In the corrected version, only the warning that the Model design was changed would show but file would always be loaded.
Enabled loading of the GE-scanner diffusion dataset by providing a specialized procedure to load                 b-values from the private GE tags.
Sokoloff model (Long formula):  added additional user controls so the values of all parameters {K1,k2,k3} could be fixed during the optimization.  User simply set  k2_min = k2_max = Desired Value.

Sokoloff model (Short formula):  added additional user controls so the values of all parameters {K1,k2,k3} could be fixed during the optimization.  User simply set  k2_min = k2_max = Desired Value.


Sunday, August 9, 2015

MainMenu>Volume>Smooth (and other smoothing operations):  restored correct operation on the ROI.
Implemented a new variant of smoothing of the Sparse Vector Field obtained as a result of the feature match. Jacobian of the smooth field is within the specified interval at all the voxels of the volume.

Saturday, August 8, 2015

Implemented a function to measure a jacobian of the transformation corresponding to the Vector Field.
Implemented an iterative smoothing function of the Vector Field till the jacobian at every voxel falls within the specified interval of values.

Thursday, August 6, 2015

Experimenting with the Nearest-neighbor based estimation of the sparse vector Field (this is instead of traditional gaussian smoothing step used in the literature:  Demons,ART, etc)

Wednesday, August 5, 2015

Deformable registration/segmentation:  implemented and tested local affine transform functions around the "Focus of maximum displacement of the vector field"
Deformable registration:  experimented with using the Polynomial transforms obtained by Amoeba optimization using the Jacobian constraints.

Sunday, August 2, 2015

Volume reslicing using polynomial transforms:  corrected imprecision defect due to incorrect rounding.

Friday, July 24, 2015

FireVoxel Build 192 is released.

1. Fixed the crash when  MainMenu>Register4D>AutoFocus 4D is called for the (2D+t) volumes.
2. LoadDicom dialog:  Composite series:
a) Fixed the crash when in dialog "Include composite Series"  NO is selected.
b) In case of the composite series, automatically popup the Range dialog box
to choose which subseries to load.
3. Open DICOM dialog:  fixed defect so that the complete path is remembered for the next opening of the dialog
Open DICOM dialog:  fixed defect so that the complete path is remembered for the next opening of the dialog.
LoadDicom dialog:  Composite series:
a) Fixed the crash when in dialog "Include composite Series"  NO is selected.
b) In case of the composite series, automatically popup the Range dialog box
to choose which subseries to load.
Fixed the crash when  MainMenu>Register4D>AutoFocus 4D is called for the (2D+t) volumes.
FireVoxel Build 191 is released.

1. MainMenu>3D Projection>{Make Isotropic,Rotate and Create New volume} functions.  Fixed defect when the function would run but resulting document would not be created.
2. 4D registration of a single slice Renal volume (CIR):  corrected defect that produced the message "Incorrect Isotropic resolution".
3. Single slice registration 3D\4D:   fixed defect when URAL\URALTAU measure would not work
4. AutoFocus registration (SingleSlice volumes):  corrected defect when constructing Target operand with Downscale>1.
5. CERENE3D workflow:  modified kidney registration menu to include separate items for 2D (CIR) and 3D (NUCS) datasets.
CERENE3D workflow:  modified kidney registration menu to include separate items for 2D (CIR) and 3D (NUCS) datasets.
Checking a potential problem in PERFUSION datasets.  There seem to be dark frames included at regular intervals in the dataset.  Is this OK?


Cleared the renal single slice registration dataset that was not registering well before, great registration quality.  Screenshot shows registration of Target ROI to one of the following timepoints (#8) that was not registered well before.


AutoFocus registration (SingleSlice volumes):  corrected defect when constructing Target operand with Downscale>1.

Thursday, July 23, 2015

Single slice registration 3D\4D:   fixed defect when URAL\URALTAU measure would not work.  Defect was in improperly cleaning the margins of the gradient map in 2D case (whole map was set to 0).
4D registration of a single slice Renal volume (CIR):  corrected defect that produced the message "Incorrect Isotropic resolution".

Tuesday, July 21, 2015

MainMenu>3D Projection>{Make Isotropic,Rotate and Create New volume} functions.  Fixed defect when the function would run but resulting document would not be created.

Monday, July 20, 2015

FireVoxel Build 190 is released.

1. CERENE3D workflow Menu:  added "T1: Segment Kidney  {BLANKET,CONSTR}" items.
2. Breast lesion workflow:  corrected the defect in   PET->T1 registration when the SI volume has to be specifically Active resulting in the warning message
3. Dialog EdgeWaveLive: fixed the defect when changing one of the "Live parameters" would add an additional mask layer without deleting the present layer first.
4. Implemented new semi-automatic Kidney Segmentation (3D from T1). It is based on EdgeWave Live semi-automatic approach.  Constraints are specified instead of Blanket.
EdgeWave Live with CONSTRAINTS kidney segmentation:
Completely Seedless processing is available now.  To view the prototype In present interface we simply set   SIlow\SIhigh = (0.1,100).  Then we just set the appropriate Edge threshold by dragging the slide bar.

SiLow\SiHi are set to INCLUDE ALL.  The only parameter to update is the Edge threshold.

Implemented new semi-automatic Kidney Segmentation (3D from T1). It is based on EdgeWave Live semi-automatic approach.  Constraints are specified instead of Blanket. Generally only 2 slices require user to draw Start and End constraint.
A19 (coronal):  User specifies   Start and End constraint stroke.


User call    MainMenu>ROI>Morph Convex to construct full constraint.




User calls   Applications>CERENE3D>T1: Segment Kidney with Constraint

Sunday, July 19, 2015

Dialog EdgeWaveLive: fixed the defect when changing one of the "Live parameters" would add an additional mask layer without deleting the present layer first.
Breast lesion workflow:  corrected the defect in   PET->T1 registration when the SI volume has to be specifically Active resulting in the warning message.  Now any layer can be active before the operation.
CERENE3D workflow Menu:  added "T1: Segment Kidney  {BLANKET,CONSTR}" items. 
Added a place holder for the automatic kidney seed detection.


Wednesday, July 15, 2015

FireVoxel Build 189 is released:

1. AutoFocus4D dialog box:  corrected a crash defect due to unsupported even handler after removing the SliceMode combo box.
2.Breast lesion registration:  updated default registration parameter to accomodate a requirement that a precise (not overinclusive) lesion ROIs would be provided.
3. AutoFocus3D\AutoFocus4D providded separate allowance intervals for each of the axis {x,y,z}.
4. PET-FDG Motion correction:  increase speed by x10+ times.  This is base on the observation that gross motion is usually due to the "Turning of the head" rather than "Tilting" during exam.
5. "Small" vs. "Large" motion correction options were eliminated and folded into one single Motion Correction
6. PET motion correction:  modified default parameters to increase the search range for better registration quality without any speed penalty (compensated by choosing smaller radius in the URAL feature detector).
7. 3D->3D,4D->3D} slice-by-slice registration:  implemented option for the current timepoint of source to be used to calculate a single transformation for all timepoints. Integrated this new functionality into the Breast lesion registration workflow.
8. "Layer Control Dialog> Load DICOM layer" :  fixed the defect  crash defect when "Load DICOM" button is pressed.
9. AutoBuild Test added subtests for:  DialogAutoFocus3D, DialogAutoFocus4D, EPI->T1 registration in Breast lesion workflow, for the automatic segmenation of Blood Vessel map, CERENE3D  kidney perfusion coregistration.
10. Breast lesion workflow:  added functionality and user interface to register PET-3D volumes to T1-3D volumes.
Auto Build Test:   added subtest for CERENE3D  kidney perfusion coregistration.
AutoBuild Test:  restored the subtest for the automatic segmenation of Blood Vessel map.

Tuesday, July 14, 2015

Breast lesion workflow:  added functionality and user interface to register PET-3D volumes to T1-3D volumes.
AutoBuild Test: added subtest for EPI->T1 registration in Breast lesion workflow.
AutoBuild Test:  added subtests for  DialogAutoFocus3D  and DialogAutoFocus4D.
"Layer Control Dialog> Load DICOM layer" :  fixed the defect  crash defect when "Load DICOM" button is pressed.

Monday, July 13, 2015

{3D->3D,4D->3D} slice-by-slice registration:  implemented option for the current timepoint of source to be used to calculate a single transformation for all timepoints.

Integrated this new functionality into the Breast lesion registration workflow.
PET motion correction:  modified default parameters to increase the search range for better registration quality without any speed penalty (compensated by choosing smaller radius in the URAL feature detector).

Sunday, July 12, 2015

PET-FDG Motion correction:  increase speed by x10+ times.  This is base on the observation that gross motion is usually due to the "Turning of the head" rather than "Tilting" during exam.  New FireVoxel functionality was used that allowed to set separate Max Rotation angle intervals for each axis.

"Small" vs. "Large" motion correction options were eliminated and folded into one single Motion Correction.


Saturday, July 11, 2015

4D Kidney registration, case nucs05.  This is a large rotation (12+ deg) case.  Default registration parameters (max rotation) were increased to capture large rotation.  New feature of separate Max Rotation angles for each axis has allowed not to increase processing time.


Registration on the timepoint of the extreme rotation.

Here is the processing result in (.FVX)
https://drive.google.com/file/d/0B2lI9iEKOqv6UVFGclppVUEzWEE/view?usp=sharing









Friday, July 10, 2015

AutoFocus3D\AutoFocus4D providing separate allowance intervals for each of the axis {x,y,z}.  This would potentially allow to achieve  high speed gain in registration by selecting only some axis where the principal rotation occurs.

Thursday, July 9, 2015

Breast lesion registration:  updated default registration parameter to accomodate a requirement that a precise (not overinclusive) lesion ROIs would be provided.
AutoFocus4D dialog box:  corrected a crash defect due to unsupported even handler after removing the SliceMode combo box,

Wednesday, July 8, 2015

FireVoxel build 188 is released.

1. Developed command line interface and *.exe module to access all the functionality of the Dynamic Modelling module.
2. DicomOpen dialog box: corrected crash when STUDY item is selected and attempted to load.
3.DICOM Open dialog box:  combined 2 buttons for loading 4D volumes into a single  "Load 4D" button.  This replaces "Load Siblings" and "Load Range 4D" buttons.
4. 3D\4D registration and corresponding dialogs - allow individual axis of Autofocus to have separate MaxScale values.  This would allow to address registratios with the individual axis distortion (f.e. dr. Sigmund`s  PET-MR registration problem)
5. AutoFocus4D registration:  Reduced SliceMode option to  checkbox Mode2D. Moved this option to the MEASURE panel.
6.AutoFocus4D dialog box:  encapsulated the dialog header into the code file and exposed the global function for calling the dialog.
7.Implemented standalone User-level function "Register AutoFocus3D slice-by-slice"
8. Register by DICOM tags only:  implemented an option when user is asked to present result as the new layer or create an entirely new document.
9. Completely removed the 2D mode option from the Register 3D autofocus dialog box, since this function is a standalone at User-level.
10. Register 4D Autofocus,  "2D Mode" option is now an attribute of the VA_AF4D structure.
11. Removed the redundant "Correct orientation" checkbox from the Register Autofocus 3D dialog box.

12. Workflow breast lesion registration:  implemented a 1-click function to register EPI-4D volume to the T1-3D  volume.  Provided both {with ROI clip,no Roi clip} variants.
Workflow breast lesion registration:  implemented a 1-click function to register EPI-4D volume to the T1-3D  volume.  Provided both {with ROI clip,no Roi clip} variants.


specialized workflow menu


registered EPI lesion overlaid semi-transparent over the T1

Tuesday, July 7, 2015

Removed the redundant "Correct orientation" checkbox from the Register Autofocus 3D dialog box.
Completely removed the 2D mode option from the Register 3D autofocus dialog box, since this function is a standalone at User-level.

Register 4D Autofocus,  "2D Mode" option is now an attribute of the VA_AF4D structure.

Monday, July 6, 2015

Register by DICOM tags only:  implemented an option when user is asked to present result as the new layer or create an entirely new document.
Implemented standalone User-level function "Register AutoFocus3D slice-by-slice"
AutoFocus4D dialog box:  encapsulated the dialog header into the code file and exposed the global function for calling the dialog.
AutoFocus4D registration:  Reduced SliceMode option to  checkbox Mode2D. Moved this option to the MEASURE panel.

Wednesday, July 1, 2015

3D\4D registration and corresponding dialogs - allow individual axis of Autofocus to have separate MaxScale values.  This would allow to address registratios with the individual axis distortion (f.e. dr. Sigmund`s  PET-MR registration problem)
DICOM Open dialog box:  combined 2 buttons for loading 4D volumes into a single  "Load 4D" button.  This replaces "Load Siblings" and "Load Range 4D" buttons.
DicomOpen dialog box: corrected crash when STUDY item is selected and attempted to load.

Tuesday, June 16, 2015

Developed command line interface and *.exe module to access all the functionality of the Dynamic Modelling module.

Monday, June 15, 2015

Provided additional options for deleting Vector ROIs (landmarks).


Added a small "Landmark\Vroi debugging tool".  Under MainMenu>ROI>List All Vector ROIs command.  Would show the list of all landmarks, with their corresponding time intervals and whether they are visible or invisible.


Saturday, June 13, 2015

Restored the Automatic Build Test for the Model (34) "Sokoloff  using long formula"

Friday, June 12, 2015

Update the ABT test for "Sokoloff - short formula model".
For PET processing, added new logic - if user specifies the concentration conversion other than "Signal Values" - information dialog box pops up informing the user.  Then Signal is used for Concentration of Input function
Verified basic operation of the "T1-mapping using inversion recovery" model on the small phantom data.  "Modulus (1)" sub-method was used.
Upgraded the "AATH" to the new optimization approach:  Model calculation are performed by User-specified method.  Residual function estimates in terms of the original signal.


Restored the ABT subtest for this model.


Upgraded the "Modified Tofts model" {Ktrans,Ve,Va} to the new optimization approach:  Model calculation are performed by User-specified method.  Residual function estimates in terms of the original signal.
Restored the ABT subtest for this model.

Thursday, June 11, 2015

Upgraded Tofts model {Ktrans,Ve} to the new optimization approach:  Model calculation are performed by User-specified method.  Residual function estimates in terms of the original signal.
Restored the ABT subtest for this model.