Self-calibration of hybrid camera arrays

The method addresses calibration inaccuracies in hybrid camera arrays by using structure from motion algorithms and depth maps to achieve precise camera pose and depth measurement, enhancing multi-view image synthesis.

JP7764980B2Active Publication Date: 2025-11-06KONINKLIJKE PHILIPS NV
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2024562004
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-05-04
Filing Date
2023-04-23
Publication Date
2025-11-06
Estimated Expiration
2043-04-23

AI Technical Summary

Technical Problem

Existing methods for calibrating hybrid camera arrays, which include color and depth sensors, are inaccurate due to the lack of a practical calibration pattern and the inability of structure from motion algorithms to handle different modalities, leading to ambiguous scale factors and poor depth map alignment.

Method used

A method using structure from motion algorithms to generate an arbitrary-scale camera pose and point cloud, followed by scaling estimation with depth maps to achieve accurate calibration, involving error metric minimization and occlusion handling.

Benefits of technology

Provides precise camera pose calibration for hybrid camera arrays, enabling accurate depth measurement and improved multi-view image synthesis.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007764980000008
    Figure 0007764980000008
  • Figure 0007764980000009
    Figure 0007764980000009
  • Figure 0007764980000010
    Figure 0007764980000010
Patent Text Reader

Abstract

A method for calibrating a camera pose in a hybrid camera array with two or more color sensors and one or more depth sensors, the method comprising acquiring a depth map for each of the depth sensors, acquiring a set of images from the color sensors, generating an any-scale camera pose for the color sensors using the set of images, and generating an any-scale point cloud, and scaling of the any-scale camera pose and the any-scale point cloud are estimated using the one or more depth maps.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to the field of multi-view imaging, and in particular to the calibration of camera poses in hybrid camera arrays. [Background technology]

[0002] Three-dimensional scene reconstruction using multiple cameras can benefit from the use of one or more depth sensors as part of a color camera array. Among different depth sensing principles, indirect time-of-flight (iToF) is popular.

[0003] A hybrid depth-sensing device typically consists of a color camera, an infrared projection mechanism, and a depth sensor camera integrated into a single device. Microsoft's Azure Kinect™ is an example of such a device. Intrinsic parameters, such as focal length, principal point, and lens distortion, are typically provided by the manufacturer for both the color camera and the depth sensor. Extrinsic parameters describing the relative position and rotation between the color and depth cameras of a single device are also provided. The device is typically designed to minimize the baseline between the color and depth sensors within the device to minimize parallax error. This is important because depth maps are traditionally expressed in image sensor coordinates and vice versa.

[0004] 1 shows an exemplary hybrid camera array. The hybrid camera array includes three hybrid devices 102. Each hybrid device 102 includes a color sensor 104 and a depth sensor 106. The distance between the color sensor 104 and the depth sensor 106 of a hybrid device 102 (i.e., the baseline between these sensors) is indicated by arrow 108. The distance between the color sensors 104 of two different devices (i.e., the baseline between the color sensors) is indicated by arrow 110. Summary of the Invention [Problem to be solved by the invention]

[0005] When using a single hybrid device 102, factory calibration is sufficient for most applications. However, for applications where the scene needs to be captured from different directions, it is necessary to know the extrinsic parameters (rotation and translation) between multiple different hybrid devices 102. One approach is to use a calibration pattern. However, this requires a calibration pattern that is impractical in most cases.

[0006] Another approach is to use depth maps for calibration, however, due to the lack of spatial detail and the presence of noise in depth maps, such geometry-based approaches are unlikely to be very accurate.

[0007] Existing design from motion algorithms that use visual feature point detection can provide self-calibration without the need for a calibration pattern using only visual images from a color sensor. Over the years of research, these design from motion tools have become highly accurate and robust. However, design from motion algorithms alone cannot solve the calibration problem for hybrid camera arrays.

[0008] The first problem is that structure from motion relies on feature matching between views, and therefore requires the views to be the same modality (e.g., grayscale or color images). Image and depth map inputs to structure from motion algorithms do not work because features cannot be accurately matched across different modalities.

[0009] The second problem is that structure from motion only provides calibration results (i.e., camera rotation and translation in a common coordinate system) up to an ambiguous or unknown scale factor, in the same arbitrary dimensionless units as the camera position and the point cloud point positions. In many applications, this is not a problem because the scale parameter is arbitrary and knowledge of scale is not required for constructing 3D geometric models like meshes or texturing those models. However, in hybrid camera arrays that include depth sensors that provide depth maps in meters (e.g., mm), this is a problem because, for example, you cannot use the depth at a given pixel from each depth camera and warp it to one of the cameras (color or depth) of another device. This requires knowing the camera / device translation in meters.

[0010] Therefore, there is a need for a self-calibration method that is accurate when used with a hybrid camera array.

