34#include <Color/ColorParameterSet.h>
35#include <ObjectFinder/ObjectFinderStereo.h>
36#include <Visualizer/OpenGLVisualizer.h>
44 static const std::size_t SegmentableBitmapWidth = 64;
45 static const std::size_t SegmentableBitmapSize =
46 SegmentableBitmapWidth * SegmentableBitmapWidth;
48 static const std::size_t SegmentableBitmapUInt32Size = SegmentableBitmapSize / 32;
55 std::uint32_t
bitmap[SegmentableBitmapUInt32Size];
68 std::unique_ptr<SegmentableTemplateHeader>
data;
69 std::unique_ptr<CFloatMatrix>
model;
77 static inline Eigen::Vector3f
78 stringToVector3f(std::string propertyValue)
81 sscanf(propertyValue.c_str(),
95 "VisionX/examples/cebit-colors.txt",
96 "The color parameter file configures the colors used for segmentable recognition "
97 "(usually colors.txt)");
101 "Minimum number of pixels per region for detecting a uniformly colored object");
103 "MaxEpipolarDistance",
105 "Maximum epipolar line distance allowed for a valid 3D recognition result");
114 Eigen::Vector3f(-3000.0f, -3000.0f, 100.0f),
115 "min point for valid result bounding box")
118 Eigen::Vector3f(3000.0f, 3000.0f, 3500.0f),
119 "max point for valid result bounding box")
152 const std::string& referenceName,
153 const Ice::Current&
c = Ice::emptyCurrent)
override
156 stereoCalibration,
x, referenceName,
c);
167 return "SegmentableTemplateRecognition";
224 memoryx::ObjectLocalizationResultList
231 void visualizeResults(
const Object3DList& objectList, CByteImage**
resultImages);
233 float calculateRecognitionCertainty(
const std::string& objectClassName,
234 const Object3DEntry& entry);
237 std::shared_ptr<CGLContext> contextGL;
238 std::shared_ptr<COpenGLVisualizer> m_pOpenGLVisualizer;
239 std::shared_ptr<CObjectFinderStereo> m_pObjectFinderStereo;
242 int paramMinPixelsPerRegion = 200;
243 float paramTemplateMatchThreshold = 0.7f;
244 float paramSizeRatioThreshold = 0.7f;
245 float paramCorrelationThreshold = 0.7f;
246 bool paramSingleInstance =
true;
249 std::string templatePath;
250 float minPixelsPerRegion;
251 float maxEpipolarDistance;
252 CColorParameterSet colorParameters;
254 std::map<std::string, SegmentableTemplateEntry> database;
256 Vec3d validResultBoundingBoxMin, validResultBoundingBoxMax;
259 std::map<std::string, int> seq;
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Property< PropertyType > getProperty(const std::string &name)
TopicProxyType getTopic(const std::string &name)
Returns a proxy of the specified topic.
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
PropertyDefinition< PropertyType > & defineOptionalProperty(const std::string &name, PropertyType defaultValue, const std::string &description="", PropertyDefinitionBase::PropertyConstness constness=PropertyDefinitionBase::eConstant)
std::function< PropertyType(std::string)> PropertyFactoryFunction
ObjectLocalizerProcessorPropertyDefinitions(std::string prefix)
CByteImage * cameraImages[2]
ObjectLocalizerProcessor()
void reportStereoCalibrationChanged(const StereoCalibration &stereoCalibration, bool imagesAreUndistorted, const std::string &referenceFrame, const Ice::Current &c=Ice::emptyCurrent) override
armarx::MetaInfoSizeBasePtr imageMetaInfo
CByteImage ** resultImages
SegmentableTemplateRecognitionPropertyDefinitions(std::string prefix)
bool initRecognizer() override
Initializes segmentable recognition.
void onExitObjectLocalizerProcessor() override
void onInitObjectLocalizerProcessor() override
memoryx::ObjectLocalizationResultList localizeObjectClasses(const std::vector< std::string > &objectClassNames, CByteImage **cameraImages, armarx::MetaInfoSizeBasePtr imageMetaInfo, CByteImage **resultImages) override
localizes segmentable object instances
void onConnectObjectLocalizerProcessor() override
Initializes the CSegmentableRecognition.
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
~SegmentableTemplateRecognition() override
SegmentableTemplateRecognition()
void reportStereoCalibrationChanged(const StereoCalibration &stereoCalibration, bool x, const std::string &referenceName, const Ice::Current &c=Ice::emptyCurrent) override
std::string getDefaultName() const override
bool addObjectClass(const memoryx::EntityPtr &objectClassEntity, const memoryx::GridFileManagerPtr &fileManager) override
Add object class to segmentable object recognition.
This file offers overloads of toIce() and fromIce() functions for STL container types.
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface > DebugObserverInterfacePrx
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
IceInternal::Handle< Entity > EntityPtr
Typedef of EntityPtr as IceInternal::Handle<Entity> for convenience.
std::shared_ptr< GridFileManager > GridFileManagerPtr
std::unique_ptr< CFloatMatrix > model
std::unique_ptr< SegmentableTemplateHeader > data
std::uint32_t bitmap[SegmentableBitmapUInt32Size]