Circle

class Circle(*args, **kwargs)

Bases: ForwardProjection

Class that defines a 3D circle in the object frame and allows forward projection of a 3D circle in the camera frame and in the 2D image plane by perspective projection. All the parameters must be set in meter.

Note that a 3D circle is defined from the intersection between a 3D plane and a 3D sphere.

A 3D circle has the followings parameters:

  • in the object frame : the parameters oA, oB, oC corresponding to the 3D plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 where (X,Y,Z) are the coordinates of a 3D point belonging to the plane passing through the 3D sphere center (oX,oY,oZ) and the 3D coordinates oX, oY, oZ of the center and radius R of the 3D sphere. These parameters registered in vpForwardProjection::oP internal 7-dim vector are set using the constructors vpCircle(double oA, double oB, double oC, double oX, double oY, double oZ, double R) , vpCircle(const vpColVector &oP) or the functions setWorldCoordinates(double oA, double oB, double oC, double oX, double oY, double oZ, double R) and setWorldCoordinates(const vpColVector &oP) . To get theses parameters use get_oP() .

  • in the camera frame : the parameters cA, cB, cC corresponding to the 3D plane cAx+cBy+cCz+D=0 and the coordinates cX, cY, cZ of the center and radius R of the 3D sphere. These parameters registered in vpTracker::cP internal 7-dim vector are computed using changeFrame(const vpHomogeneousMatrix &cMo, vpColVector &cP) const or changeFrame(const vpHomogeneousMatrix &cMo) . These parameters could be retrieved using getA() , getB() , getC() , getX() , getY() , getZ() and getR() . To get theses parameters use get_cP() .

  • in the image plane : here we consider the parameters of the ellipse corresponding to the perspective projection of the 3D circle. The parameters are the ellipse centroid (x, y) and n20, n11, n02 which are the second order centered moments of the ellipse normalized by its area (i.e., such that \(n_{ij} = \mu_{ij}/a\) where \(\mu_{ij}\) are the centered moments and a the area). These parameters are registered in vpTracker::p internal 5-dim vector and computed using projection() and projection(const vpColVector &cP, vpColVector &p) const . They could be retrieved using get_x() , get_y() , get_n20() , get_n11() and get_n02() . They correspond to 2D normalized circle parameters with values expressed in meters. To get theses parameters use get_p() .

Overloaded function.

  1. __init__(self: visp._visp.core.Circle) -> None

Default constructor that initialize internal vectors.

  1. __init__(self: visp._visp.core.Circle, oP: visp._visp.core.ColVector) -> None

  2. __init__(self: visp._visp.core.Circle, oA: float, oB: float, oC: float, oX: float, oY: float, oZ: float, R: float) -> None

Construct the 3D circle from the intersection of a plane and a sphere with coordinates expressed in the object frame.

Note

See setWorldCoordinates()

Parameters:
oA

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oB

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oC

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oX

Coordinate of the center of the sphere along X-axis in the object frame.

oY

Coordinate of the center of the sphere along Y-axis in the object frame.

oZ

Coordinate of the center of the sphere along Z-axis in the object frame.

R

Radius of the sphere.

Methods

__init__

Overloaded function.

changeFrame

Overloaded function.

computeIntersectionPoint

Computes the coordinates of the point corresponding to the intersection between a circle and a line.

display

Overloaded function.

getA

getB

getC

getR

getX

getY

getZ

get_n02

get_n11

get_n20

get_x

get_y

projection

Overloaded function.

setWorldCoordinates

Overloaded function.

Inherited Methods

vpDisplayForwardProjection

cP

get_p

Return object parameters expressed in the 2D image plane computed by perspective projection.

project

Overloaded function.

setDeallocate

cPAvailable

oP

user

ForwardProjectionDeallocatorType

Used for memory issue especially in the vpServo class.

p

get_cP

Return object parameters expressed in the 3D camera frame.

getDeallocate

track

Track the feature parameters in the camera frame ( vpTracker::cP ) and than compute the projection of these parameters in the image plane ( vpTracker::p ).

get_oP

Return object parameters expressed in the 3D object frame.

print

Print to stdout the feature parameters in:

Operators

__doc__

__init__

Overloaded function.

__module__

Attributes

__annotations__

cP

cPAvailable

oP

p

user

vpDisplayForwardProjection

class ForwardProjectionDeallocatorType(self, value: int)

Bases: pybind11_object

Used for memory issue especially in the vpServo class.

Values:

  • user

  • vpDisplayForwardProjection