[0011] Afzal Hassan et al: "RGB-D Multi-view System Calibration for Full 3D Scene Reconstruction", 18th International Conference on Pattern Recognition, DOI: 10.1109 / ICPR.2014.425 discloses combining bundle adjustment and iterative nearest neighbor algorithms to estimate camera pose parameters in multi-view systems.

[0012] Yoon Byung-Hyun et al: "Targetless Multiple Camera-LiDAR Extrinsic Calibration using Object Pose Estimation", 2021 IEEE International Conference on Robotics and Automation (ICRA), DOI: 10.1109 / ICRA48506.2021.9560936 discloses calibration of extrinsic parameters between multiple cameras and LIDAR sensors using object pose estimation. [Means for solving the problem]

[0013] The invention is defined by the claims.

[0014] According to an example according to an aspect of the present invention, there is provided a method for calibrating a camera pose in a hybrid camera array, the hybrid camera array having two or more color sensors and one or more depth sensors, the method comprising: acquiring a depth map for each of one or more depth sensors and a set of images from the color sensor; using the set of images to generate an up-to-scale camera pose and an any-scale point cloud for the color sensor; and using the one or more depth maps to estimate scaling of the up-to-scale camera pose and any-scale point cloud.

[0015] Scaling is used to calibrate the camera pose at the arbitrary scale. In other words, scaling is used to obtain a camera pose that can provide the actual distance between the color and / or depth sensors. The camera pose can then be used, for example, for multi-view image / video coding and / or for synthesis of new views.

[0016] The arbitrary-scale camera pose provides the rotation between the color sensors and also the translation between the color sensors, subject to an unknown scale factor. The arbitrary-scale point cloud provides a measure of depth from a set of images, subject to an unknown scale factor. The depth map provides a metric measure of depth, i.e., depth values ​​calibrated to real-world units (e.g., mm). Thus, it is recognized that the arbitrary-scale point cloud can be compared to the depth map to thereby estimate the scaling of the arbitrary-scale point cloud (and therefore the arbitrary-scale camera pose).

[0017] Generating the arbitrary-scale camera pose and arbitrary-scale point cloud can include inputting a set of images into a construct from motion algorithm, which is configured to output an arbitrary-scale camera pose for the color sensor and, optionally, an arbitrary-scale point cloud.

[0018] Structure from motion algorithms, or SfM algorithms, are commonly used to extract three-dimensional structure from two-dimensional images. For example, the motion of a color sensor can be estimated at any scale based on images taken during the motion. Similarly, images of a scene from various color sensors at different positions can also be used instead of using the motion of a single color sensor.

[0019] A construct from motion algorithm can be configured to output both an arbitrary-scale camera pose and an arbitrary-scale point cloud. However, if the construct from motion algorithm does not output an arbitrary-scale point cloud, or if the output arbitrary-scale point cloud is undesirable, a new (or additional) arbitrary-scale point cloud can be obtained from the arbitrary-scale camera pose, for example, using feature detection and triangulation.

[0020] Estimating scaling of the arbitrary-scale camera pose and the arbitrary-scale point cloud can include obtaining a plurality of proposed scales, calculating a proposed camera pose and a proposed point cloud by applying the proposed scale to the arbitrary-scale camera pose and the arbitrary-scale point cloud, respectively, comparing the proposed point cloud to one or more depth maps, and determining one or more error metrics based on the comparison. The scaling can be estimated based on the proposed scale with the smallest one or more error metrics.

[0021] This can be viewed as a "For Loop" performed over the various proposed scales, with at least one error metric determined for each proposed scale.

[0022] It will be appreciated that there are various ways to obtain multiple suggested scales. In a first example, the suggested scales can be randomly assigned. In a second preferred example, an informed guess can be made for one or more of the suggested scales, and other values ​​can be derived from close to the informed guess (e.g., ±50%). Similarly, the "next" suggested scale in a loop used can be based on the error metric of the previous suggested scale.

[0023] In a first comparison method, comparing the proposed point cloud with one or more depth maps may include projecting the proposed point cloud into the view of one or more depth sensors using the proposed camera pose, and evaluating multiple depth-based errors between depth values ​​in the one or more depth maps and corresponding depth values ​​resulting from projecting the proposed point cloud, and determining one of the error metrics is based on the multiple depth-based errors.

[0024] Therefore, the scaling can be found by minimizing the error between the predicted depth associated with the projected points and the measured depth map, which has been shown to significantly increase the accuracy and robustness of the estimated scaling.

