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: ![]()
|