GRADUATED ADAPTIVE ROI FOR IMAGE PROCESSING CAMERAS
Patent Information
- Application Number
- DE112023004095
- Authority / Receiving Office
- DE · DE
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-09-30
- Filing Date
- 2023-09-11
- Publication Date
- 2025-09-04
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
BACKGROUND
[0001] It is often useful to locate a visual feature, such as a barcode, on an object. Current machine vision systems achieve this by first acquiring an image of an object and then scanning a field of view (FOV) of the image (e.g., searching the entire image for the barcode or another object). However, scanning the entire image is inefficient. Therefore, there is a need for improved efficiency in these types of machine vision systems. DESCRIPTION
[0002] In one embodiment, the present invention is a method of operating a machine vision system, the machine vision system comprising a computing device for executing an application and a fixed imaging device communicatively coupled to the computing device. The method may comprise: (a) acquiring a first image across a field of view (FOV) using the fixed imaging device; (b) analyzing at least a portion of the first image using the application to detect a visual feature within the first image; (c) determining, via the application, a location of the visual feature within the first image; (d) determining, via the application, a first region of interest (ROI) within the first image based on the location of the visual feature; (e) acquiring, via the fixed imaging device, a second image;(f) analyzing, via the application, at least a portion of the second image to detect the visual feature within the second image; (g) determining, via the application, a location of the visual feature within the second image; (h) determining, via the application, a second ROI within the second image based on the location of the visual feature; (i) ranking the first and second ROIs; (j) acquiring a third image via the fixed imaging device; (k) analyzing, via the application, a third ROI within the third image to detect the visual feature, wherein the third ROI within the third image is based on the ranking; and (i) in response to acquiring the visual feature in the third image, transmitting data associated with the visual feature in the third image to a host processor.
[0003] In a variation of this embodiment, analyzing the third ROI comprises: setting the third ROI as a higher-ranking ROI of the first ROI and the second ROI; if it is determined that the visual feature is not within the set third ROI, updating the third ROI to be a lower-ranking ROI than the first ROI and the second ROI.
[0004] In a further variation of this embodiment, analyzing the third ROI further comprises: if it is determined that the visual feature is not within the updated third ROI, setting the third ROI as a FOV of the third image.
[0005] In another variation of this embodiment, analyzing the third ROI further comprises: analyzing the third ROI set to the FOV of the third image to detect the visual feature; determining, via the application, a location of the visual feature within the third image; determining, via the application, a new third ROI within the third image based on the location of the visual feature; determining, via the application, that the new third ROI is within a predetermined tolerance of the first ROI; and in response to determining that the new third ROI is within a predetermined tolerance of the first ROI, increasing, via the application, a weighting factor of the first ROI.
[0006] In a further variation of this embodiment, the method further comprises: after analyzing the ROI of the third image, iteratively acquiring images, and at each iteration: increasing a weighting factor of the first ROI if it is determined that the visual feature is within the first ROI; increasing a weighting factor of the second ROI if it is determined that the visual feature is within the second ROI; and re-ranking the first and second ROIs based on the weighting factors.
[0007] In a further variation of this embodiment, analyzing a portion of the first image to detect the visual feature comprises determining a bounding box of the visual feature via the application; and determining the first ROI within the first image comprises applying a scaling factor to the bounding box.
[0008] In a further variation of this embodiment, the method further comprises: in response to detecting the visual feature in the first image, transmitting data associated with the visual feature in the first image to the host processor; and in response to detecting the visual feature in the second image, transmitting data associated with the visual feature in the second image to the host processor.
[0009] In a further variation of this embodiment, ranking the first and second ROIs comprises: presenting a representation of the first ROI and the second ROI to a user; receiving a user selection of either the first ROI or the second ROI from the user; and determining the rankings of the first ROI and the second ROI based on the user selection.
[0010] In another embodiment, the invention is a method of operating a machine vision system, the machine vision system comprising a computing device for executing an application and a fixed imaging device communicatively coupled to the computing device.The method may include: acquiring a first plurality of images across a field of view (FOV) via the fixed imaging device; identifying, via the application, a plurality of regions of interest (ROIs) within the FOV from the first plurality of images, each of the plurality of ROIs associated with a visual feature, wherein each of the plurality of ROIs is ranked based on a recurrence frequency of the visual feature within a predetermined proximity to each of the ROIs within the plurality of images; acquiring a second image via the fixed imaging device; successively identifying, via the application, a candidate location for the visual feature within the second image based on a ranking of each of the ROIs until the visual feature is identified at the candidate location; and providing data regarding the visual feature from the second image to a host processor.
[0011] In a variant of this embodiment, the number of regions of interest is limited to no more than n ROls.
[0012] In a further variant of this embodiment, n is set by a user.
[0013] In another variation of this embodiment, the method further comprises: receiving input from a user indicating that an ROI feature should be deactivated; acquiring a third image via the fixed imaging device; and in response to receiving the input, setting an ROI within the third image as the FOV of the third image.
[0014] In another variation of this embodiment, the method further comprises: receiving input from a user indicating that an ROI feature should be deactivated; acquiring a third image via the fixed imaging device; setting an ROI within the third image based on a highest-ranking ROI from the plurality of ROIs; determining that the feature is not within the ROI within the third image; and in response to receiving the input and determining that the visual feature is not within the ROI in the third image, setting an ROI within the third image as the FOV of the third image.
[0015] In a further variation of this embodiment, the method further comprises: receiving input from a user indicating that updating of ratings should be disabled; and in response to the input, not updating a recurrence frequency of any one of the plurality of ROIs upon identification of the visual feature within the second image.
[0016] In a further variation of this embodiment, the visual feature is identified at the candidate location based on the entire visual feature being within the candidate location.
[0017] In a further variation of this embodiment, the visual feature is identified at the candidate location based on fifty percent or more of the visual feature being within the candidate location.
[0018] In a further variation of this embodiment, the method further comprises creating a ranking table comprising: rankings of each of the plurality of ROIs; the recurrence frequency of the visual feature in a predetermined proximity to each of the plurality of ROIs; and coordinates of each of the plurality of ROIs.
[0019] In a further variant of this embodiment, the visual feature is a barcode.
[0020] In a further variation of this embodiment, the visual feature is a crack on the surface of a structure. BRIEF DESCRIPTION OF THE DRAWINGS
[0021] The accompanying figures, in which like reference numerals refer to identical or functionally similar elements throughout the several views, together with the following detailed description, are incorporated in this specification and serve to further illustrate embodiments of concepts encompassing the claimed invention, as well as to explain various principles and advantages of such embodiments. Fig. 1 is an example system for optimizing one or more imaging settings for an image processing job, in accordance with embodiments described herein. Fig. Figure 2 is a perspective view of the imaging device of Fig. 1, according to the embodiments described herein. Fig. Figure 3 shows an example application interface involving the identification of a single barcode, where the region of interest (ROI) is the field of view (FOV). Fig. 4 shows an example interface including the identification of a single barcode and a ROI set, according to the embodiments described herein. Fig. Figure 5 shows an example interface that involves the identification of multiple barcodes, where the ROI is the FOV. Fig. 6 shows an example interface including the identification of multiple barcodes and a ROI set, according to the embodiments described herein. Fig. 7 shows an example method for identifying a visual feature in a barcode, including capturing a first plurality of images, according to one embodiment. Fig. Figure 8 shows an example classification table. Fig. 9 shows an example method for identifying a visual feature in a barcode, according to one embodiment.
[0022] Those skilled in the art will appreciate that elements in the figures are illustrated for simplicity and clarity and are not necessarily drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to enhance understanding of embodiments of the present invention.
[0023] The apparatus and method components have been represented, where appropriate, by conventional symbols in the drawings which show only those specific details relevant to an understanding of the embodiments of the present invention, so as not to obscure the disclosure with details which would be readily apparent to those skilled in the art having recourse to the present description. DETAILED DESCRIPTION
[0024] Generally speaking, some embodiments described herein use classification-based adaptive ROI techniques to find visual features in an image. For example, an imaging device 104, as shown in Fig. 1, capture images, which it sends to the user computing device 102. The imaging application 116 may then use the images to rank ROIs of the images (e.g., based on the frequency with which the visual feature is located within the ROI, or based on another suitable technique). The imaging application 116 may then receive additional images and search them for the visual feature within the highest-ranked ROI. If the visual feature is not found in the highest-ranked ROI, the imaging application 116 may search for the visual feature in the second-highest-ranked ROI, and so on, until the visual feature is found. If the visual feature is not found in any of the ROIs, the imaging application may set the ROI as the FOV of the new image (e.g., as a fallback mechanism), so that the imaging application 116 effectivelyat full resolution) for the visual feature.
[0025] More precisely, Fig. 1 shows an example of an imaging system 100 configured to locate a barcode or other object. In the embodiment of Fig. 1, the image processing system 100 includes a user computing device 102 and an imaging device 104 communicatively coupled to the user computing device 102 via a network 106. Generally, the user computing device 102 is configured to allow a user / operator to create an image processing job for execution on the imaging device 104. Once created, the user / operator can then transfer / upload the image processing job via the network 106 to the imaging device 104, where the image processing job is then interpreted and executed. The user computing device 102 may include one or more operator workstations and may include one or more processors 108, one or more memories 110, a network interface 112, an input / output interface 114, and an imaging application 116.
[0026] The imaging device 104 is connected to the user computing device 102 via a network 106 and is configured to interpret and execute image processing jobs received from the user computing device 102. Generally, the imaging device 104 may receive from the user computing device 102 and via the network 106 a job file containing one or more job scripts that define the image processing job and can configure the imaging device 104 to acquire and / or analyze images according to the image processing job. For example, the imaging device 104 may include flash memory used to determine, store, or otherwise process image data / datasets and / or post-imaging data.The imaging device 104 may then receive, detect, and / or otherwise interpret a trigger that causes the imaging device 104 to acquire an image of the target object according to the configuration specified via the one or more job scripts. Following acquisition and / or analysis, the imaging device 104 may transmit the images and any associated data via the network 106 to the user computing device 102 for further analysis and / or storage.In various embodiments, the imaging device 104 may be a "smart" camera and / or otherwise configured to automatically perform sufficient functions of the imaging device 104 to obtain, interpret, and execute job scripts defining image processing jobs, such as one or more job scripts included in one or more job files obtained, for example, from the user computing device 102.
[0027] Generally, the job file may be a JSON representation / data format of the one or more job scripts that may be transferred from the user computing device 102 to the imaging device 104. The job file may also be loaded / read by a C++ runtime engine or other suitable runtime engine executing on the imaging device 104. Furthermore, the imaging device 104 may run a server (not shown) configured to listen for and receive job files from the user computing device 102 over the network 106. Additionally or alternatively, the server configured to listen for and receive job files may be implemented as one or more cloud-based servers, such as a cloud-based computing platform.For example, the server can be one or more cloud-based platforms such as MICROSOFT AZURE, AMAZON AWS, or the like.
[0028] In any case, the imaging device 104 may include one or more processors 118, one or more memories 120, a network interface 122, an input / output interface 124, and an imaging assembly 126. The imaging assembly 126 may include a digital camera and / or a digital video camera for capturing or recording digital images and / or individual images (frames). Each digital image may contain pixel data that may be analyzed by one or more tools, each configured to perform an image analysis task, as described herein. The digital camera and / or the digital video camera, e.g., of the imaging assembly 126, may be configured to capture, record, or otherwise generate digital images, and in at least some embodiments, may store such images in a memory (e.g., one or more memories 110, 120) of a corresponding device (e.g.,User computing device 102, imaging device 104).
[0029] For example, the imaging assembly 126 may include a photorealistic camera (not shown) for capturing, sampling, or scanning 2D image data. The photorealistic camera may be an RGB (red, green, blue)-based camera for capturing 2D images with RGB-based pixel data. In various embodiments, the imaging assembly may additionally include a three-dimensional (3D) camera (not shown) for capturing, sampling, or scanning 3D image data. The 3D camera may include an infrared (IR) projector and an associated IR camera for capturing, sampling, or scanning 3D image data / datasets.In some embodiments, the photorealistic camera of imaging assembly 126 may capture 2D images and associated 2D image data at the same or a similar time as the 3D camera of imaging assembly 126, such that both sets of 3D image data and 2D image data for a particular surface, object, area, or scene are available to imaging device 104 at the same or a similar time. In various embodiments, imaging assembly 126 may include the 3D camera and the photorealistic camera as a single imaging device configured to capture 3D depth image data concurrently with 2D image data. Consequently, the captured 2D images and corresponding 2D image data may be depth-aligned with the 3D images and 3D image data.
[0030] The entire area that the imaging device 104 can image may be referred to as the field of view (FOV). In this context, the FOV is determined by the optics of the imaging device 104. Typically, the imaging device 104 can capture images of the environment that appear within the FOV. Upon analyzing the image, specific parts of the image can be identified in terms of pixel values and / or specific coordinates of the image (e.g., horizontal and vertical pixel values, a Cartesian coordinate system with pixel values, etc.).
[0031] As previously mentioned, the pixel data may be analyzed by one or more tools, each configured to perform an image analysis task. For example, a barcode scanning / reading tool may be executed to detect or read a barcode. For this purpose, it may be useful to define a region of interest (ROI) corresponding to a specific area or target object imaged by the imaging assembly 126 and within which the tool is to be executed (e.g., to execute the barcode scanning / reading tool). In this context, and as will be apparent from the following discussion, the determination of an ROI may occur as part of the execution of a tool (e.g., the execution of the barcode scanning / reading tool). Additionally or alternatively, the determination of an ROI may be performed specifically with an ROI specification / determination tool.
[0032] To further explain the job and the job's corresponding tools, the imaging application 116 may present the user with a series of menus for creating a new job or editing a current job. When creating a new job, the user may select from a variety of tools that comprise a particular job. These tools include, but are not limited to, (i) a barcode scanning / reading tool, (ii) a pattern matching tool, (iii) an edge detection tool, (iv) a semantic segmentation tool, (v) an object detection tool, (vi) an object tracking tool, (vii) a region of interest definition / determination tool, etc. For example, if a first type of product is running on a manufacturing line, a user may configure an initial job, including selecting and configuring specific tools to execute it (e.g.,Continuous or iterative image acquisition) while the first type of product is running on the production line. When the production line then switches to a second product type, the user can stop the first job and start a second job by configuring the second job, including selecting and configuring various tools that are more useful for analyzing the second product type.
[0033] The imaging device 104 may also process the 2D image data / datasets and / or 3D image datasets for use by other devices (e.g., the user computing device 102, an external server). For example, the one or more processors 118 may process the image data or datasets acquired, scanned, or sampled by the imaging assembly 126. Processing of the image data may generate post-imaging data, which may include metadata, simplified data, normalized data, results data, status data, or alarm data determined from the original scanned or acquired image data. The image data and / or the post-imaging data may be sent to the user computing device 102 executing the imaging application 116 for viewing, editing, and / or otherwise interacting with it.In other embodiments, the image data and / or post-imaging data may be sent to a server for storage or further processing. As described herein, the user computing device 102, the imaging device 104, and / or an external server or other central processing unit and / or memory may store such data and also send the image data and / or post-imaging data to another application implemented on a user device, such as a mobile device, a tablet, a handheld device, or a desktop device.
[0034] Each of the one or more memories 110, 120 may include one or more forms of volatile and / or non-volatile, fixed and / or removable memory, such as read-only memory (ROM), electronic programmable read-only memory (EPROM), random access memory (RAM), erasable electronic programmable read-only memory (EEPROM) and / or other hard drives, flash memory, MicroSD cards, and others. In general, a computer program or computer-based product, application, or code (e.g., the imaging application 116 or other computer instructions described herein) may be embodied on a computer-usable storage medium or an accessible, non-transitory computer-readable medium (e.g.,Standard Random Access Memory (RAM), an optical disk, a USB (Universal Serial Bus) drive, or the like) embodying such computer-readable program code or computer instructions, wherein the computer-readable program code or computer instructions may be installed on or otherwise adapted to be executed by the one or more processors 108, 118 (e.g., in conjunction with the respective operating system in the one or more memories 110, 120) to facilitate, implement, or carry out the machine-readable instructions, methods, processes, elements, or constraints as illustrated, depicted, or described in the various flowcharts, diagrams, charts, figures, and / or other disclosures herein.In this respect, the program code can be implemented in any desired programming language and can be implemented as machine code, assembly code, bytecode, interpretable source code, or the like (e.g., via Golang, Python, C, C++, C#, Objective-C, Java, Scala, ActionScript, JavaScript, HTML, CSS, XML, etc.).
[0035] The one or more memories 110, 120 may store an operating system (OS) (e.g., Microsoft Windows, Linux, Unix, etc.) capable of supporting the functions, applications, methods, or other software described herein. The one or more memories 110 may also store the imaging application 116, which may be configured to enable the construction of image processing jobs, as further described herein. Additionally or alternatively, the imaging application 116 may also be stored in the one or more memories 120 of the imaging device 104 and / or in an external database (not shown) accessible via the network 106 or otherwise communicatively coupled to the user computing device 102.The one or more memories 110, 120 may also store machine-readable instructions, including one or more applications, one or more software components, and / or one or more application programming interfaces (APIs) that may be implemented to facilitate or carry out the features, functions, or other disclosures described herein, such as methods, processes, elements, or constraints as illustrated, depicted, or described in the various flowcharts, illustrations, diagrams, figures, and / or other disclosures herein.For example, at least some of the applications, software components, or APIs may be part of, include, or otherwise be part of a computer vision-based imaging application, such as imaging application 116, each of which may be configured to facilitate its various functionalities discussed herein. It should be appreciated that one or more other applications executed by the one or more processors 108, 118 are contemplated.
[0036] The one or more processors 108, 118 may be connected to the one or more memories 110, 120 via a computer bus that is responsible for transferring electronic data, data packets, or other electronic signals to and from the one or more processors 108, 118 and the one or more memories 110, 120 to implement or execute the machine-readable instructions, methods, processes, elements, or constraints as illustrated, depicted, or described in the various flowcharts, diagrams, figures, and / or other disclosures herein.
[0037] The one or more processors 108, 118 may be connected to the one or more memories 110, 120 via the computer bus to execute the operating system (OS). The one or more processors 108, 118 may also be connected to the one or more memories 110, 120 via the computer bus to create, read, update, delete, or otherwise access or interact with the data stored in the one or more memories 110, 120 and / or external databases (e.g., a relational database such as Oracle, DB2, MySQL, or a NoSQL-based database such as MongoDB). The data stored in the one or more memories 110, 120 and / or an external database may include all or part of the data or information described herein, including, for example, images from image processing jobs (e.g.,Images captured by the imaging device 104 in response to the execution of a job script) and / or other suitable information.
[0038] The network interfaces 112, 122 may be configured to communicate (e.g., send and receive) data with one or more networks or local end devices, such as the network 106 described herein, via one or more external / network ports. In some embodiments, the network interfaces 112, 122 may comprise a client-server platform technology such as ASP.NET, Java J2EE, Ruby on Rails, Node.js, a web service, or an online API that responds to and answers electronic requests. The network interfaces 112, 122 may implement the client-server platform technology that communicates via the computer bus with the one or more memories 110, 120 (including the applications, components, APIs, data, etc. stored therein).) to implement or perform the machine-readable instructions, methods, processes, elements, or restrictions as illustrated, depicted, or described in the various flowcharts, figures, diagrams, figures, and / or other disclosures herein.
[0039] According to some embodiments, network interfaces 112, 122 may include or interact with one or more transceivers (e.g., WWAN, WLAN, and / or WPAN transceivers) that operate according to IEEE standards, 3GPP standards, or other standards and can be used to receive and transmit data via external / network ports connected to network 106. In some embodiments, network 106 may include a private network or a local area network (LAN). Additionally or alternatively, network 106 may include a public network such as the Internet.In some embodiments, the network 106 may include routers, wireless switches, or other such wireless connection points that communicate with the user computing device 102 and the imaging device 104 via wireless communication based on one or more various wireless standards, including, by way of non-limiting example, IEEE 802.11a / b / c / g (WIFI), the BLUETOOTH standard, or the like.
[0040] The input / output interfaces 114, 124 may include or implement operator interfaces configured to present information to a manager or operator and / or receive input from the manager or operator. An operator interface may provide a screen (e.g., via the user computing device 102 and / or the imaging device 104) that a user / operator may use to visualize any images, graphics, text, data, features, pixels, and / or other suitable visualizations or information. For example, the user computing device 102 and / or the imaging device 104 may at least partially include, implement, access, render, or otherwise disclose a graphical user interface (GUI) for displaying images, graphics, text, data, features, pixels, and / or other suitable visualizations or information on the screen.The input / output interfaces 114, 124 may also include input / output components (e.g., connectors, capacitive or resistive touch-sensitive input pads, buttons, knobs, lights, LEDs) that are directly / indirectly accessible through or attached to the user computing device 102 and / or the imaging device 104. According to some embodiments, an administrator or user / operator may access the user computing device 102 and / or the imaging device 104 to create orders, review images or other information, make changes, enter responses and / or selections, and / or perform other functions.
[0041] As described above, in some embodiments, user computing device 102 may perform the functions described herein as part of a "cloud" network or otherwise communicate with other hardware or software components within the cloud to send, retrieve, or otherwise analyze data or information described herein.
[0042] Fig. 2 is a perspective view of the imaging device 104 of Fig. 1, according to the embodiments described herein. The imaging device 104 includes a housing 202, an imaging port 204, a user interface label 206, a dome switch / button 208, one or more light-emitting diodes (LEDs) 210, and one or more attachment points 212. As previously mentioned, the imaging device 104 may receive job files from a user computing device (e.g., the user computing device 102), which the imaging device 104 subsequently interprets and executes. The instructions contained in the job file may include device configuration settings (also referred to herein as "imaging settings") that are used to adjust the configuration of the imaging device 104 prior to capturing images of a target object.
[0043] For example, the device configuration settings may include instructions for adjusting one or more settings related to the imaging aperture 204. For example, assume that at least part of the intended analysis corresponding to an image processing job requires the imaging device 104 to maximize the brightness of each acquired image. To meet this requirement, the job file may include device configuration settings to increase the aperture size of the imaging aperture 204. The imaging device 104 may interpret these instructions (e.g., via one or more processors 118) and increase the aperture size of the imaging aperture 204 accordingly. In this way, the imaging device 104 may be configured to automatically adjust its own configuration to optimally suit a particular image processing task.In addition, the imaging device 104 may include, for example, one or more bandpass filters, one or more polarizers, one or more DPM diffusers, one or more C-mount lenses, and / or one or more C-mount liquid lenses over the imaging aperture 204, or may otherwise affect or be adjustable to the received illumination.
[0044] The user interface label 206 may include the dome switch / button 208 and one or more LEDs 210, thereby enabling a variety of interactive and / or indicating functions. In general, the user interface label 206 may enable a user to trigger and / or adjust the imaging device 104 (e.g., via the dome switch / button 208) and to detect when one or more functions, errors, and / or other actions related to the imaging device 104 have been performed or have occurred (e.g., via the one or more LEDs 210). For example, the trigger function of a dome switch / button (e.g., dome switch / button 208) may enable a user to capture an image with the imaging device 104 and / or display a trigger configuration screen of a user application (e.g., imaging application 116).The trigger configuration screen may allow the user to configure one or more triggers for the imaging device 104, which may be stored in memory (e.g., in one or more memories 110, 120) for use in later developed image processing jobs as described herein.
[0045] As another example, the tuning function of a dome switch / button (e.g., dome switch / button 208) may allow a user to automatically and / or manually adjust the configuration of the imaging device 104 according to a preferred / determined configuration and / or display an imaging configuration screen of a user application (e.g., the imaging application 116). The imaging configuration screen may allow the user to configure one or more configurations of the imaging device 104 (e.g., aperture size, exposure length, etc.), which may be stored in memory (e.g., in one or more memories 110, 120) for use in later developed image processing jobs, as described herein.
[0046] To expand on this example, and as further explained herein, a user may use the imaging configuration screen (or more generally, the imaging application 116, 156) to specify two or more imaging setting configurations for the imaging device 104. The user may then save these two or more imaging setting configurations as part of an image processing job, which is then transmitted to the imaging device 104 in a job file containing one or more job scripts. The one or more job scripts may then instruct the processors of the imaging device 104 (e.g., one or more processors 118) to automatically and sequentially adjust the imaging device's imaging settings according to one or more of the two or more imaging setting configurations after each successive image acquisition.
[0047] The attachment point(s) 212 may enable a user to connect and / or releasably attach the imaging device 104 to a mounting fixture (e.g., an imaging tripod, a camera mount, etc.), a structural surface (e.g., a warehouse wall, a warehouse ceiling, a structural support beam, etc.), other accessories, and / or other suitable connecting devices, structures, or surfaces. For example, the imaging device 104 may be optimally placed on a mounting fixture in a distribution center, manufacturing facility, warehouse, and / or other facility to image and monitor the quality / consistency of products, packages, and / or other items as they pass through the field of view of the imaging device 104.Additionally, the attachment points 212 may allow the user to connect the imaging device 104 to a variety of accessories, including, but not limited to, one or more external lighting devices, one or more mounting devices / mounts, and the like.
[0048] Furthermore, the imaging device 104 may include a plurality of hardware components within the housing 202 that enable connection to a computer network (e.g., network 106). For example, the imaging device 104 may include a network interface (e.g., network interface 122) that enables the imaging device 104 to connect to a network, such as a Gigabit Ethernet connection and / or a dual Gigabit Ethernet connection. Furthermore, the imaging device 104 may include transceivers and / or other communication components as part of the network interface to communicate with other devices (e.g., the user computing device 102), e.g., via Ethernet / IP, PROFINET, Modbus TCP, CC-Link, USB 3.0, RS-232, and / or any other suitable communication protocol or combinations thereof.
[0049] One application of the technologies described above is to identify one or more barcodes (or other visual features, such as cracks on the surface of a structure) in an image. Current methods for identifying barcodes in images involve searching the entire field of view (FOV) of an image. However, this is inefficient because the barcode(s) may be located in only a portion of the image. Therefore, in some embodiments, an ROI is defined that constitutes only a portion of the FOV, and only the ROI is searched.
[0050] The term "image" used here can refer to a single image or to a frame of a video image. Therefore, the techniques described here apply equally to single images and videos.
[0051] In the Fig. 3-6 illustrate example application interfaces according to the embodiments described herein. These example application interfaces 300, 400, 500, 600 may represent interfaces of an imaging application (e.g., imaging application 116) that a user may access via a user computing device (e.g., user computing device 102).
[0052] In Fig. 3, the example application interface 300 illustrates the identification of a single barcode 310, where the region of interest (ROI) 330 is the field of view (FOV) 320 (e.g., the entire image). In FIG. 3, in some embodiments, the default ROI is the FOV. Furthermore, in this example, the imaging application 116 has determined a bounding box 340 of the barcode 310.
[0053] In Fig. 4, the example application interface 400 also shows the identification of a single barcode 310. In contrast to the example in Fig. 3, however, the ROI 330 was set to a smaller part of the image (e.g., not the entire FOV 320), saving time and processing power when searching the image.
[0054] In Fig. 5, the example application interface 500 shows the identification of the barcode 310 as well as the identification of other barcodes 510. In the example of Fig. 5, the ROI 330 was set to the FOV 320 (e.g., the entire image), and bounding boxes 540 were drawn around the barcodes 510.
[0055] In Fig. 6, the example application interface 600 also shows the identification of the barcode 310 as well as the identification of further barcodes 510. In contrast to the example of Fig. 5, however, the ROI 330 was set to a smaller part of the image (e.g., not the entire FOV 320), saving time and processing power when searching the image. The example in Fig. 6 also shows bounding boxes 540 drawn around the barcodes 510.
[0056] For examples in the Fig. 3-6: Although the illustrated example ROIs 330 are rectangular, the ROI can have any shape. For example, the ROI can be a rectangle, a triangle, a pentagon, or a polygon with n sides, etc. Additionally or alternatively, the ROI can be set to represent a certain percentage of the FOV (e.g., 50% of the FOV). Additionally or alternatively, a user (e.g., via user computing device 102) can manually set an ROI by drawing a particular shape or specifying a set of parameters.
[0057] Generally speaking, some of the embodiments described herein use rank-based adaptive ROI techniques to find visual features in an image. For example, the imaging application 116 may have data from a plurality of ROIs that it has used in previous iterations of a job or in previous jobs. The imaging application 116 may rank the ROIs (e.g., based on the frequency with which the visual feature occurs in the ROI or based on any other suitable technique). The imaging application 116 may receive a new image and then search for the visual feature within the highest-ranked ROI. If the visual feature is not found in the highest-ranked ROI, the imaging application 116 may search for the visual feature in the second-highest-ranked ROI, and so on, until the visual feature is found.If the visual feature is not found in any of the ROIs, the imaging application may set the ROI as the FOV of the new image, so that the imaging application 116 effectively searches the entire new image for the visual feature.
[0058] Fig. 7 shows an example of a method 700 for identifying a visual feature in a barcode. In block 705, the imaging device 104 captures a first plurality of images. The images may be consecutive images, or there may be intermediate images between the images. For example, the images may be in a video stream and separated by a predefined period of time. It should be understood that a user (e.g., via the user computing device 102) may customize how the images are captured (e.g., specify a period of time between image captures, etc.).
[0059] In block 710, a plurality of ROIs are identified from the first plurality of images. Each of the plurality of ROIs may be associated with a visual feature (e.g., a barcode, a crack in the surface of a structure, etc.).
[0060] In some embodiments, one or more of the ROIs (e.g., an ROI in the very first received image) can be identified by searching the FOV of the image for the visual feature. Once the visual feature is located, a bounding box (e.g., 340) can be drawn around the visual feature (e.g., 310, 510). A scaling factor (e.g., 10%, 20%, 50%, 100%, 500%, 1,000%, etc.) can then be applied to the bounding box to determine the ROI. For example, if the scaling factor is 100%, each side of the bounding box can be expanded by 100% to form the ROI. The user can set the scaling factor in the system. Regarding bounding boxes, in some cases, the bounding box includes exactly the visual feature. In other embodiments, the bounding box includes the visual feature plus a small area outside the visual feature.For example, the bounding box may include the visual feature plus a region that extends 10% of the length beyond each of the sides of the visual feature.
[0061] Additionally, each of the ROIs can be ranked. For example, a specific ROI can be applied to multiple images and evaluated to determine if the visual feature is found within the specific ROI, thereby generating a recurrence count and / or recurrence frequency for the visual feature within the specific ROI. In this way, rankings can be created based on the recurrence count and / or recurrence frequency. For example, an ROI with the highest recurrence frequency can have the highest ranking, an ROI with the second-highest recurrence frequency can have the second-highest ranking, and so on. In the event of a tie between recurrence frequencies, any suitable technique can be used to break the tie. For example, the most recent ROI in which the visual feature was found can be ranked higher to break the tie.In another example, the two ROIs with the same recurrence frequency may be assigned the same ranking (e.g., ranking 5 out of 10 ROIs), but the ROI with the more recent detection of a visual feature may be applied first when searching for new images (e.g., as with respect to the last two rows of the example ranking table 800 of FIG. Fig. 8 further described).
[0062] In some embodiments, the recurrence frequency is based on the entire visual feature being within the ROI. However, in other embodiments, the recurrence frequency is based on more than a certain percentage (e.g., 50%, 75%, 90%, etc.) of the visual feature being within the ROI, or the visual feature being within the ROI by a certain distance. In this context, the recurrence frequency may be based on the visual feature being within a predetermined proximity to the ROI. The percentage by which the visual feature must be within the ROI or the specific range by which the visual feature must be within the ROI may be specified by a user.
[0063] Furthermore, the recurrence frequency can be a recurrence frequency within the same job or across different jobs. For example, when starting a new job, a user can optionally choose to import data (e.g., a ranking table, such as the example ranking table 800) from a previous job, so that the new job starts with a ranking system that includes ranked ROls from the previous job.
[0064] Additionally or alternatively, the recurrence frequency may apply to a previous number of analyzed images (e.g., the last 1,000 analyzed images) or to a previous number of triggers (e.g., a trigger that is an occurrence of the visual feature in an image).
[0065] The ratings can be recorded in a rating table, such as the example rating table 800 of Fig. 8. In the example shown, column 810 identifies the ROI using coordinates. In the example shown, only one coordinate is provided to identify the ROI. This can be any suitable coordinate to identify the ROI, such as the coordinate of a corner of the ROI (e.g., the upper left corner, etc.), the coordinate of a center of the ROI, etc. However, in other examples, the ranking table may list more than one coordinate (e.g., the coordinates of all four corners, etc.) to identify the ROI.
[0066] Column 820 shows the number of recurrences (e.g., of the visual feature located within the ROI or within a given proximity to the ROI). It is understood that the recurrence frequency is simply the number of recurrences divided by the last number of total triggers; for example, the recurrence frequency for the ROI with coordinates X1, Y1 in the example of Fig. 8,600 / 1,000. Column 830 illustrates the ROI classification.
[0067] To facilitate the ranking process, some embodiments include a weighting factor, as in the example of column 840. For example, the ROIs may be ranked based in whole or in part on the weighting factor. In some implementations, the weighting factor may be increased each time the visual feature is found within the ROI or within a predetermined proximity to the ROI. In other examples, the weighting factor may be increased if the visual feature is found a predetermined number of times (e.g., five times) within the ROI or within a predetermined proximity to the ROI. In such an example, the rankings are first based on the weighting factor and then use the recurrence count to resolve any similarities between the weighting factors.
[0068] Furthermore, in some cases, the visual feature may be found more than once in each ROI. In the examples in the Fig. 5-6, for example, more than one barcode 510 may be found (e.g., within the ROI or within a predetermined proximity to the ROI). In some embodiments, if more than one visual feature is found within the ROI, the number of recurrences (e.g., in column 820) is still incremented as if the visual feature were found only once (e.g., the number in column 820 is incremented at most once per image, no matter how many times the visual feature is found). However, in other embodiments, the number of recurrences is incremented based on the number of times the visual feature is found in the ROI (e.g., once for each time the visual feature is found). Furthermore, in some embodiments, the weighting factor may be incremented based on the number of times the visual feature is found within the ROI (e.g., the weighting factor is incremented once if the visual feature is found twice within the ROI).
[0069] For example, to Fig. 7, the imaging device 104 captures a second image in block 715. It should be noted that the second image may be one of the images from the first plurality of images or an image that is not part of the first plurality of images.
[0070] In block 720, the imaging application 116 sequentially identifies a candidate location (e.g., a ROI) for the visual feature within the second image based on a ranking of each of the ROIs until the visual feature is identified at the candidate location. For example, the first candidate location may be the ROI with the highest ranking. If the visual feature is not found within the first ROI, the next candidate location (e.g., the next higher ROI) may be searched until the visual feature is found. In some embodiments, the number of candidates (e.g., ROIs) searched, n, may be user-specified.
[0071] At block 725, data related to the visual feature may be transmitted to a host processor, such as processor 108. The data related to the visual feature may be any data. Examples of the data include: data from a decoded barcode, image data of the ROI in which the visual feature was located, etc.
[0072] Following block 725, the process may optionally continue to iterate. For example, the process may acquire a third image and apply the ROI ranking techniques described herein to identify a visual feature in the third image. Additionally or alternatively, however, in optional block 730, the imaging application 116 may receive input indicating that an ROI feature should be disabled (e.g., continue to run the job but with a particular ROI feature disabled). In one example, the user may choose to disable all adaptive ROI features. In this example, after receiving the user input, the imaging application 116 may analyze the FOV rather than an ROI from the ranked ROIs to find the visual feature. In another example, the user may partially disable the adaptive ROI features.In such an example, the imaging application 116 may first search the highest-ranked ROI for the visual feature; however, if the visual feature is not found within the highest-ranked ROI, the imaging application then searches the FOV instead of traversing the rest of the ranked ROIs.
[0073] In another example, the user may disable rating updates (e.g., suspend rating updates). For example, a third received image may be analyzed against the rated ROIs, but no updates are made to a rating table, such as the example rating table 800.
[0074] Fig.9 shows another example of a method 900 that includes receiving a first image. The example method 900 begins at block 905 when the imaging device 104 captures a first image across a field of view. The imaging application 166 may then analyze at least a portion of the first image to identify a visual feature within the first image at block 910.
[0075] In some embodiments where the visual feature is a barcode, the imaging application 116 detects the barcode by decoding the barcode. It should be noted, however, that the barcode does not necessarily need to be decoded for its presence to be detected. Furthermore, the term "barcode" herein also refers to effective equivalents of a barcode, such as a Quick Response Code (QR Code) or other information markers.
[0076] Continuing with block 910, in embodiments where the system has access to prior data, such as a ranking table, the analyzed at least a portion of the first image may be an ROI with the highest ranking. However, in embodiments where the system does not have access to such prior data, the analyzed at least a portion of the first image may be the FOV of the first image; and the first ROI may be constructed as described below, particularly with respect to block 920.
[0077] At block 915, the imaging application 116 may determine a position of the visual feature within the first image. At block 920, the imaging application 116 may then determine a first ROI within the first image. In some embodiments, the determination is made based on the position of the visual feature. For example, the imaging application 116 may place a bounding box around the visual feature and then apply a scaling factor (e.g., 10%, 20%, 50%, 100%, 500%, 1000%, etc.) to the bounding box to create / determine the ROI.
[0078] In some embodiments, rather than the imaging application 116 automatically determining the first ROI, a user (e.g., via the user computing device 102) may manually specify the first ROI by drawing a particular shape (e.g., on a display showing the first image) or by specifying a number of parameters, such as a shape of the ROI (e.g., a rectangle, a triangle, a pentagon, or an n-sided polygon, etc.) or the size of the ROI (e.g., ROI is 50% of the FOV).
[0079] In block 925, the imaging device 104 acquires a second image. In block 930, the imaging application 116 analyzes at least a portion of the second image to identify the visual feature within the second image. In block 935, the imaging application 116 determines a location of the visual feature within the second image. In block 940, the imaging application 116 may then determine a second ROI within the second image. In some embodiments, the determination is made based on the location of the visual feature. For example, the imaging application 116 may place a bounding box around the visual feature and then apply a scaling factor (e.g., either the same or a different scaling factor applied to the visual feature in the first image) to the bounding box to create / determine the ROI.
[0080] However, in some embodiments, optionally in block 930, the analyzed at least a portion of the second image includes the first ROI (e.g., determined in block 920) (and not, for example, the FOV of the second image). If the visual feature is not found within the first ROI, in some of these embodiments, the imaging application 116 may search other ROIs (if any exist from previous data), e.g., according to the classification techniques described herein, until the visual feature is found.
[0081] In block 945, the imaging application 116 performs a ranking of the first and second ROIs. The first and second ROIs may be ranked using any suitable technique, e.g., based on recurrence frequencies and / or weighting factors, as described above. For example, if previously acquired data is present, the imaging application may compare the first and / or second ROIs to previously known ROIs (e.g., an exact match or within a predetermined tolerance) (e.g., listed in the ranking table 800) and update the rankings in the ranking table 800 to thereby rank the first and second ROIs. In another example, if there is no previously acquired data and the visual feature has been found once in each of the first and second images, there may be a tie between the recurrence frequencies; in this case, the tie may be broken as described above.In another example, classification may be achieved by presenting a user with representations of the first and second ROIs and having the user select an ROI.
[0082] In block 950, the imaging device 104 acquires a third image. In block 955, the imaging application 116 searches for the visual feature in the higher-ranked of the first and second ROIs (e.g., within the ROI or within a predetermined proximity to the ROI). If the visual feature is not found, the imaging application 116 searches for the visual feature in the lower-ranked of the two ROIs in decision block 960. If the visual feature is not found in block 960, the imaging application 116 searches for the visual feature in the FOV of the third image in block 965.
[0083] Furthermore, after block 960, if the visual feature is not found, the imaging application 116 may instead continue to iterate through lower-ranked ROIs (e.g., in embodiments where the system has access to prior data, such as a ranking table, etc., to provide the lower-ranked ROIs) until the visual feature is found, or until the visual feature is not found in any ROI, at which point the FOV is searched. In some of these embodiments, the user may control (e.g., by setting) how many ROIs are traversed before switching to the FOV if the visual feature is not found in any of these ROIs.
[0084] Once the visual feature has been found, the data associated with the visual feature may be transferred to a host processor (e.g., at block 970), such as one or more processors 118. However, it should be noted that any data may be transferred to the host processor at any time. For example, data associated with the visual feature in the first image may be transferred (e.g., after block 910, etc.), data associated with the visual feature in the second image may be transferred (e.g., after block 930, etc.), etc.
[0085] Furthermore, the example method 900 may continue according to the techniques discussed herein. For example, after block 970, the method may continue iterating (e.g., by capturing a fourth image, searching for the visual feature in a most highly weighted ROI within the fourth image, etc.).
[0086] Furthermore, each of the actions described in example methods 700, 900 may be performed in any order, number, or in any other suitable combination. For example, some or all blocks of methods 700, 900 may be fully executed one or more times. In some example implementations, some of the blocks may not be executed while still performing the acts described herein. Furthermore, methods 700, 900 are not mutually exclusive, and the blocks may be performed in conjunction and / or combination with each other in any suitable manner.
[0087] Furthermore, in some embodiments, machine learning (e.g., convolutional neural networks, deep learning algorithms, etc.) may be used to analyze the classification data acquired by imaging system 100. There are two particularly advantageous implementations for this.
[0088] In the first implementation, there is a process plant with a plurality of imaging devices 104. Each of the imaging devices 104 can collect data and create a ranking table (e.g., ranking table 800, etc.). The collected data and / or ranking tables can be analyzed by a machine learning algorithm to create a standard ranking table or a standard ranking set of ROIs used for the deployment of future imaging devices 104 throughout the process plant. Advantageously, such a standard ranking set of ROIs improves the technical performance of a new imaging device 104 deployed in the process plant.In particular, by using the standard classification set of ROIs, the processing time is improved compared to a new imaging device 104 deployed in the process plant without adaptive ROI capabilities.
[0089] In the second implementation, data from imaging devices 104 of a process plant is analyzed, and a classification set that can be used for a plurality of imaging devices 104 (e.g., all imaging devices 104 in the plant, only imaging devices in a specific section of the plant, only imaging devices that capture information about a specific product, etc.) is developed based on machine learning analysis. ADDITIONAL CONSIDERATIONS
[0090] The above description refers to a block diagram in the accompanying drawings. Alternative embodiments of the example illustrated in the block diagram include one or more additional or alternative elements, methods, and / or devices. Additionally or alternatively, one or more of the example blocks of the diagram may be combined, split, rearranged, or omitted. The components represented by the blocks of the diagram are implemented by hardware, software, firmware, and / or any combination of hardware, software, and / or firmware. In some examples, at least one of the components represented by the blocks is implemented by logic circuitry. As used herein, the term “logic circuitry” is expressly defined as a physical device that includes at least one hardware component configured (e.g.,by operating according to a predetermined configuration and / or by executing stored machine-readable instructions) to control one or more machines and / or to perform operations of one or more machines. Examples of logic circuits include one or more processors, one or more coprocessors, one or more microprocessors, one or more controllers, one or more digital signal processors (DSPs), one or more application-specific integrated circuits (ASICs), one or more field-programmable gate arrays (FPGAs), one or more microcontroller units (MCUs), one or more hardware accelerators, one or more special-purpose computer chips, and one or more system-on-chip (SoC) devices. Some example logic circuits, such as ASICs or FPGAs, are specially configured hardware to perform operations (e.g.one or more of the operations described herein and illustrated in the flowcharts of this disclosure, if any). Some example logic circuits are hardware that executes machine-readable instructions to perform operations (e.g., one or more of the operations described herein and illustrated by the flowcharts of this disclosure, if any). Some example logic circuits include a combination of specially configured hardware and hardware that executes machine-readable instructions. The above description refers to various operations described herein and flowcharts that may be attached to illustrate the flow of those operations. All such flowcharts are representative of the example methods disclosed herein. In some examples, the methods represented by the flowcharts implement the devices represented by the block diagrams.Alternative implementations of the example methods disclosed herein may include additional or alternative operations. Furthermore, operations of alternative implementations of the methods disclosed herein may be combined, split, rearranged, or omitted. In some examples, the operations described herein are implemented by machine-readable instructions (e.g., software and / or firmware) stored on a medium (e.g., an accessible machine-readable medium) for execution by one or more logic circuits (e.g., processor(s)). In some examples, the operations described herein are implemented by one or more configurations of one or more specially designed logic circuits (e.g., ASIC(s)). In some examples, the operations described herein are implemented by a combination of specially designed logic circuits and machine-readable instructions stored on a medium (e.g.,an accessible machine-readable medium) for execution by logic circuits.
[0091] As used herein, each of the terms “accessible machine-readable medium,” “non-transitory machine-readable medium,” and “machine-readable storage device” is expressly defined as a storage medium (e.g., a disk of a hard disk drive, a digital versatile disc, a compact disc, flash memory, read-only memory, random access memory, etc.) on which machine-readable instructions (e.g., program code in the form of, for example, software and / or firmware) are stored for any suitable period of time (e.g., permanently, for an extended period of time (e.g., during execution of a program associated with the machine-readable instructions), and / or for a short period of time (e.g., during caching of the machine-readable instructions and / or during a buffering process)).Furthermore, the terms "accessible, machine-readable medium," "non-transitory, machine-readable medium," and "machine-readable storage device" are expressly defined herein to exclude the transmission of signals. That is, none of the terms "accessible, machine-readable medium," "non-transitory, machine-readable medium," and "machine-readable storage device" as used in the claims of this patent can be read as being implemented by a propagating signal.
[0092] In the foregoing description, particular embodiments have been described. However, it will be apparent to one skilled in the art that various modifications and changes may be made without departing from the scope of the invention as set forth in the following claims. Accordingly, the description and figures are to be considered illustrative rather than restrictive, and all such modifications are intended to be included within the scope of the present teachings. Furthermore, the described embodiments / examples / implementations are not to be understood as mutually exclusive, but rather as potentially combinable where such combinations are in any way permissive. In other words, any feature disclosed in one of the foregoing embodiments / examples / implementations may be included in any of the other foregoing embodiments / examples / implementations.
[0093] The benefits, advantages, solutions to problems, and any elements that may result in the occurrence or enhancement of a benefit, advantage, or solution are not to be construed as critical, required, or essential features or elements in any or all of the claims. The invention is defined solely by the appended claims, including any amendments made during the pendency of this application and all equivalents of the granted claims.
[0094] Furthermore, in this document, relational terms such as first and second, upper and lower, and the like may be used merely to distinguish one entity or action from another entity or action, without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms "comprises," "comprising," "has," "having," "comprising," "includes," "containing," or any other variation thereof are intended to cover non-exclusive inclusion, such that a process, method, product, or apparatus that comprises, has, has, or contains a list of elements not only includes those elements, but may also include other elements not expressly listed or inherent in such process, method, product, or apparatus. An element that is preceded by "comprises," "has," "has," or "includes"a" does not exclude, without further limitation, the existence of additional identical elements in the process, method, product, or apparatus comprising, having, including, or containing the element. The terms "a" and "an" are defined as one or more unless expressly stated otherwise herein. The terms "substantially," "generally," "approximately," "about," or any other version thereof are defined as being approximately understood by one of ordinary skill in the art, and in one non-limiting embodiment, the term is defined as within 10%, in another embodiment, within 5%, in another embodiment, within 1%, and in yet another embodiment, within 0.5%. The term "coupled," as used herein, is defined as being connected, but not necessarily directly and not necessarily mechanically.A device or structure that is "configured" in a certain way is at least configured that way, but may also be configured in ways that are not listed.
[0095] The Summary of Disclosure is provided to enable the reader to quickly ascertain the nature of the technical disclosure. It is provided with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. Further, it can be seen from the foregoing Detailed Description that various features are grouped together in various embodiments for the purpose of streamlining the disclosure. This manner of disclosure should not be construed to reflect an intent that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims demonstrate, inventive subject matter lies in fewer than all features of a single disclosed embodiment.Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as separately claimed subject matter.
Claims
[1] A method of operating a machine vision system, the machine vision system comprising a computing device for executing an application and a fixed imaging device communicatively coupled to the computing device, the method comprising: (a) capturing a first image over a field of view (FOV) using the fixed imaging device; (b) analyzing at least a portion of the first image via the application to identify a visual feature within the first image; (c) determining a location of the visual feature within the first image via the application; (d) determining, via the application, a first region of interest (ROI) within the first image based on the location of the visual feature; (e) acquiring a second image via the fixed imaging device; (f) analyzing at least a portion of the second image via the application to identify the visual feature within the second image; (g) determining a location of the visual feature within the second image via the application; (h) determining, via the application, a second region of interest (ROI) within the second image based on the location of the visual feature; (i) Classification of the first and second ROI; (j) acquiring a third image via the fixed imaging device; (k) analyzing a third region of interest (ROI) within the third image via the application to detect the visual feature, wherein the third region of interest (ROI) within the third image is based on the classification; and (I) in response to detecting the visual feature in the third image, transmitting data associated with the visual feature in the third image to a host processor. [2] The method of claim 1, wherein analyzing the third ROI comprises: Setting the third ROI as the higher-value ROI from the first and second ROI; if it is determined that the visual feature is not within the detected third ROI, updating the third ROI so that it is a lower ranking ROI than the first ROI and the second ROI. [3] The method of claim 2, wherein analyzing the third ROI further comprises: if it is determined that the visual feature is not within the updated third ROI, setting the third ROI to be a FOV of the third image. [4] The method of claim 3, wherein analyzing the third ROI further comprises: Analyzing the third ROI set to the FOV of the third image to detect the visual feature; Determining a location of the visual feature within the third image via the application; Determining a new third ROI within the third image via the application based on the location of the visual feature; Determining, via the application, that the new third ROI is within a predetermined tolerance of the first ROI; and in response to determining that the new third ROI is within a predetermined tolerance of the first ROI, increasing a weighting factor of the first ROI via the application. [5] The method of claim 1, further comprising: after analyzing the ROI of the third image, iteratively capturing images and at each iteration: Increasing a weighting factor of the first ROI if the visual feature is determined to be within the first ROI; Increasing a weighting factor of the second ROI if it is determined that the visual feature lies within the second ROI; and Reclassification of the first and second ROI is based on the weighting factors. [6] The method of claim 1, wherein: analyzing a portion of the first image to detect the visual feature comprises determining a bounding box of the visual feature via the application; and determining the first ROI within the first image comprises applying a scaling factor to the bounding box. [7] The method of claim 1, further comprising: in response to detecting the visual feature in the first image, transmitting data associated with the visual feature in the first image to the host processor; and in response to detecting the visual feature in the second image, transmitting data associated with the visual feature in the second image to the host processor. [8] The method of claim 1, wherein classifying the first and second ROIs comprises: Presenting a representation of the first ROI and the second ROI to a user; Receiving a user selection of either the first ROI or the second ROI from the user; and Set the first ROI and second ROI rankings based on user selection. [9] A method of operating a machine vision system, the machine vision system comprising a computing device for executing an application and a fixed imaging device communicatively coupled to the computing device, the method comprising: capturing a first plurality of images across a field of view (FOV) via the fixed imaging device; Identifying, via the application, a plurality of regions of interest (ROIs) within the FOV from the first plurality of images, each of the plurality of ROIs associated with a visual feature, each of the plurality of ROIs being ranked based on a recurrence frequency of the visual feature within a predetermined proximity to each of the ROIs within the plurality of images; capturing a second image via the fixed imaging device; successively identifying, via the application, a candidate location for the visual feature within the second image based on a ranking of each of the ROls until the visual feature is identified at the candidate location; and Providing data relating to the visual feature of the second image to a host processor. [10] The method of claim 9, wherein the plurality of regions of interest is limited to no more than n ROIs. [11] The method of claim 10, wherein n is specified by a user. [12] The method of claim 9, further comprising: Receiving input from a user indicating that an ROI feature should be disabled; capturing a third image via the fixed imaging device; and in response to receiving the input, specifying an ROI within the third image as the FOV of the third image. [13] The method of claim 9, further comprising: Receiving input from a user indicating that an ROI feature should be disabled; capturing a third image via the fixed imaging device; Defining an ROI within the third image based on an ROI with the highest ranking from the plurality of ROIs; Determine that the feature is not within the ROI in the third image; and in response to receiving the input and determining that the visual feature is not within the ROI in the third image, setting an ROI within the third image as the FOV of the third image. [14] The method of claim 9, further comprising: Receiving input from a user indicating that rating updates should be disabled; and in response to the input, not updating any recurrence frequency of any ROI of the plurality of ROIs upon identification of the visual feature within the second image. [15] The method of claim 9, wherein the visual feature is identified at the candidate location based on an entirety of the visual feature being within the candidate location. [16] The method of claim 9, wherein the visual feature is identified at the candidate location based on at least fifty percent or more of the visual feature being within the candidate location. [17] The method of claim 9, further comprising creating a ranking table comprising: Classifications of each of the multitude of ROls; the repetition frequency of the visual feature within a predetermined proximity to each of the plurality of ROls; and Coordinates of each of the multiple ROls. [18] The method of claim 9, wherein the visual feature is a barcode. [19] The method of claim 9, wherein the visual feature is a crack on the surface of a structure.