Health/Assets/OpenCVForUnity/org/opencv_contrib/xfeatures2d/PCTSignaturesSQFD.cs

204 lines
8.0 KiB
C#

using OpenCVForUnity.CoreModule;
using OpenCVForUnity.UtilsModule;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace OpenCVForUnity.Xfeatures2dModule
{
// C++: class PCTSignaturesSQFD
/**
* Class implementing Signature Quadratic Form Distance (SQFD).
* SEE: Christian Beecks, Merih Seran Uysal, Thomas Seidl.
* Signature quadratic form distance.
* In Proceedings of the ACM International Conference on Image and Video Retrieval, pages 438-445.
* ACM, 2010.
* CITE: BeecksUS10
*/
public class PCTSignaturesSQFD : Algorithm
{
protected override void Dispose(bool disposing)
{
try
{
if (disposing)
{
}
if (IsEnabledDispose)
{
if (nativeObj != IntPtr.Zero)
xfeatures2d_PCTSignaturesSQFD_delete(nativeObj);
nativeObj = IntPtr.Zero;
}
}
finally
{
base.Dispose(disposing);
}
}
protected internal PCTSignaturesSQFD(IntPtr addr) : base(addr) { }
// internal usage only
public static new PCTSignaturesSQFD __fromPtr__(IntPtr addr) { return new PCTSignaturesSQFD(addr); }
//
// C++: static Ptr_PCTSignaturesSQFD cv::xfeatures2d::PCTSignaturesSQFD::create(int distanceFunction = 3, int similarityFunction = 2, float similarityParameter = 1.0f)
//
/**
* Creates the algorithm instance using selected distance function,
* similarity function and similarity function parameter.
* param distanceFunction Distance function selector. Default: L2
* Available: L0_25, L0_5, L1, L2, L2SQUARED, L5, L_INFINITY
* param similarityFunction Similarity function selector. Default: HEURISTIC
* Available: MINUS, GAUSSIAN, HEURISTIC
* param similarityParameter Parameter of the similarity function.
* return automatically generated
*/
public static PCTSignaturesSQFD create(int distanceFunction, int similarityFunction, float similarityParameter)
{
return PCTSignaturesSQFD.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(xfeatures2d_PCTSignaturesSQFD_create_10(distanceFunction, similarityFunction, similarityParameter)));
}
/**
* Creates the algorithm instance using selected distance function,
* similarity function and similarity function parameter.
* param distanceFunction Distance function selector. Default: L2
* Available: L0_25, L0_5, L1, L2, L2SQUARED, L5, L_INFINITY
* param similarityFunction Similarity function selector. Default: HEURISTIC
* Available: MINUS, GAUSSIAN, HEURISTIC
* return automatically generated
*/
public static PCTSignaturesSQFD create(int distanceFunction, int similarityFunction)
{
return PCTSignaturesSQFD.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(xfeatures2d_PCTSignaturesSQFD_create_11(distanceFunction, similarityFunction)));
}
/**
* Creates the algorithm instance using selected distance function,
* similarity function and similarity function parameter.
* param distanceFunction Distance function selector. Default: L2
* Available: L0_25, L0_5, L1, L2, L2SQUARED, L5, L_INFINITY
* Available: MINUS, GAUSSIAN, HEURISTIC
* return automatically generated
*/
public static PCTSignaturesSQFD create(int distanceFunction)
{
return PCTSignaturesSQFD.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(xfeatures2d_PCTSignaturesSQFD_create_12(distanceFunction)));
}
/**
* Creates the algorithm instance using selected distance function,
* similarity function and similarity function parameter.
* Available: L0_25, L0_5, L1, L2, L2SQUARED, L5, L_INFINITY
* Available: MINUS, GAUSSIAN, HEURISTIC
* return automatically generated
*/
public static PCTSignaturesSQFD create()
{
return PCTSignaturesSQFD.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(xfeatures2d_PCTSignaturesSQFD_create_13()));
}
//
// C++: float cv::xfeatures2d::PCTSignaturesSQFD::computeQuadraticFormDistance(Mat _signature0, Mat _signature1)
//
/**
* Computes Signature Quadratic Form Distance of two signatures.
* param _signature0 The first signature.
* param _signature1 The second signature.
* return automatically generated
*/
public float computeQuadraticFormDistance(Mat _signature0, Mat _signature1)
{
ThrowIfDisposed();
if (_signature0 != null) _signature0.ThrowIfDisposed();
if (_signature1 != null) _signature1.ThrowIfDisposed();
return xfeatures2d_PCTSignaturesSQFD_computeQuadraticFormDistance_10(nativeObj, _signature0.nativeObj, _signature1.nativeObj);
}
//
// C++: void cv::xfeatures2d::PCTSignaturesSQFD::computeQuadraticFormDistances(Mat sourceSignature, vector_Mat imageSignatures, vector_float distances)
//
/**
* Computes Signature Quadratic Form Distance between the reference signature
* and each of the other image signatures.
* param sourceSignature The signature to measure distance of other signatures from.
* param imageSignatures Vector of signatures to measure distance from the source signature.
* param distances Output vector of measured distances.
*/
public void computeQuadraticFormDistances(Mat sourceSignature, List<Mat> imageSignatures, MatOfFloat distances)
{
ThrowIfDisposed();
if (sourceSignature != null) sourceSignature.ThrowIfDisposed();
if (distances != null) distances.ThrowIfDisposed();
Mat imageSignatures_mat = Converters.vector_Mat_to_Mat(imageSignatures);
Mat distances_mat = distances;
xfeatures2d_PCTSignaturesSQFD_computeQuadraticFormDistances_10(nativeObj, sourceSignature.nativeObj, imageSignatures_mat.nativeObj, distances_mat.nativeObj);
}
#if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
const string LIBNAME = "__Internal";
#else
const string LIBNAME = "opencvforunity";
#endif
// C++: static Ptr_PCTSignaturesSQFD cv::xfeatures2d::PCTSignaturesSQFD::create(int distanceFunction = 3, int similarityFunction = 2, float similarityParameter = 1.0f)
[DllImport(LIBNAME)]
private static extern IntPtr xfeatures2d_PCTSignaturesSQFD_create_10(int distanceFunction, int similarityFunction, float similarityParameter);
[DllImport(LIBNAME)]
private static extern IntPtr xfeatures2d_PCTSignaturesSQFD_create_11(int distanceFunction, int similarityFunction);
[DllImport(LIBNAME)]
private static extern IntPtr xfeatures2d_PCTSignaturesSQFD_create_12(int distanceFunction);
[DllImport(LIBNAME)]
private static extern IntPtr xfeatures2d_PCTSignaturesSQFD_create_13();
// C++: float cv::xfeatures2d::PCTSignaturesSQFD::computeQuadraticFormDistance(Mat _signature0, Mat _signature1)
[DllImport(LIBNAME)]
private static extern float xfeatures2d_PCTSignaturesSQFD_computeQuadraticFormDistance_10(IntPtr nativeObj, IntPtr _signature0_nativeObj, IntPtr _signature1_nativeObj);
// C++: void cv::xfeatures2d::PCTSignaturesSQFD::computeQuadraticFormDistances(Mat sourceSignature, vector_Mat imageSignatures, vector_float distances)
[DllImport(LIBNAME)]
private static extern void xfeatures2d_PCTSignaturesSQFD_computeQuadraticFormDistances_10(IntPtr nativeObj, IntPtr sourceSignature_nativeObj, IntPtr imageSignatures_mat_nativeObj, IntPtr distances_mat_nativeObj);
// native support for java finalize()
[DllImport(LIBNAME)]
private static extern void xfeatures2d_PCTSignaturesSQFD_delete(IntPtr nativeObj);
}
}