Patent ID: 12223748

DETAILED DESCRIPTION

FIG.1depicts a block diagram of an example system100for identifying changes in a space102based on representations of space102. For example, space102can be a factory or other industrial facility, an office a new building, a private residence, or the like. In other examples, the space102can be a scene including any real-world location or object, such as a construction site, a vehicle such as a car or truck, equipment, or the like. It will be understood that space102as used herein may refer to any such scene, object, target, or the like. System100includes a server104and a client device112which are preferably in communication via a network116. System100can additionally include a data capture device108which can also be in communication with at least server104via network116.

Server104is generally configured to identify changes within a representation of space102. Server104can be any suitable server or computing environment, including a cloud-based server, a series of cooperating servers, and the like. For example, server104can be a personal computer running a Linux operating system, an instance of a Microsoft Azure virtual machine, etc. In particular, server104includes a processor and a memory storing machine-readable instructions which, when executed, cause server104to identify changes within a representation of space102, as described herein. Server104can also include a suitable communications interface (e.g., including transmitters, receivers, network interface devices and the like) to communicate with other computing devices, such as client device112via network116.

Data capture device108is a device capable of capturing relevant data such as image data, depth data, audio data, other sensor data, combinations of the above and the like. Data capture device108can therefore include components capable of capturing said data, such as one or more imaging devices (e.g., optical cameras), distancing devices (e.g., LIDAR devices or multiple cameras which cooperate to allow for stereoscopic imaging), microphones, and the like. For example, data capture device108can be an IPad Pro, manufactured by Apple, which includes a LIDAR system and cameras, a head-mounted augmented reality system, such as a Microsoft Hololens™, a camera-equipped handheld device such as a smartphone or tablet, a computing device with interconnected imaging and distancing devices (e.g., an optical camera and a LIDAR device), or the like. Data capture device108can implement simultaneous localization and mapping (SLAM), 3D reconstruction methods, photogrammetry, and the like. The actual configuration of data capture device108is not particularly limited, and a variety of other possible configurations will be apparent to those of skill in the art in view of the discussion below.

Data capture device108additionally includes a processor, a non-transitory machine-readable storage medium, such as a memory, storing machine-readable instructions which, when executed by the processor, can cause data capture device108to perform data capture operations. Data capture device108can also include a display, such as an LCD (liquid crystal display), an LED (light-emitting diode) display, a heads-up display, or the like to present a usual with visual indicators to facilitate the data capture operation. Data capture device108also includes a suitable communications interface to communicate with other computing devices, such as server104via network116.

Client device112is generally configured to present a representation of space102to a user and allow the user to interact with the representation, including providing inputs and the like, as described herein. Client device112can be a computing device, such as a laptop computer, a desktop computer, a tablet, a mobile phone, a kiosk, or the like. Client device112includes a processor and a memory, as well as a suitable communications interface to communicate with other computing devices, such as server104via network116. Client device112further includes one or more output devices, such as a display, a speaker, and the like, to provide output to the user, as well as one or more input devices, such as a keyboard, a mouse, a touch-sensitive display, and the like, to allow input from the user.

Network116can be any suitable network including wired or wireless networks, including wide-area networks, such as the Internet, mobile networks, local area networks, employing routers, switches, wireless access points, combinations of the above, and the like.

System100further includes a database120associated with server104. For example, database can be one or more instances of My SQL or any other suitable database. Database120is configured to store data to be used to identify changes in space102. In particular, database120is configured to store a persistent representation124of space102. In particular, representation124may be a 3D representation which tracks persistent spatial information over time. Other representations, including 2D representations (e.g., optical images, thermal images, etc.) and 3D representations (e.g., 3D scans, including partial scans, depth maps, etc.) may also be stored at database120. Database120can be integrated with server104(i.e., stored at server104), or database120can be stored separately from server104and accessed by the server104via network116.

Referring toFIG.2, an example method200of identifying changes within a space is depicted. Method200is described below in conjunction with its performance by server104, however in other examples, method200can be performed by other suitable devices or systems. In method200below, server104may interact with client device112, however in other examples, server104may interact with data capture device108, and vice versa. In some examples, some of the blocks of method200can be performed in an order other than that illustrated, and hence are referred to as blocks and not steps.