[0025] In a second comparison method, comparing the proposed point clouds may include projecting the proposed point cloud onto views of two or more color sensors using the proposed camera pose, thereby generating projected points; identifying depth map values ​​of one or more depth maps that correspond to feature points of the proposed point cloud; projecting the depth map values ​​onto views of the two or more color sensors using the proposed camera pose; and evaluating, at an imaging plane of each of the two or more color sensors, a plurality of pixel-based errors between pixel coordinates resulting from projecting the depth map values ​​and pixel coordinates resulting from projecting the proposed point cloud; and determining one of the error metrics based on the plurality of pixel-based errors.

[0026] Using pixel-based error instead of depth-based error is typically more intuitive for users. Additionally, pixel-based error somewhat mimics the process of synthesizing new views in multi-view imaging. This can provide improved results in synthesizing new views because the error is already minimized between the existing views of the color sensor.

[0027] Estimating the arbitrary-scale camera pose and scaling of the arbitrary-scale point cloud may further include, for each proposed scale, determining whether one or more projected points in the projected point cloud are occluded in the view of any one of the depth sensor and / or color sensor, and based on the particular projected point being occluded, giving a lower weight to the error corresponding to the particular projected point in one or more error metrics.

[0028] The point cloud may contain feature points on the back or sides of the object that are not visible from the view of the depth sensor, and thus the weighting of occluded points is preferably lowered in the error sum.

[0029] For the first comparison method, determining whether one or more projected points in the projected point cloud are occluded may include determining whether a depth-based error between a depth of one or more of the projected points and a depth of the depth map exceeds a depth-based occlusion threshold.

[0030] For the second comparison method, determining whether one or more projected points in the projected point cloud are occluded may include determining whether a pixel-based error between pixel coordinates of the projected points and pixel coordinates of the depth map points exceeds a pixel-based occlusion threshold.

[0031] Determining whether one or more projected points in the projected point cloud are occluded may include identifying projected points within a local neighborhood of one or more central projected points, and determining, for each local neighborhood, whether a depth-based error and / or a pixel-based error exceeds a neighborhood threshold, where the neighborhood threshold optionally depends on the depth of the identified projected points within the local neighborhood.

[0032] Determining whether one or more projected points in the projected point cloud are occluded may include, for each projected point, identifying a pixel color for each view of one or more depth sensors and / or two or more color sensors based on the set of images, and comparing the pixel colors from each view.

[0033] Determining whether the projected point is occluded may include determining whether the difference between the pixel colors exceeds a pixel color threshold.

[0034] The method may include generating a second point cloud using the one or more depth maps, projecting the second point cloud onto a view of one or more depth sensors using the proposed camera pose for each proposed scale, and evaluating a second plurality of depth-based errors between depth values ​​of the one or more depth maps and corresponding depth values ​​obtained from projecting the second point cloud, wherein determining one of the error metrics is based on the second plurality of depth-based errors.

[0035] Each error metric may be weighted based on one or more of the number of points in the proposed point cloud, the number of points in the second proposed point cloud, and the relative importance between the proposed point cloud and the second proposed point cloud.

[0036] The present invention also provides a computer program comprising computer program code which, when executed on a computing device having a processing system, causes the processing system to perform all of the steps of the method described above.

[0037] The present invention also provides a system for calibrating camera poses in a hybrid camera array, the system comprising: a hybrid camera array including two or more color sensors and one or more depth sensors; and a processor configured to acquire a depth map for each of the one or more depth sensors and a set of images from the color sensor, use the set of images to generate an arbitrary-scale camera pose for the color sensor and an arbitrary-scale point cloud, and use the one or more depth maps to estimate scaling for the arbitrary-scale camera pose and the arbitrary-scale point cloud.

[0038] It will be appreciated that the processor of the system may be further configured to perform any of the method steps described above.

[0039] These and other aspects of the invention will be apparent from and elucidated with reference to the embodiments described hereinafter. [Brief explanation of the drawings]

[0040] For a better understanding of the present invention and to show more clearly how the same may be carried into effect, reference will now be made, by way of example only, to the accompanying drawings in which: [Figure 1] FIG. 1 illustrates an exemplary hybrid camera array. [Figure 2] FIG. 1 illustrates a self-calibration process for a hybrid camera array. [Figure 3] FIG. 1 illustrates a scale estimation process using a single depth sensor and a first scale parameter. [Figure 4] FIG. 10 illustrates a scale estimation process using a single depth sensor and a second scale parameter. [Figure 5] FIG. 1 illustrates a scale estimation process using two depth sensors. [Figure 6] FIG. 1 illustrates a scale estimation process using two depth sensors. [Figure 7] 10 illustrates the scale estimation process when dealing with occluded points. [Figure 8] FIG. 10 illustrates occlusion handling in the scale estimation process using local neighborhoods. [Figure 9] FIG. 10 illustrates occlusion handling in the scale estimation process using pixel color. [Figure 10] FIG. 1 illustrates a scale estimation process using pixel-based errors. DETAILED DESCRIPTION OF THE INVENTION

