33#ifndef ROI_DYNSEGMENT_ACTION_H
34#define ROI_DYNSEGMENT_ACTION_H
43#include <aims/bucket/bucketMap.h>
54 class RoiDynSegmentActionView_Private ;
67 virtual std::string
name()
const ;
75 int order()
const {
return myOrder ; }
79 float meanValue()
const {
return myInsideMeanError ; }
99 myDimensionMode =
TWOD ;
100 std::cout <<
"Dymension Mode set to 2D" << std::endl ;
104 myDimensionMode =
THREED ;
105 std::cout <<
"Dymension Mode set to 3D" << std::endl ;
115 struct PointLess :
public std::binary_function< Point3d, Point3d , bool>
119 return( p1[2] < p2[2]
120 || ( (p1[2] == p2[2]) && (p1[1] < p2[1]) )
121 || ( (p1[2] == p2[2])
122 && (p1[1] == p2[1]) && (p1[0] < p2[0]) ) ) ;
126 bool findLocalBestSeed(
const Point3d& dims,
const Point3d& halfSize ) ;
130 std::vector<float>& meanSignal,
131 float& mean,
float& var,
132 bool forceComputing =
false ) ;
133 void pcaRegionGrowth( ) ;
134 void growth( std::list< std::pair< Point3d, ChangesItem> >* changes ) ;
135 void refinePCA( std::list< std::pair< Point3d, ChangesItem> >* changes ) ;
138 std::vector<float>& meanSignal ) ;
140 const Point3df& p,
const std::vector<float>& meanSignal,
145 AObject * myCurrentImage ;
149 bool myOrderChanged ;
151 bool myFindNearestMinimumMode ;
152 bool myDisplayResults ;
154 int myFaithInterval ;
157 float myInsideMeanError ;
158 float myInsideSigmaError ;
159 std::vector<float> myMeanSignal ;
160 std::map<Point3d, float, PointLess> myPreviousComputing ;
172 std::vector<float> vpos( 4 );
177 for(
int t = 0; t <= data->
MaxT(); ++t )
188anatomist::RoiDynSegmentAction::error(
const anatomist::AObject* data,
190 const std::vector<float>& meanSignal,
191 carto::VolumeRef<float>& errorMatrix )
193 carto::VolumeRef<float> indiv( 1,
int(data->
MaxT()+1.1) ),
194 indivTr(
int(data->
MaxT()+1.1 ) );
196 std::vector<float> vpos( 4 );
201 for (
int t = 0 ; t < data->
MaxT()+1 ; ++t )
205 indiv(0,t) = dt - meanSignal[t];
206 indivTr(t,0) = dt - meanSignal[t];
213 return carto::matrix_product(
214 indiv, carto::matrix_product( errorMatrix, indivTr ) )(0,0) / norm2 ;
238 float myChangingFlag ;
239 float myUpdatingFlag ;
240 anatomist::RoiDynSegmentActionView_Private * _private ;
void faithIntervalChanged(int nSigma)
void computeModeChanged(int growthMode)
void refineModeChanged(int mode)
void orderChanged(int order)
virtual void update(const anatomist::Observable *, void *)
This method is called whenever the observed object is changed.
void findNearestMinimumModeChanged(int findLocalMinimum)
virtual ~RoiDynSegmentActionView()
RoiDynSegmentActionView(anatomist::RoiDynSegmentAction *myAction, QWidget *parent)
void dimensionModeChanged(int newDimensionMode)
Anatomist graph object: a list that manages destruction of its sub-elements.
Base Anatomist object (abstract)
virtual float mixedTexValue(const std::vector< float > &pos, const Referential *orgRef, int poly=-1) const
Gets a "mixed" texture value at a given space / time location.
virtual float MaxT() const
Obsolete, deprecated.
This class can be subclassed to represent an object that the programmer wants to have observed.
A class can implement the Observer interface when it wants to be informed of changes in observable ob...
void changeFaithInterval(int newFaithInterval)
void changeOrder(int newOrder)
void findNearestMinimumModeOn()
void setPointToSegmentByDiscriminatingAnalyse(int x, int y, int, int)
virtual QWidget * actionView(QWidget *)
virtual bool viewableAction() const
static Action * creator()
int dimensionMode() const
void increaseFaithInterval()
void findNearestMinimumModeOff()
bool displayResults() const
int findNearestMinimum() const
virtual std::string name() const
virtual void unregisterObservable(anatomist::Observable *)
Called when an observable is destroyed, only called by Observable: don't use this function directly.
virtual ~RoiDynSegmentAction()
int faithInterval() const
void decreaseFaithInterval()
void replaceRegion(int x, int y, int, int)
virtual void update(const anatomist::Observable *, void *)
This method is called whenever the observed object is changed.
AimsVector< float, 3 > Point3df
AimsVector< int16_t, 3 > Point3d
float norm2(const AimsVector< T, D > &v1)