template struct mrpt::obs::TPixelLabelInfo

Overview

Pixel-wise semantic label struct.

See CObservation3DRangeScan::pixelLabels

#include <mrpt/obs/TPixelLabelInfo.h>

template <unsigned int BYTES_REQUIRED_>
struct TPixelLabelInfo: public mrpt::obs::TPixelLabelInfoBase
{
    // typedefs

    typedef std::shared_ptr<TPixelLabelInfo> Ptr;
    typedef typename mrpt::uint_select_by_bytecount<BYTES_REQUIRED>::type bitmask_t;
    typedef mrpt::math::CMatrixDynamic<bitmask_t> TPixelLabelMatrix;

    // fields

    static constexpr static unsigned int BYTES_REQUIRED = BYTES_REQUIRED_;
    TPixelLabelMatrix pixelLabels;

    // construction

    TPixelLabelInfo();

    // methods

    virtual void setSize(const int NROWS, const int NCOLS);
    virtual void setLabel(const int row, const int col, uint8_t label_idx);

    virtual void getLabels(
        const int row,
        const int col,
        uint8_t& labels
        );

    virtual void unsetLabel(const int row, const int col, uint8_t label_idx);

    void unsetAll(
        const int row,
        const int col,
        ] uint8_t label_idx
        );

    virtual bool checkLabel(const int row, const int col, uint8_t label_idx) const;
};

Inherited Members

public:
    // typedefs

    typedef std::shared_ptr<TPixelLabelInfoBase> Ptr;
    typedef std::map<uint32_t, std::string> TMapLabelID2Name;

    // fields

    TMapLabelID2Name pixelLabelNames;
    const uint8_t BITFIELD_BYTES;

    // methods

    const std::string& getLabelName(uint8_t label_idx) const;
    void setLabelName(unsigned int label_idx, const std::string& name);
    int checkLabelNameExistence(const std::string& name) const;
    virtual void setSize(const int NROWS, const int NCOLS) = 0;
    virtual void setLabel(const int row, const int col, uint8_t label_idx) = 0;
    virtual void getLabels(const int row, const int col, uint8_t& labels) = 0;
    virtual void unsetLabel(const int row, const int col, uint8_t label_idx) = 0;
    virtual void unsetAll(const int row, const int col, uint8_t label_idx) = 0;
    virtual bool checkLabel(const int row, const int col, uint8_t label_idx) const = 0;
    void writeToStream(mrpt::serialization::CArchive& out) const;
    static TPixelLabelInfoBase* readAndBuildFromStream(mrpt::serialization::CArchive& in);

Typedefs

typedef typename mrpt::uint_select_by_bytecount<BYTES_REQUIRED>::type bitmask_t

Automatically-determined integer type of the proper size such that all labels fit as one bit (max: 64)

typedef mrpt::math::CMatrixDynamic<bitmask_t> TPixelLabelMatrix

Each pixel may be assigned between 0 and MAX_NUM_LABELS-1 ‘labels’ by setting to 1 the corresponding i’th bit [0,MAX_NUM_LABELS-1] in the byte in pixelLabels(r,c).

That is, each pixel is assigned an 8*BITFIELD_BYTES bit-wide bitfield of possible categories.

See also:

hasPixelLabels

Methods

virtual void setSize(const int NROWS, const int NCOLS)

Resizes the matrix pixelLabels to the given size, setting all bitfields to zero (that is, all pixels are assigned NONE category).

virtual void setLabel(const int row, const int col, uint8_t label_idx)

Mark the pixel(row,col) as classified in the category label_idx, which may be in the range 0 to MAX_NUM_LABELS-1 Note that 0 is a valid label index, it does not mean “no label”.

See also:

unsetLabel, unsetAll

virtual void unsetLabel(const int row, const int col, uint8_t label_idx)

For the pixel(row,col), removes its classification into the category label_idx, which may be in the range 0 to 7 Note that 0 is a valid label index, it does not mean “no label”.

See also:

setLabel, unsetAll

virtual bool checkLabel(const int row, const int col, uint8_t label_idx) const

Checks whether pixel(row,col) has been classified into category label_idx, which may be in the range 0 to 7.

See also:

unsetLabel, unsetAll