Search This Blog

Wednesday, February 5, 2014

Obtained first fitting result for the Liver DCDI model (Sourbron).
In this example 2 input functions are shown in Signal intensity units.
The target ROI is in red.
Fitted Concentration Curve (black) is overlaid on top of the Data Concentration Curve.
Optimal parameter values are shown at the bottom of the diagram. They are normalized
to Sourbron's unit from the paper and on a quick comparison are of the same order of magnitude.
Note:  Arterial delay of "0" was used.



Running tests of the Liver DCDI model, debugging and targeting the visualization of the model fit as the next waypoint.

Monday, February 3, 2014

DCDI (Dual Compartment Dual Input) model:  Implementing a fitting model, within the FireVoxel Dynamic Framework...

Sunday, February 2, 2014

Implemented a support function, that in Play4D -  ALL the documents that have a compatible dynamic information will be played simultaneously.  This is very helpful for the displaying results of 4D registration,

Friday, January 31, 2014

In preparation to release Build 130:  Restoring several parts of the Automatic Build Test that use the .FVX file format. Format was changed recently due to the use of the new 3D Volumentric primitives.
Dialog "Split ROI by Threshold":
Implemented a feature, so user is able to enter the desired threshold manually.


Portal Vein Input function (obtained automatically) was compared between:
a)  Unregistered DCDI dataset
b) DCDI dataset registered for the whole liver (URAL-measure\Affine Transform)

difference is substantial, in line with the substantial motion across the axial plain which is eliminated as the result of the registration.

Compared the Portal Vein Input Function  derived from
a) Whole registered liver     VS.
b)  (starting from wholly registered liver) Local registration with the small ROI enveloping the Portal Vein.

There is small gross misregistration (during b.) on the initial timepoints due to the absence of features (contrast edges on early timepoint).  But besides that there seems to be little difference between a) and b).

So in the initial DCDI modelling we will restrict to the Whole liver registration only.



Thursday, January 30, 2014

Developed a function, when given a 4D volume and an ROI (3D or 4D),   FVX advances to timepoint where amount of information (or entropy) over the given ROI is maximum. 

This is an extremely valuable function for all 4D registrations.  It allows user to automatically select an "Anchor" point for 4D registration.

Prior to this development, every individual workflow required an individually crafted recommendation which timepoint to use as an "anchor" for the registration.

Re-implementing the frequent {VolumeCropSlice, VolumeCropTimepoint} operations which are frequently used in processing.  Idea is to perform it through copying compressed blocks, instead of VolumeGetBox-VolumeSetBox sequence that require   Decompress\Compress.

Pair of this function is used extensively in Registrations and in over 70 locations inside the FireVoxel.

Wednesday, January 29, 2014

Attempting to correct Elastic (quadratic) transform on the 3D->3D liver registration. For some reason function is not performing as in the past.
After registering the Liver in 4D,  returned back to Axial projection.  Specified the Macroseed (green box on the right) over the portal vein.  Then ran fully automatic vessel (IDIF) segmenter.  (Peak time eps=30 sec, Vessel diam=10mm).  Resulting ROI is shown on Axial and Sagittal projections in Blue.
Corresponding Input function is displayed in concentration units as in the Sourbron's paper.



Registration:
Converted DCDI-(Dual Compartment Dual Input) Eovist Liver dataset to the isotropic sagittal.  For Registration purposes sagittal projection seems to be more suitable due to the liver motion mostly perpendicularly to the axial plain (is this true?). So it is easier to evaluate registration  quality.  Additionally, it is easier (at least for unexperienced in-anatomy users) to outline liver ROI in sagittal view (is this true?)

Question: after registration, for the remainder of the workflow, should we return to the axial projection? I assume yes, due to the higher resolution in the axial plain and further presentation of the results.


Tuesday, January 28, 2014

Applied automatic Image Derived Input Function segmenter to the Liver Eovist dataset.
Here is example for the aorta. As usual user just have to put the Macroseed around the artery.
The rest is automatic.  Default parameters from PET function worked, just vessel diameter was set for 10 mm.
Size of resulting ROI is 2500 voxel,  17.5 cm3.  ROI is guaranteed to be a tube in the prevalent Z direction.  Tube is continuous - an Interruption on the sagittal view is just due to the tube being curved.


Monday, January 27, 2014

Finalized the Gamma Variate fit of the arbitrary function.  Introduced the "Fit" operation of the TAC inside the RoiStats4D dialog.  Other fitting models will be gradually added.

Above example is done with the Integral L2 measure (so would work fine with uneven sampling).  Global Optimization was used (A,alpha,beta).

Clearly Gamma Variate does not have enough expressive power due to the 2 factors
  • Recirculation peak
  • Tail asymptomatic value is non-zero
Recently (ISMRM 2011)  AIF fitting with two Gamma Variate functions was introduced (once of the authors is Niels Osiegmann).

http://cds.ismrm.org/protected/11MProceedings/files/816.pdf



Implemented a function for Gamma-variate fit of the arbitrary function.
Global Optimization with 3-parameter fit is used.


Some applications include:

  • Modelling of the Input function
  • Segmentation of the 4D volume
  • Automatic IDIF finder.


Implementing a simple dialog and debugging...
Restoring the complete Automatic Build Test to reflect changes in .FVX format due to a recent change in the format.
Updated and restored .FVX format Load\Save due to a change in the basic volumetric entity data structure.
Defect corrected: when drawing with the paintbrush  on ROIs, when paintbrush crosses the right border of the image the drawn voxels would appear sometimes at the top border.

Sunday, January 26, 2014

Integrated  DCMTK-based DICOM header as a parallel structure to the existing TREE header design.  This will allow completely accurate DICOM file save and phasing out of the legacy DICOM library.  Remaining work contains several items with transferring functionality to the DCMTK-header based.
  • Display of the DICOM tree in the OpenDicom dialog and DicomInfo dialog.  Need a function to list all the present DICOM tags in the header.
  • Saving DICOM using the DCMTK-header 
  • Numerous access functions for the various DICOM tags.
  • Create a DCMTK -based "Basic DICOM header" when the volume is loaded from the RAW (non-DICOM) file format.
  • Incorporation of DCMTK-header Load\Save into the native FVX file format.

Saturday, January 25, 2014

Investigating a design to incorporate a pure DCMTK header into the Volume.  This will allow to most complete DICOM save.  This is the final step in the phase-out of the legacy DICOM library.

Friday, January 24, 2014

Modifying User Interface objects due to a change of volume data primitives from 2D to 3D.
Updating the FVX file format.

Thursday, January 23, 2014

Obtained 2 liver Eovist datasets reconstructed at 21 spokes (from Hersh and Justin Ream). Ensured correct loading of DICOMs and the initial display.

Wednesday, January 22, 2014

Continue work on internal representation of volumes:  moving from legacy 2D-based representation to pure 3D primitives.  Goal is the simplicity of API for all current and future uses.

Tuesday, January 21, 2014

Optimizing interface and performance of basic VolumeGetBox and VolumeSetBox procedures.  Attempting to explicitly move DIM3D structure into FRAME class.

Sunday, January 19, 2014

In all 4D to 3D registrations, user is offered a choice of currently selected timepoint as a Base, or instead determine timepoint of Maximal Information.  In PET to Anatomy registration it is always
Maximal Information.  Maximal information timepoint is assumed to have the best contrast between tissues and thus provide the best registration quality.
In all registrations, 3D and 4D,  implemented mechanism of tolerating the memory allocation failure.  Since Finetune is highly parallelized at many leveel and pet-thread memory requirements are high, for large images and high core count a memory allocation error occurs.  Old versions of FireVoxel either failed or lately the Parallel mechanism was disabled.  Now fully parallel veersion is ran,  the threads which failed are recorded into "Failed" thread array and then ran in serial mode.

Friday, January 17, 2014

Sokoloff model verified working on Brookhaven data.

For ALL  FireVoxel operations using the Vector ROIs as seeds:  new better logic is implemented.
For when a single seed is required and several seeds are present, Fvx requires a single seed to be
selected and warns otherwise.
Ensure correct functioning of the Anatomy-constrained (tube) IDIF function on the Brookhaven PET data.
In this example, two Macroseeds left and right are placed by User on the branches of the carotid artery.
Algorithm ran twice with identical (default) parameters.

Positioning of both corresponding ROIs are shown on orthogonal projections.


