This application claims the benefit of priority under 35 USC 119 to Russian patent application No. RU2021136357, filed on Dec. 9, 2021.
The implementations of the disclosure relate generally to computer systems and, more specifically, to systems and methods for image processing. In particular the implementations of the disclosure concern the division of an image into separate color layers for subsequent image processing and for extracting information from the layers.
Activities involving document and image processing often lead to encounters with images of documents containing more than one layer of information recorded. For example, in the present day, documents and images that contain additional objects such as stamps, imprints, separators and other information in addition to text continue to become ever more prevalent. In these types of documents and images a challenge may arise with respect to Optical Character Recognition (OCR) when stamps (or other objects) are located on top of and overlapping with text. Thus, the presence of these objects containing information that is layered on top of other objects or text that was already on the surface of the document or image can interfere with an OCR process and lower its quality and accuracy (e.g., a stamp on a higher layer of an image on top of text on a lower layer of the image).
Implementations of the present disclosure describe mechanisms for dividing a document image into separate color layers.
A method of the disclosure includes receiving, by a processing device, a document image, dividing the document image into a plurality of patches and determining, for each patch, whether the patch is monochromatic or polychromatic. It further includes clusterizing a plurality of monochromatic patches into a plurality of clusters within a color space, wherein each cluster corresponds to a color layer of a plurality of color layers of the document image, and segmenting each polychromatic patch into a corresponding plurality of monochromatic segments. The method also includes, for each polychromatic patch, associating each monochromatic segment of the corresponding plurality of monochromatic segments with a cluster of the plurality of clusters, and utilizing the plurality of clusters for performing an information extraction task on the document image.
A system of the disclosure includes a memory, and a processor coupled to the memory, the processor configured to receive a document image, divide the document image into a plurality of patches, and determine, for each patch, whether the patch is monochromatic or polychromatic. The processor is further configured to clusterize a plurality of monochromatic patches into a plurality of clusters within a color space, wherein each cluster corresponds to a color layer of a plurality of color layers of the document image, and segment each polychromatic patch into a corresponding plurality of monochromatic segments. It is also configured to, for each polychromatic patch, associate each monochromatic segment of the corresponding plurality of monochromatic segments with a cluster of the plurality of clusters, and utilize the plurality of clusters for performing an information extraction task on the document image.
A non-transitory machine-readable storage medium of the disclosure includes instructions that, when accessed by a processing device, cause the processing device to receive a document image, divide the document image into a plurality of patches, and determine, for each patch, whether the patch is monochromatic or polychromatic. The instructions further cause the processing device to clusterize a plurality of monochromatic patches into a plurality of clusters within a color space, wherein each cluster corresponds to a color layer of a plurality of color layers of the document image, and segment each polychromatic patch into a corresponding plurality of monochromatic segments. They also cause the processing device to, for each polychromatic patch, associate each monochromatic segment of the corresponding plurality of monochromatic segments with a cluster of the plurality of clusters, and utilize the plurality of clusters for performing an information extraction task on the document image.
These and other elements and features will become more clear in the following detailed description of illustrative implementations and embodiments of the disclosure, which is to be read in connection with the accompanying drawings.
The disclosure will be understood more fully from the detailed description given below and from the accompanying drawings of various implementations of the disclosure. The drawings, however, should not be taken to limit the disclosure to the specific implementations, but are for explanation and understanding only.
Described herein are methods and systems for dividing a document image into separate color layers, which can be utilized for extracting information from the document image. Given the proliferation of documents with multiple layers of information recorded on top of each other (e.g. text entered into a form and then certified with a stamp overlaid on top of the text and the form field) a difficulty has arisen for performance of Optical Character Recognition (OCR) tasks. In documents where multiple layers of information such as text and objects overlap or are overlaid on top of each other, the level of quality and accuracy of OCR operations is significantly reduced.
In situations where documents contain multiple layers of overlaid information, different types of information may be expressed by indicia of different colors within the document image. For example, form documents can be fillable forms with various fields and field labels with instructions for completing the forms as well as separators and other dividing elements defining the fillable fields. Some colored form documents (e.g. color dropout forms) where the fields, instructions, field dividers and other elements can be present in one color while the text or other information entered or filled into the form and its respective fields are present in a different color (i.e., the entries of the fields are in a different color than the remainder of the form document). However, in some situations, the entered text or information can intersect with the dividing elements (e.g., the separators between form fields) of the form document as well as the fields and instructional text of the form document. Similarly, stamps or signatures that are applied to the document after it is filled in can also overlap with both the information entered into the form document and the fields and elements of the form document itself. In these situations character recognition becomes significantly more difficult as the overlapping elements interfere with the OCR process.
Aspects and implementations of the instant disclosure address the aforementioned drawbacks and challenges of existing technology and present novel approaches and mechanisms for dividing a document image into multiple color layers for subsequently performing more accurate and more effective OCR other information extraction operations.
Notably, it may be the case that, for the purposes of OCR or information extraction, the information from different layers of a document may not be equally important. For example, it may be necessary to obtain the information contained in only one of the layers of the document image. Quite often, the desired information is reflected on the document image in one color or multiple colors that are visually similar to each other. In such cases, it is sufficient to divide the document image into separate color layers to be able to perform OCR on the color layer that contains the desired information.
On the other hand, in other situations, it may be desirable to extract information contained in several layers of a document image. In these cases it is significantly easier and more effective to perform OCR or other information extraction operations separately from each layer. Elements of the document image along with their coordinates on the document image can be used for associating entries of fields with the field labels (e.g., to identify to which field or category the information contained in a given element is related). Such associations are especially useful for extracting structured information from documents.
As used herein the term “document” may refer to any type of document including, for example, invoices, identification documents, checks, credit applications, bank documents, agreements, single or multi-page documents, bills of lading, deeds, accounting documents, financial statements, patents, patent search reports as well as any other documents that can often be found in the custody of enterprises in paper or scanned form.
The following description explains in detail the features and elements of some of the implementations of the present disclosure focusing on the main aspects of dividing a document image into separate color layers for subsequent processing and analysis. In some implementations a method for extracting information from a document image can include receiving one or more document images. The document images can be received from a device (e.g., a camera or a scanner) capable of recording a digital copy of a document from a physical copy. In some embodiments the document images can be retrieved from a digital storage location.
Thus, in some implementations, the visual properties of the received document image 202 can be adjusted. This includes performing an equalization of the brightness of the document image 202. More specifically, the brightness of the document image 202 is modified so that areas of the document image that should appear white but do not, such as form field 211, due to unequal lighting, are made to appear as true white. This can be achieved in a variety of ways including the use of digital and electronic filters.
The unevenness (i.e., the gradual transitions from darker regions to lighter regions, the smooth gradients of brightness change) is represented by a low signal frequency (i.e., low frequency of brightness signal change). In contrast, the substantive content of the document image 202 (e.g., the text, stamps, form elements, separators, etc.) is represented by a high signal frequency (i.e., the brightness signal frequently changes in magnitude since there are many closely spaced areas of alternating dark and light areas). Accordingly, a goal of the brightness equalization process is to remove or compensate for the low frequency component of the image and thereby equalize the brightness over the entire image. In this manner, the brightness of the elements located in the more poorly illuminated areas of the document image will also be adjusted.
In the various implementations, a variety of filters can be used to filter out the high frequency components from the low frequency components of the image 202 (e.g., a median filter, a high-pass filter, a Gaussian blur filter, a bilateral filter, etc.). After applying the filter (e.g., a median filter) the high frequency objects/elements such as text, separators, and other small details in the document image will be removed. At the output of the filter an intermediate image can be obtained that contains only the gradual changes in illumination (i.e., information regarding the changes in brightness). Thus, in some embodiments, a filter can be applied to remove small detailed elements from a document image 202 so that only the background along with any relatively gradual changes in brightness remains. The high frequency components removed by the filter can subsequently be recovered since they are precisely the components that can be used for OCR and information extraction.
In some implementations, depending on the type of filter being used, it can be beneficial to use a larger filter radius rather than a smaller one wherever the option is available. However, in other implementation other methods of optimizing the filtering can be performed for increasing the speed and accuracy of the filtration. For example, the size of the document image 202 can be initially reduced prior to the application of the filter. Thereafter, the filter can be applied with a smaller radius (i.e., since the image is smaller) and then the intermediate image resulting after the application of the filter can be returned to its original size.
The following describes the modification of the brightness property of the image after the application of the aforementioned filter to the document image 202. If I is the initial brightness of a channel (e.g., a Red-Green-Blue (RGB) channel) of the initial document image 202, then after filtering the remaining component of brightness (i.e., the brightness of the same channel in the intermediate image obtained after the application of the filter) can be defined as I′. Accordingly, the image can be adjusted by normalizing the low frequency signal. For example, in some embodiments, for each channel the brightness is calculated according to the formula Inew=I/I′. Thus, the brightness of the initial image 202 is divided by the brightness component obtained after the application of the filter to obtain a new brightness Inew that is equalized across the entirety of the image 204 and does not contain gradations of intensity illumination while still maintaining detailed elements such as text, stamps, separators etc. (which can be important elements for subsequent OCR and information extraction). The equalization of brightness makes previously darker areas of the initial image 202 brighter and previously lighter areas of the image darker to even out the intensity of illumination across the entire image 204.
The method of equalizing the brightness described above is related to documents with a light or white background which is commonly found. Accordingly, the background color is adjusted across the entirety of the image so that the background color corresponds to true white and the remaining colors of the image are normalized accordingly. However, an analogous process can be performed with documents that have a dark background (i.e., documents where light colored text and other information is presented on a black or dark background). In these cases, color inversion is initially performed on the original image in order to bring it into standard presentation of having a dark text and other information on a light background. Thereafter the aforementioned brightness adjustment and equalization process can be performed as described.
In some implementations, the contrast of the image can also be adjusted. There are various algorithms for modifying the contrast of an image that can be applied for the purposes of improving a clear delineation of the various substantive elements of a document image. However, algorithms that take unevenness of illumination can be more beneficial than others. In one implementation, an adaptive increase of contrast relative to a local average value can be applied. This is applicable to documents with relatively simple layouts. In one implementation, a scrolling Gaussian window (e.g., a window with blurry/fuzzy edges with gradually decreasing weights in the direction away from the center) can be applied across the image to increase contrast adaptively in different areas of the image.
For documents with more complex layouts, such an adaptive binarization algorithm can generate a threshold map, through an iterative pyramidal process depicted in
Thus in some embodiments, using the above-described pyramidal decomposition 260, the values of minima, maxima, and averages for the original areas of the image are obtained at different scales of its representation. The method for constructing a threshold map based on the pyramidal decomposition can be a multi-stage process. At the bottom level 282, 284, 286 of the pyramidal decomposition, where the image consists of only a few pixels, a threshold map can be generated using one of two of the following values: (a) the local average value of pixel brightness of this region of the image (i.e. the brightness of a pixel from the image generated from the image 276 containing the average values in the pyramid), or (b) the average value between the local minimum and maximum (i.e., the average of the brightness of an equivalent number (e.g. 2) of pixels taken from the image 272 formed from the minimum values in the pyramid and pixels taken from the image 274 formed from the maximum values in the pyramid). Then at the next level of decomposition, the threshold map can be expanded by a factor of 2 both horizontally and vertically using interpolation with convolutions [1 3], [3 1].
For each pixel, at each subsequent level of pyramidal decomposition 260, the difference between the pixel value from the image 272 formed from the minimum values in the pyramid and image formed from the maximum 276 values in the pyramid can be calculated. If this difference does not exceed a predetermined threshold value (e.g., a predetermined noise threshold value below which information is considered to be insignificant noise), it can be assumed that there is no useful signal in this area of the image, both at this and at subsequent levels of the pyramidal decomposition 260. Therefore, the threshold value obtained at the previous level of decomposition can be left unchanged. Otherwise, if the exceed a predetermined threshold value, a new refined threshold value can be calculated based on a combination of (a) and (b) above.
The aforementioned procedure can be repeated until such a level of decomposition is reached, at which the image areas 290 corresponding to the pixels in the pyramid are still larger than the smallest elements (e.g., letters, symbols, numbers etc.) visible in the image. This results in a threshold map relative to which an increase in contrast does not lead to the loss or removal of objects of different sizes and where homogeneous areas in the image are free from noise. Accordingly, the threshold map is used to increase contrast such that the areas within each window where the brightness is above a threshold value have their brightness increased while areas within each window where the brightness is below a threshold value have their brightness decreased to more clearly define the various elements of the document image. In other implementations, for colorful images, the contrast can be increased for the brightness component (i.e., for the grayscale component of the image), while decreasing the coefficient of contrast increase for areas of the image that are saturated with color.
In some implementations, the document image can be binarized to create a black and white image 206. The process of binarization is a transformation of a colorful or grayscale image into a binary black-and-white image 206. As described in more detail below, the binarization process can be performed according to various methods such as, for example, Otsu’s method (i.e., global binarization) and local adaptive binarizations (e.g., Niblack and Sauvola Thresholding). One of the main parameters of this transformation is a threshold value t with which the brightness/intensity of each pixel is compared. After the comparison, by determining whether the brightness of a given pixel is lower or higher than the threshold value t, the pixel is respectively assigned a value of 0 or a 1.
The binarized image 206 can be represented in the form of a region represented by a data structure where the region which corresponds to are having the maximum values (i.e., 1′s) within the data structure. Accordingly the region can be considered to be all of the black portions of a binarized image containing all the text, objects, dividers etc. (i.e., the significant objects of the image). In other words, the region is a mask of significant elements present on the document image. This mask contains the elements that can be used for subsequent OCR and information extraction. Notably, the aforementioned binarization process can further be used to obtain masks for each color layer of the image as well. For example, white pixels in the binarized document image can be automatically associated with the background layer across all channels. Accordingly, after binarization, the image 206 can be divided into two classes of pixels: background pixels and pixels belonging to objects/elements of the document image.
In some implementations, connected components can be detected within the document image and analyzed. In these implementations, the connected components are detected from the binarized document image after which they can be analyzed to determine their respective sizes. The detection and analysis of connected components can facilitate the division of the image into patches as seen in
Then, in some embodiments, the size of the identified connected components can be determined on the basis of which a particular size of a corresponding patch will be determined for dividing the document image. A patch can be understood to be a non-intersecting rectangular region that contains a connected component. Patches can be sized to be the same size or slightly larger than their corresponding connected component so that each patch completely encompasses a respective connected component. Accordingly, in one implementation each connected component can be encompassed by a distinct separate patch. In this implementation, a smaller patch encompassing a small connected component can be contained within a larger patch encompassing a larger connected component. For example, document image 300 is shown to have been divided into various patches of different sizes. Region 310 contains connected elements entirely contained by patches 312.
In another implementation, the sizes of the various connected components of the document image can be clusterized into a predetermined number of clusters and the average size of a connected component in the most representative cluster (i.e., the cluster with the largest number of elements) can be selected as representative of a size of a patch. In this implementation, the connected components can be covered with patches of the representative size such that all connected components are covered/encompassed by at least one patch and if a single patch does not encompass a given connected component, it is covered with multiple non-intersecting patches.
Thus, the document image is divided into patches containing the connected components. Notably, the patches contain some significant element of the document image and not the exclusively empty/white areas. As a result, a patch 312 can contain elements or pixels of one color or a patch 322 can contain elements and pixels of multiple colors. In order to divide a document image into different color layers, patches 312 containing the same color (monochromatic patches) can be identified and associated with a corresponding color layer. The remaining patches, such as patches 322 in region 320 where connected regions of the stamp overlap with connected regions of the underlying text and document form elements, will be the non-monochromatic/polychromatic ones which can subsequently be segmented and have their segments associated with a corresponding color later.
To achieve this goal, as depicted in
Further, in some implementations, for the pixels of each patch a collection of statistical values is evaluated: (i) the number of pixels in the patch, (ii), the centroid (i.e., the average value of the pixels across the three HSV parameters), (iii) dispersion (i.e., of the pixel values relative to the centroid in HSV color space), and (iv) skewness (i.e., along a one-dimensional distance relative to the centroid). Existing standard statistical/mathematical formulas can be used for the calculation of these statistics and can be implemented through executable code.
As noted earlier, the patches into which the document image is divided into can be monochromatic (i.e., containing pixels of only one color) and non-monochromatic/polychromatic (i.e., containing pixels of two or more colors). As used herein, the term non-monochromatic and polychromatic are mutually interchangeable. In one embodiment, patches that contain more than two colors can be treated as patches containing two colors by ignoring the least represented color of the pixels.
Thus, each patch can be classified as either monochromatic 406 or polychromatic 408 using a chromaticity classifier 404. The statistics 402 of the patches (e.g., number of pixels, centroid, dispersion, skewness etc.) can be input into the classifier 404. The chromaticity classifier can be pre-trained on the basis of labeled training images and configured with relevant classification parameters during training. At the output, the classifier produces a decision concerning each patch to determine whether it is monochromatic 406 or polychromatic 408. For the purposes of some of the implementations described herein, any machine-trainable classifier (e.g., a gradient boosting model, a support-vector machine, a linear classifier, etc.) can be used. In other implementations and neural network classifier can be used.
In some implementations, once the patches are classified as monochromatic and polychromatic, a two-staged method 500 of clusterization, shown in
Initially, the statistics of the monochromatic patches can be grouped into sub-clusters using classical clusterization mechanisms, at block 504, such as k-means clustering, expectation-maximization algorithm clustering, hierarchical clustering and other similar methods. However, at this point, at block 504, a multitude of clusters can be created and can be subject to further refinement. Accordingly, after the first stage of clusterization, at block 504, a very large number of clusters (each corresponding to a different color layer) can be generated so that they can thereafter be merged, at block 506, into a smaller number of clusters.
Accordingly, for each of the sub-clusters a set of merged statistics is calculated. Merged statistics are calculated among all of the possible pairs of sub-clusters to determine the best candidates for merging (e.g., statistical region merging (SRM)). Thus a pairwise calculation of all the possible merger operations is performed. Pairs of sub-clusters can be selected based on the conditions of maximizing the sums of weighted intercluster dispersions and the distance between centroids of the respective clusters. As soon as a pair of sub-clusters is found that generates the best dispersion feature, that pair is merged together into a single cluster. In some implementations, it is beneficial to maximize the distance between the centroids of the final set of clusters. Accordingly, the clusters that are candidates for merging together can be the ones the respective centroids of which have the smallest distance to each other in color space.
Thus, the pairwise merging of cluster is performed until a pre-determined threshold criterion is met (e.g., a pre-determined number of clusters is reached, or a pre-determined sum of weighted intercluster dispersions and the distance between centroids is reached). The pre-determined criterion can be a constant that is pre-set in the clustering mechanism based on training data. Therefore at the output of the merger and the second stage of the clusterization process, several clusters are obtained along with their corresponding statistics. Thus, the resulting particular number of clusters, can be associated, at block 508, to correspond to the set of separate color layers (i.e., channels) of the initial document image. Accordingly, the image can then be divided into a number of layers equal to the number of clusters obtained.
However, while the abovementioned procedure pertains to the monochromatic patches, the polychromatic patches remain to be incorporated into the process. The remaining polychromatic patches (each of which can be reduced to be treated as containing two colors) can each be associated with the clusters formed from the monochromatic patches.
To effectuate this association, a segmentation operations is performed on the polychromatic patches. The polychromatic patches identified by the chromaticity classifier can be segmented into monochromatic segments. In some implementations, each non-monochromatic patch can be divided into two segments (i.e., color channels) and each segment can then be associated with a corresponding color layer (based on the clusters obtained earlier). Similar to that of the clusterization process described above, a centroid (in color space) can be calculated for the pixels of each segment of each non-monochromatic patch.
In some implementations, the segmentations can be performed using a neural network (e.g. convolutional neural network, autoencoder, etc.). The neural network can be trained on synthetic training data or real training data that is pre-labeled according to three color channels, one as a background color and two different color channels for significant objects. In other implementations, other methods that do not employ neural networks can also be used for the purposes of segmentations. For example, segmentation can be performed heuristically or by using standard approaches for color segmentation such as color based region growing segmentation with and without the use of statistical region merging (SRM), Normalized Cuts, and Efficient Graph-Based Image Segmentation.
In some implementations, when the heuristic method of segmentation is used, the image of each non-monochromatic patch is represented in separate channels that can contain color information such as Red, Green, Blue, Saturation, Hue etc. In other implementation other variables/channels of other color spaces can be used. Thus, in one implementation each of four channels (Red, Green, Blue, and Saturation) is binarized using Otsu’s method (i.e., using a single intensity threshold that separate pixels into two classes, foreground and background) to obtained binarized masks of each channel/variable. From the binarized masks for each channel, segments of colors are selected which have the lowest Intersection-over-Union (IoU) metric. In other words, for all possible pairs of the binarized masks the IoU metric is calculated and the pair for which the IoU metric is the smallest is selected. Each of the masks can, as described in more detail below, then be associated with a corresponding cluster and image color layer. Thus, in this manner, an image that was divided into patches is represented in four version, wherein each version corresponds to a clearly defined mask of a different color/channel.
In some cases, the segments of the non-monochromatic patches may overlap in certain regions. However, when the centroids of each of the monochromatic segments are calculated the pixels in the area of overlap can be ignored. Thus, the centroids in color space of the segments obtained at this stage can be used to compose the complete separate color layers of the document image.
Accordingly, in some implementations of the present disclosure, the different color layers of the document image can be composed from the aforementioned clusters and segments obtained earlier. At this point the following information is known: (i) information concerning all the monochromatic segments of the non-monochromatic patches and their respective centroids in color space, and (ii) the information concerning the centroids of the clusters of the monochromatic patches corresponding to separate color layers of the document image (obtained after clusterization into, for example, 3-4 or more clusters).
In some implementations, an association of the centroids of each monochromatic segment of the non-monochromatic patches is made with the nearest cluster (i.e., color layer of the document image) based on the Euclidean distance within color space. In other words, on the basis of the centroid of each segment of each match, the segment is associated with one of the previously identified clusters until all the monochromatic segments of the polychromatic patches have been associated with a cluster of polychromatic patches (and their corresponding separate color layer of the document image).
In this manner, the result of some implementations contains separate color layers of the document image where each layer is composed of clusters of monochromatic patches and associated monochromatic segments from polychromatic patches. It should be noted that in some cases, the different color layers can have areas where they intersect (i.e., common areas) which can correspond to the locations where multiple objects or information elements were overlaid on top of each other.
Thus, in one implementation, a document, earlier depicted in
In some implementations various OCR and information extraction tasks can be performed on each of the obtained layers of the document image. For example, each layer comprised of one of the clusters can be subjected to an OCR operation to detect and extract any textual information that it contains. In other examples, the clusters can be used by a neural network to identify and extract information comprised of the elements or fields in the layer containing the unfilled fields and instructions of a fillable form document.
When performing such OCR tasks, it can often be the case that the layer containing the data input into the form fields may be the most substantively important. However, to obtain structured information extracted from the document it can be useful to additionally OCR the layer containing the elements pertaining to the blank form document to be able to relate the input information to their respective corresponding form fields. Furthermore, while in some cases the layer containing the stamps may be of limited importance, in other cases the stamps may contain crucial information related to the data input in the form fields (e.g., attesting to their confirmation, veracity, or acceptance), and therefore it may be useful to OCR the color layer containing the information from the stamps. Based on the coordinates of the information recognized by OCR, the information from each layer can be associated and combined with the information obtained from the other layers and ultimately form a composite document image with detected information ready for subsequent processing and extraction.
In some other embodiments, the document image can be divided into color layers using a different approach. This approach can be roughly divided into four stages: (i) loading/receiving the document image; (ii) adjusting the brightness and contrast of the document image; (iii) clusterization and division of the image into intermediate layers; and (iv) unifying the layers of the image using a classifier of layer unification.
While the first two stages can be performed analogously to those described earlier, the third stage can include taking three primary actions: (a) transforming the image into HSV color space; (b) selecting gray pixels to be associated with a background color, identifying color clusters by generating histograms of pixels of particular color tones, and determining color sectors within HSV color space within pixels are clustered into two clusters which have their centroids calculated; and (c) associating the pixels with layers corresponding with the gray layer and the clusters (i.e., after the centroids of the clusters are calculated, the pixels are associated either with the gray background layer or with the cluster with the nearest centroid in color space. This process can result in several images, each of which can contain a portion of the initial document image in a different color. However, the elements in some of the layers can appear to be blurry. During the fourth stage, the images of the intermediate layers are selectively united to obtain a pre-determined number of color layers of the initial document image.
The exemplary computer system 900 includes a processing device 902, a main memory 904 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM)), a static memory (e.g., flash memory, static random access memory (SRAM)), and a data storage device 918, which communicate with each other via a bus 930.
Processing device 902 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device 902 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. The processing device 902 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 902 is configured to execute instructions 926 for implementing the methods disclosed herein, such as the method 100 of
The computer system 900 may further include a network interface device 922. The computer system 900 also may include a video display unit 910 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 912 (e.g., a keyboard), a cursor control device 914 (e.g., a mouse), and a signal generation device (e.g., a speaker). In one illustrative example, the video display unit 910, the alphanumeric input device 912, and the cursor control device 914 may be combined into a single component or device (e.g., an LCD touch screen).
The data storage device 918 may include a computer-readable medium 924 on which is stored the instructions 926 embodying any one or more of the methodologies or functions described herein. The instructions 926 may also reside, completely or at least partially, within the main memory 904 and/or within the processing device 902 during execution thereof by the computer system 900, the main memory 904 and the processing device 902 also constituting computer-readable media. In some implementations, the instructions 926 may further be transmitted or received over a network 916 via the network interface device 922.
While the computer-readable storage medium 924 is shown in the illustrative examples to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
Although the operations of the methods herein are shown and described in a particular order, the order of the operations of each method may be altered so that certain operations may be performed in an inverse order or so that certain operation may be performed, at least in part, concurrently with other operations. In certain implementations, instructions or sub-operations of distinct operations may be in an intermittent and/or alternating manner.
It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other implementations will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the disclosure should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
In the above description, numerous details are set forth. It will be apparent, however, to one skilled in the art, that the aspects of the present disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present disclosure.
Some portions of the detailed descriptions above are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “receiving,” “determining,” “selecting,” “storing,” “analyzing,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system’s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer-readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear as set forth in the description. In addition, aspects of the present disclosure are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the present disclosure as described herein.
Aspects of the present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium (e.g., read-only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.).
The words “example” or “exemplary” are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example” or “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the words “example” or “exemplary” is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X includes A or B” is intended to mean any of the natural inclusive permutations. That is, if X includes A; X includes B; or X includes both A and B, then “X includes A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. Moreover, use of the term “an implementation” or “one implementation” or “an implementation” or “one implementation” throughout is not intended to mean the same implementation or implementation unless described as such. Furthermore, the terms “first,” “second,” “third,” “fourth,” etc. as used herein are meant as labels to distinguish among different elements and may not necessarily have an ordinal meaning according to their numerical designation.
Whereas many alterations and modifications of the disclosure will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular implementation shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various implementations are not intended to limit the scope of the claims, which in themselves recite only those features regarded as the disclosure.
Number | Date | Country | Kind |
---|---|---|---|
2021136357 | Dec 2021 | RU | national |