[0041] The present invention will now be described with reference to the drawings.

[0042] It should be understood that the detailed description and specific examples, while indicating exemplary embodiments of the devices, systems, and methods, are intended for purposes of illustration only and are not intended to limit the scope of the invention. These and other features, aspects, and advantages of the devices, systems, and methods of the present invention will become better understood from the following description, appended claims, and accompanying drawings. It should be understood that the drawings are merely schematic and are not drawn to scale. It should also be understood that the same reference numerals are used throughout the drawings to indicate the same or similar parts.

[0043] The present invention provides a method for calibrating camera pose in a hybrid camera array with two or more color sensors and one or more depth sensors. The method includes acquiring a depth map for each of the depth sensors, acquiring a set of images from the color sensors, and using the set of images to generate an arbitrary-scale camera pose and an arbitrary-scale point cloud for the color sensors. Scaling of the arbitrary-scale camera pose and the arbitrary-scale point cloud is then estimated using the one or more depth maps.

[0044] Existing structure from motion software can output a point cloud as well as an expected camera pose (i.e., orientation and translation). Known packages with structure from motion software include AliceVision and Colmap. This point cloud is typically used internally to solve the structure from motion problem in a process called bundle adjustment. Points in the point cloud are well matched to detectable features in the image.

[0045] This point cloud, also known as arbitrary-scale, offers an unexpected alternative to depth warping and image differencing approaches. Points in this point cloud consist of well-matchable and distinctive features with sufficient local image texture variation. Furthermore, because points in the point cloud match with matching features across multiple views, there are few occluded features as they exist due to texture combinations at different depth levels.

[0046] Based on this realization, it is proposed to solve the hybrid camera self-calibration problem by first running a structure from motion algorithm on the color image, and then, as a second step, using the point cloud output by the structure from motion algorithm to determine the unknown scale parameters by comparing it with information from the depth map.

[0047] For a given scale, the point cloud can first be transformed into a metric point cloud. The metric point cloud is then warped to all views, including a depth map. The observed depth values ​​from the depth map are then compared to the depth values ​​of the projected points in view coordinates. Thus, the error metric is a geometric metric (instead of, e.g., an image-based metric).

[0048] Figure 2 shows the self-calibration process for a hybrid camera array. A series of color images 202 are acquired from the color sensor, and a depth map 204 is acquired from the depth sensor. A structure 206 from the motion algorithm is used to estimate the scaled camera pose 208 of the color sensor, and a rotation matrix [R, ..., R N ] and an arbitrary scale translation vector [st1, ..., st N ] can be used to warp the image to other views. However, to warp an image to a view corresponding to a different sensor, a descaled metric translation vector [t1, ..., tN ] is required.

[0049] The structure from the motion algorithm 206 can also be calculated from an arbitrary scale point cloud [sx1, ..., sx M ] 210. This data can be passed to a scale estimation algorithm 212, which uses the metric depth map 204 to determine the arbitrary-scale camera pose and arbitrary-scale point cloud scaling 214 via a scale parameter s.

[0050] The exemplary scale estimation algorithm 212 has the following steps: 1. [R1, ..., R N ], [st1, ..., st N ], [sx1, ..., sx M ]. 2. Enter the approximate average distance between the color sensors. 3. Based on the input average distance between the depth sensors, the scale parameter s init Calculate an initial estimate of 4. s = s at width Δs start = f start s init From s = s stop = f stop s init For a proposed scale s up to , perform the following steps: 4.1. Using the proposed scale s, [x1, ..., x M ]Solve it. 4.2. Using the proposed scale s, [t1, ..., t N ]Solve it. 4.3. [t1, ..., t N ] to the depth sensor [1, ..., N], and M ] is projected. 4.4. Evaluate the following error metrics;

number

[0051] where:

number

number

number

[0052] The minimum value of E(s) is the minimum threshold value E min In this case, E(s) <E min If so, the threshold minimum can be updated to a lower value.

[0053] 3 and 4 illustrate scale estimation processes using a single depth sensor 306 and first and second scale parameters, respectively. Projected points 302 correspond to the point cloud projected onto the depth sensor 306 using the corresponding scale parameters. Metric depth map 304 is the depth map observed by the depth sensor 306.

[0054] 3, the first scale parameter is selected too small, resulting in a large error 308 between the predicted depth of the projected point 302 and the observed depth at the corresponding location on the depth map 304. The corresponding location on the depth map is the point on the depth map where the vector formed by the projected point 302 and the origin of the depth sensor 306 intersects.

[0055] In FIG. 4, the second scale parameter selected, corresponding to a larger scaling, exhibits a smaller error 402 and therefore provides a more accurate estimate of the metric translation vector.

