C2DPerfusionAnalysis Class Reference

A class to run an ICA on a heart perfusion series. More...

#include <mia/2d/perfusion.hh>

Collaboration diagram for C2DPerfusionAnalysis:
[legend]

Public Types

enum  EBoxSegmentation { bs_delta_feature, bs_delta_peak, bs_features, bs_unknown }
 Possible bases for LV-RV heart segmentation. More...
 

Public Member Functions

 C2DPerfusionAnalysis (size_t components, bool normalize, bool meanstrip)
 
P2DFilter get_crop_filter (float scale, C2DBounds &crop_start, EBoxSegmentation approach, const std::string &save_features="") const
 
P2DImage get_feature_image (int index) const
 
int get_LV_idx () const
 
int get_LV_peak_idx () const __attribute__((deprecated))
 
int get_LV_peak_time () const
 
std::vector< float > get_mixing_curve (unsigned idx) const
 
int get_movement_idx () const
 
int get_perfusion_idx () const
 
std::vector< C2DFImageget_references () const
 
int get_RV_idx () const
 
int get_RV_peak_idx () const __attribute__((deprecated))
 
int get_RV_peak_time () const
 
bool has_movement () const
 
bool run (const std::vector< C2DFImage > &series, const CIndepCompAnalysisFactory &icatool)
 
void save_coefs (const std::string &coefs_name) const
 
void save_feature_images (const std::string &base_name) const
 
void set_approach (CIndepCompAnalysis::EApproach approach)
 
void set_max_ica_iterations (size_t maxiter)
 
void set_min_movement_frequency (float min_freq)
 
void set_use_guess_model ()
 
 ~C2DPerfusionAnalysis ()
 

Static Public Attributes

static TDictMap< EBoxSegmentationsegmethod_dict
 

Detailed Description

A class to run an ICA on a heart perfusion series.

This class provides the tools for ICA based 2D perfusion image series. This class is specifically designed for the analysis of free breathingly aquired myocardial perfusion images.

Definition at line 42 of file perfusion.hh.

Member Enumeration Documentation

◆ EBoxSegmentation

Possible bases for LV-RV heart segmentation.

Enumerator
bs_delta_feature 

Segmentation based on the difference of the LV and RV feature images

bs_delta_peak 

Segmentation based on the difference of the LV and RV peak enhancenemt images

bs_features 

Segmentation based on the LV and RV feature images

bs_unknown 

place holder

Definition at line 45 of file perfusion.hh.

Constructor & Destructor Documentation

◆ C2DPerfusionAnalysis()

C2DPerfusionAnalysis::C2DPerfusionAnalysis ( size_t  components,
bool  normalize,
bool  meanstrip 
)

Constructor

Parameters
componentsnumber of independend components, 0 = auto estimate from [3,4,5,6,7]
normalizenormalize feature images
meanstripstrip mean from mixing time curves

◆ ~C2DPerfusionAnalysis()

C2DPerfusionAnalysis::~C2DPerfusionAnalysis ( )

Member Function Documentation

◆ get_crop_filter()

P2DFilter C2DPerfusionAnalysis::get_crop_filter ( float  scale,
C2DBounds crop_start,
EBoxSegmentation  approach,
const std::string &  save_features = "" 
) const

Evaluate an image cropping filter. This code is specifically designed to deal with the segmentantion of the left heart ventricle in short axis heart MRI The algorithm evaluates the centers of the LV and the RV and uses the distance between both to estimata a bounding box. Some heuristics are used to check whether the segmentation makes sense

Parameters
scaleenlargement scale of the bounding box to create the cropping region
[out]crop_startreturns the left upper corner of the cropping region that can be used to adjust segmentations
approachon what input data to base thesegmentation on
save_featuresif not empty store feature images in files with this prefix
Returns
the cropping filter or C2DFilterPlugin::ProductPtr() if the segmentation fails.

◆ get_feature_image()

P2DImage C2DPerfusionAnalysis::get_feature_image ( int  index) const
Parameters
indexof the feature image requested, set negative to request the mean image.
Returns
the requested feature image

◆ get_LV_idx()

int C2DPerfusionAnalysis::get_LV_idx ( ) const
Returns
the LV enhancement IC index of -1 if it could not be identified

◆ get_LV_peak_idx()

int C2DPerfusionAnalysis::get_LV_peak_idx ( ) const
Returns
the LV peak enhancement IC index of -1 if it could not be identified

◆ get_LV_peak_time()

int C2DPerfusionAnalysis::get_LV_peak_time ( ) const
Returns
the LV maximum peak enhancement time index, or -1 if not identified

◆ get_mixing_curve()

std::vector<float> C2DPerfusionAnalysis::get_mixing_curve ( unsigned  idx) const

Obtain the mixing curve of a vertain component

Parameters
idxindex of the requested mixing series;
Returns
the mixing curve

◆ get_movement_idx()

int C2DPerfusionAnalysis::get_movement_idx ( ) const
Returns
the perfusion enhancement IC index of -1 if it could not be identified

◆ get_perfusion_idx()

int C2DPerfusionAnalysis::get_perfusion_idx ( ) const
Returns
the perfusion enhancement IC index of -1 if it could not be identified

◆ get_references()

std::vector<C2DFImage> C2DPerfusionAnalysis::get_references ( ) const

Create uncropped reference images that try to omit the movement component in the image series.

◆ get_RV_idx()

int C2DPerfusionAnalysis::get_RV_idx ( ) const
Returns
the RV enhancement IC index of -1 if it could not be identified

◆ get_RV_peak_idx()

int C2DPerfusionAnalysis::get_RV_peak_idx ( ) const
Returns
the RV peak enhancement IC index of -1 if it could not be identified

◆ get_RV_peak_time()

int C2DPerfusionAnalysis::get_RV_peak_time ( ) const
Returns
the RV maximum peak enhancement time index, or -1 if not identified

◆ has_movement()

bool C2DPerfusionAnalysis::has_movement ( ) const
Returns
true if a periodic component could be identified in the given series

◆ run()

bool C2DPerfusionAnalysis::run ( const std::vector< C2DFImage > &  series,
const CIndepCompAnalysisFactory &  icatool 
)

Run the ICA analysis - keeps a copy of the image series

Parameters
seriesimage series should contain more images thennumber of requested components
icatoolGenerator for the used ICA analyis method

◆ save_coefs()

void C2DPerfusionAnalysis::save_coefs ( const std::string &  coefs_name) const

Save the mixin matrix to a file.

Parameters
coefs_nameoutput file name

◆ save_feature_images()

void C2DPerfusionAnalysis::save_feature_images ( const std::string &  base_name) const

Save the feature image to some PNG files.

Parameters
base_nameoutput file name base

◆ set_approach()

void C2DPerfusionAnalysis::set_approach ( CIndepCompAnalysis::EApproach  approach)

Set the ICA seperation approach

Parameters
approachFICA_APPROACH_SYMM or FICA_APPROACH_DEFL
Todo:
the parameter should be an enum

◆ set_max_ica_iterations()

void C2DPerfusionAnalysis::set_max_ica_iterations ( size_t  maxiter)

Set the number of ICA iterations

Parameters
maxiter

◆ set_min_movement_frequency()

void C2DPerfusionAnalysis::set_min_movement_frequency ( float  min_freq)

Set the minimum mean frequency (in breath per heart beat) that decides whether a slope is considered to be periodic.

Parameters
min_freqThe new minimum frequency, a value < 0.0 disables the test (this is the default)
Remarks
this values is simply passed through to the wavelet slope classifier

◆ set_use_guess_model()

void C2DPerfusionAnalysis::set_use_guess_model ( )

Use an experimental model to create a initial guess.

Field Documentation

◆ segmethod_dict

TDictMap<EBoxSegmentation> C2DPerfusionAnalysis::segmethod_dict
static

Dictionary for segmentation method flags

Definition at line 158 of file perfusion.hh.


The documentation for this class was generated from the following file: