Method and system for processing images

By performing color space adjustment and binarization based on dominant colors on machine-readable code images stained by matter, the problem of inaccurate decoding in the prior art is solved, and efficient decoding and accurate tracking of dirty machine-readable codes is achieved.

CN113454646BActive Publication Date: 2025-05-30STRYKER CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201980082995.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-10-15
Filing Date
2019-10-14
Publication Date
2025-05-30
Estimated Expiration
2039-10-14

AI Technical Summary

Technical Problem

The prior art is difficult to accurately interpret coded information when dealing with machine-readable code stained by substances, especially if the machine-readable code is partially covered or obscured.

Method used

By receiving an image of machine-readable code containing encoded information, the adjusted image is generated using color space adjustment based on the dominant color, and the machine-readable code area of ​​the image is binarized for decoding.

Benefits of technology

This method can effectively deal with machine-readable codes stained by substances, improve the accuracy and reliability of decoding, and ensure the correct tracking and counting of surgical textiles in medical and other environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113454646B_ABST
    Figure CN113454646B_ABST
Patent Text Reader

Abstract

A method for a system to execute for processing an image of a machine-readable code. The method includes receiving an image of a machine-readable code including encoded information, wherein the machine-readable code is at least partially occluded by a substance having a dominant color; generating an adjusted image by adjusting a color space of the image based on the dominant color; binarizing at least a machine-readable code region of the image, wherein the machine-readable code region of the image depicts the machine-readable code; and decoding the binarized machine-readable code region to determine the encoded information. Other devices and methods are also described.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Related Applications

[0002] This application claims the benefit of priority of U.S. Provisional Patent Application No. 62 / 745,577, filed on Oct. 15, 2018, and entitled "METHODS AND SYSTEMS FOR PROCESSING AN IMAGE", which is incorporated herein by reference in its entirety. Technical Field

[0003] The subject matter disclosed herein generally relates to the technical field of specialized machines for facilitating image processing (including computerized variants of software configurations of such specialized machines and improvements to such variants) and to techniques for improving such specialized machines.

[0004] Background

[0005] A common way to package item information is to associate an item with a unique visual graphic, such as a machine-readable code. For example, a machine-readable code associated with a particular item may include identification information about the item, descriptive information about the item, or both, and the machine-readable code can be used to distinguish the associated item from other (e.g., similar) items.

[0006] Typically, barcodes and other graphics including data can be machine-readable to provide a faster and more accurate way to interpret the information represented by the machine-readable code. For example, a machine-readable code can be read and interpreted by a specialized optical scanner. As another example, a machine-readable code can be read and interpreted by image processing techniques.

[0007] However, if an image does not clearly depict a machine-readable code, conventional image processing techniques for reading visual machine-readable codes may result in inaccurate or incomplete results. For example, in some instances, a machine-readable code may be partially covered or obscured. For example, when a 2D machine-readable code (e.g., a QR code) is soiled with a substance, conventional image processing techniques may have difficulty accurately processing the 2D machine-readable code because the substance may make it more difficult to distinguish different shaded elements (e.g., blocks) in the patterned matrix of the 2D machine-readable code. Brief Description of the Drawings

[0009] Some example embodiments are shown in the figures of the drawings by way of example and not limitation.

[0010] Figure 1 is a schematic diagram showing a system for processing an image according to some example embodiments.

[0011] Figure 2is a flowchart showing the operation of a system when performing a method of processing an image according to some example embodiments.

[0012] Figures 3A - 3H is a picture of machine-readable code that is imaged and processed according to a method according to some example embodiments. Figure 2 according to

[0013] Figure 4 is a block diagram showing components of a machine that can read instructions from a machine-readable medium and perform any one or more of the methods discussed herein.

[0014] Detailed Description

[0015] Example methods (e.g., processes or algorithms) facilitate image processing, including image processing of machine-readable code soiled by a substance (e.g., blood), and example systems (e.g., dedicated machines configured by dedicated software) are configured to facilitate such image processing. The examples are only representative of possible variations. Unless explicitly stated otherwise, structures (e.g., structural components such as modules) are optional and can be combined or subdivided, and operations (e.g., in a process, algorithm, or other function) can be changed in order or combined or subdivided. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of various example embodiments. However, it will be apparent to those skilled in the art that the subject matter may be practiced without these specific details.

[0016] In some example embodiments, a method for processing an image of a machine-readable code includes: receiving an image of a machine-readable code including encoded information, wherein the machine-readable code is at least partially obscured by a substance having a dominant color; generating an adjusted image by adjusting a color space of the image based on the dominant color; and binarizing at least a machine-readable code region of the image, wherein the machine-readable code region of the image depicts the machine-readable code. The method may further include capturing an image of the machine-readable code with an optical sensor, decoding the binarized machine-readable code region to determine the encoded information or both of the above simultaneously.

[0017] In certain example embodiments, a system for processing an image of a machine-readable code includes one or more processors configured to (e.g., at least): receive an image of a machine-readable code including encoded information, wherein the machine-readable code is at least partially occluded by a substance having a dominant color; generate an adjusted image by adjusting a color space of the image based on the dominant color; and binarize at least a machine-readable code region of the image, wherein the machine-readable code region of the image depicts the machine-readable code. The one or more processors may also be configured to decode the binarized machine-readable code region to determine the encoded information. In some variations, the system includes an optical sensor configured to capture an image of the machine-readable code.

[0018] In various example embodiments, the received or captured image is a color image, and the image may be adjusted at least in part by adjusting the color space of the color image to a grayscale representation (e.g., by isolating a color channel associated with or similar to the dominant color of the substance). The machine-readable code region may be located in the image by techniques such as corner detection techniques, edge detection techniques, other suitable computer vision techniques, or any suitable combination thereof. Additionally, additional image processing (e.g., binarization, with or without one or more color thresholding processes) may be performed to further process (e.g., “clean” the machine-readable code region of the image for interpretation (e.g., decoding)).

[0019] The methods and systems described herein can be used for various applications, such as processing an image of a machine-readable code associated with (e.g., attached to, representative of, or otherwise corresponding to) a surgical textile, wherein the machine-readable code may be at least partially occluded by one or more body fluids (e.g., blood). For example, the dominant color of the substance on the machine-readable code may be red, and the image of the machine-readable code may be adjusted by isolating the red channel of the image within the color space of the image. The machine-readable code may include any suitable encoded information that can provide useful information to a user (e.g., a unique identifier associated with the surgical textile, the type of the associated surgical textile, or both). For example, in response to determining the encoded information of the machine-readable code and determining the identifier of the surgical textile associated with the machine-readable code (e.g., at the time of these determinations), a textile counter index may be incremented. Then, the value of the textile counter index may be presented as an output on a display, via an audio device, or both.

[0020] In some example embodiments, the system includes:

[0021] one or more processors; and

[0022] A memory storing an instruction which, when executed by one or more processors, causes the one or more processors to perform operations including the following:

[0023] Access an image depicting machine-readable code that is at least partially occluded in the image by a substance having a dominant color;

[0024] Generate an adjusted version of the image by adjusting the color space of the image based on the dominant color of the substance that at least partially occludes the machine-readable code; and

[0025] Binarize at least one region of the adjusted version of the image that depicts the machine-readable code.

[0026] In some example embodiments, the method includes:

[0027] Access, by one or more processors of a machine, an image depicting machine-readable code that is at least partially occluded in the image by a substance having a dominant color;

[0028] Generate, by one or more processors of the machine, an adjusted version of the image by adjusting the color space of the image based on the dominant color of the substance that at least partially occludes the machine-readable code; and

[0029] Binarize, by one or more processors of the machine, at least one region of the adjusted version of the image that depicts the machine-readable code.

[0030] In various example embodiments, a machine-readable medium includes instructions which, when executed by one or more processors of a machine, cause the machine to perform operations including the following:

[0031] Access an image depicting machine-readable code that is at least partially occluded in the image by a substance having a dominant color;

[0032] Generate an adjusted version of the image by adjusting the color space of the image based on the dominant color of the substance that at least partially occludes the machine-readable code; and

[0033] Binarize at least one region of the adjusted version of the image that depicts the machine-readable code.

[0034] Generally, the methods and systems described herein can be used to process images of one or more machine-readable codes. That is, the image depicts one or more machine-readable codes that can be read by an optical device. Examples of such optical machine-readable codes include barcodes (e.g., linear barcodes or other one-dimensional (1D) barcodes, or two-dimensional (2D) barcodes such as QR codes) and / or other suitable graphics that carry encoded information in an optically readable form (such as in the form of a patterned matrix of black and white elements or other optically contrasting elements). Such machine-readable codes can be used in a variety of applications to provide information related to one or more items associated with (e.g., attached to, represented by, or otherwise corresponding to) the machine-readable code. For example, during surgical and other medical procedures, surgical textiles (e.g., surgical sponges or other items that can be used to absorb various liquids, including patient blood) can include machine-readable codes such that each machine-readable code can be associated with a specific surgical textile. In some cases, the machine-readable code can be depicted (e.g., printed, woven, etc.) on a label that is sewn or otherwise attached to the surgical textile. In certain cases, the machine-readable code can be depicted within the surgical textile itself. The machine-readable code can include encoded information about the associated surgical textile, such as its manufacturer, its type, its material, its size, its identifier (e.g., a serial number that is unique to that surgical textile relative to other surgical textiles), or any suitable combination thereof. Thus, the machine-readable code can be scanned (e.g., imaged) and interpreted through a decoding process (such as through computer vision techniques) to generate and utilize the encoded information contained therein.

[0035] In some cases, the machine-readable code associated with a surgical textile is scanned both before and after a medical procedure (e.g., a surgical procedure) to track the surgical textile and identify any surgical textiles that may have inadvertently been left inside the patient. Such scanning can provide a "before" count and an "after" count of the surgical textiles. The difference between the "before" count and the "after" count can prompt medical staff to locate any apparently missing textiles, perform a recount, perform an X-ray scan of the patient, or perform other risk mitigation.

[0036] However, during a medical procedure, a machine-readable code on a surgical textile may become smeared with blood or otherwise soiled (e.g., with other body fluids). In cases where the machine-readable code includes dark and light elements (e.g., light and dark sections of a matrix), any dark substance (e.g., blood) may at least partially obscure the machine-readable code and interfere with or even prevent accurate scanning of the machine-readable code. With respect to the counting of the aforementioned surgical textiles, such potential mis-scanning of the machine-readable code may lead to uncertainty as to whether the count is correct (e.g., the "post" count). An incorrect count may cause medical personnel to erroneously conclude that there is a surgical textile remaining in the patient's body, or worse, erroneously conclude that all surgical textiles have been accounted for and all textiles have been removed from the patient's body. The methods and systems described herein are capable of processing images of machine-readable codes and robustly preventing errors due to the obscuring of machine-readable codes.

[0037] In addition, while some example embodiments of the methods and systems described herein can be used to track surgical textiles within the same medical procedure or the same medical session, other example embodiments can additionally or alternatively be used to track surgical textiles between different medical procedures or medical sessions. Surgical textiles may inadvertently travel between different medical sessions (e.g., on a nurse or other person moving between different rooms, or accompanying a nurse or other person moving between different rooms). This can result in inaccurate textile counts at the source session, the destination session, or both, such as due to inadvertently double-counting a traveling surgical textile at its source session, its destination session, or both. Thus, in some example embodiments, the methods and systems described herein can be used to identify textiles used during different medical procedures and to improve the accuracy of counting surgical textiles when tracking surgical textiles, for counting surgical textiles, or for both.

[0038] The methods and systems described herein can be used in a variety of environments (including in a hospital or clinic environment (e.g., an operating room), a military environment (e.g., a battlefield), or other suitable medical treatment environments). The methods described herein can be computer-implemented and at least partially executed by one or more processors. As Figure 1 shown, the methods discussed herein can be at least partially executed by a computer device (such as mobile device 150 (e.g., a tablet computer, a smartphone, etc.)) configured to capture images of one or more surgical textiles in an operating room or other medical environment and process the resulting images. Additionally, the methods discussed herein can be executed by one or more processors separate from mobile device 150 (e.g., executed on-site in an operating room or remotely outside of the operating room).

[0039] Method for Processing Images of Machine - Readable Codes

[0040] As Figure 2 shown, according to some example embodiments, a method 200 for processing an image of a machine-readable code includes receiving an image of a machine-readable code that includes encoded information (at operation 210), where the machine-readable code is at least partially occluded by a substance having a dominant color. The method 200 also includes generating an adjusted image by adjusting a color space of the image based on the dominant color (at operation 220). The method 200 also includes binarizing at least a machine-readable code region of the image (at operation 230), where the machine-readable code region of the image depicts the machine-readable code. The method 200 further includes decoding the binarized machine-readable code region to determine the encoded information (at operation 250). In some variations, the method 200 also includes capturing an image of the machine-readable code (at operation 208). In certain variations, Figure 2 the operations (e.g., steps) depicted therein may be performed in an order different from the depicted order.

[0041] As Figure 2 shown, some example embodiments of the method 200 include capturing an image of a machine-readable code (at operation 208) or generating or otherwise obtaining at least one image of the machine-readable code. One or more images of the machine-readable code may be stored in a database in a suitable data storage medium (e.g., local or remote). Thus, the receiving of the image of the machine-readable code in operation 210 may include receiving the image from a memory or other suitable storage device. For example, the image may have been previously acquired and stored in a storage medium. Each image may depict an entire surgical textile associated with (e.g., attached to) the machine-readable code, or only a portion of the surgical textile associated with the machine-readable code. The surgical textile may be, for example, a surgical sponge, a surgical dressing, a towel, or other suitable textile.

