Search This Blog

Thursday, November 5, 2015

Dual peak (bi-modal?) histograms:  implemented an initial version of algorithm that find an optimal representation of histogram as the sum of 2 gaussians.  Global optimization framework is used.
Any distribution other than Gaussian would fit this algorithm too.

Monday, November 2, 2015

DicomTree load:  added extra diagnostics when composite series are present but some files are missing so the logical structure could not be constructed.
Mouse PET dynamic dataset (from Jean): latest version of FireVoxel loads it without problems as a dynamic  volume (33x26x26  with 48 timepoints)



On the sample brain from EdgeWave manual:
1.  applied N3
2. performed EdgeWave segmentation using default parameters.
3. Brain mask was automatically thresholded to get WM\GM masks.
4. First Otsu then Z-algorithm were used.

Auto histogram separation over the Brainmask:   Otsu  vs. Z-algorithm
Resulting Wm\Gm masks:  Otsu vs. Z-algorithm

IVIM- regular model:  extended to calculation to allow three b-values to be present.
IVIM segmented fit model: Provided the diagnostics and clear requirements message on b-values.
Provided new icons for the FireVoxel main toolbar.
Provided several variants of the Breast FGT processing module.

Friday, October 30, 2015

Dialog RoiStats3D:  integrated algorithm selection tool  {Otsu,Zigalga} for segmenting the Histogram.

Comparison of the Otsu algorithm vs. Zigalga on breast histogram:
Case ZAMB:  old Otsu algorithm

Case ZAMB:  new Zigalga algorithm
Developed a prototype of a novel  Histogram  splitting algorithm, comparing to Otsu on the breast
case BIBI:  Current segmentation algorithm:  Otsu

case BIBI:  New histogram splitting algorithm: Zigalga.

Wednesday, October 28, 2015

Registration by DICOM-tags only.  Corrected the defect so that the Window\Level settings after the operation are exactly those of the source volume.

Tuesday, October 27, 2015

Breast FGT project:  PRE- and POST- image registration in case of the different dimensions. Registration is done using DICOM tags only.  Processing time <5 sec.  Alignment seems to be good.
Alignment of PRE- and POST- images in FGT project after DICOM-tag registration.
DICOM loading of the files containing Rescale\Inrtercept information:  Improvement to user interface was done.  Even if the Rescale\Intercept are "trivial" (i.e.  1/0) we now ask the user if the volume has to be loaded as INTEGER or REAL.  In case of REAL user needs to specify additional offset\factor.
This fixes the practical problem with some of FGT breast exams.

Saturday, October 24, 2015

Pressing SHIFT button is NOT required anymore during the "Select by rectangular Net" function when mouse is dragged and selects all the objects within the rectangular area.
Change of the workflow for using the Window Level\Width tool.  User now has to press the new  Window Level\Width button on the Toolbar.  This puts FireVoxel into the "Window Level\Width" mode with the appropriate Mouse Cursor change.  Then user can change the Window Level\Width several time.  On Pressing ESC  the cursor changes back to "SELECT" mode.

This design is now matching the one in Synedra Viewer.

!Important:  This also fixes error when then  View Filter  Window Level was randomly changed after loading the Vector ROI.  This was happening because the Mouse Move command is sent after the closing the Open VROI file dialog.  This Mouse Move was erroneously interpreted as the request to change the Window Level\Width.



RoiStats 3D could be applied to specified range of values in data.
Specify "Value Interval [Start,End]" parameters.

Implemented fully functional version of Breast FGT measuring workflow.
Updated the Batch parameters dialog to include N3 parameters.


Fixed the defects with the Status bar progress indicator in
VolChangeResolution and VolN3 functions.
Fixed defects with the progress status bar text messages while loading the FVX document.

Thursday, October 22, 2015

MainMenu>Volume>Crop with 4D ROI- all layers.  "Enabled" flag is now copying correctly for all the layers in the entity.
Layer Control Dialog> Load DICOM :  now using current UserOptions.LoadDicomFolder settings.
MainMenu>ROI>List All VROIs function now displays the message  "No VROIs are present".
Provided an initial coding of the Breast FGT Batch processing dialog.

Tuesday, October 20, 2015

FGT Batch dialog, initial layout. It is similar to CT batch processing layout.





1.  Source folder specifies where the folder containing the FVX files is.  It might have  subfolders.
2. Output masks:
    2a) checkbox specifies if they have to be output
    2b) Location specifies where the masks go
3,  Output log specifies output text file.

FireVoxel Build 200

