Method and apparatus for calibrating a multi-camera system based on human pose
By using a human subject as a calibration pattern to determine camera transformations through cross-ratio invariants, the challenges of cumbersome conventional calibration methods are addressed, enabling easy and accurate calibration of multi-camera systems for non-technical users.
Patent Information
- Application Number
- JP2021186387
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-23
- Filing Date
- 2021-11-16
- Publication Date
- 2026-01-14
- Estimated Expiration
- 2041-11-16
AI Technical Summary
Conventional multi-camera calibration techniques are cumbersome and require specialized equipment, which may not be readily available, especially for non-technical users, and often fail to accurately determine the extrinsic parameters of cameras relative to each other and their environment.
Utilizing a human subject as a calibration pattern by identifying anatomical points and calculating cross ratios of image coordinates to determine camera transformations, eliminating the need for pre-printed patterns and enabling calibration at greater distances.
Facilitates easy calibration of multi-camera systems by non-technical users, improves accessibility, and enhances the use of depth-sensing products by determining extrinsic parameters without requiring knowledge of camera intrinsic parameters.
Smart Images

Figure 0007798283000006 
Figure 0007798283000007 
Figure 0007798283000008
Abstract
Description
[Technical Field]
[0001] The present disclosure relates generally to multi-camera calibration, and more particularly to a method and apparatus for calibrating a multi-camera system based on human pose. [Background technology]
[0002] In recent years, digital cameras and multi-camera systems have become increasingly complex, while calibration techniques for calibrating such multi-camera systems (by estimating the cameras' extrinsic parameters) remain a daunting task. Multi-camera systems are useful for many different applications, including sports television broadcasting, security and defense systems, home entertainment systems, virtual and / or augmented reality, IoT devices, and drones. As multi-camera systems become more widely available to the public and non-professionals, robust calibration of multi-camera systems can become a factor limiting the accessibility and portability of multi-camera applications. [Brief explanation of the drawings]
[0003] [Figure 1A] FIG. 1 is an exemplary diagram illustrating an exemplary use of a person calibrating an exemplary multi-camera system. [Figure 1B] FIG. 1 is an exemplary diagram illustrating an exemplary use of a person calibrating an exemplary multi-camera system. [Figure 2] FIG. 1C is an example block diagram of the example multi-camera calibration controller of FIGS. 1A and 1B for calibrating a multi-camera system. [Figure 3] 1C is an exemplary digital point cloud skeleton generated by the exemplary multi-camera calibration controller of FIGS. 1A and / or 1B. [Figure 4A] 1 is an exemplary image from three different viewing angles of a person in a T-pose with exemplary anatomical points and connection overlays. [Figure 4B]1 is an exemplary image from three different viewing angles of a person in a T-pose with exemplary anatomical points and connection overlays. [Figure 4C] 1 is an exemplary image from three different viewing angles of a person in a T-pose with exemplary anatomical points and connection overlays. [Figure 5A] 1A, 1B, and / or 2. FIG. 1B is an exemplary image of a person in a T-pose at a generally parallel angle to the camera's image space, with an exemplary digital skeleton overlay generated by the exemplary multi-camera calibration control of FIGS. 1A, 1B, and / or 2. [Figure 5B] 1A, 1B, and / or 2. FIG. 1B is an exemplary image of a person in a T-pose at a generally perpendicular angle to the camera's image plane, with an exemplary digital skeleton generated by the exemplary multi-camera calibration control of FIGS. [Figure 6] 1A, 1B, and / or 2. FIG. 2 is an exemplary diagram of an exemplary multi-camera viewing system showing the transformations calculated by the exemplary multi-camera calibration controller of FIGS. [Figure 7] 1A, 1B, and / or 2 for calibrating a multi-camera system. [Figure 8] 1A, 1B, and / or 2 for calibrating a multi-camera system. [Figure 9] FIG. 9 is a block diagram of an exemplary processing platform configured to execute the exemplary instructions of FIGS. 7-8 to implement the exemplary multi-camera calibration controller shown in FIGS. 1A, 1B, and / or 2. [Figure 10]FIG. 9 is a block diagram of an exemplary software distribution platform for distributing software (e.g., software corresponding to the exemplary computer-readable instructions of FIGS. 7-8) to consumers (e.g., for licensing, sale, and / or use), to client devices such as retailers (e.g., for sale, resale, license, and / or sublicense), and / or to original equipment manufacturers (OEMs) (e.g., for inclusion in products distributed to retailers and / or sold directly to consumers).
[0004] The figures are not necessarily to scale. Generally, the same reference numerals are used throughout the drawings and the accompanying description referring to the drawings or portions thereof.
[0005] Unless otherwise specified, descriptions such as "first," "second," "third," etc. are used herein without implying or indicating priority, physical order, placement within a list, and / or any sequence, but are used merely as labels and / or arbitrary names to distinguish elements to facilitate understanding of the examples of the present disclosure. In some instances, the descriptor "first" may be used to refer to an element in the detailed description, while the same element may be represented in the claims by a different descriptor, such as "second" or "third." In such instances, it should be understood that such descriptors are used merely to distinguish and identify elements that may, for example, share the same name. DETAILED DESCRIPTION OF THE INVENTION
[0006] Conventional techniques for calibrating multi-camera systems include using patterns (e.g., chessboard patterns or other tags), using measuring devices (e.g., rulers, compasses, calipers, etc.), and / or using fiducial tags and associated 3D estimation. However, these conventional techniques are cumbersome, and the tools required for these techniques may not be readily available. Furthermore, the state and accuracy of the calibration equipment used to calibrate the system may be difficult to maintain in long-running applications when deployed by non-technical personnel. In many cases, while a user can obtain the intrinsic parameters of the cameras (e.g., focal length, pixel depth, etc.) online or directly from the system framework, the user cannot obtain the extrinsic parameters of the cameras relative to each other (e.g., three-dimensional (3D) position and orientation) and / or the associated environment to be imaged.
[0007] The examples disclosed herein enable the use of a person as a calibration pattern for calibrating cameras (e.g., determining extrinsic parameters) in a multi-camera system. The examples disclosed herein eliminate the need for pre-printed patterns and / or tags to be acquired and positioned for reference during calibration. Rather, the examples disclosed herein enable calibration of a multi-camera system (e.g., calibration without the placement of specific printed patterns or tags) by using a person in the environment to be imaged as a reliable reference marker or pattern for calibration. As a result, the examples disclosed herein enable users to easily create smart spaces and interactive games and enable improved use of depth-sensing products (e.g., RealSense™ technology developed by Intel®). Furthermore, the examples disclosed herein provide the ability to calibrate cameras (e.g., determine their extrinsic parameters) at greater distances from the target environment than is possible using standard calibration patterns due to the size of a person used as a calibration pattern. Furthermore, the examples disclosed herein allow a user to calibrate a multi-camera system (eg, determine its extrinsic parameters) without knowing the intrinsic parameters of the cameras.
[0008] Examples disclosed herein enable the use of a person as a calibration pattern in a multi-camera system by introducing cross-ratio invariants into camera calibration. Exemplary methods, apparatus, systems, and articles of manufacture disclosed herein include a multi-camera calibration controller that identifies anatomical points of a human subject in images captured by multiple cameras and calculates cross ratios of image coordinates corresponding to the anatomical points of the human subject. In response to determining that the calculated cross ratio of image coordinates corresponding to a first camera matches a reference cross ratio, examples disclosed herein calculate a transformation for each of the first and second cameras relative to the human subject. Furthermore, in some examples, the transformation of each camera relative to the human subject may be used to calculate the transformation between the first and second cameras. This same process may be used to determine the transformations between all cameras in the multi-camera system, thereby defining all extrinsic parameters for a fully calibrated system.
[0009] 1A and 1B are exemplary diagrams illustrating an exemplary use of a person calibrating an exemplary multi-camera system. The exemplary multi-camera system 100a shown in FIG. 1A includes an exemplary first still camera 102, an exemplary second still camera 104, and an exemplary third still camera 106. At the center of the cameras 102, 104, and 106, as shown in the illustrated example, a human subject 108 stands in a T-position (e.g., substantially straight, with arms extended to the left and right of the body). As their names imply, the exemplary still cameras 102, 104, and 106 shown in FIG. 1A are still cameras positioned to remain fixed in position while capturing image data (e.g., still images and / or video). In the illustrated example, the three still cameras 102, 104, and 106 are positioned to surround the human subject 108 and point in directions such that the human subject 108 is within the field of view of each of the cameras. Due to the relative positions of the exemplary still cameras 102, 104, 106 and the human subject 108, the exemplary cameras 102, 104, 106 each have a different viewing angle of the human subject 108. More generally, in some examples, the exemplary still cameras 102, 104, 106 are each associated with different translations and rotations relative to the other still cameras 102, 104, 106 and relative to the human subject 108. In some examples, the exemplary still cameras 102, 104, 106 each have six degrees of freedom (e.g., three degrees of translation and three degrees of rotation) relative to the other still cameras 102, 104, 106, the human subject 108, and / or any other reference point defined in three-dimensional space.
[0010] As shown in the depicted example, each still camera 102, 104, 106 communicates with an example multi-camera calibration controller 110, which may be implemented to calibrate the multi-camera system 100a of FIG. 1A. The example still cameras 102, 104, 106 provide captured image data to the example multi-camera calibration controller 110 via any suitable wired or wireless connection. In some examples, the still cameras 102, 104, 106 provide image data of the human subject 108 they capture in substantially real time. As used herein, "substantially real time" refers to occurring nearly instantaneously, recognizing that there may be real-world delays in time calculation, transmission, etc. Thus, unless otherwise specified, "substantially real time" refers to actual time + / - 1 second. In other examples, image data captured by the cameras 102, 104, 106 is stored and provided to the exemplary multi-camera calibration control unit 110 at a later time (e.g., after a few seconds, minutes, hours, etc.) to determine the external parameters of the exemplary cameras 102, 104, 106.
[0011] The example multi-camera system 100b shown in FIG. 1B includes an example first dynamic camera 112, an example second dynamic camera 114, and an example third dynamic camera 108 that surround a human subject 108 standing in a T-position. The example dynamic cameras 112, 114, 116 shown in FIG. 1B are integrated into respective drones. As such, the example dynamic cameras 112, 114, 116 shown in FIG. 1B are dynamic cameras that can move and / or be repositioned (relative to each other and / or relative to the human subject 108) while capturing image data. Although the dynamic cameras 112, 114, 116 in the illustrated example move due to the movement of the drones, the dynamic cameras 112, 114, 116 may also move in other ways (e.g., carried by different people, attached to a moving camera jib or crane, etc.). In the illustrated example, three dynamic cameras 112, 114, 116 are positioned to surround the human subject 108 and point in directions such that the human subject 108 is within the field of view of each of the cameras. Due to the relative positions of the example dynamic cameras 112, 114, 116 and the human subject 108, the example dynamic cameras 112, 114, 116 each have a different viewing angle of the human subject 108. More generally, in some examples, the example dynamic cameras 112, 114, 116 each have six degrees of freedom (e.g., three degrees of translation and three degrees of rotation) relative to the other dynamic cameras 112, 114, 116, the human subject 108, and / or any other reference point defined in three-dimensional space.
[0012] As shown in the depicted example, each dynamic camera 112, 114, 116 communicates with an example multi-camera calibration controller 110, which may be implemented to calibrate the multi-camera system 100b of FIG. 1B. The example dynamic cameras 112, 114, 116 provide captured image data to the example multi-camera calibration controller 110 via any suitable wired or wireless connection. In some examples, the dynamic cameras 112, 114, 116 provide image data of the human subject 108 they capture in substantially real time. In other examples, the image data may be stored and provided to the controller 110 for analysis at a later time.
[0013] 2 is an example block diagram of the example multi-camera calibration controller 110 of FIGS. 1A and / or 1B for calibrating multiple cameras (e.g., cameras 102, 104, 106, 112, 114, 116). The example data interface 202 enables communication with input and / or output devices. For example, in some instances, the data interface 202 receives image data (e.g., still images, video streams, etc.) from one or more of the cameras 102, 104, 106, 112, 114, 116. Additionally, in some examples, the data interface 202 transmits and / or provides to a display and / or other remote device other data indicative of the results of the analysis of the image data (e.g., a calculated transformation including translational and / or rotational parameters of the cameras 102, 104, 106, 112, 114, 116) generated by one or more of the example object identifier 204, the example pose detector 206, the example transformation calculator 208, and / or the example memory 210. The example memory 210 stores information including image data, camera data, machine learning algorithms (e.g., trained machine learning models), libraries, and / or other suitable data for camera calibration. In some examples, the example data interface 202, the example object identifier 204, the example pose detector 206, the example transformation calculator 208, and / or the example memory 210 are coupled via a bus 207.
[0014] An exemplary multi-camera system is shown in FIG. calibration The control unit 110 includes an exemplary object identification unit 204 that detects human subjects (e.g., human subjects 108 shown in FIGS. 1A and 1B) in the image data, estimates and / or identifies anatomical points / connections (e.g., points on the body of the human subject, body parts of the human subject, and / or intersections of body parts of the human subject such as junctions) of the human subjects appearing in the image data, generates a digital skeleton based on the identified anatomical points and / or connections, and / or generates a digital skeleton (e.g., a point cloud skeleton) based on the estimated anatomical points and / or anatomical connections of the human subject.
[0015] In some examples, the example object identifier 204 of Figure 2 identifies one or more of the anatomical points and / or anatomical connections shown in the example digital point cloud skeleton 300 shown in Figure 3. For example, Example The exemplary object identifier 204 may identify and / or estimate the location of a first human subject's foot 302, a first human subject's knee 304, a first human subject's waist 306, a first human subject's hand 314, a first human subject's elbow 312, a first human subject's shoulder 310, a human subject's neck 308, a second human subject's shoulder 316, a second human subject's elbow 318, a second human subject's hand 320, a second human subject's waist 322, a second human subject's knee 324, a second human subject's foot 326, a human subject's nose 328, a first human subject's eye 330, a first human subject's ear 332, a second human subject's eye 334, and / or a second human subject's eye. In some examples, the exemplary object identifier 204 identifies image coordinates corresponding to the detected anatomical points. In some examples, the image coordinates corresponding to the exemplary anatomical points and / or anatomical connections are two-dimensional (2D) image coordinates (e.g., P(x,y)) or three-dimensional (3D) image coordinates (e.g., P(x,y,z)). In some examples, the image coordinates are image coordinate vectors. In some examples, the image coordinates and / or coordinate vectors of the detected anatomical points are stored in the exemplary memory 210. In some examples, the image coordinates and / or coordinate vectors correspond to one or more pixels in an image of a human subject received from a camera (e.g., cameras 102, 104, 106, 112, 114, 116 shown in FIGS. 1A and 1B).
[0016] In some examples, the example object identifier 204 identifies and / or estimates the location of a connection between two anatomical points identified by the example object identifier 204. For example, the example object identifier 204 may identify and / or estimate any one or more of the connections shown in the example digital point cloud skeleton shown in FIG. For example, the example object identifier 204 may identify a connection 303 between a first foot 302 and a first knee 304, a connection 305 between a first knee 304 and a first hip 306, a connection 307 between a first hip 306 and a neck 308, a connection 309 between a neck 308 and a first shoulder 310, a connection 311 between a first shoulder 310 and a first elbow 312, a connection 313 between a first elbow 312 and a first hand 314, a connection 315 between a neck 308 and a second shoulder 316, a connection 317 between a second shoulder 316 and a second knee 318, a connection 319 between a second elbow 319 and a first hand 319, and a connection 320 between a second hand 320 and a second shoulder 316. The example object identifier 204 may identify a connection 319 between the first anatomical connection 308 and a second hand 320, a connection 321 between the neck 308 and a second hip 322, a connection 323 between the second hip 322 and a second knee 324, a connection 325 between the second knee 324 and a second foot 326, a connection 327 between the neck 308 and a nose 328, a connection 329 between the nose 328 and a first eye 330, a connection 331 between the first eye 330 and a first ear 332, a connection 333 between the nose 328 and a second eye 334, and / or a connection 335 between the second eye 334 and a second ear 336. In some examples, the example object identifier 204 identifies image coordinate vectors corresponding to the detected anatomical connections. In some examples, the image coordinate vectors of the detected anatomical connections are stored in the example memory 210.
[0017] While the example digital skeleton 300 shown in FIG. 3 includes 18 anatomical points and 17 anatomical connections, the example object identifier 204 may identify and / or estimate any suitable number of anatomical points and / or anatomical connections in addition to, in combination with, or instead of those shown in FIG. 3. For example, the example object identifier 204 may identify and / or estimate the location of one or more anatomical points located between adjacent anatomical points (e.g., wrists, torso, and / or mouth) shown in FIG. 3. In some examples, the example object identifier 204 identifies an intermediate point that is not specifically linked to any individual anatomical point on the human subject, but is determined with reference to two or more other anatomical points. For example, a mid-pelvic point may be determined by identifying a midpoint located halfway between two points identifying a person's first and second hips 306, 322. As another example, a midpoint corresponding to the center of the human subject's torso may be identified where a first line extending from the first shoulder 310 to the second waist 322 intersects with a second line extending from the second shoulder 316 to the first waist 306. In some examples, the example object identifier 204 may identify and / or estimate the location of the tip of any one or more anatomical points outside of the anatomical points shown in FIG.
[0018] In some examples, the example object identifier 204 may identify and / or estimate any number and / or combination of anatomical points suitable for detecting when the anatomical points are located on a line (when the human subject is standing in a particular posture such that the anatomical points are aligned). For example, the example object identifier 204 may identify and / or estimate a first hand 314, a first shoulder 310, a second shoulder 316, a second hand 320, a connection between the first hand 314 and the first shoulder 310, a connection between the first shoulder 310 and the second shoulder 316, and a connection between the second shoulder 316 and the second point 320 to detect when the human subject is in a T-pose (e.g., with hands outstretched to the left and right of the body, as shown in FIG. 1B ). In some examples, the example object identifier 204 identifies and / or estimates any number and / or combination of anatomical points and / or anatomical connections of a human subject that are suitable for calculating cross ratios of lines formed by the anatomical points when the human subject is in a certain pose (e.g., a T-pose). In some examples, the example object identifier 204 identifies and / or estimates any number and / or combination of anatomical points and / or anatomical connections of a human subject that are arranged in a triangle to define three points that can be used to solve a perspective-three-point (P3P) problem. In some examples, at least two of the three points in the triangle that define the P3P problem are identified from among the anatomical points arranged in the above-mentioned straight line. In some examples, the example object identifier 204 identifies and / or estimates any number and / or combination of anatomical points and / or anatomical connections of a human subject when in a particular pose (e.g., a T-pose) to define four points that can be used to solve a perspective-four-point (P4P) problem. In some examples, at least three of the four points in a P4P problem are identified along a line defined by the four anatomical points used to calculate the cross ratio as described above. In some such examples, the three points along the line correspond to different ones of the four anatomical points detected by the pose detector 206 when arranged in a straight line.In other examples, at least some of the three points may correspond to other points that are different from the four points but are located on the line. In some examples, the fourth point in the P4P problem is selected to be located on a line that extends substantially perpendicular to the line and passes through one of the other three points in the P4P problem located along the line. As a result, the fourth point in the P4P problem defines a shape (e.g., a T-shape, an L-shape) with a right angle that can be used to define the origin of a coordinate system.
[0019] 4A-4C are example images from three different images 400a, 400b, and 400c associated with three different viewing angles of a human subject 400 in a T-pose with the human subject's shoulders, elbows, and hands in a straight line. In this example, anatomical points at the ends of this line (e.g., a first anatomical point 402 corresponding to the human subject's 400's right hand and a second anatomical point 404 corresponding to the human subject's 400's left hand) and a third anatomical point 406 corresponding to the human subject's 400's chest are selected as three of the four points in the T-shape to be defined for the P4P problem. In some examples, the location of the third point 406 is identified by determining the midpoint between the anatomical points in the digital skeleton 300 corresponding to the human subject's two shoulders 310, 316. In the illustrated example, a fourth anatomical point 408 corresponding to the human subject's 400's pelvis is defined as the fourth point in the T-shape used as the basis for the P4P problem. In some examples, the location of the fourth point 408 is identified by determining the midpoint between the anatomical points in the digital skeleton 300 corresponding to the human subject's two hips 306, 322. As a result, the third point 406 and the fourth point 408 are vertically aligned and define a line substantially perpendicular to the line defined by the human subject's arms. Selecting these orthogonal P4P problem points defines a reference coordinate system. In other examples, the fourth point 408 may be selected at another location that is not vertically aligned with any of the other three points 402, 404, 406, as this is still possible without solving the P4P problem. The solution to the P4P problem determines the corresponding camera transformation parameters. That is, although the shape of the T-shape defined by the four points 402, 404, 406, 408 appears different in each of the three images 400a, 400b, 400c, the T-shape actually has a fixed shape in the real world due to the anatomical proportions of the human subject 400. Furthermore, in some examples, the cameras are synchronized to capture images substantially simultaneously (e.g., simultaneously or within less than one second of each other), so that the T-shape has a fixed shape in the real world across all images of the human subject (captured by different cameras). Thus, any differences that appear in the shape of the T-shape are due to the different perspectives of the cameras that captured each of the three images 400a, 400b, 400c.Although an exemplary T-shape is shown and described, when a human subject is determined to be in a particular pose, any points in any suitable arrangement having a fixed distance and relative position relative to one another (based on human anatomy) may be used to define a P4P problem that can be solved to determine corresponding camera transformation parameters. More generally, a solution to the problem can be determined as long as at least one of the four points used in the P4P problem is aligned with the other three points in the P4P problem (e.g., the points are arranged in a triangle).
[0020] The example object identifier 204 of the example multi-camera calibration controller 110 shown in FIG. 2 includes an example learning controller 212 that implements a machine learning model to analyze image data to detect human subjects, identify and / or estimate the locations of anatomical points and / or anatomical connections of the human subjects, and / or generate a digital skeleton (e.g., digital point cloud skeleton 300 shown in FIG. 3). In the example shown in FIG. 2, the example machine learning controller 212 includes an example model trainer 214 that trains a model based on input training data (e.g., training images) and an example model executor 216 that executes the model (e.g., the trained model). In some examples, the example model trainer 214 implements a training algorithm that trains the model to act according to patterns and / or associations, for example, based on the training data. In some examples, once training is complete, the model is deployed to the example model executor 216 as an executable configuration. In some examples, the example model executor 216 uses a trained machine learning model to process inputs (e.g., images of human subjects) and provide outputs indicative of image coordinates and / or coordinate vectors of corresponding anatomical points and / or anatomical connections. In some examples, the training and / or running models, including algorithms associated with the training and / or running models, are stored in the example memory 210.
[0021] In some examples, the example object identifier 204 of the example multi-camera calibration controller 110 shown in FIG. 2 implements a machine learning model (e.g., linear regression, logistic regression, deep neural network (DNN), convolutional neural network (CNN), and / or multi-stage CNN) to identify and / or estimate the locations of anatomical points and / or anatomical connections on a human subject in images from the cameras. In some examples, the example machine learning controller 212 performs human pose estimation techniques to identify anatomical points and / or connections by generating estimates based on a combination of local observations of body parts and spatial dependencies between them. In some examples, the example machine learning controller 212 implements any suitable 2D and / or 3D pose estimation analysis techniques, now known or developed in the future, to identify anatomical points and / or connections on a human subject.
[0022] In some examples, the example machine learning control 212 of FIG. 2 performs 2D pose estimation by generating a confidence map for detecting anatomical points in an image. In some examples, the example machine learning control 212 selects a maximum value in the confidence map and / or applies non-maximum suppression (NMS) to identify candidate body parts for the detected anatomical points. In some examples, the example machine learning control 212 generates a part affinity field (PAF) (e.g., a set of 2D vector fields that encode the position and orientation of body parts across the image domain) to associate the detected anatomical points with other anatomical points. In some examples, the example machine learning control 212 performs a set of bipartite matchings to associate the generated candidate body parts based on the confidence map. In some examples, the example machine learning control 212 assembles the predictions and / or associations identified by the example machine learning control 212 to generate a complete body pose (e.g., a digital skeleton such as the one shown in FIG. 2 ). In some examples, only a portion of the digital skeleton is generated and / or identified. In some examples, the example machine learning controller 212 outputs image coordinates and / or coordinate vectors of the detected anatomical points and / or anatomical connections identified by the example machine learning controller 212. In some examples, the example machine learning controller 212 outputs the image coordinates and / or coordinate vectors to the example detector 206 for pose detection and / or to the example memory 210 for storage.
[0023] The example multi-camera calibration controller 110 shown in FIG. 2 includes an example pose detector 206 that detects when the human subject 108 is standing in a particular pose where at least four of the anatomical points identified and / or estimated by the example object identifier 204 are located on a line (e.g., all four points are collinear). More specifically, the pose detector 206 detects when the human subject is standing in a particular pose (where the four anatomical points are located on a line) by calculating the cross-ratio of the four anatomical points of the human subject in the image. It is a geometric property of four collinear points that the cross-ratio of such points is projection-invariant. That is, when the four points are on a line and maintain a fixed distance from each other, the cross-ratio of these points along the line remains a fixed value for any projection, regardless of the location of the origin relative to the four points. As long as the dimensions between different ones of the anatomical points are fixed (e.g., the forearm between the wrist and elbow has a fixed dimension, the upper arm between the elbow and shoulder has a fixed dimension, and the distance between the shoulders is a fixed dimension), when such anatomical points are held on a line (e.g., when a person is standing in a T-pose), the anatomical points define a fixed space along a straight line and are therefore in a projection-invariant configuration. As a result, the cross ratio of four anatomical points calculated from any viewpoint around the human subject should be the same. This is shown diagrammatically in FIG. 5A.
[0024] 5A is an example image 500a of a human subject 501 standing in a T-pose at an angle generally parallel to the image plane of the camera capturing the image, with a digital skeleton overlay generated by the example multi-camera calibration control 110 of FIG. 2. In the illustrated example, the example multi-camera calibration control 110 identifies a first anatomical point having an image coordinate vector P1 corresponding to a first wrist 502a of the example person 501, a second anatomical point having an image coordinate vector P2 corresponding to a first shoulder 504a of the example person 501, a third anatomical point having an image coordinate vector P3 corresponding to a second shoulder 506a of the example person 501, and a fourth anatomical point having an image coordinate vector P4 corresponding to a second wrist 508a of the example person 501. As shown in the illustrated example, the four points 502a, 504a, 506a, 508a form a line. Thus, the cross ratio of the four points from the viewpoint of the first point 510a (associated with the first projection) is the same as the cross ratio of the four points from the viewpoint of the second point 520a (associated with the second projection). Furthermore, the cross ratio of the four points will be the same as other points in the space surrounding the human subject. These different viewpoints or projections may correspond to different camera locations around the human subject, including, for example, points associated with the camera that captured image 500a shown in FIG. 5A.
[0025] Therefore, in some examples, the exemplary pose detection unit 206 determines whether the human subject is in a particular position corresponding to the T pose by calculating the cross ratio of the four points 502a, 504a, 506a, and 508a that appear in the images captured by each camera and determining whether the cross ratios calculated for the images match. If the cross ratio values do not match (e.g., are not the same), the projective invariance property is not satisfied, indicating that the four points 502a, 504a, 506a, and 508a are not on a straight line. Therefore, the exemplary pose detection unit 206 determines that the human subject is not in the intended pose (e.g., the T pose in the illustrated example). For example, FIG. 5B is another exemplary image 500b of the same human subject 501. However, at the time of appearance in image 500b of FIG. 5B, the human subject 501 is rotated approximately 90 degrees, and the human subject's T pose is at an angle that is generally perpendicular to the camera's image plane. 5B, the four anatomical points P1 (first wrist 502b), P2 (first shoulder 504b), P3 (second shoulder 506b), and P4 (second wrist 508b) are not on a straight line. Therefore, the example pose detector 206 determines that the human subject 501 is not in an intended pose (e.g., a T-pose with arms outstretched to the left and right). However, if the cross ratio values between different images match, the example pose detector 206 determines that the person is in an intended pose corresponding to the four points 502a, 504a, 506a, and 508a being in a projectively invariant juxtaposition of a straight line.
[0026] In some examples, the example pose detector 206 determines that the person is in the intended pose when the difference between the cross ratio values calculated for different images associated with different cameras meets (e.g., is smaller than) a threshold, corresponding to a situation where the four points 502a, 504a, 506a, and 508a are not exactly on a straight line but the deviation is negligible. That is, in some examples, the four points 502a, 504a, 506a, and 508a are considered to be on a straight line when they are each within an acceptable threshold of the line.
[0027] Rather than comparing the cross ratio values of different images, in some examples, the posture detection unit 206 compares the cross ratio value of a particular image to a fixed value stored in the example memory 210. In some examples, the fixed value is defined based on anatomical dimensions between the four points 502a, 504a, 506a, and 508a. That is, in some examples, the cross ratio value of the four points 502a, 504a, 506a, and 508a may be calculated based on real-world measurements of the human subject 501 and defined as a fixed value. The example posture detection unit 206 may then compare the calculated cross ratio values based on the four points 502a, 504a, 506a, and 508a appearing in images captured by one or more cameras. If the difference between the cross ratio values based on the images is less than a threshold, the example posture detection unit 206 determines that the human subject is in the intended posture.
[0028] In some examples, the fixed value is a reference cross ratio defined based on anatomical dimensions between the four points 502a, 504a, 506a, and 508a. In some examples, the example multi-camera calibration control unit 110 in FIG. 2 calculates the reference cross ratio of the control subject and stores the reference cross ratio in the example local memory 210. In some examples, the example posture detection unit 206 fetches the reference cross ratio from the example memory 210 and compares the reference cross ratio with a cross ratio calculated for the subject in the image captured by the corresponding camera. In some examples, the example posture detection unit 206 detects a specific posture (e.g., T posture) based on a comparison between the reference cross ratio and the cross ratio calculated for the human subject. More specifically, the example posture detection unit 206 may determine that the human subject is in a specific posture when the calculated cross ratio matches the reference cross ratio. In some examples, the exemplary posture detection unit 206 determines that the person is in the intended posture despite the difference between the reference cross ratio and the cross ratio calculated for the image associated with the corresponding camera, as long as the difference meets (e.g., is smaller than) a threshold value, to accommodate a situation in which the human subject (e.g., human subject 501 in FIG. 5A) has anatomical dimensions that differ from the anatomical measurements of the control subject used to calculate the reference cross ratio.
[0029] An exemplary cross ratio of four one-dimensional points A(x), B(x), C(x), and D(x) along a line can be calculated according to the following formula:
number
number
number
number
number
[0030] In some examples, in response to determining that the calculated cross ratio of the image captured by the corresponding camera does not match the reference cross ratio, the example attitude detector 206 generates a second signal (e.g., a non-attitude event signal). In some examples, the example attitude detector transmits the first signal or the second signal to the example transform calculator 208 and / or the example memory 210.
[0031] 2 includes an exemplary transformation calculator 208 that calculates transformation parameters (e.g., translational and rotational parameters) of one or more corresponding cameras with respect to a human object appearing in an image captured by the one or more corresponding cameras. That is, the human object serves as a calibration pattern (when identified in a particular pose (e.g., T-pose)) to determine the transformation of each camera with respect to the human object. Once the transformation between the cameras and the human object is calculated, the exemplary transformation calculator 208 calculates transformation parameters for any two of the cameras.
[0032] FIG. 6 is an exemplary diagram of an exemplary multi-camera viewing system 600 showing transformations calculated by the exemplary multi-camera calibration control unit 110 of FIG. 2 . In some examples, the exemplary transformation calculation unit 208 identifies at least three image coordinates and / or coordinate vectors corresponding to anatomical points and / or anatomical connections of the human subject 608 that form a triangle to be used as a basis from which a solution to the P3P problem can be calculated to define corresponding camera transformation parameters at anatomical points of the human subject positioned to represent the triangle. In some examples, the exemplary transformation calculation unit 208 identifies at least four image coordinates and / or coordinate vectors corresponding to anatomical points and / or anatomical connections of the human subject 608. In some examples, the four points include three points that define a triangle and one other point that may be at any suitable location having a known spatial relationship to the first three points. In some examples, the fourth point is offset relative to the other three points. Thus, the four points collectively define a rectangle. In other examples, the fourth point is located along a line between two of the other points. Thus, the four points include three points located on a straight line (e.g., a line detected by the orientation detection unit 206) and one point offset from the straight line. In other words, in some examples, the four points define a triangle, and one point is located along a side of the triangle between two of the three vertices defined by the other three points. In some such examples, the fourth point (which does not define a vertex of the triangle) is located along a first line between the first and second points (which define two vertices of the triangle) at a position corresponding to the intersection of the first line with a second line that is perpendicular to the first line and passes through the offset set point (which defines the third vertex of the triangle). In other words, in some examples, the four points form a T-shape or an L-shape. In some examples, the exemplary transform calculation unit 208 does not identify the coordinates of the four points in the P4P problem until a signal (e.g., a posture event signal) is received from the posture detection unit 206 indicating that the human subject is in a particular posture associated with four anatomical points positioned in a projection-invariant configuration (e.g., positioned in a straight line).In some examples, the exemplary transformation calculator 208 uses three of the anatomical points in the projectively invariant configuration (e.g., a line) detected by the exemplary pose detector 206 as three of the points used to define the P4P problem. In some examples, the exemplary transformation calculator 208 uses two of the anatomical points in the projectively invariant configuration (e.g., a line) detected by the exemplary pose detector 206 as two of the points in the T-pose, a third point located between the two points (e.g., anatomical point 408 of the human subject 400 as shown in FIG. 4A ), and a fourth point corresponding to any other anatomical point on the human subject's body that is not on a line associated with the other three points and has a known spatial relationship to the other three points (e.g., based on a substantially fixed proportion of the human body). For example, in some examples, the exemplary transformation calculator 208 identifies anatomical point 408 located by the abdomen or pelvis of the human subject 400 shown in FIG. 4A as the fourth point in the triangle defining the T-shape. Once the transformation calculator 208 identifies the four sets of coordinates corresponding to the four points 402, 404, 406, 408 of the triangle and / or T-shape, the example transformation calculator 208 calculates the corresponding camera transformation parameters (e.g., translation and rotation parameters) for the human subject by finding a solution to a P4P problem based on the four sets of coordinates. The example transformation calculator may solve the P4P problem using any suitable solver and / or any suitable analytical technique currently known or later developed for solving such problems.
[0033] Because the triangle and / or T-shape defined by the three or four points identified by the exemplary transformation is a fixed shape based on the specific human anatomical ratio between human arm length and human height / torso (or other ratios of the human body if different anatomical points are selected), a solution to the P3P problem and / or P4P problem can be determined. In some examples, there may be one solution to a given P4P problem. In some examples, there may be multiple solutions to a given P3P problem. Thus, in some examples, points of multiple different triangles for defining different P3P problems may be identified and analyzed to converge to a single solution. In some examples, each of the different triangles used to solve a corresponding P3P problem uses the same two points associated with anatomical points located within a straight line detected by the posture detection unit 206, but the third point varies. For example, the third point in a first triangle may correspond to the abdomen or pelvis of the human subject, while the third point in a second triangle corresponds to the knee of the human subject, and the third point in a third triangle corresponds to the nose of the human subject.
[0034] In some examples, the calculated transformation is one or more 4x4 matrices. In some examples, the example transformation calculator 208 calculates a kinematic frame (e.g., a Darboux frame) corresponding to each respective camera 602, 604, 606 based on a solution of the P3P and / or P4P problem. In some examples, the calculated transformation parameters define the position and orientation of each camera relative to the human subject 608. More specifically, in some examples, the transformation parameters include transformation parameters that define the position of each camera 602, 604, 606 in the X, Y, and Z directions relative to the human subject 608. Furthermore, the calculated transformation parameters include rotation parameters that define the rotation angle of each camera 602, 604, 606 about the X, Y, and Z axes relative to the human subject 608. In some examples, the example transformation calculation unit 208 provides the calculated translation parameters and / or the calculated rotation parameters to the example memory 210 and / or to the example data interface 202 for transmission to an external device (e.g., a user display).
[0035] Once the example transformation calculator determines the transformation parameters between each camera 602, 604, 606 and the human subject 608, it is possible to calculate any transformation between different pairs of cameras 602, 604, 606. Thus, in some examples, in response to calculating a first transformation 610 ( FIG. 6 ) of the first camera 602 (with respect to the human subject 608) and a second transformation 612 of the second camera 604 (with respect to the human subject 608), the example transformation calculator 208 shown in FIG. 2 calculates a third transformation 614 between the first camera 602 and the second camera 604. In some examples, the example third transformation 614 includes determining a translation of the first camera 602 with respect to the second camera 604 and / or a rotation of the first camera 602 with respect to the second camera 604. In some examples, the example calculated translation parameters correspond to the position of the first camera 602 (e.g., distance with respect to the second camera 604). In some examples, the example calculated rotation parameters correspond to an orientation (e.g., a rotation angle) of the first camera 602 relative to the second camera 604. In some examples, the example transformation calculator 208 provides the transformation parameters (e.g., translation and rotation) of the first camera 602 relative to the second camera 604 to the example memory 210 for storage and / or to the example data interface 202 for transmission to one or more external devices (e.g., a mobile phone, a user display, and / or an image processing device).
[0036] 2 recalibrates the cameras 602, 604, 606 whenever the cameras 602, 604, 606 move out of position. In some examples, the example multi-camera calibration system 110 automatically detects movement of the cameras 602, 604, 606 and initiates recalibration in response to the detected movement. In some examples, the multi-camera calibration system 110 automatically recalibrates the cameras 602, 604, 606 in response to detecting that one of the cameras 602, 604, 606 has been moved. In some examples, the example multi-camera calibration system 110 periodically wakes up and performs recalibration. In some examples, the example multi-camera calibration system 110 calculates calibration parameters (e.g., transformations) for the cameras in the system on the fly (e.g., in substantially real time), regardless of whether any of the cameras have been moved.
[0037] 1A and / or 1B is illustrated in Figure 2, one or more of the elements, processes, and / or devices illustrated in Figure 2 may be combined, divided, rearranged, omitted, deleted, and / or implemented in any other manner. Furthermore, the example data interface 202, the example object identifier 204, the example pose detector 206, the example transform calculator 208, the example memory 210, the example machine learning controller 212, the example model trainer 214, the example model executor 216, and more generally the example multi-camera calibration controller 110 of Figures 1A and / or 1B may be implemented in hardware, software, firmware, and / or any combination of hardware, software, and / or firmware. Thus, for example, the example data interface 202, the example object identifier 204, the example pose detector 206, the example transform calculator 208, the example memory 210, the example machine learning controller 212, the example model trainer 214, the example model executor 216, and / or more generally the example multi-camera calibration controller 110 of FIGS. 1A and / or 1B may be implemented by one or more analog or digital circuits, logic circuits, programmable processors, programmable controllers, graphics processing units (GPUs), digital signal processors (DSPs), application specific integrated circuits (ASICs), programmable logic devices (PLDs), and / or field programmable logic devices (FPLDs). To cover purely software and / or firmware implementations, the example data interface 202, the example object identifier 204, the example pose detector 206, the example transform calculator 208, the example memory 210, the example machine learning controller 212, the example model trainer 214, and the example model executor 216 are hereby explicitly defined to include non-transitory computer-readable storage devices, or storage disks such as memory, digital versatile disks (DVDs), compact disks (CDs), Blu-ray disks, etc., that contain software and / or firmware.1A / 1B may include one or more elements, processes, and / or devices in addition to or instead of those shown in FIG. 2, and / or may include any or all of more than one of the illustrated elements, processes, and devices. As used herein, the phrase "in communication" and variations thereof encompasses direct communication and / or indirect communication through one or more intermediate components, and does not require direct physical (e.g., wired) communication and / or constant communication, but rather further includes periodic intervals, scheduled intervals, aperiodic intervals, and / or one-off selective communication.
[0038] Exemplary hardware logic, machine-readable instructions, hardware-implemented state machines, and / or any combination thereof for implementing the multi-camera calibration control unit 110 of FIGS. 1A, 1B, and / or 2 are shown in FIGS. 7-8. The machine-readable instructions may be one or more executable programs or portions of executable programs for execution by a computer processor and / or processor circuitry, such as the processor 912 shown in the exemplary processor platform 900 described below in connection with FIG. 9. The programs may be embodied in software stored on a non-transitory computer-readable storage medium, such as a CD-ROM, floppy disk, hard drive, DVD, Blu-ray disk, or memory associated with the processor 912, although the entire program and / or portions thereof may alternatively be executed by a device other than the processor 912 and / or embodied in firmware or dedicated hardware. Furthermore, although the exemplary programs are described with reference to the flowcharts shown in FIGS. 7-8, many other ways of implementing the multi-camera calibration control unit 110 may alternatively be used. For example, the order of execution of the blocks may be changed, and some of the described blocks may be modified, eliminated, or combined. Additionally or alternatively, any or all of the blocks may be implemented by one or more hardware circuits (e.g., discrete and / or integrated analog and / or digital circuits, FPGAs, ASICs, comparators, operational amplifiers (op-amps), logic circuits, etc.) configured to perform the corresponding operations without executing software or firmware. Processor circuits may be distributed across different network locations and / or local to one or more devices (e.g., a multi-core processor within a single device, multiple processors distributed across a server rack, etc.).
[0039] The machine-readable instructions described herein may be stored in one or more of a compressed, encrypted, fragmented, compiled, executable, packaged, etc. format. The machine-readable instructions described herein may be stored as data or data structures (e.g., portions of instructions, code, representations of code, etc.) that can be utilized to generate, manufacture, and / or produce machine-executable instructions. For example, the machine-readable instructions may be fragmented and stored on one or more storage devices and / or computing devices (e.g., servers) located in the same or different locations on a network or collection of networks (e.g., in a cloud, in an edge device, etc.). The machine-readable instructions may require one or more of installing, modifying, adapting, updating, combining, augmenting, configuring, combining, decompressing, unpackaging, distributing, reassigning, compiling, etc. to make them directly readable, interpretable, and / or executable by computing devices and / or other machines. For example, the machine-readable instructions may be stored in multiple portions that are individually compressed, encrypted, and stored on separate computing devices, and the portions, when decoded, decompressed, and combined, form a set of executable instructions that perform one or more functions that may together form a program as described herein.
[0040] In another example, machine-readable instructions may be stored in a state that can be read by a processor circuit, although this requires the addition of a library (e.g., a dynamic link library (DLL)), a software development kit (SDK), an application programming interface (API), etc., to execute the instructions on a particular computing device or other apparatus. In another example, machine-readable instructions may need to be configured (e.g., stored settings, entered data, recorded network addresses, etc.) before the machine-readable instructions and / or corresponding program can be executed in whole or in part. Thus, as used herein, machine-readable instructions can include machine-readable instructions and / or programs, regardless of the particular format or state of the machine-readable instructions when stored or at rest or in transport.
[0041] The machine-readable instructions described herein may be expressed in any past, present, or future command language, scripting language, programming language, etc. For example, the machine-readable instructions may be expressed using any of the following languages: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), and Structured Query Language (SQL).
[0042] 7-8 may be implemented using executable instructions (e.g., computer- and / or machine-readable instructions) stored on a non-transitory computer- and / or machine-readable medium, such as a hard disk drive, flash memory, read-only memory, compact disk, digital versatile disk, cache, random access memory, and / or any other storage device or storage disk that stores information for any period of time (e.g., for an extended period of time, permanently, for a short moment, during temporary buffering, and / or during caching of information). As used herein, the term "non-transitory computer-readable medium" is expressly defined to include any type of computer-readable storage device and / or storage disk, to exclude propagating signals, and to exclude transmission media.
[0043] The terms "including" and "comprising" (and all their forms and tenses) are used herein as broad terms. Thus, whenever a claim utilizes any form of "comprise" or "having" (e.g., comprises, includes, comprising, including, having, etc.) as a preamble or in any type of claim recitation, it is to be understood that additional elements, terms, etc. may be present without departing from the scope of the corresponding claim or recitation. As used herein, the term "at least," when used as a term of inflection, for example, in a claim preamble, is as broad as the terms "having" and "including." The term "and / or," when used in a form such as A, B, and / or C, represents any combination or subset of A, B, and C, e.g., (1) A only; (2) B only; (3) C only; (4) A and B; (5) A and C; (6) B and C; or (7) A, B, and C. When used herein in the context of describing a structure, component, item, object, and / or thing, the phrase "at least one of A and B" is intended to refer to an implementation that includes either (1) at least one A, (2) at least one B, or (3) at least one A and at least one B. Similarly, when used herein in the context of describing a structure, component, item, object, and / or thing, the phrase "at least one of A or B" is intended to refer to an implementation that includes either (1) at least one A, (2) at least one B, or (3) at least one A and at least one B. When used herein in the context of describing the execution of a process, instruction, action, activity, and / or step, the phrase "at least one of A and B" is intended to refer to an implementation that includes either (1) at least one A, (2) at least one B, or (3) at least one A and at least one B.Similarly, when used herein in the context of describing the execution of instructions, actions, activities, and / or steps, the phrase "at least one of A or B" is intended to refer to an implementation that includes any of: (1) at least one A; (2) at least one B; or (3) at least one A and at least one B.
[0044] As used herein, singular terms (e.g., "a", "an", "first", "second") do not exclude a plurality. When used herein, the term "a" or "an" entity refers to one or more entities. The terms "a" (or "an"), "one or more", and "at least one" can be used interchangeably herein. Furthermore, although individually listed, actions of a plurality of means, elements or methods may be performed by, for example, a single unit or processor. Furthermore, although individual features may be included in different examples or claims, these may be combinable, and inclusion in different examples or claims does not imply that a combination of features is not feasible and / or advantageous.
[0045] 7 is a flowchart representing example machine-readable instructions that may be executed to implement the example multi-camera calibration controller 110 of FIGS. 1A, 1B, and / or 2 for calibrating a multi-camera system. At block 702, the example object identifier 204 identifies a first set of coordinates defining first locations of anatomical points of a human subject 108 in a first image captured by a first camera (e.g., any one of cameras 102, 104, 106, 112, 114, 116, 602, 604, 606). For example, the example object identifier 204 may identify anatomical points corresponding to a first hand, a first shoulder, a second shoulder, and a second hand in the image of the human subject 108.
[0046] At block 704, the example object identifier 204 identifies a second set of coordinates defining second locations of anatomical points of the human subject 108 in a second image captured by a second camera (e.g., another one of cameras 102, 104, 106, 112, 114, 116, 602, 604, 606). In some examples, the anatomical points of the human subject 108 identified in the first image are the same as the anatomical points identified in the second image. However, because the two cameras view the human subject from different perspectives, the first and second coordinates are different.
[0047] At block 706, the example posture detector 206 detects when the human subject 108 is in a particular posture based on at least one of the first set of coordinates or the second set of coordinates. In some examples, the particular posture corresponds to when certain of the human subject's anatomical points are held in a straight line (e.g., the hands and shoulders when the human subject is standing in a T-pose). In some examples, the posture detector 206 detects that the human subject is in a particular posture associated with anatomical points being in a straight line by calculating a cross ratio of coordinates corresponding to anatomical points that are intended to be in a straight line and comparing the resulting value to an expected value.
[0048] At block 708, the example transformation calculator 208, in response to detecting the human subject in a particular pose, calculates a relative transformation between the first camera and the second camera based on a first subset of the first set of coordinates and a second subset of the second set of coordinates. More specifically, in some examples, the first and second subsets of coordinates correspond to anatomical points of the human subject that form a triangle of a fixed shape based on the anatomical proportions of the human body. In some examples, two points defining the vertices of the triangle correspond to two of the anatomical points identified by the pose detector 206 in block 706 as being within a line associated with the particular pose. The example program of FIG. 7 then ends.
[0049] FIG. 8 is another flowchart representing example machine-readable instructions that may be executed to implement the example multi-camera calibration control 110 of FIGS. 1A, 1B, and / or 2 for calibrating a multi-camera system.
[0050] In block 802, the example multi-camera calibration control unit 110 calculates a reference cross ratio for the control subject based on four anatomical points of the control subject when the control subject is in a particular pose (e.g., T pose) where the four points lie within a straight line.
[0051] At block 804, the example object identifier 204 of the example multi-camera calibration controller 110 identifies a set of coordinates that define the location of anatomical points of a human subject in an image captured by the camera. In some examples, the example object identifier 204 identifies the set or coordinates that implement one or more machine learning models.
[0052] In block 806, the exemplary pose detection unit 206 identifies four anatomical points on the human subject that should lie within a straight line when the human subject is in a particular pose. As an example, the particular pose may be a T-pose in which the human subject's arms are extended outward to the left and right, with the four anatomical points corresponding to each hand (or wrist) of the human subject and each shoulder of the human subject. In other examples, the four points may correspond to different anatomical points on the human subject. For example, the shoulder point may be replaced by the elbow point. Furthermore, although the T-pose has been mentioned throughout this specification as a particular example of a particular pose to be detected, other poses including four anatomical points that can be located within a line may additionally or alternatively be used. For example, the particular pose may correspond to the human subject extending only one arm out to the side, with the four anatomical points corresponding to the wrist, elbow, and shoulder of the extended arm and the other shoulder of the human subject.
[0053] At block 808, the example posture detector 206 calculates the cross ratio of the coordinates associated with the four anatomical points.
[0054] At block 810, the example pose detector 206 compares the calculated cross ratio with a reference cross ratio. At block 812, the example pose detector 206 determines whether the cross ratios match. In some examples, the cross ratios match when the difference between the cross ratios meets (is less than) a threshold. If the cross ratios do not match, the human subject may not be in the specific pose intended for camera calibration. Therefore, control returns to block 802 to repeat the process for an image captured at a later time. If the cross ratios match, the pose detector 206 confirms that the human subject is in the specific pose intended. Control then proceeds to block 814.
[0055] At block 814, the example transform calculator 208 identifies four anatomical points on the human subject, three of which define the vertices of a triangle. That is, the four anatomical points identified at block 806 are identified as being within a straight line, but the four anatomical points identified at block 814 are specifically identified as not being within the line. In some examples, two of the three points in the triangle correspond to two of the four anatomical points identified at block 804. More specifically, in some examples, the two anatomical points common to both the set of four points identified at block 814 and the set of four points identified at block 806 correspond to the two outermost points on the straight line of the four points identified at block 806. Although three of the four points identified at block 814 define the vertices of a triangle, the four points may be located in any suitable location. In some examples, the four points are located along a straight line associated with the four anatomical points identified at block 806. In some examples, the four points are aligned with offset anatomical points relative to a line so that the four points define a T-shape or an L-shape. At block 816, the example transformation calculator 208 calculates transformation parameters (e.g., translation and rotation parameters) of the camera relative to the human subject based on the four anatomical points. More specifically, the example transformation calculator 208 uses four anatomical points at known fixed positions (corresponding to the particular pose detected by cross-ratio matching at block 812) as input to the P4P problem. The solution of the P4P problem determines the transformation parameters.
[0056] At block 818, the example pose detector 206 determines whether there is another camera to analyze. If so, control returns to block 804 to repeat the process for the other camera. If there is not another camera to analyze, control proceeds to block 820.
[0057] At block 820, the example transformation calculator 208 calculates relative transformation parameters between different pairs of cameras. Thereafter, at block 822, the example transformation calculator 208 determines whether to recalibrate the cameras. In some examples, recalibration may be performed if the cameras have been moved and / or if there is a possibility that the cameras may be moved. If recalibration should occur, control returns to block 804 and the entire process repeats. Otherwise, the example program of FIG. 8 ends.
[0058] Figure 9 is a block diagram of an exemplary processor platform 900 configured to execute the instructions of Figures 7-8 to implement the multi-camera calibration control unit 110 of Figures 1A, 1B, and / or 2. The processor platform 900 may be, for example, a server, a personal computer, a workstation, a self-learning machine (e.g., a neural network), a mobile device (e.g., a mobile phone, a smartphone, a tablet such as an iPad®), a personal digital assistant (PDA), an Internet appliance, a gaming console, a personal video recorder, a headset, or other wearable device, or any other type of computing device.
[0059] The processor platform 900 of the illustrated example includes a processor 912. The processor 912 of the illustrated example is hardware. For example, the processor 912 can be implemented by one or more integrated circuits, logic circuits, microprocessors, GPUs, DSPs, or controllers from any desired family or manufacturer. A hardware processor can be a semiconductor-based (silicon-based) device. In this example, the processor implements the example object identifier 204, the example pose detector 206, and the example transform calculator 208.
[0060] The processor 912 of the illustrated example includes a local memory 913 (e.g., a cache). The processor 912 of the illustrated example communicates with a main memory, including a volatile memory 914 and a non-volatile memory 916, via a bus 918. The volatile memory 914 may be implemented with Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS®, Dynamic Random Access Memory (RDRAM®), and / or any other type of random access memory device. The non-volatile memory 916 may be implemented with flash memory and / or any other desired type of memory device. Access to the main memories 914, 916 is controlled by a memory controller.
[0061] The processor platform 900 of the illustrated example also includes an interface circuit 920. The interface circuit 920 may be implemented with any type of interface standard, such as an Ethernet interface, a Universal Serial Bus (USB), a Bluetooth® interface, a near field communication (NFC) interface, and / or a PCI Express interface.
[0062] In the depicted example, one or more input devices 922 are coupled to interface circuitry 920. The input devices 922 allow a user to input data and / or commands into processor 912. The input devices may be implemented, for example, by audio sensors, microphones, cameras (still or video), keyboards, buttons, mice, touchscreens, trackpads, trackballs, isopoints, and / or voice recognition systems.
[0063] One or more output devices 924 are also connected to the interface circuitry 920 of the illustrated example. The output device(s) 924 may be implemented by, for example, a display device (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display (LCD), a cathode ray tube display (CRT), an in-place switching (IPS) display, a touch screen, etc.), a tactile output device, a printer, and / or speakers. The interface circuitry 920 of the illustrated example therefore typically includes a graphics driver card, a graphics driver chip, and / or a graphics driver processor.
[0064] The interface circuitry 920 of the illustrated example also includes communications devices such as transmitters, receivers, transceivers, modems, home gateways, wireless access points, and / or network interfaces to facilitate data exchange with external devices (e.g., any type of computing device) over a network 926. Communications can be via, for example, an Ethernet connection, a digital subscriber line (DSL) connection, a telephone line connection, a coaxial cable system, a satellite system, a high- and low-bandwidth radio system, a cellular telephone system, etc.
[0065] The processor platform 900 of the depicted example also includes one or more mass storage devices 928 for storing software and / or data. Examples of such mass storage devices 928 include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, redundant array of independent disks (RAID) systems, and digital versatile disk (DVD) drives.
[0066] The machine-executable instructions 932 of Figures 7-8 may be stored in mass storage device 928, in volatile memory 914, in non-volatile memory 916, and / or on a removable non-transitory computer-readable storage medium such as a CD or DVD.
[0067] The block diagram shows an example software distribution platform 1005 for distributing software, such as the example computer-readable instructions 932 of FIGS. 7-8, to third parties, as shown in FIG. 10. The example software distribution platform 1005 may be implemented by any computer server, data facility, cloud service, etc., capable of storing and transmitting software to other computing devices. The third parties may be customers of the entity that owns and / or operates the software distribution platform. For example, the entity that owns and / or operates the software distribution platform may be a developer, seller, and / or licensor of software, such as the example computer-readable instructions 932 of FIG. 10. The third parties may be customers, users, retailers, OEMs, etc., that purchase and / or license the software for use and / or resale and / or sublicense. In the illustrated example, the software distribution platform 1005 includes one or more servers and one or more storage devices. The storage devices store computer-readable instructions 932, which may correspond to the example computer-readable instructions 932 of FIGS. 7-8, as described above. One or more servers of the example software distribution platform 1005 communicate with a network 1010, which may correspond to the Internet and / or any of the example networks 926 described above. In some examples, the one or more servers transmit the software to a requesting party in response to a request as part of a commercial transaction. Payment for the distribution, sale, and / or license of the software may be handled by one or more servers of the software distribution platform and / or through a third-party payment entity. The servers enable purchasers and / or licensors to download computer-readable instructions 932 from the software distribution platform 1005. For example, software that may correspond to the example computer-readable instructions 932 of FIGS. 7-8 may be downloaded to the example processor platform 900, which executes the computer-readable instructions 932, to implement the example multi-camera calibration control unit 110 of FIGS. 1A, 1B, and / or 2.In some examples, one or more servers of the software distribution platform 1005 periodically provide, transmit, and / or force updates to the software (e.g., the example computer-readable instructions 932 of FIGS. 7-8) to ensure that improvements, patches, updates, etc. are distributed and applied to the software at end-user devices.
[0068] By now it should be appreciated that exemplary methods, apparatus, and articles of manufacture have been disclosed that enable calibration of a multi-camera system based on the pose of a human subject. The disclosed methods, apparatus, and articles of manufacture improve the efficiency of using computing devices by, at least, eliminating the need to know the intrinsic parameters of a camera in order to determine the extrinsic parameters of the camera. The disclosed methods, apparatus, and articles of manufacture are therefore capable of one or more improvements in computer functionality.
[0069] Further examples and combinations thereof include:
[0070] Example 1 is a device comprising: an object identifier that identifies a first set of coordinates defining a first location of an anatomical point of the person in a first image captured by a first camera and identifies a second set of coordinates defining a second location of the anatomical point of the person in a second image captured by a second camera; a posture detector that detects when the person is in a particular posture based on at least one of the first coordinate set or the second coordinate set; a transformation calculation unit that, in response to detecting the person in the particular pose, calculates a relative transformation between the first camera and the second camera based on a first subset of the first set of coordinates and a second subset of the second set of coordinates; This includes devices having the following:
[0071] Example 2 includes the apparatus of example 1, wherein the particular pose includes a projectively invariant arrangement of positions among positions of the anatomical points of the person.
[0072] Example 3 includes the apparatus of example 2, wherein the projection-invariant configuration corresponds to four different ones of the anatomical points that are within a line tolerance threshold.
[0073] In Example 4, the attitude detection unit calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; calculating second cross ratios of the four different ones of the anatomical points based on corresponding ones of the second set of coordinates; determining that the four distinct ones of the anatomical points are in the projectivity-invariant configuration for the particular posture of the person when a difference between the first cross ratio and the second cross ratio is less than a difference threshold.
[0074] In Example 5, the attitude detection unit calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; 4. The apparatus of Example 3, wherein the apparatus determines that the four distinct ones of the anatomical points are in the projectively invariant configuration for the particular posture of the person when a difference between the first cross ratio and a reference cross ratio is less than a difference threshold.
[0075] Example 6 is a method for converting a conversion value into a conversion calculation value, calculating first transformation parameters defining a first translation and a first rotation of the first camera relative to the person; The device includes any of the devices described in Examples 3 to 5, which calculates second transformation parameters that define a second translation and a second rotation of the second camera relative to the person, and the relative transformation is calculated based on the first transformation parameters and the second transformation parameters.
[0076] Example 7 includes the device of Example 6, wherein the transformation calculation unit calculates the first transformation parameter based on a triangle defined by three distinct ones of the anatomical points, including a first point, a second point, and a third point, the first point and the second point corresponding in value to two of the four distinct anatomical points that are within a tolerance threshold of the line, and the third point being away from the line.
[0077] Example 8 includes the apparatus of example 7, wherein the transformation calculation unit calculates the first transformation parameter based on a fourth point spaced apart from the first, second, and third points.
[0078] Example 9 includes the apparatus of example 8, wherein the first, second, third, and fourth points are arranged in at least one of a T-shape or an L-shape.
[0079] Example 10 includes the device of Example 2, wherein the four different ones of the anatomical points include a first point, a second point, a third point, and a fourth point, the first point approximating a first hand of the person and the second point approximating a first shoulder of the person.
[0080] Example 11 includes the device of example 10, wherein the third point approximates a second hand of the person and the fourth point approximates a second shoulder of the person.
[0081] Example 12 includes the device of example 1, wherein the particular posture includes at least one of the person's first arm or second arm extending outward toward a side of the person.
[0082] Example 13 includes the apparatus of example 1, wherein the first camera is synchronized with the second camera such that the first and second images are captured substantially simultaneously.
[0083] Example 14 includes the apparatus of example 1, wherein the first set of coordinates are three-dimensional coordinates.
[0084] Example 15 is a non-transitory computer-readable medium comprising computer-readable instructions that, when executed, cause at least one processor to: identifying a first set of coordinates defining a first location of an anatomical point of the person in a first image captured by a first camera, and identifying a second set of coordinates defining a second location of the anatomical point of the person in a second image captured by a second camera; detecting when the person is in a particular posture based on at least one of the first set of coordinates or the second set of coordinates; and a non-transitory computer-readable medium that, in response to detecting the person in the particular pose, causes a relative transformation between the first camera and the second camera to be calculated based on a first subset of the first set of coordinates and a second subset of the second set of coordinates.
[0085] Example 16 includes the non-transitory computer-readable medium of Example 15, wherein the particular pose includes a projection-invariant arrangement of positions among positions of the anatomical points of the person.
[0086] Example 17 includes the non-transitory computer-readable medium of Example 16, wherein the projection-invariant constellation corresponds to four different ones of the anatomical points that are within a tolerance threshold of a straight line.
[0087] Example 18 is a method for implementing the computer-readable instructions in at least one processor: calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; calculating second cross ratios of the four different ones of the anatomical points based on corresponding ones of the second set of coordinates; determining that the four distinct anatomical points are in the projectively invariant configuration for the particular pose of the person when a difference between the first cross ratio and the second cross ratio is less than a difference threshold.
[0088] Example 19 is a block diagram of a computer-readable instruction sequence for a method of implementing the computer-readable instruction sequence. calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; Example 18. The computer-readable medium of Example 17, further comprising: determining that the four distinct anatomical points are in the projectively invariant configuration for the particular posture of the person when a difference between the first cross ratio and a reference cross ratio is less than a difference threshold.
[0089] Example 20 is a computer-readable instruction sequence for causing the at least one processor to perform at least: calculating first transformation parameters defining a first translation and a first rotation of the first camera relative to the person; and calculating second transformation parameters that define a second translation and a second rotation of the second camera relative to the person, the relative transformation being calculated based on the first transformation parameters and the second transformation parameters.
[0090] Example 21 is a block diagram of a computer-readable instruction sequence for a computer-readable medium, the computer-readable instructions including: Example 21. The computer-readable medium of Example 20, further comprising: calculating the first transformation parameter based on a triangle defined by three distinct anatomical points, including a first point, a second point, and a third point, the first point and the second point corresponding in value to two of the four distinct anatomical points that are within a tolerance threshold of the line, and the third point being away from the line.
[0091] Example 22 includes the apparatus of example 21, wherein the transformation calculation unit calculates the first transformation parameter based on a fourth point spaced apart from the first, second, and third points.
[0092] Example 23 includes the apparatus of example 22, wherein the first, second, third, and fourth points are arranged in at least one of a T-shape or an L-shape.
[0093] Example 24 includes the non-transitory computer-readable medium of Example 16, wherein the four different ones of the anatomical points include a first point, a second point, a third point, and a fourth point, the first point approximating a first hand of the person and the second point approximating a first shoulder of the person.
[0094] Example 25 includes the non-transitory computer-readable medium of example 24, wherein the third point approximates a second hand of the person and the fourth point approximates a second shoulder of the person.
[0095] Example 26 includes the non-transitory computer-readable medium of Example 15, wherein the particular posture includes at least one of the person's first arm or second arm extending outward toward a side of the person.
[0096] Example 27 includes the non-transitory computer-readable medium of example 15, wherein the first camera is synchronized with the second camera such that the first and second images are captured substantially simultaneously.
[0097] Example 28 includes the non-transitory computer-readable medium of example 15, wherein the first set of coordinates are three-dimensional coordinates.
[0098] Example 29 is a device, means for identifying a first set of coordinates defining a first location of an anatomical point of the person in a first image captured by a first camera, and for identifying a second set of coordinates defining a second location of the anatomical point of the person in a second image captured by a second camera; means for detecting when the person is in a particular posture based on at least one of the first set of coordinates or the second set of coordinates; means for calculating a relative transformation between the first camera and the second camera based on a first subset of the first set of coordinates and a second subset of the second set of coordinates in response to detecting the person in the particular pose; This includes devices having the following:
[0099] Example 30 includes the apparatus of example 29, wherein the particular pose includes a projectively invariant arrangement of positions among positions of the anatomical points of the person.
[0100] Example 31 includes the apparatus of example 30, wherein the projection-invariant configuration corresponds to four different anatomical points among the anatomical points that are within a line tolerance threshold.
[0101] Example 32 is a method for detecting a signal, the method comprising: calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; calculating second cross ratios of the four different ones of the anatomical points based on corresponding ones of the second set of coordinates; determining that the four distinct ones of the anatomical points are in the projectivity-invariant configuration for the particular posture of the person when a difference between the first cross ratio and the second cross ratio is less than a difference threshold.
[0102] Example 33 provides a method for calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; and means for determining that the four distinct ones of the anatomical points are in the projectively invariant configuration for the particular posture of the person when a difference between the first cross ratio and a reference cross ratio is less than a difference threshold.
[0103] Example 34 is a method for calculating a value of a parameter, the method comprising: calculating first transformation parameters defining a first translation and a first rotation of the first camera relative to the person; The apparatus of Example 31 includes: calculating second transformation parameters that define a second translation and a second rotation of the second camera relative to the person, the relative transformation being calculated based on the first transformation parameters and the second transformation parameters.
[0104] Example 35 includes the device of Example 34, wherein the calculating means calculates the first transformation parameter based on a triangle defined by three distinct ones of the anatomical points, including a first point, a second point, and a third point, the first point and the second point corresponding in value to two of the four distinct anatomical points that are within a tolerance threshold of the line, and the third point being away from the line.
[0105] Example 36 includes the apparatus of example 35, wherein the transformation calculation unit calculates the first transformation parameter based on a fourth point spaced apart from the first, second, and third points.
[0106] Example 37 includes the device of example 36, wherein the first, second, third, and fourth points are arranged in at least one of a T-shape or an L-shape.
[0107] Example 38 includes the device of Example 2, wherein the four different ones of the anatomical points include a first point, a 30th point, a third point, and a fourth point, the first point approximating a first hand of the person and the second point approximating a first shoulder of the person.
[0108] Example 39 includes the device of example 38, wherein the third point approximates a second hand of the person and the fourth point approximates a second shoulder of the person.
[0109] Example 40 is a method for determining whether the specific posture of the person is a first posture of the person. 1 at least one of the first arm or the second arm extending outward toward a side of the person, e.g. 29 This includes the devices described in
[0110] Example 41 is the 1 and a second image are captured substantially simultaneously, e.g., the first camera is synchronized with the second camera. 29 This includes the devices described in
[0111] Example 42 is the 1 The coordinate set is a three-dimensional coordinate, e.g. 29 This includes the devices described in
[0112] Example 43 is a method comprising: identifying a first set of coordinates defining a first location of an anatomical point of the person in a first image captured by a first camera, and identifying a second set of coordinates defining a second location of the anatomical point of the person in a second image captured by a second camera; detecting, by executing instructions with a processor, when the person is in a particular posture based on at least one of the first set of coordinates or the second set of coordinates; in response to detecting the person in the particular pose, calculating a relative transformation between the first camera and the second camera based on a first subset of the first set of coordinates and a second subset of the second set of coordinates; The method includes the steps of:
[0113] Example 44 includes the method of example 43, wherein the particular pose includes a projectively invariant arrangement of positions among positions of the anatomical points of the person.
[0114] Example 45 includes the method of example 44, wherein the projection-invariant constellation corresponds to four different ones of the anatomical points that are within a tolerance threshold of a straight line.
[0115] Example 46 is calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; calculating second cross ratios of the four different ones of the anatomical points based on corresponding ones of the second set of coordinates; and determining that the four distinct ones of the anatomical points are in the projectively invariant configuration for the particular posture of the person when a difference between the first cross ratio and the second cross ratio is less than a difference threshold.
[0116] Example 47 includes first calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; determining that the four distinct anatomical points are in the projectively invariant configuration of the particular posture of the person when a difference between the first cross ratio and a reference cross ratio is less than a difference threshold; The method of Example 45 further comprises:
[0117] Example 48 is calculating first transformation parameters defining a first translation and a first rotation of the first camera relative to the person; calculating second transformation parameters defining a second translation and a second rotation of the second camera relative to the person, the relative transformation being calculated based on the first transformation parameters and the second transformation parameters; The method of Example 45 further comprises:
[0118] Example 49 is Example 49 includes the method of Example 48, further comprising: calculating the first transformation parameter based on a triangle defined by three distinct ones of the anatomical points, including a first point, a second point, and a third point, the first point and the second point corresponding in value to two of the four distinct anatomical points that are within a tolerance threshold of the line, and the third point being away from the line.
[0119] Example 50 includes the method of example 49, wherein the transformation calculation unit calculates the first transformation parameter based on a fourth point spaced apart from the first, second, and third points.
[0120] Example 51 includes the method of example 50, wherein the first, second, third, and fourth points are arranged in at least one of a T-shape or an L-shape.
[0121] Example 52 includes the method of Example 44, wherein the four different ones of the anatomical points include a first point, a second point, a third point, and a fourth point, the first point approximating a first hand of the person and the second point approximating a first shoulder of the person.
[0122] Example 53 includes the method of example 52, wherein the third point approximates a second hand of the person and the fourth point approximates a second shoulder of the person.
[0123] Example 54 includes the method of example 43, wherein the particular posture includes at least one of the person's first arm or second arm extending outward toward a side of the person.
[0124] Example 55 includes the method of example 43, wherein the first camera is synchronized with the second camera such that the first and second images are captured substantially simultaneously.
[0125] Example 56 includes the method of example 43, wherein the first set of coordinates are three-dimensional coordinates.
[0126] Although certain exemplary methods, apparatus, and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the claims of this patent.
[0127] The following claims are now incorporated into the Detailed Description by reference, with each claim standing on its own as a separate embodiment of this disclosure. [Explanation of symbols]
[0128] 110 Multi-camera calibration control unit 204 Object Classifier 212 Machine Learning Control Unit 214 Model Trainer 216 Model Execution Department 206 Attitude detection unit 208 Transformation Calculation Unit 202 Data Interface 210 memory
Claims
1. A device, an object identifier that identifies a first set of coordinates defining a first location of an anatomical point of the person in a first image captured by a first camera and identifies a second set of coordinates defining a second location of the anatomical point of the person in a second image captured by a second camera; a posture detection unit that detects when the person is in a particular posture based on at least one of the first coordinate set or the second coordinate set; a transformation calculation unit that, in response to detecting the person in the particular pose, calculates a relative transformation between the first camera and the second camera based on a first subset of the first set of coordinates and a second subset of the second set of coordinates; and The particular pose includes a projectively invariant configuration, the projectively invariant configuration corresponding to four different ones of the anatomical points that are within a straight line tolerance threshold.
2. The attitude detection unit calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; calculating second cross ratios of the four different ones of the anatomical points based on corresponding ones of the second set of coordinates; 2. The apparatus of claim 1, wherein the apparatus determines that the four distinct ones of the anatomical points are in the projectively invariant configuration for the particular posture of the person when a difference between the first cross ratio and the second cross ratio is less than a difference threshold.
3. The attitude detection unit calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; 2. The apparatus of claim 1, wherein when a difference between the first cross ratio and a reference cross ratio is less than a difference threshold, it determines that the four distinct ones of the anatomical points are in the projectively invariant configuration for the particular posture of the person.
4. The conversion calculation unit calculating first transformation parameters defining a first translation and a first rotation of the first camera relative to the person; 4. The apparatus of claim 1, further comprising: calculating second transformation parameters defining a second translation and a second rotation of the second camera relative to the person; and wherein the relative transformation is calculated based on the first transformation parameters and the second transformation parameters.
5. 5. The device of claim 4, wherein the transformation calculation unit calculates the first transformation parameters based on a triangle defined by three distinct anatomical points, including a first point, a second point, and a third point, the first point and the second point corresponding to two of the four distinct anatomical points that are within a tolerance threshold of the line, and the third point is away from the line.
6. The apparatus of claim 5 , wherein the transformation calculation unit calculates the first transformation parameter based on a fourth point that is spaced apart from the first, second, and third points.
7. The device of claim 6 , wherein the first, second, third, and fourth points are arranged in at least one of a T-shape or an L-shape.
8. 2. The device of claim 1, wherein four different ones of the anatomical points include a first point, a second point, a third point, and a fourth point, the first point approximating a first hand of the person and the second point approximating a first shoulder of the person.
9. 9. The apparatus of claim 8, wherein the third point approximates a second hand of the person and the fourth point approximates a second shoulder of the person.
10. The device of any one of claims 1 to 9, wherein the particular posture includes at least one of the person's first arm or second arm extending outward toward a side of the person.
11. 11. Apparatus according to any preceding claim, wherein the first camera is synchronised with the second camera such that the first and second images are captured substantially simultaneously.
12. The apparatus of any one of claims 1 to 11, wherein the first set of coordinates are three-dimensional coordinates.
13. A computer-readable medium having computer-readable instructions configured to cause at least one processor to perform at least: identifying a first set of coordinates defining a first location of an anatomical point of the person in a first image captured by a first camera, and identifying a second set of coordinates defining a second location of the anatomical point of the person in a second image captured by a second camera; detecting when the person is in a particular posture based on at least one of the first set of coordinates or the second set of coordinates; responsive to detecting the person in the particular pose, calculating a relative transformation between the first camera and the second camera based on a first subset of the first set of coordinates and a second subset of the second set of coordinates; the particular pose includes a projectively invariant configuration, the projectively invariant configuration corresponding to four different anatomical points that are within a tolerance threshold of a straight line among the anatomical points; Computer-readable medium.
14. The computer readable instructions may cause the at least one processor to: calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; 14. The computer-readable medium of claim 13, wherein when a difference between the first cross ratio and a reference cross ratio is less than a difference threshold, it is determined that the four distinct ones of the anatomical points are in the projectivity-invariant configuration for the particular posture of the person.
15. The computer readable instructions may cause the at least one processor to at least: calculating first transformation parameters defining a first translation and a first rotation of the first camera relative to the person; 15. The computer-readable medium of claim 13 or 14, further comprising: calculating second transformation parameters defining a second translation and a second rotation of the second camera relative to the person, the relative transformation being calculated based on the first transformation parameters and the second transformation parameters.
16. The computer readable instructions may cause the at least one processor to:
16. The computer-readable medium of claim 15, wherein the first transformation parameters are calculated based on a triangle defined by three distinct anatomical points, including a first point, a second point, and a third point, the first point and the second point corresponding to two of the four distinct anatomical points that are within a tolerance threshold of the line, and the third point is away from the line.
17. The computer readable instructions may cause the at least one processor to:
17. The computer-readable medium of claim 16, further comprising: calculating the first transformation parameter based on a fourth point spaced apart from the first, second, and third points.
18. 1. A method comprising: identifying a first set of coordinates defining a first location of an anatomical point of the person in a first image captured by a first camera, and identifying a second set of coordinates defining a second location of the anatomical point of the person in a second image captured by a second camera; detecting, by executing instructions with a processor, when the person is in a particular posture based on at least one of the first set of coordinates or the second set of coordinates; in response to detecting the person in the particular pose, calculating a relative transformation between the first camera and the second camera based on a first subset of the first set of coordinates and a second subset of the second set of coordinates; and The method, wherein the particular pose includes a projectively invariant configuration, the projectively invariant configuration corresponding to four different ones of the anatomical points that are within a straight line tolerance threshold.
19. first calculating a first cross ratio of the four different ones of the anatomical points based on corresponding ones of the first set of coordinates; determining that the four distinct anatomical points are in the projectively invariant configuration of the particular posture of the person when a difference between the first cross ratio and a reference cross ratio is less than a difference threshold; 20. The method of claim 18 further comprising:
Citation Information
Patent Citations
Straight line pattern corresponding system in camera calibration
JP1988304791A
Process for surface sizing using a jet cooked dispersion comprising microfibrillated cellulose, starch and pigment and / or filler
US20200024805A1
Methods and apparatus to cluster and collect head-toe lines for automatic camera calibration
WO2020090188A1