Search This Blog

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.

Thursday, December 5, 2013

Implementing the Sokoloff model with simple fitting by gridding+Amoeba....
FireVoxel Build 127 is released.
  • Developed  the PET Workflow Quick Start manual.
  • Produced the initial result for the Image Derived Input Function. 
  • Implemented Vt (Logan) plot parametric model based on the newly available technology for the Image Derived Input Function from Carotid Artery.
  • Corrected the defects that came up during the presentation to Fernando.  These two bugs are intermittent and are hard to reproduce.
  • Implementing a new version of the "Blood Vessel Finder" dialog based on the initial discussions.
  • Finalized 2nd generation of the IDIF (Image Derived Input Function) dialog. Principal addition is the introduction of L2-based measure for checking TAC similarity.  However, L2-smoothing was introduced in a way so blurring of the TAC is avoided.
  • Extending the IDIF functionality so several seeds can be specified covering branches of the Carotid Artery to create larger ROI and thus more reliable Input Function. Since the IDIF function is very fast this is done simply by calling procedure several time and OR-ing corresponding ROIs to create the final one.
  • Documented the latest version of the semi-automatic IDIF tool.
  • Fixed the "Missing time information in save .IM file"  reported by Dr. Rusinek.  This was due to the time written in "absolute value" and using the scientific notation some important lower digits were truncated.  Switched to the regular "double float" format by using %lf option in fprintf().
  • Fixed parametric map-related defect:  when  RoiStat3D  dialog display statistics, the VOID voxels are included into the calculation.  They should be excluded.
  • Simplified the "Real Volume to Integer conversion" menu item to perform conventional rounding with the truncation to the specified bit length.'

Wednesday, December 4, 2013

Simplified the "Real Volume to Integer conversion" menu item to perform conventional rounding with the truncation to the specified bit length.
Fixed parametric map-related defect:  when  RoiStat3D  dialog display statistics, the VOID voxels are included into the calculation.  They should be excluded.

Tuesday, December 3, 2013