1. Fixed entropy calculation
2. Fixed crash defect: in Dialog Open DICOM:  when Browse functionality is used to change the DICOM folder, pressing the Info button causes the crash.
3. DICOM open dialog:   fixed the loading problem when very long path of the DICOM file is specified.
4. N3-nonuniformity correction tool - enabled to work with Real-valued volumes.
5. Enabled BiCal to work with the Real-value images. Processed sodium image with BiCal.
6. Fixed the "total non-function" defect in VA_VolMul (Volume Multiply) function. This was used in Sulci Depth detection and BiCal.
7.Implemented initial version of perivascular space segmentation under "MainMenu>Segment>Detect Bright Spots" with the Dialog.

N3-nonuniformity correction tool - enabled to work with Real-valued volumes.

Monday, October 19, 2015

Enabled BiCal to work with the Real-value images. Processed sodium image with BiCal.
Original Sodium image

BiCal processed sodium image

Fixed the "total non-function" defect in VA_VolMul (Volume Multiply) function. This was used in Sulci Depth detection and BiCal.
Implemented initial version of perivascular space segmentation under
"MainMenu>Segment>Detect Bright Spots".

Sunday, October 18, 2015

Saturday, October 17, 2015

DICOM open dialog:   fixed the loading problem when very long path of the DICOM file is specified.
Fixed crash defect: in Dialog Open DICOM:  when Browse functionality is used to change the DICOM folder, pressing the Info button causes the crash.

Thursday, October 15, 2015

FireVoxel Build 199 is released.

1.Added submenu   MainMenu>Applications>Breast MR FTG>Correct non-uniformity using BiCal. Provided initial parameter set for non-uniformity correction.
2.  ROI>Convert ROI to VROI:  after the operation is completed, zooming to the center of the last VROI.
3. Replaced the corresponding menu item:  "Enclose connected components by Vector ROIs". MainMenu>Volume>Crop with 4D Vector ROI. Fixed the messages in case of unsuitable objects and\or selections.
4. Added "implicit selection", i.e. if a single non-selected VROI is present, it will be treated as the selection.
5.Majority of the FireVoxel dialog boxes (33 total):  Merged the header and source file of the dialog.  Reduced each occurrence of the Dialog call down to a single line, f.e.   "FV_DlgBical( Parm)
6. Code engineering:  moved the CVol class from the FireVoxel project (mostly user interface) to the VolumeAnalyze project (mostly algorithms).
7. Dialog RoiStats3D:  integrated histogram splitting into N segments so that the in-class variance is minimized.
8. Menu item   "MainMenu>ROI>Layer Operations" is moved to "MainMenu>Volume>Layer Operations".
9.  Dialog RoiStats3D: Fixed calculation of the Skewness and Kurtosis. Added the information about entropy for the current binning of the histogram. Change the format of the ROI information.
10. Dynamic Processing module:  fixed a bug when variable was not initialized in case the voxel was not processed and the VOIDVOX values had to be output.
11.On Mouse move handling:  in the recent Builds we added the requirement of holding the Shift key to enable operation of tools such as {VectorROI,ZoomByWindow} etc.  This was due to the addition of the Window Center\Width functionality that required to analyze regular moves. Now this requirement of pressing Shift is removed (i.e. UI restored to the pre-Build 196 state).
12. Auto Build Test:  added the subtest for ADC maps.
13. Dynamic Experiment Extrapolation framework:  added User Interface to specify additional dynamic coordinates to ones already present in the experiment. Fully implemented Extrapolation with all features for {ADC,Kurtosis,Sokoloff} models. Dynamic Experiment dialog:  implemented the "Extrapolate" button and corresponding programming support for all models (only    {Kurtosis,Sokoloff} are supported).
14. Perform code maintenance and optimizations in DynExp.cpp responsible for the mid-layer of the Dynamic Processing models.
Added submenu   MainMenu>Applications>Breast MR FTG>Correct non-uniformity using BiCal.
Provided initial parameter set for non-uniformity correction.
BiCal vs. N3   NU-correction result comparison
BiCal   3-14-60
N3-default

Wednesday, October 14, 2015

1.  ROI>Convert ROI to VROI:  after the operation is completed, the view centers on the center of the last VROI completed.

2. Replaced the corresponding menu item:  "Enclose connected components by Vector ROIs"
MainMenu>Volume>Crop with 4D Vector ROI
1.  Fixed the messages in case of unsuitable objects and\or selections.
2.  Added "implicit selection", i.e. if a single non-selected VROI is present, it will be treated as the selection.
Majority of the FireVoxel dialog boxes (33 total):  Merged the header and source file of the dialog.  Reduced each occurrence of the Dialog call down to a single line, f.e.   "FV_DlgBical( Parm)

Monday, October 12, 2015

Sunday, October 11, 2015

Code engineering:  moved the CVol class from the FireVoxel project (mostly user interface) to the VolumeAnalyze project (mostly algorithms).