__and__(self, other: object) object
__eq__(self, other: object) bool
__ge__(self, other: object) bool
__getstate__(self) int
__gt__(self, other: object) bool
__hash__(self) int
__index__(self) int
__init__(self, value: int)
__int__(self) int
__invert__(self) object
__le__(self, other: object) bool
__lt__(self, other: object) bool
__ne__(self, other: object) bool
__or__(self, other: object) object
__rand__(self, other: object) object
__ror__(self, other: object) object
__rxor__(self, other: object) object
__setstate__(self, state: int) None
__xor__(self, other: object) object
property name : str
__init__(*args, **kwargs)

Overloaded function.

  1. __init__(self: visp._visp.core.Circle) -> None

Default constructor that initialize internal vectors.

  1. __init__(self: visp._visp.core.Circle, oP: visp._visp.core.ColVector) -> None

  2. __init__(self: visp._visp.core.Circle, oA: float, oB: float, oC: float, oX: float, oY: float, oZ: float, R: float) -> None

Construct the 3D circle from the intersection of a plane and a sphere with coordinates expressed in the object frame.

Note

See setWorldCoordinates()

Parameters:
oA

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oB

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oC

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oX

Coordinate of the center of the sphere along X-axis in the object frame.

oY

Coordinate of the center of the sphere along Y-axis in the object frame.

oZ

Coordinate of the center of the sphere along Z-axis in the object frame.

R

Radius of the sphere.

changeFrame(*args, **kwargs)

Overloaded function.

  1. changeFrame(self: visp._visp.core.Circle, noMo: visp._visp.core.HomogeneousMatrix, noP: visp._visp.core.ColVector) -> None

From the 3D coordinates of the circle in the object frame oP that are set using for example vpCircle(double oA, double oB, double oC, double oX, double oY, double oZ, double R) or setWorldCoordinates() , compute the 3D coordinates of the circle in a new object frame noP = noMo * oP. Internal parameters of the circle remain unchanged.

Parameters:
noMo

Transformation from camera to object frame.

noP

3D normalized coordinates of the circle in the a new ojbect frame noP = (noA, noB, noC, noX, noY, noZ, R).

  1. changeFrame(self: visp._visp.core.Circle, cMo: visp._visp.core.HomogeneousMatrix) -> None

Perspective projection of the circle. Internal circle parameters are modified in cP.

Parameters:
cMo

Homogeneous transformation from camera frame to object frame.

static computeIntersectionPoint(circle: visp._visp.core.Circle, cam: visp._visp.core.CameraParameters, rho: float, theta: float) tuple[float, float]

Computes the coordinates of the point corresponding to the intersection between a circle and a line.

Warning

This functions assumes changeFrame() and projection() have already been called.

Note

See changeFrame() , projection()

Parameters:
circle: visp._visp.core.Circle

Circle to consider for the intersection.

cam: visp._visp.core.CameraParameters

Camera parameters that have to be used for the intersection computation.

rho: float

The rho parameter of the line.

theta: float

The theta parameter of the line.

Returns:

A tuple containing:

  • i: resulting i-coordinate of the intersection point.

  • j: resulting j-coordinate of the intersection point.

display(*args, **kwargs)

Overloaded function.

  1. display(self: visp._visp.core.Circle, I: visp._visp.core.ImageGray, cam: visp._visp.core.CameraParameters, color: visp._visp.core.Color = vpColor::green, thickness: int = 1) -> None

Display the projection of a 3D circle in image I using internal coordinates in the image plane (x,y,n20,n11,n02) available in p vector. These coordinates may be updated using projection() .

Parameters:
I

Image used as background.

cam

Camera parameters.

color

Color used to draw the circle.

thickness

Thickness used to draw the circle.

  1. display(self: visp._visp.core.Circle, I: visp._visp.core.ImageGray, cMo: visp._visp.core.HomogeneousMatrix, cam: visp._visp.core.CameraParameters, color: visp._visp.core.Color = vpColor::green, thickness: int = 1) -> None

Display the projection of a sphere in image I . This method is non destructive wrt. cP and p internal circle parameters.

Parameters:
I

Image used as background.

cMo

Homogeneous transformation from camera frame to object frame. The circle is considered as viewed from this camera position.

cam

Camera parameters.

color

Color used to draw the sphere.

thickness

Thickness used to draw the circle.

  1. display(self: visp._visp.core.Circle, I: visp._visp.core.ImageRGBa, cam: visp._visp.core.CameraParameters, color: visp._visp.core.Color = vpColor::green, thickness: int = 1) -> None

Display the projection of a 3D circle in image I using internal coordinates in the image plane (x,y,n20,n11,n02) available in p vector. These coordinates may be updated using projection() .

Parameters:
I

Image used as background.

cam

Camera parameters.

color

Color used to draw the circle.

thickness

Thickness used to draw the circle.

  1. display(self: visp._visp.core.Circle, I: visp._visp.core.ImageRGBa, cMo: visp._visp.core.HomogeneousMatrix, cam: visp._visp.core.CameraParameters, color: visp._visp.core.Color = vpColor::green, thickness: int = 1) -> None

Display the projection of a sphere in image I . This method is non destructive wrt. cP and p internal circle parameters.

Parameters:
I

Image used as background.

cMo

Homogeneous transformation from camera frame to object frame. The circle is considered as viewed from this camera position.

cam

Camera parameters.

color

Color used to draw the sphere.

thickness

Thickness used to draw the circle.

getA(self) float
getB(self) float
getC(self) float
getDeallocate(self) visp._visp.core.ForwardProjection.ForwardProjectionDeallocatorType
getR(self) float
getX(self) float
getY(self) float
getZ(self) float
get_cP(self) visp._visp.core.ColVector

Return object parameters expressed in the 3D camera frame.

get_n02(self) float
get_n11(self) float
get_n20(self) float
get_oP(self) visp._visp.core.ColVector

Return object parameters expressed in the 3D object frame.

get_p(self) visp._visp.core.ColVector

Return object parameters expressed in the 2D image plane computed by perspective projection.

get_x(self) float
get_y(self) float
print(self) None

Print to stdout the feature parameters in:

  • the object frame

  • the camera frame

  • the image plane.

project(*args, **kwargs)

Overloaded function.

  1. project(self: visp._visp.core.ForwardProjection) -> None

Compute the feature parameters in the image plane ( vpTracker::p ) from the parameters in the camera frame ( vpTracker::cP ).

Warning

Be careful to update vpTracker::p and vpTracker::cP public attributes before the call of this method.

  1. project(self: visp._visp.core.ForwardProjection, cMo: visp._visp.core.HomogeneousMatrix) -> None

Compute the feature parameters in the camera frame ( vpTracker::cP ) and than compute the projection of these parameters in the image plane ( vpTracker::p ).

Warning

The feature parameters in the object frame ( vpForwardProjection :oP) need to be set prior the use of this method. To initialize these parameters see setWorldCoordinates() .

Parameters:
cMo

The homogeneous matrix corresponding to the pose between the camera frame and the object frame.

projection(*args, **kwargs)

Overloaded function.

  1. projection(self: visp._visp.core.Circle) -> None

Perspective projection of the circle.

From the 3D parameters of the circle in the camera frame available in cP, computes the 2D parameters of the ellipse resulting from the perspective projection in the image plane. Those 2D parameters are available in p vector.

See vpCircle::projection(const vpColVector &, vpColVector &) const for a more detailed description of the parameters.

  1. projection(self: visp._visp.core.Circle, cP: visp._visp.core.ColVector, p: visp._visp.core.ColVector) -> None

Perspective projection of the circle.

setDeallocate(self, d: visp._visp.core.ForwardProjection.ForwardProjectionDeallocatorType) None
setWorldCoordinates(*args, **kwargs)

Overloaded function.

  1. setWorldCoordinates(self: visp._visp.core.Circle, oP: visp._visp.core.ColVector) -> None

Set the parameters of the 3D circle in the object frame.

  1. setWorldCoordinates(self: visp._visp.core.Circle, oA: float, oB: float, oC: float, oX: float, oY: float, oZ: float, R: float) -> None

Set the 3D circle coordinates in the object frame.

Parameters:
oA

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oB

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oC

Parameters of the plane with equation oA*(X-oX)+oB*(Y-oY)+oC*(Z-oZ)=0 passing through the 3D sphere center.

oX

Coordinate of the center of the sphere along X-axis in the object frame.

oY

Coordinate of the center of the sphere along Y-axis in the object frame.

oZ

Coordinate of the center of the sphere along Z-axis in the object frame.

R

Radius of the sphere.

track(self, cMo: visp._visp.core.HomogeneousMatrix) None

Track the feature parameters in the camera frame ( vpTracker::cP ) and than compute the projection of these parameters in the image plane ( vpTracker::p ).

This method is similar to project(const vpHomogeneousMatrix &) .

Warning

The feature parameters in the object frame ( vpForwardProjection :oP) need to be set prior the use of this method. To initialize these parameters see setWorldCoordinates() .

Parameters:
cMo: visp._visp.core.HomogeneousMatrix

The homogeneous matrix corresponding to the pose between the camera frame and the object frame.