Patent Publication Number: US-11657489-B2

Title: Segmentation of continuous dynamic scans

Description:
TECHNICAL FIELD 
     The disclosed implementations relate generally to analyzing images and more specifically to systems and methods for analyzing segmented images within a continuous image stream. 
     BACKGROUND 
     With the growing number of goods and products being produced and shipped around the world, proper organization and cataloging of such information relies on providing accurate information. In many cases, the information is stored in the form of printed materials, such as barcodes for products, shipping labels, or order confirmations. Inspection and verification of printed materials is thus very important because an error in the printed material may result in product losses and/or reduced efficiency. 
     SUMMARY 
     Verification of printed materials requires inspection of high resolution images that are acquired in real time. In many cases, the real-time data acquisition is captured as a continuous stream of images (e.g., a video stream) as the printed materials are output from a printer, such as in a label printing factory line. In many instances, the continuous stream of data does not provide distinguishing features or markers that separate individual printed units from one another. Current methods of identifying and segmenting images of individual printed units from a continuous stream of images requires tight coupling between the printer and the image acquisition system, and utilizes trigger signals sent from the printer to the image acquisition system to identify separate printed units. The tight coupling and signal between the printer and the image acquisition system can be easily interrupted due to errors in signal transmission, signal reception, interrupted wireless connection, or even a loose cable. This results in methods that allow for a small margin of error, which can lead to inconsistent and unreliable results. 
     Accordingly, there is a need for tools that can reliably and efficiently identify and provide segmented images of printed units for inspection and verification. One solution to the problem is to use feature recognition methods in combination with predefined parameters of the print units. By identifying a sync region that includes features that can be identified using feature recognition methods, and identifying an inspection region that contains portions of the image to be validated, an image analysis system can automatically segment the continuous stream of images into individual images of printed units and store the segmented images for inspection. For a specific print pattern, such as an invoice slip for a company, each invoice slip includes the company name and logo (even if each invoice may include different information, such as client billing information, amounts, and dates). Thus, the company logo may be selected as a sync region so that a computer is configured to look for and identify features of the logo as the data acquisition system provides a dynamic data stream of the printed invoice slips (e.g., a video stream of the printed invoice slips). Each time the computer identifies the logo as being shown in the data stream, the computer automatically identifies the corresponding inspection region relative to the logo (e.g., 10 pixels before the logo and 500 pixels after the logo) and stores an image of the inspection region as a segmented image of an invoice slip. This technique eliminates the need for tight coupling of the timing of a printer output or a printer signal with an image acquisition signal (e.g., acquire an image 10 milliseconds after the printer sends a trigger signal) and reliably produces high resolution images of the printed units for inspection. 
     In accordance with some implementations, a method of analyzing images executes at a computer system that is in communication with an image acquisition device having an image sensor. The computer system includes a display, one or more processors, and memory. For example, the computer system can be a smart phone, a tablet, a notebook computer, a desktop computer, a server computer, or a system of server computers. The computer system receives a reference template that includes a predefined sync region and a predefined inspection region. The predefined sync region includes one or more distinctive features. The predefined inspection region is located at a predefined offset from the predefined sync region. The image sensor acquires a continuous sequence of image frames and the computer stores each of the image frames in a buffer within the memory. For each image frame in the buffer, the computer system determines whether the respective image frame includes a respective sub-region matching the predefined sync region. In accordance with a determination that the respective image frame includes a respective sub-region matching the predefined sync region, the computer system captures a respective inspection region within the respective image frame at the predefined offset from the respective sub-region, and the computer system stores the captured respective inspection region to a non-volatile portion of the memory of the computer system. The non-volatile portion of the memory is distinct from the buffer. 
     In some implementations, the computer system also stores a respective identifier corresponding to the captured respective inspection region. 
     In some implementations, the computer system also stores a sync region size and a sync region location. The sync region location includes a first set of coordinates. The computer system also stores an inspection region size and an inspection region location. The inspection region location includes a second set of coordinates that is distinct (e.g., different from) the first set of coordinates. 
     In some implementations, the computer system detects a frame that includes the one or more distinctive features. 
     In some implementations, the predefined sync region and the predefined inspection region are specified by a user. 
     In some implementations, the predefined inspection region includes the predefined sync region. 
     In some implementations, the predefined sync region is distinct and separate from the predefined inspection region. 
     In some implementations, the computer system provides the captured respective inspection region for inspection. 
     In some implementations, the computer system performs one or more predefined visual tests on the captured respective inspection region to evaluate whether the respective image frame meets a specified quality standard and reports results of the one or more predefined visual tests performed on the captured respective inspection region. 
     In some implementations, the computer system identifies a feature region for evaluation and determines whether the feature region meets the specified quality standard. The computer system also provides an indication of whether the feature region meets the specified quality standard. 
     In some implementations, the feature region includes a barcode. 
     In some implementations, the computer system automatically identifies one or more feature regions and at least one of the one or more feature regions includes a barcode 
     In some implementations, the feature region is a user defined region. 
     In accordance with some implementations, a method of analyzing images executes at a computer system that is in communication with an image acquisition device having an image sensor. The computer system includes a display, one or more processors, and memory. The computer system receives a first set of coordinates and a set of distinctive features that correspond to a predefined sync region. The computer system also receives a second set of coordinates that correspond to a predefined inspection region. The second set of coordinates is located at a predefined offset from the first set of coordinates. The image sensor acquires a continuous sequence of image frames and the computer stores each of the image frames in a buffer within the memory. For each image frame in the buffer, the computer system determines whether the respective image frame includes a respective sub-region matching the predefined sync region. In accordance with a determination that the respective image frame includes a respective sub-region matching the predefined sync region, the computer system captures a respective inspection region within the respective image frame at the predefined offset from the respective sub-region, and the computer system stores the captured respective inspection region to a non-volatile portion of the memory of the computer system. The non-volatile portion of the memory is distinct from the buffer. 
     In accordance with some implementations, a method of generating a reference template executes at a computer system having a display, one or more processors, and memory. The computer system displays an image at a user interface of the computer system. The computer system receives, at the user interface, user input defining a sync region within the image. The sync region includes one or more distinctive features. The computer also receives, at the user interface, user input defining an inspection region within the image. The inspection region is located at a predefined offset from the sync region. The computer then stores, at a non-volatile portion of the memory, the image and information regarding the sync region and the inspection region within the image as a reference template. 
     In some implementations, after displaying the image, the computer system automatically provides a recommended region of the image as the sync region and receives user input accepting the recommended region as the sync region. 
     In some implementations, the computer system provides the recommended region based on visual analysis of a plurality of sample images and determination that the recommended regions within each of the sample images are substantially the same. 
     In some implementations, the computer system stores a first set of coordinates and an image of the one or more distinctive features corresponding to the sync region. The computer system also stores a second set of coordinates corresponding to the inspection region. The second set of coordinates are distinct (e.g., different) from the first set of coordinates. 
     In some implementations, the computer system provides the reference template to another computer system that is distinct and remote from the computer system. The other computer system is in communication with an image acquisition device that has an image sensor. 
     In some implementations, the computer system is in communication with an image acquisition device having an image sensor and the image is acquired by the image sensor. 
     Typically, a computer system electronic device includes one or more processors, memory, a display, and one or more programs stored in the memory. The programs are configured for execution by the one or more processors and are configured to perform any of the methods described herein. 
     In some implementations, a non-transitory computer readable storage medium stores one or more programs configured for execution by a computing device having one or more processors, memory, and a display. The one or more programs are configured to perform any of the methods described herein. 
     Thus methods and systems are disclosed that efficiently and reliably provide segmented images of printed materials. 
     Both the foregoing general description and the following detailed description are exemplary and explanatory, and are intended to provide further explanation of the invention as claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a better understanding of these systems, methods, and graphical user interfaces, as well as additional systems, methods, and graphical user interfaces that correlate patients with treating clinicians, refer to the Description of Implementations below, in conjunction with the following drawings, in which like reference numerals refer to corresponding parts throughout the figures. 
         FIG.  1 A  illustrates a computer system for providing images in accordance with some implementations. 
         FIG.  1 B  illustrates an example reference template in accordance with some implementations. 
         FIG.  1 C  illustrates segmenting a dynamic data stream into inspection images in accordance with some implementations. 
         FIG.  1 D  illustrates providing an inspection image in accordance with some implementations. 
         FIG.  2 A  is a block diagram illustrating a computing device according to some implementations. 
         FIG.  2 B  is a block diagram illustrating a server according to some implementations. 
         FIG.  3 A  illustrates a dynamic data stream according to some implementations. 
         FIGS.  3 B- 3 D  illustrate generating a reference template in accordance with some implementations. 
         FIG.  3 E  illustrates segmenting a dynamic data stream in accordance with some implementations. 
         FIGS.  4 A and  4 B  illustrate a user interface for generating a reference template in accordance with some implementations. 
         FIG.  4 C  illustrates a user interface for inspection of a segmented inspection image in accordance with some implementations. 
         FIGS.  5 A and  5 B  illustrate examples of reference templates in accordance with some implementations. 
         FIGS.  6 A- 6 C  provide a flow diagram of a method for analyzing images in accordance with some implementations. 
         FIG.  7    provides a flow diagram of a method for analyzing images in accordance with some implementations. 
         FIGS.  8 A and  8 B  provide a flow diagram of a method for generating a reference template in accordance with some implementations. 
     
    
    
     Reference will now be made to implementations, examples of which are illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that the present invention may be practiced without requiring these specific details. 
     DESCRIPTION OF IMPLEMENTATIONS 
     Reference will now be made to implementations, examples of which are illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide an understanding of the various described implementations. However, it will be apparent to one of ordinary skill in the art that the various described implementations may be practiced without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the implementations. 
     It will also be understood that, although the terms first, second, etc. are, in some instances, used herein to describe various elements, these elements should not be limited by these terms. These terms are used only to distinguish one element from another. For example, a first set of parameters could be termed a second set of parameters, and, similarly, a second set of parameters could be termed a first set of parameters, without departing from the scope of the various described implementations. The first set of parameters and the second set of parameters are both sets of parameters, but they are not the same set of parameters. 
     The terminology used in the description of the various implementations described herein is for the purpose of describing particular implementations only and is not intended to be limiting. As used in the description of the various described implementations and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “includes,” “including,” “comprises,” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
     As used herein, the term “if” is, optionally, construed to mean “when” or “upon” or “in response to determining” or “in response to detecting” or “in accordance with a determination that,” depending on the context. Similarly, the phrase “if it is determined” or “if [a stated condition or event] is detected” is, optionally, construed to mean “upon determining” or “in response to determining” or “upon detecting [the stated condition or event]” or “in response to detecting [the stated condition or event]” or “in accordance with a determination that [a stated condition or event] is detected,” depending on the context. 
       FIG.  1 A  illustrates a computer system  100  for providing images in accordance with some implementations. The computer system  100  can be any of a server computer, or a system of server computers, a desktop computer, a notebook computer, a tablet, and a smart phone. In some implementations, the computer system  100  is a server. The description of the computer system  100  as a “server” is intended as a functional description of the devices, systems, processor cores, and/or other components that provide the functionality attributed to the computer system  100 . It will be understood that the computer system  100  may be a single server computer, or may be multiple server computers. Moreover, the computer system  100  may be coupled other servers and/or server systems, or other devices, such as other client devices, databases, content delivery networks (e.g., peer-to-peer networks), network caches, and the like. In some implementations, the computer system  100  is implemented by multiple computing devices working together to perform the actions of a server system (e.g., cloud computing). 
     The computer system  100  is associated with (e.g., in communication with or includes) a computing device  102 , such as a desktop computer, a notebook computer, a tablet, or a smart phone. The computer system  100  is also in communication with an image acquisition device  104  (such as a camera, a camera system, also referred to herein as an imaging device  104 ) that includes an image sensor (e.g., a camera sensor or a charged coupled device (CCD) sensor). In some implementations, the computer system  100  is also in communication with a printer  106  (e.g., a printing system). The image acquisition device  104  may be distinct and separate from any of the computer system  100 , the computing device  102 , and the printer  106 . In some implementations, the image acquisition device  104  functions (e.g., operates) independently of the printer  106 . In some implementations, operations of the image acquisition device  104  is not synchronized to operations of the printer  106 . 
     In some implementations, any of the computer system  100 , the computing device  102 , the image acquisition device  104 , and the printer  106  is able to communicate directly with one another (e.g., through a wired connection and/or through a short-range wireless signal, such as those associated with personal-area-network (e.g., BLUETOOTH or BLE) communication technologies, radio-frequency-based near-field communication technologies, or infrared communication technologies) with any of the computing device  102 , the image acquisition device  104 , and the printer  106 . In some implementations, any of the computer system  100 , the computing device  102 , the image acquisition device  104 , and the printer  106  are in communication with one another via one or more networks  108 . The one or more networks  108  include public communication networks, private communication networks, or a combination of both public and private communication networks. For example, the one or more networks  108  can include the Internet, other wide area networks (WAN), local area networks (LAN), virtual private networks (VPN), metropolitan area networks (MAN), peer-to-peer networks, and/or ad-hoc connections. 
     In some implementations, the computing device  102  is a remote device that is located in a different location from the computer system  100  and in communication with the computer system  100  via wireless communications. In some implementations, the computing device  102  local to the computer system or integrated with the computer system. In such cases, the computing device is in communication with the computer system  100  via one or more wired connections. In some implementations, the computing device  102  is a client device that is associated with one or more users. 
     In some implementations, the computing device  102  sends and receives printer control information through the network(s)  108 . For example, the computing device  102  may send one or more files (e.g., documents, images, or printing patterns) for printing to the printer  106 . In another example, the computing device  102  may send a signal to begin printing or a signal to halt printing. The computing device  102  can also receive information from the computer system  100  or any other computing devices that are in communication with the computer system  100  or the network(s)  108 . For example, the computing device  102  may receive a document for printing from another computing device (e.g., another computer) that is also in communication with the computer system  100  or the network(s)  108 . The other computing device may be, for example, another desktop computer that is located remotely from the computer system  100 , the computing device  102 , and the printer  106 . 
     In some implementations, the computing device  102  receives data (such as dynamic live data) from the imaging acquisition device  104 . In some implementations, the computing device  102  includes image segmentation software (such as the Image Segmentation Application  222  in  FIG.  2 A ) that allows a user of the computing device  102  to generate a reference template (such as the reference template  110  in  FIG.  1 B ) used for segmenting the dynamic live data. The image segmentation software may also perform the segmentation and save segmented images to a non-volatile portion of the memory of the computing device  102 . In some implementations, the computing device  102  includes inspection software  228  configured to perform inspection tests (such as visual tests) on the segmented images. 
       FIG.  1 B  illustrates an example reference template  110  in accordance with some implementations. A reference template  110  is used as a template for automatic segmentation of dynamic live data (e.g., real-time data, such as a live data stream). The reference template  110  may correspond to any printing materials, such as a poster, a shipping label, a product label, a document, or an image. In some implementations, the reference template includes an image of printed materials that are to be printed (e.g., a set of shipping labels or 100 posters). In the example shown in  FIG.  1 B , the reference template is corresponds to a shipping label. As shown, the reference template  110  includes information such as a company logo, return address and shipping to address fields, and a barcode. 
     The reference template  110  includes a sync region  112  and an inspection region  114 . The sync region  112  defines a portion of the reference template  110  that includes one or more distinctive features that can be used for identifying the presence of printed material. Thus, the sync region  112  includes distinctive feature(s) that can be easily and accurately identified and the distinctive feature(s) are common to all printed materials in the set of printed materials. For example, a company logo on shipping labels is expected to be the same regardless of the shipping address. Thus, the logo or a portion of the logo would be a good candidate for inclusion in a sync region  112 . In this example, the sync region  112  includes the company logo on the shipping label. The inspection region  114  defines a region of interest. In this case, the region of interest is the entire shipping label. For example, a company that sends a printing order for 5,000 printing labels may want each label to be inspected to make sure that the printed text is legible and the barcode includes correct information. Thus, the inspection region  114  for the shipping label may include either the entire shipping label or a portion (e.g., less than all) of the shipping label. In this example, the inspection region  114  includes the entire shipping label. In some implementations, any of the sync region  112  and the inspection region  114  is defined by a user. In some implementations, the computer system  100  may identify (e.g., automatically identify) and suggest (e.g., automatically suggest or automatically recommend) one or more regions of the reference template  110  for inclusion in the sync region  112 . In some implementations, the computer system  100  may identify (e.g., automatically identify) and suggest (e.g., automatically suggest or automatically recommend) one or more regions of the reference template  110  for inclusion in the inspection region  114 . 
     In some implementations, the reference template  110 , including details regarding the sync region  112  and the inspection region  114 , are stored in a non-volatile portion of the memory of the computer system  100  (such as in a non-volatile portion of the memory of a computing device, such as the computing device  102 ). In some implementations, storing information (e.g., details) regarding the sync region  112  includes storing one or more of: a first set of coordinates  113  corresponding to the sync region  112  (for example, a set of xy coordinates, such as (x, y)=(5.7, 15.4), or a pixel coordinates), a size of the sync region  112  (such as x=+43.1 and y=+24.3 or x=106 pixels and y=29 pixels), and the one or more distinctive features corresponding to the sync region  112  (e.g., an image of the sync region  112  or extracted features of the image shown in the sync region  112 ). In some implementations, storing information (e.g., details) regarding the inspection region  114  includes storing one or more of: a second set of coordinates  115  that correspond to the inspection region (for example, (x, y)=4.3, 2.4 or pixel coordinates), and a size of the inspection region  114  (such as x=+96.0 and y=+144.9 or x=270 pixels and y=314 pixels), and an offset from the sync region  112  (e.g., the inspection region  114  is offset from the sync region  112  by x=−38.3 and y=+129.5). In some implementations, the first set of coordinates and the second set of coordinates use a same coordinate system and reference a same origin (e.g., point where (x, y)=(0, 0)). In some implementations, the origin  117  is located at the top left corner of the reference template  110 . 
     Once the sync region  112  and the inspection region  114  have been defined in a reference template  110 , the reference template  110  can be used as a template for the computer system  100  to automatically segment images of the shipping labels from a dynamic data stream (e.g., a video stream). 
       FIG.  1 C  illustrates segmenting a dynamic data stream  120  into inspection images  126  in accordance with some implementations. As printed materials are produced (e.g., generated or printed), the image acquisition device  104  may acquire a dynamic data stream  120  (e.g., a video stream) that includes a plurality of frames (e.g., image frames or video frames) showing images of the printed materials as they are being printed in real time. The computer system  100  automatically segments the dynamic data stream  120  into individual (e.g., separate and distinct) inspection images  126 . In some implementations, the dynamic data stream  120  is written (e.g., recorded or stored) in a buffer within the memory (e.g., a volatile portion of the memory) of the computing system  100  (such as the memory of computing device  102 ). Because the buffer is finite (e.g., a circular buffer), portions of the buffer are written over as new portions of the image stream arrive. The buffer can be written over for other reasons as well. For example, the buffer may be overwritten when the computing system  100  is powered down (e.g., turned off or unplugged) or when a predetermined period of time elapses. 
     Following the example described above with respect to  FIG.  1 B , the dynamic data stream  120  includes images of a plurality of shipping labels that are printed for Company A. In this example, four printing labels are shown. The computer system  100  identifies sub-regions within the dynamic data stream  120  that include features that correspond to (e.g., are similar to, are the same as, or are substantially the same as) the one or more distinctive features in the sync region  112  of the reference template  110 . In this case, the one or more distinctive features corresponds to the logo of Company A and thus, four sub-regions  122 - 1  to  122 - 4  are identified as having features that correspond to the features of the logo of Company A as shown in the reference template  110 . Using the identified sub-regions  122 , the computer system  100  identifies inspection regions  124 - 1  to  124 - 2  and segments (e.g., extracts) each of the inspection regions  124  into respective inspection images  126 . For example, after identifying a frame in the dynamic data stream  120  that includes a sub-region  122 - 1  corresponding to the sync region  112 , the computer system  100  identifies and extracts a frame of the dynamic data stream  120  that includes the inspection region  124 - 1  as an inspection image  126 - 1 . The computer system  100  stores (e.g., saves) the inspection image  126 - 1  in a non-volatile portion of its memory so that the inspection image  126 - 1  can be provided (either in real time or at a later time) even after the information in the buffer has been overwritten. The computer system  100  repeats this process for every identified sub-region (such as the sub-regions  122 - 2 ,  122 - 3 , and  122 - 4 ) resulting in a plurality of inspection images  126  (e.g.,  126 - 1  to  126 - 4 ) being stored in the computer system  100 . In some implementations, the process of segmenting the dynamic data stream  120  into inspection images  126  is performed in real-time. In some implementations, the process of segmenting the dynamic data stream  120  into inspection images  126  is performed at some time after the acquisition of the dynamic data stream  120  by the image acquisition device  104 . The computing device may perform the segmentation at any point in time before the information (e.g., dynamic data stream  120 ) to be segmented is overwritten. 
     Once an inspection region  124  is extracted from the dynamic data stream  120  and stored as an inspection image  126 , the inspection image  126  may be provided for inspection. 
     In some implementations, as shown in  FIG.  1 C , each printed unit (in this example, a shipping label) includes one or more features that are common to other printed units of the same set (e.g., batch) of printing materials. In other words, there are features, such as the logo and the return address, that are common to all the shipping labels in this set of shipping labels. In some implementations, each individual printed unit (e.g., each shipping label) may include at least one portion that is different from other shipping labels. For example,  FIG.  1 C  shows that each shipping label includes a same logo and a sand return address, and each shipping label has a unique “Send To” address that is different from a “Send To” address shown on other shipping label (e.g., the “Send To” address shown on inspection image  126 - 1  is different from “Send To” addresses shown on each of inspection images  126 - 2 ,  126 - 3 , and  126 - 4 ). In some implementations, all the printed units (e.g., shipping labels) of a same set of printing materials are all the same (e.g., includes identical features, do not differ from one another, cannot be distinguished from one another). For example, an order to print  100  parade flyers may include  100  printed units that are all identical. 
       FIG.  1 D  illustrates providing an inspection image  126 - 1  in accordance with some implementations. Inspection images  126  that are stored (e.g., stored in the non-volatile portion of the memory of computing device  100 ) may be provided for inspection to a computing device, such as computing device  102 . In some implementations, the computing device  102  automatically performs one or more inspection tests on the inspection image  126 . In some implementations, the inspection process includes displaying the inspection image  126 . In some implementations, the inspection process includes displaying the inspection image  126  to a user via a user interface  130  (also referred to herein as a graphical user interface  130 ) of the computing device  102 . In some implementations, the user interface  130  is a user interface for an inspection application (e.g., inspection software). 
     As shown in  FIG.  1 D , the user interface  130  includes an image display region  132  for displaying the inspection image  126 . In some implementations, the user interface  130  also displays an identifier  134  corresponding to the inspection image  126 . In this example, the identifier  134  indicates that the inspection image  126  currently displayed in the image display region  132  corresponds to the 127th shipping label to be printed out of a set of 10,000 shipping labels (e.g., the identifier is “label  127 ” or “label  127 / 10 , 000 ”). The identifier  134  includes a set of one or more characters that can include an alphanumeric character and/or a symbol. The identifier  134  is unique to the corresponding inspection image  126  such that each inspection image  126  can be identified or distinguished from other inspection images  126  by their respective identifiers  134 . 
     In some implementations, the user interface  130  includes one or more affordances  136 - 1  and  136 - 2  for switching between inspection images  126  in the image display region  132 . For example, in response to a user selection of the affordance  136 - 1 , the image display region  132  displays a previous inspection image  126  (e.g., inspection image  126 / 10 , 000 ). In another example, in response to a user selection of the affordance  136 - 2 , the image display region  132  displays a next inspection image  126  (e.g., inspection image  128 / 10 , 000 ). 
     In some implementations, the user interface  130  also includes an inspection log  140  that is configured to display inspection information corresponding to the inspection images  126 . For example, the inspection log  140  may include an indicator of whether a respective inspection image  126  passed or failed an inspection. In this example, the inspection log  140  displays information showing that labels  124 ,  126 , and  127  passed inspection but label  125  failed inspection. 
     In some implementations, the user interface  130  also includes a comment region  142  that allows users to add comments or override results of inspections that are automatically performed by the computer device. For example, comment region  142  shows that a user has overridden the inspection results for label  124  to indicate that label  124  has passed inspection. The comment region  142  may also include one or more affordances  143  for the user to provide one or more signals or commands to the a printer  106  that is in communication with the computing device. For example, the comment region  142  may include an affordance to halt printing, and/or an affordance to reverse the printer to a specific label and print a strike-through pattern over the specific label to indicate that the specific label has failed inspection and/or should not be used. 
     In some implementations, the user interface  130  also includes a printer status region  144  that displays information corresponding to a printer  106  that is in communication with the computing device. For example, the printer  106  may be in the process of generating (e.g., printing) printed materials, such as shipping labels. In this example, the printer status region  144  shows that 130 shipping labels out of 10,000 have been printed and that the printer  106  is currently halted (e.g., stopped). 
       FIG.  2 A  is a block diagram illustrating a computing device  200 , corresponding to a computing system  100 , which can execute data stream segmentation operations and/or inspection of images in accordance with some implementations. Various examples of the computing device  200  include a desktop computer, a laptop computer, a tablet computer, a server computer, a server system, and other computing devices that have a processor capable of generating segmented images from a dynamic data stream and/or inspect images. The computing device  200  may be a data server that hosts one or more databases (e.g., database of images or videos), models, or modules, or may provide various executable applications or modules. The computing device  200  typically includes one or more processing units (processors or cores)  202 , one or more network or other communications interfaces  204 , memory  214 , and one or more communication buses  212  for interconnecting these components. The communication buses  212  optionally include circuitry (sometimes called a chipset) that interconnects and controls communications between system components. The computing device  200  typically includes a user interface  206 . The user interface  206  typically includes a display device  208  (e.g., a screen or monitor). In some implementations, the computing device  200  includes input devices such as a keyboard, mouse, and/or other input buttons  210 . Alternatively or in addition, in some implementations, the display device  208  includes a touch-sensitive surface, in which case the display device  208  is a touch-sensitive display. In some implementations, the touch-sensitive surface is configured to detect various swipe gestures (e.g., continuous gestures in vertical and/or horizontal directions) and/or other gestures (e.g., single/double tap). In computing devices that have a touch-sensitive display, a physical keyboard is optional (e.g., a soft keyboard may be displayed when keyboard entry is needed). The user interface  206  also includes an audio output device, such as speakers or an audio output connection connected to speakers, earphones, or headphones. Furthermore, some computing devices  200  use a microphone and voice recognition software to supplement or replace the keyboard. An audio input device (e.g., a microphone) captures audio (e.g., speech from a user). 
     The memory  214  includes high-speed random-access memory, such as DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. In some implementations, the memory  214  includes one or more storage devices remotely located from the processors  202 . The memory  214 , or alternatively the non-volatile memory devices (e.g., portions) within the memory  214 , includes a non-transitory computer-readable storage medium. The memory  214  also includes a volatile memory, such as a buffer  244 . In some implementations, the memory  214  or the computer-readable storage medium of the memory  214  stores the following programs, modules, and data structures, or a subset or superset thereof:
         an operating system  216 , which includes procedures for handling various basic system services and for performing hardware dependent tasks;   a communications module  218 , which is used for connecting the computing device  200  to other computers and devices via the one or more communication network interfaces  204  (wired or wireless), such as the Internet, other wide area networks, local area networks, metropolitan area networks, and so on;   a web browser  220  (or other application capable of displaying web pages), which enables a user to communicate over a network with remote computers or devices;   an image segmentation application  222 , which includes a graphical user interface  224  that allows a user to navigate the image segmentation application  222 , such as accessing, generating, and editing reference templates  110 , including defining or accepting recommended sync regions  112  and inspection regions  114 . The image segmentation application  222  also includes a reference template generator  226  for generating and editing reference templates  110 . The reference template generator  226  may include any of: a sync region driver, an inspection region driver, and a predefined criteria driver for defining and/or suggesting sync regions  112  and inspection regions  114 . The image segmentation application  222  also includes a segmentation driver  246  for automatic segmentation of dynamic data streams  120  using information from generated reference templates  110 . The segmentation driver  246  may also assign an identifier to each inspection image that is generated (e.g., extracted, segmented) from the dynamic data stream  120 ;   an inspection application  228 , which includes a graphical user interface  130  that allows users to navigate the inspection application  228 , such as view and/or validate (e.g., inspect) inspection images  126 . The inspection application  228  includes an inspection image driver  230  for automatically performing one or more inspection tests, a results log  232  for recording results of the one or more inspection tests (e.g., pass/fail), and a printer driver  234  for communicating and sending signals and/or commands to a printer  106  that is in communication with the computing device  200 ;   a database  236 , which stores information, such as reference templates  110 , inspection images  126 , and inspection logs  240  (e.g., inspection results); and   a buffer  244  (e.g., volatile memory) for storing the dynamic data stream  120 .       

     In some implementations, the memory  214  stores metrics and/or scores for validating (e.g., inspecting) inspection images  126 . In addition, the memory  214  may store thresholds and other criteria, which are compared against the metrics and/or scores for validating (e.g., inspecting) inspection images  126 . 
     Each of the above identified executable modules, applications, or sets of procedures may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations. In some implementations, the memory  214  stores a subset of the modules and data structures identified above. Furthermore, the memory  214  may store additional modules or data structures not described above. 
     Although  FIG.  2 A  shows a computing device  200 ,  FIG.  2 A  is intended more as a functional description of the various features that may be present rather than as a structural schematic of the implementations described herein. In practice, and as recognized by those of ordinary skill in the art, items shown separately could be combined and some items could be separated. 
       FIG.  2 B  is a block diagram of a server  290  in accordance with some implementations. A server  290  may host one or more databases  274  or may provide various executable applications or modules. A server  290  typically includes one or more processing units/cores (CPUs)  202 , one or more communication interfaces  252 , memory  260 , and one or more communication buses  254  for interconnecting these components. In some implementations, the server  290  includes a user interface  256 , which includes a display  258  and one or more input devices  259 , such as a keyboard and a mouse. In some implementations, the communication buses  254  include circuitry (sometimes called a chipset) that interconnects and controls communications between system components. 
     In some implementations, the memory  260  includes high-speed random-access memory, such as DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices, and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. In some implementations, the memory  260  includes one or more storage devices remotely located from the CPU(s)  250 . The memory  260 , or alternatively the non-volatile memory devices (e.g., portions) within the memory  260 , includes a non-transitory computer-readable storage medium. The memory  260  also includes a volatile memory, such as a buffer  280 . In some implementations, the memory  260 , or the computer readable storage medium of the memory  260 , stores the following programs, modules, and data structures, or a subset thereof:
         an operating system  262 , which includes procedures for handling various basic system services and for performing hardware dependent tasks;   a network communication module  264 , which is used for connecting the server  290  to other computers via the one or more communication network interfaces (wired or wireless) and one or more communication networks, such as the Internet, other wide area networks, local area networks, metropolitan area networks, and so on;   a web server  266  (such as an HTTP server), which receives web requests from users and responds by providing responsive web pages or other resources;   an image segmentation application or an image segmentation web application  268 , which may be downloaded and executed by a web browser  266  on a user&#39;s computing device  200 . In general, an image segmentation application  268  has the same functionality as a desktop image segmentation application  222 , but provides the flexibility of access from any device at any location with network connectivity, and does not require installation and maintenance. In some implementations, the image segmentation web application  268  includes various software drivers and/or modules to perform certain tasks. In some implementations, the image segmentation web application  268  includes a graphical user interface driver  276 , which provides the user interface (such as graphical user interface  224 ) for all aspects of the image segmentation web application  268 . In some implementations, the image segmentation web application  268  includes reference template generator  226  and segmentation driver  246  as described above for a computing device  200 ;   an inspection application or an inspection web application  270 , which may be downloaded and executed by a web browser  266  on a user&#39;s computing device  200 . In general, an inspection web application  270  has the same functionality as a desktop inspection application  228 , but provides the flexibility of access from any device at any location with network connectivity, and does not require installation and maintenance. In some implementations, the inspection web application  270  includes various software drivers and/or modules to perform certain tasks. In some implementations, the inspection web application  270  includes a graphical user interface driver  278 , which provides the user interface (such as graphical user interface  130 ) for all aspects of the inspection web application  270 . In some implementations, the inspection web application  270  includes inspection image driver  230 , results log  232 , and printer driver  234  as described above for a computing device  200 ;   a data retrieval module  272  for retrieving an inspection image  126  or an inspection log  240  from the database  274 ;   one or more databases  274 , which store data used or created by any of the image segmentation web application  268 , the image segmentation application  222 , the inspection application  228 , and the inspection web application  270 . The databases  274  may store reference templates  110 , inspection images  126 , and inspection logs  240  (e.g., inspection results) as described above; and   a buffer  280  (e.g., volatile memory) for storing the dynamic data stream  120 , as described above.       

     Each of the above identified executable modules, applications, or sets of procedures may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations. In some implementations, the memory  260  stores a subset of the modules and data structures identified above. In some implementations, the memory  260  stores additional modules or data structures not described above. 
     Although  FIG.  2 B  shows a server  290 ,  FIG.  2 B  is intended more as a functional description of the various features that may be present rather than as a structural schematic of the implementations described herein. In practice, and as recognized by those of ordinary skill in the art, items shown separately could be combined and some items could be separated. In addition, some of the programs, functions, procedures, or data shown above with respect to a server  290  may be stored or executed on a computing device  200 . In some implementations, the functionality and/or data may be allocated between a computing device  200  and one or more servers  290 . Furthermore, one of skill in the art recognizes that  FIG.  2 B  need not represent a single physical device. In some implementations, the server functionality is allocated across multiple physical devices that comprise a server system. As used herein, references to a “server” include various groups, collections, or arrays of servers that provide the described functionality, and the physical servers need not be physically collocated (e.g., the individual physical devices could be spread throughout the United States or throughout the world). 
       FIG.  3 A  illustrates a dynamic data stream  300  acquired by an imaging acquisition device  104 . The dynamic data stream  300  captures images of printed materials in real time (e.g., as they are printed). In this example, two printed units  320 - 1  and  320 - 2  are shown. The dynamic data stream  300  acquires images of the printed materials at the new data acquisition line  302  (e.g., along an x-axis) as the printed materials are printed and output from the printer along a print direction indicated by arrow  304  (e.g., along a y-axis). 
       FIGS.  3 B- 3 D  illustrate generating a reference template  110  in accordance with some implementations. 
       FIG.  3 B  shows an initial image  310  that is used in generating a reference template. In some implementations, the initial image  310  is obtained from a dynamic data stream (such as dynamic data stream  300 ). The initial image  310  may also be a file (e.g., image file) that includes information regarding features of printed materials (e.g., pattern(s) or a design of the printed materials) or an image of a printed material or a sample of the printed material. The initial image  310  shown in  FIG.  3 B  is generated from the dynamic data stream  300  shown in  FIG.  3 A . Using the initial image  310 , a sync region  312  and an inspection region  114  can be defined (e.g., either manually, by a user, or automatically, by the image segmentation application).  FIG.  3 B  shows a sync region  312  that is defined using the initial image  310 . In this example, the sync region  312  corresponds to (e.g., includes) a company logo (e.g., “OMRON” logo). 
       FIG.  3 C  shows an overlay  313  that corresponds to the sync region  312  shown in  FIG.  3 B . The overlay  313  includes distinctive features that correspond to the features of the sync region  312 , which in this example, includes features of the “OMRON” logo. As part of defining and storing the sync region  312 , the reference template generator  226  projects the distinctive features of the overlay  313  along the x-axis and the y-axis via a process called a binary projection. In some implementations, the reference template generator  226  identifies each pixel of the overlay as either a foreground pixel or a background pixel (e.g., by assigning a value of 1 to foreground pixels and assigning a value of 0 to background pixels). An example of a foreground pixel is a pixel that includes print (e.g., a black pixel), and an example of a background pixel is a pixel that does not include print (e.g., a white pixel). The foreground pixels are projected along the x- and y-axes. In some implementations, each foreground pixel has an equal weight. The background pixels are not included in the projection (e.g., are subtracted out of the binary projection) such that only foreground pixels (e.g., dark or printed patterns) are included in the binary projection. The projected foreground pixels form reference signals  317  and  318  (e.g., a template signal) along the x- and y-axes, respectively. In some implementations, the reference template generator  226  also calculates a square of the reference signals.  FIG.  3 C  shows an example of first reference signals  317  (e.g., binary projection, overlay projection, projection features) along the x-axis and second reference signals  318  (e.g., binary projection, overlay projection, projection features) along the y-axis. By projecting the foreground pixels along the two perpendicular directions (e.g., the x- and y-directions), the features shown in the dynamic data stream only need to be roughly matched to the distinctive feature(s) of the sync region  312 . This ‘rough’ matching technique allows for high-speed matching that can be performed in real time, and has adequate match robustness to provide precise identification of sub-regions in the dynamic data stream that correspond to the sync region  312  defined in the reference template. 
     When using the sync region  312  as an identifying marker in a dynamic data stream, the segmentation driver  246  (e.g., image segmentation driver  246 ) attempts to match the reference signals (e.g., reference signals  317  and  318 ) with signals corresponding to features shown in the dynamic data stream. In some implementations, in order to match signals corresponding to features shown in the dynamic data stream (e.g., features printed and output from a printer  106 ) to the reference signals  317  and  318 , the segmentation driver  246  determines (e.g., calculates) at least one of: a convolution of the first reference signal  317  with a signal corresponding to features shown in the in dynamic data stream along a direction that is normal to (e.g., perpendicular to) the print direction (e.g., the x-direction), and a convolution of the second reference signal  332  with a signal corresponding to features shown in the in dynamic data stream along the print direction (e.g., the y-direction). The segmentation driver  246  also determines (e.g., calculates) at least one of: a squared error corresponding to the convolution along the print direction (e.g., y-direction), and a squared error corresponding to the convolution along the direction that is normal to the print direction (e.g., x-direction). The segmentation driver  246  then normalizes at least one of the calculated squared errors to a square of the reference signal along the corresponding axis (e.g., respective axis) and calculates a match percentage based on the normalization. In some implementations, the segmentation driver  246  normalizes a total squared error along both axes to the square of the reference signals (e.g., both the first and second reference signals) and calculates a match percentage based on the normalization. The signals corresponding to features shown in the in dynamic data stream are considered to be a match if the calculated match percentage meets a predefined matching condition (e.g., a threshold, such as a match percentage of 50% or greater, 60% or greater, 65% or greater, 67% or greater, or 70% or greater). In accordance with the calculated match percentage meeting the predefined matching condition, the segmentation driver  246  determines a position of the signals corresponding to features shown in the in dynamic data stream as a sync position. An inspection region in dynamic data stream can be determined based on the determined sync position, and the inspection region can be extracted as an inspection image corresponding to the detected sync region (e.g., detected signals corresponding to features in the dynamic data stream). 
     The convolution of the reference signal with a signal corresponding to features shown in the dynamic data stream along a corresponding (e.g., same) direction (e.g., axis) allows the segmentation driver  246  to determine (e.g., find, identify) a best matching position. For example, when trying to match the first reference signals  317  to signals corresponding to features shown in the dynamic data along the x-direction, the matching process does not require a calculation to be performed for each new acquired line of data. As long as the first reference signals  317  and the signals corresponding to features shown in the dynamic data along the x-direction are evaluated at an interval (e.g., frequency, time interval, spatial interval) that allows the majority (e.g., at least 30%, at least 50%, at least 70%) of the foreground pixels to be analyzed, match position along the print direction (e.g., y-direction) can be determined. This allows the matching process (and subsequent extraction process of an inspection region as an inspection image) to be conducted accurately and precisely even if there are some errors in the printing process (e.g., printing offset, label wander, slanted printing). 
       FIG.  3 D  illustrates a process of defining an inspection region  314  using an initial image  310  in accordance with some implementations. In this example, the inspection region  314  corresponds to one label. The dotted lines  316 - 1  and  316 - 2  indicate margins that define the inspection region  314  such that the inspection region  314  includes a portion of the initial image  310  that is disposed between lines  316 - 1  and  316 - 2 . Portions of the initial image  310  that are not included in the inspection region  314  (e.g., are not located between lines  316 - 1  and  316 - 2 ) are greyed out (e.g., deemphasized). The inspection region  314  is offset from the sync region  312  in at least one direction (e.g., along at least one of the x-direction and the y-direction). In some implementations, storing the inspection region  314  includes storing a predefined offset between the inspection region  314  and the sync region  312 . Once both the sync region  312  and the inspection region  314  are defined, the image segmentation application  222  (or image segmentation web application  268 ) stores (e.g., saves) the sync region  312 , including at least one of the first reference signals  317  and the second reference signals  318 , and the inspection region  314 , including the offset between the sync region  312  and the inspection region  314  as a reference template. The reference template includes information regarding features of the sync region  312  (e.g., reference signals  317  and/or  318 ) and information regarding the position of the inspection region  314  relative the features of the sync region  312 . The reference template may also include any of: the initial image  310 , coordinates corresponding to the sync region  312 , coordinates corresponding to the inspection region  314 , a portion of the initial image  310  corresponding to the sync region  312 , and the distinctive feature(s) corresponding to the sync region  312 . For example, the reference template may include a reference signals  317  and  318 , an offset value along the y-axis corresponding to an offset of the inspection region  314  from the sync region  312 , and a size of the inspection region  314 . 
       FIG.  3 E  illustrates segmenting a dynamic data stream  330  in accordance with some implementations. Following the example provided above with regards to generating a reference template, including defining a sync region  312  and an inspection region  314  using initial image  310 , the dynamic data stream  330  shows images of printed units (e.g., labels) that correspond to the initial image  310  (e.g., have a same or similar pattern to the initial image  310 ). Using the reference template, the segmentation driver  246  (of image segmentation application  222  or image segmentation application  268 ) identifies one or more sub-regions  322  in the dynamic data stream  330  that correspond to the defined sync region  312 . In some implementations, identification of the sub-region(s)  322  is performed using a matching method described above with respect to  FIG.  3 C . 
     As the dynamic data stream  330  is generated (e.g., by acquiring image frames of printed materials as they are being printed in real time), the segmentation driver  246  continuously attempts (e.g., tries) to match features shown on the dynamic data stream  330  with the features shown in the sync region  312  (e.g., by matching signals corresponding to features in the dynamic data stream  330  to reference signals  317  and/or  318  corresponding to the sync region  312 ). For each new sub-region  332  that is identified, the segmentation driver  246  identifies a respective (e.g., corresponding) inspection region  334 , extracts the inspection region  334  and stores the extracted inspection region  334  as an inspection image  336  (e.g., segments the dynamic data stream  330  into distinct inspection images and stores the inspection images). 
     As shown in  FIG.  3 E , a first sub-region  332 - 1  and a second sub-region  332 - 2  of the dynamic data stream  330  are identified as corresponding to the sync region  312 . The segmentation driver  246  identifies a first inspection region  334 - 1  corresponding to a first individual print unit (e.g., first label, label # 002 ) based on the identification of the first sub-region  332 - 1  (e.g., a location of the first sub-region  332 - 1 ), extracts the first inspection region  334 - 1  (e.g., segments the dynamic data stream  330 ), and stores the extracted first inspection region  334 - 1  as a first inspection image  316 - 1 . The segmentation driver  246  also identifies a second inspection region  334 - 2  corresponding to a second individual print unit (e.g., second label, label # 003 ) based on the second sub-region  332 - 2  (e.g., a location of the second sub-region  332 - 2 ), extracts the second inspection region  334 - 2  (e.g., segments the dynamic data stream  330 ), and stores the extracted second inspection region  334 - 2  as a second inspection image  316 - 2 . The second inspection image  316 - 2  is distinct (e.g., different) and separate from the first inspection image  316 - 1 . In some implementations the first inspection image  316 - 1  is stored as a first file (e.g., image file) and the second inspection image  316 - 2  is stored as a second file (e.g., image file) that is distinct (e.g., different) from the first file. 
       FIGS.  4 A and  4 B  illustrate a user interface  400  for generating a reference template in accordance with some implementations.  FIGS.  4 A and  4 B  show a graphical user interface  400  (corresponding to any of graphical user interface  224  of image segmentation application  222  and graphical user interface driver  276  of image segmentation web application  268 ) for generating a reference template, including defining sync region(s) and inspection region(s) using an initial image. The graphical user interface  400  includes a panel  410  that illustrates an initial image  420 . Using the initial image  420  (which in this case is an image obtain from a dynamic data stream), a user can select (e.g., define) a sync region  422 . In this example, a user has identified (e.g., defined) the sync region  422  by drawing a rectangular box around a logo shown in the initial image  420 . In some implementations, as shown, graphical user interface  400  also includes a visualization region  430 . In some implementations, as shown, the graphical user interface  400  may display one or more instructions (e.g., prompts, directions, tips) in the visualization region  430  to help the user in setting up a reference template, such as instructions for how to define a sync region  422 . Once the sync region  422  is defined, the user can proceed to define an inspection region. 
     As shown in  FIG.  4 B , a user may move lines  423 - 1  and  423 - 2 , shown in the panel  410  to define an inspection region  424  such that the inspection region  424  is located between the lines  423 - 1  and  423 - 2 . In some implementations, as the user adjusts the position of any of the lines  423 - 1  and  423 - 2 , visualization region  430  is updated to display portions of the initial image that are between the lines  423 - 1  and  423 - 2 . In some implementations, the visualization region  430  also displays one or more instructions (e.g., prompts, directions, tips) in the visualization region  430  to help the user in defining the inspection region  424 . In some implementations, the one or more instructions include a first option to save all selections (e.g., store information corresponding to the defined sync region  422  and inspection region  424 , the “finish button”) and a second option to return to a sync region editing step and define a new sync region (e.g., the “back to region selection” button). Once the user has accepted the defined sync region  422  and the defined inspection region  424  (e.g., the user selects the “Finish” button), the image segmentation application  222  (or image segmentation web application  268 ) generates a reference template and stores the reference template in a memory of the computing system  100  (such as on a computing device running the image segmentation application  222 ) for use in segmenting frames (e.g., images) of a dynamic data stream into inspection images. 
       FIG.  4 C  illustrates a user interface  402  for inspection of a segmented inspection image in accordance with some implementations.  FIG.  4 C  shows a graphical user interface  402  (corresponding to any of graphical user interface  130  of inspection application  228  and graphical user interface driver  278  of inspection web application  270 ). In some implementations, the image segmentation application  222  and the inspection application  228  are part of a same program (e.g., computer program) such that a computer application is able to launch (e.g., seamlessly launch) and transition (e.g., seamlessly transition) between the two applications. The graphical user interface  402  may include any of:
         visualization region  430  for displaying inspection images  446 ;   a thumbnail panel  440  for displaying thumbnails  442  (e.g., previews) of inspection images  446  that have been segmented (e.g., extracted) from a dynamic data stream;   an information panel  450  for displaying information regarding an inspection image  446  being displayed in the visualization region  430  and/or information regarding inspection images  446  that are being inspected;   an affordance  460  for reconfiguring (e.g., redefining, updating, editing) a sync region  422  and/or an inspection region  444  of the reference template;   an inspection log  462  for displaying inspection results;   a printer status log  464  for displaying a status of a printer (such as printer  106 ) that is in communication with the computer system  100 ; and   a reference template icon  466  (e.g., golden image icon) corresponding to a reference template used to segment the dynamic data stream and generate the inspection images  446 .       

     For example, as shown in  FIG.  4 C , the visualization region  430  is currently displaying a first inspection image  446 - 1 . The thumbnail panel  440  indicates that two inspection images are currently available for inspection. In some implementations, such as when segmentation of a dynamic data stream is performed in real time (e.g., as the printed materials are being printed), the thumbnail panel  440  may continue to populate with additional thumbnails  442  as more inspection images  446  are extracted (e.g., segmented) from the dynamic data stream and stored (e.g., saved). Additionally, information panel  450  displays a name of an inspection template being used, a label size (e.g., size of an individual printed unit), and a number of regions to be inspection. In this example, the name of the inspection template is “sync” and the inspection template defines 6 feature regions  470  for inspection. The six feature regions  470  (e.g., feature regions  470 - 1  to  470 - 6 ) that are defined in the “sync” template are shown in dashed squares in the visualization region  430  (overlaid on top of the inspection image), as well as shown in the inspection log  462 . In this example, five of the feature regions  470  have passed inspection (including feature region  470 - 4 , which received a low score of 2.0), and the feature region  470 - 2  has failed inspection. A sub-region  472  of the inspection image  446 - 1  that corresponds to the sync region  422  (as defined in the reference template) is shown by a solid box. 
     In some implementations, the feature regions  470  are automatically identified by the inspection image driver  230  of the inspection application  228  (or the inspection web application  270 ). For example, the “sync” inspection template may be configured such that the inspection image driver  230  automatically identifies (e.g., defines) portions of the inspection image  446 - 1  that include barcodes as feature regions  470  to be inspected. In some implementations, the feature regions  470  are identified (e.g., defined) in the “sync” inspection template by a user. 
     For example, when a feature region includes a 1-dimensional (1D) barcode, inspection of the feature region may include detecting edges of the 1D barcode, measuring widths and heights of bars in the 1D barcode, and verifying the measured widths and heights using barcode standards. Additionally, bar size and bar spacing may be inspected for uniformity and to confirm that the contrast between bars and spaces meet a standard or threshold contrast level. Information stored in the 1D barcode may also be decoded and validated using data structure standards. 
     In another example, when a feature region includes a 2-dimensional (2D) barcode, inspection of the feature region may include identifying fixed patterns according to symbology, extracting and measuring grey levels at grid locations to decode data, and measuring print contrast and uniformity. 
     In a yet another example, when a feature region includes text or visual marks (also known as “blemishes”), inspection of the feature region may include using threshold and/or blob detection to identify the text and/or visual marks in the feature region. When the feature region includes text, optical character recognition (OCR) and/or optical character verification (OCV) may be used to interpret the text using classification methods. When the feature region includes visual mark(s), the detected objects (also known as “blobs”) may be compared to a golden image that represents an ideal print image to identify and measure print deviations and defects. 
       FIGS.  5 A and  5 B  illustrate examples of reference templates in accordance with some implementations. 
       FIG.  5 A  illustrates an example of a reference template  500  that includes one sync region  512  and a plurality of inspection regions  514 - 1  and  514 - 2 . In this example, for each sub-region in a dynamic data stream that is identified that corresponds to the sync region  512 , two inspection images are generated, a first inspection image showing a portion of the dynamic data stream that corresponds to inspection region  514 - 1  and a second inspection image showing a portion of the dynamic data stream that corresponds to inspection region  514 - 2 . 
       FIG.  5 A  illustrates an example of a reference template  502  that includes a plurality of sync regions  522  and  532 , and a plurality of inspection regions  524  and  534 . In this example, for each sub-region in a dynamic data stream that is identified that corresponds to the sync region  522 , an inspection image showing a portion of the dynamic data stream that corresponds to inspection region  524  is stored. Similarly, for each sub-region in a dynamic data stream that is identified that corresponds to the sync region  532 , an inspection image showing a portion of the dynamic data stream that corresponds to inspection region  534  is stored. Thus, a user may customize the inspection image to correspond to any portion of information in the dynamic data stream. 
       FIGS.  6 A- 6 C  illustrate flow diagrams of a method  600  for analyzing images (e.g., inspection images  126 ) in accordance with some implementations. The steps of the method  600  may be performed by a computer system  100 , corresponding to a computer device  200  or a server  290 . In some implementations, the computer system  100  includes one or more processors and memory.  FIGS.  6 A and  6 B  correspond to instructions stored in a computer memory or computer-readable storage medium (e.g., the memory  214  of the computing device  200 ). The memory stores one or more programs configured for execution by the one or more processors. For example, the operations of the method  600  are performed ( 610 ), at least in part, by a segmentation driver  246 . 
     In accordance with some implementations, a computer system  100  (or computing device  200  of the computing system  100 ) is in communication with an image acquisition device  104  that includes an image sensor (e.g., a CCD sensor, a CCD camera, a camera). The computer system  100  receives ( 620 ) a reference template  110  that includes a predefined sync region  112  and a predefined inspection region  114 . The sync region  112  has one or more distinctive features and the predefined inspection region  114  is located at a predefined offset from the predefined sync region  112 . The computer system  100  then acquires ( 630 ) a continuous sequence of image frames (e.g., dynamic data stream  120 , video) from the image sensor and stores each of the image frames in a buffer within the memory (e.g., buffer  244  in memory  214  or buffer  280  in memory  260 ). For each image frame in the buffer, the computer  100  determines ( 640 ) whether the respective image frame includes a respective sub-region  122 - 2  that matches the predefined sync region  112 . In accordance with determination that the respective image frame (e.g., dynamic data stream  120 ) includes a respective sub-region  122 - 1  matching the predefined sync region  112 , the computer system  100 : (i) captures ( 650 ) a respective inspection region  124 - 1 , within the respective image frame (e.g., within the dynamic data stream  120 ), at the predefined offset from the respective sub-region  122 - 1 , and ii) stores ( 650 ) the captured respective inspection region  124 - 1  to a non-volatile portion of the memory of the computer system  100  as an inspection image  126 - 1 . The non-volatile portion of the memory is distinct from the buffer. 
     In some implementations, the predefined sync region  112  is specified ( 621 ) by a user (e.g., a user selects a portion of an initial image  310  as corresponding to the sync region  312 ). 
     In some implementations, the predefined inspection region  114  is specified ( 622 ) by a user (e.g., a user selects a portion of an initial image  310  as corresponding to the inspection region  314 ). 
     In some implementations, the predefined inspection region  114  includes ( 623 ) the sync region  112  such that the inspection image  126  includes the sub-region  122 . For example, as shown in  FIG.  1 B , the inspection region  114  includes the sync region  112  (see also in  FIG.  1 C , the inspection image  126 - 1  includes the logo. In another example, shown in  FIG.  3 D , the inspection region  314  includes the sync region  312  (see also  FIG.  4 C , the inspection image  446 - 1  includes the sub-region  472  that corresponds to the logo). 
     In some implementations, the predefined inspection region  114  is separate ( 624 ) from (e.g., is distinct from, does not overlap with, does not include) the sync region  112  such that the inspection image  126  is separate from (e.g., is distinct from, does not overlap with, does not include) the sub-region  122 . 
     In some implementations, the computer system  100  stores information regarding the sync region  112 , including storing ( 625 ) a sync region size and a sync region location. The sync region location includes a first set of coordinates  113 . 
     In some implementations, the computer system  100  stores information regarding the inspection region  114 , including storing ( 626 ) an inspection region size and an inspection region location. The inspection region location includes a second set of coordinates  115  that are different from the first set of coordinates  113 . In some implementations, the first set of coordinates  113  and the second set of coordinates  115  reference a same origin  117  (e.g., are part of a same coordinate system). 
     In some implementations, in order to determine ( 640 ) whether the respective image frame (e.g., dynamic data stream  120 ) includes a respective sub-region  122  matching the predefined sync region  112 , the computer system  100  detects ( 642 ) a frame (e.g., image frame, video frame) that includes the one or more distinctive features corresponding to the sync region  112 . For example, the computer system  100  may match reference signals  317  and  318 , corresponding to a sync region  312 , with signals corresponding to features shown in the dynamic data stream  320  using a rough matching method as described above with respect to  FIG.  3 C . 
     In some implementations, the computer system  100  provides ( 660 ) the captured respective inspection region  114  for inspection (e.g., as an inspection image  126 ). For example,  FIG.  4 C  illustrates a graphical user interface  402  that displays an inspection image  446 - 1  so that the computer system  100  or a user of the computer system  100  may perform one or more inspection tests on the inspection image  446 - 1 . 
     In some implementations, the computer system  100  performs ( 670 ) one or more predefined visual tests on the captured respective inspection region (e.g., inspection image  446 - 1 ) to evaluate whether the respective image frame meets a specified quality standard. For example,  FIG.  4 C  illustrates an inspection image  446 - 1  that has undergone one or more visual tests and results of the visual test(s) are displayed in the inspection log  462 . 
     In some implementations, in order to perform ( 670 ) the one or more predefined visual tests, the computer system  100  identifies ( 671 ) a feature region  470  for evaluation (e.g., validation, inspection). 
     In some implementations, in order to perform ( 670 ) the one or more predefined visual tests, the computer system  100  determines ( 672 ) whether the feature region  470  meets the specified quality standard. 
     In some implementations, the feature region  470  includes a barcode (e.g., a quick response code (QR code), 1D barcode, 2D barcode). For example, feature region  470 - 4  includes a QR code. In another example, feature region  470 - 5  includes a barcode. 
     In some implementations, in order to perform ( 670 ) the one or more predefined visual tests, the computer system  100  automatically identifies ( 674 ) one or more feature regions  470  and at least one of the feature regions  470  includes a barcode. 
     In some implementations, the feature region  470  is a user defined region. For example, a user may generate an inspection template that identifies portions of the inspection image as being feature regions  470  and including information or features that needs to be inspected. 
     In some implementations, the computer system  100  reports ( 680 ) results of the one or more predefined visual tests performed on the captured respective inspection region (e.g., inspection image  126  or  446 - 1 ). 
     In some implementations, the computer system  100  provides ( 682 ) an indication of whether the feature region  470  meets the specified quality standard. 
       FIG.  7    illustrates a flow diagram of a method  700  for analyzing images in accordance with some implementations. The steps of the method  700  may be performed by a computer system  100 , corresponding to a computer device  200  or a server  290 . In some implementations, the computer system  100  includes one or more processors and memory.  FIG.  7    corresponds to instructions stored in a computer memory or computer-readable storage medium (e.g., the memory  214  of the computing device  200 ). The memory stores one or more programs configured for execution by the one or more processors. For example, the operations of the method  700  are performed ( 710 ), at least in part, by a segmentation driver  246 . 
     In accordance with some implementations, a computer system  100  (or computing device  200  of the computing system  100 ) is in communication with an image acquisition device  104  that includes an image sensor (e.g., a CCD sensor, a CCD camera, a camera). The computer system  100  receives ( 720 ) a first set of coordinates  113  and a set of distinctive features corresponding to a predefined sync region  112 . The computer system also receives ( 730 ) a second set of coordinates  115  corresponding to a predefined inspection region  114 . The computer system  100  then acquires ( 740 ) a continuous sequence of image frames (e.g., dynamic data stream  120 , video) from the image sensor and stores each of the image frames in a buffer within the memory (e.g., buffer  244  in memory  214  or buffer  280  in memory  260 ). For each image frame in the buffer, the computer  100  determines ( 740 ) whether the respective image frame includes a respective sub-region  122 - 2  that matches the predefined sync region  112 . In accordance with determination that the respective image frame (e.g., dynamic data stream  120 ) includes a respective sub-region  122 - 1  matching the predefined sync region  112 , the computer system  100 : (i) captures ( 750 ) a respective inspection region  124 - 1 , within the respective image frame (e.g., within the dynamic data stream  120 ), at the predefined offset from the respective sub-region  122 - 1 , and ii) stores ( 750 ) the captured respective inspection region  124 - 1  to a non-volatile portion of the memory of the computer system  100  as an inspection image  126 - 1 . The non-volatile portion of the memory is distinct from the buffer. 
       FIGS.  8 A and  8 B  illustrate flow diagrams of a method  800  for generating a reference template in accordance with some implementations. The steps of the method  800  may be performed by a computing device  200 , which may correspond to computing device  102  in communication with the computer system  100  or a server  290 ). In some implementations, the computing device  200  includes one or more processors and memory.  FIGS.  8 A and  8 B  correspond to instructions stored in a computer memory or computer-readable storage medium (e.g., the memory  214  of the computing device  200 ). The memory stores one or more programs configured for execution by the one or more processors. For example, the operations of the method  800  are performed ( 810 ), at least in part, by a reference template generator  226 . 
     In accordance with some implementations, the computing device  200  displays ( 820 ) an image (e.g., initial image  310 ) at a user interface of the computer device  200 . The computer device  200  receives ( 840 ) user input defining a sync region  312  within the initial image  310  at the user interface  130 . The sync region  312  includes one or more distinctive features. The computer device  200  also receives ( 850 ) user input defining an inspection region  314  within the initial image  310  at the user interface  130 . The inspection region  314  is located at a predefined offset from the sync region  312 . The computer device  200  then stores, at a non-volatile portion of the memory  214 , information regarding the sync region  312  and the inspection region  314  as a reference template. 
     In some implementations, the computing device  200  automatically provides ( 830 ) a recommended region of the image  310  as the sync region  312 . In some implementations, the recommended region is recommended based on visual analysis of a plurality of sample images and determining that the recommended regions within each of the sample images are substantially the same. 
     In some implementations, the user input defining ( 842 ) a sync region  312  within the initial image  310  is a user input accepting the recommended region as the sync region  312 . 
     In some implementations, storing ( 860 ) the information regarding the sync region  312  as a reference template includes storing ( 862 ) a first set of coordinates corresponding to the sync region  312 . In some implementations, the computing device  200  also stores any of an image of the one or more distinctive features corresponding to the sync region  312  and reference signals  317  and  318  corresponding to the sync region  312 . 
     In some implementations, storing ( 860 ) the information regarding the inspection region  314  as a reference template includes storing ( 864 ) a second set of coordinates corresponding to the inspection region  314 . The second set of coordinates is distinct (e.g., different) from the first set of coordinates. 
     In some implementations, storing ( 860 ) the information regarding the sync region  312  and the inspection region  314  as a reference template includes storing the initial image  310  (e.g., initial image  310 ) used to generate the reference template. 
     In some implementations, the computing device  200  also provides ( 870 ) the reference template to a second computer system (e.g., second computing device) that is in communication with, distinct from, and remote from the computing device  200  of the computing system  100 . The second computer system is in communication with an image acquisition device  104  that has an image sensor. 
     The terminology used in the description of the invention herein is for the purpose of describing particular implementations only and is not intended to be limiting of the invention. As used in the description of the invention and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, steps, operations, elements, components, and/or groups thereof. 
     The foregoing description, for purpose of explanation, has been described with reference to specific implementations. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The implementations were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various implementations with various modifications as are suited to the particular use contemplated.