Search This Blog
Tuesday, December 31, 2013
Thursday, December 26, 2013
Sunday, December 22, 2013
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.
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
Friday, December 20, 2013
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.
Thursday, December 19, 2013
Tuesday, December 17, 2013
Sunday, December 15, 2013
Saturday, December 14, 2013
Friday, December 13, 2013
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.
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
Wednesday, December 11, 2013
Tuesday, December 10, 2013
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:
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
Thursday, December 5, 2013
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
Tuesday, December 3, 2013
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.
Monday, December 2, 2013
Wednesday, November 27, 2013
Tuesday, November 26, 2013
Monday, November 25, 2013
Sunday, November 24, 2013
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:
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.
Thursday, November 21, 2013
Friday, November 15, 2013
Wednesday, November 13, 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.
Sunday, November 10, 2013
Saturday, November 9, 2013
Friday, November 8, 2013
Thursday, November 7, 2013
Wednesday, November 6, 2013
Tuesday, November 5, 2013
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
Sunday, November 3, 2013
Saturday, November 2, 2013
Friday, November 1, 2013
Thursday, October 31, 2013
Wednesday, October 30, 2013
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)
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)
Tuesday, October 29, 2013
Monday, October 28, 2013
Sunday, October 27, 2013
Saturday, October 26, 2013
Friday, October 25, 2013
Wednesday, October 23, 2013
Tuesday, October 22, 2013
Monday, October 21, 2013
Sunday, October 20, 2013
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.
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
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
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.
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.
Tuesday, October 15, 2013
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.
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.
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.
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.
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.
Subscribe to:
Posts (Atom)




















