Search This Blog

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.

Wednesday, August 31, 2016

.IM (MIDAS) file format load:  performed corrections
a) SwapOrder, SignedShort flags were uninitialized  when the format is different from ANALYZE.
b) File size defect in the VA_RAW_FileUINT16interval function
BiCal paper:  Finished positioning of the landmarks on the Brain7T dataset (17 volumes),  Breast Phantom (24 volumes).

Saturday, August 27, 2016

Rat Brain registration:  resolved the quality problem by adding and additional (5th) landmark at the back of the brain in the Eyes Plain.  Apparently the 4 Landmark configuration was too close to a Coplanar that was causing the Affine registration to fail.
Additional BrainBack landmark
Affine registration result:  Transformed CT overlaid by the MR-template landmarks.
CT layer (Green) overlaid with transparency on top of the MR layer (Red)

Thursday, August 25, 2016

BiCal Smooth preprocess:   Changed the algorithm and the User Interface item to a simple checkbox (ON\OFF).  This finally makes BiCal with all parameter Quasi-constants.  I.e. User can run the BiCal on all volumes with very good result without changing parameter.  The eliminated SmoothPower parameter was extremely challenging to replace.

Friday, August 19, 2016

FireVoxel Build 225 is released.
Layer Operations: fixed 3 defect in BitOperations and ArithmeticOperations.
BiCal parameter Dialog: Changed the principal parameter from the field degree to FieldPrecision (mm). This would make the UI easier, f.e. User would not have to adjust the parameters after cropping the volume.

Verified the correct 4-landmark registration between MR-Template and the CT-volume.
The landmarks on eyes match very well.



Thursday, August 18, 2016

Landmark positioning crash defect:  corrected the window rectangle invalidation legacy code.
Performed code re-engineering and simplification in preparation for the Methods section write up.

Tuesday, August 16, 2016

Edge-Constrained volume smooth (sometimes called ObjectSmooth or QuasiSegmentation in FireVoxel):  implemented a Zero-Edge variant when the thickness of the edges is 0 instead of current 1-voxel.  This allows not to use artificially higher resolution for better result.

Smoothed power=80
This is one of the principal components of the BiCal. But also it has a big potential to improve other operations, possibly MagTrace, and as as the pre-processing for more complex segmentations.


Saturday, August 6, 2016

BiCal functionality:
"Low signal level" parameter has replaced the "Air Threshold" parameter.  The new parameter is quasi-constant ( in [5,10] range) and is independent of the volume content.

Separated the notion of  Air Threshold and the Signal-to-Gradient ration.  They produce separate masks now.  Air-Threshold can be defined very approximately now and completely automatically without User Input, as it is mostly used cosmetically to make the resulting volume to look without Air amplification.  Another component, the areas of the low Signal-to-Gradient ratio are excluded and this improves the Non-Uniformity measures substantially.


For the reference image, BPD-7T, with the same parameters the measures for
Build 223: WM\GM\CSM improved from   Build 224: 0.14\0.16\0.045  down to   0.07\0.14\0.031

ORIGINAL
After BICAL



Wednesday, August 3, 2016

FireVoxel Build 223 is released.
Dynamic Experiment\"ROI as a single TAC" mode:  removed the redundant residual\RMSE combination.
Non-Uniformity measurement reporting:  ensured that the Dark/Bright ratio is always displayed independent from layer order.

Removed the menu item:  "Measure Non-uniformity with paired seeds", since more advanced and easier function is available now.

Tuesday, August 2, 2016

Performed optimization of BiCal algorithm and code. Almost 100% parallelization is achieved.



On the reference Brain-7T volumes execution time was reduced from 202 sec down to 49 sec.

Monday, August 1, 2016

BiCal profiling result (see diagram below):

1.  Starts with Edge detection - virtually 100% parallel.
2.  Then processing start and separate peaks corresponds to iterations
with the increasing degree of Legendre polynomials.
3.  As degree grows, the SVD (= fully parallel) portion grows so the total
core load grows too.

I will be addressing the non-parallelized part discovered with VC++ Profiler.
FireVoxel Build 222 is released.

Sunday, July 31, 2016

Support the "Scale Factor" field in the MIDAS file format.
Fixed Object selection defect:  Staring from empty selection in certain situations a VROI was clicked to select but the "Selection Tracker" failed to show up leaving the User confused.
CT-real (rat) dataset - fixed the defect when it was not possible to place a 2nd landmark anywhere.

Saturday, July 30, 2016

IM file format:  fixed the legacy file load with 8-bit voxels and non-trivial   "minimal value"\"maximum value" fields.

Wednesday, July 27, 2016

Major improvements to BiCal using new SVD-Parallel Jacobi:
a)  Was able to process much higher degrees of the polynomial - 25 from previous max 15.  New
image looks great and better.  Not able to do it in previous versions due to numerical instability of the
20000x20000 matrix solution using old SVD-NumericalRecipes (QR-decomposition).  Jacobi algorithm is simpler but more stable.
b)  At Degree=10 SVD takes 1% of calculation time, at 25 degree it takes 99% of calculation  time.
But now SVD is 100% parallel and scalable with 10x faster than  previous version.
c) On BPD datasets,  results for      WM/GM/CSM improved from  0.14/0.14/0.064  down to 0.10/0.11/0.49 for degree 25.
d) But calculation times become prohibitive at the higher degress ~40 min.