At block205, server104retrieves a previous representation representing space102. In particular, the previous representation may represent a target portion, such as a particular object or objects, a scene, or other relevant portion within space102. For example, the previous representation may be a two-dimensional (2D) representation, such as an optical image (i.e., in the visible light spectrum), an infrared image, a thermal image, or the like. In other examples, the previous representation may be a three-dimensional (3D) representation, such as a depth map, a 3D scan, or the like. The previous representation represents the state of space102or the target portion of space102at a previous instance in time, that is, at the time the previous representation was captured. Server104may retrieve the previous representation from the database120.

Block205may be performed in response to a signal from client device112(or data capture device108) to identify differences in space102or a target portion of space102based on user input at client device112. In some examples, the user may additionally specify the target portion of space102, while in other examples, the entirety of space102may be selected for analysis.

In some examples, many previous representations of space102or the target portion of space102may have been captured. Accordingly, server104may cooperate with client device112to present various previous representations to the user operating client device112to select a previous representation to use as a reference to identify changes. For example, after having selected a target portion of space102, server104may identify a set of representations (e.g., images or scans) including the target portion to present at client device112. The set of representations may include representations of the target portion captured from different points of view and/or representations of the target portion captured at different points in time. Client device112may then receive input from the user identifying a particular representation to be used as a reference representation. The selected representation may then be the previous representation retrieved at block205. In other examples, such as if no particular target portion has been selected, server104may not perform the filtering of the representations including the target portion. That is, server104may simply identify a set of representations captured at different points in time to be presented at client device112.

For example, referring toFIG.3, an example presentation300of images including a target object (in the present example, a lamp) is depicted. The presentation300includes an image304-1captured from a first point of view, and images304-2,304-3,304-4captured from a second point of view, for example with different datetime stamps. The user may make a selection308of the image304-4as the selected image to use as the previous representation. The selection308of image304-4can then be transmitted to server104.

Returning toFIG.2, at block210, server104obtains a current representation of space102or the target portion of space102. The current representation can represent the target portion or space102. The current representation may also be a 2D representation, such as an optical image (i.e., in the visible light spectrum), an infrared image, a thermal image, or the like, or the current representation may be a 3D representation, such as a depth map, a 3D scan, or the like. In particular, the format of the current representation may match the format of the previous representation. The current representation preferably represents a current state of space102or the target portion of space102in real-time, however, in other examples, the current representation may simply represent a state of space102or the target portion of space102at a later date and/or time than the previous representation. In such examples, the current representation may simply be retrieved from the database120.

In some examples, block210may be performed in response to a selection of a previous representation against which to compare. For example, when the previous representation is a 2D image, to assist with consistency of the point of view of the data capture of the previous representation and the current representation, server104may initiate a process to assist with the capture of the current representation. In particular, server104may cooperate with data capture device108to facilitate obtention of the current representation.

Server104may determine the capture point of the selected previous representation, in particular, within context of space102, and communicate the location of the capture point to data capture device108. A user may then operate data capture device108to localize data capture device108in space102. Data capture device108may then render a capture point icon at the capture point of the previous representation based on the location of the capture point received from server104. For example, the capture point icon may be rendered as an augmented reality component overlaid on the current data capture view of data capture device108. For example, data capture device108may employ methods to render the capture point icon as described in U.S. application Ser. No. 17/345,764, PCT Application No. PCT/IB2021/055172 and PCT Application No. PCT/IB2021/055174, the contents of which are incorporated herein by reference.

Referring toFIG.4, an example view400on data capture device108is depicted. The view400includes a target capture point404. Capture point404is indicated by a frustum408representing the target location of the capture point404. Capture point404can further be indicated by a pyramid412extending from frustum408and terminating at base416representing the plane of the target image to be captured. Frustum408, pyramid412and base416may allow the user of data capture device108to more easily understand the target image to be captured.

Data capture device108may continue to track its location until data capture device108detects that it is approximately at the location of the target capture point404. When data capture device108detects that it is at the target location, data capture device108may render a guide frame to assist the user with aligning data capture device108with the given direction in which data is to captured. The guide frame can be produced using similar tracking techniques used to orient and track the location of data capture device108in space102. The guide frame can be displayed similarly to the capture point icon, as an augmented reality component overlaid on the current data capture view of data capture device108.

