IPSDK 0.2
IPSDK : Image Processing Software Development Kit
Extract grey signed features 2dSee full documentation
Features2dGreySignatureextractGreySignedFeatures2d (inImg,inNbFeatures)
Features2dGreySignatureextractGreySignedFeatures2d (inImg,inGradStdDev,inNbFeatures,inFeaturesDist)
Features2dGreySignatureextractGreySignedFeatures2d (inImg,inGradStdDev,inOptGradientGaussianCoverage,inCornerDetectionParams,inNbFeatures,inFeaturesDistX,inFeaturesDistY,inInterpolationPolicy,inSamplingBallInfo2d)

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)

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

Header file

#include <IPSDKIPL/IPSDKIPLRegistration/Processor/ExtractGreySignedFeatures2d/ExtractGreySignedFeatures2d.h>

Code Example

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