[0056] 5 and 6 illustrate a scale estimation process using two depth sensors 506a and 506b. In this case, a plurality of first errors 508a between the projected point 502 and the depth map 504 from the first depth sensor 506a are calculated, and a plurality of second errors 508b between the projected point 502 and the depth map 504 from the second depth sensor 506a are calculated. To determine a total error corresponding to each proposed scale s, the plurality of first errors 508a and the plurality of second errors 508b are summed. Thus, now the second depth sensor 506b contributes to the total error via its own observed depth map.

[0057] In Figure 5, the scale parameters selected are too small, resulting in large errors 508a and 508b. In Figure 6, the scale parameters selected exhibit a smaller error (only error 602 is visible), thus providing a more accurate estimate of the metric translation vector.

[0058] Figure 7 illustrates the scale estimation process when dealing with occluded points 710. Because the point cloud is sparse, by definition, projected points 702 from the back surface of the object will erroneously contribute to the error calculation. This can be seen in Figure 7, where projected point 710 corresponds to the back surface of the object represented by depth map 704. This can result in an erroneous error 708 between the point in the depth map visible to the depth sensor 706 and the projected point 710 contributing to the total error metric.

[0059] The solution can assume that objects have some minimum dimension and eliminate errors above a given occlusion threshold t (e.g., t = 0.5 m). The corresponding error metric is therefore:

number

number

[0060] Other approaches to handling occlusions can also be used to suppress the error, such as using local occlusion inference between points in the projected views.

[0061] 8 illustrates occlusion handling in the scale estimation process using a local neighborhood 810. The local neighborhood 810 is defined around a given projection point 808 selected from a plurality of projection points 802. The local neighborhood 810 of a given projection point 808 can be defined as all other points that are closer (measured in image space) than a given distance expressed in pixels (e.g., 10 pixels).

[0062] If the projected point 808 has a depth greater than the neighborhood threshold compared to all neighboring points, it can be concluded that the projected point 808 corresponds to a point on the object that is not visible to the depth sensor 806 (e.g., the back surface of the object). As a result, the error between the projected point 808 and the observed depth map 804 does not accumulate in the total error.

[0063] Alternatively or additionally, pixel colors can be compared between views to determine if, for a given view, a projected point is occluded.

[0064] 9 illustrates occlusion processing in scale estimation processing using pixel colors. For a given projection point in a given view, if the observed color differs significantly from all color values ​​observed (for the same projection point) in other views, the projected point is likely occluded, and therefore its contribution to the error sum can be reduced or completely eliminated. For example, a weight can be added to the error sum based on a comparison of pixel colors.

[0065] 9 shows two projected points 902a and 902b. Projected point 902a can be seen by all three depth sensors 906a, 906b, and 906c, and therefore the corresponding pixel color (e.g., obtained by warping a color image from the color sensor to the depth sensor) should be similar from all three views. However, projected point 902b can be seen by depth sensors 906a and 906b but not by depth sensor 906c. Thus, depth sensor 906c "sees" the pixel color of projected point 902b as the color of point 908. Therefore, if the colors of points 902b and 908 do not match, the error of point 902b from depth sensor 906c can be ignored in calculating the total error.

[0066] The visual feature points (i.e., points in the point cloud) output by structure from motion algorithms typically correspond to image regions that exhibit spatial texture variation (e.g., corners). Thus, image regions without much texture or texture variation do not generate feature points and are therefore not used in the scale estimation process.

[0067] To solve this problem, the observed depth map can be used as a source of additional point cloud data. The depth maps of all views can be transformed into a common world-space coordinate system using the proposed scale and camera pose. This gives a depth-map-based point cloud whose size is the number of views multiplied by the number of depth-map pixels per view. For a given proposed scale, two types of point clouds are currently available: a scaled version of the point cloud provided by the structure from motion algorithm, and a point cloud derived from the depth map.

[0068] Since both the origin and the number of points in each type of point cloud differ significantly, it would be advantageous to normalize each type by the number of points and weight their contributions differently:

number

[0069] where α (between 0 and 1) is a weight of the relative importance of the points provided by the structure from motion. A particular value of α can be selected by one skilled in the art (e.g., by experimentation and / or trial and error).

[0070] Returning to FIG. 1, the baseline 108 between the color sensor 104 and the depth sensor 106 in the hybrid device 102 may be known (eg, from the factory).

[0071] The baseline length 110 between the color sensors can be estimated. In practice, the average baseline length 110 between all color sensors can be estimated. The baseline length 110 can then be used to calculate a rough estimate of the scale parameter. A range of suggested scales around the rough estimate of the scale parameter can then be used in the scale estimation process as described above.