In some examples, when data capture device108detects that it is in the correct location in space102and oriented in the correct direction, data capture device108may trigger an automatic data capture operation to capture a current representation420. For example, the current representation420can be image data (i.e., an image represented by the current data capture view), as presently depicted, or other data, such as thermal imaging data, infrared data, or the like, representing the target portion of space102. In other examples, the current representation420may be captured in response to an input from the user to data capture device108.

In some examples, when the representation is a 3D representation, data capture device108may additionally provide guide features to guide the user to capture data for the updated 3D representation of space102. That is, data capture device108may re-localize itself in space102and then present the guide features rendered, for example, as augmented reality components overlaid on the current data capture view, to facilitate appropriate data capture for the updated 3D representation.

Returning toFIG.2, as will be appreciated, in some examples, block210may be performed prior to block205. For example, after having captured an updated 3D representation or scan of space102via data capture device108, server104may prompt the user of data capture device108to identify and/or visualize any changes to space102. Upon receiving an affirmative response from the user via data capture device108, server104may present, via data capture device108, various previous captures of space102to use as the previous representation at block205.

At block215, server104compares the previous representation retrieved at block205with the current representation obtained at block210. In particular server104detects differences in the representations and analyzes the differences to identify changes in space102between the time of capture of the previous representation and the time of capture of the current representation.

For example, referring toFIG.5, an example method500of determining changes in space102is depicted.

At block505, server104aligns the previous representation and the current representation. For example, the 2D images may not be captured perfectly precisely at the same capture point. Accordingly, server104may warp the 2D images to be substantially aligned. Warping may include scaling, translations, keystone corrections, homographic transforms, and the like. 3D scans may encompass the entirety of the space102, and accordingly, corresponding sections of the 3D representation may be extracted from the previous representation and the current representation to be compared, irrespective of the location from which the scan data was captured. Accordingly, to align the previous and current 3D representations, server104may simply map the previous and current 3D representations to a common frame of reference (e.g., coordinate system). In some examples, server104may verify the alignment of the previous and current representations using an iterative closest point method or the like.

In some examples, server104may additionally perform other preprocessing operations at block505. For example, server104may adjust the previous and/or current representations to normalize lighting conditions, contrast, blur, edge sharpness, and the like.

At block510, server104computes the structural similarity between the previous representation and the current representation. Preferably, server104may use 2D sensor data to perform the comparison. For example, server104may directly compare the 2D previous and current representations. For 3D representations, server104may first identify a target portion to compare, extract the RGB (red, green, blue) channel data for the target portion, and compare the extracted RGB-channel data. In some examples, depth data from the 3D representations may additionally be compared. In some examples, server104may employ an established image comparator which may compare the representations using a mean-squared error algorithm, a structural similarity index, a Haussdorf distance, a point cloud distance, or the like. The image comparator may output a list of differences identified between the previous representation and the current representation.

As a result, server104obtains a list of potential changes, each represented by one of the differences identified between the previous representation and the current representation. Since the differences between the previous representation and the current representation may simply be artefacts based on inconsistencies in the data capture, server104may proceed to evaluate each potential change to determine whether it may be classified as a candidate change.

At block515, server104selects one of the potential changes from the list to evaluate further.

At block520, server104determines whether the structural similarity value for the potential change is above a threshold similarity value. In particular, server104may compute a similarity value for the potential change based on the similarities of the RGB image data, or other 2D image data. The similarity value represents a similarity between the portions of the image data corresponding to the potential change, and may be computed, for example based on the mean squared error, or other suitable computation. Accordingly, if the similarity value is sufficiently high, server104determines the difference between the previous representation and the current representation at the region of the potential change is fairly minor, and hence may not represent an actual change. For example, such differences may be representative of different lighting or shadow conditions, or the like.

The threshold similarity value may be a predetermined value stored at database120and may be based, for example, on experimentally determined threshold values.

Accordingly, if the similarity value for the potential change is below the threshold similarity value, server104determines that further evaluation is required to evaluate the potential change and proceeds to block525. If the similarity value for the potential change is above the threshold similarity value, server104proceeds to block530to discard the potential change.

As will be appreciated, in other examples, other manners of computing the similarity or differences of the potential change are possible and contemplated. For example, rather than computing the similarity between the region of the potential change in the previous representation and the current representation, server104may compute a difference value and proceed with an inverse decision.

