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

void Impala::Core::Feature::InterestPointFeature::ComputeDescriptors ( PointDescriptorTable pointData,
Array::Array2dVec3UInt8 inputNoBorder,
String  descriptorMode 
) [inline, private]

Definition at line 1071 of file InterestPointFeature.h.

References Impala::Core::Feature::CalculateFISTDescriptors(), Impala::Core::Feature::CalculateRegionDescriptors(), Impala::Core::Feature::CalculateSurfDescriptors(), Impala::Core::Geometry::InterestPointList::EraseAndDelete(), Impala::Core::Feature::PointDescriptorTable::FromPointList(), mSurfParams, Impala::Core::Table::Table::SetEmpty(), and Impala::Core::Feature::PointDescriptorTable::ToPointList().

Referenced by FindInterestPoints().

01074     {
01075         if((descriptorMode == "huesift") || (descriptorMode == "huefist"))
01076         {
01077             CalculateFISTDescriptors(inputNoBorder, pointData, "sift");
01078             InterestPointList outputPointList;
01079             pointData->ToPointList(outputPointList);
01080             CalculateRegionDescriptors(inputNoBorder, outputPointList,
01081                                        "huehistogram");
01082 
01083             // now fix the range of hue...
01084             for(InterestPointList::iterator iter = outputPointList.begin();
01085                 iter != outputPointList.end(); iter++)
01086             {
01087                 InterestPoint* point = *iter;
01088                 for(int i = 128; i < point->mDescriptor.size(); i++)
01089                 {
01090                     point->mDescriptor[i] =
01091                         static_cast<int>(point->mDescriptor[i] * 512);
01092                 }
01093             }
01094             pointData->SetEmpty();
01095             pointData->FromPointList(outputPointList);
01096             outputPointList.EraseAndDelete();
01097        }
01098         else if((descriptorMode.size() >= 4) &&
01099                 (descriptorMode.substr(descriptorMode.size()-4,4) == "fist"))
01100         {
01101             CalculateFISTDescriptors
01102                 (inputNoBorder, pointData, descriptorMode);
01103         }
01104         else if((descriptorMode.size() >= 4) &&
01105                 (descriptorMode.substr(descriptorMode.size()-4,4) == "sift"))
01106         {
01107             CalculateFISTDescriptors
01108                 (inputNoBorder, pointData, descriptorMode);
01109         }
01110         else if((descriptorMode.size() >= 4) &&
01111                 (descriptorMode.substr(descriptorMode.size()-4,4) == "surf"))
01112         {
01113             InterestPointList outputPointList;
01114             pointData->ToPointList(outputPointList);
01115             CalculateSurfDescriptors
01116                 (inputNoBorder, outputPointList, descriptorMode, mSurfParams[0],
01117                  mSurfParams[1], mSurfParams[2]);
01118             pointData->SetEmpty();
01119             pointData->FromPointList(outputPointList);
01120             outputPointList.EraseAndDelete();
01121         }
01122         else
01123         {
01124             InterestPointList outputPointList;
01125             pointData->ToPointList(outputPointList);
01126             CalculateRegionDescriptors
01127                 (inputNoBorder, outputPointList, descriptorMode);
01128             pointData->SetEmpty();
01129             pointData->FromPointList(outputPointList);
01130             outputPointList.EraseAndDelete();
01131         }
01132     }

Here is the call graph for this function:


Generated on Fri Mar 19 11:10:05 2010 for ImpalaSrc by  doxygen 1.5.1