[0072] In one example, a rough estimate of the scale parameter can be calculated by dividing the estimated baseline length 110 by the average of the shortest distances between camera poses. If the color sensors are somewhat uniformly spaced in 3D space (i.e., the distance between the color sensors does not vary significantly), the rough estimate of the scale parameter can be within 10% of the actual scale parameter. Therefore, under the assumption of uniformly spaced cameras, the range of suggested scales can be within 10% of the rough estimate. However, it will be appreciated that in practice, such assumptions may not always be correct. Therefore, it has been found that a sensible range of suggested scales can be within 50% of the rough estimate. Of course, the exact range may depend on the placement of the color sensors, available processing resources, and the preferences of the skilled artisan.

[0073] A range of suggested scales includes multiple suggested scales.

[0074] In one example, a rough estimate can be a guess (e.g., random or based on previous scales), however this requires more iterations / a wider range of proposed scales and may potentially deviate towards the wrong scale.

[0075] As will be appreciated, the aforementioned error metric is based on depth-based error contributions. In other words, the error metric is based on the difference in depth values. However, many users may be more familiar with pixel-based errors (e.g., distance in pixels). Therefore, a second solution is proposed, in which pixel-based errors are used to determine the error metric. The sum of residual pixel-based errors (after the optimal scale is estimated) is useful as a quality metric regardless of whether a depth-based or pixel-based error metric is used to guide the selection of the optimal scale.

[0076] FIG. 10 illustrates the scale estimation process using pixel-based error 1008. Feature point 1002 is a feature point of the proposed scale point cloud. Point 1004 is a point estimated from the depth map by identifying a depth value 1003 corresponding to the line of sight to feature point 1002. This is called a depth map point. It is "back-projected" into 3D space from the imaging plane 1010a of the first color sensor 1006a using the known depth value 1003 from the depth map (here, "back-projected" refers to the process of inferring a 3D point from a depth value in a 2D depth map). As can be seen, depth map point 1004 corresponds to feature point 1002 as seen by the first color sensor 1006a.

[0077] Using the proposed camera poses of the color sensors 1006a, 1006b and 1006c, the depth map points 1004 and feature points 1002 are reprojected onto the imaging planes 1010b and 1010c corresponding to the second color sensor 1006b and the third color sensor 1006c, respectively.

[0078] Then, for both imaging planes 1010b and 1010c, a pixel-based error 1008 can be found between the reprojection of the feature points 1002 and the depth map points 1004. Similar to the depth-based approach, the pixel-based error can be used to determine an error metric.

[0079] Thus, instead of comparing the projected predicted depth value to the observed depth map value, this alternative pixel-based error approach projects the depth map point 1004 into various views, where its pixel location is compared to the direct projection of the corresponding point cloud point. In this approach, the total error contribution to the error metric is equal to the number of feature points in the point cloud multiplied by the number of cameras minus one.

[0080] Because this error metric involves reprojecting points between views, it resembles the view synthesis process typically used during rendering of new views in multi-view imaging. Therefore, minimizing the pixel-based error metric should lead to a minimization in the visible error in the new view, and can therefore provide a more accurate rendering of the new view.

[0081] Of course, one can also use both approaches to obtain different error metrics, which involve different dimensions (i.e., pixel distance and depth difference), and therefore combining them may not be desirable unless they are weighted appropriately.

[0082] Similar to depth-based scale estimation, a second point cloud can also be calculated from one or more depth maps and used to obtain more depth information for the scene. The second point cloud can be used to determine a second depth-based error metric. Note that pixel-based error metrics cannot be directly used with a second point cloud calculated solely from depth map data. For points in such a point cloud, no information exists regarding point correspondence between views. Therefore, point-by-point comparisons cannot be performed. In contrast, correspondence information is inherent in point clouds generated by structure from motion algorithms. This is because such point clouds are a single "true" 3D point cloud in 3D coordinates that are subsequently projected onto each sensor's 2D imaging plane.

[0083] It will be appreciated that more than one error metric may be determined for a hybrid sensor array setup, and the number and type of error metrics used may depend on available processing resources and / or user preferences.

[0084] It will be appreciated that any of the above occlusion handling approaches can be used in a pixel-based scale estimation process with minimal modification, for example, the occlusion threshold can be based on distance in pixels instead of distance in metric measurements.

[0085] Another solution to the self-calibration problem that has been considered is to first run a structure from motion algorithm on the color image and then use the depth map to find the correct scale parameters. In theory, this can be achieved by warping the color image from one device to another based on the depth map and obtaining an image difference measure (e.g., mean squared error). Minimizing this difference over all possible warps from one camera to the other can yield the best-fit scale parameters.

[0086] However, this alternative approach may be more sensitive to noise in the depth map, especially for larger baselines. Furthermore, in some cases, the use of an image-based difference measure may introduce bias in scale estimation caused by changes in surface reflectance that result in image color changes. Furthermore, this solution may be relatively computationally intensive, as every pixel in every image needs to be warped to every other image in each iteration of the search for the optimal scale. This alternative solution is likely to be most useful when the baseline is relatively small and the depth map is expected to have a low level of noise.

