Home || Visual Search || Applications || Architecture || Important Messages || OGL || Src

void Impala::Application::Table::DoScaleFeatureTable (  ) 

Definition at line 127 of file mainTable.cpp.

References Impala::Core::Vector::DivAssign(), Impala::FileExists(), Impala::FileNamePath(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get1(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get2(), Impala::CmdOptions::GetArg(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::GetColumn2(), Impala::Core::Database::RawDataSet::GetDatabase(), Impala::Core::Feature::FeatureTable::GetFeatureDefinition(), Impala::Core::Feature::FeatureTable::GetFeatureVectorLength(), Impala::Util::Database::GetInstance(), Impala::CmdOptions::GetInstance(), Impala::CmdOptions::GetString(), Impala::Util::Database::MakeDir(), Impala::Core::ImageSet::MakeImageSet(), Impala::Core::VideoSet::MakeVideoSet(), Impala::Core::Vector::Max(), Impala::Core::Vector::Min(), Impala::Util::Read(), Impala::Core::Table::Table::Size(), Impala::Core::Vector::SubAssign(), and Impala::Util::Write().

Referenced by mainTable().

00128 {
00129     typedef Core::Feature::FeatureTable FeatureTable;
00130     typedef Core::Vector::VectorTem<Real64> VectorReal64;
00131 
00132     CmdOptions& options = CmdOptions::GetInstance();
00133     String tablename = options.GetArg(1);
00134     String scaledtablename = options.GetArg(2);
00135     String minmaxtablename = options.GetArg(3);
00136 
00137     Core::Database::RawDataSet* dataSet = 0;
00138     String setName = options.GetString("videoSet");
00139     if (! setName.empty())
00140         dataSet = Core::VideoSet::MakeVideoSet(setName);
00141     setName = options.GetString("imageSet");
00142     if (! setName.empty())
00143         dataSet = Core::ImageSet::MakeImageSet(setName);
00144     Util::Database* db = &Util::Database::GetInstance();
00145     if (dataSet)
00146         db = dataSet->GetDatabase();
00147 
00148     FeatureTable tableIn(tablename);
00149     Core::Table::Read(&tableIn, tablename, db);
00150 
00151 //    FeatureTable tableMinMax(tableIn.GetFeatureDefinition());
00152     FeatureTable tableMinMax(tableIn.GetFeatureDefinition(), 2, tableIn.GetFeatureVectorLength());
00153     FeatureTable tableOut(tableIn.GetFeatureDefinition(), tableIn.Size(), tableIn.GetFeatureVectorLength());
00154 
00155     VectorReal64 vMax;
00156     VectorReal64 vMin;
00157 
00158     if(FileExists(minmaxtablename))
00159     {
00160         // read minmax from file
00161         std::cout << "read minmax from file: " << minmaxtablename << std::endl;
00162         Core::Table::Read(&tableMinMax, minmaxtablename, db);
00163         vMax = tableMinMax.Get2(0);
00164         vMin = tableMinMax.Get2(1);
00165     }
00166     else
00167     {
00168         // create minmax
00169         Core::Vector::Max(&vMax, tableIn.GetColumn2(), tableIn.Size(), 0);
00170     tableMinMax.Add(0, vMax);
00171 
00172         Core::Vector::Min(&vMin, tableIn.GetColumn2(), tableIn.Size(), 0);
00173     tableMinMax.Add(1, vMin);
00174 
00175         std::cout << "write minmax to file: " << minmaxtablename << std::endl;
00176     Core::Table::Write(&tableMinMax, minmaxtablename, db, true);
00177     }
00178 
00179     std::cout << "max: " << vMax << std::endl;
00180     std::cout << "min: " << vMin << std::endl;
00181     //FeatureTable tableOut(tableIn);
00182 
00183     VectorReal64 vMaxMinMin = vMax;
00184     Core::Vector::SubAssign(vMaxMinMin,vMin);
00185     //std::cout << "vMaxMinMin: " << vMaxMinMin << std::endl;
00186 
00187     VectorReal64 v;
00188     for(int i=0;i<tableIn.Size();i++)
00189     {
00190     v = tableIn.Get2(i);
00191     Core::Vector::SubAssign(v, vMin);
00192     Core::Vector::DivAssign(v, vMaxMinMin);
00193         tableOut.Add(tableIn.Get1(i), v);
00194     }
00195 
00196     // create dir if neccecary
00197     std::string path = FileNamePath(scaledtablename);
00198     db->MakeDir(path);
00199     //table.Dump(dataSet, options.GetInt("start"), options.GetInt("end"));
00200     Core::Table::Write(&tableOut, scaledtablename, db, true);
00201 }

Here is the call graph for this function:


Generated on Thu Jan 13 09:16:18 2011 for ImpalaSrc by  doxygen 1.5.1