Aligning multi-view scans

The automatic alignment of multiple scans using key point feature matching and error threshold comparison addresses the inefficiencies of conventional methods, enhancing alignment accuracy and efficiency.

DE102015009894B4Active Publication Date: 2025-07-10ADOBE INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
DE102015009894
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2014-11-21
Filing Date
2015-07-29
Publication Date
2025-07-10
Estimated Expiration
2035-07-29

AI Technical Summary

Technical Problem

Aligning multiple scans of an object using conventional techniques is tedious, time-consuming, and computationally costly, often requiring user input and leading to improper alignments.

Method used

An automatic alignment technique that establishes partial alignments through key point feature matching, calculates errors, and compares them to a threshold to accept or reject potential alignments, ultimately generating a global alignment.

Benefits of technology

This method improves alignment accuracy and efficiency by automating the process, reducing computational resources and user intervention, and ensuring the best possible alignment is achieved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method implemented by a computing device (102; 702), the method comprising: Producing a partial alignment for a plurality of scans of an object (204) obtained from different perspectives, comprising: detecting keypoint features within the plurality of samples; Assigning error values to potential matches between keypoint features of the plurality of samples; Matching two or more keypoint features using the assigned error values to generate the partial alignment; Calculating an error associated with combining the partial alignment with one or more additional keypoint features; and Determining whether to accept or reject the partial alignment based on a comparison of the calculated error with a threshold established to set potential alignments.
Need to check novelty before this filing date? Find Prior Art

Description