Friday, October 9, 2015

Quick test of the "Perivascular space segmentation algorithm"
Dense breast processing example - segment out fat  using "Segment Bright Ridges"


Thursday, October 8, 2015

"Segment ducts" algorithm using the "Segment dark ridges" function.

Breast image:   N3 vs. BiCal comparison.
N3                                                                      BiCal
Dialog RoiStats3D:  integrated histogram splitting into N segments so that the in-class variance is minimized.  

Wednesday, October 7, 2015

Menu item   "MainMenu>ROI>Layer Operations" is moved to "MainMenu>Volume>Layer Operations".
Dialog RoiStats3D: Fixed calculation of the Skewness and Kurtosis.
Example of the chest wall separation using the "Fill & Morph Arc" function.  Original contours in Blue are drawn 10 slices apart.  Red contours are generated by Morph function.

Tuesday, October 6, 2015

Dialog Roi Stats3D:   added the information about entropy for the current binning of the histogram

Change the format of the ROI information.
Dynamic Processing module:  fixed a bug when variable was not initialized in case the voxel was not processed and the VOIDVOX values had to be output.
On Mouse move handling:  in the recent Builds we added the requirement of holding the Shift key to enable operation of tools such as {VectorROI,ZoomByWindow} etc.  This was due to the addition of the Window Center\Width functionality that required to analyze regular moves.

Now this requirement of pressing Shift is removed (i.e. UI restored to the pre-Build 196 state).
The only tool that requires pressing Shift is "Select by Window".

Window center\width is working as advertised.
Auto Build Test:  added the subtest for ADC maps.
Dynamic Experiment Extrapolation framework:  added User Interface to specify additional dynamic coordinates to ones already present in the experiment.
Fully implemented Extrapolation with all features for {ADC,Kurtosis,Sokoloff} models.

Monday, October 5, 2015

Dynamic Experiment dialog:  implemented the "Extrapolate" button and corresponding programming support for all models (only    {Kurtosis,Sokoloff} are supported).
This framework would allow to construct synthetic "Extrapolated" volumes that would contain only modeled voxels for some or all dynamic coordinates.

Thursday, October 1, 2015

Perform code maintenance and optimizations in DynExp.cpp responsible for the mid-layer of the Dynamic Processing models.

Monday, September 28, 2015

FireVoxel Build 198 is released.

1. Dialog RoiStats3D: Added a functionality to control Number of Bins in the Histogram.  User enters the number and to update the histogram the focus should leave the field (press Tab).
2. "Mouse windowing" of the SI->display mapping:  changed the orientation of the vertical movement when the up vertical movement increases the value of the Window center.
3. RoiStats3D dialog:  added   Histogram Skewness and Kurtosis to information panel.
4. Spacebar button would maximize the Document View.
Document View window:  Maximize when the spacebar button is pressed.
Dialog RoiStats3D: Added a functionality to control Number of Bins in the Histogram.  User enters the number and to update the histogram the focus should leave the field (press Tab).

Saturday, September 26, 2015

"Mouse windowing" of the SI->display mapping:  changed the orientation of the vertical movement when the up vertical movement increases the value of the Window center.
RoiStats3D dialog:  added   Histogram Skewness and Kurtosis to information panel.

Friday, September 25, 2015

FireVoxel Build 197 is released:

1. FireVoxel\DLLs\DCMTK - moved the whole code base entirely into "8-byte structure tag alignment" to avoid any sideeffects of different module alignment.
2. Added a functionality to change Signal  Window Center\Width settings using mouse movement with the Left Mouse button pressed.
3. Fixed the crash on  ROI image only (without SI volume) when the RoiStats3D dialog (F3) is activated.
4. Color Dialog defects:  fixed the   "always 0 color" and "crash on the exit" defects by recompiling the FireVoxel.exe module with 8-byte alignment.
5. Replaced all numerical ("double float") fields handling within all of the 76 Dialog boxes in FireVoxel.
6. MFC dialog "double float" numerical field failure:  developed a workaround by replacing MFC function:   AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, double& value)
7. 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.
8. 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.
9. Fixed the defect when after running the "Segment Whole Kidney with blanket", the Volume display interpolation would always reset to FALSE.
10. Implemented new model:  Sokoloff (Short formula) with 2 Input functions and Double Pass (with optional parameter fixing after the first pass).

FireVoxel\DLLs\DCMTK - moved the whole code base entirely into "8-byte structure tag alignment" to avoid any sideeffects of different module alignment.
Added a functionality to change Signal  Window Center\Width settings using mouse movement with the Left Mouse button pressed.
Vertical movement - changes Window Center
Horizontal movement - changes Window Width

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.