]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuContourToControlPoints.cxx
fabcee39a1fa987b90ee9b1649aebb0555d18cd3
[creaMaracasVisu.git] / bbtk / src / bbmaracasvisuContourToControlPoints.cxx
1 #ifdef _USE_VTK_
2 #ifdef _USE_ITK_
3
4 #include "bbmaracasvisuContourToControlPoints.h"
5 #include "bbcreaMaracasVisuPackage.h"
6 namespace bbcreaMaracasVisu
7 {
8
9 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ContourToControlPoints)
10 //BBTK_USER_BLACK_BOX_IMPLEMENTATION(ContourToControlPoints,bbtk::AtomicBlackBox);
11 BBTK_BLACK_BOX_IMPLEMENTATION(ContourToControlPoints,bbtk::AtomicBlackBox);
12
13 //------------------------------------------------------------
14 void ContourToControlPoints::Process()
15 {
16                 if ( bbGetInputSampling() >= 3.0 )
17                 {
18                         OutContourX.clear();
19                         OutContourY.clear();
20                         OutContourZ.clear();
21                         _ext2D->SetContour( bbGetInputInContourX(),bbGetInputInContourY(),bbGetInputInContourZ() );
22                         _ext2D->SetSamplingControlPoints( bbGetInputSampling() );
23                         _ext2D->GetSamplingControlPoints( &OutContourX,&OutContourY,&OutContourZ );
24                 }
25                 if(bbGetInputSampling() == 2.0)
26                 {
27                         OutContourX.clear();
28                         OutContourY.clear();
29                         OutContourZ.clear();
30                         _ext2D->SetContour( bbGetInputInContourX(),bbGetInputInContourY(),bbGetInputInContourZ() );
31                         _ext2D->GetControlPoints( &OutContourX,&OutContourY,&OutContourZ );
32                 }
33                 
34                 //Liberates the memory from the VTK's objects. Always must do that!!    
35                 if ( bbGetInputLoadContour()== 1 )
36                 {
37                         if (_imagedata!=NULL)
38                         {
39                                 _imagedata->Delete();
40                         }
41                         KeyContourX.clear();
42                         KeyContourY.clear();
43                         KeyContourZ.clear();
44                         KeySizes.clear();
45                         FILE* fd;
46                         fd = fopen("C:/bbtk_JS/data/SavedContours.txt","r"); 
47                         _propgdata->ReadKeyContour( fd );
48                         fclose(fd);
49                         _propgdata->GetKeyContours(&KeyContourX,&KeyContourY,&KeyContourZ,&KeySizes);
50                         if(KeySizes.size() == 1)
51                         {
52                                 //Method for 2D
53                         //      _imagedata = _propgdata->method_RBF(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
54                         }
55                         if(KeySizes.size() >= 2)
56                         {
57                                 //Method for 3D
58                                 //_imagedata = _propgdata->method_RBF_3D(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
59                         //      _imagedata = _propgdata->method_RBF_3D_ThinPlate(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
60                         }
61                 }
62                 if ( bbGetInputLoadContour()== 2 )
63                 {
64                         if (_imagedata!=NULL)
65                         {
66                                 _imagedata->Delete();
67                         }
68                         FILE* fd;
69                         fd = fopen("C:/bbtk_JS/data/SavedManualPoints.txt","r"); 
70                         _propgdata->ReadKeyContour( fd );
71                         fclose(fd);
72                         _propgdata->GetKeyContours(&KeyContourX,&KeyContourY,&KeyContourZ,&KeySizes);
73                         if(KeySizes.size() == 1)
74                         {
75                                 //Method for 2D
76                         //      _imagedata = _propgdata->method_RBF(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
77                         }
78                         if(KeySizes.size() >= 2)
79                         {
80                                 //Method for 3D
81                                 //_imagedata = _propgdata->method_RBF_3D(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
82                         //      _imagedata = _propgdata->method_RBF_3D_ThinPlate(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
83                         }
84                 }
85
86                 if ( bbGetInputLoadContour()== 3 )
87                 {
88                         if (_imagedata!=NULL)
89                         {
90                                 _imagedata->Delete();
91                         }
92                         vtkImageData *itemp = vtkImageData::New();
93                         _contprop->appendContour();
94                         _contprop->setInterpolationNumber(300);
95                         itemp = _contprop->GetKeyContours(&KeyContourX,&KeyContourY,&KeyContourZ,&KeySizes);
96                         if(KeySizes.size() == 1)
97                         {
98                         }
99                         if(KeySizes.size() >= 2)
100                         {
101                                 //Method for 3D
102                                 _imagedata = itemp;
103                                 _contprop->resetAppend();
104                                 _contprop->appendContour(&KeyContourX,&KeyContourY,&KeyContourZ);
105                                 //_contprop->GetContour(bbGetInputSlice(),&OutContourX,&OutContourY,&OutContourZ);
106                                 _contprop->GetControlPoints(bbGetInputSlice(),&OutContourX,&OutContourY,&OutContourZ);
107                                 printf("\n Size OutContourX = %d",(int)(OutContourX.size()));
108                         }
109                 }
110
111                 bbSetOutputControlPointX( &OutContourX );
112                 bbSetOutputControlPointY( &OutContourY );
113                 bbSetOutputControlPointZ( &OutContourZ );
114                 bbSetOutputImagePropg( _imagedata );
115 }
116         
117         
118 //------------------------------------------------------------
119 void ContourToControlPoints::bbUserSetDefaultValues()
120 {
121                 bbSetInputSampling(5.0);
122                 bbSetInputSlice(0);
123                 bbSetInputInContourX(NULL);
124                 bbSetInputInContourY(NULL);
125                 bbSetInputInContourZ(NULL);
126                 bbSetInputRadRBF(1000.0);
127                 bbSetInputOption(1);
128                 bbSetInputLoadContour(0);
129
130                 _contprop       = NULL;
131                 _propgdata      = NULL;
132                 _imagedata      = NULL;
133                 _ext2D          = NULL;
134         
135                 _fd = NULL;
136                 pos = 0;
137 }
138
139         
140         //-----------------------------------------------------------------     
141         void ContourToControlPoints::bbUserInitializeProcessing()
142         {
143                 _contprop       = new ContourPropagation();
144                 _propgdata      = new PropContour();
145                 _imagedata      = vtkImageData::New();
146                 _ext2D          = new ExtractControlPoints2D();
147         }
148         
149         //-----------------------------------------------------------------     
150         void ContourToControlPoints::bbUserFinalizeProcessing()
151         {
152                 if (_contprop!=NULL) delete _contprop;
153                 if (_propgdata!=NULL) delete _propgdata;
154                 if (_imagedata!=NULL) _imagedata->Delete();
155                 if (_ext2D!=NULL) delete _ext2D;
156
157                 _contprop       = NULL;
158                 _propgdata      = NULL;
159                 _imagedata      = NULL;
160                 _ext2D          = NULL;
161         }
162         
163         //-----------------------------------------------------------------     
164
165         
166
167 }
168 // EO namespace bbcreaMaracasVisu
169
170 #endif //_USE_ITK_
171 #endif //_USE_VTK_