Testing latest Anatomy IDIF function on the PET case from  Brookhaven.  This (along with blood data) will be used to validate the IDIF function.

Thursday, January 16, 2014

Performed a better registration for SL patient (based on URAL registration measure, not MI), created a Hybrid document, placed Macroseed for the new IDIF function.  Uploading the document to the SkyDrive.

Finalizing the parameter Dialog Box for the latest   Anatomy Constrained Input Function segmenter.

Wednesday, January 15, 2014

Specifically for calculating distance of the fit of 2 curves that are sampled at highly uneven intervals:  Implemented the function for L2 integration based distance for two functions F(t) and G(t).  Perform exact integration of 2 piecewise linear functions.

Replace the "goodness of the fit" with the new integration function.  Old function was simply a sum of difference at sampled timepoints that was giving unjust weight to the beginning of the curve were sampling was much more dense.
Corrected defect:   after IDIF is segmented, the TAC dialog pops up and now correctly displays the size of the vessel in (mm3) and appends it to the name of the vessel correctly.
MG tumor patient:   created a well-registered  MR-PET overlay.  Included an easy and well working Macroseed.  Uploading this to SkyDrive along with FireVoxel Build 129A.

Substantially increased quality of the registration of PET to MRI in the new version comparing to the variant of registration used by Anne.  This is for the patient MG.  (old=left, right=Build 129A).
Also, with the respect to "reconstructing  PET with MRI priors", notice a very large angle between MRI and PET in the original data.





And new registration result in multiple projections:


Temporarily disabled the parallel version of Amoeba optimization in the Finetune stage of the registration.  This is until we moved to 64-bit code.  This is due to high memory requirement by
certain registration measures, such as URAL. At 64-bit memory above 3GB (under Win) will be accessible.

Tuesday, January 14, 2014

Monday, January 13, 2014

Dialog ROI Stats 4D (TAC viewing dialog):  removed redundancies so the dialog "start-up" time is 2X times faster now. This might be very substantial for large images and large number of timepoints.

Thursday, January 9, 2014

Anatomy constrained IDIF extraction function: Continuing testing\debugging.

Will output vessel ROI resembling a tube of the
specified diameter.  User has to specify "dominant direction" for the vessel.
Otherwise parameters are similar to the old IDIF variant.

Wednesday, January 8, 2014

Performed initial evaluation of BiCal algorithm on Greg Chang's 7T hip dataset.

Non-uniformity (measured by 48 manually placed seeds) is reduced from the original NU=0.397, down to NU=0.127.

original with seeds,  NU=0.397


BiCal-corrected, NU = 0.127

FireVoxel Build 128I is released.
Provided an additional  Perfusion-IF adjustment variant when both Peak and Tail of the curves are used for matching.  Additionally provided User an option to enter the Peak scaling constant.

FireVoxel Build 128H is released.
Verified that present Sokoloff model is working with new "Adjusted Perfusion-derived IDIF".
Note (!), in limited experiments, Constant-extended IDIF worked much better than the truncated IDIF.

Implemented a stand-alone function for Perfusion-IF  adjustment using PET-IF.  This approach allows to reuse existing Sokoloff model and NOT to introduce custom Sokoloff model, resulting in simplicity. User has an option either to Truncate  adjusted IF, or extend by the last constant.

User Saves adjusted IDIF using "Save" button, then loads it as a regular input function into Sokoloff.


Finalizing the Dialog "Specify two file names".  This is required to Perfusion-derive IF adjustment to PET

Tuesday, January 7, 2014

Sokoloff model - Revisited "Delay" fitting parameter.  Ensured that when  "Max Delay" option = 0 before model calculation,  the resulting Delay parameter remains 0 (i.e. optimization is done by K1,k2,k3 only).

Investigated "arrival time" difference issue between Data TAC and Model Curve. This seem to work well now, at least for the PET-derived IDIF.


Implementing the "Sokoloff Model with the perfusion-derived Input function"

Monday, January 6, 2014

Verified quality of registration of GRASP-4D to PET4D.  First timepoint of GRASP is cropped and the regular   Applications>PET>Register to Anatomy function is used.  Result is below in several projections.  PET (in RED) is overlayed on top of  GRASP (blue).

Notice substantial (~10 degree) rotation angle between  GRASP and PET.

Saturday, January 4, 2014

