IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Extract grey signed features 2d

algorithm allowing to extract 2d features associated to a grey signature from an image More...

IPSDKIPLREGISTRATION_API attr::Features2dGreySignaturePtr ipsdk::imaproc::registration::extractGreySignedFeatures2d (const image::ImageConstPtr &pInImg, const ipUInt32 inNbFeatures)
 wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image More...
 
IPSDKIPLREGISTRATION_API attr::Features2dGreySignaturePtr ipsdk::imaproc::registration::extractGreySignedFeatures2d (const image::ImageConstPtr &pInImg, const ipReal32 inGradStdDev, const ipUInt32 inNbFeatures, const ipUInt32 inFeaturesDist)
 wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image More...
 
IPSDKIPLREGISTRATION_API attr::Features2dGreySignaturePtr ipsdk::imaproc::registration::extractGreySignedFeatures2d (const image::ImageConstPtr &pInImg, const ipReal32 inGradStdDev, const attr::GaussianCoverageConstPtr &pInOptGradientGaussianCoverage, const ipsdk::imaproc::attr::CornerDetectionParamsConstPtr &pInCornerDetectionParams, const ipUInt32 inNbFeatures, const ipUInt32 inFeaturesDistX, const ipUInt32 inFeaturesDistY, const ipsdk::imaproc::attr::eInterpolationPolicy &inInterpolationPolicy, const ipsdk::imaproc::attr::SamplingBallInfoConstPtr &pInSamplingBallInfo2d)
 wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image More...
 
IPSDKIPLREGISTRATION_API attr::PlanIndexedFeatures2dGreySignaturePtr ipsdk::imaproc::registration::multiSlice_extractGreySignedFeatures2d (const image::ImageConstPtr &pInImg, const ipUInt32 inNbFeatures)
 wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image More...
 
IPSDKIPLREGISTRATION_API attr::PlanIndexedFeatures2dGreySignaturePtr ipsdk::imaproc::registration::multiSlice_extractGreySignedFeatures2d (const image::ImageConstPtr &pInImg, const ipReal32 inGradStdDev, const ipUInt32 inNbFeatures, const ipUInt32 inFeaturesDist)
 wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image More...
 
IPSDKIPLREGISTRATION_API attr::PlanIndexedFeatures2dGreySignaturePtr ipsdk::imaproc::registration::multiSlice_extractGreySignedFeatures2d (const image::ImageConstPtr &pInImg, const ipReal32 inGradStdDev, const attr::GaussianCoverageConstPtr &pInOptGradientGaussianCoverage, const attr::CornerDetectionParamsConstPtr &pInCornerDetectionParams, const ipUInt32 inNbFeatures, const ipUInt32 inFeaturesDistX, const ipUInt32 inFeaturesDistY, const attr::eInterpolationPolicy &inInterpolationPolicy, const attr::SamplingBallInfoConstPtr &pInSamplingBallInfo2d)
 wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image More...
 

Detailed Description

algorithm allowing to extract 2d features associated to a grey signature from an image

This algorithm combines a feature detector algorithm (see Harris corner detection 2d) with a grey level feature signature algorithm allowing description of neighborhood of detected points.

Feature detector is controlled by following parameters : $InOptGradStdDev$, $InOptGradientGaussianCoverage$, $InOptCornerDetectionParams2d$, $InNbFeatures$, $InOptFeaturesDistX$ and $InOptFeaturesDistY$. See Harris corner detection 2d for more informations on these parameters.

Local feature signature is computed using a "sampling ball" which is composed of rings centered at feature point. Each ring is associated to a radius, to a blurring factor (we sample blurred versions of input image $InImg$ using Gaussian Smoothing 2d algorithm) and to a number of samples regularly dispatched around sampling ring. Angle of first sample $\overrightarrow{V}$ is defined using orientation of inertia tensor main direction. Note that blurr factor usually increase with sampling ring radius.

samplingBall.png