At block525, server104determines whether the potential change corresponds to an edge in at least one of the previous representation or the current representation. In particular, edges may be difficult to precisely align and provide a distinct contrast, and accordingly, if misaligned, may be likely to be detected as a potential change. Accordingly, server104may first run an edge detection algorithm on one or both of the previous representation and the current representation. If server104determines that the potential change is within a threshold distance of a detected edge in one or both of the representations, then server104may determine that the potential change is unlikely to correspond to an actual change.

As will be appreciated, some additions or deletions of objects within space102may cause the addition or deletion of edges, and hence the corresponding potential change identified may indeed correspond with an edge. Accordingly, in order to not filter out such potential changes, in some examples, server104may only determine that the potential change corresponds to an edge if the potential change is within a threshold distance of a detected edge in both the previous representation and the current representation. In other examples, server104may determine that the potential change corresponds to an edge if the entirety of the potential change is within a threshold distance of a detected edge in either of the previous representation and the current representation. That is, if the potential change itself is edge-like in shape and is within a threshold distance of an edge then the identified potential shape is likely an edge. In contrast, if the potential change forms a larger shape, representative of a surface or similar, portions of the potential change may be outside the threshold distance from a detected edge, and hence the surface represented by the potential change may be preserved.

Accordingly, if server104determines that the potential change corresponds to an edge, server104proceeds to block530to discard the potential change. At block530, after discarding the potential change, either because the two representations at the region of the potential change were similar, or because the potential change corresponded to an edge in one or both of the two representations, server104returns to block515to select a new potential change to be evaluated.

If server104determines that the potential change does not correspond to an edge, then server104may proceed to block535. At block535, server104validates the potential change as a candidate change. That is, server104expects that the potential change selected at block515is likely to represent an actual change, and hence as a result, modifies its classification to a candidate change.

At block535, server104may additionally define a bounding box for the candidate change. The bounding box may be defined to encompass the candidate change based on, for example on the upper and lower bounds of the pixel coordinates of the candidate change. In other examples, other shapes or definitions to define a boundary for the candidate change are contemplated. That is, the bounding box need not strictly be a rectangular box.

After performance of block535, if there are additional potential changes to be evaluated, server104returns to block515to select another potential change to be evaluated. If all of the potential changes output at block510have been evaluated and either discarded or classified as a candidate change, then server104may proceed to block540.

In some examples, prior to proceeding to block540, server104may perform additional processing on the list of candidate changes. For example, referring toFIG.6, an example method600of further filtering and combining the candidate changes is depicted.

At block605, server104selects a candidate change to evaluate for combination with other candidate changes.

At block610, server104identifies the nearest additional candidate change in the list. The nearest additional candidate change may be evaluated based, for example, on the shortest distance between any point of the candidate change selected at block605and any point of the additional candidate change. In other examples, the distance between candidate changes may be determine based on an average distance, or other suitable computations.

At block615, after having identified the nearest additional candidate change to the selected candidate change, server104determines whether the nearest additional candidate change is within a threshold distance of the selected candidate change.

In some examples, the threshold distance may be based on an image distance, that is based on the pixel-based distance between the candidate changes. In other examples, the threshold distance may be based on a real-world distance. That is, server104may first determine a scale of the image and use the scale to estimate the distance between the candidate changes.

In particular, if the candidate changes are sufficiently close together, the candidate changes may represent different portions of the same object which was changed in space102. Accordingly, if, at block615, server104makes an affirmative determination, that is that the selected candidate change is within the threshold distance of the nearest additional candidate change, then server104proceeds to block620.

In some examples, prior to applying the threshold distance, server104may first classify the selected candidate change and the nearest additional candidate change as additions or deletions using the depth data, as described in further detail below. If the selected candidate change and the nearest additional candidate change are classified differently (i.e., one is an addition and one is a deletion), server104may make an affirmative determination at block615, irrespective of the relative distance between the candidate changes and the threshold distance.

At block620, since the candidate changes are within the threshold distance, server104determines that the candidate changes are part of the same change and combines them. That is, server104may redefine the selected candidate change as including both the original selected candidate change and the nearest additional candidate change. Further, server104may redefine the bounding box for the candidate change as encompassing both the selected candidate change and the nearest additional candidate change.

After combining the changes, server104returns to block610to identify the next nearest candidate change to evaluate whether to combine it as well with the newly combined candidate changes.

If, at block615, server104makes a negative determination, that is the next nearest candidate change is not within the threshold distance to the selected candidate change (or the redefined candidate change), then server104returns to block605to select another candidate change for evaluation and combination.

Once each of the candidate changes have been evaluated and combined, server104may return to method500. In particular, returning toFIG.5, at block540, server104outputs the candidate changes. In some examples, server104may simply output the candidate changes for further processing within server104. In other examples, server104may output the candidate changes for review and confirmation by a user, for example operating client device112or data capture device108.

For example, referring toFIG.7, an example method700of confirming candidate changes is depicted. Method700is described with reference to its performance by server104and client device112, however in other examples, portions of method700may be performed by data capture device108rather than client device112, and/or other suitable devices and/or systems.

At block705, server104selects a candidate change to confirm.

At block710, server104presents the candidate change to the user via client device112. For example, client device112may display the previous representation and the current representation with the candidate change and the bounding box for the candidate change in one or both of the representations.

FIG.8depicts an example view800which may be presented at client device112. View800includes a presentation of current representation420obtained at block210of method200, and a presentation of previous representation304-4selected at block205of method200. Further, as a result of performance of method500, server104may identify three candidate changes804-1,804-2, and804-3. In particular, candidate changes804may be represented by their bounding boxes,808-1,808-2and808-3. As can be seen, the bounding boxes808may appear in both current representation420as well as previous representation304-4to allow the user to easily identify where the change is located with respect to both representations.

The candidate changes804may be presented sequentially to the user of client device112to confirm or deny. For example, in the present example, bounding box808-1is emphasized to confirm or deny candidate change804-1. Accordingly, view800may additionally include an affirmative input option812as well as a negative input option816. The user may select one of the input options812,816via a touch-sensitive display of client device112, or another suitable input mechanism.

Returning toFIG.7, at block715, client device112receives an input from the user operating client device112and transmits the input to server104to confirm or discard the candidate change. If the input received at client device112is affirmative, that is, the user wants to confirm the candidate change as an actual change in space102, then server104proceeds to block720.

At block720, server104confirms the candidate change as a confirmed change. If there are any further candidate changes to evaluate, server104returns to block705to select another candidate change.

For example, referring again toFIG.8, server104may receive an affirmative input for the candidate change804-1, since a book is present in current representation420that was not present in previous representation304-4. Server104and client device112may then return to block705to cycle through to emphasize bounding boxes808-2and808-3to validate candidate changes804-2and804-3. In the present example, server104may receive an affirmative input for candidate change804-2, since a mug was present in previous representation304-4that was not present in current representation420. Server104may receive a negative input for candidate change804-3, since nothing appears to have changed on the patch of floor. That is, candidate change804-3may have been a result of artefacts in image processing (e.g., in stitching image data for the 3D scan), inconsistent lighting conditions, or other factors.

If, at block715, the input received at client device112is negative, that is, the user does not want to confirm the candidate change as an actual change in space102, then server104proceeds to block725. At block725, server104discards the candidate change. If there are any further candidate changes to evaluate, server104returns to block705to select another candidate change.

Returning toFIG.2, as will now be understood, at block215, server104compares the previous representation obtained at block205with the current representation obtained at block210to identify a list of changes in space102. Preferably, the changes may be confirmed changes validated based on user input, however, in other examples, the changes may be candidate changes validated by server104based on various algorithms and processing rules, and in still further examples, the changes may be potential changes identified simply by identifying any differences between the previous representation and the current representation based on 2D image data (e.g., RGB channel data).

In some examples, after determining the changes in space102, server104may additionally classify the changes as additions or deletions based on depth data. For example, referring toFIG.9, an example method900of classifying changes based on depth data is depicted.

At block905, server104selects a change to classify.

At block910, server104obtains previous depth data associated with the previous representation and current depth data associated with the current representation. For example, the previous and current depth data may be captured simultaneously with and/or as part of the previous and current representations, respectively. In particular, server104may extract the depth data associated with the region of the selected change. For example, server104may obtain depth data from within the bounding box defining the selected change.

At block915, server104compares the previous depth data and the current depth data in the region of the selected change. In particular, server104determines which of the current depth data and the previous depth data is closer in the region of the selected change. For example, server104may compare an average depth from the current depth data and the previous depth data. In other examples, server104may use another representative depth value (e.g., by sampling or the like) to compare the previous depth data and the current depth data.