BackgroundAligning multiple scans originating from a collection of cameras with unknown pose can be a tedious process. The direct or gross force approach to solving this problem is, for example, to manually measure and calibrate the position and orientation of the cameras prior to capturing. Such an approach is expensive, since the manual process must be repeated whenever a camera has to be moved. An alternative approach is to prompt the system user to manually align the camera scans in a computer. This approach is also time consuming and cumbersome because it requires considerable knowledge. Namely, the subject must be able to rotate aligned 3D objects digitally represented on the computer and must be familiar with 3D interfaces.WO 2013 / 009416 A2 describes a method for matching images of a stereoscopic image pair on the basis of keypoint matches. The quality of the keypoint matches is evaluated to determine whether the quality exceeds a keypoint quality threshold. If the quality of the keypoint matches exceeds the threshold, the vertical disparity between the images of the stereoscopic image pair may be evaluated based on vertical disparity vectors between the keypoint matches.DE 10 2013 021 178 A1 describes a computer-implemented method which can comprise receiving a first image from a first device which is configured to generate the first image based on a first part of an object. The method may further include receiving a second image from a second device configured to generate the second image based on a second portion of the object. The method may also include extracting multiple features from the first and second images in a multi-perspective calibration space, the multiple features sharing a global coordinate system.DE 11 2010 005 008 T5 describes a system for determining the runtime of camera recalibration, which typically relates to extrinsic camera values based on historical statistics of runtime alignment results of objects detected in the scene, which are based on the adaptation of observed and expected image data of trained object models. The image processing system collects statistics of partial alignment results and stores intermediate results used as an indicator of current system accuracy.SummaryThe present summary introduces a selection of concepts in a simplified form that are discussed in more detail below in the detailed description. The Summary is not intended to identify the essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.Alignment techniques are described that automatically align multiple scans of an object. In one implementation, partial alignment of the samples is established that includes matching at key point features between the samples. An error between the partial alignment and additional key point features may be calculated prior to determining whether a global alignment for the samples captures the partial alignment. Determining whether the partial alignment in the global alignment is accepted or rejected is based on a comparison of the calculated error with a threshold established for setting (prune) potential alignments.Brief Description of the DrawingsThe detailed description is made with reference to the accompanying drawings. In the drawing, the leftmost digit of a reference sign / the leftmost digits of a reference sign identify the figure in which the reference sign occurs for the first time. The use of the same reference numerals in different places throughout the specification and drawing may refer to similar or identical objects. Entities illustrated in the figures may represent one or more entities, and thus reference to one or more forms of the entities may be equivalently made in the discussion.FIG. 1 is an illustration of an environment in an exemplary implementation operable to employ techniques described herein.FIG. 2 is an illustration of an environment in an exemplary implementation operable to capture samples.FIG. 3 is a diagram of a scenario in an exemplary implementation where an alignment module performs alignment techniques for automatically aligning multiple scans.FIG. 4 illustrates an exemplary alignment using an alignment module for employing techniques described herein.FIG. 5 is a flow diagram illustrating a procedure in which an alignment module determines whether partial alignment is accepted or rejected for a plurality of scans.FIG. 6 is a flow diagram illustrating a procedure in which an alignment module selects and processes one of a plurality of potential matches between a pair of samples.FIG. 7 shows an example system including an example device representative of one or more computing systems and / or devices that may implement the various techniques described herein.Detailed DescriptionOverviewAligning multiple scans may be difficult because scans may be aligned in different ways. Computing different sampling combinations can be time consuming and computationally costly. For example, conventional alignment techniques may require input from a user, causing delays in alignment and the occurrence of potentially improper sampling combinations. Furthermore, calculating an alignment between samples using conventional techniques requires computational resources without resulting in the only best alignment for the user. Accordingly, it may be difficult and frustrating for some users to employ traditional alignment techniques to align multiple scans.Alignment techniques are described that automatically align multiple scans of an object. In one implementation, partial alignment of the samples is established that includes matching at key point features between the samples. An error between the partial alignment and additional key point features may be calculated prior to determining whether a global alignment for the samples captures the partial alignment. Determining whether the partial alignment in the global alignment is accepted or rejected is based on a comparison of the calculated error with a threshold established for setting (prune) potential alignments.Partial alignment can be made in a variety of ways. For example, partial alignment may be established by merging and / or combining two or more samples. In one implementation, partial alignment is established by aligning key point features aligned between a pair of scans. Key point features may include points extracted from each sample (e.g., clouds of points) that together define a feature of the object.Partial alignment may be representative of a path of matched keypoint features between samples. Multiple alignment paths may be present depending on the number of matched keypoint features between scans. Thus, multiple partial alignments can be established for a pair of samples, each partial alignment representing a path of matched keypoint features. In an alternative example, partial alignment between samples may be established between three or more samples. Here, a path of matched keypoint features between the three or more samples may represent partial alignment. Whether there is a partial alignment of samples between a pair of samples or between three or more samples, the partial alignment is processed to determine whether the partial alignment is accepted or rejected in a global alignment.Global alignment may represent a best possible alignment for the samples and captures assumed partial alignments. For example, as described in more detail below, a partial alignment between the scans may be established and analyzed before determining whether the partial alignment is incorporated into the global alignment. Accordingly, multiple partial alignments may be included for the samples before one is accepted or rejected for inclusion in the global alignment. In one implementation, automatically aligning multiple samples of an object in the global alignment generates a 3D model representation of the object.In the following discussion, an example environment that may employ the techniques described herein will first be described. Example procedures that may be performed in the example environment as well as other environments will then be described. As a result, the performance of the example procedures is not limited to the example environment, and the example environment is not limited to the performance of the example procedures.Example EnvironmentFIG. 1 is an illustration of an environment 100, in an exemplary implementation, operable to employ techniques described herein. The illustrated environment 100 includes a computing device 102 and an image capture device 104, which may be configured in a variety of ways. Additionally, the computing device 102 may be communicatively coupled to one or more service providers 106 via a network 108. Generally, this means that the service provider 106 is configured to provide various resources (e.g., content, services, web applications, and so forth) over the network 108, such as the Internet, to provide a "cloud-based" computing environment and web-based functionality to clients.Computing device 102 may be configured as, for example, a desktop computer, laptop computer, mobile device (e.g., assuming a hand configuration such as a tablet or cellular phone), and so forth. As such, the computing device 102 may range from full resource devices with considerable memory and processor resources (e.g., personal computers, game consoles) to a low resource device with limited memory and / or processing resources (e.g., mobile devices). Moreover, although a single computing device 102 is shown, the computing device 102 may be representative of a plurality of different devices for performing operations. Additional details and examples relating to various configurations of computing devices, systems, and components suitable for implementing aspects of the techniques described herein are discussed below with reference to FIG. 7.The image capturing device 104 as shown in FIG. 1 may also be configured in a variety of ways. Illustrated examples of such configurations include a video camera, a scanner, a copier, a camera, a mobile device (e.g., a smartphone), and the like. Although the image capture device 104 is shown as being separate from the computing device 102, the image capture device 104 may also be configured as part of the computing device 102, such as for a tablet configuration, laptop, cellular phone, or other implementation of a computing device with the built-in image capture device 104. The image capture device 104 is shown to include image sensors 110 configured to produce samples. In general, the image capture device 102 may capture and provide samples 112 via the image sensors 110, which may be stored in and processed by the computing device 102 in various ways. The samples 112 may be obtained in various ways, such as by downloading samples from a web page, by accessing samples from any form of computer readable medium, and so forth.The samples 112 may be obtained from an image processing module 113. Although the image processing module 113 is shown as being implemented in a separate device, it should be readily appreciated that other implementations are also contemplated in which the image sensors 110 and the image processing module 113 are implemented on the same device. Furthermore, although a representation is given as being provided by computing device 102 in a destop configuration, a variety of other configurations are also included, such as range-based via network 108 as a service provided by a service provider, as a web application, or as other network-accessible functionality. Additionally or alternatively, the image processing module 113 may also be implemented in a 3D scanning system.Regardless of where implementation is given, the image processing module 113 is representative of functionality operable to manage samples 112 in various ways. The functionality provided by the image processing module 113 for managing samples may include, among other things, functionality for organizing, accessing, browsing, and viewing samples, as well as performing various types of image processing operations on selected samples. By way of example, and not limitation, the image processing module 113 may include or otherwise employ an alignment module 114.The alignment module 114 is representative of functionality for performing alignment techniques for automatically aligning multiple scans of an object. For example, the alignment module 114 may be configured to establish partial alignments that include matches in key point features between the samples 112. In at least some implementations, the alignment module 114 may perform a backtracking ("trace") to accommodate multiple partial alignments before selecting one for inclusion in a global alignment. For example, the alignment module 114 may process each of the plurality of partial alignments regardless of one of the partial alignments being associated with an error that indicates a strong correspondence in the matched keypoint features. Thus, the alignment module 114 may be configured to analyze the plurality of partial alignments based on the error regardless of whether a best alignment option is identified due.The alignment module 114 may be further configured to generate an alignment graph with input samples as vertices (e.g., nodes) and alignments between samples as edges. Thus, the generated alignment graph can be used to enable the establishment of partial alignment. Computing errors associated with the established partial alignment may also be enabled by the alignment graph by associating the computed error with each edge. Furthermore, each edge or partial alignment may be associated with a number of interior elements (inliers), for example points that are approximated to a line.In some implementations, the alignment module 114 may be configured to perform alignment techniques for automatically aligning multiple scans of an object in association with an application (not shown). By way of example, and not limitation, the application may be configured as an image processing application, an example of which is Adobe Photoshop ®. Other content and other image processing applications are also included. Here, an input received from the application may determine at least some of the alignment techniques performed by the alignment module 114. For example, the user may select a type of desired analysis from a menu included in the application. In some cases, the user selection may determine the frequency of tracking (backtracking), such as the number of partial alignments with processing before selecting one for inclusion in a global alignment. In this way, a user may receive a global alignment corresponding to his waiting readiness while the processing by the alignment module 114 is ended. Additionally or alternatively, a user may select a partial alignment via the application, thereby terminating additional processing by the alignment module 114.By way of example, and not limitation, the alignment module 114 may include or otherwise use an initial alignment module 116 and an alignment optimizer module 118. The initial alignment module 116 is representative of functionality to generate an alignment of multiple samples based on key point extraction and feature matching. At an initial alignment, at least some of the samples are identified as having multiple possible alignments or paths among the matched keypoint features. Any suitable extraction and / or feature correspondence techniques may be used to extract key points and determine a feature correspondence between samples. In some implementations, the initial alignment module 116 may be configured to calculate an error calculated for a minimum distance between the extracted key points and / or features. In a specific example, the error may be calculated using an iterative closest point (ICP) algorithm, although any other suitable pair-based technique may also be used. Although conventional techniques use this error to determine the alignment between the two samples as described herein, the error may also be used to select partial alignment for further analysis.For example, the orientation optimizer module 118 may be configured to choose between two or more possible partial orientations produced during the initial orientation. The error indicating the minimum difference between the extracted key points and / or features may be used to select the partial alignment associated with the lowest minimum difference for processing.In some implementations, the orientation optimizer module 118 may be configured to determine whether the selected partial orientation is accepted or rejected. For example, the orientation optimizer module 118 may be configured to process the partial orientation using a variety of different operations. Examples of such operations may include comparing key point features of the partial alignment with key point features of one or more additional samples, calculating an error to indicate how the respective key point features are matched in a combination, and / or comparing the calculated error to a threshold established to set alignment options, such as the partial alignment.A partial alignment may be rejected, for example, in response to a comparison of the calculated error to the threshold. In this example, the orientation optimizer module 118 may be configured to select another partial orientation and repeat at least some of the foregoing operations.Alternatively, the partial alignment may be assumed in response to the comparison of the calculated error to the threshold. In one implementation, the assumed partial alignments are incorporated into a global alignment as described herein. In some implementations, the orientation optimizer module 118 may be further configured to process an additional partial orientation prior to inserting the assumed partial orientation into the global orientation. In this implementation, multiple partial alignments between samples are processed even if one of the partial alignments has less error between the extracted key points and / or features of the samples. The acceptance and rejection of partial alignments is explained in more detail with reference to FIGS. 3 and 4 as well as elsewhere.As further shown in FIG. 1, the service provider 106 may be configured to provide various resources 112 to clients via the network 108. In some scenarios, a user may establish accounts that are used to access corresponding resources from a provider. The provider may authenticate credentials (credential) of a user (e.g., user name and password) before enabling access to an account and corresponding resources 120. Other resources 120 may be freely accessible (e.g., without authentication or account-based access). Resources 120 may include any suitable combination of services and content typically provided by one or more providers over a network. Some examples of services include, but are not limited to, a photo edit service, a web development and management service, a collaboration service, a social network service, a messaging service, an advertising service, and so forth. Content may include various combinations of text, video, displays, audio, multimedia streams, animations, images, scans, web documents, web pages, applications, device applications, and the like.For example, the service provider 106 is shown in FIG. 1 as representing an image processing device 122 that implements various processing, including the scan alignment techniques described herein. The image processing service 122 represents network-accessible functionality that can be made accessible to clients remotely via a network 108 to implement aspects of the techniques described herein. The functionality discussed in connection with the alignment module 114 may be provided in whole or in part via the image processing service 122. Thus, the image processing service 122 may be configured to provide cloud-based access operable to automatically align samples as well as other operations described above and below.FIG. 2 is an illustration of an environment 200 in an exemplary implementation operable to capture samples. The illustrated environment 200 includes a plurality of image capture devices 202 and an object 204, which may be configured in a variety of ways. Moreover, the image capture devices 202 may be communicatively coupled to the computing device 102 and / or one or more service providers 106 via the network 108.By way of example, and not limitation, each of the plurality of image capture devices 202 captures a different sample of the object 204 and may be configured in a similar manner as the image capture device 104 of FIG. 1. The various samples represent the object 204 from different perspectives. The captured samples may be automatically aligned using the techniques described herein (e.g., via the alignment module 114), regardless of whether the plurality of image capture devices 202 are uncalibrated. Therefore, automatic alignment of scans (where no input of a user is necessary after the scanning is taken) is enabled regardless of whether a user moves one or more of the plurality of image capturing devices to a new position for scanning. In this case, the uncalibrated image recording devices do not have any knowledge about the depth of another device. However, it is contemplated that in other scenarios, the plurality of image capture devices 202 are calibrated. A specific example of an image capturing device 202 includes an RGB-D camera (red, green, blue plus depth).In this exemplary implementation, the acquisition of six samples from different perspectives is presented substantially simultaneously. Alternatively, samples from different perspectives may be taken at different times using a single image capture device. In either approach, each sample represents an image of the object with key points that may be aligned with key points of another sample. Naturally, larger or smaller numbers of samples may also be taken in different scenarios.FIG. 3 shows, generally at 300, a diagram of a scenario in an example implementation where the alignment module 114 of FIG. 1 employs alignment techniques for automatically aligning multiple scans. As shown in FIG. 3, the example implementation includes key point extraction 302, feature matching 304, initial alignment processing 306, backtracking (backtracking) 308, and alignment optimization 310.For example, samples from different perspectives may be obtained from multiple uncalibrated image capture devices and from an input to the alignment module 114. For example, the alignment module 114 may receive the samples captured by the image capture devices 202 as shown in FIG. 2.Features may be identified as matching by extracting key points from each sample and grouping corresponding key points. This means that key points can be extracted from each sample using suitable extraction techniques (302). Extracted key points may be associated with a descriptor and stored in a point cloud library. In a specific example, key point extraction involves uniform sampling (sampling) and filtering using Saliz and / or anisotropy. In some examples, the alignment module 114 may be configured to generate a Signature of Histograms of Orientations (SHOT) descriptor for providing geometry and color information for each keypoint.The feature correspondence between a pair of samples is determined using the extracted key points (304). For example, the alignment module 114 may include nearest neighbor fast-feed algorithms to align features between samples. The determination of which of the samples initially match may be based on the position of the sample. This means that samples that are adjacent may be initially merged, although of course any of the samples may also be merged.Initial alignment of the samples may be performed by the initial alignment module 116 ( 306). In a specific example, the initial alignment may be determined by grouping matched features and applying any suitable interactive algorithm, such as Random Access Consensus (RANSAC). As a result, partial alignments are established between scans.At the initial alignment, at least some of the samples are identified as having multiple possible alignments or paths among the matched keypoint features. For example, a pair of samples may be aligned along multiple paths, each path representing a different partial alignment. In some implementations, the initial alignment module 116 may be configured to calculate and / or assign an error value to indicate a minimum difference between the keypoint features of the pair of samples. Therefore, each partial alignment may be associated with an error value to indicate a probability that the key point features are matched. Furthermore, each partial alignment can be linked to a number of inner elements (inliers), for example points which are adapted to a line by approximation.However, sometimes a pair of samples that are well aligned based on the assigned error value introduces an imprecision (ambiguity) when aligned with other samples. For this reason, various potential matches between the features of the samples may be included. Accordingly, in at least some implementations, the alignment module 114 may perform backtracking (backtracking) to capture multiple partial alignments prior to selecting one for capture to a global alignment (308). For example, the alignment module 114 may process each of the plurality of partial alignments regardless of the fact that one of the partial alignments is associated with an error that indicates a strong correspondence to the matched keypoint features.Additionally or alternatively, the tracking (backtracking) may include merging a pair of samples along one of the partial alignments and processing the merged pair of samples (and the respective matched keypoint features) relative to another sample or pair of samples. Processing the merged pair of samples relative to another sample or pair of samples may include various operations performed by the orientation optimizer module 118, some examples of which are described below. In a specific example, an error is calculated that represents how well the partial alignment of the merged samples is aligned with an additional sample. Here, the error is calculated for the merged samples in total rather than for the individual samples being merged. In some implementations, the calculated error for the merged samples is compared to a threshold to determine whether merging of the samples along the partial alignment is accepted or rejected. Rejecting merging of the samples along the partial alignment may cause "tracking" (backtracking) to select another partial alignment usable for merging the pair of samples.Moreover, the backtracking (backtracking) may include establishing one or more new partial alignments in response to rejecting the previously established partial alignments. After selecting and processing multiple partial alignments to merge a pair of samples, it may be determined that the processed partial alignments are rejected for inclusion in the global alignment (as described below in connection with the alignment optimizer module 118). In this case, at least one new partial alignment may be established based on an error indicating a minimum difference between the extracted key points and / or features of the pair of samples for which partial alignment is desired. In some cases, "tracking" (backtracking) may continue until partial alignment is assumed.Orientation optimization may be performed by the orientation module 114 to generate the global orientation ( 310). In particular, the alignment optimization includes utilizing the alignment optimizer module 118 to determine whether a partial alignment is accepted or rejected. A variety of different operations may be employed to accept or reject partial alignment. Examples of these operations may include, but are not limited to, selecting a partial alignment for further analysis, analyzing the selected partial alignment relative to a further sample or pair of samples, calculating an error value associated with a combination of the partial alignment with additional key point features of the other sample(s), and / or comparing the calculated error to a threshold established to set partial alignments.In some implementations, selecting a partial alignment for further analysis may be based on the assigned error to indicate a minimum difference between the keypoint features of the pair of samples. If multiple partial alignments are established between a pair of scans, the partial alignment with the least error between the matched keypoint features thereof may be selected for further analysis. Alternatively, in another implementation, partial multiple alignment may be arbitrarily selected. If only a single partial alignment is established for a pair of scans, the selection of the single partial alignment for further analysis may be automatic. The further analysis of the selected partial orientation may include one or more of analyzing, calculating, and / or comparing operations as listed above.Analyzing the selected partial alignment relative to another sample or pair of samples may include identifying key point features of the partial alignment matched with key point features of the other sample or pair of samples. Additionally or alternatively, analyzing the selected partial alignment may include combining or merging the key point features of the partial alignment with the additional key point features.In response to the analyzing, an error value associated with combining the partial alignment with the additional keypoint features may be calculated. For example, an ICP error value (e.g., a point-to-plane error) may be calculated using an ICP algorithm.The calculated error may be compared to a threshold established for setting partial alignments in various ways. For example, if the calculated error is greater than the threshold, the partial alignment is rejected, whereas if the calculated error is less than or equal to the threshold, the partial alignment is accepted for inclusion in the global alignment. The threshold may be established as a value generated from a learning model.In general, automatic alignment of multiple scans using the techniques described herein represents an improvement over processing the scans individually. For example, the accuracy of alignment of two low overlap samples may be improved if the two samples are improved as a merged sample relative to another sample, as the merged samples more generally have a larger overlap.FIG. 4 shows an example alignment 400 using the alignment module 114 of FIG. 1 to employ the techniques described herein. As shown, the example orientation 400 includes, for example, samples 402, 404, and 406 as well as a global sample 408. As shown, each of the samples 402, 404, and 406 represents different perspectives of a person, such as the object 204 of FIG. 2.Samples 402 and 404 together produce a pair of samples that have been aligned along a pair of corresponding key points. Samples 402 and 404 represent a partial alignment combined with additional key point features of sample 406. To generate the global alignment 408, the partial alignment is determined to be assumed based on the alignment module 114 calculating an error to combine the matched key points of the samples 402 and 404 with the key points of the sample 406. In this specific example, the comparison of the calculated error to a threshold indicates that partial alignment is being assumed. In response to assuming the partial alignment, the matched keypoint features within the partial alignment may be combined with keypoint features within the additional scan to generate the global alignment 408.In the event that the calculated error indicates that the partial alignment is rejected, an additional partial alignment made from samples 402 and 404 or from other samples not shown is processed. For example, in response to the partial alignment being rejected, a new error associated with a combination of an alternative partial alignment with production from the scans 402 and 404 with additional keypoint features (e.g., associated with an additional scan of the object) is calculated. A determination of whether the additional partial alignment is accepted or rejected may be made based on a comparison of the calculated new error to the threshold.Various operations, such as analyzing, comparing, assigning, calculating, generating, determining, and the like, performed by different modules are described herein. Note that the various modules may be configured in various combinations with functionality that causes these and other operations to be performed. Functionality associated with a particular module may be further partitioned among different modules, and / or the functionality represented by multiple modules may be combined into a single logical module. Moreover, a particular module may be configured to cause an operation to be performed directly by that particular module. Additionally or alternatively, the particular module may cause particular operations to perform the particular operations (or performing the operations associated with that particular module) by retrieving or otherwise accessing other components or modules.Exemplary ProceduresThe following descriptions describe alignment techniques that may be implemented using the systems and devices described above. Aspects of each of the procedures can be implemented as hardware, firmware or software or else as a combination thereof. The procedures are shown as a set of blocks that specify operations performed by one or more devices, and are not limited to the orders shown for performing the operations by the respective blocks. Moreover, any one or more of the blocks of the procedure may be combined with each other or may be omitted in whole in various implementations. Moreover, blocks associated with various representative procedures and corresponding figures may be applied together. The individual operations specified in the various procedures may be used in any suitable combinations and are not limited to particular combinations represented by the exemplary figures. In portions of the discussion that follows, reference is made to the examples of Figures 1-4.FIG. 5 is a flow diagram illustrating a procedure 500 in which the alignment module 114 of FIG. 1 determines whether partial alignment is accepted or rejected for a plurality of samples.Partial alignment is established for a plurality of scans of an object taken from different perspectives (block 502). For example, the alignment module 114 may establish the partial alignment using any of the techniques described herein. In particular, the alignment module 114 may establish the partial alignment by detecting key point features within the plurality of samples, by assigning error values to potential matches between key point features of the plurality of samples, and / or by matching two or more key point features using the assigned error values to generate the partial alignment.An error combined with combining the partial alignment with one or more additional key point features is calculated (block 504). In particular, the alignment module 114 may calculate the fault using an ICP algorithm that identifies an ICP fault. In one or more implementations, the error between partial alignment and additional key point features may be calculated prior to determining whether a global alignment for the samples captures the partial alignment.A determination is made as to whether the partial alignment is accepted or rejected based on a comparison of the calculated error with a threshold established to set potential alignments (block 506). For example, the orientation optimizer module 118 may perform the comparison between the calculated error and the threshold. In an implementation where the partial alignment is assumed, the global alignment takes the assumed partial alignment. In an implementation where the partial alignment is rejected, on the other hand, the global alignment does not accommodate the rejected partial alignment and an additional partial alignment is selected for processing.FIG. 6 is a flow diagram illustrating a procedure 600 in which the alignment module 114 of FIG. 1 selects and processes one of multiple potential matches between a pair of samples.Error values are assigned to potential matches between keypoint features of a pair of samples (block 602). For example, the alignment module 114 may assign error values to potential matches, as discussed in connection with FIGS. 1-4 and elsewhere. For example, each respective error value may indicate a level of matching between keypoint features. Here, each potential match represents a different partial alignment of matched keypoint features.A partial alignment is selected for further processing based on the assigned errors (block 604). For example, the alignment module 114 may select the partial alignment associated with the least error between matched keypoint features of the pair of samples.An error associated with combining the selected partial alignment with one or more additional key point features of another sample is calculated (606). For example, the alignment module 114 may calculate the error using an ICP algorithm that identifies an ICP error.Whether the selected partial alignment is accepted or rejected based on a comparison of the calculated error to a threshold established to set inaccurate alignments is now determined (608). For example, the orientation optimizer module 118 may perform the comparison between the calculated error and the threshold.Example System and ApparatusFIG. 7 generally illustrates an example system that includes an example computing device 702 representative of one or more computing systems and / or devices that may implement the various techniques described herein. This is illustrated by the inclusion of the image processing module 113, which may be configured to align samples. Computing device 702 may be, for example, a server of a service provider, a device connected to a client (e.g., a client device), an on-chip system (on-chip system), and / or any other suitable computing device or computing system.The example computing device 702 is shown to include a processing system 704, one or more computer readable media 706, and one or more I / O interfaces 708 communicatively coupled to each other. Although not shown, computing device 702 may further include a system bus or other data and a command transfer system that couples the various components together. A system bus may include one or a combination of various bus structures, such as a memory bus or controller, a peripheral bus, a universal serial bus, and / or a processor or a local bus using any of a variety of bus architectures. A variety of other examples are also included, such as control and data lines.The processing system 704 is representative of functionality for performing one or more operations using hardware. Accordingly, processing system 704 is shown to include a hardware element 710, which may be configured as processors, functional blocks, and so forth. This may include an implementation in the form of hardware as an application specific integrated circuit or other logic device fabricated using one or more semiconductors. The hardware elements 710 are not limited by the materials from which they are made or by the processing mechanisms employed therein. For example, the processors may be comprised of a semiconductor / semiconductors and / or transistors (e.g., electronic integrated circuits (ICs)). In such context, the processor-executable instructions may be electronically-executable instructions.Computer readable storage media 706 is shown to include memory / storage 712. The memory / storage 712 shows a storage / storage capability in connection with one or more computer readable media. The storage / storage component 712 may include volatile media (such as random access memory (RAM)) and / or nonvolatile media (such as read only memory (ROM), flash memory, optical disks, magnetic disks, and the like). The storage / storage component 712 may include fixed media (e.g., RAM, ROM, a hard disk drive, and the like) as well as removable media (e.g., flash memory, a removable hard disk, an optical disk, and the like). The computer readable media 706 may be configured in a variety of other ways, as described below.An input / output interface 708 is / input / output interfaces 708 are representative of functionality that enables a user to input commands and information to the computing device 702, and also enables information to be provided to the user and / or other components or devices using various input / output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, touch functionality (e.g., capacitive or other sensors configured to detect a physical touch), a camera (e.g., one that can employ visible or non-visible wavelengths, such as infrared wavelengths, to detect motion that does not include a touch, such as gestures), and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, a tactile response device, and the like. As such, the computing device 702 may be configured in a variety of ways, as described below, to support user interaction.Various techniques have been described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and the like that perform particular tasks or implement particular abstract data types. The terms "module", "functionality" and "component" generally refer to software, firmware, hardware or a combination thereof in the present sense. The features of the techniques described herein are platform independent, meaning that the techniques may be implemented on a plurality of computing platforms having a plurality of processors.An implementation of the described modules and techniques may be stored or transmitted via some form of computer readable media. The computer readable media may include a variety of media accessible by the computing device 702. For example, and not by way of limitation, computer readable media may include "computer readable storage media" and "computer readable signal media."."Computer readable storage media" refers to media and / or devices that allow permanent and / or non-transitory storage of information as opposed to mere signal transmission, carrier waves, or signals per se. Computer readable storage media refers to non-signal bearing media. The computer readable storage media includes hardware, such as volatile and non-volatile, removable and non-removable media, and / or storage devices implemented with a method or technology suitable for storing information, such as computer readable instructions, data structures, program modules, logic elements / circuits, or other data. Examples of computer readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, physical media, or an article of manufacture suitable for storing desired information accessible by a computer."Computer readable signal media" may refer to a signal bearing medium suitable for transmitting instructions to the hardware of computing device 702, such as via a network. Signal media may typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. Signal media also includes any information distribution medium. The term "modulated data signal" refers to a signal in which one or more of its characteristics are adjusted or altered in a manner that encodes information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct wired connection, and wireless media such as acoustic, radio frequency, infrared, and other wireless media.As described above, hardware elements 710 and computer readable media 706 are representative of modules, programmable device logic, and / or fixed device logic implemented in hardware form, which in at least some implementations may be employed to implement at least some aspects of the techniques described herein, such as to perform one or more instructions. The hardware may include components of an integrated circuit or on-chip system, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations of silicon or other hardware. In this context, hardware may operate as a processing device that performs program tasks defined by instructions and / or logic embodied by the hardware, as well as hardware for use in storing instructions for execution, such as the computer readable storage media described above.Combinations of the foregoing may also be employed to implement various of the techniques described herein. Accordingly, software, hardware, or executable modules may be implemented as one or more instructions and / or logic embodied in any form of computer readable storage media and / or by one or more hardware elements 710. The computing device 702 may be configured to implement certain instructions and / or functions corresponding to the software and / or hardware modules. Accordingly, an implementation of a module executable by a computing device 702 as software may be implemented at least in part as hardware, such as by use of a computer readable storage medium and / or by hardware elements 710 of the processing system 704. The instructions and / or functions may be executable / operable by one or more articles of manufacture (e.g., one or more computing devices 702 and / or processing systems 704) for implementing techniques, modules, and examples described herein.The techniques described herein may be supported by various configurations of the computing device 702, and are not limited to the specific examples of the techniques described herein. This functionality may also be implemented in whole or in part by a "distributed system," such as via a "cloud" 714 via a platform 716 as described below.Cloud 714 includes and / or is representative of a platform 716 of resources 718. Platform 716 abstracts underlying functionality of hardware (e.g., servers) and software resources of cloud 714. The resources 718 may include applications and / or data used while computer processing is being executed on servers remote from the computing device 702. The resources 718 may also include services provided over the Internet and / or over a subscriber network, such as a cellular or WiFi network.Platform 716 may abstract resources and functions for connecting computing device 702 to other computing devices. Platform 716 may also serve to abstract a scaling of resources to provide a corresponding level of scaling for the encountered need for resources 718 implemented via platform 716. Accordingly, in a mutually connected embodiment of the apparatus, an implementation of the functionality described herein may be distributed over the system 700. For example, the functionality may be implemented in part on computing device 702 as well as via platform 716 that abstracts the functionality of cloud 714.Conclusion NoteAlthough the techniques have been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts are disclosed as example forms of implementing the claimed subject matter.