[0087] As described above, a point cloud can be obtained using a structure from motion algorithm. In some cases, the structure from motion algorithm outputs a point cloud. However, in some cases, it may be preferable to determine a new arbitrary-scale point cloud for scale estimation (optionally using the arbitrary-scale camera pose output by the structure from motion algorithm). For example, feature detection and matching can be applied to the set of images, and triangulation can be used based on the arbitrary-scale camera pose to obtain a new arbitrary-scale point cloud. The new arbitrary-scale point cloud can be used alone to estimate scaling, or it can be used to augment the point cloud from the structure from motion algorithm.

[0088] Those skilled in the art can easily develop a processor to perform any of the methods described herein. Accordingly, each step in the flowchart may represent a respective operation performed by a processor, and may be performed by a respective module of the processor.

[0089] As described above, the system utilizes a processor to process data. The processor may be implemented in a variety of ways using software and / or hardware to perform the various functions required. The processor typically uses one or more microprocessors that are programmed using software (e.g., microcode) to perform the required functions. The processor may also be implemented as a combination of dedicated hardware to perform some functions and one or more programmed microprocessors and associated circuitry to perform other functions.

[0090] Examples of circuitry that may be used in various embodiments of the present disclosure include, but are not limited to, conventional microprocessors, application specific integrated circuits (ASICs), and field programmable gate arrays (FPGAs).

[0091] In various implementations, the processor may be associated with one or more storage media, e.g., volatile and non-volatile computer memory such as RAM, PROM, EPROM, and EEPROM. The storage media may be encoded with one or more programs that, when executed on one or more processors and / or controllers, perform the required functions. The various storage media may be mounted within the processor or controller, or may be transportable such that one or more programs stored on the storage media can be read by the processor.

[0092] Variations to the disclosed embodiments can be understood and effected by those skilled in the art in practicing the claimed invention, from a study of the drawings, the disclosure, and the appended claims. In the claims, the word "comprise" does not exclude other elements or steps, and the indefinite article "a" or "an" does not exclude a plurality.

[0093] The functions implemented by a processor may be implemented by a single processor or by multiple separate processing units, which may be considered to constitute a "processor". Such processing units may be remote from each other and may communicate with each other via wired or wireless means.

[0094] The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.

[0095] The computer program may be stored / distributed on a suitable medium, such as an optical storage medium or a solid-state medium supplied together with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless telecommunications systems.

[0096] When the term "adapted for" is used in the claims or the description, it is meant to be equivalent to the term "configured to." When the term "apparatus" is used in the claims or the description, it is intended to be equivalent to the term "system," and vice versa.

[0097] Any reference signs in the claims should not be construed as limiting the scope.

Claims

1. 1. A computer program product, when executed by a computer, that causes the computer to perform a method for calibrating camera poses in a hybrid camera array, the hybrid camera array having two or more color sensors and one or more depth sensors, the method comprising: obtaining a depth map from each of the one or more depth sensors and a set of images from the color sensor; generating an arbitrary-scale camera pose and an arbitrary-scale point cloud for the color sensor using the set of images; using one or more of the depth maps to estimate the arbitrary-scale camera pose and scaling of the arbitrary-scale point cloud; estimating the scaling of the arbitrary-scale camera pose and the arbitrary-scale point cloud; obtaining a plurality of proposed scales; for each proposed scale, calculating a proposed camera pose and proposed point cloud by applying the proposed scale to each of the arbitrary-scale camera poses and the arbitrary-scale point clouds, comparing the proposed point clouds to one or more of the depth maps, and determining one or more error metrics based on the comparison; estimating the scaling based on the proposed scale for which one or more of the error metrics is smallest; 1. A computer program comprising:

2. 2. The computer program product of claim 1, wherein generating the arbitrary-scale camera pose and the arbitrary-scale point cloud comprises inputting the set of images into a construct from a motion algorithm, the construct from a motion algorithm outputting the arbitrary-scale camera pose of the color sensor and, optionally, the arbitrary-scale point cloud.

3. comparing the proposed point cloud with one or more of the depth maps; projecting the proposed point cloud onto the view of one or more of the depth sensors using the proposed camera pose; evaluating a plurality of depth-based errors between depth values ​​in one or more of the depth maps and corresponding depth values ​​resulting from projecting the proposed point cloud; 3. The computer program product of claim 1, further comprising: a determining step of determining one of the error metrics based on the plurality of depth-based errors.

4. said comparison of the proposed point clouds comprising: projecting the proposed point cloud onto the views of the two or more color sensors using the proposed camera pose, thereby generating projected points; identifying depth map values ​​in the one or more depth maps that correspond to feature points of the proposed point cloud; projecting the depth map values ​​onto the views of the two or more color sensors using the proposed camera pose; evaluating a plurality of pixel-based errors in an imaging plane of each of the two or more color sensors between pixel coordinates resulting from the projection of the depth map values ​​and pixel coordinates resulting from the projection of the proposed point cloud; and wherein determining one of the error metrics is based on the plurality of pixel-based errors.

