Struct ImgTransformation

Struct Documentation

struct ImgTransformation

ImgTransformation struct. Holds information of how a ImgFrame or related message was transformed from their source. Useful for remapping from one ImgFrame to another.

Public Functions

ImgTransformation() = default
inline ImgTransformation(size_t width, size_t height)
inline ImgTransformation(size_t srcWidth, size_t srcHeight, size_t width, size_t height)
inline ImgTransformation(size_t width, size_t height, std::array<std::array<float, 3>, 3> sourceIntrinsicMatrix)
inline ImgTransformation(size_t width, size_t height, std::array<std::array<float, 3>, 3> sourceIntrinsicMatrix, CameraModel distortionModel, std::vector<float> distortionCoefficients)
dai::Point2f transformPoint(dai::Point2f point) const

Transform a point from the source frame to the current frame.

Parameters:

point – Point to transform

Returns:

Transformed point

dai::RotatedRect transformRect(dai::RotatedRect rect) const

Transform a rotated rect from the source frame to the current frame.

Parameters:

rect – Rectangle to transform

Returns:

Transformed rectangle

dai::Point2f invTransformPoint(dai::Point2f point) const

Transform a point from the current frame to the source frame.

Parameters:

point – Point to transform

Returns:

Transformed point

dai::RotatedRect invTransformRect(dai::RotatedRect rect) const

Transform a rotated rect from the current frame to the source frame.

Parameters:

rect – Rectangle to transform

Returns:

Transformed rectangle

std::pair<size_t, size_t> getSize() const

Retrieve the size of the frame. Should be equal to the size of the corresponding ImgFrame message.

Returns:

Size of the frame

std::pair<size_t, size_t> getSourceSize() const

Retrieve the size of the source frame from which this frame was derived.

Returns:

Size of the frame

std::array<std::array<float, 3>, 3> getMatrix() const

Retrieve the transformation matrix from the source frame to the current frame.

Returns:

Transformation matrix

std::array<std::array<float, 3>, 3> getMatrixInv() const

Retrieve the inverse transformation matrix from the current frame to the source frame.

Returns:

Inverse transformation matrix

std::array<std::array<float, 3>, 3> getSourceIntrinsicMatrix() const

Retrieve the intrinsic matrix of the source sensor.

Returns:

Intrinsic matrix

std::array<std::array<float, 3>, 3> getSourceIntrinsicMatrixInv() const

Retrieve the inverse intrinsic matrix of the source sensor.

Returns:

Inverse intrinsic matrix

CameraModel getDistortionModel() const

Retrieve the distortion model of the source sensor

Returns:

Distortion model

std::vector<float> getDistortionCoefficients() const

Retrieve the distortion coefficients of the source sensor

Returns:

vector of distortion coefficients

std::array<std::array<float, 3>, 3> getIntrinsicMatrix() const

Retrieve the total intrinsic matrix calculated from intrinsic * transform.

Returns:

total intrinsic matrix

std::array<std::array<float, 3>, 3> getIntrinsicMatrixInv() const

Retrieve the inverse of the total intrinsic matrix calculated from intrinsic * transform.

Returns:

inverse total intrinsic matrix

float getDFov(bool source = false) const

Retrieve the diagonal field of view of the image.

Parameters:

source – If true, the source field of view will be returned. Otherwise, the current field of view will be returned.

Returns:

Diagonal field of view in degrees

float getHFov(bool source = false) const

Retrieve the horizontal field of view of the image.

Parameters:

source – If true, the source field of view will be returned. Otherwise, the current field of view will be returned.

Returns:

Horizontal field of view in degrees

float getVFov(bool source = false) const

Retrieve the vertical field of view of the image.

Parameters:

source – If true, the source field of view will be returned. Otherwise, the current field of view will be returned.

Returns:

Vertical field of view in degrees

std::vector<dai::RotatedRect> getSrcCrops() const
bool getSrcMaskPt(size_t x, size_t y)

Returns true if the point is inside the transformed region of interest (determined by crops used).

bool getDstMaskPt(size_t x, size_t y)

Returns true if the point is inside the image region (not in the background region).

ImgTransformation &addTransformation(std::array<std::array<float, 3>, 3> matrix)

Add a new transformation.

Parameters:

matrix – Transformation matrix

ImgTransformation &addCrop(int x, int y, int width, int height)

Add a crop transformation.

Parameters:
  • x – X coordinate of the top-left corner of the crop

  • y – Y coordinate of the top-left corner of the crop

  • width – Width of the crop

  • height – Height of the crop

ImgTransformation &addPadding(int top, int bottom, int left, int right)

Add a pad transformation. Works like crop, but in reverse.

Parameters:
  • top – Padding on the top

  • bottom – Padding on the bottom

  • left – Padding on the left

  • right – Padding on the right

ImgTransformation &addFlipVertical()

Add a vertical flip transformation.

ImgTransformation &addFlipHorizontal()

Add a horizontal flip transformation.

ImgTransformation &addRotation(float angle, dai::Point2f rotationPoint)

Add a rotation transformation.

Parameters:
  • angle – Angle in degrees

  • rotationPoint – Point around which to rotate

ImgTransformation &addScale(float scaleX, float scaleY)

Add a scale transformation.

Parameters:
  • scaleX – Scale factor in the horizontal direction

  • scaleY – Scale factor in the vertical direction

ImgTransformation &addSrcCrops(const std::vector<dai::RotatedRect> &crops)
ImgTransformation &setSize(size_t width, size_t height)
ImgTransformation &setSourceSize(size_t width, size_t height)
ImgTransformation &setIntrinsicMatrix(std::array<std::array<float, 3>, 3> intrinsicMatrix)
ImgTransformation &setDistortionModel(CameraModel model)
ImgTransformation &setDistortionCoefficients(std::vector<float> coefficients)
dai::Point2f remapPointTo(const ImgTransformation &to, dai::Point2f point) const

Remap a point from this transformation to another. If the intrinsics are different (e.g. different camera), the function will also use the intrinsics to remap the point.

Parameters:
  • to – Transformation to remap to

  • point – Point to remap

dai::Point2f remapPointFrom(const ImgTransformation &from, dai::Point2f point) const

Remap a point to this transformation from another. If the intrinsics are different (e.g. different camera), the function will also use the intrinsics to remap the point.

Parameters:
  • from – Transformation to remap from

  • point – Point to remap

dai::RotatedRect remapRectTo(const ImgTransformation &to, dai::RotatedRect rect) const

Remap a rotated rect from this transformation to another. If the intrinsics are different (e.g. different camera), the function will also use the intrinsics to remap the rect.

Parameters:
  • to – Transformation to remap to

  • rectRotatedRect to remap

dai::RotatedRect remapRectFrom(const ImgTransformation &from, dai::RotatedRect rect) const

Remap a rotated rect to this transformation from another. If the intrinsics are different (e.g. different camera), the function will also use the intrinsics to remap the rect.

Parameters:
  • from – Transformation to remap from

  • pointRotatedRect to remap

bool isValid() const

Check if the transformations are valid. The transformations are valid if the source frame size and the current frame size are set.

DEPTHAI_SERIALIZE(ImgTransformation, transformationMatrix, transformationMatrixInv, sourceIntrinsicMatrix, sourceIntrinsicMatrixInv, distortionModel, distortionCoefficients, srcWidth, srcHeight, width, height, srcCrops)