If, at block915, server104determines that the current depth data is closer than the previous depth data in the region of the selected change, then server104proceeds to block920. At block920, server104may infer that an object has been moved or placed closer to the point of capture in the current representation, and hence server104may classify the change as an addition. For example, change804-1ofFIG.8may be classified as an addition, since the book in current representation420produces a closer depth value than the table beneath it in previous representation304-4.

If, at block915, server104determines that the previous depth data is closer than the current depth data in the region of the selected change, then server104proceeds to block925, server104may infer that an object that has been removed in the current representation, so that the background is perceptible behind it, and hence server104may classify the change as a deletion. For example, change804-2ofFIG.8may be classified as a deletion, since the mug in previous representation304-4produces a closer depth value than the table beneath it in current representation420.

In some examples, if the current depth data and previous depth data are similar to one another (e.g., within 95% of one another or within one standard deviation of one another, or the like), then rather than proceeding to either block920or block925, server104may not classify the change as either an addition or a deletion. In such examples, the server104may discard the change (i.e., on the assumption that the identified change is merely an artifact in the representations), or may classify the change as a visual or aesthetic change only (e.g., a television screen now displays different information, but has otherwise not moved or physically changed).

After classification by server104at either block920or block925, if there are any additional changes to be classified, server104may return to block905to select another change to classify.

After classifying the change as an addition or a deletion, server104may return to method200and proceed to block220. At block220, server104maps the target portion represented by the previous and current representations to a 3D representation. For example, the 3D representation may be a persistent 3D representation, such as representation124stored in database120. That is, the 3D representation may store and track persistent spatial information over time, allowing changes such as those identified at block215to be located within the 3D representation.

At block225, server104stores a change map defining the change or changes identified at block215in context of the 3D representation.

For example, the change map can be a layer of annotations associated with the 3D representation identifying the locations of the changes. In particular, bounding boxes defining the changes may form annotations in the change map to emphasize the locations of the changes. The bounding boxes may be mapped to the plane of the 2D image in which the change was identified to contextualize the bounding box in the 3D representation. For example, bounding box808-1may be mapped to base416defining the image plane of current representation420.

However, in some examples, such a mapping to the image plane may not accurately locate the change804-1in 3D space. Accordingly, in some examples, the bounding boxes may be mapped to the nearest underlying surface in the 3D representation. For example, the bounding box808-1may be mapped substantially to the surface of the table.

In still further examples, rather than using the bounding boxes as annotations, the change map may use the depth data from the previous and/or current representations to depict the changes classified as additions and deletions. For example, referring toFIG.10, a change map1000is depicted. Server104may obtain and employ depth data from current representation420to depict additions, such as the change804-1for the change map1000. In some examples, depth data depicting additions may additionally be depicted in a first format, depicted in the present example as having shading. Additionally, server104may obtain and employ depth data from previous representation304-4to depict deletions, such as the change804-2for the change map. Depth data depicting deletions may be depicted in a second format, depicted in the present example as having a dashed, lighter-colored outline.

In some examples, in addition to generating the change map at block225of method200, server104may additionally cooperate with client device112and/or data capture device108to display the change map. For example, the change map may be presented as a navigable 3D representation at client device112. In another example, the change map may define augmented reality components (i.e., annotations and/or additions and deletions) to display in the current data capture view at data capture device108when data capture device108is localized in space102.

Server104may additionally store the change map in database120for future reference.

As described above, an example system stores persistent 3D spatial data of a space and historical representations of the space to facilitate identifications changes in the space over time. A current representation may be compared to a previous representation to identify the changes. In particular, the system may leverage optical or red-green-blue (RGB) channel data to employ an image comparator to identify potential changes. The system may then further filter and refine the list of potential changes to obtain a list of system-validated candidate changes, or user-validated confirmed changes. In other examples, other types of data (e.g., thermal data, infrared data, etc.) may be compared to identify the potential changes. The system may additionally use depth data associated with the representations to classify the changes as additions or deletions. The changes may be stored in a change map to contextualize the changes within the persistent 3D representation. The change map may also be presented in an interactive format, to facilitate user understanding and visualization of the changes within the space.

The scope of the claims should not be limited by the embodiments set forth in the above examples but should be given the broadest interpretation consistent with the description as a whole.