61 int main(
int argc,
char* argv[] )
65 std::cerr <<
"Missing Parameters "<< argc << std::endl;
66 std::cerr <<
"Usage: " << argv[0];
67 std::cerr <<
" inputImage output_gray_label output_color_label lambda iterations "
68 "optimizerTemperature useRandomValue " << std::endl;
81 const unsigned int Dimension = 2;
82 typedef double InternalPixelType;
83 typedef unsigned char LabelledPixelType;
101 ReaderType::Pointer reader = ReaderType::New();
102 WriterType::Pointer writer = WriterType::New();
105 const char * inputFilename = argv[1];
106 const char * outputFilename = argv[2];
107 const char * outputRescaledImageFileName = argv[3];
109 reader->SetFileName( inputFilename );
110 writer->SetFileName( outputFilename );
122 <InputImageType, LabelledImageType> MarkovRandomFieldFilterType;
167 <LabelledImageType, LabelledImageType> EnergyRegularizationType;
169 <InputImageType, LabelledImageType> EnergyFidelityType;
180 MarkovRandomFieldFilterType::Pointer markovFilter = MarkovRandomFieldFilterType::New();
181 EnergyRegularizationType::Pointer energyRegularization = EnergyRegularizationType::New();
182 EnergyFidelityType::Pointer energyFidelity = EnergyFidelityType::New();
183 OptimizerType::Pointer optimizer = OptimizerType::New();
184 SamplerType::Pointer sampler = SamplerType::New();
195 if ((
bool)(atoi(argv[6])) ==
true)
198 sampler->InitializeSeed(0);
199 optimizer->InitializeSeed(1);
200 markovFilter->InitializeSeed(1);
204 unsigned int nClass =4;
205 energyFidelity->SetNumberOfParameters(3*nClass);
206 EnergyFidelityType::ParametersType parameters;
207 parameters.SetSize(energyFidelity->GetNumberOfParameters());
209 parameters[0] = 12.353042;
210 parameters[1] = 2.156422;
211 parameters[2] = 4.920403;
213 parameters[3] = 72.068291;
214 parameters[4] = 11.000000;
215 parameters[5] = 50.950001;
217 parameters[6] = 146.665985;
218 parameters[7] = 11.000000;
219 parameters[8] = 50.900002;
221 parameters[9] = 200.010132;
222 parameters[10] = 11.000000;
223 parameters[11] = 50.950001;
225 energyFidelity->SetParameters(parameters);
236 OptimizerType::ParametersType param(1);
237 param.Fill(atof(argv[6]));
238 optimizer->SetParameters(param);
239 markovFilter->SetNumberOfClasses(nClass);
240 markovFilter->SetMaximumNumberOfIterations(atoi(argv[5]));
241 markovFilter->SetErrorTolerance(0.0);
242 markovFilter->SetLambda(atof(argv[4]));
243 markovFilter->SetNeighborhoodRadius(1);
245 markovFilter->SetEnergyRegularization(energyRegularization);
246 markovFilter->SetEnergyFidelity(energyFidelity);
247 markovFilter->SetOptimizer(optimizer);
248 markovFilter->SetSampler(sampler);
259 markovFilter->SetInput(reader->GetOutput());
262 < LabelledImageType, LabelledImageType > RescaleType;
263 RescaleType::Pointer rescaleFilter = RescaleType::New();
264 rescaleFilter->SetOutputMinimum(0);
265 rescaleFilter->SetOutputMaximum(255);
267 rescaleFilter->SetInput( markovFilter->GetOutput() );
269 writer->SetInput( rescaleFilter->GetOutput() );
279 ColorMapFilterType::Pointer colormapper = ColorMapFilterType::New();
281 colormapper->SetInput( rescaleFilter->GetOutput() );
291 WriterRescaledType::Pointer writerRescaled = WriterRescaledType::New();
293 writerRescaled->SetFileName( outputRescaledImageFileName );
294 writerRescaled->SetInput( colormapper->GetOutput() );
296 writerRescaled->Update();