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

void Impala::Application::Table::DoProcSimilarityTableSet (  ) 

Definition at line 569 of file mainTable.cpp.

References Impala::atol(), Impala::Core::Table::Copy(), Impala::Core::Array::Dilation(), Impala::Core::Training::Equals(), Impala::Core::Array::Erosion(), Impala::FileNameBase(), Impala::FileNameExt(), Impala::CmdOptions::GetArg(), Impala::CmdOptions::GetInstance(), Impala::CmdOptions::GetNrArg(), ILOG_ERROR, ILOG_VAR, Impala::Core::Table::SimilarityTableSet::MakeFromFile(), Impala::Core::VideoSet::MakeVideoSet(), Impala::Core::Matrix::MatSet(), Impala::Core::Array::Mul(), Impala::Core::Array::Percentile(), and Impala::Core::Array::Set().

Referenced by mainTable().

00570 {
00571     typedef Core::Table::SimilarityTableSet SimilarityTableSet;
00572     typedef Core::Table::SimilarityTableSet::SimTableType SimTableType;
00573     typedef Core::Table::SimilarityTableSet::RankTableType RankTableType;
00574     typedef Core::Array::Array2dScalarReal64 ArrayType;
00575 
00576     ILOG_VAR(Impala.Application.Table.DoProcSimilarityTableSet);
00577     CmdOptions& options = CmdOptions::GetInstance();
00578     if (options.GetNrArg() < 7)
00579     {
00580         ILOG_ERROR("Need more parameters");
00581         return;
00582     }
00583 
00584     String setName = options.GetArg(1);
00585     Core::VideoSet::VideoSet* vidSet = Core::VideoSet::MakeVideoSet(setName);
00586     String walkType = options.GetArg(2);
00587     String conceptSet = options.GetArg(3);
00588     String model = options.GetArg(4);
00589     String feature = options.GetArg(5);
00590     int fileId = Impala::atol(options.GetArg(6));
00591 
00592     SimilarityTableSet* srcSet = Core::Table::SimilarityTableSet::MakeFromFile
00593         (vidSet, walkType, conceptSet, model, feature, fileId);
00594     //String fName2 = options.GetArg(2);
00595 
00596     std::vector<String> srcNames = srcSet->GetNames();
00597     std::vector<String> dstNames;
00598     for (int i=0 ; i<srcNames.size() ; i++)
00599     {
00600         dstNames.push_back(srcNames[i]);
00601         dstNames.push_back(srcNames[i] + "_proc");
00602     }
00603     SimilarityTableSet* dstSet =
00604         new SimilarityTableSet(dstNames, srcSet->TableSize());
00605 
00606 
00607     Core::Table::Copy(dstSet->GetQuidTable(), srcSet->GetQuidTable());
00608     for (int t=0 ; t<srcSet->NrTables() ; t++)
00609     {
00610         SimTableType* srcTable = srcSet->GetSimTable(t);
00611         Core::Table::Copy(dstSet->GetSimTable(2*t), srcTable);
00612 
00613         SimTableType* dstTable = dstSet->GetSimTable(2*t+1);
00614         Core::Table::Copy(dstTable, srcTable);
00615         ArrayType srcWrap(srcTable->Size(), 1, 0, 0,
00616                           srcTable->GetColumn1()->GetData(), true);
00617         ArrayType* tmp = 0;
00618 
00619         //Core::Array::Percentile(tmp, &srcWrap, 15, 0.8);
00620 
00621         Core::Array::Percentile(tmp, &srcWrap, 5, 0.5);
00622         ArrayType* ker = Core::Array::ArrayCreate<ArrayType>(101, 1);
00623         Core::Matrix::MatSet(ker, 0);
00624         Core::Array::Erosion(tmp, tmp, ker);
00625         Core::Array::Dilation(tmp, tmp, ker);
00626         delete ker;
00627 
00628         Real64* tmpPtr = tmp->CPB(0, 0);
00629         for (int i=tmp->CW()-1 ; i>=1 ; i--)
00630         {
00631             if (tmpPtr[i] == tmpPtr[i-1])
00632                 tmpPtr[i] = 0;
00633         }
00634 
00635         ker = Core::Array::ArrayCreate<ArrayType>(501, 1);
00636         Core::Matrix::MatSet(ker, 0);
00637         ArrayType* localMax = 0;
00638         Core::Array::Dilation(localMax, tmp, ker);
00639         Core::Array::Equals(localMax, localMax, tmp);
00640         Core::Array::Mul(tmp, localMax, tmp);
00641         delete ker;
00642         delete localMax;
00643 
00644         ArrayType* dstWrap = new ArrayType(dstTable->Size(), 1, 0, 0,
00645                           dstTable->GetColumn1()->GetData(), true);
00646         Core::Array::Set(dstWrap, tmp);
00647         delete dstWrap;
00648         delete tmp;
00649 
00650     }
00651     dstSet->ComputeRanks(true);
00652     String con = FileNameBase(conceptSet) + "_proc." + FileNameExt(conceptSet);
00653     dstSet->Save(vidSet, walkType, con, model, feature, fileId, true);
00654 }

Here is the call graph for this function:


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