void mitk::ModelSignalImageGenerator::SortParameterImages()
{
    ParameterVectorType inputImages(this->m_ParameterInputMap.size());

    unsigned int i = 0;
    for (ParameterMapType::const_iterator pos = m_ParameterInputMap.begin(); pos != m_ParameterInputMap.end(); ++pos)
    {

      i = pos->first;
      inputImages[i] = pos->second;
    }

    this->m_InputParameterImages = inputImages;


}
// ------------------------------------------------------------------------------------------
// Classify STL Test Image Set and save each file separated class into Image/class no. folder
// 
void ClassifySTL()
{
	CImageObject debugImage;
	//debugImage.CreateReshape(serialized, rt.Width(), rt.Height(), 3);	
	//m_ImageDebugDlg.DrawImage(debugImage);

#if 1
	
	CMatLoader inputImages("trainImages2000");
	CMatLoader inputLabels("trainLabels2000");
	CMatLoader pooledFeatures("pooledFeaturesTrain2000");
	CMatLoader softmaxOptTheta("softmaxOptTheta2000");
#else
	CMatLoader inputImages("testImages");
	CMatLoader inputLabels("testLabels");
	// 3600 x m	
	CMatLoader pooledFeatures("pooledFeaturesTest");	
	CMatLoader softmaxOptTheta("softmaxOptTheta2000");
#endif

	// 4 x 3600
	

	vector <BYTE *> vecImages;
	SerializeSTLImage(inputImages, vecImages);

	// CMatLoader testImages("testImages");

	CStopWatch w;
	vector <short> vecLabel;
	vector <float> vecConfidence;
	
	ClassifySoftmaxRegression(pooledFeatures, softmaxOptTheta, vecLabel, vecConfidence);

	int count = 0;
	int i;
	//CLog log("result2.csv", true);
	for (i=0;i<(int)vecLabel.size();i++)
	{
		if (vecLabel[i] == (int)inputLabels.data[i])
			count++;
		//log.WriteLog("%d, %d, %d\n", vecLabel[i] , (int)inputLabels.data[i], vecLabel[i] - (int)inputLabels.data[i]);
	}

	
	printf("Classification finished     accuracy : %f %%\n", (float)count / (float)vecLabel.size() * 100.0f);
	printf("Elapsed time %.0f msec\n", w.CheckTime());

	mkdir("ResultImage");
	mkdir("ResultImage\\1");
	mkdir("ResultImage\\2");
	mkdir("ResultImage\\3");
	mkdir("ResultImage\\4");
	mkdir("ResultImage\\5");
	if (1)
	{
		for (i=0;i<(int)vecImages.size();i++)
			//for (i=0;i<100;i++)
		{
			debugImage.CreateReshape(vecImages[i], 64, 64, 3);
			CString str;
			str.Format("ResultImage\\%d\\%d.bmp", vecLabel[i],i);
			debugImage.SaveToBMP(str.GetBuffer(0));
			
		}
		// Classification(pooledFeaturesTest, softmaxOptTheta, vecLabel);
	}
	printf("%d classified images are saved into ResultImage/classNo directory\n",(int)vecImages.size());

	for (i = 0;i<(int)vecImages.size();i++)
		delete [] vecImages[i];

	return;

}