Sampling ball can be customized via parameter $InOptSamplingBallInfo2d$. All extracted values are stacked into a single "by plane" data collection $OutPIGreySignatures2d$.

Parameter $InOptInterpolationPolicy$ allows to specify an interpolation policy used during signature sampling.

An optional scale factor $InOptSignatureScaleFactor$ allows to generate comparable feature signatures for images with different scale factors (results of this algorithm are not scale invariant).

This algorithm is based on an adaptation of following work :

Nicolas Allezard, Michel Dhome, Frederic Jurie. Mise en correspondance multi-echelle. 17ieme Colloque sur le Traitement du Signal et des Images, Sep 1999, Vannes, France. Groupe d'Etudes du Traitement du Signal et des Images (GRETSI), pp.897–900, 1999.

See also
https://en.wikipedia.org/wiki/Feature_detection_(computer_vision)

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InImg [Input] image for processing operation X
ipsdk::imaproc::attr::InOptSignatureScaleFactor [Input Optional] image scale factor used during signature computation X
ipsdk::imaproc::attr::InOptGradStdDev [Input Optional] standard deviation used for gradient computation X
ipsdk::imaproc::attr::InOptGradientGaussianCoverage [Input Optional] Parameter allowing to specify a gaussian distribution coverage for processing X
ipsdk::imaproc::attr::InOptCornerDetectionParams2d [Input Optional] parameters used during corner detection process X
ipsdk::imaproc::attr::InNbFeatures [Input] target number of features to be detected by algorithm X
ipsdk::imaproc::attr::InOptFeaturesDistX [Input Optional] distance between detected features along x axis (tchebychev distance) X
ipsdk::imaproc::attr::InOptFeaturesDistY [Input Optional] distance between detected features along y axis (tchebychev distance) X
ipsdk::imaproc::attr::InOptInterpolationPolicy [Input Optional] interpolation policy used to extract local data from image X
ipsdk::imaproc::attr::InOptSamplingBallInfo2d [Input Optional] Parameters for used sampling ball around image points X
ipsdk::imaproc::attr::OutWk1Img [Output] Temporary working image for algorithm promoteUnary (_pOutWk1Img, _pInImg, ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned)
ipsdk::imaproc::attr::OutWk2Img [Output] Temporary working image for algorithm promoteUnary (_pOutWk2Img, _pInImg, ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned)
ipsdk::imaproc::attr::OutWk3Img [Output] Temporary working image for algorithm promoteUnary (_pOutWk3Img, _pInImg, ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned)
ipsdk::imaproc::attr::OutWk4Img [Output] Temporary working image for algorithm promoteUnary (_pOutWk4Img, _pInImg, ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned)
ipsdk::imaproc::attr::OutPIGreySignatures2d [Output] collection of features 2d grey signature used during processing fromImage (_pOutPIGreySignatures2d, _pInImg)

Global Rule description

Global rule description for algorithm :
ipsdk::imaproc::matchSize (_pOutWk1Img,_pInImg) && 
ipsdk::imaproc::matchSizeAndType (_pOutWk1Img,_pOutWk2Img,_pOutWk3Img) && 
ipsdk::imaproc::matchImagePlans (_pOutPIGreySignatures2d,_pInImg)

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLRegistration as registration

Code Example

# opening of input image
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
nbFeatures = 100
# extraction of grey signed features from image
outGreySignatures1 = registration.extractGreySignedFeatures2d(inImg, nbFeatures)
print("First feature found at {x=" + str(outGreySignatures1.signatureColl[0].x) +
", y=" + str(outGreySignatures1.signatureColl[0].y) + "}")

Example of C++ code :

Example informations

Associated library

IPSDKIPLRegistration

Header file

Code Example