Fixed the "Missing time information in save .IM file"  reported by Dr. Rusinek.  This was due to the time written in "absolute value" and using the scientific notation some important lower digits were truncated.  Switched to the regular "double float" format by using %lf option in fprintf().
Documented the latest version of the semi-automatic IDIF tool.
Extending the IDIF functionality so several seeds can be specified covering branches of the Carotid Artery to create larger ROI and thus more reliable Input Function. Since the IDIF function is very fast this is done simply by calling procedure several time and OR-ing corresponding ROIs to create the final one.
Verified that the Macro Seed for the IDIF may be specified on any of the orthogonal projections.`It makes it possible to specify the Macro Seed on the Axial projection where Carotid artery can be found easily.

Monday, December 2, 2013

Finalized 2nd generation of the IDIF (Image Derived Input Function) dialog. Principal addition is the introduction of L2-based measure for checking TAC similarity.  However, L2-smoothing was introduced in a way so blurring of the TAC is avoided.

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.

Thursday, October 31, 2013

Automatic Build Test problem:  in Dynamic Framework subtest failure on Ktrans-Ve model. Investigating...

Wednesday, October 30, 2013

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).
Automatic Build substest for "Registration with Initial transform" is crashing.
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)
Validating the complete  Automatic Build Test for the Build 126...

Tuesday, October 29, 2013

Code work to simplify and reduce the parameter setting in several dozens of 3D\4D Registration scenarios.
After running the ABT (automatic build test) realized that registration examples using URAL measure all started to fail due to some kind of ripple effect. Investigating and fixing it...

Defect was in the "Final reslice Target-to-Source" option for all registration Measures, now fixed.

Monday, October 28, 2013

"Landmark registration with autofocus" is changed to "Landmark registration + Voxel similarity", execution crash was fixed.
"View TAC" dialog:   added a new option for 2D\3D apperture of the mouse cursor to be used when the TAC is displayed.
"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.

"Register using Landmarks" dialog:  fixed several problems in specifying the name of the Transformation  .vtf file.

Sunday, October 27, 2013

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.

Saturday, October 26, 2013

When dialogs RoiStat3D and RoiStat4D are acivated, the "ROI is empty" error message is displayed,  show the name of the ROI layer.
Added the progress indicator to the FireVoxel document load. This is very helpful when loading very large volumes (such as PET)
Fixed an error writing incorrect datatype in ANALYZE 7.5 format (for 16-bit volume)

Friday, October 25, 2013

Fixed defect: When ROI is saved to DICOM it is incorrectly displayed in Oped DICOM dialog Preview panel.
Fixed several problems when trying to load a single DICOM slice directly from multi-slice DICOM tree.
Fixed  the DICOM-ROI   save and edit problem reported by Alexandra Hotca.

Wednesday, October 23, 2013

Finished the MRTM model.  Fit seems to be better than MRTM0 as in models justification.
Finalizing the #2 MRTM model...
Added a "graphical verification plot" feature to MRTM0 modelling.  Equation is rearranged to the form C(t)=....  So the tissue TAC can be plotted over the model TAC.  In this example dont be discouraged by the mismatch as I drawn an arbitrary "Reference receptor-free Region".

Tuesday, October 22, 2013

Finished the MRTM0 model with virtually identical interface to PMOD.  Tested on a sample "Reference ROI" for providing the Reference Curve.


Monday, October 21, 2013

Integrating Ichise's  MRTM0,MRTM,MRTM2 reference model into FireVoxel dynamic framework.

Sunday, October 20, 2013

Implementing MRTM0, MRTM, MRTM2 reference model within the FireVoxel Dynamic Processing framework.

Saturday, October 19, 2013

Fully finished the PET->Anatomy registration workflow with full integrated User Interface.  In this experiment a  344x344x128 volume with 203 timepoints (original DICOM is 5.83 GB).
It was registered to the MPRAGE with 256x256x160.

Two registration modes were used:


Quick (Nearest neighbor final result), total time 79 sec, combined registered (PET+MRI) file = 496 MB.
Regular (Linear interpolation), total time 217 seconds,  combined registered (PET+MRI) file = 653 MB.

Friday, October 18, 2013

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.
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)
Finalizing integrated PET->MPRAGE workflow to spare the user from a separate Orientation change and Cropping operation.  This is under the MainMenu>Applications>PET>Register to Anatomy.

Thursday, October 17, 2013



This was investigated and postponed due to a very large changes required:

 Major design improvement :   Multiresolution Multilayer volmetric entities.
Since the beginning of FireVoxel, only volumes of the same voxel count and size are allowed to be combined in the Multilayerr volumetric entities.
New design relaxes this requirement, by demanding ONLY the physical dimensions of the layers to match so they can be combined into Multilayer volumetric entities.

Motivation: one of the important issues is the presentation of the Registration results. In 4D PET to MPRAGE registration, we desire to keep the dimensions of the MPRAGE intact.  But reformatting 220-timepoint PET volume to MPRAGE dimensions leads to multi-GByte volumes.  Solution is to keep registration results at the resolution close to original, while able to overlay it over the higher resolution target.

There are other applications of this.  If I am not mistaken, we were considering registering the prostate DCE exam to biopsy that have a much higher resolution.  It is a similar problem with the size of the registered source.

In short, we want to be able overlay registration result without the explosive and redundant data increase.

It is approached pragmatically, i.e. only currently used workflows would be modified and verified. We will adjust other multilayer functionality as we go.  The biggest task  and modification of the UI that I foresee is the Vector ROI issues, its dialog etc.

Wednesday, October 16, 2013

Fully parallelized the "Volume Dynamic Averaging" function with the great speed-up.
Fixed very important defect:  it manifested as a "randomly jumping" vector ROI, when user pulls one the vector ROI handles, quite often the ROI corner would jump to position entirely different from the mouse cursor position.
Fix:  modified the VoxelInfo function, that is updating the status line when the mouse cursor moves.  Specifically call to DoEvents() (Windows function for updating the application window events) was eliminated.
Achieved final registration of PET to MPRAGE.  Result shows the registered PET, averaged over the last 100 timepoints, overlayed on the MPRAGE.


Proceeding to implement integrated registration workflow that includes automatic cropping and orientation correction (from coronal to sagittal).

Tuesday, October 15, 2013

Optimizing calls to Reslicing function that follows 4D to 3D registration and the reslicing take major part of total processing time.
Fixing defect:  After successfully registering the whole 4D PET to MPRAGE, attempted to do "Dynamic Averaging" function of first 100 PET timepoints.  Result is incorrect and is being investigated.



Several registration scenarios had uninitialize parameters, f.e.  Fine Interpolation was not initialize in most
of the registration scenarios.  Corrected.
PET to MPRAGE registration:  There is a strange defect that PET with dozen or so timeframes is registered fine to MPRAGE. But when I try to register 100+ timepoints, registration runs in reasonable time, but the outputs entirely empty result.
Highly parallelized Volume cropping function (UI-level), so it runs much faster now.

Sunday, October 13, 2013

Fast loading of the native *.FVX file:  98% of time is spent in   DCMTK::FindTagName function.
After call parallelization, interestingly, execution time has doubled.  Looking into resolving this to achieve "more instant" load.  Presently it is about 10 sec for 300,000 slice volume.

Result:   "Native" loading of the original DICOM 5.6GB dataset is now 0.7 sec.

Friday, October 11, 2013

Had a meeting today with Yu-Shin:
1. Demonstrated new and improved registration  of 4D PET->MPRAGE but only for a low timepoint count.
2. For some reason the 202-timepoint PET registration failed, so I am troubleshooting that now.
3. More FireVoxel general fuctionality was demonstrated and explained.
4. Details of integrated Registration workflow were discussed, so the cropping, orientation change and registration are combined into a single operation.
Correcting 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.
Added the progress indicator to Volume Crop UI-level functions.  These operations might be lengthy for very large volumes.

Thursday, October 10, 2013

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.
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.
Noticed a slower than expected (20 sec for WSINC interpolation) final transformation after registration for REAL time volume as a Source that being transformed to Target.  Investigating potential speedup...

Wednesday, October 9, 2013


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. 
Verified new design of Mutual information registration
on PET->MPRAGE example