[0042] Each image can be a single still image or an image frame from a video feed, and can include a region (e.g., a machine-readable code region) that depicts a corresponding machine-readable code (e.g., within the field of view of a camera). The camera can be in a handheld device or a mobile device (e.g., a tablet computer). The camera can be mounted to a support (such as a table), or can be an overhead camera. The image can be an optical image that captures color characteristics, having component values for each pixel in a color space (e.g., RGB, CMYK, etc.). The image can be stored in a memory or a suitable data storage module (e.g., local or remote) and processed. Processing the image can include normalizing the color characteristics of the image based on a set of one or more optical references (e.g., color references). The color references can represent, for example, one or more red hues (e.g., a grid of boxes including different red hues). Normalizing the image can include using the color references to compensate for variations in lighting conditions throughout a medical procedure (e.g., a surgical procedure) to artificially match the lighting conditions in the image to a template image, to artificially match the lighting conditions in the image to a fluid component concentration model that depends on lighting conditions, or any suitable combination thereof. For example, normalizing the image can include identifying the color references captured in the image, determining the assigned color values associated with the identified color references, and adjusting the image such that the color values of the color references in the image substantially match the assigned color values associated with the color references. For example, the assigned color values can be determined by looking up the color references in a database (e.g., identified by a code, a position within a set of color references, a position relative to known features of a channel, or any suitable combination thereof). Adjusting the image can include, for example, adjusting the exposure, contrast, saturation, temperature, hue, or any suitable combination thereof.

[0043] Image Pre - processing

[0044] Method 200 may include generating an adjusted image (at operation 220), such as by adjusting the color space of the image based on the dominant color of the material that at least partially obscures the machine-readable code depicted in the image. In some example embodiments, a color transformation that isolates a color (e.g., a color channel similar to the dominant color of the material that at least partially obscures the machine-readable code) can mitigate the effect of the material obscuring one or more features (e.g., elements or sections) of the machine-readable code. For example, blood tends to absorb less red light (e.g., light having a wavelength in the range of 620 nm - 740 nm or a portion of this range such as 635 nm - 700 nm), and reflects more red light than light of other colors (e.g., light having other wavelengths outside the range of 620 nm - 740 nm). In an example case where the machine-readable code includes white elements and black elements, any blood-stained white elements may be misread as black elements. Assuming, for example, that the image has red, green, blue (RGB) color components, a white pixel has a red (R) value that is substantially the same as that of a red pixel, although the white pixel additionally has green (G) and blue (B) values. Thus, isolating the red (R) channel of the image (e.g., by removing the green (G) and blue (B) channels of the image) causes any blood-stained white elements of the machine-readable code to become recognizable as the original white elements of the machine-readable code, and the blood-stained white elements are thus disambiguated from the black elements of the machine-readable code. Thus, the red channel of the image can be isolated (e.g., and retained in the adjusted image) such that in the adjusted image, any white features of the machine-readable code that are obscured by blood will appear similar to the unobscured white features (e.g., elements not obscured by blood) of the machine-readable code.

[0045] In other example embodiments, one or more other color channels (such as any one or more color channels of a predefined color space (e.g., RGB, XYZ, CIE-LAB, YCrCb, CMYK, etc.)) are isolated (e.g., and retained in the adjusted image). Additionally or alternatively, other color mappings may be used to preprocess the image. For example, some variations of method 200 apply linear or non-linear equations (e.g., predefined equations) that map from an existing color space (e.g., the RGB or other color space of the optical sensor used to capture the image) to another color space. In certain example embodiments, method 200 applies a mapping learned from data using machine learning techniques such as SYM-regression, neural networks, K-nearest neighbors, locally weighted linear regression, decision tree regression, or any suitable combination thereof.

[0046] In various example embodiments, method 200 further includes adjusting the image in other suitable ways. In some cases, substances on the machine-readable code (such as blood) can problematically interfere with the texture information, producing false textures or both, and the positioning of the machine-readable code region of the image (at operation 240) can be based on corner detection, edge detection, or both. If substances on the machine-readable code obscure the corners, making the corners appear less distinct, producing false corners (e.g., due to glare, clots, etc.), or any combination thereof, method 200 can further include reducing high-frequency noise and preserving or restoring high-frequency signals to maintain the sharpness of the edges and corners (e.g., by increasing the signal-to-noise ratio). For example, high-frequency noise can be reduced with a suitable smoothing algorithm (e.g., Gaussian blur, median blur, or any suitable combination thereof). Additionally, for example, a suitable deblurring algorithm (e.g., unsharp masking, a suitable optimization-based algorithm, etc.) can be used to preserve or restore one or more high-frequency signals.

[0047] As another example, method 200 can reduce high-frequency noise while preserving high-frequency signals by applying a bilateral filter to the image at a suitable threshold. Additionally or alternatively, a trained neural network or other machine learning model can take an image of the machine-readable code as input and output a suitable preprocessed or adjusted image, where the model can be trained using images that have been artificially processed (e.g., artificially "cleaned") in the desired manner.

[0048] Locating Machine - Readable Codes

[0049] Method 200 (at operation 230) can include locating the region of the image that depicts the machine-readable code (e.g., locating the machine-readable code region of the image). Locating this region can involve estimating the position of the machine-readable code within the image, the size of the machine-readable code, the perimeter of the machine-readable code, the orientation of the machine-readable code, any other suitable physical aspects of the machine-readable code, or any suitable combination thereof. In some example embodiments, one or more suitable computer vision techniques are used to find one or more significant features of the machine-readable code, such as corners, straight edges near the corners, edge directions that are 90 degrees to each other, collinear edges, certain spatial frequency bands, bimodal color distributions, or any suitable combination thereof. As an example, method 200 can include finding an L-shaped finder pattern associated with the machine-readable code, an alternating black-and-white timing pattern in the image associated with the machine-readable code, or both.

[0050] In some example embodiments, a neural network model (e.g., Fast-RCNN, YOLO, SSD, or other architectures suitable for object detection and localization tasks) or other machine learning models are trained to predict the location of machine-readable codes from an original image or a preprocessed image processed in a manner similar to the above (e.g., as part of localizing machine-readable codes, such as operation 230 in method 200). For example, such neural networks can be trained with a sufficient number of occluded (e.g., bloodstained) images of machine-readable codes to extract features that are robust to occlusion.

[0051] In some example embodiments, a corner detection algorithm (e.g., Harris corner detection algorithm) is used to obtain a heatmap with heatmap values having coordinates within the image (e.g., as part of localizing machine-readable codes, such as operation 230 in method 200). For example, the heatmap values of the coordinates can be generated by analyzing the rate of change (e.g., rate of change of brightness) within a sliding window as the sliding window slides around the coordinates. For example, the amount of change can be approximated as a quadratic function of the sliding window offset, and the lowest rate of change in any direction can be found and used as the heatmap value. Thus, a high heatmap value means that the sliding window will change significantly in any direction (e.g., a corner), while a low heatmap value means that there is at least one direction (e.g., a long side) that will not change the window significantly. If the heatmap value of a coordinate in the image is higher than a first predetermined upper threshold, the coordinate can be determined as a corner coordinate (e.g., a corner of a machine-readable code). Additionally, if the heatmap value of a coordinate in the image is higher than a second predetermined lower threshold (which is lower than the first predetermined threshold), the coordinate can be determined as a straight-edge coordinate (e.g., along a side, top, or bottom coordinate). Any corner coordinates and straight-edge coordinates spatially close to the corner coordinates can be considered a set of coordinates of interest. In various example embodiments, fewer or more thresholds can be used to appropriately classify the coordinates.

