Definition at line 471 of file VisSem.h. References Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Add(), Impala::Core::Feature::FeatureTableSet::Add(), Impala::Core::Vector::Avg(), ComputeRegionDescriptor(), ComputeRegionSimilarity(), Impala::Core::Vector::Concat(), Impala::Core::Feature::FeatureTableSet::Delete(), DoCodebook(), DoSpatialPyramid(), DoUNC(), Impala::Core::Vector::ElemAvg(), Impala::Core::Feature::Computor::GetFeatureTable(), Impala::Core::Feature::Computor::GetProtoFeatureTables(), Impala::Core::Feature::FeatureTableSet::GetTable(), Impala::Core::Feature::Computor::IsClusterBased(), Impala::Core::Histogram::MakeHistogram1dSet(), Impala::Core::Vector::Max(), mDoCodebook, mDoUNC, Impala::Core::Feature::Computor::mLazebnikPyramid, Impala::Core::Feature::Computor::mPyramid, NewHistSet(), Impala::Core::Geometry::RectanglePyramid::NrLevels(), Impala::Core::Geometry::RectanglePyramid::NrRects(), Impala::Core::Geometry::RectanglePyramid::Rect(), Impala::Core::Vector::VectorTem< ElemT >::Size(), and Impala::Core::Geometry::RectanglePyramidPerDim::TotalNrRects(). Referenced by ComputeFeatures(). 00472 { 00473 HistSetType* hSet = NewHistSet(); 00474 for (int l=0 ; l<mPyramid.NrLevels() ; l++) 00475 { 00476 std::vector<FeatureTable*> protoTabs = GetProtoFeatureTables(p, l); 00477 if (!IsClusterBased()) 00478 protoTabs = GetProtoFeatureTables(p); 00479 FeatureTableSet regionSim; 00480 FeatureTableSet regionSimSP; 00481 for (int t=0 ; t<protoTabs.size() ; t++) 00482 { 00483 int nrCodeWords = (IsClusterBased()) ? protoTabs[t]->Size() : 1; 00484 FeatureDefinition def("sim"); 00485 regionSim.Add(new FeatureTable(def, 200, nrCodeWords)); 00486 nrCodeWords *= mLazebnikPyramid.TotalNrRects(); 00487 regionSimSP.Add(new FeatureTable(def, 200, nrCodeWords)); 00488 } 00489 00490 for (int r=0 ; r<mPyramid.NrRects(l) ; r++) 00491 { 00492 Geometry::Rectangle rect = mPyramid.Rect(l, r); 00493 Histogram::MakeHistogram1dSet(hSet, invSet, rect, true); 00494 00495 VectorReal64 exVec = ComputeRegionDescriptor(hSet); 00496 00497 for (int t=0 ; t<protoTabs.size() ; t++) 00498 { 00499 VectorReal64 sVec = ComputeRegionSimilarity(exVec, 00500 protoTabs[t]); 00501 VectorReal64 regionVec; 00502 if (IsClusterBased()) 00503 { 00504 regionVec = sVec; 00505 } 00506 else 00507 { // average all annos (kernel codebook) 00508 regionVec = VectorReal64(1); 00509 regionVec[0] = Vector::ElemAvg(sVec, 0, 0, -1); 00510 } 00511 regionSim.GetTable(t)->Add(0, regionVec); 00512 } 00513 } 00514 00515 if (mDoUNC) 00516 DoUNC(®ionSim, l); 00517 if (mDoCodebook) 00518 DoCodebook(®ionSim, l); 00519 DoSpatialPyramid(®ionSim, l, ®ionSimSP); 00520 00521 for (int t=0 ; t<protoTabs.size() ; t++) 00522 { 00523 FeatureTable* simTab = regionSimSP.GetTable(t); 00524 VectorReal64 vMax; 00525 Vector::Max(&vMax, simTab->GetColumn2(), simTab->Size(), 0); 00526 00527 VectorReal64 vAvg; 00528 Vector::Avg(&vAvg, simTab->GetColumn2(), simTab->Size(), 0); 00529 FeatureDefinition def = protoTabs[t]->GetFeatureDefinition(); 00530 FeatureTable* tab = GetFeatureTable(def, l); 00531 tab->Add(quid, Vector::Concat(vMax, vAvg)); 00532 } 00533 regionSim.Delete(); 00534 regionSimSP.Delete(); 00535 } 00536 delete hSet; 00537 }
Here is the call graph for this function:
|