class cv::AKAZE

Overview

Class implementing the AKAZE keypoint detector and descriptor extractor, described in [1]. : More…

#include <features2d.hpp>

class AKAZE: public cv::Feature2D
{
public:
    // enums

    enum
    {
        DESCRIPTOR_KAZE_UPRIGHT = 2,
        DESCRIPTOR_KAZE         = 3,
        DESCRIPTOR_MLDB_UPRIGHT = 4,
        DESCRIPTOR_MLDB         = 5,
    };

    // methods

    static
    Ptr<AKAZE>
    create(
        int descriptor_type = AKAZE::DESCRIPTOR_MLDB,
        int descriptor_size = 0,
        int descriptor_channels = 3,
        float threshold = 0.001f,
        int nOctaves = 4,
        int nOctaveLayers = 4,
        int diffusivity = KAZE::DIFF_PM_G2
        );

    virtual
    int
    getDescriptorChannels() const = 0;

    virtual
    int
    getDescriptorSize() const = 0;

    virtual
    int
    getDescriptorType() const = 0;

    virtual
    int
    getDiffusivity() const = 0;

    virtual
    int
    getNOctaveLayers() const = 0;

    virtual
    int
    getNOctaves() const = 0;

    virtual
    double
    getThreshold() const = 0;

    virtual
    void
    setDescriptorChannels(int dch) = 0;

    virtual
    void
    setDescriptorSize(int dsize) = 0;

    virtual
    void
    setDescriptorType(int dtype) = 0;

    virtual
    void
    setDiffusivity(int diff) = 0;

    virtual
    void
    setNOctaveLayers(int octaveLayers) = 0;

    virtual
    void
    setNOctaves(int octaves) = 0;

    virtual
    void
    setThreshold(double threshold) = 0;
};

Inherited Members

public:
    // methods

    virtual
    void
    clear();

    virtual
    bool
    empty() const;

    virtual
    String
    getDefaultName() const;

    virtual
    void
    read(const FileNode& fn);

    virtual
    void
    save(const String& filename) const;

    virtual
    void
    write(FileStorage& fs) const;

    template <typename _Tp>
    static
    Ptr<_Tp>
    load(
        const String& filename,
        const String& objname = String()
        );

    template <typename _Tp>
    static
    Ptr<_Tp>
    loadFromString(
        const String& strModel,
        const String& objname = String()
        );

    template <typename _Tp>
    static
    Ptr<_Tp>
    read(const FileNode& fn);

    virtual
    void
    compute(
        InputArray image,
        std::vector<KeyPoint>& keypoints,
        OutputArray descriptors
        );

    virtual
    void
    compute(
        InputArrayOfArrays images,
        std::vector<std::vector<KeyPoint>>& keypoints,
        OutputArrayOfArrays descriptors
        );

    virtual
    int
    defaultNorm() const;

    virtual
    int
    descriptorSize() const;

    virtual
    int
    descriptorType() const;

    virtual
    void
    detect(
        InputArray image,
        std::vector<KeyPoint>& keypoints,
        InputArray mask = noArray()
        );

    virtual
    void
    detect(
        InputArrayOfArrays images,
        std::vector<std::vector<KeyPoint>>& keypoints,
        InputArrayOfArrays masks = noArray()
        );

    virtual
    void
    detectAndCompute(
        InputArray image,
        InputArray mask,
        std::vector<KeyPoint>& keypoints,
        OutputArray descriptors,
        bool useProvidedKeypoints = false
        );

    virtual
    bool
    empty() const;

    void
    read(const String& fileName);

    virtual
    void
    read(const FileNode& fn);

    void
    write(const String& fileName) const;

    virtual
    void
    write(FileStorage& fs) const;

protected:
    // methods

    void
    writeFormat(FileStorage& fs) const;

Detailed Documentation

Class implementing the AKAZE keypoint detector and descriptor extractor, described in [1]. :

AKAZE descriptors can only be used with KAZE or AKAZE keypoints. Try to avoid using extract and detect instead of operator() due to performance reasons. .. [ANB13] Fast Explicit Diffusion for Accelerated Features in Nonlinear Scale Spaces. Pablo F. Alcantarilla, Jesús Nuevo and Adrien Bartoli. In British Machine Vision Conference (BMVC), Bristol, UK, September 2013.

Enum Values

DESCRIPTOR_KAZE_UPRIGHT

Upright descriptors, not invariant to rotation.

DESCRIPTOR_MLDB_UPRIGHT

Upright descriptors, not invariant to rotation.

Methods

static
Ptr<AKAZE>
create(
    int descriptor_type = AKAZE::DESCRIPTOR_MLDB,
    int descriptor_size = 0,
    int descriptor_channels = 3,
    float threshold = 0.001f,
    int nOctaves = 4,
    int nOctaveLayers = 4,
    int diffusivity = KAZE::DIFF_PM_G2
    )

The AKAZE constructor.

Parameters:

descriptor_type Type of the extracted descriptor: DESCRIPTOR_KAZE, DESCRIPTOR_KAZE_UPRIGHT, DESCRIPTOR_MLDB or DESCRIPTOR_MLDB_UPRIGHT.
descriptor_size Size of the descriptor in bits. 0 -> Full size
descriptor_channels Number of channels in the descriptor (1, 2, 3)
threshold Detector response threshold to accept point
nOctaves Maximum octave evolution of the image
nOctaveLayers Default number of sublevels per scale level
diffusivity Diffusivity type. DIFF_PM_G1, DIFF_PM_G2, DIFF_WEICKERT or DIFF_CHARBONNIER