MagTrace on Hippocampus.
First experiment: To evaluate the quality of snapping, I used the supplied HC Roi as the guidance. I clicked precisely on the boundary of the HC-ROI and let the software to adjust the position.
Attached screenshot shows the snapped points, without any manual further corrections.
Note: the snapping was performed on x3 upsampled resolution (EMD\Radial\2.2).
Search This Blog
Wednesday, April 27, 2016
Tuesday, April 26, 2016
Monday, April 25, 2016
Friday, April 22, 2016
Sunday, April 17, 2016
Thursday, April 14, 2016
Improved the semi-automatic "Snap-To-Point" function and corresponding UI.
This is mostly due to better matching and usage of Splines.
This is mostly due to better matching and usage of Splines.
![]() |
| Initial pass: user quickly clicks on desired location and proceeds WITHOUT correction |
![]() |
| On the second, manual pass, user simply drags the control points (about 5-6) in this example and contour adjusts. |
Monday, April 11, 2016
While "Snap-to-Point" feature works quite well on femur, there are areas where local features are not sufficient to reliably detect the desired location
To solve this problem I propose to include additional mechanisms, see figure below.
![]() |
| Problematic boundary for "Snap-to-Point" |
![]() |
| Typical structure of the edges. Local structure is not sufficient to reconstruct a good snapping location. |
Friday, April 8, 2016
First runs of new MagPoly tool on the femur:
First user performs several clicks on perceived contour of the femur. Computer calculates the edge pattern next to the click and selects a "snapping" location setting an anchor point.
Two important points:
a) Even if snapping did not work properly - operator proceeds with the next points (there will be a cleanup stage later).
b) Work is performed on a full Zoomout, so User does not have to Zoom In and back and scroll!
c) In between the anchor points, a cardinal spline with application-specific tension is used.
d) 10-voxel snapping radius was used.
In the followup stage. User returns and drags some anchors to improve their positions. In this example about 6 anchors were corrected.
First user performs several clicks on perceived contour of the femur. Computer calculates the edge pattern next to the click and selects a "snapping" location setting an anchor point.
Two important points:
a) Even if snapping did not work properly - operator proceeds with the next points (there will be a cleanup stage later).
b) Work is performed on a full Zoomout, so User does not have to Zoom In and back and scroll!
c) In between the anchor points, a cardinal spline with application-specific tension is used.
d) 10-voxel snapping radius was used.
![]() | |
| Each anchor point corresponds to a single click |
![]() |
| After dragging 6 anchors. |
Wednesday, April 6, 2016
MagPoly tool: a simple interface to extend the functionality of the Polygon. It is purely 2D tool. No 3D extension is foreseen at the moment.

Tool is activated with the present Polygon tool. Then behavior changes according to dialog parameters.
|x| UseMagPoly - turns the tool on. Off = regular polyline.
"MagPoly radius": the cursor changes to a semitransparent circle (similar to the paintbrush cursor). Radius specify the snapping seaarch radius - this way user has some feedback how far she should click.
|x| Precompute slice edges (for slow computers). - at the moment I plan to compute edges each time user clicks within the apperture specified by the "MagPoly radius". Hopefully it will fill instantaneous on the mainstream computer. Otherwise, with the tool on each time the slice would change, the internal edge layer will be computed.
"Edge Parameters" - parameters identical to the Texture Edge detector.
Additional parameters will appear later on. F.e. more advance version would snap the curve between the user-specified Anchor points.
Tool is activated with the present Polygon tool. Then behavior changes according to dialog parameters.
|x| UseMagPoly - turns the tool on. Off = regular polyline.
"MagPoly radius": the cursor changes to a semitransparent circle (similar to the paintbrush cursor). Radius specify the snapping seaarch radius - this way user has some feedback how far she should click.
|x| Precompute slice edges (for slow computers). - at the moment I plan to compute edges each time user clicks within the apperture specified by the "MagPoly radius". Hopefully it will fill instantaneous on the mainstream computer. Otherwise, with the tool on each time the slice would change, the internal edge layer will be computed.
"Edge Parameters" - parameters identical to the Texture Edge detector.
Additional parameters will appear later on. F.e. more advance version would snap the curve between the user-specified Anchor points.
Saturday, April 2, 2016
Friday, April 1, 2016
Idea is to capture the spatial characteristics of the tumor by detecting Texture-sensitive edges within the tumor at different scales and different apperture weights.
Here are the corresponding Edge strength distribution histograms: They have a widely varying StdDev/Mean and so on.
We can also Build the "Concentric Profiles" of Edge Strength distribution ( in corresponding order)
![]() | ||||||
| EMD texture edges, Scale=3, Apperture=constant |
Here are the corresponding Edge strength distribution histograms: They have a widely varying StdDev/Mean and so on.
We can also Build the "Concentric Profiles" of Edge Strength distribution ( in corresponding order)
Thursday, March 31, 2016
Full Resolution Femur sample:
Run the registration Using URAL, default parameters, Subsample=8,with Finetune=1.
Timings:
Primitive generation: 3 min
AutoFocus: 50 sec
FineTune: 25 sec
Result is below. I don't see a need to change anything about the registration FineTune.
MI problem has to be investigated.
Run the registration Using URAL, default parameters, Subsample=8,with Finetune=1.
Timings:
Primitive generation: 3 min
AutoFocus: 50 sec
FineTune: 25 sec
Result is below. I don't see a need to change anything about the registration FineTune.
MI problem has to be investigated.
Wednesday, March 30, 2016
Developed completely new application-oriented AirThresholding method. It is based on Z-alg idea.
Validating it on the failed breast FGT samples where selecting across-the-board threshold = 60 did not work. Specifically, in REIC cases the proper thresholds were substantially higher : {67,108}
in KELL cases the proper threshold were substantially lower {17,15}
Validating it on the failed breast FGT samples where selecting across-the-board threshold = 60 did not work. Specifically, in REIC cases the proper thresholds were substantially higher : {67,108}
in KELL cases the proper threshold were substantially lower {17,15}
![]() |
| REIC_R |
![]() | |
| KELL_R |
![]() |
| KELL_L |
![]() |
| REIC_L |
Tuesday, March 29, 2016
Monday, March 28, 2016
Developed new thresholding methods "Bi{Gaussian,Laplacian} with PVV correction".
These methods work on the idea that the histogram segment between 2 peaks is unreliable due to the Partial Volume Voxels (PVV) and should be completely disregarded. Intuition here is how human thresholds complex fused histograms, just by looking on the side tails of the distribution.
Tested on the difficult case ABBE-R. With the good result.
These methods work on the idea that the histogram segment between 2 peaks is unreliable due to the Partial Volume Voxels (PVV) and should be completely disregarded. Intuition here is how human thresholds complex fused histograms, just by looking on the side tails of the distribution.
Tested on the difficult case ABBE-R. With the good result.
![]() | |
| Histogram modelling |
![]() | |
| Final segmentation |
Tuesday, March 15, 2016
problematic case ABBE-R
seems the BiLaplacian split found a wrong threshold:
However, when we re-segment the BiGaussian model, we obtain much lower residual.
However, for Phantoms the BiLaplacian was much better than Gaussian at least for most cases and all phantoms were processed using exclusively BiLaplacian.
Proposal: We evaluate histogram fit using both {BiLaplace,BiGauss}. We choose the method that provides smaller fitting residual.
seems the BiLaplacian split found a wrong threshold:
![]() |
| ABBE-R. BiLaplacian split. Residual = 2549 |
However, when we re-segment the BiGaussian model, we obtain much lower residual.
![]() | |
| BiGaussian fit. Residual = 645 |
![]() |
| ABBE-R: Split using BiGaussian |
However, for Phantoms the BiLaplacian was much better than Gaussian at least for most cases and all phantoms were processed using exclusively BiLaplacian.
Proposal: We evaluate histogram fit using both {BiLaplace,BiGauss}. We choose the method that provides smaller fitting residual.
Monday, March 14, 2016
Saturday, March 12, 2016
Implemented new algorithm "EdgeWave MultiLabel". This is a general algorithm: given an initial segmentation of the region with multiple labels it applies EdgeWave morphological criteria to correct these regions while completely covering the total region.
This was applied to p1s0_L example that had issues with partial volume voxels being misclassified as FGT.
This algorithm contains both internal and external morphological competition. So additional algorithm "EdgeWave ML Boundary" will be attempted.
This was applied to p1s0_L example that had issues with partial volume voxels being misclassified as FGT.
This algorithm contains both internal and external morphological competition. So additional algorithm "EdgeWave ML Boundary" will be attempted.
![]() |
| FGT: 180.23, FAT=950, total=1130.23, FGT percentage=15.9% |
Implemented the original variant of the FGT breast workflow. It consists of BiCal, Bimodal Laplace thresholding. While providing great (+-4% ground truth) result for some images, other images are problematic. This requires to develop an additional Morphological module, as none of the existing variants of EdgeWave don't seem to fit.
Tuesday, March 8, 2016
This is the "fused peak" case that Henry sent earlier. As far as I understand this was the case "p4s0.fvx"-RIGHT (DICOM5)
Again BiCal was applied with the exact parameters as with other cases. Then BiLaplacian with exactly same parameters too. We see a great histogram split as a result.
Again BiCal was applied with the exact parameters as with other cases. Then BiLaplacian with exactly same parameters too. We see a great histogram split as a result.
![]() |
| Initial fused peaks case resolved. |
![]() |
| Corresponding segmentation (top and bottom slices) |
FGT processing update:
1. Preliminary results on 4 phantoms with about 200 manual seeds each indicate x4-5 times improvement of BiCal over N3.
2. After fixing the BiLaplace fitting procedure, the phantom histogram splits start to look great. But no great conclusions till the whole set is done. See below (case p1s1_R.fvx)
1. Preliminary results on 4 phantoms with about 200 manual seeds each indicate x4-5 times improvement of BiCal over N3.
2. After fixing the BiLaplace fitting procedure, the phantom histogram splits start to look great. But no great conclusions till the whole set is done. See below (case p1s1_R.fvx)
![]() |
| Histogram fitting using Bimodal Laplacian (after BiCal) |
Monday, March 7, 2016
Understanding breast phantom data:
Provided phantom data should be
a) Thresholded to get the Breast ROI (instead of manual ROI in patient data).
b) L&R breast separated
c) Run NU {N3,Bical}
d) Run Histogram thresholding {Otsu,BiGauss,BiLaplace}
e) provide the results of measurement in cm^3
f) best method matching the ground truth will be selected
Provided phantom data should be
a) Thresholded to get the Breast ROI (instead of manual ROI in patient data).
b) L&R breast separated
c) Run NU {N3,Bical}
d) Run Histogram thresholding {Otsu,BiGauss,BiLaplace}
e) provide the results of measurement in cm^3
f) best method matching the ground truth will be selected
Sunday, March 6, 2016
BiModal histogram segmentation within the RoiStats3D dialog box.
a) Added the separate "Recompute" button to simplify the processing
b) Currently selected\displayed histogram binning is supplied and used as the distribution for the BiModal modelling.
c) Corrected the Model Curve overlay to be consistent with the change in binning specified by the User.
d) Eliminated the "BiGauss model" only leaving the "BiGauss with Ratio model". Just set the very high peak ratio (>10) to get result of the previous models.
e) Fitting Thresholds\Residual are now displayed in the "Threshold" status line.
a) Added the separate "Recompute" button to simplify the processing
b) Currently selected\displayed histogram binning is supplied and used as the distribution for the BiModal modelling.
c) Corrected the Model Curve overlay to be consistent with the change in binning specified by the User.
d) Eliminated the "BiGauss model" only leaving the "BiGauss with Ratio model". Just set the very high peak ratio (>10) to get result of the previous models.
e) Fitting Thresholds\Residual are now displayed in the "Threshold" status line.
![]() |
| BiGauss model (residual 57.7) |
![]() |
| BiLaplacian model (residual 86.6) |
Friday, March 4, 2016
Wednesday, March 2, 2016
FireVoxel Build 209 is released.
1. Fixed the "IM
file crash problem" (equal sign was missing): an appropriate error message would be
displayed now.
2. IVIM segmented
model:
a) added parameter
"Large B-value start" with the default value=200. User can now change that value.
b) Increased the
allowed ranges for Dp=[0,1], Dt=[0,0.01]
IVIM basic model:
Increased the allowed ranges for
Dp=[0,1], Dt=[0,0.01]
3. On Mouse Move -
Display voxel information: fixed a
defect when the Active Layer is disabled, so moving the mouse did not produce
any information in the status line.
Now if the Active is
disabled, we choose the First enabled layer to display the voxel info.
4. Synchronize
Multiprojection Cursor (mode=ON) functionality:
if there is a single View\Projection of the volume is visible the
Crosshair cursor would not be visible.
5. BiCal on Sodium images: fixed the defect when
iterations of BiCal were producing a "better" result. This was due to
the custom scheme of processing the REAL images, when internally they were
converted to the 15 bit images and this was conflicting with the internal
truncation
Subscribe to:
Posts (Atom)
















