When saving TAC to file or Clipboard, and appropriate Header is placed before the 2-column data. In the following format    "Dynamic Component (Dynamic Units)  - TAB - value"  so it is suitable for an easy incorporation to Excel.
Enabled saving the "Fitted Curve" from the RoiStats4D dialog.  When user chooses "Save (to file)" or "Copy (to clipboard),  Dialog choice appears that allows to select either "Active ROI" or "Fitted" curve.

Friday, January 3, 2014

FireVoxel Build 128F is released.

1. Implemented initial variant of PET 4D correcction. It is located under MainMenu>Applications>PET>Register 4D (Eliminate motion)
2. In ViewTAC, and RoiStat4D dialog, when the curve is drawn the current Dynamic Index node is marked with the alternative color.
3. Correct  "Edge Constrained Smoothing" function so the "Fill Void Voxels"  option works correctly. Removed redundant code.
4. Corrected the defect in the Progress indicator "with User interruption" function.  This was causing problems that manifested as DICOM loading problems.
5. Corrected the PET-DICOM loading failure that appeared in Build 128D.
6. Fixed the error with PET frame timing due to a simple typo error.
 
Corrected the defect in the Progress indicator "with User interruption" function.  This was causing problems that manifested as DICOM loading problems.

Thursday, January 2, 2014

Fixed the error with PET frame timing due to a simple typo error.
Corrected the PET-DICOM loading failure that appeared in Build 128D.

Wednesday, January 1, 2014

Conducting a short evaluation for the next generation of BiCal non-uniformity conversion tool.  Focus is on using the Gradients instead of Edges for delineating regions of homogeneous tissue.

Tuesday, December 31, 2013

Correct  "Edge Constrained Smoothing" function so the "Fill Void Voxels"  option works correctly. Removed redundant code.

Thursday, December 26, 2013

Prototyping a new IDIF function variant, that would explicitly incorporate an explicit anatomy constrained:  namely a tube with the width of the vessel.  User specifies one of the {X,Y,Z} prevalent
directions.

Sunday, December 22, 2013

In ViewTAC, and RoiStat4D dialog, when the curve is drawn the current Dynamic Index node is marked with the alternative color.

Implementing and initial variant for PET  4D motion compensation.  This is based on Dr. DeLeon comment during IDIF meeting.  Additionally a substantial rotation is observed (~2 degrees) betweeen MRI and some of the PET timepoints.
Standard 4D registration is used with some improvements to determine PET forground mask. Main challenge here is the speed of the registration due to the high PET timepoint count.

Saturday, December 21, 2013

Investigating the reslicing problem after the registration.
Correcting the IDIF function,  for Axial-SingleSlice variant.  It should behave correctly in {NoSeed,SingleSeed,MultiSeed} modes.

Friday, December 20, 2013

FireVoxel 128D is released with the   4DPET-MRI scenario fixes.
4DPET-MRI registration:   Corrected the workflow so user could choose the "Best" or maximum resolution evaluated individually at each axis.  Registration result is good.  Importantly, notice a non-trivial rotation angle between MRI and PET.  On this screenshot they are registered, but observe the MRI slanted margins, indicating ~2 degrees relative rotation as determined by the registration.


Helping to process the MRI+PET case obtained from Dr. Wahle.   MRI is in Axial, which is different  from the documentation.
Updating the IDIF function for a case when no MACRO-seed is present at all and instead user chooses simply the slice on the Axial projection.
Play 4D function:

  • Rewind if we are on the last frame
  • Use the default the interval to the last one used
  • Indicate the use of real intervals

Thursday, December 19, 2013

Investigating a substantial memory residual remaining after the PET-to-MRI registration  ABT subtest.
Updating the Automatic Build Test   for 4D-PET and MRI co-registration.
Dialogs   {AutoFocus3D,AutoFocus4D} :  removed "URAL Interpolation" parameter with the purpose of simplifying registration User Interface.   URAL Interpolation = true, in all registrations.
Documenting the changes in the PET workflow after the change to the Axial projection.  Updating the manual.
Found solution for the registration of the Femur\bone ROIs. This is for the same patient, longitudal study.

Tuesday, December 17, 2013

Updating and restructuring the registration workflow to principal Axial-projection and accommodate new requirement to either reconstruct to Anatomy or PET resolution.

Sunday, December 15, 2013

FireVoxel Build 128B is released.
Made Parametric Calculation call smarter - in case there is a single 4D layer is present, it is selected automatically and User does not have to make it Active.
Major code refresh for:
Dynamic Processing dialog box
Dynamic parametric map calculation - UI Application level
All models in Dynamic Processing DLL are revisited for
parameter consistency.

Saturday, December 14, 2013

Parametric modelling dialog layout is rearranged to accommodate longer labels automatically generated for Input Functions.


RoiStats4D dialog:  when TAC for the ROI is obtained, its label is automatically formed consisting of the Roi Name + ROI size in mm3.  This allows user to avoid manual typing in when importing the Input Function inside the Parametric Modelling dialog.


Dialog Roi Stats4D:  Added the "Show Median"  checkbox (as apposed to "Show Average") .  Roi TAC is shown either in Median or Average mode. Same choice for Saving and copying it to the Clipboard.

Friday, December 13, 2013

FireVoxel Build 128A is released.
RoiStats4D dialog:  when "Show All" checkbox is ON,  only Enabled layers will display the TACs.
Improved behavior in RoiStats4D function.  When F4 button is pressed and there are both 3D and 4D layers are present, 4D layer will always be chosen, even if 3D is Active.  This eliminates annoying messages "4D layer is required".
UI change:
Function key F3 is reassigned to be   a "Roi Stats 3D" function
Function key F4 remains a "Roi Stats 4D" function = SHOW TAC
Former key F3 is now F2 for the "Copy ROI info to clipboard" function.

The reason for the change is that often a dynamic image is overlayed
on top of static 3D, so getting TACs often pops up the "4D layer required"
which requires user to bring up the Layer Control box, change active layer
and so on.

Thursday, December 12, 2013

Completely re-engineered the 1st Model parameters to make their meaning more clear.

Model Name   = "Signal measurements within time interval";
{ "Signal Spread","Mean Signal","Max signal","Signal StdDev","Sum of absolute signal changes",
"Turbulence","Max Turbulence","Turbulence Count" }

Integrated the "Process Interruption Feature" across FireVoxel.  For any process that displays the progress bar, if user press ESC button, function gracefully exits.  94 locations were modified, only few were tested but expected all to work correctly.
Substantial redesign of the Play4D function:  Movie plays in all available projections simultaneously,
dynamic coordinates, such as b-value, are displayed and movie sequence is in this active dynamic dimension order.
Additional feature,  movie is played in all available views of the selected document
(f.e. all orthogonal projections)
Integrating general UI functionality so that any process that outputs the progress bar may be interrupted by User pressing ESC button....
Fixing a problem with  DlgSpecifyDouble dialog box...

Wednesday, December 11, 2013

FireVoxel build 127B is released.
Play 4D movie function:  completely re-engineered, removed the defect.  Added a progress bar to the play function.  Additionally user can specify the interframe delay in seconds (real).
Get IDIF function User Interface:  provide a more intuitive user interface especially in the presence of multiple ROI layers, so that no "Ambiguous layer configuration..." message does not show up

Tuesday, December 10, 2013

After integrating time delay parameter, a new fitting result.


Sokoloff model:   Integrating the "Time Delay" fitting parameter. At the very least, this time delay parameter should be in [0,FrameTimeDelta] (=[0,15] sec) as this is the temporal resolution of TAC.
Updating the Sokoloff model.  During the demo to Fernando, observed that in "naive convolution" calculation upsampling time to 1 sec makes a big positive precision difference.  But this is computationally expensive and additional Upsampling Interval parameter will add to parameter list.
So instead attempting to upsample only the IRF ( Impulse Response Function) and integrate fast convolution technique from:



Fast and accurate voxel-by-voxel perfusion imaging using convolution models.  Artem Mikheev, Henry Rusinek.  Image Analysis - Parametric Mapping Session at the ISMRM 2008 Totonto, CANADA.

Sunday, December 8, 2013

Revisiting Volume Smoothing function and ensuring it works correctly on all of combinations of:
{Real,Integer}x{3D,4D}x{ROI,no ROI}...
Fixed the problem with MainMenu>ROI>Threshold To ROI function.  Corresponding Build 127A is released.