From 3ef64b1974323ae746aa5456769f21d19fdf908a Mon Sep 17 00:00:00 2001 From: Leon Ziegler Date: Tue, 4 Jun 2013 11:15:26 +0200 Subject: [PATCH 1/6] Added protobuf type ClassifiedRegion2D which represents classification results from a 2d visual recognition process. --- .../rst/classification/ClassifiedRegion2D.proto | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 proto/sandbox/rst/classification/ClassifiedRegion2D.proto diff --git a/proto/sandbox/rst/classification/ClassifiedRegion2D.proto b/proto/sandbox/rst/classification/ClassifiedRegion2D.proto new file mode 100644 index 0000000..e93618b --- /dev/null +++ b/proto/sandbox/rst/classification/ClassifiedRegion2D.proto @@ -0,0 +1,27 @@ +package rst.classification; + +import "rst/geometry/BoundingBox.proto"; +import "rst/classification/ClassificationResult.proto"; + +option java_outer_classname = "ClassifiedRegion2DType"; + +/** + * Focus on image coordinate systems (vision-based). + * + * A image region with a classification result. + * + * @author Leon Ziegler + */ +message ClassifiedRegion2D { + + /** + * Region in the input image. + */ + optional geometry.BoundingBox region = 1; + + /** + * The class represented by the image region. + */ + optional ClassificationResult result = 2; + +} -- 1.7.9.5 From 78202e1c6fe08147ae6cb0b4ce6ee41ba4fcd81d Mon Sep 17 00:00:00 2001 From: Leon Ziegler Date: Tue, 4 Jun 2013 11:15:43 +0200 Subject: [PATCH 2/6] Added protobuf type ClassifiedRegion3D which represents classification results from a 3d visual recognition process. --- .../rst/classification/ClassifiedRegion3D.proto | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 proto/sandbox/rst/classification/ClassifiedRegion3D.proto diff --git a/proto/sandbox/rst/classification/ClassifiedRegion3D.proto b/proto/sandbox/rst/classification/ClassifiedRegion3D.proto new file mode 100644 index 0000000..60883fb --- /dev/null +++ b/proto/sandbox/rst/classification/ClassifiedRegion3D.proto @@ -0,0 +1,27 @@ +package rst.classification; + +import "rst/geometry/BoundingBox3DFloat.proto"; +import "rst/classification/ClassificationResult.proto"; + +option java_outer_classname = "ClassifiedRegion3DType"; + +/** + * Focus on image coordinate systems (vision-based). + * + * A region in 3D space with a classification result. + * + * @author Leon Ziegler + */ +message ClassifiedRegion3D { + + /** + * Region in 3D space. + */ + optional geometry.BoundingBox3DFloat region = 1; + + /** + * The class represented by the 3D region. + */ + optional ClassificationResult result = 2; + +} -- 1.7.9.5 From 351379175f93a38b75bb2d445f07b534f35f1254 Mon Sep 17 00:00:00 2001 From: Leon Ziegler Date: Tue, 4 Jun 2013 11:16:35 +0200 Subject: [PATCH 3/6] Added protobuf type CameraPose which represents the pose of a camera in 3d space with semantic annotation of the camera's coordinate system --- proto/sandbox/rst/geometry/CameraPose.proto | 64 +++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 proto/sandbox/rst/geometry/CameraPose.proto diff --git a/proto/sandbox/rst/geometry/CameraPose.proto b/proto/sandbox/rst/geometry/CameraPose.proto new file mode 100644 index 0000000..bcac726 --- /dev/null +++ b/proto/sandbox/rst/geometry/CameraPose.proto @@ -0,0 +1,64 @@ +package rst.geometry; + +import "rst/geometry/Pose.proto"; + +option java_outer_classname = "CameraPoseType"; + +/** + * Pose of a camera with semantic annotation of the axes. + * + * The pure transformation of the camera's pose (in terms of coordinate systems) + * does not provide information about the viewing direction. There must be a convention + * about the semantic meaning of the transformation in order to convey the information + * about where the camera actually looks. The enum coordinate_frame realizes this + * convention by describing the three axes of the camera's coordinate system + * semantically including viewing direction and up direction. + * + * @author Leon Ziegler + */ +message CameraPose { + + /** + * Semantic annotation of the axes. (all right-handed) + */ + enum CoordinateFrame { + + /** + * X: right - Y: down - Z: forward (depth axis) + */ + CAMERA_IMAGE_FRAME = 0; + + /** + * X: up - Y: right - Z: forward (depth axis) + */ + CAMERA_X_UP_FRAME = 1; + + /** + * X: left - Y: up - Z: forward (depth axis) + */ + CAMERA_Y_UP_FRAME = 2; + + /** + * X: forward (depth axis) - Y: left - Z: up + */ + LASER_FRAME = 3; + + /** + * X: right - Y: up - Z: towards viewer (negative depth axis) + */ + SCREEN_FRAME = 4; + + } + + /** + * Annotation of the axes. + */ + optional CoordinateFrame coordinate_frame = 1 [default = CAMERA_IMAGE_FRAME]; + + /** + * The pose of the camera's coordinate system in 3d space relative to a + * given parent coordinate system. + */ + required geometry.Pose pose = 2; + +} -- 1.7.9.5 From 599f5e34db0812447e9cec3797359656a78f4108 Mon Sep 17 00:00:00 2001 From: Leon Ziegler Date: Tue, 4 Jun 2013 11:17:21 +0200 Subject: [PATCH 4/6] Added protobuf type FieldOfView representing the angular extend of a sensor's field of view. --- proto/sandbox/rst/geometry/FieldOfView.proto | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 proto/sandbox/rst/geometry/FieldOfView.proto diff --git a/proto/sandbox/rst/geometry/FieldOfView.proto b/proto/sandbox/rst/geometry/FieldOfView.proto new file mode 100644 index 0000000..1e392e6 --- /dev/null +++ b/proto/sandbox/rst/geometry/FieldOfView.proto @@ -0,0 +1,32 @@ +package rst.geometry; + +option java_outer_classname = "FieldOfViewType"; + +/** + * The field of view of a sensor. + * + * The sensor's FOV is defined the angular extent of a scene that + * is imaged by a visual sensor. The most outer observable ray that + * falls in a sensor's FOV has the angular distance +/- AOV/2.0 from + * the optical axis in the respective extend (vertical/horizontal). + * The angles are given in radian. + * + * @author Leon Ziegler + */ +message FieldOfView { + + /** + * An angle defining the horizontal bounds of the FOV. + */ + // @constraint(value > 0) + // @unit(radian) + required float horizontal_aov = 1; + + /** + * An angle defining the vertical bounds of the FOV. + */ + // @constraint(value > 0) + // @unit(radian) + required float vertical_aov = 2; + +} -- 1.7.9.5 From ee53a6b80d87596bb9b3a71b79409f36000b11ea Mon Sep 17 00:00:00 2001 From: Leon Ziegler Date: Tue, 4 Jun 2013 11:17:51 +0200 Subject: [PATCH 5/6] Added protobuf type ViewFrustum representing a sensor's view frustum. --- proto/sandbox/rst/geometry/ViewFrustum.proto | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 proto/sandbox/rst/geometry/ViewFrustum.proto diff --git a/proto/sandbox/rst/geometry/ViewFrustum.proto b/proto/sandbox/rst/geometry/ViewFrustum.proto new file mode 100644 index 0000000..e04c0bd --- /dev/null +++ b/proto/sandbox/rst/geometry/ViewFrustum.proto @@ -0,0 +1,37 @@ +package rst.geometry; + +import "rst/geometry/FieldOfView.proto"; + +option java_outer_classname = "ViewFrustumType"; + +/** + * A camera's view frustum. + * + * This type adds information about the maximal and minimal perceivable + * distance from the sensor to the definition of the Field of View. + * + * @author Leon Ziegler + */ +// @constraint(.maximal_distance > .minimal_distance) +message ViewFrustum { + + /** + * The field of view of the frustum. + */ + required FieldOfView fov = 1; + + /** + * The minimal perceivable distance. + */ + // @constraint(value > 0) + // @unit(meter) + optional float minimal_distance = 2 [default = 0]; + + /** + * The maximal perceivable distance. + */ + // @constraint(value > 0) + // @unit(meter) + optional float maximal_distance = 3 [default = 99999]; + +} -- 1.7.9.5 From e4e5d1bbd3af6b8262f7e9121f472e9dc6364b2d Mon Sep 17 00:00:00 2001 From: Leon Ziegler Date: Tue, 4 Jun 2013 11:19:40 +0200 Subject: [PATCH 6/6] Added protobuf type LocatedXYZImage which adds information about the location and perceived space to a simple pointcloud structure. --- proto/sandbox/rst/vision/LocatedXYZImage.proto | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 proto/sandbox/rst/vision/LocatedXYZImage.proto diff --git a/proto/sandbox/rst/vision/LocatedXYZImage.proto b/proto/sandbox/rst/vision/LocatedXYZImage.proto new file mode 100644 index 0000000..585cb86 --- /dev/null +++ b/proto/sandbox/rst/vision/LocatedXYZImage.proto @@ -0,0 +1,36 @@ +package rst.vision; + +import "rst/geometry/ViewFrustum.proto"; +import "rst/geometry/CameraPose.proto"; +import "rst/vision/SimpleXYZImage.proto"; + +option java_outer_classname = "LocatedXYZImageType"; + +/** + * A simple point cloud represented in 2D structure with information + * from where it was taken. + * + * By adding information about the pose of the camera and its perceived view + * frustum, one can reconstruct the location and the circumstances under which + * the provided point cloud was captured. + * + * @author Leon Ziegler + */ +message LocatedXYZImage { + + /** + * The background model. + */ + required vision.SimpleXYZImage image = 1; + + /** + * The camera's pose in 3d space. + */ + required geometry.CameraPose camera = 2; + + /** + * The camera's view frustum. + */ + required geometry.ViewFrustum frustum = 3; + +} -- 1.7.9.5