Search This Blog

Thursday, November 28, 2013

Implementing a new version of the "Blood Vessel Finder" dialog based on the initial discussions.

Wednesday, November 27, 2013

Fixed the registration mishap during the presentation.  After PET->MR registration, the time automatically advances to the first timepoint where PET signal is non-zero.

Tuesday, November 26, 2013

Correcting the defects that came up during the presentation to Fernando.  These two bugs are intermittent and are hard to reproduce.

Monday, November 25, 2013

Implemented Vt (Logan) plot parametric model based on the newly available technology for the Image Derived Input Function from Carotid Artery.

Sunday, November 24, 2013

Implementing Vt (Logan Plot) suitable for FDG based on the latest IDIF availability.  Model Interface is almost identical to the PMOD.
Presently implementing support functions for manipulation Input Functions within the Dynamic Processing module.

Saturday, November 23, 2013

Produced the initial result for the Image Derived Input Function.  This is developed for the PET FDG priority at the moment.  However, function is just a very general "Input Function Vessel Detector", so can be used in the DCE studies too.

Briefly, after PET is registered to MRI, workflow is as follows:
  • User specified a very approximate rectangular region containing carotid artery.
  • User specify a single "Vessel Homogenity" parameter as a percentage (f.e. 70%)
  • Automatic process follows, the IDIF   TAC dialog pops-up for the inspection
  • Dynamic Framework Input Function is populated automatically so the user can proceed immediately to kinetic models.
Additionally, FireVoxel provides a simple and fast tool helping User to find an approximate location of Carotid artery.

Thursday, November 21, 2013

Have an algorithm outline for the PET FDG    Image derived Input Function.  Started UI implementation...
Implementing automatic OR possibly semi-automatic procedure for Image Derived Input Function (IDIF) extraction from FDG PET dynamic volume.

Monday, November 18, 2013

Friday, November 15, 2013

Investigating the core functionality of DCMTK library for converting their internal DICOM header structure to the library-independent tree structure of the FireVoxel.

Wednesday, November 13, 2013

FireVoxel Build 126A is released.
Corrected the ADC  diffusion parametric model so that the fitting can be done even when only 2 timepoints are present.

Tuesday, November 12, 2013

Monday, November 11, 2013