Tuesday, July 26, 2016

Completely re-engineered the CPU Capabilities Info function.  Newest processor and more reliable processing is available now.
Incorporated, debugged and improved the code for SVD: Jacobi One-sided block method.
Speed increase of about x5 times on  1000x1000 matrix comparing to serial version.
Nun-Uniformity Menu:  the Class Separation Measure function now displays the Optimal Threshold too.

Thursday, July 21, 2016

Fully implemented  PET-CT-Atlas\Rodent workflow. Tested on the Rat dataset with 30-region Atlas.
New Layer Control dialog:  implemented
a) Enable All, Disable All buttons
b) ROI operations "Combine" button with a dialog option to remove the Source Operands layers.

Monday, July 18, 2016

Build 219 is released.
New Layer Control dialog:   Enabled "Open DICOM" and "Open RAW" items.
New Layer Control dialog:  enabled the "New ROI 3D" and "New ROI 4D" buttons.
New Layer Control dialog:  Enabled the ViewFilter button and functionality.
New Layer Control dialog:  added Left Doubleclick processing (name change edit\Ctrl ROI midslice jump)

Sunday, July 17, 2016

New Layer control dialog: Added the "Info" button handler.
"Hover over ROI atlas" functionality was added. When there is an Atlas-like combination of ROIs is present, mouse cursor position is analyzed and the name of the single ROI layer is displayed that present at the mouse coordinate.
ROI compression\RAM allocation:  fixed major inefficiency defect, so that the RAM requirement for the 174 ROI atlas was reduced from 1GB down to 20 MB.
Old Layer Control dialog:  fixed the crash when  number of layers was exceeding the maximum (21).

Monday, July 11, 2016

Expanded the Atlas->ROI conversion function.  Tested on 174 ROI atlas.
Some performance issues have to be addressed with such high number of ROIs.


New Layer control dialog Added "Up\Down layer"
Enabled the Transparency-Slider functionality inside the new Layer Control Dialog box.

New Layer Control dialog box:

Added the "Active voxel layer" info dialog box and the GoTo (to Advance and Select Active layer) function.

Friday, July 8, 2016

Cursor hovering over the active layer with Real values now displays  "Real= ...value"
Implemented the ABT subtests for the DDC\Alpha model, new IVIM, IVIM-segmented models with the new parameters.


Implemented the ABT subtests for the DDC\Alpha model, new IVIM, IVIM-segmented models with the new parameters.


Added new Dynamic Model:  "DDC Stretched Exponential fit S = S0*(exp(-b*ADC)^alpha)"

Tested on the standard ABT dataset identical to ADC:
DDC fit:  DDC=0.0016, alpha=0.34, Residual=2.03


For comparison, we performed the ADC fit on the same data:
ADC fit:  ADC=0.001152, Residual=12

Corresponding Alpha-map processed over the ROI


Thursday, July 7, 2016

IVIM (Basic and Segmented) models:  changed the output parameter  Dt ->  Dt*(1-f)
Re-engineered core Global Optimization Engine.

Wednesday, June 22, 2016

Saturday, June 18, 2016

Build 217B is released.
1. Renamed the "MainMenu>VROI" ->  "MainMenu>Vector".
2.  Duplicated the "Rasterize Vector Entity" button of the main toolbar
under the "Main Menu>Vector>Rasterize".
3. Removed Rasterize items from "MainMenu>Trace"

Wednesday, June 15, 2016

IVIM {Basic,Segmented} models:  implemented new parameters "Dp*f" and "Dt*f" available to the user.
RAW   *.time file format:  implemented a support of variable naming convention when the index of the separate timepoint could contain arbitrary number of leading zeroes.

Tuesday, June 14, 2016

Friday, June 10, 2016

Build 217 is released.
ANALYZE with the negative value:  implemented the dialog box that show the loading options when the negative values are detected in the ANALYZE file.  This replaces several separate dialog boxes used in earlier versions.
SPM-generated ANALYZE 4D volume containing variable (Slope,Intercept) values for different timepoints:  enabled the correct load consistent with the Mango package.

Tuesday, June 7, 2016

Fixed the Huffman compression to allow loading the volume with the 2000x2400 slice.
Finalized N4-Explorer including the Dialog box

Saturday, June 4, 2016

N4Explorer: preparatory work with APIs so the optimizations structures and code of the BiCalExplorer could be fitted without any change.

Saturday, May 28, 2016

BiCal run on 4 volumes:

80 positions per volume were estimated. Total execution is 7+ hours.  We varied the smoothing power [0,100] and the polynomial degree [6,13].







"Class separation measure":  was reduced from the original  0.173 down to 0.003











Resulting optimal BiCal parameters are: