Search This Blog

Wednesday, March 22, 2017

FireVoxel Build 236 is released.
AutoFocus 3D dialog:   added the button in the  "Load Initial Transformation" panel to obtain the initial transformation from the DICOM tags.

Added ROI>Clear ROI outside [Z0,Z1] function that allows only to keep the specified slices of the ROI.

Sunday, March 19, 2017

MainMenu>3D Projection>Mirror  {X,Y,Z}

1.  Fully parallelized for great speed up.
2.  Added a progress bar.
3.  Operation is now applied to all enabled layers  (as controlled in Layer Control Dialog).

Friday, March 17, 2017

Register by DICOM-tags:  enabled that all the Source Document layers are transformed, not just the main layer.

Thursday, March 16, 2017

Wednesday, March 15, 2017

Moved many DICOM functions from FireVoxel.exe module to VolumeAnalyze.dll
Fixed defect in  Frame Compression\Decompression (NNrepeat codec).

Tuesday, March 14, 2017

Loading the CT-4GB electrode image:

When we use the default and usual   {Add=1024}  during the load  we obtain the following image


But the area that has the 1024 values, what is it?  It seems to be the Air....

So instead if during the DICOM load we are using {Add=0}



Sunday, March 12, 2017

CT-4GB (Mouse-electrodes):
a) Fixed the Cropping function
b) Fixed the Save\Load to MIDAS format
c) Fixed the Save\Load to FVX format.
Fixed the RoiStats3D craash defect on the CT-4GB image (mouse\electrodes).

Saturday, March 11, 2017

FilmView:  sped up by x2.5 on the CT-Electrode (4GB) volume.

Added a WaitCursor when Document is displayed in FilmView.
Re-implemented the VolumeHistogram function and OptimalWindowCenter function due to re-engineered DICOM Load.

Thursday, March 9, 2017

4GB CT Dicom case:  optimized memory during the Dicom load and enabled the compression.  This reduced memory consumption by x5 and speed  x2+  during the DICOM load.

Tuesday, March 7, 2017

AutoFocus3D  dialog box:   fixed the Tab order of the controls.
Fixed the PainBrush error when the nothing can be drawn\erased on any timepoint except t0.

Monday, March 6, 2017

Moved the Register4D menu item to under the General Register menu.

1. Registration cross-correlation measure:   Fixed defect when either Source or Target were completely = 0
This was causing an infinite loop during the registration.

2.  Added general warning for all registration measure if the partial result of calculation was NAND.


Sunday, March 5, 2017

Registration of PET-MR exam (from Jean Logan):  

1. PET:  Perform "MainMenu>3D Projection>Mirror voxels"
2. Perform EdgeWave BrainMask detection on Axial  using the "MainMenu>Segment>Axial BrainMask"
3. After selecting the last timepoint of PET as the base for the registration, using the MR+BrainMask as the target, performed registration using the CrossCorrelation measure.





Friday, March 3, 2017

Paintbrush drawing defect:   Fixed the crash when after minute or so of intensive drawing the FVX was crashing.
Fixed the Crash defect:   MagTrace tool starts + Ctrl button.
Concentration Conversion dialog:
When User changes the concentration conversion method,  only the fields related to this active method would become enabled.  The rest of the fields would be grey.


Thursday, March 2, 2017

Sunday, February 26, 2017

Thursday, February 23, 2017

Whole Breast segmentation.  Added a Skin Peel procedure that removes a 5mm layer contacting the Air.  This should eliminate the problem at the following step of FGT\FAT separation.

FireVoxel Buld 233 is released.

Wednesday, February 22, 2017

Fixed cluster of the defects related to K-trans "invalid units" report:

1.  Fixed the Unit validation function to include all the units available in ALL models.
This defect was also present in IVIM, ADC etc in about dozen of models.

2. Fixed the defect when reading the units from .IM file (treat the line end "\n") properly.

Tuesday, February 21, 2017

LayerControl dialog box> Load DICOM button:  extended functionality so several DICOM volumes could be opened WITHOUT closing the OpenDicom dialog and regenerating the DICOM tree.
It is similar to DICOM Document Multi-Load

Tuesday, February 14, 2017

Updated the logic for the Title of the "Full DICOM Info for the selected item" inside the OpenDialog dialog.
Note: an identical dialog also can be called from the LayerControl dialog.  In that context it will display the current Time and Slice index of the volume.

Monday, February 13, 2017

Friday, February 3, 2017

Implemented the DrawViewCache for individual Volume entity that holds the snapshots for all Views (windows) containing the present Volume.  F.e. this is very important for multiprojection views, say 3 projections, would be all repainted from the separate cache.  This speeds up many operations, such as 3D Paintbrush and constructing of VROI on multiprojection views.

This also takes care of reported defects with FilmView and other slice display,

Wednesday, February 1, 2017

Fully parallel implementation of NO-SKIP brush in All orthogonal projections.

Monday, January 30, 2017

Implemented the "NO-SKIP" Paintbrush in volumetric entities.
Implemented  Volume Entity Draw Cache to allow skip the Decompression and Volume->To->Screen transform in Multilayer entities.

Friday, January 27, 2017

Whole Breast Segmentation:  Implemeted the LEFT+RIGHT breast separation:


Thursday, January 26, 2017

Implemented ABT test for the ChestWall\WholeBreast segmentation workflow.

Wednesday, January 25, 2017

Implemented additional cropping specified by the endpoints of the Initial Seed.


MapFit algorithm:
RidgeMap agent was moved into individual slice processing and became 2D for the significant speedup.

Wednesday, January 18, 2017

Re-enabled the "Polyline Properties" dialog which was not coming up when doubleclicked on Polyline,

Monday, January 16, 2017

Chest Wall segmentation:  enabled the detection of the Initial Seed Contour in the Sagittal "Standing" position.  This way no cropping or rotation would be required in the latest clinical image batch.

Thursday, January 12, 2017

Substantial MapFit algorithm improvement:  during the iteration of contour adjustment, the individual point replacement was calculated as "winner-takes-all" from competing displacements.
Now optionally there is an AdaptiveDisplacement mode. F.e. when several displacements have very similar scores ("unsure" situation)  the proposed displacement is normalized by the level of the confidence of the winning displacement.




Tuesday, January 10, 2017

Global Optimization on binary sets:  improved the speed by x3 due to algorithmic improvements.

Thursday, December 22, 2016

Signal truncation in Pulsatility study:

Signal in certain areas with high signal is always truncated by 4095 (=12 bit).  This includes some blood vessels. Is this expected?

F.e. majority of the voxels in the Blue ROI (pictured) have a constant Signal=4095 through entire timespan.


Tuesday, December 20, 2016

Implemented a Multiple-Selection capability inside the DICOM Browser dialog box.
Note:  Selection in this dialog is done by checking the items, not just highlighting them.
CTRL and SHIFT buttons are working.  Items could selected by holding {CTRL,SHIFT} be either
a) clicked by mouse :  CTRL=flip check state,  SHIFT = check state on
b) using Up\Down keyboard key  : SHIFT = check state on.  CTRL is not allowed.


Sunday, December 18, 2016

Completely re-engineered parsing of the DICOM series to extract logically connected volumes.
There will be no more "Inconsistent DiCOM files" messages.



Thursday, December 15, 2016

DICOM Dialog box:  fixed the Copy function when Image Nodes are selected.  It was not copied before when individual image nodes were checked, but worked for the entire series only.

Wednesday, December 14, 2016

CW Segmentation, Initial Seed function:  separated into standalone procedure.

Tuesday, December 13, 2016


CW Chestwall Initial Seed:  Two point segment algorithm:  latest result.

BERNY






FLANY

















MANGY

KOTLY
MUSTY
PRINY
RUTAY
VILEY

HIGGY (GradContNorm+MaxGrad)
















Algorithm notes:

Two stage algorithm:
A.  Non-Incremental evolution.
P.AgentSimilarGrad = false;
P.AgentSimilarSigntr = false;
P.AgentMaxGrad = false;
P.AgentGradContourNormal = true;
P.AgentSimilarGradDir = false;
P.AgentWholeContourSigSimilar = false;
P.AgentMaxEdge = false;
P.AgentSimilarHistSigntr = false;
P.AgentRidgeMap = false;
P.AgentPreferDark = false;
P.CandLogic = VA_CANDLOGIC_BEST_OF_SOFTMAX;
//P.CandLogic = VA_CANDLOGIC_AVERAGE_OF_BEST;
//P.CandLogic = VA_CANDLOGIC_AVERAGE_OF_SOFTMAX;
P.SnapEndsToSides = false; 
P.Subpix = 2;
P.IncEvol = false;
P.MaxNumIter = 1;
P.GradEdgeYneg = true;

B. Same as above, but
P.IncEvol =  true;
P.MaxNumIter = 20;

Friday, December 9, 2016

Chestwall Initial Seed automatic with 2 - User specified points:

Better result, but not a sure thing at all.  Obtained with 2 very different Evolution Radius parameters
MapFit Chestwall Initial Seed:

2-Agent design with AVERAGE_OF_BEST integrator (not SoftMax)
MapFit code:  parallelized code segment that calculates the SoftMax scores for displacement candidates.
Mid-Sagittal  Chestwall Initial Contour Seed:
Very first run using a 2 point segment specified for the user.  This is far from Final.

Thursday, December 8, 2016

Displacement Field Smoothing and   Object Boundary Smoothing:
a) Unified the code to use the same function
b) Completely parallelized the code.
Contour smoothing procedure:  introduced a notion of Tension to reduce the appearance of Attractors in the contours when multitude of point tends to congregate in a small space.
Left:  New procedure     Right:  Old procedure with the attractor (red arrow)
Same as above figure, Zoomed In

Tuesday, December 6, 2016

Chest Wall segmentation:
While cropping the section of the chest to process User is aiding the segmentation at the same time.
Instead of drawing the box User chooses a line segment that specifies the cropping area.  In addition User asked that the segment starts and ends on the Chest Wall boundary as close as possible.
This would help tremendously with the Initial Seed during the MapFit procedure.



Corrected a bug in integrated Chest Wall segmentation function, when AirMask was produced as always empty, thus providing no constraints to the procedure.

Monday, December 5, 2016

Whole Breast segmentation using MapFit:  while EdgeWave seems to be promising on some examples, there are numerous extra challenging situations were EdgeWave would not work
out by itself.

Saturday, December 3, 2016

Some trials of algorithms for making an initial Chest Wall contour on the Mid-Sagittal slice.
A manual rectangular seed placed and EdgeWave ran with parameters   SiLo\SiHi = {0.5,2}  Peel\Grow = {5,10}mm


Tuesday, November 22, 2016

Chest wall\Whole Breast segmentation:  implemented a specialized dialog to cover both.


Monday, November 21, 2016

MapFit\Breast segmentation
Implemented a dual-smoothness concept:

a) Deformation field is smooth so there is a separate smoothing procedure for that
with the constant organ-independent parameters (no UI-parameters).

b) Organ boundary smoothness:  this is the constrained and is smoothed separately.  User sets the parameters defining the smoothness of the resulting organ contour.

Thursday, November 17, 2016


Trying to figure out why resulting contour does not follow intuitive edges and shortcuts the sides.

Thursday, November 10, 2016

ISMRM abstract submitted for "Whole breast segmentation using MapFit".

Monday, November 7, 2016

Thursday, November 3, 2016

MapFit Multiagent architecture:  Implemented 2 additional algorithms of primitive candidates integration based on SoftMax scoring conversion.

Tuesday, October 25, 2016

Added a specialized menu item under   Applications>Breast FGT> Segment Chest Wall with MapFit
Implemented an improved released version of the 99% automatic Chest Wall segmentation from the Axial Plane.


Wednesday, October 19, 2016

Implemented a new modification of the MapFit AG (Multi-Agent) method.
It comes with much simplified parameter set:

Default parameters on FireVoxel UI would be set to correctly process the Chest Wall 12-case batch.


Thursday, October 6, 2016

Segmentation by Contour Evolution (MapFit):  released the 1st version and processed the ISMRM test set of 12 cases.

Tuesday, October 4, 2016

EdgeWave crash defect: in provided example the Seed Z coordinate was outside the image bounds.  Provided a corresponding error message and the exit.
Fixed the defect presented as unexpected change of slice in MagTrace.  This was related to some coordinate calculation code on some specific resolution\dimension combinations.

Monday, October 3, 2016

Some test cases for Chest Wall problem have a major discontinuity of the Chest Wall shape.
Just changing the Slice # by 4,  the shape is changing by dozens of voxels, especially see on the left.

Case BERNY

SLICE 95

SLICE 100

Monday, September 26, 2016

Fixed defect in SimpleEdge procedure when the last slice was not producing result resulting in empty map for single slice volumes.

Thursday, September 22, 2016

Quick prototype of Elastic contour morphing ( MapFit ) to the image.  Initial contour is done as a spline on a single slice and then gets morphed to the image voxels.

Red-original spline.  Torquoise - morphed contour.

Tuesday, September 20, 2016

Whole Breast segmentation:  one idea is to forgo the Chest Wall Segmentation (CWS) and go directly to Whole Breast Segmentation.

One very quick prototype is based in the old algorithm principally based on the pure morphology.  Of course there are many details to figure out.

Case is "DASS T1-nonFS"

Selected slices for the WBS


Whole Breast segmentation:  one idea is to forgo the Chest Wall Segmentation (CWS) and go directly to Whole Breast Segmentation.

One very quick prototype is based in the old algorithm principally based on the pure morphology.  Of course there are many details to figure out.

Case is "DASS T1-nonFS"

Selected slices for the WBS


Friday, September 16, 2016

Fixed defect: When we press "SaveToDicom Extended" menu item the dialog pops up “Specify Bits” with some invalid large number.

There is a substantial difference between 2 runs of BiCal with the same parameters on the same image:

AbsDifference between RunA and RunB  in [0,54]

Thursday, September 15, 2016

Fixed the "VolumesAreIdentical" function central to ABT.
Crosshair 3D cursor:  fixed the defect when
a) cursor was disappearing on some views during random clicks.
b) when clicking on the image inside the inactive window, the crosshair would not appear in the window being activated, while correctly appearing in other views\projections.

Wednesday, September 14, 2016

a) Conversion RealToInteger:  fixed the reuslting DICOM header, so the NumberOfBits\HighBit etc match the ones specified by the User.

b)  Threshold to ROI:  resulting ROI DiCOM header has now NumberOfBits=1
"ThresholdToRoi by Signal interval":  fixed the defect when specified interval was partially outside the range present in the image.
Provided an info message when the result of the operation is an empty ROI.

Tuesday, September 13, 2016

Basic Constrained Smoothing:  implemented a low memory variant that does not use any additional memory.  However, it came out much slower than the original version and would not be included into this version of BiCal.
EdgeDetector 3D:  greatly reduced the memory requirements.
On BPD_N01 test dataset (from BiCal sample set), the Max Used memory was reduced about x10 times  from 750MB down to 73 MB.  This was done by introducing a specialized simplified function for most common scenarios.  This simplified function avoids generation of the Gradient Map which is extremely memory consuming.

Also, this function is applicable throughout FireVoxel where only the Edge Magnitude map or Binary Edge are sufficient.
EdgeDetector 3D:  greatly reduced the memory requirements.
On BPD_N01 test dataset (from BiCal sample set), the Max Used memory was reduced about x10 times  from 750MB down to 73 MB.  This was done by introducing a specialized simplified function for most common scenarios.  This simplified function avoids generation of the Gradien Map which is extremely memory consuming.

Sunday, September 11, 2016

BiCal specific processing memory footprint:

Max used Memory (about 1.4GB  on BPD brain sample at 12 degree polynomial)

Footprint of Build 227
New footprint
Remaining large size of 732 MB is caused by the Edge Detection procedure.

Thursday, September 8, 2016

BiCal: Simplified the mode for the Empty area processing leaving {VOID,FLAT} options only.
BiCal: provided additional execution information panel:
1.  Max Memory Size used.
2.  Max Memory Block used.
3. Memory leak.

This is required for the work on reducing memory footprint of BiCal.

Saturday, September 3, 2016

BiCal  C++ code improvements\simplifications provided a 10% speedup (measured on   bpd_n01).

Friday, September 2, 2016

1.  Restored the BiCal ABT subtest.
2. In BiCal processing dialog set the default value for SmoothPreprocess = TRUE.
3. BiCal code:  re-using the Legendre polynomial basis at all the iteration levels now to avoid recalculation.
FireVoxel Build 227 is released.

Thursday, September 1, 2016

Fixed Defect:  Certain ANALYZE files which represent ROI are saved with trivial  {Slope,Intercept} tags and were loaded as REAL volumes (64-bit).  Now loading correctly as ROI (1-bit).
Defect correction when attempting to load the unsupported RAW format: provided a graceful exit.
NIFTI\NIFTI1 file format:  enable loading the volumes with (signed) DT_INT8 and DT_INT16 data types.