[0052] Outlier coordinates (e.g., coordinates that may not come from or correspond to a machine-readable code) can be removed from the coordinates of interest (e.g., as part of localizing machine-readable codes, such as operation 230 in method 200) based on, for example, the median, interquartile range, another suitable statistical measure, or any suitable combination thereof. After removing the outlier coordinates, a tightly fitting rotated rectangle can be fitted around the remaining coordinates of interest (e.g., under the assumption that the machine-readable code is generally rectangular) as an initial estimate of the location of the machine-readable code, the area of the machine-readable code, the perimeter of the machine-readable code, the orientation of the machine-readable code, or any suitable combination thereof.

[0053] In some example embodiments, an initial estimate of the machine-readable code attributes may subsequently be adjusted (e.g., as part of locating the machine-readable code, such as at operation 230 in method 200). For example, the estimated area of the machine-readable code or the boundaries of the machine-readable code may be modified to have an aspect ratio (e.g., ratio of length to width) that is the same as or similar to the known aspect ratio of the depicted (e.g., imaged) machine-readable code. Additionally or alternatively, the estimated orientation may be refined by performing a Hough transform within the rectangle and taking the median orientation of the resulting Hough lines (e.g., after rotating some of the Hough lines by 90 degrees, taking into account the fact that some lines will be perpendicular to any machine-readable code line direction).

[0054] It should be understood that the above application of the Harris corner detection algorithm may be modified for different machine-readable code shapes (e.g., as part of locating the machine-readable code, such as at operation 230 in method 200). For example, other suitable shapes may be fitted around the coordinates of interest, which may depend on the shape of the depicted (e.g., imaged) machine-readable code, if known (e.g., a circle fitted for a circular machine-readable code, a triangle fitted for a triangular machine-readable code, a pentagon fitted for a pentagonal machine-readable code, etc.).

[0055] In some example embodiments, after estimating a possible location of the machine-readable code region within an image, multiple potential machine-readable code locations may be estimated by slightly scaling the estimated machine-readable code location (e.g., expanding or shrinking the estimated perimeter of the machine-readable code region) (e.g., as part of locating the machine-readable code, such as at operation 230 in method 200). These multiple potential machine-readable code locations may be passed to a subsequent process (e.g., binarization or decoding as described below) with the aim that at least one of the estimated machine-readable code locations will result in a successful decoding.

[0056] Binarization

[0057] In certain example embodiments, method 200 (at operation 240) includes further image processing, such as binarizing at least the region located in operation 230 (e.g., the machine-readable code region of the image). As used herein, "binarizing" refers to converting an image or a region thereof to only two colors (e.g., a light color, such as white, and a dark color, such as black). Binarizing the located region converts the machine-readable code region of the image to a binary image (e.g., black and white, rather than a grayscale representation having at least three different shades of gray (e.g., black, gray, and white)), which binarization can have the effect of removing any residual darkening caused by substances (e.g., blood) in the image of the machine-readable code. The located region can be further processed based on local information of the region or other information specific to the region (such as its color histogram, its orientation histogram, or both). For example, the region can be binarized at least in part using Otsu thresholding (e.g., based on the color histogram of the region). In other example embodiments, halftoning or other methods of quantifying color information to more than two resulting colors are used instead of binarization.

[0058] As another example, binarizing a region (e.g., a machine-readable code region) can include fitting a grid shaped like a machine-readable code to an edge map of the region, generating a median color histogram of the resulting grid blocks, and applying Otsu thresholding on the generated median color histogram. Otsu thresholding can be used to determine which grid blocks correspond to light elements in the machine-readable code and which grid blocks correspond to dark elements in the machine-readable code. The lines of the grid can be linear or parameterized by a non-linear equation such that, for example, the grid can be fitted to an image region depicting a machine-readable code with non-straight components, a machine-readable code that has been bent or distorted, or both. As another example, in some example embodiments, a neural network or other suitable machine learning model can be trained to output a predicted grid shaped like a machine-readable code based on the original image or a pre-processed image processed in a manner similar to those described above. For example, such a neural network can be trained with a sufficient number of curated grids.

[0059] Although the above examples are described as using Otsu thresholding, it should be understood that any suitable thresholding technique can be applied to binarize at least one region of an image (e.g., a machine-readable code region).

[0060] Decoding

[0061] Given an image or a portion thereof (e.g., an area that at least depicts a machine-readable code) that has been processed as described herein (e.g., “cleaned”), certain example embodiments of method 200 (at operation 250) include decoding at least the area that depicts the machine-readable code. This can be performed by decoding a binarized machine-readable code area of the image to determine the encoded information present in the machine-readable code. Any suitable technique for processing (e.g., reading and decoding) machine-readable codes can be applied to obtain the information encoded in the machine-readable code (e.g., a string of text characters, such as alphanumeric characters). For example, such algorithms can use vertical and horizontal scan lines to find L-shaped finder patterns, alternating timing patterns, or both, in the machine-readable code, and then use the resulting position and scale information to evaluate each element (e.g., content block) of the machine-readable code. The elements (e.g., content blocks) of the machine-readable code can then be converted to decoded data (e.g., a decoded string) using decoding and error correction methods.

[0062] In cases where multiple potential locations of the machine-readable code have been estimated or guessed, the decoding of the machine-readable code can be performed for each of the potential locations, and the results can be compared to each other. If at least one of the potential locations of the machine-readable code results in a successful decoding, the decoded string (e.g., output for subsequent use) can be returned. Additionally, in some example embodiments, the return of the decoded string can be further conditioned on sufficient consistency among the potential locations. For example, if no two guesses result in conflicting decoded strings, or if an appropriate number (e.g., a majority) of the guesses result in the same, common decoded string, the decoded string can be returned.

[0063] Utilizing Decoded Information

[0064] After returning the decoded string from the machine-readable code, the information in the decoded string can be utilized in any suitable manner, which can depend on the type of the encoded information. For example, method 200 can include incrementing a textile counter index based on the decoded information (e.g., incrementing the textile counter index if it is determined that the scanned and decoded machine-readable code is different from other scanned and decoded machine-readable codes). In some example embodiments, multiple textile counter indices can be maintained (e.g., a first index for surgical sponges, a second index for chux, etc.). For example, the encoded information can include, in addition to a unique identifier (e.g., a serial number), the type of the textile (e.g., textile type), such that only the corresponding textile counter index for that textile type is incremented in response to the machine-readable code being scanned and decoded.

[0065] In addition, method 200 may further include outputting a textile counter index, such as by displaying the textile counter index on a display (e.g., as a count of that type of textile), or outputting the textile counter index (e.g., a count of that type of textile) as an audible count via an audio device (e.g., a speaker).

[0066] System for Processing Images of Machine - Readable Codes

[0067] As Figure 1 shown, according to some example embodiments, a system 100 for processing an image of a machine-readable code includes at least one processor 152 and a memory 154 having instructions stored therein. The processor 152 is configured to execute the stored instructions such that it is configured to: receive an image of a machine-readable code including encoded information, where the machine-readable code is at least partially occluded by a substance having a dominant color; generate an adjusted image by adjusting a color space of the image based on the dominant color; binarize at least one region of the image (e.g., the machine-readable code region), where the region of the image depicts the machine-readable code; and decode the binarized region of the image to determine the encoded information. In certain example embodiments, system 100 may be configured to substantially perform method 200 described in more detail above. Further examples of system 100 are described below with respect to Figure 4 system 100 are described below with respect to

[0068] As Figure 1As further shown in, system 100 may include a camera 156 configured to obtain (e.g., capture or otherwise generate) one or more images of a machine-readable code, and system 100 may include a display 158 (e.g., a display screen) configured to display one or more images of the machine-readable code. In some example embodiments, some or all of system 100 may be in an integrated device (e.g., mobile device 150) and placed near a patient during a surgical procedure (e.g., in an operating room) to evaluate patient fluids contained (e.g., absorbed) in a surgical textile. For example, system 100 may at least partially include a handheld or mobile electronic computing device (e.g., mobile device 150) that may be configured to execute a local fluid analysis application. Such a handheld or mobile electronic computing device may be or include, for example, a tablet computer, a laptop computer, a mobile smartphone, or any suitable combination thereof, which may include a camera 156, a processor 152, and a display 158. However, in other example embodiments, some or all of the system components may be separated into discrete, interconnected devices. For example, the camera 156, the display 158, or both may be located substantially near the patient during a surgical procedure (e.g., in an operating room), while the processor 152 may be located at a remote location (e.g., separated from the camera 156 or the display 158 in the operating room, or outside the operating room) and communicate with the camera 156 and the display 158 via a wired connection, a wireless connection, or another network.

[0069] Generally, one or more processors 152 may be configured to execute instructions stored in a memory 154 such that when they execute the instructions, the processors 152 perform various aspects of the methods described herein. The instructions may be executed by computer-executable components within a user computer or other user device (e.g., a mobile device, a wristband, a smartphone, or any suitable combination thereof) that are integrated with an application, an applet, a host, a server, a network, a website, a communication service, a communication interface, hardware, firmware, software, or any suitable combination thereof. The instructions may be stored in a memory or another computer-readable medium (such as RAM, ROM, flash memory, EEPROM, an optical disc (e.g., CD or DVD), a hard disk drive, a floppy disk drive, or any other suitable device).

[0070] As described above, one or more processors 152 can be integrated into a handheld or mobile device (e.g., mobile device 150). In other example embodiments, one or more processors 152 are incorporated into a computing device or system (such as a cloud-based computer system, a mainframe computer system, a grid computer system, or other suitable computer system). Additionally or alternatively, one or more processors 152 can be incorporated into a remote server that receives images of surgical textiles, reconstructs such images (e.g., as described above), analyzes such images (e.g., as described above), and transmits quantifications of one or more aspects of fluids in the surgical textile to another computing device, which can have a display for displaying the quantifications to a user. The following description of the present invention relates to a method for performing a surgical textile measurement. Figure 4 Examples of the one or more processors 152 are further described.

[0071] The system 100 may also include an optical sensor (e.g., in the camera 156) that operates to generate one or more images (such as a set of one or more still images or as part of a video feed). The camera 156 may include at least one optical image sensor (e.g., a CCD, CMOS, etc. that captures a color optical digital image whose pixels have red, green, and blue (RGB) color components), other suitable optical components, or both. For example, the camera 156 may include a single image sensor paired with suitable corresponding optics, filters (e.g., a color filter array, such as a Bayer pattern filter), or both. As another example, the camera 156 may include multiple image sensors paired with suitable corresponding optics (such as at least one prism or diffractive surface) to separate white light into separate color channels (e.g., RGB), where each color channel is detected by a corresponding image sensor. According to various example embodiments, the camera 156 includes any suitable image sensors and other optical components to enable the camera 156 to generate an image.

[0072] The camera 156 can be configured to transmit the image to the processor 152 for analysis, to a database storing the image, or to both. As previously described, the camera 156 can be integrated into the same device (e.g., the mobile device 150) as one or more of the other components of the system 100, or the camera 156 can be a separate component that transmits the image data to the other components.

[0073] System 100 may also include a display 158 (e.g., a display screen) that operates to display to a user (e.g., a doctor or nurse) or otherwise convey (e.g., present) some or all of the information generated by system 100, including but not limited to patient information, images of surgical textiles, quantitative metrics characterizing fluids in the surgical textiles, or any suitable combination thereof. The display 158 may include a screen on a handheld or mobile device, a computer monitor, a television screen, a projector screen, or other suitable display.

[0074] In some example embodiments, the display 158 is configured to display a user interface (e.g., a graphical user interface (GUI)) that enables a user to interact with the displayed information. For example, the user interface may enable a user to manipulate an image (e.g., zoom, crop, rotate, etc.) or manually define a region in the image that at least depicts a machine-readable code. As another example, the user interface may enable a user to select display options (e.g., font, color, language, etc.), select what is to be shown (e.g., patient information, quantitative metrics or other fluid-related information, alerts, etc.), or both. In some such example embodiments, the display 158 is user-interactive and includes a resistive or capacitive touchscreen that responds to skin, a stylus, or other user contact. In other such example embodiments, the display 158 is user-interactive via a cursor controlled by a mouse, keyboard, or other input device.

[0075] In some example embodiments, system 100 includes an audio system that conveys information to a user. The display 158, the audio system, or both may provide (e.g., present) the current value of the textile counter index, which may assist in tracking the use of surgical textiles during a procedure.

[0076] Example

[0077] Figures 3A to 3H is an image of a 2D machine-readable code attached to a surgical textile according to some example embodiments. These machine-readable codes are partially obscured to varying degrees by a red dye solution simulating blood (e.g., water mixed with red food coloring). For example, Figure 3A the machine-readable code depicted in is only lightly covered by the dye solution (mainly at the outer boundaries of the machine-readable code). Figures 3B to 3H the machine-readable code depicted in is increasingly covered by the dye solution overall.

[0078] Use a machine-readable code reader application (e.g., configured to read QR codes) on a mobile device (e.g., mobile device 150) to attempt to scan and decode Figures 3A to 3H each of the machine-readable codes depicted in. The machine-readable code reader successfully decodedFigure 3A machine-readable code, but failed to decode Figures 3B to 3H machine-readable code.

[0079] A color (RGB) image is captured by a camera (e.g., camera 156) and converted to a grayscale representation by isolating and only obtaining the R (red) channel values. For each image, by applying a Harris corner detector (e.g., implementing the Harris corner detection algorithm), the heatmap values are thresholded to identify corner coordinates and straight-edge coordinates, outliers in the corner coordinates and straight-edge coordinates are removed, and a rectangle is fitted to the resulting remaining coordinates to generate multiple guesses at the region depicting the machine-readable code. The machine-readable code region of the image is further preprocessed with Otsu thresholding to binarize the localization region depicting the machine-readable code and then fed into a machine-readable code processing algorithm to search for a successfully decoded string. For each machine-readable code, if there is any successful attempt to decode any of the guessed regions at the machine-readable code region and if no decoding results are conflicting, the decoded string is returned. By repeating this process, successful decoding of the machine-readable code is achieved for all the machine-readable codes shown in Figures 3A to 3H .

[0080] Any one or more of the components described herein may be implemented using hardware alone or using a combination of hardware and software. For example, any component described herein may physically include an arrangement of one or more processors (e.g., processor 152) configured to perform the operations described herein for that component. As another example, any component described herein may include software, hardware, or both that configure an arrangement of one or more processors (e.g., processor 152) to perform the operations described herein for that component. Thus, the different components described herein may include and configure different arrangements of processors at different points in time, or include and configure a single arrangement of such processors at different points in time. Each component described herein is an example of a means for performing the operations described herein for that component. Additionally, any two or more of the components described herein may be combined into a single component, and the functions described herein for a single component may be subdivided among multiple components. Further, according to various example embodiments, components described as being implemented within a single system or machine (e.g., a single device) herein may be distributed across multiple systems or machines (e.g., multiple devices).

[0081] Any of the systems or machines (e.g., devices) discussed herein may be, include, or otherwise be implemented in a special-purpose (e.g., dedicated or otherwise non-conventional and non-general-purpose) computer that has been modified to perform one or more of the functions described herein for the system or machine (e.g., configured or programmed by special-purpose software, such as one or more software modules of a special-purpose application, operating system, firmware, middleware, or other software program). For example, as discussed below with respect to Figure 4 a special-purpose computer system capable of implementing any one or more of the methods described herein, and such a special-purpose computer may thus be a means for performing any one or more of the methods discussed herein. Within the technical field of such special-purpose computers, a special-purpose computer that has been specifically modified (e.g., configured by special-purpose software) to perform the functions discussed herein is a technical improvement compared to other special-purpose computers that lack the structures discussed herein or are otherwise unable to perform the functions discussed herein. Thus, a special-purpose machine configured according to the systems and methods discussed herein provides an improvement over the technology of similar special-purpose machines. Additionally, any two or more of the systems or machines discussed herein may be combined into a single system or machine, and the functions described for any single system or machine may be subdivided among multiple systems or machines.

[0082] Figure 4 FIG. is a block diagram showing components of a machine 400 (e.g., mobile device 150) according to some example embodiments, the machine 400 being capable of reading instructions 424 from a machine-readable medium 422 (e.g., non-transitory machine-readable medium, machine-readable storage medium, computer-readable storage medium, or any suitable combination thereof) and performing any one or more of the methods discussed herein, in whole or in part. Specifically, Figure 4 FIG. shows, by way of example, a form of a computer system (e.g., a computer) in which instructions 424 (e.g., software, program, application, applet, application, or other executable code) for causing the machine 400 to perform any one or more of the methods discussed herein may be executed, in whole or in part.

[0083] In alternative embodiments, machine 400 operates as a stand-alone device or may be communicatively coupled (e.g., networked) to other machines. In a networked deployment, machine 400 may operate in a server-client network environment as either a server machine or a client machine, or as a peer machine in a distributed (e.g., peer-to-peer) network environment. Machine 400 may be a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a cellular phone, a smartphone, a set-top box (STB), a personal digital assistant (PDA), a network appliance, a network router, a network switch, a bridge, or any machine capable of executing instructions 424 that specify actions to be taken by that machine, either sequentially or otherwise. Further, while only a single machine is shown, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute instructions 424 to perform any one or more of the methods described herein, in whole or in part.

[0084] Machine 400 includes a processor 402 (e.g., one or more central processing units (CPUs), one or more graphics processing units (GPUs), one or more digital signal processors (DSPs), one or more application specific integrated circuits (ASICs), one or more radio frequency integrated circuits (RFICs), or any suitable combination thereof), main memory 404, and static memory 406, which are configured to communicate with each other via bus 408. Processor 402 comprises solid-state digital microcircuits (e.g., electronic, optical, or both) that may be temporarily or permanently configured by some or all of instructions 424 such that processor 402 may be configured to perform any one or more of the methods described herein, in whole or in part. For example, a set of one or more microcircuits of processor 402 may be configured to execute one or more modules (e.g., software modules) described herein. In some example embodiments, processor 402 is a multi-core CPU (e.g., a dual-core CPU, a quad-core CPU, an 8-core CPU, or a 128-core CPU), where each of the multiple cores behaves as a separate processor capable of performing any one or more of the methods described herein, in whole or in part. Although the beneficial effects described herein may be provided by machine 400 having at least processor 402, these same beneficial effects may be provided by such processor-less machines if different types of machines that do not contain a processor (e.g., a purely mechanical system, a purely hydraulic system, or a hybrid mechanical-hydraulic system) are configured to perform one or more of the methods described herein.

[0085] The machine 400 may also include a graphical display 410 (e.g., a plasma display panel (PDP), a light-emitting diode (LED) display, a liquid crystal display (LCD), a projector, a cathode ray tube (CRT), or any other display capable of displaying graphics or video). The machine 400 may also include an alphanumeric input device 412 (e.g., a keyboard or keypad), a pointer input device 414 (e.g., a mouse, a touchpad, a touchscreen, a trackball, a joystick, a stylus, a motion sensor, an eye-tracking device, a data glove, or other pointing tool), a data storage device 416, an audio generation device 418 (e.g., a sound card, an amplifier, speakers, a headphone jack, or any suitable combination thereof), and a network interface device 420.

[0086] The data storage device 416 (e.g., a data storage device) includes a machine-readable medium 422 (e.g., a tangible and non-transitory machine-readable storage medium) on which instructions 424 are stored that embody any one or more of the methods or functions described herein. The instructions 424 may also reside, completely or at least partially, within the main memory 404, within the static memory 406, within the processor 402 (e.g., within a cache memory of the processor), or any suitable combination thereof, before or during execution by the machine 400. Accordingly, the main memory 404, the static memory 406, and the processor 402 may be considered machine-readable media (e.g., tangible and non-transitory machine-readable media). The instructions 424 may be transmitted or received via the network interface device 420 over the network 490. For example, the network interface device 420 may use any one or more transport protocols (e.g., the Hypertext Transfer Protocol (HTTP)) to transmit the instructions 424.

[0087] In some example embodiments, the machine 400 may be a portable computing device (e.g., a smartphone, a tablet computer, or a wearable device) and may have one or more additional input components 430 (e.g., sensors or gauges). Examples of such input components 430 include image input components (e.g., one or more cameras), audio input components (e.g., one or more microphones), orientation input components (e.g., a compass), location input components (e.g., a Global Positioning System (GPS) receiver), orientation components (e.g., a gyroscope), motion detection components (e.g., one or more accelerometers), altitude detection components (e.g., an altimeter), temperature input components (e.g., a thermometer), and gas detection components (e.g., a gas sensor). Input data collected by any one or more of these input components 430 may be accessed and available for use by any of the modules described herein (e.g., with appropriate privacy notices and protections, such as opt-in consent or opt-out consent implemented in accordance with user preferences, applicable regulations, or any suitable combination thereof).

[0088] As used herein, the term "memory" refers to a machine-readable medium capable of storing data temporarily or permanently, and may be considered to include, but not be limited to, random access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. Although the machine-readable medium 422 is shown as a single medium in the example embodiment, the term "machine-readable medium" should be considered to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) capable of storing instructions. The term "machine-readable medium" should also be considered to include any medium or combination of multiple media capable of carrying (e.g., storing or transmitting) the instructions 424 for execution by the machine 400, such that when the instructions 424 are executed by one or more processors (e.g., processor 402) of the machine 400, the machine 400 performs all or part of any one or more of the methods described herein. Thus, "machine-readable medium" refers to a single storage device or apparatus, as well as to a cloud-based storage system or storage network comprising multiple storage devices or apparatuses. The term "machine-readable medium" should therefore be considered to include, but not be limited to, one or more tangible and non-transitory data repositories (e.g., data volumes), examples of which are solid-state storage chips, optical discs, magnetic disks, or any suitable combination thereof.

[0089] The "non-transitory" machine-readable medium as used herein specifically does not include the propagated signal itself. According to various example embodiments, the instructions 424 for execution by the machine 400 may be transmitted via a carrier medium (e.g., a machine-readable carrier medium). Examples of such carrier media include non-transitory carrier media (e.g., non-transitory machine-readable storage media, such as solid-state memory that can be physically moved from one place to another) and transitory carrier media (e.g., a carrier wave or other propagated signal that transmits the instructions 424).

[0090] The various operations of the example methods described herein may be performed, at least in part, by one or more processors temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more of the operations or functions described herein. As used herein, a "processor-implemented module" refers to a hardware module, where the hardware includes one or more processors. Thus, the operations described herein may be at least in part processor-implemented, hardware-implemented, or both, since a processor is an example of hardware, and at least some of the operations within any one or more of the methods discussed herein may be performed by a processor-implemented module, a hardware-implemented module, or any suitable combination thereof.

[0091] In addition, one or more such processors may operate in a “cloud computing” environment or as a service (e.g., within a “software as a service” (SaaS) implementation). For example, at least some of the operations within any of the one or more methods discussed herein may be performed by a group of computers (e.g., as an example of a machine including a processor), where the operations may be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application programming interfaces (APIs)). Execution of certain operations may be distributed among one or more processors (whether residing only within a single machine or deployed across multiple machines). In some example embodiments, one or more processors or hardware modules (e.g., processor-implemented modules) may be located in a single geographical location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, one or more processors or hardware modules may be distributed across multiple geographical locations.

[0092] Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are shown and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order shown. Structures and functions presented as separate components and functions in example configurations may be implemented as a combined structure or component with combined functionality. Similarly, a structure and function presented as a single component may be implemented as separate components and functions. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.

[0093] Some portions of the subject matter discussed herein may be presented in terms of an algorithmic representation or symbolic representation of operations on data stored as bits or binary digital signals in a memory (e.g., computer memory or other machine memory). Such algorithmic representations or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing that leads to a desired result. In this context, algorithms and operations involve the physical manipulation of physical quantities. Typically, though not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transmitted, combined, compared, or otherwise manipulated by a machine. Sometimes, for reasons of common usage, it is convenient to use words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “digits,” etc. to refer to such signals. However, these words are merely convenient labels and are to be associated with the appropriate physical quantities.

[0094] Unless otherwise specifically stated, discussions herein using terms such as "access", "process", "detect", "calculate", "operate", "determine", "generate", "render", "display", etc. refer to actions or processes executable by a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities in one or more memories (e.g., volatile memory, non-volatile memory, or any suitable combination thereof), registers, or other machine components that receive, store, transmit, or display information. Further, unless otherwise specifically stated, the term "a" or "an" as used herein (as is common in patent documents) is intended to include one or more than one instance. Finally, as used herein, the conjunction "or" refers to non-exclusive "or" unless otherwise specifically stated.

[0095] The following recited descriptions describe various examples of methods, machine-readable media, and systems (e.g., machines, devices, or other apparatuses) discussed herein.

[0096] A first example provides a method that includes:

[0097] Accessing, by one or more processors of a machine, an image depicting machine-readable code that is at least partially occluded in the image by a substance having a dominant color;

[0098] Generating, by one or more processors of the machine, an adjusted version of the image by adjusting a color space of the image based on the dominant color of the substance that at least partially occludes the machine-readable code; and

[0099] Binarizing, by one or more processors of the machine, at least one region of the adjusted version of the image that depicts the machine-readable code.

[0100] A second example provides the method according to the first example, further including: Capturing, by an optical sensor, an image depicting machine-readable code that is at least partially occluded by a substance having a dominant color.

[0101] A third example provides the method according to the first example or the second example, wherein the dominant color of the substance that at least partially occludes the machine-readable code is substantially red.

[0102] A fourth example provides the method according to any one of the first example to the third example, wherein:

[0103] The image is a color image; and

[0104] The adjustment of the color space of the image includes converting the color space of the color image to a grayscale representation based on the dominant color of the substance.

[0105] The fifth example provides a method according to any one of the first to fourth examples, wherein binarizing at least the region of the image includes color thresholding a histogram of at least the region of the image.

[0106] The sixth example provides a method according to any one of the first to fifth examples, further comprising: locating a region depicting a machine-readable code in an adjusted version of the image.

[0107] The seventh example provides a method according to the sixth example, wherein locating a region depicting a machine-readable code in an adjusted version of the image includes performing at least one of the following: corner detection on the adjusted version of the image or edge detection on the adjusted version of the image.

[0108] The eighth example provides a method according to any one of the first to seventh examples, wherein the image depicts a machine-readable code attached to a surgical textile soiled with a substance having a dominant color.

[0109] The ninth example provides a method according to any one of the first to eighth examples, wherein the machine-readable code represents encoded information including at least one of a type of the surgical textile or an identifier of the surgical textile.

[0110] The tenth example provides a method according to any one of the first to ninth examples, further comprising: determining the encoded information represented by the machine-readable code by decoding a binarized region depicting the machine-readable code (e.g., by decoding the binarized region of the image in which the image depicts the machine-readable code).

[0111] The eleventh example provides a method according to the tenth example, further comprising:

[0112] Incrementing a textile counter index in response to determining the encoded information represented by the machine-readable code.

[0113] The twelfth example provides a system (e.g., a computer system) comprising:

[0114] One or more processors; and

[0115] A memory storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including the following:

[0116] Accessing an image depicting a machine-readable code that is at least partially occluded in the image by a substance having a dominant color;

[0117] Generating an adjusted version of the image by adjusting a color space of the image based on the dominant color of the substance that at least partially occludes the machine-readable code; and

[0118] Binarize at least one region of the adjusted version of the image that depicts a machine-readable code.

[0119] The thirteenth example provides a system according to the twelfth example, further including an optical sensor configured to capture an image depicting a machine-readable code that is at least partially occluded by a substance having a dominant color.

[0120] The fourteenth example provides a system according to the twelfth example or the thirteenth example, wherein the dominant color of the substance that at least partially occludes the machine-readable code is substantially red.

[0121] The fifteenth example provides a system according to any one of the twelfth example to the fourteenth example, wherein:

[0122] the image is a color image; and

[0123] the adjustment of the color space of the image includes converting the color space of the color image to a grayscale representation based on the dominant color of the substance.

[0124] The sixteenth example provides a system according to any one of the twelfth example to the fifteenth example, wherein binarizing at least the region of the image includes color thresholding the histogram of at least the region of the image.

[0125] The seventeenth example provides a system according to any one of the twelfth example to the sixteenth example, wherein the operation further includes: locating the region that depicts the machine-readable code in the adjusted version of the image.

[0126] The eighteenth example provides a system according to the seventeenth example, wherein locating the region that depicts the machine-readable code in the adjusted version of the image includes performing at least one of the following: corner detection on the adjusted version of the image or edge detection on the adjusted version of the image.

[0127] The nineteenth example provides a system according to any one of the twelfth example to the eighteenth example, wherein the image depicts a machine-readable code attached to a surgical textile soiled by a substance having a dominant color.

[0128] The twentieth example provides a system according to any one of the twelfth example to the nineteenth example, wherein the machine-readable code represents encoded information including at least one of the type of the surgical textile or the identifier of the surgical textile.

[0129] The twenty - first example provides a system according to any one of the twelfth example to the twentieth example, wherein the operations further include: determining the encoded information represented by the machine - readable code by decoding a binarized region depicting the machine - readable code (e.g., by decoding a binarized region in which an image depicts the machine - readable code).

[0130] The twenty - second example provides a system according to any one of the twelfth example to the twenty - first example, wherein the operations further include: incrementing a textile counter index in response to determining the encoded information represented by the machine - readable code.

[0131] The twenty - third example provides a machine - readable medium (e.g., a non - transitory machine - readable storage medium) including instructions that, when executed by one or more processors of a machine, cause the machine to perform operations including the following:

[0132] Accessing an image depicting a machine - readable code, where the machine - readable code is at least partially occluded in the image by a substance having a dominant color;

[0133] Generating an adjusted version of the image by adjusting the color space of the image based on the dominant color of the substance at least partially occluding the machine - readable code; and

[0134] Binarizing at least one region of the adjusted version of the image that depicts the machine - readable code.

[0135] The twenty - fourth example provides a carrier medium carrying machine - readable instructions for controlling a machine to perform the operations (e.g., method operations) performed in any one of the examples described previously.

Claims

1. A method, which includes: accessing, by one or more processors of a machine, an image depicting machine-readable code that is at least partially occluded in the image by a substance having a dominant color; generating, by the one or more processors of the machine, an adjusted version of the image by adjusting a color space of the image based on the dominant color of the substance that at least partially occludes the machine-readable code, wherein adjusting the color space of the image includes isolating a color channel of the dominant color of the substance; and binarizing, by the one or more processors of the machine, at least one region of the adjusted version of the image, the region depicting the machine-readable code.

2. The method according to claim 1, further including: capturing, by an optical sensor, the image depicting the machine-readable code that is at least partially occluded by the substance having the dominant color.

3. The method according to claim 1, wherein the dominant color of the substance that at least partially occludes the machine-readable code is substantially red.

4. The method according to claim 1, wherein: the image is a color image; and adjusting the color space of the image includes converting the color space of the color image to a grayscale representation based on the dominant color of the substance.

5. The method according to claim 1, wherein binarizing at least the region of the image includes color thresholding a histogram of at least the region of the image.

6. The method according to claim 1, further including: locating, in the adjusted version of the image, the region depicting the machine-readable code.

7. The method according to claim 6, wherein locating the region depicting the machine-readable code in the adjusted version of the image includes performing at least one of the following: corner detection of the adjusted version of the image or edge detection of the adjusted version of the image.

8. The method according to claim 1, wherein the image depicts the machine-readable code attached to a surgical textile soiled by the substance having the dominant color.

9. The method according to claim 1, wherein the machine-readable code represents encoded information that includes at least one of a type of the surgical textile or an identifier of the surgical textile.

10. The method according to claim 1, further including: determining the encoded information represented by the machine-readable code by decoding the binarized region depicting the machine-readable code.

11. The method according to claim 10, further including: incrementing a textile counter index in response to determining the encoded information represented by the machine-readable code.

12. A system, which includes: one or more processors; and a memory storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including the following: Access an image depicting a machine-readable code, where the machine-readable code is at least partially occluded in the image by a substance having a dominant color; Generate an adjusted version of the image by adjusting the color space of the image based on the dominant color of the substance that at least partially occludes the machine-readable code, where adjusting the color space of the image includes isolating the color channel of the dominant color of the substance; And Binarize at least one region of the adjusted version of the image, where the region depicts the machine-readable code.

13. The system according to claim 12, further comprising an optical sensor configured to capture the image depicting the machine-readable code, where the machine-readable code is at least partially occluded by the substance having the dominant color.

14. The system according to claim 12, Wherein, The dominant color of the substance that at least partially occludes the machine-readable code is substantially red.

15. The system according to claim 12, Wherein: The image is a color image; and Adjusting the color space of the image includes converting the color space of the color image to a grayscale representation based on the dominant color of the substance.

16. The system according to claim 12, Wherein, Binarizing at least the region of the image includes color thresholding a histogram of at least the region of the image.

17. The system according to claim 12, Wherein, The operations further include: Locating the region in the adjusted version of the image that depicts the machine-readable code.

18. The system according to claim 17, Wherein, Locating the region in the adjusted version of the image that depicts the machine-readable code includes performing at least one of the following: corner detection on the adjusted version of the image or edge detection on the adjusted version of the image.

19. The system according to claim 12, Wherein, The image depicts the machine-readable code attached to a surgical textile soiled by the substance having the dominant color.

20. The system according to claim 12, Wherein, The machine-readable code represents encoded information, where the encoded information includes at least one of the type of the surgical textile or an identifier of the surgical textile.

21. The system according to claim 12, Wherein, The operations further include: Determining the encoded information represented by the machine-readable code by decoding the binarized region depicting the machine-readable code.

22. The system according to claim 21, Wherein, The operations further include: Incrementing a textile counter index in response to determining the encoded information represented by the machine-readable code.

23. A machine-readable medium including instructions that, when executed by one or more processors of a machine, cause the machine to perform operations including the following: Access an image depicting a machine-readable code, where the machine-readable code is at least partially occluded in the image by a substance having a dominant color; Generating an adjusted version of the image by adjusting a color space of the image based on a dominant color of the substance that at least partially obscures the machine-readable code, adjusting the color space of the image includes isolating a color channel of the dominant color of the substance; and Binarizing at least one region of the adjusted version of the image, the region depicting the machine-readable code.

Citation Information

Patent Citations

  • Palette-based optical recognition code generators and decoders

    US20160342873A1

  • Tracking surgical items with prediction of duplicate imaging of items

    WO2018125812A1