5. The step of estimating the scaling of the arbitrary-scale camera pose and the arbitrary-scale point cloud further comprises, for each proposed scale: determining whether one or more projection points in the projected point cloud are occluded in the view of either the depth sensor and / or the color sensor; based on the particular projection point being occluded, assigning a lower weight to the error corresponding to the particular projection point in the one or more error metrics; 3. A computer program according to claim 1 or 2, comprising:

6. The step of estimating the arbitrary-scale camera pose and the scaling of the arbitrary-scale point cloud further comprises, for each proposed scale: determining whether one or more projection points in the projected point cloud are occluded in the view of either the depth sensor and / or the color sensor; based on the particular projection point being occluded, assigning a lower weight to the error corresponding to the particular projection point in the one or more error metrics; 4. The computer program product of claim 3, wherein determining whether one or more projection points in the projected point cloud are occluded comprises determining whether the depth-based error between a depth of one or more of the projection points and a depth of the depth map exceeds a depth-based occlusion threshold.

7. The step of estimating the arbitrary-scale camera pose and the scaling of the arbitrary-scale point cloud further comprises, for each proposed scale: determining whether one or more projection points in the projected point cloud are occluded in the view of either the depth sensor and / or the color sensor; based on the particular projection point being occluded, assigning a lower weight to the error corresponding to the particular projection point in the one or more error metrics; and wherein the step of determining whether one or more projected points in the projected point cloud are occluded comprises: The computer program of claim 4 , further comprising determining whether a pixel-based error between a pixel coordinate of the projection point and a pixel coordinate of a depth map point exceeds a pixel-based occlusion threshold.

8. determining whether one or more projection points in the projected point cloud are occluded; Identifying projection points within a local neighborhood of one or more central projection points; determining, for each local neighborhood, whether the depth-based error exceeds a neighborhood threshold; 7. The computer program product of claim 6, wherein the neighborhood threshold depends on a depth of the identified projection point in the local neighborhood.

9. The method of claim 8, wherein the step of determining whether one or more projection points in the projected point cloud are occluded comprises: Identifying projection points within a local neighborhood of one or more central projection points; determining, for each local neighborhood, whether the pixel-based error exceeds a neighborhood threshold; 8. The computer program product of claim 7, wherein the neighborhood threshold depends on a depth of the identified projection point in the local neighborhood.

10. determining whether one or more projection points in the projected point cloud are occluded; for each projection point, determining pixel colors of each view of the one or more depth sensors and / or the two or more color sensors based on the set of images; For each projection point, comparing the pixel colors from each view; 6. The computer program of claim 5, comprising:

11. generating a second point cloud using the one or more depth maps; For each proposed scale, projecting the second point cloud onto the view of the one or more depth sensors using the proposed camera pose; evaluating a second plurality of depth-based errors between depth values ​​of the one or more depth maps and corresponding depth values ​​resulting from projecting the second point cloud; 3. The computer program product of claim 1, further comprising: a step of: determining one of the error metrics based on the second plurality of depth-based errors.

12. 1. A system for calibrating camera pose in a hybrid camera array, the system comprising: a hybrid camera array including two or more color sensors and one or more depth sensors; and a processor; The processor: obtaining a depth map from each of the one or more depth sensors and a set of images from the color sensor; generating an arbitrary-scale camera pose and an arbitrary-scale point cloud for the color sensor using the set of images; estimating the arbitrary-scale camera pose and the scaling of the arbitrary-scale point cloud using one or more of the depth maps; The processor is configured to: obtaining a plurality of proposed scales, and for each proposed scale, calculating a proposed camera pose and a proposed point cloud by applying the proposed scale to each of the arbitrary-scale camera pose and the arbitrary-scale point cloud; comparing the proposed point cloud to one or more of the depth maps; and determining one or more error metrics based on the comparison, thereby estimating the scaling of the arbitrary-scale camera pose and the arbitrary-scale point cloud; The system is configured to estimate the scaling based on the proposed scale for which one or more of the error metrics is smallest.

13. the processor:

13. The system of claim 12, configured to generate the arbitrary-scale camera pose and the arbitrary-scale point cloud by inputting the set of images into a construct from motion algorithm, the construct from motion algorithm configured to output the arbitrary-scale camera pose of the color sensor and optionally the arbitrary-scale point cloud.

Citation Information

Patent Citations

  • Image processing system, image processing method, and image processing program

    JP2021189822A

  • Three-dimensional sensor with oppositely arranged channels

    JP2022505166A