Official Build 126 is released to testing.
2.  Removed the "by-default" calculation of Source and Target noise in AutoFocus 3D\4D.
3.  Changed the linkage of the Dynamic Frame work DLL, so all the supporting DLLs can be used directly without redundant duplication.
4. Moved all Amoeba code into the PWR dll so it can be accessed by the Dynamic DLL.
5. Removed the IVIM with background model.
6. When dialogs RoiStat3D and RoiStat4D are acivated, the "ROI is empty" error message is displayed,  show the name of the ROI layer.
7.  Register sing Landmarks dialog:  fixed several problems in specifying the name of the Transformation  .vtf file.
8. "View TAC" dialog box:  added the "Voxel Radius" parameter so the TAC could be averaged over the cubic vicinity of the cursor.  This results in seeing smoother TACs. Parallelized to work smoothly over the volumes with the hight # of timepoints.
9.  "Landmark registration with autofocus" is changed to "Landmark registration + Voxel similarity", execution crash was fixed.
10. Fixed an intermittent error in the core Registration procedure, when registration image padding was calculated based on the URAL radius, while that radius was undefined due to the different registration measure used (i.e. non-URAL, f.e. MI etc)
11. Defect: crash in T2\T2* mapping model for the 4D abdominal volume provided by Henry. Fixed: the problem was in incorrect handling of timing data, when the Dynamic Component is different from TIME (ECHO in this case).
12. Fixed defect:   4D registration would not initialize for 4D Real-valued volumes such as PET.  Presently, 4D registration with Mutual Info was tested on 4D PET volume.
13. Fixed the  3D Edge Detector function to work properly on the Real-value volumes such as PET.
14. Fixed the  3D Texture Gradient function to work properly on the Real-value volumes such as PET.
15.  Problem with Alpha-combining the White-color ROI is due to that the White color 24-bit value of 0xffffff is also used as a transparency voxel code..
16. Added a warning message to 3D and 4D registration dialog boxes.  When the user have chosen the URAL-UNI registration measure, but the Sorce\Target Noise were not specified, the warning is displayed when user presses OK button.
17. Implemented averaging function for Signal Intensity and Real-valued volumes.User specifies the Time Index interval for averaging. Resulting REAL valued volume is overlaid on top of the original 4D.
18. Implemented the Mead-Nedler (simplex\Amoeba) optimization algorithm MDS (multi-direction search) variant.  This is inherently parallel algorithm, presently verified working in the serial workflow.
Presently: inserting parallel instructions to fully utilize MDS parallelism.
19. Enabling registration of REAL volumes using Mutual Information measure.  Presently the code is only working for 16-bit volumes (that was used to show PET->MPRAGE prototype).  Solution is to convert to 16-bit correctly while binning the voxel values for the MI.  This is also strongly related to a proper binning for REAL volumes, so it is addressed at the same time along with the corresponding binning interface  in the registration dialogs.
20.  In Registration Finetune, both 3D and 4D, adding a "Multipass" option corresponding to initiating Amoeba algorithm several times.  This optionally achieves higher registration scores at the expense of the execution speed. 
21. Creating a fully integrated workflow of 4D PET registration to MRI, so that user does not have to manually crop and change orientation of PET prior to registration.
22. Fixed defect:  when any type volume is displayed, if user presses ViewFilter for this volume, there is a fairly long wait and the "Compute Histogram" message is displayed.  This was fixed by removing Histogram recalculation and instead using compressed block header access without decompressing the blocks themselvves to find maximal voxel value of the volume.
23.  Corrected the logic of automatically finding an optimal window\center for displaying the image for all kinds of volumes (i.e. Real and Integer). Problem is in 4D cases, only the 1st timepoint is evaluated to reduce the processing time. But first or any other timepoint might contain almost no signals thus leading to a non-sense settings and strangely displayed volume.
24.  Fast loading of the native *.FVX file:  98% of time is spent    DCMTK::FindTagName function.  Result:   "Native" loading of the original DICOM 5.6GB dataset is now 0.7 sec.
25. Highly parallelized Volume cropping function (UI-level), so it runs much faster now.
26. Achieved final registration of PET to MPRAGE.   It is part of the ntegrated registration workflow that includes automatic cropping and orientation correction (from coronal to sagittal).
27. FilmView display:  for large images it is quite slow, with 4.8 sec to display all slices of 344x344x170 volume.  Fully parallelized with the x3.5 speed-up (down to 1.37 sec)
28. Eliminated the need for the user to specify the "anchor timepoint" during the PET to Anatomy registration.  Timepoint of Maximum average singnal is selected and the registration is performed to that timepoint to determine the required transformation for all PET timepoints.
29.  Implementing MRTM0, MRTM, MRTM2 reference model within the FireVoxel Dynamic Processing framework.
30. Fixed  the DICOM-ROI   save and edit problem reported by Alexandra Hotca.
31. Fixed several problems when trying to load a single DICOM slice directly from multi-slice DICOM tree.
32. Fixed defect: When ROI is saved to DICOM it is incorrectly displayed in Oped DICOM dialog Preview panel.
33. Fixed an error writing incorrect datatype in ANALYZE 7.5 format (for 16-bit volume)
34. Added the progress indicator to the FireVoxel document load. This is very helpful when loading very large volumes (such as PET)
35. When dialogs RoiStat3D and RoiStat4D are acivated, the "ROI is empty" error message is displayed,  show the name of the ROI layer.