// Load the input image
ImagePtr pInImg = loadTiffImageFile(inImgFilePath);
// extraction of grey signed features from image
Features2dGreySignaturePtr pOutGreySignatures1 = extractGreySignedFeatures2d(pInImg, 100);
See also
ExtractGreySignedFeatures2dLvl1
ExtractGreySignedFeatures2dLvl2

Function Documentation

◆ extractGreySignedFeatures2d() [1/3]

IPSDKIPLREGISTRATION_API attr::Features2dGreySignaturePtr ipsdk::imaproc::registration::extractGreySignedFeatures2d ( const image::ImageConstPtr pInImg,
const ipUInt32  inNbFeatures 
)

wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image

Note
These wrappers must be used with mono slice (sizeZ=sizeC=sizeT=1) input images
Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ multiSlice_extractGreySignedFeatures2d() [1/3]

IPSDKIPLREGISTRATION_API attr::PlanIndexedFeatures2dGreySignaturePtr ipsdk::imaproc::registration::multiSlice_extractGreySignedFeatures2d ( const image::ImageConstPtr pInImg,
const ipUInt32  inNbFeatures 
)

wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image

Note
These wrappers can be used with multi slice input images
Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ extractGreySignedFeatures2d() [2/3]

IPSDKIPLREGISTRATION_API attr::Features2dGreySignaturePtr ipsdk::imaproc::registration::extractGreySignedFeatures2d ( const image::ImageConstPtr pInImg,
const ipReal32  inGradStdDev,
const ipUInt32  inNbFeatures,
const ipUInt32  inFeaturesDist 
)

wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image

Note
These wrappers must be used with mono slice (sizeZ=sizeC=sizeT=1) input images
Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ extractGreySignedFeatures2d() [3/3]

IPSDKIPLREGISTRATION_API attr::Features2dGreySignaturePtr ipsdk::imaproc::registration::extractGreySignedFeatures2d ( const image::ImageConstPtr pInImg,
const ipReal32  inGradStdDev,
const attr::GaussianCoverageConstPtr pInOptGradientGaussianCoverage,
const ipsdk::imaproc::attr::CornerDetectionParamsConstPtr pInCornerDetectionParams,
const ipUInt32  inNbFeatures,
const ipUInt32  inFeaturesDistX,
const ipUInt32  inFeaturesDistY,
const ipsdk::imaproc::attr::eInterpolationPolicy inInterpolationPolicy,
const ipsdk::imaproc::attr::SamplingBallInfoConstPtr pInSamplingBallInfo2d 
)

wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image

Note
These wrappers must be used with mono slice (sizeZ=sizeC=sizeT=1) input images
Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ multiSlice_extractGreySignedFeatures2d() [2/3]

IPSDKIPLREGISTRATION_API attr::PlanIndexedFeatures2dGreySignaturePtr ipsdk::imaproc::registration::multiSlice_extractGreySignedFeatures2d ( const image::ImageConstPtr pInImg,
const ipReal32  inGradStdDev,
const ipUInt32  inNbFeatures,
const ipUInt32  inFeaturesDist 
)

wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image

Note
These wrappers can be used with multi slice input images
Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ multiSlice_extractGreySignedFeatures2d() [3/3]

IPSDKIPLREGISTRATION_API attr::PlanIndexedFeatures2dGreySignaturePtr ipsdk::imaproc::registration::multiSlice_extractGreySignedFeatures2d ( const image::ImageConstPtr pInImg,
const ipReal32  inGradStdDev,
const attr::GaussianCoverageConstPtr pInOptGradientGaussianCoverage,
const attr::CornerDetectionParamsConstPtr pInCornerDetectionParams,
const ipUInt32  inNbFeatures,
const ipUInt32  inFeaturesDistX,
const ipUInt32  inFeaturesDistY,
const attr::eInterpolationPolicy inInterpolationPolicy,
const attr::SamplingBallInfoConstPtr pInSamplingBallInfo2d 
)

wrapper function for algorithm allowing to extract 2d features associated to a grey signature from an image

Note
These wrappers can be used with multi slice input images
Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure