Disclosure of Invention
It is an object of some embodiments of the application to provide a method of hand joint detection in an eyeglass device, a storage medium, an electronic device and a product, according to the technical scheme provided by the embodiment of the application, the accuracy of hand joint detection can be improved, and the practicability is higher.
In a first aspect, some embodiments of the present application provide a method for detecting a hand joint in an eyeglass device, which includes obtaining a confidence coefficient of a hand region corresponding to a current frame image, processing the hand region to obtain a hand region image to be detected when the confidence coefficient is confirmed to be greater than a preset threshold value, and inputting the hand region image to be detected into a target hand joint detection model to obtain a hand joint detection result.
According to some embodiments of the application, under the condition that the confidence coefficient of the hand region is larger than a preset threshold value, the hand region image to be detected, which is obtained by processing the hand region, is input into a target hand joint detection model, and a hand joint detection result is obtained. According to the embodiment of the application, accurate detection of the hand joint can be realized through the trained target hand joint detection model, and the detection efficiency is higher.
In some embodiments, before the hand region image to be detected is input into the target hand joint detection model, the method further comprises constructing a hand sample data set, wherein the hand sample data set comprises hand position regions and hand joint standard data in each hand sample of a plurality of hand samples, the hand joint standard data comprises three-dimensional coordinates and expected values of each hand joint point, training an initial hand joint detection model by using the hand sample data set, and determining the target hand joint detection model.
According to the method, the initial hand joint detection model is trained through the constructed hand sample data set to obtain the target hand joint detection model, and model support is provided for accurate detection of subsequent hand joints.
In some embodiments, the three-dimensional coordinates of each hand joint point characterize a two-dimensional position coordinate of each hand joint and a distance of each hand joint to the middle finger root region, and the expected value characterizes whether each hand joint point is within a boundary region of each hand sample.
According to the method and the device, the positions of the hand-off nodes are represented through three-dimensional coordinates, and accurate positioning of the hand-off nodes can be achieved.
In some embodiments, the constructing the hand sample data set comprises normalizing acquired hand image data to obtain a processed image, normalizing hand joints in the processed image to obtain the hand joint standard data, and performing transformation operation on hand position areas in the processed image to obtain the plurality of hand samples, wherein the transformation operation comprises offset and/or expansion.
According to the method and the device, standard and rich sample data can be obtained through normalization processing and standardization processing of hand image data and transformation operation of hand position areas, and rich data support is provided for subsequent model training.
In some embodiments, the training of the initial hand joint detection model includes a first training stage and a second training stage, wherein the first training stage is trained using a hand sample data set that has not undergone blurring and noise processing, and the second training stage is trained using a hand sample data set that has undergone blurring and noise processing.
Some embodiments of the application may improve the accuracy and stability of model training by training using different hand sample data sets during different training phases.
In some embodiments, the training the initial hand joint detection model by using the hand sample data set to determine the target hand joint detection model includes, in the first training stage, converting the hand position area of each hand sample into a gray image with a preset size, inputting the gray image into the initial hand joint detection model, outputting hand joint point data, comparing the hand joint point data with the hand joint standard data, determining that the hand joint detection model of the training meets a preset convergence condition, entering the second training stage, and executing the second training stage on the hand joint detection model of the training to obtain the target hand joint detection model.
In some embodiments, the hand region is obtained by using feature point matching to obtain the hand region of the current frame image if it is determined that the hand joint detection result of the previous frame image of the current frame image contains not less than a preset number of hand joint information, and using a hand joint detection model to detect the hand region of the current frame image if it is determined that the hand joint detection result of the previous frame image contains less than the preset number of hand joint information.
According to the method and the device for detecting the hand joint, the hand joint information in the hand joint detection result is analyzed, the detection mode of the hand region for obtaining the current frame image is determined, the computer overhead can be effectively reduced, and the hand joint detection efficiency in continuous frames is improved.
In a second aspect, some embodiments of the present application provide a device for detecting a hand joint in an eyeglass device, which includes an acquisition module configured to acquire a confidence coefficient of a hand region corresponding to a current frame image, a processing module configured to process the hand region to obtain a hand region image to be detected when the confidence coefficient is determined to be greater than a preset threshold, and a detection module configured to input the hand region image to be detected into a target hand joint detection model, and acquire a hand joint detection result.
In a third aspect, some embodiments of the application provide a computer readable storage medium having stored thereon a computer program which, when executed by a processor, performs a method according to any of the embodiments of the first aspect.
In a fourth aspect, some embodiments of the application provide an electronic device comprising a memory, a processor and a computer program stored on the memory and executable on the processor, wherein the processor is operable to implement a method according to any of the embodiments of the first aspect when executing the program.
In a fifth aspect, some embodiments of the application provide a computer program product comprising a computer program, wherein the computer program, when executed by a processor, is adapted to carry out the method according to any of the embodiments of the first aspect.
Detailed Description
The technical solutions of some embodiments of the present application will be described below with reference to the drawings in some embodiments of the present application.
It should be noted that like reference numerals and letters refer to like items in the following figures, and thus once an item is defined in one figure, no further definition or explanation thereof is necessary in the following figures. Meanwhile, in the description of the present application, the terms "first", "second", and the like are used only to distinguish the description, and are not to be construed as indicating or implying relative importance.
In the related art, with the development of augmented reality AR and virtual reality VR technologies, various types of smart glasses devices are continuously emerging. For example, MR glasses (as a specific example of a glasses device) are smart devices that combine AR and VR technologies that can seamlessly blend the virtual world with the real world, providing an entirely new visual experience . MR glasses capture real world objects and actions through technologies such as built-in ultrasonic sensors, cameras, LED screens and the like, and display virtual images in the glasses, so that users can see virtual objects in the real environment and interact with the virtual objects. Gesture recognition is currently performed mainly by panoramic cameras in eyeglass devices, but such gesture recognition is poor. The applicant has therefore proposed a way by which user gestures can be identified by hand joint detection. But the accuracy of hand joint detection in the prior art is lower.
In view of this, some embodiments of the present application provide a method for detecting a hand joint in an eyeglass device, where first a hand region is determined from a current frame image, and then, if it is confirmed that a confidence level of the hand region is greater than a preset threshold, the hand joint detection is performed using a trained target hand joint detection model, so as to obtain a hand joint detection result. Through the analysis of the confidence coefficient of the hand region, the support can be provided for the accuracy of the subsequent hand joint detection, and the hand joint detection is only carried out on the hand region meeting the confidence coefficient requirement, so that the computer overhead can be reasonably used, and the hardware resource can be reasonably utilized.
The overall construction of a system for hand joint detection in an eyeglass apparatus according to some embodiments of the present application is described below by way of example with reference to fig. 1.
As shown in fig. 1, some embodiments of the present application provide a system for hand joint detection in an eyeglass apparatus deployed in an eyeglass apparatus. The system for hand joint detection in the eyeglass apparatus may include a camera 100 and a detector 200. The camera 100 may collect video frames or image frames containing the hands of the target object. After the detector 200 receives the current frame image transmitted from the camera 100, it can identify the current frame image to obtain the hand region, and then calculate and analyze the confidence of the hand region to determine whether to detect the hand joint. In the case of confirming that the hand joint detection is performed, the target hand joint detection model pre-deployed inside the detector 200 may detect the hand region image to be detected corresponding to the hand region, and obtain a hand joint detection result. And carrying out gesture recognition or gesture analysis according to the detection result of the hand joint.
In some embodiments of the present application, the target hand joint detection model is pre-trained and deployed in a glasses device, which may be AR glasses, VR glasses, MR glasses, or the like, and embodiments of the present application are not limited in detail herein.
It can be appreciated that in order to achieve accurate detection of the hand joint of the current frame image, a target hand joint detection model needs to be acquired first. The following is an exemplary description of the implementation of the acquisition of a target hand joint detection model provided in some embodiments of the present application in conjunction with fig. 2. The following method for obtaining the target hand joint detection model may be performed by the detector 200 or may be performed by a server disposed outside the glasses apparatus, and embodiments of the present application are not limited herein.
Referring to fig. 2, fig. 2 is a flowchart of a method for obtaining a target hand joint detection model according to some embodiments of the present application, where the method for obtaining the target hand joint detection model may include:
S210, constructing a hand sample data set, wherein the hand sample data set comprises hand position areas in each hand sample in a plurality of hand samples and hand joint standard data, and the hand joint standard data comprises three-dimensional coordinates and expected values of each hand joint point. The three-dimensional coordinates of each hand joint point represent the two-dimensional position coordinates of each hand joint and the distance from each hand joint to the middle finger root area, and the expected value represents whether each hand joint point is in the boundary area of each hand sample.
For example, in some embodiments of the present application, rich training data is provided for subsequent model training by constructing a hand sample dataset containing 3D coordinates (x, y, z) (as one specific example of three-dimensional coordinates) and valid values (as one specific example of expected values) for each hand joint point of the hand (referred to as a hand joint for short). Where x, y in (x, y, z) is the position coordinates of the hand joint in the hand sample, and the z value of each hand joint point is mapped to the relative depth (i.e., distance) from the middle finger root region. In addition, the image of each hand sample is set with an image boundary, and the valid value represents whether each hand joint is in the image boundary, if so, the valid value is 1, otherwise, the valid value is 0. It should be noted that, there are 27 hand joints in a normal hand, and typically 21 hand joints are marked in the hand sample. In practical application, the number of hand joints in the hand sample can be set according to the actual requirement, so that the target hand joint detection model with the corresponding number can be conveniently trained, and the embodiment of the application is not particularly limited in the number of hand joints.
In some embodiments of the present application, S210 may include:
S211, carrying out normalization processing on the acquired hand image data to obtain a processed image.
For example, in some embodiments of the application, during the data collection phase, hand image data may be acquired by at least one of the following three means:
First, public image data that is appropriate for the eyeglass device scene is gathered from a public dataset, e.g., INTERHAND, EPIC-kichen, 3DPose, etc. For example, hand image data of the lens angle is collected because the distance of the palm and the lens is relatively similar to the camera 100 in the eyeglass device.
And secondly, generating hand image data, namely obtaining hand 3D models in various forms by using the 3D texture mapping. And driving a hand 3D model by using the joint by using the disclosed hand joint motion sequence data, projecting the image projected to a 2D plane according to the camera internal parameters in the glasses equipment, and fusing the image projected to the 2D plane with a large number of real images which do not contain hands to generate a large number of hand image data with rich background, hands and gestures. The hand image data includes information such as a rectangular position of the hand and a position of a hand joint. Note that the hand joint position definition of the hand 3D model in the above is identical to that mentioned above.
Thirdly, acquiring real hand image data, namely acquiring a large amount of hand image data containing hands and a small amount of pure background samples not containing hands by using target equipment, constructing hand position samples by using an open-source hand detection model (such as yolo and monado, mediapipe) in a multi-model voting mode, discarding samples with inconsistent voting results of the multiple models, detecting images in a rectangular hand position (namely the hand position) by using an existing open-source joint detection model, constructing joint position samples by using a multi-model voting mode, discarding samples with inconsistent voting results of the multiple models, and selecting hand image data with higher quality.
After the hand image data are obtained in the above manner, operations such as random rotation and perspective transformation (as a specific example of normalization processing) are performed on the hand image data, so that richer hand image data are obtained, and the richness of samples is increased. For the hand joint beyond the image boundary after transformation, the 3D coordinates of the hand joint are set to be (0, 0), and the corresponding valid value is set to be 0. The hand joint within the image boundary is then marked valid=1, and the 3D coordinates of the hand joint are determined according to its position in the image.
In addition, random blurring and noise adding processes (such as gaussian blurring, gaussian noise, pretzel noise, etc.) may be performed on portions of the hand image data, and portions of the data may not be subjected to blurring and noise adding processes, so as to facilitate subsequent application of the hand sample data set to subsequent first and second training phases, respectively.
And S212, normalizing the hand joint in the processed image, and obtaining the hand joint standard data.
For example, in some embodiments of the present application, the definition of the hand joints and the definition of the hand joint sequence in the hand image data acquired using the different modes are mapped uniformly into standard definitions, that is, the form of the three-dimensional coordinates mentioned above. For the missing hand joint or the hand joint beyond the image boundary, the position of the hand joint is set to (0, 0), and the valid value is set to 0.
S213, performing transformation operation on the hand position area in the processed image to obtain the plurality of hand samples, wherein the transformation operation comprises offset and/or expansion.
For example, in some embodiments of the present application, in order to cope with the hand position offset, operations such as random offset, random expansion, random shrinkage and the like may be performed on the hand position area in the processed image, so as to improve the robustness and stability of the target hand joint detection model of the subsequent training. For example, the offset direction and the offset distance are set to realize the offset processing of the hand position area to obtain the offset hand sample, or the area expansion value of the hand position area is set to expand the hand position area to the corresponding area. The embodiments of the present application are not particularly limited herein.
Specifically, when performing operations such as random offset and random expansion on the hand position area, the hand position area in the processed image needs to be marked first, so as to obtain a hand position rectangular frame. Left, top, width, height is used to denote the left, upper, wide, long of the rectangular box of hand positions, respectively. Random shifting is performed according to (left, top, width, height), for example, random noise e, f, e, f can be in the range of [ -10,10] is added to left and top, and updated data is obtained, that is, left=left+e, top=top+f. The hand position rectangular frame is randomly enlarged, namely random noise g, h, g and h can be added to the width and height, the range of h can be [ -10,10], and updated data is obtained, namely the width=width+g and the height=height+h. It can be appreciated that the above manner of adding random noise can realize random offset, random expansion or random contraction of the rectangular frame of hand position, and a rich hand sample data set for subsequent training is obtained. The value range of the random noise may be selected according to practical situations, and the embodiment of the present application is not specifically limited herein.
In addition, the hand sample detection method can also be used for keeping the proportion of high-quality hand sample pictures in the training hand sample data set as much as possible for the hand gestures in the case of difficult detection of finger shielding such as fist making and the like, and generating hand samples by using more corresponding articulation sequences. Wherein, the distance and the intersection of finger joint positions can be used for judging whether the shielding exists.
It should be noted that, in order to obtain a rich hand sample data set, various image processing manners may be used for the hand image data, for example, clipping into a uniform size, etc., and the embodiments of the present application are not limited to the above operations.
S220, training an initial hand joint detection model by using the hand sample data set, and determining the target hand joint detection model.
For example, in some embodiments of the present application, after a rich hand sample data set is constructed by the above embodiments, it may be used to train the initial hand joint detection model to obtain the target hand joint detection model.
In some embodiments of the application, the training of the initial hand joint detection model comprises a first training stage and a second training stage, wherein the first training stage is trained by using a hand sample data set which is not subjected to fuzzy processing and noise processing, and the second training stage is trained by using the hand sample data set which is subjected to the fuzzy processing and the noise processing.
For example, in some embodiments of the present application, in order to ensure convergence of the model, in an initial training phase of the model (as a specific example of the first training phase), no random blurring and noise-adding settings are performed, i.e., training is performed using a hand sample data set that is not subjected to blurring and noise-adding processing. And after the model converges and is gradually stabilized, adding the hand sample data set subjected to fuzzy and noise adding treatment for training. It should be noted that the quality of the model training output result after the blurring and noise adding processing is close to the quality of the real eyeglass device output result.
The above-described process is exemplarily set forth below.
In some embodiments of the present application, S220 may include converting the hand position area of each hand sample into a gray image of a preset size in the first training stage, inputting the gray image into an initial hand joint detection model, outputting hand joint point data, comparing the hand joint point data with the hand joint standard data, determining that the hand joint detection model of the present training meets a preset convergence condition, entering the second training stage, and executing the second training stage on the hand joint detection model of the present training to obtain the target hand joint detection model.
For example, in some embodiments of the present application, during model training, an image of a rectangular frame region of hand positions (as one specific example of a hand position region) in a hand sample data set is stretched into a 128×128 (as one specific example of a preset size) gray scale image. The gray scale image is then input into the initial hand joint detection model, outputting hand joint point data, for example, outputting (x, y, z) values of 21 hand joint points, and 21 valid values. And comparing the output hand joint node data with hand joint standard data in the hand sample data set, and confirming whether the hand joint detection model trained at the time meets the preset convergence condition. If the target hand joint detection model meets the requirement, a second training stage is entered, and after the second training stage is completed, the target hand joint detection model can be obtained. The preset size may be flexibly set, and the embodiment of the present application is not limited herein.
When entering the second training stage, the training may be performed based on the hand joint detection model of the present training, or may be performed based on the hand joint detection model of the present training after the model of the hand joint detection model of the present training is adjusted after the loss calculation is performed on the hand joint node data and the hand joint standard data, and the embodiment of the present application is not limited herein specifically.
In addition, whether the hand joint detection model trained at this time meets the preset convergence condition is judged, the accuracy of the result can be obtained by calculating the hand joint node data and the hand joint standard data, if the accuracy of the result is higher than a set value, the preset convergence condition is considered to be met, or an error value can be set, the error rate of the model can be obtained by calculating the hand joint node data and the hand joint standard data, and if the error rate of the model is lower than the set value, the preset convergence condition is considered to be met. In addition, the judgment criterion for completion of the second training stage may be that the number of training times has reached the set number of times, or that the accuracy of the model has been equal to or greater than the maximum value, or that the error rate of the model has been lower than the minimum value, or the like.
It should be understood that the end conditions of the first training phase and the second training phase may be set according to the actual application scenario, and embodiments of the present application are not limited thereto.
The specific process of hand joint detection in an eyeglass apparatus performed by the detector 200 provided by some embodiments of the present application is described below by way of example in connection with fig. 3.
Referring to fig. 3, fig. 3 is a flowchart of a method for detecting a hand joint in an eyeglass device according to some embodiments of the present application, where the method for detecting a hand joint in an eyeglass device may include:
s310, obtaining the confidence coefficient of the hand area corresponding to the current frame image.
For example, in some embodiments of the present application, after receiving a rectangular frame region (as a specific example of a hand region) of the hand position of the current frame image, the corresponding confidence thereof is calculated.
In some embodiments of the present application, S310 may include obtaining a hand region of the current frame image by using feature point matching if it is determined that the hand joint detection result of the previous frame image of the current frame image contains not less than a preset number of hand joint information, and detecting the hand region of the current frame image by using a hand joint detection model if it is determined that the hand joint detection result of the previous frame image contains less than the preset number of hand joint information.
For example, in some embodiments of the present application, the rectangular frame region of the hand position of the current frame image may be detected by the hand detection model, and the acquisition is obtained by feature point matching with the rectangular frame region of the hand position in the previous frame image. Which mode is specifically used is related to the number of hand joints (as a specific example of hand joint information) of the previous frame image output.
If the current frame image has the previous frame image, judging whether the number of hand joints detected by the target hand joint detection model on the previous frame image is more than 10 (as a specific example of the preset number), if so, detecting a rectangular area of the hand position in the current frame image in a characteristic point matching mode, otherwise, detecting by using the hand joint detection model. And if the current frame image does not exist in the previous frame image, detecting by using a hand joint detection model. In addition, the preset number of values can be flexibly set according to actual requirements, for example, 9 values, 11 values, etc., and the embodiment of the application is not limited to this.
It is understood that by detecting the hand position by using the feature point matching method under a certain condition, the calculation amount can be effectively reduced, and the hardware cost can be saved.
And S320, processing the hand region to obtain a hand region image to be detected under the condition that the confidence coefficient is confirmed to be larger than a preset threshold value.
For example, in some embodiments of the present application, if the confidence is greater than 0.95 (as one specific example of a preset threshold), the rectangular box region is stretched into a 128×128 gray image (as one specific example of a hand region image to be detected) using camera parameters and distortion parameters. If the confidence is not more than 0.95, the detection of the position of the opponent is considered to be failed, the detection of the hand joint is not carried out, and the next frame is directly processed.
S330, inputting the hand region image to be detected into a target hand joint detection model, and obtaining a hand joint detection result.
For example, in some embodiments of the present application, a 128×128 gray image is input into the target hand joint detection model trained by the above embodiments to perform joint detection, so as to obtain a hand joint detection result.
In an application scenario, if the hand joint data in the hand joint detection result of the current frame image is greater than a preset threshold value, a rectangular area of the hand position can be determined for the next frame image by using a characteristic point matching mode, and then whether hand joint detection is performed is determined through confidence coefficient calculation. And the operation is circularly executed until all the frame images are detected.
The following is an exemplary description of a specific procedure for hand joint detection in an eyeglass apparatus provided in accordance with some embodiments of the present application in conjunction with fig. 4.
Referring to fig. 4, fig. 4 is a flowchart illustrating a method for detecting a hand joint in an eyeglass device according to some embodiments of the present application.
S410, constructing a hand sample data set.
S420, training the initial hand joint detection model by using the hand sample data set, and determining a target hand joint detection model.
S430, identifying the current frame image and acquiring a hand area.
S440, obtaining the confidence coefficient of the hand area corresponding to the current frame image.
And S450, processing the hand region to obtain a hand region image to be detected under the condition that the confidence coefficient is greater than the preset threshold value.
S460, inputting the hand area image to be detected into a target hand joint detection model, and obtaining a hand joint detection result.
It should be noted that, the above embodiment only takes one frame of image as an example to illustrate the implementation process of the hand joint detection, and in practical application, there may be a case of continuously detecting each frame of image in the video frame. Whether continuous tracking detection is performed on a frame of image, the specific implementation process of S410 to S460 may refer to the method embodiments provided above, and detailed descriptions are omitted here for avoiding repetition.
Referring to fig. 5, fig. 5 is a block diagram illustrating an apparatus for detecting a hand joint in an eyeglass device according to some embodiments of the present application. It should be understood that the apparatus for detecting a hand joint in the eyeglass device corresponds to the above-described method embodiment, and is capable of performing the respective steps involved in the above-described method embodiment, and specific functions of the apparatus for detecting a hand joint in the eyeglass device may be referred to the above description, and detailed descriptions thereof are omitted herein as appropriate to avoid redundancy.
The device for detecting the hand joints in the glasses equipment of fig. 5 comprises at least one software functional module which can be stored in a memory in a form of software or firmware or solidified in the device for detecting the hand joints in the glasses equipment, wherein the device for detecting the hand joints in the glasses equipment comprises an acquisition module 510 for acquiring the confidence coefficient of the hand region corresponding to the current frame image, a processing module 520 for processing the hand region to obtain a hand region image to be detected under the condition that the confidence coefficient is confirmed to be larger than a preset threshold value, and a detection module 530 for inputting the hand region image to be detected into a target hand joint detection model to acquire a hand joint detection result.
It will be clear to those skilled in the art that, for convenience and brevity of description, reference may be made to the corresponding procedure in the foregoing method for the specific working procedure of the apparatus described above, and this will not be repeated here.
Some embodiments of the present application also provide a computer readable storage medium having stored thereon a computer program which, when executed by a processor, performs the operations of the method according to any of the above-described methods provided by the above-described embodiments.
Some embodiments of the present application also provide a computer program product, where the computer program product includes a computer program, where the computer program when executed by a processor may implement operations of a method corresponding to any of the above embodiments of the above method provided by the above embodiments.
As shown in fig. 6, some embodiments of the present application provide an electronic device 600, the electronic device 600 comprising a memory 610, a processor 620 and a computer program stored on the memory 610 and executable on the processor 620, wherein the processor 620 can implement the method of any of the embodiments described above when reading the program from the memory 610 and executing the program via a bus 630.
The processor 620 may process the digital signals and may include various computing structures. Such as a complex instruction set computer architecture, a reduced instruction set computer architecture, or an architecture that implements a combination of instruction sets. In some examples, the processor 620 may be a microprocessor.
Memory 610 may be used for storing instructions to be executed by processor 620 or data related to execution of the instructions. Such instructions and/or data may include code to implement some or all of the functions of one or more of the modules described in embodiments of the present application. The processor 620 of the disclosed embodiments may be configured to execute instructions in the memory 610 to implement the methods shown above. Memory 610 includes dynamic random access memory, static random access memory, flash memory, optical memory, or other memory known to those skilled in the art.
The above description is only an example of the present application and is not intended to limit the scope of the present application, and various modifications and variations will be apparent to those skilled in the art. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present application should be included in the protection scope of the present application. It should be noted that like reference numerals and letters refer to like items in the following figures, and thus once an item is defined in one figure, no further definition or explanation thereof is necessary in the following figures.
The foregoing is merely illustrative of the present application, and the present application is not limited thereto, and any person skilled in the art will readily recognize that variations or substitutions are within the scope of the present application. Therefore, the protection scope of the present application shall be subject to the protection scope of the claims.
It is noted that relational terms such as first and second, and the like are used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. Moreover, the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one does not exclude the presence of other like elements in a process, method, article, or apparatus that comprises an element.