Search This Blog

Saturday, May 2, 2015

Various concentration models were compared for the GRASP and NUFFT carotid artery curves.

Both curves were provided as *.txt file in FireVoxel TAC format.  Upon opening FireVoxel (no document present) user choose  "MainMenu>Applications>Convert TAC to Concentration"

After choosing the file name, the ViewTac dialog appears with the original GRASP curve

General Concentration conversion dialog box will appear.  User selects the FTWE concentration model.
The core model is:  S = M0*sin(alpha)* ((1-exp(-TR/T1(c )) / (1-cos(alpha)*exp(-TR/T1(c ))

Optionally (with T2* checkbox) the T2* effect could be accounted for, with the following formula

S = M0*sin(alpha)* ((1-exp(-TR/T1(c )) / (1-cos(alpha)*exp(-TR/T1( c)))*exp(-TE/T2*(c))


We start with loading the Carotid AIF file obtained from GRASP:

original Curve from GRASP

After applying the basic FTWE model we obtain this curve
GRASP FTWE (Max Concentration 0.2944)

 Next we enable the FTWE with the T2* effect
GRASP  FTWE with T2* effect (Max concentration 17.94)


In the next part of the experiment we load with the NUFFT curve.  This AIF was obtained automatically with FireVoxel-IDIF function and the ROI size was about 2000 voxels.

NUFFT original curve

After applying the basic FTWE model we obtain this concentration curve

FTWE model, max Concentration = 1.71
  Next we enable the FTWE with the T2* effect:
FTWE model with T2* effect, max concentration = 19.9




CONCLUSION:
NUFFT with FTWE model seem to provide best result with more realistic concentration values. But further evaluations are required.


Dialog ViewTac implemented numerous fixes including

a) fixed the proper display of MaxSignal and MaxTime fields.
b) Removed "Blood vessel" checkbox.
c) Repaired connection to the "Concentration Method" dialog box.

Friday, May 1, 2015

Dialog "ROI Stats 4D":  upgraded concentration handling to the unified concentration dialog box.


Added the "Load TAC folder" field to the User Options, so the current folder is remembered within and between the sessions.

Thursday, April 30, 2015

FireVoxel Build 182 is released.
CERENE3D menu:  added new variants for kidney registration
{MI-RAD,MI-ENSEMBLE,URALTAU-RAD} for the further investigation of most suitable algorithm.

Wednesday, April 29, 2015

Integrated new URALTAU option into all relevant menus and UI items.
URALTAU registration measure: provided initial SSE-based vectorization code.
Introduced new registration measure URAL-TAU that performs much better on the registration of 3D kidney in abdominal imaging. On the test dataset JM4 it registered without a single gross misregistration, for all strating ROIs.

Monday, April 27, 2015

Integrated "Dicom Load Folder" variable into User Options, so it is remembered within and between the FVX sessions.
IDIF function:  corrected defect and logic bug when user asks to keep only X% of the brightest voxels.

Concentration curve obtained directly from NUFFT dataset (JD)
a) Cortex peak timepoint                                      b) Last timepoint

Difficult case for registration in FLASH sequence.  At the moment a) to b) is not possible to register well.

Thursday, April 23, 2015

Breast EPI-to-VIBE registration on slice-by-slice using 5 landmark method.

User sets 5 landmarks on each slice, using existing easy tool  (3 sec\breast\slice).

Existing function performs Affine of Polynomial (any power) landmark match and transform.
All tools are existing, just need to interface the "landmark curve" with "landmark registration"


Wednesday, April 22, 2015

Build 181 is released.
BiCalSupport.cpp code re-engineering including the change of task construct to parallel_for
Corrected the memory overwrite error in VA_DicomOrientation_ChangeByRotation that was causing the failure of the Volume Rotation function.
Restored the ABT subtest for BiCal.

Tuesday, April 21, 2015

Extended the context-depending Load\Save operations to FVX document so the Directory\Extension\FilterIndex are remembered within the FireVoxel session and saved to the User Options file too.
Reengineered the DICOM loading with timing information.  This was done to correctly load the EPI-4D dataset.  Improved dynamic timepoint information to contain the full time interval for all timepoints.

Monday, April 20, 2015

Corrected the crash Defect on single slice GE Dicom sample.  This was due to recently introduced code handling the VR_DT tag type.

Sunday, April 19, 2015

Implemented context-memory system for saving and loading RAW files so the previously used Folder, extension and File Filter Index would be used.  Settings are saved and loaded to User Options file so they are preserved between FireVoxel sessions.

Friday, April 17, 2015

Implemented the CT-brain trauma batch workflow processing parameters  "Min-Max Number of slices required.
Fully parallelized the "Threshold to ROI" function. This was done in context of testing EdgeWave which contains the "Threshold to ROI".

Thursday, April 16, 2015

Wednesday, April 15, 2015

T1-mapping crash reported on 04/14/2015 is working in Build 179.  I entered the offset  "-4096" in the modelling dialog.
Initial alignment of breast data, using DICOM tags only
PET over MR

EPI over MR
FireVoxel Build 179 is released.

Tuesday, April 14, 2015

WM FLAIR lesions segmentation algorithm: corrected an uninitialized memory error that was resulting in intermittent crash during the execution.
Completely re-engineered internal design of Input Functions in the Dynamic Experiment module.  Remove redundant representation of IFs in the DEMP and FireVoxel modules.
Fixed the defect when the IF was not properly loaded after the IDIF procedure.

Sunday, April 12, 2015

Moved the TempDir option to under   "User Options".   Exposed TempDir under "User Options" dialog.
Removed "Main Menu>File>Set Working Directory" menu item.
Added "Applications>CERENE3D  menu item
Added   "Applications>CERENE3D>Arterial Input function" menu item and parameters specific to CERENE3D workflow.

Thursday, April 9, 2015

Improved and corrected a rare defect in the automatic function for determining the required precision of variables for Cost function used in Amoeba optimization.  Some cost functions were producing an infinite loop along some "degenerated" variables.

Wednesday, April 8, 2015

Implemented fully automatic Cortex-Medulla segmentation from registered 4D kidney.
Notice how accurately collecting system is excluded

Ensemble 4D registration substantially outperforms the "Radial" and "Serial" methods (on kidney 4D FLASH data)

Kidney Mask on the base (anchor) timepoitn

Pre-contrast timepoint registered using Radial

Pre-contrast timepoint registered using Ensemble

Tuesday, April 7, 2015

Fixed a major FireVoxel-wide DICOM error.  When encountering the DICOM tag of VR_TM type, the .Fractions (=microseconds) field was incorrectly converted to string when the number of digits in .Fractions was <6.  Fix was to pad the Fractions with 0s to contain 6 digits corresponding to microseconds.  This might have affected all the 4D volumes.

Monday, April 6, 2015

Improved and simplified the "Load Siblings with Descendants" function of the DICOM dialog.
If composite series are detected, user is asked if the composite series have to be included.
Button name is simplified to "Load Siblings".
Fixed the "DICOM subtree copy" defect.  When several series of the 4D study have identical filename in the original subfolders (very unusual situation), the copy function would fail by blindly overwriting them.  Fixed now by creating individual subfolders.
Confusing DICOM situation in Renal FLASH 4D:
Relevant DYNAMIC series seem to be present TWICE.  First  RENAL_PERF_DYN (outlined in RED 22 timepoints),  second time COMP_RENAL_PERF  (outlined in BLUE another timepoints).
Actual times are identical between those series, so this confuses FireVoxel when trying to load the with the simple "Load siblings".  Workarounds are possible presently (either by checking only required series, or just by "Load Range" for COMP_RENAL_PERF).

But which one should be used?   First one RENAL_PERF_DYN can be combined with RENAL_PERF_5_MEASURES  making a longer dynamic dataset of 27 timepoints.

Should anything be done about this now?

Wednesday, March 25, 2015

Hyperspectral image (2D+Spectral dimension) was loaded.
Entire spectrum for each pixel was considered as a "Spectrum Curve".

Original image and a representative spectrum for the specified pixel

Entire population of pixels was clustered (using fixed number of cluster=7) so that all the Curves within cluster are similar to each other and different between clusters.
labeled map of clusters (7 clusters = 7 colors)



Each cluster corresponds to a distinct spectrum.  7 clusters were chosen because at 8 clusters the corresponding spectrum curves became less distinct.
Fragment of the original map

Corresponding fragment of the labeled map


RoiStat4D dialog box:  fixed the "inifinite loop while editing the value" issue.
Fixed the defect when on FVX exit the Working directory was cleaned out instead of App\Temp directory.

Tuesday, March 24, 2015

Jeff Zhang's 3C model (JZ3C) was implemented and tested on sample GRASP dataset:


Arterial ROI was automatically selected using IDIF function


AIF-function was extracted 

Segmented kidney


JZ3C model fit (GFR=21.54)

Sunday, March 22, 2015

JZ2C-model (AIF-free) initial implentation:
Original 4D-segmented volume

Corresponding curves for Cortex (red) and Medulla (blue)

JZ2C (AIF-free) model fit. Blue dots - data, Yellow line - fitted curve

Friday, March 20, 2015

GFR modelling fitting is displayed now combined with GFR. This would be common for all models
Updated the menu for Single Kidny GFR calculation:

Wednesday, March 18, 2015

FireVoxel configuration file:  implemented an initial version of Load on App start, Save on App exit.

Tuesday, March 17, 2015

RoiStats3D dialog:  corrected processing when there is a single ROI without the underlying volume. Number of voxels and volume in cm3 is displayed properly.

Monday, March 16, 2015

User Interface Option dialog: introduce the AutoTile option

Implemented several options for the volumetric cursor behavior:  {Regular, Multiprojection Synchronize on Click (=Mango), Multiprojection Synchronize}


"T1-mapping using inversion recovery" parametric model:  combine two models into a single one with an option for {REAL,MODULUS} calculation.
Implemented an automatic subtest for the REAL case.

Saturday, March 14, 2015

T1-mapping:  fixed defects in {RoiStats4D, ViewTac} dialogs when the input signal has negative values.

Wednesday, March 11, 2015

FireVoxel Build 176 is released.
PET4D<->MR4D registration:  implemented "ROI-crosscopy" feature that copies all the ROIs between Source and Target.
"Fill & Morph"   error explained:

Actually it does not seem to be an error.  Result is due to the few "unintended" ROI voxels in the intermediate slices.
Result is due to the few "unintended" ROI voxels in the intermediate slices (blue arrows)
With unintended voxels removed Morphing result appears to be correct.
Implemented the initial version of the synchronized multiprojection 3D cursor


Tuesday, March 10, 2015

T1-mapping (it-dynamic component):  fixed defect of incorrect scrolling in time.

Monday, March 9, 2015

Fixed processing of complex 4D Cine dataset where TAG_CONTENT_TIME was used to hold timing info.  Additionally  repeating times are now handled properly.
Cine images, timings are recovered - there are some repeats.

Corrected defect with  "Threshold to ROI" user-level function when the negative threshold is used.
Diagnostic message is added .

Sunday, March 8, 2015

Implemented logic for loading MR images which after Rescale\Intercept contain negative values.
User is offered an offset so the minimal voxel value would map into 0.

Resulting loaded volume


Added ABT subtest for NIFTI 3D and 4D load.
"Save Active Layer to RAW": disabled the defect of not functioning for 3D volumes.

Friday, March 6, 2015

Dynamic segmentation Verification dialog:  added handling of the arrow keys so they are translated directly into Volume scrolling as usual handling of the volumetric document.
"4D  Segmentation by Patches" - fully parallelized with x5 speed improvement on reference machine.

Thursday, March 5, 2015

Fully parallelized the ROI Tac calculation (F4) - great speed-up
Fixed a major "racing condition" during the parallel load of ".FVX" files.
Parametric model calculation for a Single ROI TAC:  expanded the progress message to include the name of currently processed model.
Parametric model calculation:  expanded the progress message to include the name of currently processed model.
Dynamic segmentation verification dialog (Segmentation by 4D-patches):  pre-calculate all the TACs for all ROIs during the dialog initialization so later on User has an instant access to all TACs.

Wednesday, March 4, 2015

Dynamic (4D) Segmentation  Verification dialog box:  added the Mouse Wheel response so user can scroll through slices without exiting the dialog box.

Tuesday, March 3, 2015

Renal GFR calculation (CERENE) - changed the default registration method to URAL (signal  gradient based).
Dynamic segmentation dialog: modified the dialog layout and added several addition options for the TAC normalization and comparison.

Monday, March 2, 2015

FireVoxel Build 175 is released.
NIFTI-1 support:  enable  FireVoxel load of images from the BPD dataset

Provided initial support for reading Nifti-1 format into FireVoxel.
Preliminary testing was done on sample files from NIFTI website
a)  3D   unsigned 8-bit
b)  4D  signed 16-bit

Sunday, March 1, 2015

PET4D-MR4D registration:  added a content time difference check between MR-PET and an option to "not use the DICOM-tags initial alignment".  This is to fixed some studies where PET & MR were acquired not simultaneously.

Now correct result for RS registration:

When PET document is loaded, the times are now correctly recorded in absolute format (i.e. from 01/01/1900)

Saturday, February 28, 2015

Case CV:
Quality of PET4D-MR4D registration (Binary mode).  PET and MR should be motion corrected prior to the registration.


Registration by DICOMTAGS: corrected defect when two  4D volumes are registred and placing as an additional layer produces a crash.

Thursday, February 26, 2015

Fixed defect:  When multilayer document is cropped using Vector ROI, new document opens and ALL the layers are redrawn correctly now.
FireVoxel Build 174 is released.

Download here:   

https://drive.google.com/file/d/0B2lI9iEKOqv6ZkxLbGx2aWJBWWM/view?usp=sharing
FireVoxel 174 and higher was compiled with Visual Studio 2013.  It requires a one time installation of a new Visual Studio 2013 redistributable package.

It is available from Microsoft here:
http://www.microsoft.com/en-us/download/details.aspx?id=40784

Press Download button.

Then choose "vcredist_x86.exe"



Created a dedicated workflow submenu:  "MainMenu>Application>Renal workflow without AIF"

Wednesday, February 25, 2015

Tuesday, February 24, 2015

Get ROI Tac (RoiStats4D\F4) procedure: optimized performance so the speed is proportional to the size of the ROI.
Implemented UI-level function "Main Menu>ROI>Crop volume by ROI".  This takes {3D,4D} ROI, find maximum bounding box for all voxels and crops the current document by this box in 4D creating a new document.
Kidney Ctx+Mdl segmentation from GRASP-4D exam.  FVX registration is performed in this example.


Timepoint of cortex peak


Kidney GRASP-4D (from liver exam).  Fully automatic 4D-segmentation.