The present invention generally relates to optical character recognition systems and more particularly relates to systems and methods for improving recognition speed.
Traditional optical character recognition (OCR) systems often tend to sacrifice speed in the interests of ensuring accuracy in character recognition. The traditional character recognition process typically incorporates a template to execute a character-by-character recognition of various characters. The template, which can be one of a number of different types of templates, is associated with a pattern-matching algorithm that identifies a specific numeral or a letter of an alphabet. Certain characters such as the numeral zero and the letter “O” are relatively similar to each other. Consequently, the process of using the pattern-matching algorithm tends to be slow in order to ensure that such characters are not misinterpreted. However, it is desirable to provide systems and methods that provide for faster optical character recognition without sacrificing accuracy.
In an exemplary embodiment in accordance with the disclosure, a method includes using an optical character recognition system to execute an optical character recognition procedure. The optical character recognition procedure includes applying a grid-based template to a character having a monospaced font; defining in the grid-based template, a first grid section that includes a first portion of the character when the character has a first size and excludes the first portion of the character when the character has a second size that is smaller than the first size; and recognizing the character as a numeral when the first grid section includes the first portion of the character.
In another exemplary embodiment in accordance with the disclosure, a method includes providing to an optical character recognition system, a barcode label containing a plurality of digits, and using the optical character recognition system to execute an optical character recognition procedure. The optical character recognition procedure includes applying a bounding box to an individual digit among the plurality of digits contained in the barcode label; applying a grid-based template to the bounding box, the grid-based template comprising a plurality of grid sections; and using the plurality of grid sections to identify the individual digit contained in the bounding box.
In yet another exemplary embodiment in accordance with the disclosure, a method includes using an optical character recognition system to execute an optical character recognition procedure. The optical character recognition procedure includes applying a bounding box to a character; applying a grid-based template to the bounding box; defining a portion of the grid-based template as a primary search area; and using at least the primary search area to identify the character contained in the bounding box.
The foregoing illustrative summary, as well as other exemplary objectives and/or advantages described in this disclosure, and the manner in which the same are accomplished, are further explained within the following detailed description and its accompanying drawings.
Throughout this description, embodiments and variations are described for the purpose of illustrating uses and implementations of inventive concepts. The illustrative description should be understood as presenting examples of inventive concepts, rather than as limiting the scope of the concepts as disclosed herein. Towards this end, certain words and terms are used herein solely for convenience and such words and terms should be broadly understood as encompassing various objects and actions that are generally understood in various forms and equivalencies by persons of ordinary skill in the art. For example, the word “numeral” as used herein is equally applicable to other words such as “digit” and “number.” The word “character” as used herein pertains to any printed or written material that is recognizable using optical character recognition techniques. It should also be understood that the word “example” as used herein is intended to be non-exclusionary and non-limiting in nature. More particularly, the word “exemplary” as used herein indicates one among several examples and it should be understood that no special emphasis, exclusivity, or preference, is associated or implied by the use of this word.
The present disclosure is generally directed to systems and methods for executing optical character recognition faster than at least some traditional OCR systems, without sacrificing recognition accuracy. Towards this end, various exemplary embodiments involve the use of a bounding box and a grid-based template to identify certain unique aspects of each of various characters and/or numerals. For example, in one embodiment, the grid-based template can be used to recognize a numeral and/or a character based on a difference in centerline height between the numeral and the character when a monospaced font is used. In another exemplary embodiment, the grid-based template can be used to recognize an individual digit among a plurality of digits based on certain parts of the individual digit being uniquely located in specific portions of the grid-based template.
When in operation, the image scanning system 110 captures an image of characters and text located on an object 107 such as a printed sheet of paper or a machine-readable zone (MRZ) on a passport. The captured image is provided to the computer 105 via a communication link 106 (wire, communications cable, wireless etc.). The computer 105 includes OCR software that is used to carry out OCR operations upon the captured image in accordance with the disclosure.
In an alternative embodiment, the computer 105 can be omitted and the OCR software incorporated into the image scanning system 110, which operates as a multifunction unit to execute various operations such as scanning, printing, faxing, and OCR.
In yet another alternative embodiment, the image scanning system 110 can be omitted and the computer 105 configured to generate a document and/or receive a document via a communication network such as the Internet. OCR software contained in the computer 105 in accordance with the disclosure can then be used to carry out OCR operations upon the received/generated document.
More particularly, in accordance with the disclosure, the grid-based template 300 can be used to perform character recognition upon various text characters such as a numeral “9” and a letter “P” of an alphabet that are shown as examples. In one or more exemplary implementations, the characters can conform to what is known in the industry as an OCR font. One specific OCR font that is popular in the industry is an OCR-B font. The OCR-B font, which resembles an Ariel font to some extent, is used on various items such as passports, car license plates, and as human-readable characters in barcode symbols (European Article Number (EAN) barcodes and Universal Product Code (U.P.C.) barcodes for example).
The OCR-B font has been specifically tailored to minimize machine reading errors. However, even with such tailoring, it is often quite time-consuming for traditional OCR systems to execute character recognition, because each character has to be recognized using a multi-step template-based matching procedure involving the use of a number of templates. For example, the International Civil Aviation Organization (ICAO) uses thirty-seven templates for identifying various characters in a passport. Thus, for a symbol containing 20 characters, a traditional multi-step template-based matching procedure can involve executing 740 match attempts using the thirty-seven templates (20×37=740).
The use of the grid-based template 300 to perform character recognition in accordance with the disclosure will now be described. The similarity in shapes between these two exemplary characters (“9” and “P”) poses a challenge to any OCR system, particularly to a traditional system that uses a multi-step template-based matching procedure involving a relatively large number of templates. Thus, in one exemplary method in accordance with the disclosure, the first step involves the use of the grid-based template 300 to identify differences between the two characters on the basis of size. Such an approach takes advantage of the fact that in various fonts, and particularly in the OCR-B font, numerals have a different size in comparison to the letters of an alphabet.
More particularly, the OCR-B font is a monospaced font having a fixed distance spacing between adjacent characters and variable-height for the various characters. The rectangular shape of the grid-based template 300 is configured to accommodate numerals and letters that are aligned with respect to a common reference point (in this example, the common reference point corresponds to the coordinates 0,0 of the grid-based template 300), thereby allowing a comparison of centerline heights between two or more characters. The numerals can be quickly detected based on the fact that the centerline height of all numerals is greater than the centerline height of all letters of an alphabet when the OCR-B font is used. In some implementations in accordance with the disclosure, a primary search area can be defined as a circle having a diameter that is substantially equal to a width of the monospaced font or an oval having a minor axis that is substantially equal to a width of the monospaced font and a major axis that is substantially equal to a centerline height of a numeral in the monospaced font.
With respect to the two exemplary characters shown in
The software algorithm used for executing the grid-based template 300 can recognize that a portion of the numeral “9” is present in certain grid sections such as in grid section 305 and grid section 310, whereas no portion of the letter “P” (which is shorter than the numeral “9”) is present in either grid section 305 or grid section 310. More particularly, when using the exemplary grid-based template 300, none of the grid sections above the numerical coordinate 120 will contain any portion of a letter.
Thus, in accordance with the disclosure, the software algorithm is used to apply the grid-based template 300 to an image and rapidly differentiate between a numeral and a letter based on the centerline height difference between numerals and letters of a monospaced font. The differentiating procedure thus eliminates a large subset of characters from being considered as potential candidates for further processing.
The processing involves identifying a letter by searching for a presence of a portion of a number of candidate letters (a through z, when the letter is a part of an English alphabet) in various grid sections of the grid-based template 300. An inefficient way to carry out the search would involve a time-consuming scan of each and every grid section of the grid-based template 300. On the other hand, in accordance with the disclosure, the search is carried out by first eliminating from the search, grid sections that are known beforehand as areas in which any portion of any letter will not be present. The search is thus confined to areas where it is feasible that portions of any one of various letters may be present. The search is further narrowed to examine certain unique grid coordinate locations on the grid-based template 300 that would assist in quickly identifying a specific letter among all the potential candidates.
Accordingly, in one exemplary embodiment, the narrowed search procedure involves examining a group of three coordinate locations in a minimal group of grid sections along the y-axis of the grid-based template 300. The three coordinate locations (coordinate location 405, coordinate location 410, and coordinate location 415) provide information that assists in uniquely identifying a particular letter among a set of letters. The set of letters shown in exemplary
A portion of the letter W is present at a coordinate location 410 corresponding to (0, 68), which is unique to the letter W. No portion of A, J or M is present at the second coordinate location 410.
A portion of the letter J is present at the coordinate location 415 corresponding to (0, 8), which is unique to the letter J. No portion of A, M or W is present at the third coordinate location 415.
The letter M has no portion present at any of the coordinate location 405, the coordinate location 410, or the coordinate location 415.
In another exemplary embodiment, the narrowed search procedure involves examining a set of four grid sections located at four corners of the grid-based template 300. This set of four grid sections can provide additional information such as the presence of portions of each of multiple letters and/or an absence of one or more portions of one or more letters.
Upon completing the search procedure at the group of three exemplary coordinate locations, the software algorithm uses a lookup table to at least make a preliminary determination of the identity of the letter. The lookup table includes information indicating that the letter A is uniquely identifiable via the first coordinate location 405, the letter W is uniquely identifiable via the second coordinate location 410, the letter J is uniquely identifiable via the third coordinate location 415, and so on. Using a compact search procedure that is based on three unique coordinate locations (in this example) coupled with the use of a lookup table, allows for a fast recognition of various letters in accordance with the disclosure. In other exemplary search procedures, fewer or greater than three coordinate locations can be used. Furthermore, in some embodiments, the use of unique coordinate locations as described above, allows for execution of a search procedure for identifying a letter without necessarily first making a determination whether the character is a numeral or a letter.
Accordingly, in one exemplary embodiment, a search procedure is carried out by first eliminating from the search, grid sections that are known beforehand as areas in which any portion of any numeral will not be present. The search is thus confined to areas where any one of various numerals can be present. However, the search is further narrowed to first examine certain unique grid sections and/or grid coordinate locations where portions of one or more specific numerals may be present.
Accordingly, in one exemplary embodiment, the narrowed search procedure involves detecting the numeral “1” (indicated in a dashed line format) by examining four coordinate locations located in four specific grid sections that constitute a minimal group of grid sections in this case. The presence of a portion of a numeral at the coordinate location 605 (first coordinate location) provides a strong indication that the numeral can be a “1”. The identity of the numeral can be confirmed by examining three additional coordinate locations, which in this case correspond to the coordinate location 610, the coordinate location 615, and the coordinate location 620. The presence of other portions of the numeral at each additional coordinate location provides a continuously increasing level of confidence that the numeral is indeed a “1”. Thus, testing four coordinate locations at most provides a strong indication that the recognized numeral is a “1” without having to search additional areas of the grid-based template 300. Other numerals can be similarly recognized using fewer or more number of coordinate locations.
Upon completing the search procedure for the numeral “1” at the exemplary coordinate locations, the software algorithm uses a lookup table to at least make a preliminary determination of the identity of the numeral. The lookup table includes information indicating that the numeral “1” is uniquely identifiable via the four coordinates described above.
As another example, a narrowed search procedure for detecting the numeral “7” (indicated in a solid line format) can be carried out by first examining coordinate location 625. The presence of a portion of a numeral at the coordinate location 625 provides a strong indication that the numeral can be a “7”. The identity of the numeral can be confirmed by examining additional coordinate locations such as coordinate location 630. The lookup table includes information indicating that the numeral “7” is uniquely identifiable via the coordinate location 625 and/or the coordinate location 630.
Furthermore, in some embodiments, the use of unique coordinate locations as described above, allows for execution of a search procedure for identifying a numeral without necessarily first identifying whether the character is a numeral or a letter.
Block 705 of the flowchart 700 pertains to using a grid-based template such as the grid-based template 300 described above, to first distinguish between the presence of one or more numerals in an image and one or more letters in the image. This action can be carried out as described above, by taking advantage of the characteristic that numerals defined in a monospaced font such as OCR-B are taller than letters that are also defined in the monospaced font. If a numeral cannot be distinguished from a letter (due to various reasons), the action indicated by block 705 assumes that the image contains numerals and the method step indicated in block 730 is executed. On the other hand, if a determination is made in block 705 that the image contains numerals and may contain letters as well, either one of the method step indicated in block 730 or the method step indicated in block 710 can be executed following execution of block 705.
Block 730 pertains to executing a numeral recognition procedure (as described above with reference to
Block 735 pertains to using a look-up table to identify the detected data obtained by carrying out the action indicated in block 730. Thus, for example, the lookup table is used to identify the numeral “1” based on detecting the presence of a portion of the numeral at coordinate location 605 (and confirmed by the presence of other portions of the numeral at coordinate location 610, coordinate location 615, and/or coordinate location 620).
In block 740 a determination is made if additional numerals contained in the image are to be recognized. If yes, operation proceeds from block 740 back to block 730. If no, operation proceeds from block 740 to block 745.
Block 745 pertains to assembling information on recognized numerals obtained by executing the previous blocks (block 730, block 735, and block 740). At this point, in one exemplary implementation the action proceeds from block 745 to block 750 where the one or more recognized numerals are provided as a character recognition result. For example, the action indicated in block 750 can pertain to combining multiple recognized digits of a barcode label and providing the character recognition result to a computer for identifying an object upon which the barcode label is affixed.
However, in another exemplary implementation, when a character recognition procedure involves recognizing both letters and numerals, the action proceeds from block 745 to block 710 (as indicated by dashed line 746).
In yet another exemplary implementation, rather than proceeding from block 745 to block 710, the method step indicated in block 710 is executed following execution of block 705. Subsequent actions indicated in block 715, block 720, and block 725 for recognizing one or more letters can then be executed in parallel with actions indicated in block 730, block 735, block 740, and block 745 for recognizing one or more numerals.
Block 710 pertains to executing a letter recognition procedure (as described above with reference to
Block 715 pertains to using a look-up table to identify the detected data obtained by carrying out the action indicated in block 710. Thus, for example, the lookup table is used to identify the letter “A” based on detecting the presence of a portion of the letter at coordinate location 405.
In block 720 a determination is made if additional letters contained in the image are to be recognized. If yes, operation proceeds from block 720 back to block 710. If no, operation proceeds from block 720 to block 725.
Block 725 pertains to assembling information on recognized letters obtained by executing the previous blocks (block 710, block 715, and block 720). Action proceeds from block 725 to block 750 where the one or more recognized letters are combined with one or more recognized numerals (derived by executing actions indicated in block 745) and provided as a character recognition result.
The description above pertained to using “n” coordinate locations to identify one or more letters and/or one or more numerals with various levels of confidence. A single-step character recognition procedure in accordance with the disclosure, which will be described below in more detail, involves presetting “n” to a certain value so as to quickly and uniquely recognize any letter or numeral in a single step. The presetting can be carried out in various ways such as by using statistics to identify a suitable Hamming distance that is indicative of differences between various characters.
As can be understood from the set of coordinate locations 805, the first location of the ten locations corresponds to the coordinates (0,116) on a grid-based template such as the grid-based template 300 described above; the second location of the ten locations corresponds to the coordinates (0,64); the third location of the ten locations corresponds to the coordinates (0,7), and so on. The look-up table 810 includes uppercase letters (A to Z), numbers (0 to 9), and a “less than” symbol (“<”), each of which is formatted in an OCR-B font. The OCR-B font is based on a centerline drawing standard specified by the International Organization for Standardization (ISO), and the OCR-B character subset that is used in passports is defined by ICAO to include capital letters, numerals and the symbol “<” as enumerated in the look-up table 810.
A single-step recognition procedure in accordance with the disclosure involves using an OCR system (such as the OCR system 200 described above), to examine each of the ten locations identified in the of set of coordinate locations 805. Thus, for example, if a portion of a character is detected at a coordinate location (12, 90), the OCR software 206 utilizes the set of coordinate locations 805 to recognize this coordinate location as corresponding to location 8. Let it be assumed for purposes of example, that no other portion of the character is detected at any of the remaining nine locations in the set of coordinate locations 805. The OCR software 206 then utilizes the look-up table 810 to identify (via row 812) that the character to be recognized is the numeral “1”. On the other hand, if other portions of the character are detected, for example at locations 1, 2, 3, 9, and 10, the OCR software 206 utilizes the look-up table 810 to identify (via row 811) that the character is the letter “Z” and not the numeral “1”.
It will also be pertinent to point out that unlike the character recognition procedures described above with respect to
To supplement the present disclosure, this application incorporates entirely by reference the following commonly assigned patents, patent application publications, and patent applications:
U.S. Pat. No. 6,832,725; U.S. Pat. No. 7,128,266;
U.S. Pat. No. 7,159,783; U.S. Pat. No. 7,413,127;
U.S. Pat. No. 7,726,575; U.S. Pat. No. 8,294,969;
U.S. Pat. No. 8,317,105; U.S. Pat. No. 8,322,622;
U.S. Pat. No. 8,366,005; U.S. Pat. No. 8,371,507;
U.S. Pat. No. 8,376,233; U.S. Pat. No. 8,381,979;
U.S. Pat. No. 8,390,909; U.S. Pat. No. 8,408,464;
U.S. Pat. No. 8,408,468; U.S. Pat. No. 8,408,469;
U.S. Pat. No. 8,424,768; U.S. Pat. No. 8,448,863;
U.S. Pat. No. 8,457,013; U.S. Pat. No. 8,459,557;
U.S. Pat. No. 8,469,272; U.S. Pat. No. 8,474,712;
U.S. Pat. No. 8,479,992; U.S. Pat. No. 8,490,877;
U.S. Pat. No. 8,517,271; U.S. Pat. No. 8,523,076;
U.S. Pat. No. 8,528,818; U.S. Pat. No. 8,544,737;
U.S. Pat. No. 8,548,242; U.S. Pat. No. 8,548,420;
U.S. Pat. No. 8,550,335; U.S. Pat. No. 8,550,354;
U.S. Pat. No. 8,550,357; U.S. Pat. No. 8,556,174;
U.S. Pat. No. 8,556,176; U.S. Pat. No. 8,556,177;
U.S. Pat. No. 8,559,767; U.S. Pat. No. 8,599,957;
U.S. Pat. No. 8,561,895; U.S. Pat. No. 8,561,903;
U.S. Pat. No. 8,561,905; U.S. Pat. No. 8,565,107;
U.S. Pat. No. 8,571,307; U.S. Pat. No. 8,579,200;
U.S. Pat. No. 8,583,924; U.S. Pat. No. 8,584,945;
U.S. Pat. No. 8,587,595; U.S. Pat. No. 8,587,697;
U.S. Pat. No. 8,588,869; U.S. Pat. No. 8,590,789;
U.S. Pat. No. 8,596,539; U.S. Pat. No. 8,596,542;
U.S. Pat. No. 8,596,543; U.S. Pat. No. 8,599,271;
U.S. Pat. No. 8,599,957; U.S. Pat. No. 8,600,158;
U.S. Pat. No. 8,600,167; U.S. Pat. No. 8,602,309;
U.S. Pat. No. 8,608,053; U.S. Pat. No. 8,608,071;
U.S. Pat. No. 8,611,309; U.S. Pat. No. 8,615,487;
U.S. Pat. No. 8,616,454; U.S. Pat. No. 8,621,123;
U.S. Pat. No. 8,622,303; U.S. Pat. No. 8,628,013;
U.S. Pat. No. 8,628,015; U.S. Pat. No. 8,628,016;
U.S. Pat. No. 8,629,926; U.S. Pat. No. 8,630,491;
U.S. Pat. No. 8,635,309; U.S. Pat. No. 8,636,200;
U.S. Pat. No. 8,636,212; U.S. Pat. No. 8,636,215;
U.S. Pat. No. 8,636,224; U.S. Pat. No. 8,638,806;
U.S. Pat. No. 8,640,958; U.S. Pat. No. 8,640,960;
U.S. Pat. No. 8,643,717; U.S. Pat. No. 8,646,692;
U.S. Pat. No. 8,646,694; U.S. Pat. No. 8,657,200;
U.S. Pat. No. 8,659,397; U.S. Pat. No. 8,668,149;
U.S. Pat. No. 8,678,285; U.S. Pat. No. 8,678,286;
U.S. Pat. No. 8,682,077; U.S. Pat. No. 8,687,282;
U.S. Pat. No. 8,692,927; U.S. Pat. No. 8,695,880;
U.S. Pat. No. 8,698,949; U.S. Pat. No. 8,717,494;
U.S. Pat. No. 8,717,494; U.S. Pat. No. 8,720,783;
U.S. Pat. No. 8,723,804; U.S. Pat. No. 8,723,904;
U.S. Pat. No. 8,727,223; U.S. Pat. No. 8,740,082;
U.S. Pat. No. 8,740,085; U.S. Pat. No. 8,746,563;
U.S. Pat. No. 8,750,445; U.S. Pat. No. 8,752,766;
U.S. Pat. No. 8,756,059; U.S. Pat. No. 8,757,495;
U.S. Pat. No. 8,760,563; U.S. Pat. No. 8,763,909;
U.S. Pat. No. 8,777,108; U.S. Pat. No. 8,777,109;
U.S. Pat. No. 8,779,898; U.S. Pat. No. 8,781,520;
U.S. Pat. No. 8,783,573; U.S. Pat. No. 8,789,757;
U.S. Pat. No. 8,789,758; U.S. Pat. No. 8,789,759;
U.S. Pat. No. 8,794,520; U.S. Pat. No. 8,794,522;
U.S. Pat. No. 8,794,525; U.S. Pat. No. 8,794,526;
U.S. Pat. No. 8,798,367; U.S. Pat. No. 8,807,431;
U.S. Pat. No. 8,807,432; U.S. Pat. No. 8,820,630;
U.S. Pat. No. 8,822,848; U.S. Pat. No. 8,824,692;
U.S. Pat. No. 8,824,696; U.S. Pat. No. 8,842,849;
U.S. Pat. No. 8,844,822; U.S. Pat. No. 8,844,823;
U.S. Pat. No. 8,849,019; U.S. Pat. No. 8,851,383;
U.S. Pat. No. 8,854,633; U.S. Pat. No. 8,866,963;
U.S. Pat. No. 8,868,421; U.S. Pat. No. 8,868,519;
U.S. Pat. No. 8,868,802; U.S. Pat. No. 8,868,803;
U.S. Pat. No. 8,870,074; U.S. Pat. No. 8,879,639;
U.S. Pat. No. 8,880,426; U.S. Pat. No. 8,881,983;
U.S. Pat. No. 8,881,987; U.S. Pat. No. 8,903,172;
U.S. Pat. No. 8,908,995; U.S. Pat. No. 8,910,870;
U.S. Pat. No. 8,910,875; U.S. Pat. No. 8,914,290;
U.S. Pat. No. 8,914,788; U.S. Pat. No. 8,915,439;
U.S. Pat. No. 8,915,444; U.S. Pat. No. 8,916,789;
U.S. Pat. No. 8,918,250; U.S. Pat. No. 8,918,564;
U.S. Pat. No. 8,925,818; U.S. Pat. No. 8,939,374;
U.S. Pat. No. 8,942,480; U.S. Pat. No. 8,944,313;
U.S. Pat. No. 8,944,327; U.S. Pat. No. 8,944,332;
U.S. Pat. No. 8,950,678; U.S. Pat. No. 8,967,468;
U.S. Pat. No. 8,971,346; U.S. Pat. No. 8,976,030;
U.S. Pat. No. 8,976,368; U.S. Pat. No. 8,978,981;
U.S. Pat. No. 8,978,983; U.S. Pat. No. 8,978,984;
U.S. Pat. No. 8,985,456; U.S. Pat. No. 8,985,457;
U.S. Pat. No. 8,985,459; U.S. Pat. No. 8,985,461;
U.S. Pat. No. 8,988,578; U.S. Pat. No. 8,988,590;
U.S. Pat. No. 8,991,704; U.S. Pat. No. 8,996,194;
U.S. Pat. No. 8,996,384; U.S. Pat. No. 9,002,641;
U.S. Pat. No. 9,007,368; U.S. Pat. No. 9,010,641;
U.S. Pat. No. 9,015,513; U.S. Pat. No. 9,016,576;
U.S. Pat. No. 9,022,288; U.S. Pat. No. 9,030,964;
U.S. Pat. No. 9,033,240; U.S. Pat. No. 9,033,242;
U.S. Pat. No. 9,036,054; U.S. Pat. No. 9,037,344;
U.S. Pat. No. 9,038,911; U.S. Pat. No. 9,038,915;
U.S. Pat. No. 9,047,098; U.S. Pat. No. 9,047,359;
U.S. Pat. No. 9,047,420; U.S. Pat. No. 9,047,525;
U.S. Pat. No. 9,047,531; U.S. Pat. No. 9,053,055;
U.S. Pat. No. 9,053,378; U.S. Pat. No. 9,053,380;
U.S. Pat. No. 9,058,526; U.S. Pat. No. 9,064,165;
U.S. Pat. No. 9,064,165; U.S. Pat. No. 9,064,167;
U.S. Pat. No. 9,064,168; U.S. Pat. No. 9,064,254;
U.S. Pat. No. 9,066,032; U.S. Pat. No. 9,070,032;
U.S. Pat. No. 9,076,459; U.S. Pat. No. 9,079,423;
U.S. Pat. No. 9,080,856; U.S. Pat. No. 9,082,023;
U.S. Pat. No. 9,082,031; U.S. Pat. No. 9,084,032;
U.S. Pat. No. 9,087,250; U.S. Pat. No. 9,092,681;
U.S. Pat. No. 9,092,682; U.S. Pat. No. 9,092,683;
U.S. Pat. No. 9,093,141; U.S. Pat. No. 9,098,763;
U.S. Pat. No. 9,104,929; U.S. Pat. No. 9,104,934;
U.S. Pat. No. 9,107,484; U.S. Pat. No. 9,111,159;
U.S. Pat. No. 9,111,166; U.S. Pat. No. 9,135,483;
U.S. Pat. No. 9,137,009; U.S. Pat. No. 9,141,839;
U.S. Pat. No. 9,147,096; U.S. Pat. No. 9,148,474;
U.S. Pat. No. 9,158,000; U.S. Pat. No. 9,158,340;
U.S. Pat. No. 9,158,953; U.S. Pat. No. 9,159,059;
U.S. Pat. No. 9,165,174; U.S. Pat. No. 9,171,543;
U.S. Pat. No. 9,183,425; U.S. Pat. No. 9,189,669;
U.S. Pat. No. 9,195,844; U.S. Pat. No. 9,202,458;
U.S. Pat. No. 9,208,366; U.S. Pat. No. 9,208,367;
U.S. Pat. No. 9,219,836; U.S. Pat. No. 9,224,024;
U.S. Pat. No. 9,224,027; U.S. Pat. No. 9,230,140;
U.S. Pat. No. 9,235,553; U.S. Pat. No. 9,239,950;
U.S. Pat. No. 9,245,492; U.S. Pat. No. 9,248,640;
U.S. Pat. No. 9,250,652; U.S. Pat. No. 9,250,712;
U.S. Pat. No. 9,251,411; U.S. Pat. No. 9,258,033;
U.S. Pat. No. 9,262,633; U.S. Pat. No. 9,262,660;
U.S. Pat. No. 9,262,662; U.S. Pat. No. 9,269,036;
U.S. Pat. No. 9,270,782; U.S. Pat. No. 9,274,812;
U.S. Pat. No. 9,275,388; U.S. Pat. No. 9,277,668;
U.S. Pat. No. 9,280,693; U.S. Pat. No. 9,286,496;
U.S. Pat. No. 9,298,964; U.S. Pat. No. 9,301,427;
U.S. Pat. No. 9,313,377; U.S. Pat. No. 9,317,037;
U.S. Pat. No. 9,319,548; U.S. Pat. No. 9,342,723;
U.S. Pat. No. 9,361,882; U.S. Pat. No. 9,365,381;
U.S. Pat. No. 9,373,018; U.S. Pat. No. 9,375,945;
U.S. Pat. No. 9,378,403; U.S. Pat. No. 9,383,848;
U.S. Pat. No. 9,384,374; U.S. Pat. No. 9,390,304;
U.S. Pat. No. 9,390,596; U.S. Pat. No. 9,411,386;
U.S. Pat. No. 9,412,242; U.S. Pat. No. 9,418,269;
U.S. Pat. No. 9,418,270; U.S. Pat. No. 9,465,967;
U.S. Pat. No. 9,423,318; U.S. Pat. No. 9,424,454;
U.S. Pat. No. 9,436,860; U.S. Pat. No. 9,443,123;
U.S. Pat. No. 9,443,222; U.S. Pat. No. 9,454,689;
U.S. Pat. No. 9,464,885; U.S. Pat. No. 9,465,967;
U.S. Pat. No. 9,478,983; U.S. Pat. No. 9,481,186;
U.S. Pat. No. 9,487,113; U.S. Pat. No. 9,488,986;
U.S. Pat. No. 9,489,782; U.S. Pat. No. 9,490,540;
U.S. Pat. No. 9,491,729; U.S. Pat. No. 9,497,092;
U.S. Pat. No. 9,507,974; U.S. Pat. No. 9,519,814;
U.S. Pat. No. 9,521,331; U.S. Pat. No. 9,530,038;
U.S. Pat. No. 9,572,901; U.S. Pat. No. 9,558,386;
U.S. Pat. No. 9,606,581; U.S. Pat. No. 9,646,189;
U.S. Pat. No. 9,646,191; U.S. Pat. No. 9,652,648;
U.S. Pat. No. 9,652,653; U.S. Pat. No. 9,656,487;
U.S. Pat. No. 9,659,198; U.S. Pat. No. 9,680,282;
U.S. Pat. No. 9,697,401; U.S. Pat. No. 9,701,140;
U.S. Design Pat. No. D702,237;
U.S. Design Pat. No. D716,285;
U.S. Design Pat. No. D723,560;
U.S. Design Pat. No. D730,357;
U.S. Design Pat. No. D730,901;
U.S. Design Pat. No. D730,902;
U.S. Design Pat. No. D734,339;
U.S. Design Pat. No. D737,321;
U.S. Design Pat. No. D754,205;
U.S. Design Pat. No. D754,206;
U.S. Design Pat. No. D757,009;
U.S. Design Pat. No. D760,719;
U.S. Design Pat. No. D762,604;
U.S. Design Pat. No. D766,244;
U.S. Design Pat. No. D777,166;
U.S. Design Pat. No. D771,631;
U.S. Design Pat. No. D783,601;
U.S. Design Pat. No. D785,617;
U.S. Design Pat. No. D785,636;
U.S. Design Pat. No. D790,505;
U.S. Design Pat. No. D790,546;
In the specification and/or figures, exemplary embodiments of the invention have been disclosed. The present disclosure is not limited to such exemplary embodiments. The use of the term “and/or” includes any and all combinations of one or more of the associated listed items. The figures are schematic representations and so are not necessarily drawn to scale. Unless otherwise noted, specific terms have been used in a generic and descriptive sense and not for purposes of limitation.