Claims

A method, implemented by a computing device (102; 702), the method comprising: establishing a partial alignment for a plurality of samples of an object (204) obtained from different perspectives, including: detecting key point features within the plurality of samples; assigning error values to potential matches between key point features of the plurality of samples; matching two or more key point features using the assigned error values to generate the partial alignment; calculating an error associated with combining the partial alignment with one or more additional key point features; and determining whether the partial alignment is accepted or rejected based on a comparison of the calculated error with a threshold established to set potential alignments.The method of claim 1, wherein each of the potential matches between the key point features of the plurality of samples is assigned a respective error value for indicating a level of match between the key point features and the partial alignment is established using the potential match associated with the lowest assigned error among the assigned errors of the potential matches, optionally further comprising: in response to a rejection of the partial alignment, computing a new error associated with combining an alternative partial alignment with the one or more additional key point features and determining whether the alternative partial alignment is accepted or rejected based on a comparison of the computed new error with the threshold.The method of claim 1 or 2, wherein the one or more additional keypoint features are associated with an additional sample of the object (204).The method of any of claims 1 to 3, further comprising, in response to assuming the partial alignment, combining the matched keypoint features within the partial alignment with keypoint features within an additional sample to generate a global alignment (408) of the plurality of samples and the additional sample.The method of any one of claims 1 to 4, further comprising generating an alignment graph and using the alignment graph to enable the manufacturing and the calculating.The method of any of claims 1 to 5, further comprising generating a three-dimensional (3D) model representation of the object (204) using the assumed partial orientation.A computer program product containing computer readable instructions which, when loaded into and run on a computer or system, cause the computer or system to perform the method of any one of claims 1 to 6.A system comprising: one or more modules with at least partially implemented in hardware, the one or more modules being adapted to: establish a partial alignment for a plurality of samples of an object (204) obtained from different perspectives by an image capture device to establish the partial alignment, including: detecting key point features within the plurality of samples; assigning an error value to a potential match between key point features of the plurality of samples; matching two or more key point features using the assigned error value to generate the partial alignment; calculating an error associated with combining the partial alignment with one or more additional key point features; determining whether the partial alignment is accepted or rejected based on a comparison of the calculated error with a threshold established to set potential alignments.The system of claim 8, wherein the one or more modules are further configured to reject the partial alignment in response to a calculated error greater than the threshold.The system of claim 8 or 9, wherein the one or more modules are further configured to establish an alternative partial alignment for the plurality of samples of the object (204), wherein the alternative partial alignment is associated with another potential match between the keypoint features of the plurality of samples.The system of claim 10, wherein the one or more modules are further configured to select the partial alignment or the alternative partial alignment for use as the final alignment for the plurality of samples of the object (204).The system of claim 10 or 11, wherein the one or more modules are further configured to calculate an error associated with combining the alternate partial alignment with one or more additional key point features prior to determining whether the partial alignment is accepted or rejected.The system of any of claims 8 to 12, wherein the one or more modules are further configured to incorporate an alternative partial alignment for the plurality of samples of the object (204) prior to determining whether the partial alignment is accepted or rejected.The system of any of claims 8 to 13, wherein the one or more modules are further configured to select the partial alignment or an alternative partial alignment for use in a global alignment (408) for the plurality of samples of the object (204).The system of any of claims 8 to 14, wherein combining the partial alignment with the one or more additional keypoint features includes combining the matched two or more keypoint features of the partial alignment with the one or more additional keypoint features of an additional scan.The system of any of claims 8 to 15, wherein the plurality of samples of the object (204) are obtained from a plurality of image capture devices (102, 104; 202) substantially simultaneously.One or more computer readable storage media (706) for storing instructions that, in response to execution by a computing device (102; 702), cause the computing device (102; 702) to generate operations for generating a three-dimensional (3D) model representation of an object (204), the operations comprising: assigning error values to potential matches between keypoint features of a pair of samples, each potential match representing a different partial alignment of matched keypoint features corresponding to the pair of samples; selecting a partial alignment for further processing based on the assigned errors; calculating an error associated with combining the selected partial alignment with one or more additional keypoint features of a further sample; and determining whether the selected partial orientation is accepted or rejected based on a comparison of the calculated error with a threshold configured to set potential orientations.The one or more computer readable storage media (706) of claim 17, wherein the instructions cause the computing device (102; 702) to perform further operations comprising rejecting the selected partial alignment and repeating the calculating and determining for a further partial alignment.The one or more computer readable storage media (706) of claim 17 or 18, wherein the pair of scans and the other scan include a representation of an object (204) from a different perspective.The one or more computer readable storage media (706) of any of claims 17 to 19, wherein the instructions cause the computing device (102; 702) to perform further operations including receiving the selected partial alignment to a global alignment (408) in response to receiving the selected partial alignment.

Citation Information

Patent Citations

  • Imaging system for determining a multi-perspective orientation

    DE102013021178A1

  • System and method for determining camera miscalibration during runtime operation

    DE112010005008T5

  • Method and apparatus for calibrating an imaging device

    WO2013009416A2