The present disclosure is generally related to image template based tracking.
Typically, an image search involves comparing a template image of an object with an image frame to determine whether the object is detected in the image frame. An image of an object may differ from a template image of the same object in cases where the object is captured from a different angle or a different distance in the image as compared to the template image. In such cases, an image search can have difficulty (e.g., errors) in detecting the object in the image frame.
In a particular implementation, a device for image processing includes a memory and one or more processors. The memory is configured to store a target template. The one or more processors are configured to receive a first image frame from an image sensor. The one or more processors are also configured to use an image processing technique to detect first coordinates of a first region of the first image frame that matches the target template. The one or more processors are further configured to update the target template by copying a portion of the first image frame corresponding to the first coordinates and a first size. The one or more processors are also configured to receive a second image frame from the image sensor. The one or more processors are further configured to generate a plurality of pixel match counts based on a comparison of the target template with a plurality of regions of the first size of the second image frame. The one or more processors are also configured to determine that a second region of the second image frame matches the target template based at least in part on determining that a particular pixel match count of the second region corresponds to a highest pixel match count of the plurality of pixel match counts. The one or more processors are further configured to generate an output indicating second coordinates of the second region of the second image frame.
In another particular implementation, a method of image processing includes receiving a first image frame from an image sensor. The method also includes using an image processing technique to detect first coordinates of a first region of the first image frame that matches a target template. The method further includes updating the target template by copying a portion of the first image frame corresponding to the first coordinates and a first size. The method also includes receiving a second image frame from the image sensor. The method further includes generating a plurality of pixel match counts based on a comparison of the target template with a plurality of regions of the first size of the second image frame. The method also includes determining that a second region of the second image frame matches the target template based at least in part on determining that a particular pixel match count of the second region corresponds to a highest pixel match count of the plurality of pixel match counts. The method further includes generating an output indicating second coordinates of the second region of the second image frame.
In another particular implementation, a computer-readable storage device stores instructions that, when executed by one or more processors, cause the one or more processors to receive a first image frame from an image sensor. The instructions, when executed by the one or more processors, also cause the one or more processors to use an image processing technique to detect first coordinates of a first region of the first image frame that matches a target template. The instructions, when executed by the one or more processors, further cause the one or more processors to update the target template by copying a portion of the first image frame corresponding to the first coordinates and a first size. The instructions, when executed by the one or more processors, also cause the one or more processors to receive a second image frame from the image sensor. The instructions, when executed by the one or more processors, further cause the one or more processors to generate a plurality of pixel match counts based on a comparison of the target template with a plurality of regions of the first size of the second image frame. The instructions, when executed by the one or more processors, also cause the one or more processors to determine that a second region of the second image frame matches the target template based at least in part on determining that a particular pixel match count of the second region corresponds to a highest pixel match count of the plurality of pixel match counts. The instructions, when executed by the one or more processors, further cause the one or more processors to generate an output indicating second coordinates of the second region of the second image frame.
The features, functions, and advantages described herein can be achieved independently in various implementations or may be combined in yet other implementations, further details of which can be found with reference to the following description and drawings.
Aspects disclosed herein present systems and methods of image template based tracking. An image analyzer receives image frames from an image sensor. The image analyzer uses an image processing technique to detect an object in a first image frame. For example, the image analyzer uses the image processing technique to detect first coordinates of a match region of the first image frame that matches a target template of the object. The image analyzer updates the target template by copying a portion of the first image frame that corresponds to the first coordinates. For example, the portion of the first image frame includes the match region. The image analyzer tracks the object in subsequent image frames based on a pixel-by-pixel comparison of regions of the subsequent image frames and the updated target template. The updated target template can more closely resemble the object as captured by the image sensor, resulting in fewer (e.g., none) image detection errors.
The figures and the following description illustrate specific exemplary embodiments. It will be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles described herein and are included within the scope of the claims that follow this description. Furthermore, any examples described herein are intended to aid in understanding the principles of the disclosure and are to be construed as being without limitation. As a result, this disclosure is not limited to the specific embodiments or examples described below, but by the claims and their equivalents.
Particular implementations are described herein with reference to the drawings. In the description, common features are designated by common reference numbers throughout the drawings. As used herein, various terminology is used for the purpose of describing particular implementations only and is not intended to be limiting. For example, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. Further, some features described herein are singular in some implementations and plural in other implementations. To illustrate,
The terms “comprise,” “comprises,” and “comprising” are used interchangeably with “include,” “includes,” or “including.” Additionally, the term “wherein” is used interchangeably with the term “where.” As used herein, “exemplary” indicates an example, an implementation, and/or an aspect, and should not be construed as limiting or as indicating a preference or a preferred implementation. As used herein, an ordinal term (e.g., “first,” “second,” “third,” etc.) used to modify an element, such as a structure, a component, an operation, etc., does not by itself indicate any priority or order of the element with respect to another element, but rather merely distinguishes the element from another element having a same name (but for use of the ordinal term). As used herein, the term “set” refers to a grouping of one or more elements, and the term “plurality” refers to multiple elements.
As used herein, “generating”, “calculating”, “using”, “selecting”, “accessing”, and “determining” are interchangeable unless context indicates otherwise. For example, “generating”, “calculating”, or “determining” a parameter (or a signal) can refer to actively generating, calculating, or determining the parameter (or the signal) or can refer to using, selecting, or accessing the parameter (or signal) that is already generated, such as by another component or device. As used herein, “coupled” can include “communicatively coupled,” “electrically coupled,” or “physically coupled,” and can also (or alternatively) include any combinations thereof. Two devices (or components) can be coupled (e.g., communicatively coupled, electrically coupled, or physically coupled) directly or indirectly via one or more other devices, components, wires, buses, networks (e.g., a wired network, a wireless network, or a combination thereof), etc. Two devices (or components) that are electrically coupled can be included in the same device or in different devices and can be connected via electronics, one or more connectors, or inductive coupling, as illustrative, non-limiting examples. In some implementations, two devices (or components) that are communicatively coupled, such as in electrical communication, can send and receive electrical signals (digital signals or analog signals) directly or indirectly, such as via one or more wires, buses, networks, etc. As used herein, “directly coupled” is used to describe two devices that are coupled (e.g., communicatively coupled, electrically coupled, or physically coupled) without intervening components.
Referring to
The device 102 includes a memory 136, an image analyzer 112, or both. Although the image analyzer 112, the device 102, the image sensor 122, and the display 124 are depicted as separate components, in other implementations the described functionality of two or more of the image analyzer 112, the device 102, the image sensor 122, and the display 124 can be performed by a single component. In some implementations, the image analyzer 112 can be represented in hardware, such as via an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA), or the operations described with reference to the elements may be performed by a processor executing computer-readable instructions.
The memory 136 is configured to store a target template 138. For example, the target template 138 includes an image of at least a portion of an object to be tracked. For example, the object includes a drogue basket that is attached to a fuel tanker and is to be tracked by an aircraft to enable inflight refueling of the aircraft, as further described with reference to
During operation, a user 126 (e.g., a pilot of an aircraft) activates the image sensor 122 to generate one or more image frames 130 (e.g., color image frames, greyscale image frames, infrared image frames, etc). For example, the image frames 130 include an image frame 106, an image frame 108, and an image frame 110 captured at a first time, a second time, and a third time, respectively. To illustrate, a timestamp associated with an image frame indicates a time at which the image frame is captured by the image sensor 122. In a particular aspect, the second time is subsequent to the first time and the third time is subsequent to the second time.
The image analyzer 112 processes the image frames 130, as further described with reference to
The image analyzer 112, in response to determining that the image frame 106 includes the match region 104 that matches the target template 138, updates the target template 138 by copying a portion of the image frame 106 corresponding to the coordinates 118 and a first size. In a particular example, the first size is equal to a size of the match region 104 (e.g., a region size). In this example, the image analyzer 112 updates the target template 138 by copying the match region 104. To illustrate, the image analyzer 112 replaces a previous version of the target template 138 (used to find the match region 104) with the match region 104. In a particular example, the first size is based on a configuration setting, a user input, a default value, or a combination thereof. In this example, the image analyzer 112 replaces the previous version of the target template 138 with a portion of the image frame 106 that includes at least a portion of the match region 104. To illustrate, in cases where the first size is smaller than the region size, the image analyzer 112 replaces the target template 138 with a portion of the match region 104. For example, a portion of the object to be tracked (e.g., a drogue basket) can include a distinctive pattern and the image analyzer 112 may update the target template 138 to include a portion of the image frame 106 corresponding to the portion of the object to be tracked. In a particular aspect, although the match region 104 is considered a match for the previous version of the target template 138 by the image processing technique 132, the match region 104 may differ from (e.g., is not an exact copy of) the previous version of the target template 138. Updating the target template 138 enables the target template 138 to more closely resemble the object as captured by the image sensor 122.
The image analyzer 112, subsequent to updating the target template 138 based on the image frame 106, processes the image frame 108, as further described with reference to
The image analyzer 112 generates an output 128 indicating the coordinates 120. For example, the output 128 includes a graphical user interface that indicates the coordinates 120, the region 116 of the image frame 108, or both. The image analyzer 112 provides the output 128 to the display 124. In a particular aspect, the user 126 (e.g., a pilot) can use the output 128 (e.g., the coordinates 120) to aim a probe to engage with the drogue basket to initiate refueling, as further described with reference to
The system 100 thus enables using a combination of an image processing technique 132 and pixel-by-pixel comparison to detect an object to be tracked. For example, the image processing technique 132 can be used to focus the pixel-by-pixel comparison in regions that are more likely to correspond to the object to be tracked. The system 100 also enables updating of the target template 138 to more closely match the object as captured by the image sensor 122.
Referring to
The method 200 includes retrieving a target template from memory, at 202. For example, the image analyzer 112 of
The method 200 also includes receiving a frame F, at 204. For example, the image analyzer 112 of
The method 200 further includes using a Hough circle transform to determine detected coordinates and a detected size of a match region in the frame F that matches a target template, at 206. For example, the image analyzer 112 of
The method 200 also includes determining whether a match is found, at 208. For example, the image analyzer 112 determines whether the image processing technique 132 indicates that the image frame 106 includes a region that matches the target template 138. The method 200, in response to a determination that a match is not found, at 208, returns to 204. For example, the image analyzer 112 of
The method 200 includes, in response to determining that a match is found, at 208, outputting the detected coordinates of the match region detected in the frame F, at 210. For example, the image analyzer 112 of
The method 200 also includes initializing previous coordinates to the detected coordinates, the previous frame to the frame F, and detected to false, at 212. For example, the image analyzer 112 of
The method 200 further includes initializing a previous size to the detected size, at 214. For example, the image analyzer 112 of
The method 200 also includes receiving a frame F, at 216. For example, the image analyzer 112 of
The method 200 further includes processing the image frame F, at 218. For example, the image analyzer 112 of
The method 200 also includes determining whether a match region is detected in the image frame F, at 220. For example, the image analyzer 112 of
The method 200 includes, in response to determining that the match region is not detected, at 220, increasing the previous size, at 222. For example, the image analyzer 112 increases the previous size based on a default value, a configuration setting, a user input, or a combination thereof. Increasing the previous size enables updating of the target template 138 to correspond to a larger portion of the image frame 106 that includes at least a portion of the match region 104, as further described with reference to
The method 200 thus enables using the Hough circle transform to detect a match region in a particular frame and processing subsequent frames to detect match regions based on the detected match region of the particular frame. The method 200 also enables output of coordinates of the match regions.
Referring to
The method 218 includes updating the target template by copying pixel intensity values of the previous frame that correspond to the previous coordinates and the previous size, at 302. For example, the image analyzer 112 of
The method 218 includes initializing a largest match M to zero, at 304. For example, the image analyzer 112 of
The method 218 includes determining whether the frame F has another region R (of the previous size) to be processed, at 306. For example, the image analyzer 112 identifies a plurality of regions of the image frame 108 of the previous size (e.g., the region size or larger than the region size). The image analyzer 112 determines whether the plurality of regions includes a next region to be processed. The method 218, based on determining that the frame F includes another region R to be processed, at 306, proceeds to 308.
The method 218 includes, in response to determining that the image frame 108 includes a region 114 to be processed, initializing one or more variables based on default values. For example, in
The method 218 includes determining whether the region R includes another pixel P to be processed, at 310. For example, the image analyzer 112 of
The method 218 includes, in response to determining that the region R includes another pixel P to be processed, at 310, processing the pixel P, at 312, as further described with reference to
The method 218 includes, in response to determining that the region R does not include another pixel P to be processed, determining whether the match count for the region R is greater than the largest match M for the frame F, at 314. For example, the image analyzer 112, in response to determining that all pixels of the region 114 have been processed, determines whether the match count for the region 114 exceeds the highest pixel match count for the region 114. The method 218, in response to determining that the match count for the region R does not exceed the largest match count M for the frame F, proceeds to 306. For example, the image analyzer 112, in response to determining that the match count for the region 114 does not exceed a highest pixel match count previously detected for another region of the image frame 108, proceeds to determine whether the image frame 108 includes another region to be processed.
The method 218 includes, in response to determining that the match count for the region R is greater than the largest match M for the frame F, at 314, determining whether coordinates of the region R are within a distance threshold of the previous coordinates and whether the match count of the region R is greater than or equal to a match threshold, at 316. For example, the image analyzer 112 of
The method 218 includes, in response to determining that coordinates of the region R are within the distance threshold of the previous coordinates and the match count of the region R is greater than the match count threshold, at 316, setting the largest match M to indicate the match count of the region 114, setting the detected coordinates to the coordinates of the region 114, setting detected to true, and setting largestsame to allvaluessame, or a combination thereof, at 318. For example, the image analyzer 112 of
The method 218 includes, based on determining that the frame F does not include another region R to be processed, at 306, determining whether largestsame is true, at 320. For example, the image analyzer 112 of
The method 218, in response to determining that the largest same is false, at 320, proceeds to end. For example, the image analyzer 112, in response to determining that the largest same variable indicates that each pixel of the largest matching region (if any) does not include the same pixel value, refrains from updating detected. For example, detected remains false (e.g., initialized to false at 212 of
The method 218 thus enables a comparison of regions of the image frame 108 to the target template 138 that includes the match region 104 detected in the image frame 106. The method 218 identifies a region having a highest pixel match count as a closest match for the match region 104.
Referring to
The method 312 includes determining whether the pixel value is equal to a pixel intensity value of a corresponding pixel T of the target template, at 402. For example, a pixel value variable indicates a default pixel value (e.g., 0) or a first pixel value of a previously processed pixel (e.g., a first pixel) of the region 114. The image analyzer 112, during processing of a second pixel of the region 114, identifies a second particular pixel of the target template 138 that corresponds to the second pixel of the region 114. For example, a row offset of the second pixel within the region 114 is equal to a row of the second particular pixel within the target template 138 and a column offset of the second pixel within the region 114 is equal to a column of the second pixel within the target template 138. The image analyzer 112 determines whether the pixel value variable (e.g., initialized to zero or corresponding to the first pixel) is equal to a pixel value of the second particular pixel of the target template 138.
The method 312 includes, in response to determining that the pixel value is not equal to the pixel intensity value of a corresponding pixel T of the target template, at 402, setting allvaluessame to false, at 404. For example, the image analyzer 112, in response to determining that the pixel value variable is not equal to the pixel value of the second particular pixel of the target template 138, sets the allvaluessame variable to false to indicate that the region 114 includes at least one pixel value that is different from another pixel value of the region 114 or includes at least one pixel value that is distinct from the default pixel value. The method 312, in response to determining that the pixel value variable is equal to the pixel intensity value of the corresponding pixel T of the target template, at 402, proceeds to 406.
The method 312 includes setting the pixel value to indicate a pixel intensity value of the pixel P, at 406. For example, the image analyzer 112 of
The method 312 also includes determining whether the pixel value is within a pixel value threshold of the pixel intensity value of the pixel T of the target template, at 408. For example, the image analyzer 112 of
The method 312 further includes, in response to determining that the pixel value is within the pixel value threshold of the pixel intensity value of the pixel T, at 408, incrementing the match count for the region R, at 410. For example, the image analyzer 112, in response to determining that the pixel value variable is within a pixel value threshold of the pixel intensity value of the second particular pixel of the target template 138, increments (e.g., by 1) the match count for the region 114. The method 312, in response to determining that the pixel value is not within the pixel value threshold of the pixel intensity value of the pixel T, at 408, proceeds to end. For example, the image analyzer 112, in response to determining that the pixel value variable exceeds (e.g., is not within) the pixel value threshold of the pixel intensity value of the second particular pixel of the target template 138, refrains from updating the match count for the region 114.
The method 312 thus enables determining a match count for a region based on a pixel-by-pixel comparison. In a particular aspect, the method 312 enables detecting whether each pixel of the region includes the same pixel value (e.g., a default pixel value). In a particular implementation, the image analyzer 112 disregards regions that indicate the same pixel value for each pixel.
Referring to
The fuel tanker 502 is coupled via a hose 504 to a drogue basket 506. The aircraft 508 includes a probe 510 that is configured to couple with (e.g., physically attach to) the drogue basket 506. The fuel tanker 502 is configured to provide fuel via the hose 504 to the aircraft 508 while the probe 510 is coupled to the drogue basket 506.
The aircraft 508 includes the image analyzer 112 and the image sensor 122. In a particular aspect, the image sensor 122 is located at or near an end of the probe 510. During operation, a pilot activates the image sensor 122 to capture image frames 130. The image analyzer 112 processes the image frames 130 to detect coordinates (e.g., the coordinates 118 and the coordinates 120) of the drogue basket 506 and provides the coordinates to a display 124, a navigation system, or both, of the aircraft 508. The pilot, the navigation system, or both, maneuver the aircraft 508, the probe 510, or both, based on the coordinates to engage the probe 510 with the drogue basket 506 to initiate refueling of the aircraft 508.
Referring to
The method 600 includes receiving a first image frame from an image sensor, at 602. For example, the image analyzer 112 of
The method 600 also includes using an image processing technique to detect first coordinates of a first region of the first image frame that matches a target template, at 604. For example, the image analyzer 112 uses an image processing technique 132 to detect coordinates 118 of the match region 104 of the image frame 106 that matches the target template 138, as described with reference to
The method 600 further includes updating the target template by copying a portion of the first image frame corresponding to the first coordinates and a first size, at 606. For example, the image analyzer 112 of
The method 600 also includes receiving a second image frame from the image sensor, at 608. For example, the image analyzer 112 of
The method 600 further includes generating a plurality of pixel match counts based on a comparison of the target template with a plurality of regions of the first size of the second image frame, at 610. For example, the image analyzer 112 of
The method 600 also includes determining that a second region of the second image frame matches the target template based at least in part on determining that a particular pixel match count of the second region corresponds to a highest pixel match count of the plurality of pixel match counts, at 612. For example, the image analyzer 112 of
The method 600 further includes generating an output indicating second coordinates of the second region of the second image frame, at 614. For example, the image analyzer 112 of
The method 600 thus enables using an image processing technique to detect an object in a particular image frame that matches a target template and using pixel-by-pixel comparison to detect the object in subsequent image frames. The pixel-by-pixel comparison is performed based on the matching region detected by the image processing technique. The pixel-by-pixel comparison may be performed based on the matching region that more closely (as compared to the target template) matches the object as captured by the image sensor.
Referring to
During production, the method 700 includes, at 706, component and subassembly manufacturing and, at 708, system integration of the aircraft. For example, the method 700 may include component and subassembly manufacturing of the image analyzer 112 and system integration of the image analyzer 112. At 710, the method 700 includes certification and delivery of the aircraft and, at 712, placing the aircraft in service. Certification and delivery may include certification of the image analyzer 112 to place the image analyzer 112 in service. While in service by a customer, the aircraft may be scheduled for routine maintenance and service (which may also include modification, reconfiguration, refurbishment, and so on). At 714, the method 700 includes performing maintenance and service on the aircraft, which may include performing maintenance and service on the image analyzer 112.
Each of the processes of the method 700 may be performed or carried out by a system integrator, a third party, and/or an operator (e.g., a customer). For the purposes of this description, a system integrator may include without limitation any number of aircraft manufacturers and major-system subcontractors; a third party may include without limitation any number of venders, subcontractors, and suppliers; and an operator may be an airline, leasing company, military entity, service organization, and so on.
Aspects of the disclosure can be described in the context of an example of a vehicle. A particular example of a vehicle is an aircraft 800 as shown in
In the example of
The computing device 910 includes one or more processors 920. The processor(s) 920 are configured to communicate with system memory 930, one or more storage devices 940, one or more input/output interfaces 950, one or more communications interfaces 960, or any combination thereof. The system memory 930 includes volatile memory devices (e.g., random access memory (RAM) devices), nonvolatile memory devices (e.g., read-only memory (ROM) devices, programmable read-only memory, and flash memory), or both. The system memory 930 stores an operating system 932, which may include a basic input/output system for booting the computing device 910 as well as a full operating system to enable the computing device 910 to interact with users, other programs, and other devices. The system memory 930 stores system (program) data 936, such as the target template 138, the image frames 130, the coordinates 118, the coordinates 120, or a combination thereof. In a particular aspect, the system memory 930 includes the memory 136 of
The system memory 930 includes one or more applications 934 (e.g., sets of instructions) executable by the processor(s) 920. As an example, the one or more applications 934 include instructions executable by the processor(s) 920 to initiate, control, or perform one or more operations described with reference to
In a particular implementation, the system memory 930 includes a non-transitory, computer readable medium storing the instructions that, when executed by the processor(s) 920, cause the processor(s) 920 to initiate, perform, or control operations to perform image template based tracking of an object. The operations include receiving a first image frame from an image sensor and using an image processing technique to detect first coordinates of a first region of the first image frame that matches a target template. The operations also include updating the target template by copying a portion of the first image frame corresponding to the first coordinates and a first size. The operations further include receiving a second image frame from the image sensor and generating a plurality of pixel match counts based on a comparison of the target template with a plurality of regions of the first size of the second image frame. The operations also include determining that a second region of the second image frame matches the target template based at least in part on determining that a particular pixel match count of the second region corresponds to a highest pixel match count of the plurality of pixel match counts. The operations further include generating an output indicating second coordinates of the second region of the second image frame.
The one or more storage devices 940 include nonvolatile storage devices, such as magnetic disks, optical disks, or flash memory devices. In a particular example, the storage devices 940 include both removable and non-removable memory devices. The storage devices 940 are configured to store an operating system, images of operating systems, applications (e.g., one or more of the applications 934), and program data (e.g., the program data 936). In a particular aspect, the system memory 930, the storage devices 940, or both, include tangible computer-readable media. In a particular aspect, one or more of the storage devices 940 are external to the computing device 910.
The one or more input/output interfaces 950 enable the computing device 910 to communicate with one or more input/output devices 970 to facilitate user interaction. For example, the one or more input/output interfaces 950 can include a display interface, an input interface, or both. For example, the input/output interface 950 is adapted to receive input from a user, to receive input from another computing device, or a combination thereof. In some implementations, the input/output interface 950 conforms to one or more standard interface protocols, including serial interfaces (e.g., universal serial bus (USB) interfaces or Institute of Electrical and Electronics Engineers (IEEE) interface standards), parallel interfaces, display adapters, audio adapters, or custom interfaces (“IEEE” is a registered trademark of The Institute of Electrical and Electronics Engineers, Inc. of Piscataway, N.J.). In some implementations, the input/output device 970 includes one or more user interface devices and displays, including some combination of buttons, keyboards, pointing devices, displays, speakers, microphones, touch screens, and other devices. For example, the input/output device 970 includes the image sensor 122, the display 124, or both.
The processor(s) 920 are configured to communicate with devices or controllers 980 via the one or more communications interfaces 960. For example, the one or more communications interfaces 960 can include a network interface.
In some implementations, a non-transitory, computer readable medium stores instructions that, when executed by one or more processors, cause the one or more processors to initiate, perform, or control operations to perform part or all of the functionality described above. For example, the instructions may be executable to implement one or more of the operations or methods of
The illustrations of the examples described herein are intended to provide a general understanding of the structure of the various implementations. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other implementations may be apparent to those of skill in the art upon reviewing the disclosure. Other implementations may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. For example, method operations may be performed in a different order than shown in the figures or one or more method operations may be omitted. Accordingly, the disclosure and the figures are to be regarded as illustrative rather than restrictive.
Moreover, although specific examples have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar results may be substituted for the specific implementations shown. This disclosure is intended to cover any and all subsequent adaptations or variations of various implementations. Combinations of the above implementations, and other implementations not specifically described herein, will be apparent to those of skill in the art upon reviewing the description.
The Abstract of the Disclosure is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, various features may be grouped together or described in a single implementation for the purpose of streamlining the disclosure. Examples described above illustrate but do not limit the disclosure. It should also be understood that numerous modifications and variations are possible in accordance with the principles of the present disclosure. As the following claims reflect, the claimed subject matter may be directed to less than all of the features of any of the disclosed examples. Accordingly, the scope of the disclosure is defined by the following claims and their equivalents.