36. In Dialog ROI  Stats 4D:  added a function to copy TAC to a clipboard in format so it could be easily pasted to Excel without saving to a file.  Also, changed the formatting of  TAC file to include \t to import easily to Excel.
Fully cleared and corrected the test logic for ABT on FireVoxel Build 126.

Sunday, November 10, 2013

Added a warning message to 3D and 4D registration dialog boxes.  When the user have chosen the URAL-UNI registration measure, but the Sorce\Target Noise were not specified, the warning is displayed when user presses OK button.
Fixed the Phillips diffusion loading problem. The standard b-value DICOM Tag is used,  but different from GE and SIEMENS, the b-value was encoded as double floating point.

Investigating DICOM Rescale\Intercept problem with the Philips diffusion volume.

Saturday, November 9, 2013

Finished ABT subtest for the PET workflow:  a 220 timepoint PET volume is loaded, registered to MPRAGE.  Resulting registered volume is average and compared to the stored standard.

Friday, November 8, 2013

Developed a support function for Automatic Build test to compare results of operation involving Real-valued volumes.  Up to now ABT was using IM format for checking the correctness of the computations.  But .IM is not suitable for comparing results with Real-valued data.

Thursday, November 7, 2013

Implemented a feature so that during Automatic Build Test every tested dialog button can be pressed programmatically (i.e. not manually).  This way all the dialogs of all tested workflows would have a nominal testing, i.e. open with default parameters and press OK.

Wednesday, November 6, 2013

Finished PET workflow ABT subtest that loads a 20-timepoint PET Dicom, finds the dynamic average for all the voxels and compares it to the stored standard.

Tuesday, November 5, 2013

Working on the Automatic Build Test subtest to test current full PET processing workflow....

Three subtests are planned:

1.   Load PET Dicom dataset.  Use Dynamic averaging function.
2.  Load and register PET dataset to the anatomy MPRAGE dataset
3.  Run MRTM models
Released an unofficial update Build 125E to include some urgent fixes.
Enabled the registration of PET volume to MPRAGE anatomy using the URAL registration measure (and its valiants LIN and LOG).   Matching seems somewhat better than Mutual Info.
Fixed a major issue affecting 3D\4D registrations:  When texture gradient detector is performed the result is a 3D vector with Real (float double) components. For the purpose of performance and using SIMD, the vector components are converted into the int16 components.  To preserve the accuracy the real values are first scale (by 10,100,1000 etc) to keep precision and than rounded.  Those coefficients were fixed in all previous builds prior Build 126. It all seemed to work, i.e. registration results were good.
While enabling the URAL registration measures for Real-valued volumes (such as PET),  result was poor.
When investigated it was discovered that the URAL measure is accumulated within one row into the INT32 collector.  Its was frequently overflowing due to the the above ->int16 conversion.  Solution was to replace the accumulator with INT64 and also come up with the new scaling conversion. It all cleared with ABT and new PET tests for 3D\4D registration.

Screenshot:  PET to PET (two different timepoints) registered with URAL measure.

Monday, November 4, 2013

Enabled 3D registration using URAl vector measures for Real-valued volumes such as PET.
Fixed  the  3D Texture Gradient function to work properly on the Real-value volumes such as PET.
Fixed  the  3D Edge Detector function to work properly on the Real-value volumes such as PET.

Sunday, November 3, 2013

Fixed error:  3D registration would not initialize for two Real-valued 3D volumes, such as PET.

Saturday, November 2, 2013

Compressed Volume->Compressed Volume  copy RECT3D function - added an additional and more efficient level of the parallelism.  This is a starting operation in all 4D registration and can be quite lengthy.
Fixed an Initialization error in 4D registration dialog box.

Friday, November 1, 2013

Fixed defect:   4D registration would not initialize for 4D Real-valued volumes such as PET.
Presently, 4D registration with Mutual Info was tested on 4D PET volume.
Released unofficial "quick-fix" Build 125D to Henry.