Design Interface for Assisted Defect Recognition Systems.

The design interface with node-based tools enables users to create custom ADR workflows for X-ray scanning systems, enhancing defect recognition in industrial parts by simplifying workflow configuration and analysis.

JP7780515B2Active Publication Date: 2025-12-04ILLINOIS TOOL WORKS INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023520367
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-09-29
Filing Date
2021-09-29
Publication Date
2025-12-04
Estimated Expiration
2041-09-29

AI Technical Summary

Technical Problem

Conventional X-ray scanning systems lack intuitive and efficient tools for designing and configuring workflows to analyze industrial radiographic images, making it difficult for industrial workers to inspect parts for defects.

Method used

A design interface using node-based processing tools allows users to create custom assisted defect recognition (ADR) workflows by arranging image processing blocks on a canvas, enabling analysis of 2D and 3D radiographic images and outputting results, with features like parameter configuration and training based on training images.

Benefits of technology

Facilitates intuitive and efficient inspection of industrial parts by allowing users to configure workflows easily, improving defect recognition accuracy and workflow adaptability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007780515000001
    Figure 0007780515000001
  • Figure 0007780515000002
    Figure 0007780515000002
  • Figure 0007780515000003
    Figure 0007780515000003
Patent Text Reader

Abstract

Described herein are example interfaces for designing and / or configuring custom-assisted defect recognition (ADR) systems and / or workflows. In some examples, the ADR systems and / or workflows can be designed and / or configured using visual tools, such as, for example, node-based processing tools. In some examples, the ADR workflows can be used to analyze two-dimensional (2D) and / or three-dimensional (3D) image scans, such as may be generated by an industrial X-ray scanning system.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims priority to and the benefit of U.S. Provisional Patent Application No. 63 / 086,963, entitled "DESIGN INTERFACES FOR ASSISTED DEFECT RECOGNITION SYSTEMS," filed October 2, 2020, and U.S. Patent Application No. 17 / 488,844, entitled "DESIGN INTERFACES FOR ASSISTED DEFECT RECOGNITION SYSTEMS," filed September 29, 2021, both of which are incorporated herein by reference in their entireties. This disclosure relates generally to assisted defect recognition systems, and more particularly to design interfaces for assisted defect recognition systems. [Background technology]

[0002] X-ray scanning is often used to inspect parts used in industrial applications such as, for example, aerospace, automotive, electronics, medical, pharmaceutical, military, and / or defense applications. X-ray images can be used to check for cracks, flaws, or defects in the part(s) that may not normally be visible to the human eye. However, the definition of a crack or flaw may vary depending on the part and / or application.

[0003] By comparing such systems with the present disclosure set forth in the remainder of this application with reference to the drawings, the limitations and disadvantages of the conventional and traditional approaches will become apparent to one skilled in the art. Summary of the Invention

[0004] The present disclosure relates to a design interface for an assisted defect recognition system, for example, substantially as illustrated and / or described in connection with at least one of the drawings and more fully set forth in the claims.

[0005] These and other advantages, aspects, and novel features of the present disclosure, as well as details of illustrated examples of the present disclosure, will be more fully understood from the following description and drawings. [Brief explanation of the drawings]

[0006] [Figure 1] FIG. 1 illustrates an exemplary industrial X-ray scanning system according to aspects of the present disclosure.

[0007] [Figure 2] FIG. 1 is a block diagram of an exemplary part analysis system according to aspects of the present disclosure.

[0008] [Figure 3a] FIG. 1 illustrates an example assisted defect recognition (ADR) design interface with an ADR workflow according to aspects of the present disclosure. [Figure 3b] FIG. 1 illustrates an example assisted defect recognition (ADR) design interface with an ADR workflow according to aspects of the present disclosure. [Figure 3c] FIG. 1 illustrates an example assisted defect recognition (ADR) design interface with an ADR workflow according to aspects of the present disclosure. [Figure 3d] FIG. 1 illustrates an example assisted defect recognition (ADR) design interface with an ADR workflow according to aspects of the present disclosure.

[0009] [Figure 4] 1 is a flowchart illustrating the operation of an exemplary ADR designer according to aspects of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0010] The figures are not necessarily to scale. Where appropriate, the same or similar reference numbers are used in the figures to refer to similar or identical components. For example, reference numbers utilizing letters (e.g., repository 258a, repository 258b) refer to the same reference number without the letter (e.g., repository 258).

[0011] Some examples of the present disclosure relate to interfaces for designing and / or configuring custom assisted defect recognition systems and / or workflows. As used herein, assisted defect recognition (ADR) refers to assistance provided by a machine or programmable device to a human operator or an automated system for quality assurance inspection of industrial parts. As used herein, ADR workflow refers to an arrangement and / or ordered sequence of interconnected machine operations organized and / or executed for assisted defect recognition.

[0012] In some examples, ADR workflows can be designed and / or configured using visual tools, such as, for example, node-based processing / programming tools. In some examples, these visual (e.g., node-based) processing / programming tools can be easier, more intuitive, less cumbersome / complicated, and / or less difficult to use than more traditional text-based programming tools. In some examples, more accessible and / or intuitive visual (e.g., node-based) processing / programming tools can be helpful to industrial workers inspecting industrial parts.

[0013] In some examples, an ADR designer provides a design interface configured to enable custom configuration of an ADR workflow using visual (e.g., node-based) processing / programming tools. The ADR workflow can be used to analyze two-dimensional (2D) and / or three-dimensional (3D) radiographic images / scans, such as may be generated by an industrial X-ray imaging / scanning system. While node-based programming and / or processing tools are traditionally available for computer-generated imagery (CGI) and computer graphics, these traditional tools are ill-equipped for the type of processing required for analyzing industrial radiographic images and / or for designing ADR workflows for the analysis of industrial radiographic (e.g., X-ray) images.

[0014] Some examples of the present disclosure relate to an assisted defect recognition (ADR) control system comprising: a display; a processor; and a computer-readable storage medium containing computer-readable instructions that, when executed, cause the processor to provide a design interface via the display, the design interface including a canvas and a plurality of image processing blocks, each of which represents an image processing function, the image processing blocks of which can be arranged on the canvas to form instances of the image processing blocks; configure an image processing workflow based on the instances of the image processing blocks on the canvas and the connections between the instances of the image processing blocks on the canvas; analyze an input image via the image processing workflow; and output results of the analysis.

[0015] In some examples, the computer-readable instructions, when executed, further cause the processor to: enable a user to connect inputs and outputs of instances of the image processing block on a canvas of the design interface; and configure an image processing workflow based on the connecting of the inputs and outputs of the instances of the image processing block on the canvas. In some examples, the computer-readable instructions, when executed, further cause the processor to: enable a user to specify values ​​or ranges of parameters used in at least one of the instances of the image processing block; and configure the image processing workflow based on the values ​​or ranges of the parameters. In some examples, the computer-readable instructions, when executed, further cause the processor to determine values ​​or ranges of the parameters based on training the image processing workflow with a plurality of training images.

[0016] In some examples, the result is an image, a portion of an image, a numerical value, or a Boolean value. In some examples, the computer-readable instructions, when executed, further cause the processor to preview intermediate results of the analysis in response to selecting an instance of the image processing block on the canvas. In some examples, the computer-readable instructions, when executed, further cause the processor to enable a user to group multiple image processing blocks together, save the group as a composite image processing block, and add the composite image processing block to the canvas in response to selecting the composite image processing block to add to the canvas.

[0017] In some examples, the computer-readable instructions, when executed, further cause the processor to access an image generated by an X-ray scanner or a three-dimensional (3D) volume constructed from images generated by the X-ray scanner, where the image or 3D volume represents a component or assembly scanned by the X-ray scanner, and use a slice of the image or 3D volume as the input image. In some examples, the image processing block includes an image filter function, a region selection function, an edge detection function, an object selection function, a brightness adjustment function, an image magnification function, an image information function, an image difference function, an image annotation function, an image merging function, an image slicing function, a line profiling function, a signal-to-noise ratio function, a contrast-to-noise ratio function, or a thresholding function. In some examples, the result includes a first result, the image processing workflow includes a first image processing workflow, and the computer-readable instructions, when executed, further cause the processor to calibrate one or more parameters of the first image processing workflow based on a second result of the second image processing workflow.

[0018] Some examples of the present disclosure relate to a method for facilitating design of a custom ADR workflow, the method including providing a design interface via a display, the design interface including a canvas and a plurality of image processing blocks, each representing an image processing function, the image processing blocks of which can be arranged on the canvas to form instances of the image processing blocks; configuring an image processing workflow via processing circuitry based on the instances of the image processing blocks on the canvas and connections between the instances of the image processing blocks on the canvas; performing an analysis of an input image via the image processing workflow; and outputting results of the analysis.

[0019] In some examples, the method further includes allowing a user to connect inputs and outputs of instances of the image processing block on a canvas of the design interface and configuring an image processing workflow based on the connecting of the inputs and outputs of the instances of the image processing block on the canvas. In some examples, the method further includes allowing a user to specify values ​​or ranges of parameters used in at least one of the instances of the image processing block and configuring the image processing workflow based on the values ​​or ranges of the parameters. In some examples, the method further includes determining the values ​​or ranges of the parameters based on training the image processing workflow with a plurality of training images.

[0020] In some examples, the result is an image, a portion of an image, a numerical value, or a Boolean value. In some examples, the method further includes previewing intermediate results of the analysis in response to selecting an instance of the image processing block on the canvas. In some examples, the method further includes enabling a user to group multiple image processing blocks together, save the group as a composite image processing block, and add the composite image processing block to the canvas in response to selecting the composite image processing block to add to the canvas.

[0021] In some examples, the method further includes accessing an image generated by an X-ray scanner or a three-dimensional (3D) volume constructed from images generated by the X-ray scanner, the image or 3D volume representing a component or assembly scanned by the X-ray scanner, and using a slice of the image or 3D volume as an input image. In some examples, the image processing block includes an image filter function, a region selection function, an edge detection function, an object selection function, a brightness adjustment function, an image enlargement function, an image information function, an image difference function, an image annotation function, an image merging function, an image slicing function, a line profiling function, a signal-to-noise ratio function, a contrast-to-noise ratio function, or a thresholding function. In some examples, the result includes a first result, the image processing workflow includes a first image processing workflow, and the method further includes calibrating one or more parameters of the first image processing workflow based on a second result of the second image processing workflow.

[0022] 1 illustrates an example industrial X-ray scanning system 100. The example X-ray scanning system 100 may be used to perform non-destructive testing (NDT) and / or other scanning applications. As shown, the X-ray scanning system 100 transmits X-rays 102 from an X-ray emitter 104, through a workpiece (and / or component) 108, to an X-ray detector 106.

[0023] In some examples, the X-ray emitter 104 may include an X-ray tube configured to emit a cone or fan of X-ray radiation. In some examples, the workpiece 108 may be an industrial component and / or an assembly of components (e.g., an engine casting, a microchip, a bolt, etc.). In the example of Figure 1, a workpiece positioning device 110 holds the workpiece 108 between the X-ray emitter 104 and the detector 106 in the path of the X-ray radiation 102.

[0024] In some examples, the workpiece positioning device 110 may be configured to move and / or rotate the workpiece 108 so that a desired position and / or orientation of the workpiece 108 is located within the path of the X-ray irradiation 102. In some examples, the X-ray scanning system 100 may further include one or more actuators configured to change the position and / or orientation of the X-ray emitter 104, the X-ray detector 106, and / or the workpiece positioning device 110. In some examples, the X-ray scanning system 100 may include a housing that encloses the X-ray emitter 104, the X-ray detector 106, the workpiece positioning device 110, and / or portions of the X-ray scanning system 100. While the example of FIG. 1 includes the X-ray emitter 104 and the X-ray detector 106, in other examples, the scanning system 100 may perform scans using radiation of other wavelengths (e.g., gamma, neutron, etc.).

[0025] In some examples, the X-ray detector 106 can generate a 2D digital image (e.g., an X-ray image) based on the X-ray radiation 102 incident on the X-ray detector 106. In some examples, the 2D image may be generated by the X-ray detector 106 itself. In some examples, the 2D image may be generated by a combination of the X-ray detector 106 and a computing system in communication with the X-ray detector 106.

[0026] In some examples, 2D images generated by the X-ray detector 106 (and / or associated computing system(s)) may be combined to form a three-dimensional (3D) volume and / or image. In some examples, 2D image slices of the 3D volume / image may also be formed. While the term "image" is used herein as shorthand, it should be understood that an "image" may include representative data until that data is visually rendered by one or more appropriate components (e.g., a display screen, a graphics processing unit, the X-ray detector 108, etc.).

[0027] In some examples, the X-ray detector 106 can include a fluoroscopic detection system and / or a digital image sensor configured to indirectly receive images via scintillation, and / or can be implemented using a sensor panel (e.g., a CCD panel, a CMOS panel, etc.) configured to directly receive X-rays and generate a digital image. In some examples, the X-ray detector 106 can use a solid-state panel coupled to a scintillation screen, the solid-state panel having pixels corresponding to portions of the scintillation screen. Exemplary solid-state panels can include a CMOS X-ray panel and / or a CCD X-ray panel.

[0028] Figure 2 illustrates an example part analysis system 200. As illustrated, part analysis system 200 includes an X-ray scanning system 100, a computing system 250, a user interface (UI) 202, and a remote computing system 299. Although the example of Figure 2 illustrates only one X-ray scanning system 100, one computing system 250, one UI 202, and one remote computing system 299, in some examples, part analysis system 200 may include multiple X-ray scanning systems 100, multiple computing systems 250, multiple UIs 202, and / or multiple remote computing systems 299.

[0029] 2, the X-ray scanning system 100 is in electrical communication with computing system(s) 250 and UI(s) 202. In some examples, the X-ray scanning system 100 may also be in electrical communication with a remote computing system 299. In some examples, the electrical communication may occur over one or more wired or wireless mediums.

[0030] In some examples, the X-ray scanning system 100 may include a controller that facilitates operation of the X-ray scanning system 100. In some examples, the controller may facilitate the generation of 2D images by the X-ray scanning system 100. In some examples, the controller may facilitate the construction of one or more 3D images / volumes (e.g., representing the workpiece 108) using computed tomography of a series of 2D images (e.g., generated by the X-ray scanning system 100 as it scans the workpiece 108).

[0031] In some examples, the X-ray scanning system 100 may include communication circuitry to facilitate communication between the X-ray scanning system 100 and other systems. In some examples, the X-ray scanning system 100 may include a computing system 250 and / or a UI 202. In some examples, the computing system 250 may facilitate construction of one or more 3D images / volumes (e.g., representing the workpiece 108) using computed tomography of a series of 2D images (e.g., generated by the X-ray scanning system 100 as it scans the workpiece 108). In some examples, the X-ray scanning system 100 may communicate one or more (e.g., 2D or 3D) digital images generated by the X-ray scanning system 100 to the UI 202 and / or the computing system 250.

[0032] 2 , UI 202 is in communication (e.g., electrically) with X-ray scanning system(s) 100, computing system(s) 250, and remote computing system(s) 299. In some examples, UI 202 may be part of X-ray scanning system(s) 100, computing system(s) 250, and / or remote computing system(s) 299. As shown, UI 202 includes one or more input devices 204 and / or output devices 206. In some examples, one or more input devices 204 may include one or more touchscreens, mice, keyboards, buttons, switches, slides, knobs, microphones, dials, and / or other electromechanical input devices. In some examples, one or more output devices 206 may include one or more display screens, speakers, lights, tactile devices, and / or other devices. In some examples, the UI 202 may further include one or more receptacles configured to connect to (and / or receive) one or more external memory devices (e.g., floppy disks, compact discs, digital video discs, flash drives, etc.) In some examples, a user may provide input to and / or receive output from the x-ray scanning system(s) 100, the computing system(s) 250, and / or the remote computing system(s) 299 via the UI(s) 202.

[0033] 2, computing system 250 is in (e.g., electrical) communication with X-ray scanning system(s) 100, UI(s) 202, and remote computing system(s) 299. In some examples, communication may be direct communication (e.g., through wired and / or wireless media) or indirect communication, such as through one or more wired and / or wireless networks (e.g., local and / or wide area networks). In some examples, UI 202 may be part of computing system 250. In some examples, computing system 250 may be part of scanning system 100. In some examples, remote computing system(s) 299 may be similar to or identical to computing system 250.

[0034] 2, computing system 250 includes communications circuitry 252, processing circuitry 254, and memory circuitry 256 interconnected via a common electrical bus. In some examples, memory circuitry 256 can include and / or store machine-readable instructions. In some examples, processing circuitry 254 can include one or more processors. In some examples, communications circuitry 252 can include one or more wireless adapters, wireless cards, cable adapters, wire adapters, radio frequency (RF) devices, wireless communication devices, Bluetooth® devices, IEEE 802.11-compliant devices, WiFi devices, cellular devices, GPS devices, Ethernet ports, network ports, Lightning cable ports, cable ports, etc. In some examples, the communications circuitry 252 may be configured to facilitate communications via one or more wired media and / or protocols (e.g., an Ethernet cable, a Universal Serial Bus cable, etc.) and / or wireless media and / or protocols (e.g., near field communication (NFC), extremely high frequency radio waves (commonly known as Bluetooth®), IEEE 802.11x, Zigbee®, HART, LTE, Z-Wave, WirelessHD, WiGig, etc.).

[0035] In some examples, the memory circuitry 256 may include and / or store machine-readable instructions that may be executed by the processing circuitry 254. In the example of FIG. 2, the memory circuitry 256 includes and / or stores an image processing workflow designer 400, one or more saved image processing workflows 306, multiple workflow processing nodes / blocks 304, and multiple image repositories 258. As shown, each image repository 258 includes one or more images 260 (and / or image files). In some examples, one or more of the saved images 260 may be 2D and / or 3D images generated by the X-ray detector 106 and provided by and / or imported from the scanning system(s) 100. Although illustrated as part of (and / or stored on) the memory circuitry 256 of the computing system 250, in some examples, some or all of the workflow designer 400, workflow 306, processing block 304, image repository 258, and / or images 260 may be part of (and / or may be stored on) the memory circuitry of the remote computing system(s) 299.

[0036] In some examples, the workflow designer 400 may provide an interface through which a customized (e.g., ADR) image processing workflow 306 may be constructed. In some examples, the image processing workflow 306 may be adapted to individual user needs, such as to assist in recognizing defects in a particular workpiece 108 or evaluating the effectiveness of the X-ray scanning system 100. For example, a user may construct a workflow 306 to verify the presence of required markings on a particular workpiece 108 and / or the dimensions of a particular workpiece 108. As another example, a user may construct a workflow 306 to verify that the X-ray scanning system 100 itself is in an acceptable operating condition. In some examples, the workflow designer 400 may facilitate the design of the workflow 306 using visual tools, such as node-based processing tools. After the workflow 306 has been designed, the workflow 306 may be saved and / or stored in the memory circuitry 256 for future use and / or retrieval.

[0037] In some examples, the workflow designer 400 may allow for adaptation of the workflow 306 through custom arrangement and / or configuration of different processing blocks 304. Different processing blocks 304 may define and / or perform different functions. In some examples, there may be a variety of different types of processing blocks 304.

[0038] For example, some processing blocks 304 may perform arithmetic functions, such as addition, subtraction, multiplication, division, etc. In some examples, a single arithmetic processing block 304 may be configured to perform any one of these arithmetic functions. As another example, some processing blocks 304 may perform logical functions, such as AND, OR, NOR, NAND, NOT, XOR, etc. In some examples, a single logical processing block 304 may be configured to perform any one of these logical functions.

[0039] As another example, some processing blocks 304 may perform conditional branching functions, such as, for example, IF / THEN. As another example, some processing blocks 304 may perform looping functions, such as, for example, WHILE, FOR, and / or REPEAT loops. As another example, some processing blocks 304 may perform vector functions, such as, for example, vector arithmetic (e.g., addition, subtraction, multiplication, division, etc.), vector creation / combination (e.g., combining two or more numbers to create a vector), vector division (e.g., dividing a vector into two or more numbers), and / or vector intersection identification. In some examples, a single vector processing block 304 may be configured to perform any one of these vector functions.

[0040] As another example, some processing blocks 304 may perform input functions, such as inputting an image 260, an image repository 258, a number, a coordinate, a series of numbers or coordinates, a logical value (e.g., TRUE / FALSE), a file, and / or other items into the workflow 306. In some examples, a single input processing block 304 may be configured to perform any one of these input functions. In an example where the input processing block 304 inputs a 3D image 260, the parameters of the input processing block 304 may define a 2D slice of the 3D image.

[0041] As another example, some processing blocks 304 may perform output functions, such as outputting an image (e.g., an entire or specific region), numerical values, and / or logical values ​​to the output device 204 of the UI 202 and / or to a file (e.g., in the memory circuitry 256). In some examples, a single output processing block 304 may be configured to perform any one of these output functions. As another example, some processing blocks 304 may perform comparison / verification functions, such as comparing an input value to a threshold / threshold range and verifying that the input value is above / below the threshold and / or within the threshold range. As another example, some processing blocks 304 may perform calibration functions, such as executing a reference workflow 306 (e.g., to verify proper operation of the scanning system 100) or outputting values ​​from the reference workflow 306 as part of the current workflow 306 (e.g., for use as input for parameter calibration).

[0042] As another example, some processing blocks 304 may perform, for example, image filtering (e.g., blurring an image and / or enhancing image contrast), image cropping (e.g., selecting a region of interest), polygon image cropping, image magnification (e.g., magnifying a selected image portion by selecting neighboring pixels that are within a threshold intensity), image merging (e.g., combining multiple 2D images into a single 3D image), image slicing (e.g., "slicing" a 2D image from a 3D image), image annotation (e.g., adding annotations to an image), intensity normalization (e.g., adjusting the intensity of pixels in an image), edge detection (e.g., using known edge detection algorithms or custom edge detection algorithms developed via machine learning), and image filtering (e.g., filtering the image using known edge detection algorithms or custom edge detection algorithms developed via machine learning). The image processing device may perform image processing functions such as: object selection (e.g., selecting a portion of an image defined by a detected edge); determining image information (e.g., average brightness of an image, number of pixels in an image, standard deviation of brightness of pixels in an image, etc.); determining image region information (e.g., height / width / size / area of ​​an image); determining differences between images (e.g., with respect to image information and / or specific non-identical portions); line profiling (e.g., mapping pixel values ​​along lines in an image); identifying line intersections; determining contrast-to-noise ratio (CNR); determining signal-to-noise ratio (SNR); and / or identifying / selecting the location and / or quantity of pixels above / below and / or within a (e.g., brightness) threshold.

[0043] In some examples, a user can place an instance of a generic processing block 304 and configure the instance to operate according to a particular type of processing block 304 (e.g., via selection from a drop-down list of options). In some examples, several processing blocks 304 (and / or block instances) can be grouped together in customized combinations and / or saved as a new type of custom composite processing block 304 for future use. For example, a user may group two arithmetic addition blocks together to form a custom 3-numerical addition block. In some examples, the resulting custom composite processing block 304 may have a number of inputs and outputs equal to (or less than) the total number of inputs and outputs of several selected processing blocks 304 (and / or block instances). In some examples, connected inputs and / or outputs of several selected processing blocks 304 (and / or block instances) may be omitted.

[0044] In some examples, the workflow designer 400 may provide a canvas 302 on which processing blocks 304 may be arranged, sequenced, and / or interconnected to design a workflow 306 (see, e.g., FIGS. 3a-3d). In some examples, placing (e.g., dragging and dropping) a processing block 304 on the canvas 302 may form an instance 308 of the processing block 304. In some examples, this may allow multiple different instances 308 of the same processing block 304 to be used in different contexts and / or with different results. In some examples, each instance 308 of a processing block 304 may be independently configured, e.g., with respect to name, parameters, connections to other processing blocks 304, and / or other properties.

[0045] 3a-3d show an example of a workflow designer interface 300 that may be displayed by a workflow designer 400 (e.g., via the output device(s) 204 of the UI(s) 202). As shown, the interface 300 includes a toolbar with a quick save icon 310 and a file menu 312. In the example of FIG. 3a, the interface further includes a drop-down menu 314 that is selected to reveal a display window 316 of processing blocks 304 that may be positioned on the canvas 302. The display window 316 and drop-down menu 314 are hidden in the examples of FIGS. 3b-3d.

[0046] While shown identically and without labeling for simplicity in the example of FIG. 3 a, in some examples, the processing blocks 304 may be displayed differently and / or uniquely labeled within the display window 316. In some examples, a window with additional information about a particular processing block 304 may pop up on the interface 300 in response to a mouse hover or similar interaction. In some examples, the display window 316 showing different types of processing blocks 304 may be pinned and / or permanently displayed within the interface 300, rather than appearing only upon selection of a drop-down menu 314. In some examples, custom composite processing blocks 304 may be accessed through the same drop-down menu 314 and / or display window 316. In some examples, composite processing blocks 304 may be accessed in a different manner, such as through an import function in the file menu 312 and / or some other means.

[0047] 3a-3d, the interface 300 further includes a canvas 302 on which several block instances 308 of different processing blocks 304 are arranged and interconnected. In some examples, a workflow 306a of the block instances 308 arranged on the canvas 302 can be saved via a quick save icon 310 and / or a save option in a file menu 312. In some examples, a previously saved workflow 306 can be loaded via a load option in the file menu 312. In some examples, the illustrated workflow 306a may be one that was recently assembled via the interface 300 or one that was loaded from a previously saved workflow 306. In some examples, the current workflow 306a on the canvas 302 can be executed and / or trained via an appropriate selection in the file menu 312.

[0048] In the example of FIG. 3a, the displayed workflow 306a includes a Folder Source block instance 308a, a Crop Image (or Region of Interest) block instance 308b, a Pixel Threshold block instance 308c, an Image Information block instance 308d, a Verification block instance 308e, and a Display Results block instance 308f.

[0049] In the example of FIG. 3 a, the folder source block instance 308 a is an instance of the input processing block 304 that references a particular image repository 258. In some examples, a user may change which image repository 258 is referenced by changing one or more parameters of the block instance 308 a (e.g., via input(s) in the UI 202). In some examples, when the workflow 306 is implemented / run, the workflow designer 400 can process images 260 in the referenced image repository 258 according to the workflow 306 on the canvas 302. In some examples, when the “watch mode” option of the folder source block instance 308 is selected, the workflow designer 400 can monitor the selected image repository 258 while the workflow 306 is running and automatically process any new images 260 (e.g., newly created and / or imported) according to the workflow 306. In this manner, the workflow 306 can continuously process new images 260 as they are generated by the x-ray scanning system 100.

[0050] In the example of FIG. 3a, the folder source block instance 308a shows an image preview 318a of the first image 260 in the selected image repository 258. While shown in the example of FIG. 3a, in some examples, the image preview 318 may only be shown upon selection of the block instance 308. In some examples, the image preview 318 may be shown in a larger window in response to specific selection (e.g., double-clicking) of the image preview 318 (e.g., via the UI 202). As shown, the folder source block instance 308a has arrows 320 that allow the user to cycle through the previews 318a of other images 260 in the selected image repository 258. In this way, the user can ensure that the correct repository 258 is selected and / or understand the images 260 in the selected repository 258.

[0051] In the example of Figure 3a, the folder source block instance 308a has a single output 322 that corresponds to an image 260 in the selected image repository 258. As shown, the image output 322 of the folder source block instance 308a is shown as a small circle. The output 322 is connected to an input 324 of the crop image block instance 308b, also shown as a small circle. As shown, the input 324 of the crop image block instance 308b corresponds to the image parameters of the crop image block instance 308b.

[0052] In the example of Fig. 3a, the crop image block instance 308b includes several other parameters in addition to the image. In particular, the X and Y parameters correspond to the coordinates of the vertices (e.g., center or corner) of the cropping rectangle, while the height and width parameters correspond to the height and width of the cropping rectangle. In the example of Fig. 3a, these parameters are set manually, for example, through numerical entry in the indicated fields and / or adjustment of slider bars. An image preview 318b is shown within the crop image block instance 308b, which shows how the image 260 referenced by the folder source block instance 308a would look given the current parameters of the crop image block instance 308b.

[0053] In some examples, the interface 300 may allow a user to graphically set parameters by selecting (e.g., via a cursor) a rectangular region or representative image region (e.g., shown in a larger window) of the image preview 318b. In some examples, one or more of the parameters of the cropped image block instance 308b may be automatically set by connecting the corresponding input(s) 324 to the appropriate output 322. In some examples, a user may connect an output 322 of a block instance 308 to an input 324 of another block instance 308 by selecting an input 324, an output 322, and / or a connection icon (e.g., in the file menu 312 and / or the display window 316). In some examples, connections between block instances 308 may serve both to configure the parameters of a particular block instance 308 and to configure the execution order of the workflow 306.

[0054] In the example of Figure 3a, the cropped image block instance 308b has two outputs 322. One output 322 corresponds to the newly cropped image, while the other output 322 corresponds to the original (uncropped) image. As shown, the uncropped image output 322 is not connected to another block instance 308. The cropped image output 322 is connected to the image input 324 of the pixel threshold block instance 308c.

[0055] In the example of FIG. 3a, pixel threshold block instance 308c is an instance of processing block 304 for identifying pixels above / below a brightness threshold and / or within a threshold brightness range. In some examples, this may be useful when identifying certain elements within a black-and-white and / or grayscale industrial X-ray scan image 260 that may appear lighter or darker than others. As shown, the parameters of pixel threshold block instance 308c are configured to filter out pixels having brightness above a maximum set brightness. An image preview 318c of pixel threshold block instance 308c shows which pixels remain after filtering.

[0056] In some examples, the parameters of the pixel threshold block instance 308c may instead be configured to filter out pixels having a luminance below a minimum set luminance, or to filter out pixels that are outside a luminance range. While two inputs 324 of the pixel threshold block instance 308c are shown in the example of FIG. 3a, in some examples, the pixel threshold block instance 308c may include more inputs 324 (e.g., to define a threshold range). In some examples, the parameters of the pixel threshold block instance 308c may instead be configured to filter based on some other characteristic other than luminance.

[0057] In the example of FIG. 3a, pixel threshold block instance 308c has an output 322 corresponding to a filtered image in which pixels above a maximum set brightness have been removed. This output 322 is connected to an image input 324 of image information block instance 308d. Image information block instance 308d is an instance 308 of a processing block 304 for determining image information. In the example of FIG. 3a, image information block instance 308d has several outputs 322 corresponding to different information about image 260 received via its image input 324. As shown, pixel threshold block instance 308c provides a preview of the value of output 322 based on input 324 (and / or any configuration parameters). The illustrated information output 322 corresponds to the number of pixels, the average brightness of the pixels, and the standard deviation in brightness of the pixels, although in some examples, less or more information may be determined and / or output by image information block instance 308d (e.g., image region information).

[0058] In the example of Figure 3a, the pixel count output 322 of image information block instance 308d is connected to the input 324 of verification block instance 308e. Verification block instance 308 is an instance of processing block 304 that performs a verification function, such as verifying whether an input is above / below a threshold and / or within a threshold range. In the parameter configuration shown, verification block instance 308e verifies that the value of its input 324 (e.g., pixel count) is at least a certain value (i.e., 436). In some examples, the parameters of verification block instance 308e may alternatively be configured to verify that its input 324 is less than or equal to a certain value or within a certain range of values.

[0059] In the example of FIG. 3a, the minimum value for the verification block instance 308e is shown as having been previously set. In some examples, the value may be manually entered by a user. In some examples, the minimum value may be automatically set by the workflow designer 400 via training. That is, in some examples, instead of manually entering the minimum value, a user may instead select (e.g., via the File menu 312) to train the workflow 306a.

[0060] In some examples, upon selecting to train the workflow 306a, the workflow designer 400 prompts the user to reference an image repository 258 containing training data, similar to how a folder source block instance 308a references an image repository 258. In some examples, the training data may include images 260 that the user wants to analyze to determine parameter values. In some examples, the workflow designer 400 may prompt the user to reference one image repository 258 containing training data for each folder source block instance 308 (and / or image source block instance 308) on the canvas 302. In some examples, the user may decline to reference training data for a particular folder source block instance 308 (and / or image source block instance 308) and instead choose to use the folder (and / or image) that is normally referenced.

[0061] In some examples, once the training data is identified, the workflow designer 400 can process the training data (e.g., images 260) according to the workflow 306a up to the verification block instance(s) 308. Then, instead of validating the input values ​​in the verification block instance(s) 308, the workflow designer 400 configures the min / max parameter(s) of the verification block instance 308 based on the training image(s) (e.g., using a form of machine learning). In the example of FIG. 3a, training the workflow 306a can result in the workflow designer 400 determining the number of pixels in each training image that are below a maximum threshold in a selected region. The workflow designer can then record the minimum of those numbers as the minimum parameter of the verification block instance 308e. In some examples, the verification block instance 308e may instead record the maximum of that number, or the maximum and minimum values ​​(e.g., if a maximum or range is selected instead of a minimum).

[0062] In some examples, the verification block instance 308 may also be used to verify the correct operation of the X-ray scanning system(s) 100. For example, the process control workflow 306 may be configured to analyze scanned images of special workpieces 108 that are used exclusively to verify the correct operation of the X-ray scanning system(s) 100. These special workpieces 108 may have known features and / or characteristics.

[0063] In such an example, the parameters for the verification block instance 308 may be trained using a set of images showing the particular workpiece 108. In particular, the images may have been generated by the X-ray scanning system 100 when it was new and / or known to be in good working condition. The operational effectiveness of the X-ray scanning system 100 may then be periodically evaluated by scanning new images of the particular workpiece 108 and processing the new images of the particular workpiece 108 using the process control workflow 306 that was previously trained on the older images of the particular workpiece 108.

[0064] If the verification block instance(s) 308 of the process control workflow 306 report a significant difference between the trained values ​​(e.g., from processing old images) and the new values, the designer 400 can conclude that the X-ray scanning system(s) 100 require maintenance. In some examples, a corresponding notification to that effect can be provided (e.g., via the UI 202 and / or other communication). In some examples, the X-ray scanning system(s) 100 can be disabled until maintenance can be provided. In some examples, the workflow 306 can include layers of the verification block instances 308, such that a failure of one layer can be interpreted as meaning a slight degradation in operation, a failure of some (but not all) layers can mean a moderate degradation in operation, and a failure of many or most layers can mean a severe degradation in operation.

[0065] In some examples, the results and / or output of the process control workflow 306 can be used to calibrate the ADR workflow 306. For example, the ADR workflow 306 can include a block instance 308 of the processing block 304 that executes the reference workflow 306 and outputs values ​​determined through execution of the reference workflow 306. These output values ​​can then be used as inputs to parameter calibration of the ADR workflow 306 (e.g., by adjusting pixel brightness, brightness threshold, average brightness, contrast value, standard deviation, etc.). Alternatively, the process control workflow 306 can output values ​​to a file, and the ADR workflow 306 can include a block instance 308 of the input processing block 304 that inputs / imports the file (and / or reads a series of values ​​from a file and inputs / imports the values).

[0066] 3a, verification block instance 308e has a result output 322 and a confidence output 322. The result output 322 is logically true or false. As shown, verification block instance 308e previews the true result output 322 with a checkmark. In some examples, the confidence output 322 may correspond to the degree (and / or percentage) that verification block instance 308e is confident that the result output 322 is correct. As shown, verification block instance 308e previews an 87% confidence that the result output 322 is correct.

[0067] In the example of FIG. 3a, the result output 322 of the verification block instance 308e is connected to the input 324 of the display results block instance 308f. The display results block instance 308f is an instance 308 of the output processing block 304 configured to output results to one or more display output devices 204 of the UI 202. In some examples, the verification block instance 308e may output to one or more other output devices 204 (e.g., speakers and / or haptic output) instead of or in addition to the display output device(s) 204. In examples in which multiple images 260 are processed by the workflow 306a, the display block instance 308f may provide output for each image 260. In some examples, the output(s) may be in the form of graphs, charts, spreadsheets, and / or list outputs. In some examples, the output may indicate which image 260 each result corresponds to.

[0068] 3b shows an example of a second workflow 306b. As shown, workflow 306b is similar to workflow 306a, except that workflow 306b includes a compare block instance 308g instead of a verify block instance 308e.

[0069] In some examples, the compare block instance 308g can be similar to the verify block instance 308e. For example, like the verify block instance 308e, the compare block instance 308g compares the value of its input 324 (e.g., “A”) with a threshold (e.g., “B”) to verify that the former is greater than the latter. In some examples, the compare block instance 308g can also be configured with training data, as described above with respect to the verify block instance 308e. While the compare block instance 308g does not include a confidence output 322, the compare block instance 308g does have a logical TRUE / FALSE result output 322 that previews the correct result with a checkmark. As shown, the result output 322 of the compare block instance 308g is connected to the display result block instance 308f.

[0070] 3b, a user has selected to "test" workflow 306b (e.g., via an appropriate selection in file menu 312). In some examples, workflow 306 may be "tested" using a batch of test images corresponding to workpieces 108 of known quality (e.g., good or bad). In some examples, the test images used to test workflow 306 may be obtained via scanning system 100.

[0071] In some examples, in response to a "Test" selection, the designer 400 may provide one or more (e.g., visual) outputs indicating the results of the test. In some examples, the output(s) may be in the form of one or more graphs, charts, spreadsheets, and / or other suitable media. In some examples, the test output(s) may indicate how each of the test images was evaluated by the tested workflow 306. This may be useful, for example, when trying to determine appropriate values ​​to use for comparison / validation.

[0072] In the example of Figure 3b, the folder source block instance 308a in workflow 306b references a different folder and shows a different image preview 318a than in workflow 306a of Figure 3a. In some examples, this may reflect the selection of a "test folder" of test images. As shown, the folder source block instance 308a shows four test images in the folder.

[0073] In the example of Figure 3b, interface 300 includes an information pane 326 that shows information about comparison block instance 308g. In some examples, information pane 326 may show information about whichever block instance 308 is selected. In the example of Figure 3b, comparison block instance 308g is selected, as indicated by the darkened and / or highlighted outline of comparison block instance 308g, and therefore information pane 326 shows information about comparison block instance 308g.

[0074] 3b, the information pane 326 also includes a graph 328 that shows information about the comparison block instance 308g as it relates to each test image. Specifically, the graph 328 shows a circle representing the "A" value of the comparison block instance 308g for each test image and a dotted line representing the threshold "B" value (i.e., 450) for the comparison block instance 308g. The circle is shown as either black or white depending on whether the corresponding test image incorrectly or correctly passed / failed the comparison test (based on the A / B values ​​and the known quality of the workpiece(s) 108 corresponding to each test image).

[0075] In the example of FIG. 3b, graph 328 shows that the first test image had an A value slightly above 700. Because an A value above 700 is greater than a B value of 450 (as indicated by the circle above the dotted line in graph 328), workflow 306b determines that the first test image passed the comparison test, theoretically indicating a good workpiece 108. The open circle in graph 328 for the first test image indicates that workflow 306b was correct in determining that the first test image passed the comparison test because the first test image does, in fact, indicate a good quality workpiece 108.

[0076] In the example of FIG. 3b, graph 328 shows that the second test image had an A value just below 400. Because an A value below 400 is less than a B value of 450 (as indicated by the circle falling below the dotted line in graph 328), workflow 306b determined that the second test image failed the comparison test, theoretically indicating a bad workpiece 108. The open circle in graph 328 for the second test image indicates that workflow 306b was correct in determining that the first test image failed the comparison test because the second test image does, in fact, indicate a poor workpiece 108.

[0077] In the example of FIG. 3b, graph 328 shows that the third test image had an A value just below 600. Because the A value below 600 is greater than the B value of 450 (as indicated by the circle above the dotted line in graph 328), workflow 306b determined that the third test image passed the comparison test, theoretically indicating a good workpiece 108. However, the black circle in graph 328 for the third test image indicates that workflow 306b was incorrect in determining that the third test image passed the comparison test because the third test image actually indicates a poor quality workpiece 108.

[0078] 3b may help a user quickly and easily understand how each test image was evaluated during testing. Furthermore, the pass / fail results shown in graph 328 may help a user determine whether to adjust currently set parameters. For example, by viewing graph 328, a user may be able to quickly understand that the B-value may need to be increased to approximately 600 to correctly fail the second and third test images and correctly pass the first and fourth test images.

[0079] 3c shows an example of a third workflow 306c. As shown, workflow 306c includes a Folder Source Block instance 308a, a 3D Image Information Block instance 308h, an Arithmetic Block instance 308i, an Image Slicing Block instance 308j, a Loop Block instance 308k, and an Image Output Block instance 308m. In some examples, workflow 306c can be configured to take 2D image slices of a 3D volume / image (e.g., via Image Slicing Block instance 308j), add annotations to the 2D image slices (e.g., via Loop Block instance 308k), and output the 2D image slices and annotations (e.g., via Image Output Block instance 308m).

[0080] In the example of Figure 3c, Folder Source Block instance 308a references a folder with 3D volumes / images, as shown by image preview 318a, which shows a cubic 3D volume / image. Image Slicing Block instance 308j is configured to take the cubic 3D volume / image input by Folder Source Block instance 308a and "slice" (and / or form) rectangular 2D images, as shown by image preview 318j. For simplicity, the example of Figure 3c uses a cubic 3D volume / image and rectangular 2D image slices, but in some examples, the 3D volume / image and / or 2D image slices may be representations of a more complex workpiece 108.

[0081] In the example of Figure 3c, the image slicing block instance 308j is configured to form a 2D image in the XY plane, such that the two-dimensional image has dimensions in the X and Y axes (but not the Z axis). As shown, the image slicing block instance 308j receives a number of Z voxels as input 324. The Z voxel input 324 determines how far along the Z axis the 2D slices should be taken in the XY plane.

[0082] In the example of Figure 3c, based on information provided by 3D image information block instance 308h, arithmetic block instance 308j receives Z voxel input 324 from arithmetic block instance 308i. As shown, 3D image information block instance 308h provides the number of voxels at the full depth (e.g., along the Z axis) of the 3D image to arithmetic block instance 308i. Arithmetic block instance 308i halves the number of voxels at the full depth to obtain the number of voxels at a depth approximately to the center of the 3D image and provides the result to Z voxel input 324 of image slicing block instance 308j.

[0083] In some examples, the image slicing block instance 308j may be configured differently. For example, the image slicing block instance 308j may be configured to form a 2D image in the XZ or YZ plane instead of the XY plane. In some examples, the 2D image plane may be defined in other ways, such as via two orthogonal (e.g., non-X / Y) vectors (e.g., provided as inputs to the image slicing block instance 308j). In such examples, a third vector may be determined based on the two vectors defining the 2D image plane, and the voxel input 324 may relate to that third vector. In some examples, the image slicing block instance 308j may enable graphical selection of 2D image slices (and / or parameters required to acquire the 2D image slices), such as via (e.g., cursor) selection of the appropriate portion within the image preview 318j (and / or associated information pane / window).

[0084] In the example of Figure 3c, image output block instance 308m receives a 2D image slice from image slicing block instance 308j. As shown, image output block instance 308m also receives annotations from loop block instance 308k. The darkened and / or highlighted outline of image output block instance 308m further indicates that image output block instance 308m is selected. Accordingly, information pane 326 shows information related to image output block instance 308m. In particular, information pane 326 shows an image preview 318m of a 2D image slice (e.g., provided by image slicing block instance 308j) accompanied by several white square annotations (e.g., provided by loop block instance 308k).

[0085] In the example of Figure 3c, loop block instance 308k is configured to process (e.g., annotate) the 2D image over five loop iterations. The exact manner in which loop block instance 308k processes the 2D image can be configured through loop workflow 306d, for example, as described below with respect to Figure 3d. In the example of Figure 3c, loop block instance 308k outputs the annotation to image output block instance 308m, but in some examples, loop block instance 308k may instead or in addition output a modified image (with or without annotations), one or more regions of the image (with or without annotations), and / or one or more Boolean results (e.g., indicating whether annotations were added).

[0086] While the example of FIG. 3c is manually set to five loops (e.g., via direct user input), in some examples, the number of loops for loop block instance 308k may be dynamically determined. For example, the number of loops may be determined by another block instance 308 and sent to loop block instance 308k. In some examples, loop block instance 308k may be configured to operate on multiple (e.g., cropped) 2D image regions rather than the entire 2D image. In such examples, loop block instance 308k may receive a set of regions (and / or a list, array, etc.) via region input 324. In examples in which the loop block instance receives a set of regions, the number of loops may be automatically determined to be equal to the number of regions in the set of regions.

[0087] 3d illustrates an example of a workflow 306d that is defined by and / or enclosed within a loop block instance 308k of the workflow 306c shown in FIG. 3c. In some examples, the loop workflow 306d can be accessed by specific selection (e.g., double-clicking) of the loop block instance 308k. Although not shown in the example of FIG. 3d, in some examples, the interface 300 can include one or more visual icons that enable switching between the main workflow (e.g., workflow 306c) and an embedded sub-workflow (e.g., loop workflow 306d).

[0088] 3d, the loop workflow 306d includes several block instances 308. Specifically, the loop workflow 306d includes a loop input block instance 308n, a loop output block instance 308o, a loop iterator block instance 308p, a 2D image information block instance 308q, a cropped image (or region of interest) block instance 308b, several arithmetic block instances 308i, and a box annotation block instance 308r. Given that the loop block instance 308k includes within it several of these block instances 308 of the loop workflow 306d, in some examples, the loop block instance 308k can be considered a composite block instance 308.

[0089] In the example of Figure 3d, loop input block instance 308n inputs into workflow 306d images (and / or image regions) to be processed by workflow 306d. As shown, the image output 322 and region output 322 of loop input block instance 308n correspond to the image input 324 and region input 324 of loop block instance 308k in Figure 3c. In this way, workflow 306d can process images and / or regions sent to loop block instance 308k in workflow 306c.

[0090] In the example of Figure 3d, the loop iterator block instance 308p has outputs 322 for the loop number and the current loop iteration, and these variables can be used in the operation of the loop workflow 306d. As shown, the loop and iteration outputs 322 of the loop iterator block instance 308p are connected to inputs 324 of the arithmetic block instance 308i. Although not used in the example of Figure 3d, the illustrated loop iterator block instance 308p also provides the ability to iterate through various (e.g., XY) coordinates via the start, end, and increment outputs 322.

[0091] 3d, the image output 322 of the loop input block instance 308n is connected to the image input 324 of the 2D image information block instance 308q and the crop image block instance 308b. The crop image block instance 308b uses information from the 2D image information block instance 308q and the arithmetic block instance 308i to select / crop a thin rectangular region of the rectangular 2D image slice for each iteration (e.g., as shown in image preview 318b). In particular, the crop image block instance 308b uses information from the 2D image information block instance 308q and the arithmetic block instance 308i to ensure that each rectangular region it selects for each iteration is one-fifth the size of the entire rectangular 2D image slice (e.g., so that the entire rectangular 2D image slice is processed over five loops).

[0092] In the example of Figure 3d, the box annotation block instance 308r receives the cropped / selected region by the crop image block instance 308b for each iteration. For each iteration, the box annotation block instance 308r places an annotation on the cropped / selected region. More specifically, for each iteration, the box annotation block instance 308r places a box of a specified size at a specified location within the cropped / selected region.

[0093] As shown, the parameters of the box annotation block instance 308r specify the size (e.g., width and height) and placement (e.g., X and Y coordinates of the corners / centers) of the box. Specifically, the parameters of the box annotation block instance 308r specify that for each iteration, a 1x1 box should be placed at the (1,1) XY coordinates of the clipped / selected region. Although the same coordinates are always used to place the box annotation, the coordinates are relative to the specific clipped / selected region being operated on in that iteration, so there are no duplicate and / or redundant annotations (unless there are duplicate and / or redundant regions).

[0094] Nevertheless, the box annotation block instance 308r is also configured to track the absolute positioning of each annotation relative to the larger (e.g., uncropped) image. In some examples, the box annotation block instance 308r may further output the annotation along with metadata that similarly enables the annotation to be accurately indicated and / or positioned within the larger (e.g., uncropped) image by other block instances 308 (e.g., as illustrated in the image preview 318m of the image output block instance 308m in Figure 3c). This makes the box annotation block instance 308r a particularly useful tool when annotating various regions of a larger image.

[0095] In the example of Figure 3d, the parameters of the box annotation block instance 308r are set manually, although in some examples the parameters may be set dynamically (e.g., via outputs 322 from other block instances 308). In the example of Figure 3d, the box annotation block instance 308r also includes a Show input 324 that allows for dynamic determination of whether to add / include an annotation (e.g., Show = FALSE then do not add / include annotation).

[0096] Although shown as a box annotation block instance 308r in the example of FIG. 3d, different types of annotation block instances 308 may be used in some examples. For example, a text annotation block instance 308 may be used to annotate an image with text instead of a box. In such an example, one of the parameters may be the text to use for the annotation (e.g., rather than the size of the box). As another example, an arrow or pixel annotation block instance 308 may be used to annotate an image with an arrow or a specific pixel. In an example using arrow or pixel annotations, the arrow / pixel annotation block instance 308 would have appropriate associated parameters (e.g., vector parameters for the arrow, pixel position(s) / color(s), etc.).

[0097] In the example of Figure 3d, loop output block instance 308o receives annotations from box annotation block instance 308r. These annotations received as input 324 at loop output block instance 308o correspond to annotation output 322 that is part of loop block instance 308k of workflow 306c in Figure 3c. In some examples, the annotation data passed between block instances also includes relative positioning information that allows annotations placed over regions of an image to be accurately positioned / shown when the entire image is output (e.g., as shown in image preview 318 in information pane 326 in Figure 3c).

[0098] In the example of Figure 3d, the loop output block instance 308o has other inputs 324 that can affect the output(s) 322 of the loop block instance 308k of the workflow 306c in Figure 3c. For example, the loop output block instance 308o can ignore annotations received during loop instances where the Include Annotations input 324 is FALSE and / or only record / recognize annotations while the Include Annotations input 324 is TRUE or disconnected. As another example, the loop output block instance 308o may ignore regions received during loop instances where the Include Regions input 324 is FALSE and / or only record / recognize regions received when the Include Regions input 324 is TRUE or disconnected. In some examples, the loop block instance 308k may output only the annotations and / or regions recorded / recognized by the loop output block instance 308o according to the Include Annotations / Regions input 324.

[0099] In the example of FIG. 3d, the loop output block instance 308o also has a result input 324 that matches the result output 322 of the loop block instance 308k of the workflow 306c in FIG. 3c. In some examples, the result output 322 can be a Boolean value (e.g., TRUE / FALSE). In some examples, the result output 322 of the loop block instance 308k can be configured to be TRUE if the result input 324 of the loop output block instance 308o is TRUE during any loop iteration. In some examples, the result output 322 of the loop block instance 308k can be configured to be TRUE only if the result input 324 of the loop output block instance 308o is TRUE during all loop iterations. As shown, the loop output block instance 308o has a drop-down menu next to the result input 324 to allow a user to select whether to configure the result output 322 of the loop block instance 308k under any approach or under all approaches.

[0100] 4 is a flowchart illustrating an example operation of workflow designer 400. In some examples, workflow designer 400 may be embodied in machine-readable (and / or processor-executable) instructions stored in memory circuitry 256 and / or executed by processing circuitry 254.

[0101] 4, the workflow designer 400 begins at block 402. At block 402, the workflow designer 400 provides the ADR interface 300 to the user via one or more output devices 204 (e.g., displays) of the UI 202. In some examples, this may include providing a canvas 302 and / or a display window 316 of processing blocks 304 that can be used to form a workflow 306 on the canvas 302. In some examples, the canvas 302 may be blank. In some examples, the canvas 302 may be populated with block instances 308 of an existing workflow 306 loaded from memory.

[0102] 4, the workflow designer 400 proceeds to block 404 after block 402. In block 404, the workflow designer 400 enables new arrangements and / or interconnections of block instances 308 on the canvas 302. In some examples, the workflow designer 400 may also enable proper configuration of block instances 308, including the internal configuration of composite block instances 308.

[0103] 4 , the workflow designer 400 proceeds to block 406 after block 404. In block 406, the workflow designer 400 configures, generates, and / or displays (e.g., via the UI 202) one or more image previews 318 and / or output previews for one or more block instances 308. In some examples, the image preview(s) 318 and / or output preview(s) may be configured, generated, and / or displayed based on one or more configurations and / or connections of the block instance(s) 308. In some examples, the image preview(s) 318 and / or output preview(s) may be configured, generated, and / or displayed in response to a user selection of the block instance(s) 308.

[0104] 4, the workflow designer 400 proceeds to block 408 after block 406. In block 408, the workflow designer 400 configures the workflow 306. In some examples, the workflow designer 400 can configure the workflow 306 based on the block instances 308 on the canvas 302, as well as the interconnections between and configuration of each block instance 308.

[0105] In the example of FIG. 4 , the workflow designer 400 proceeds to block 410 after block 408. In block 410, the workflow designer 400 checks whether any errors exist in the current workflow 306. For example, the workflow designer 400 may check to ensure that there are no vital parameter values ​​that are null or zero, that there is at least one input block instance 308 connected (directly or indirectly) to at least one output block instance 308, and / or that the selected image 260 (or image(s) 260 in a repository 258) are in the proper format. In some examples, the designer 400 may also check to ensure that there are the same number of images 260 in each repository 258 referenced by the workflow 306. However, in some examples, if there are different numbers of images 260 in different repositories 258, this may be tolerated and handled by the designer 400 and / or considered a warning rather than an error. In some examples, the workflow designer 400 may provide one or more outputs (e.g., via the UI 202) that explain any error(s) and / or warning(s) and / or explain how to remedy the error(s) and / or warning(s). As shown, if there are any errors, the workflow designer 400 returns to block 402.

[0106] 4, if no errors are found in block 410, the workflow designer 400 proceeds to block 412 after block 410. In block 412, the workflow designer 400 determines whether the user has selected to train and / or test the workflow 306. If the workflow designer 400 determines that the user has selected to train and / or test the workflow 306, the workflow designer 400 proceeds to block 414.

[0107] At block 414, the workflow designer 400 prompts the user for a reference to the image repository 258 containing training and / or test data (e.g., images 260). Once the training and / or test data is provided, the workflow designer 400 processes the training and / or test data according to the block instances 308, connections, and configurations of the workflow 306 (e.g., beginning with the image input block instance(s) 308). The workflow designer then configures the parameter(s) in the appropriate validation / comparison block instance(s) 308 accordingly and / or provides one or more graphs and / or charts showing the result(s) (and the validity of the result(s)) of the validation(s) / comparison(s) with respect to the test data and / or parameter configuration(s).

[0108] 4 , the workflow designer 400 proceeds to block 416 after block 414, or after block 412 if the workflow designer 400 determines that the user did not select to train the workflow 306. At block 416, the workflow designer 400 determines whether the user selected to implement / run the workflow 306. If so, the workflow designer 400 proceeds to block 418. At block 418, the workflow designer 400 processes the images 260 (and / or other inputs) entered into the workflow 306 according to the block instances 308, connections, and configuration of the workflow 306. In some examples, the workflow designer 400 may continue running the workflow 306 until it is explicitly told to stop (e.g., in watch mode).

[0109] 4, the workflow designer 400 terminates after block 418. However, in some examples, the workflow designer 400 may instead return to block 402 after block 418. As shown, if the workflow designer 400 determines that the user has not selected to run / execute the workflow 306, the workflow designer 400 returns to block 402 after block 416. Although shown as decision blocks 412 and 414 in the flowchart of FIG. 4, in some examples, the user selection to train and / or run the workflow 306 may be implemented as an interrupt.

[0110] The disclosed example workflow designer 400 uses visual tools (e.g., node / block-based processing tools) to enable easy customization of a workflow 306 adapted to the X-ray scanning system 100. Using the workflow designer 400, a user can create a workflow 306 specifically designed to perform ADR on images generated by the X-ray scanning system 100. Furthermore, the workflow designer 400 can train the ADR workflow 306 to automatically set certain parameters that can define defects, for example. The trained process control workflow 306 can also be used to determine how effectively the X-ray scanning system 100 is operating, and the output of the process control workflow 306 can be used to further calibrate the ADR workflow 306.

[0111] The methods and / or systems can be implemented in hardware, software, and / or a combination of hardware and software. The methods and / or systems can be implemented centrally in at least one computing system, or in a distributed fashion where different elements are distributed across several interconnected computing or cloud systems. Any kind of computing system or other device adapted to perform the methods described herein is suitable. A typical combination of hardware and software can include a general-purpose computing system, along with a program or other code that, when loaded and executed, controls the computing system to perform the methods described herein. Another typical embodiment can include an application-specific integrated circuit or chip. Some embodiments can include a non-transitory machine-readable (e.g., computer-readable) medium (e.g., a flash drive, optical disk, magnetic storage disk, etc.) that stores one or more lines of code executable by a machine, thereby causing the machine to perform a process as described herein.

[0112] While the present method and / or system has been described with reference to certain specific embodiments, those skilled in the art will recognize that various modifications can be made and equivalents can be substituted without departing from the scope of the present method and / or system. In addition, many modifications can be made to adapt a particular situation or material to the teachings of the disclosure without departing from the scope of the disclosure. Therefore, the present method and / or system is not limited to the particular embodiments disclosed, but it is intended that the present method and / or system include all embodiments falling within the scope of the appended claims.

[0113] As used herein, "and / or" means any one or more of the items in the list connected by "and / or." As an example, "x and / or y" means any element of the three-element set {(x), (y), (x,y)}. In other words, "x and / or y" means "one or both of x and y." As another example, "x, y and / or z" means any element of the seven-element set {(x), (y), (z), (x,y), (x,z), (y,z), (x,y,z)}. In other words, "x, y and / or z" means "one or more of x, y and z."

[0114] As used herein, the term "for example" emphasizes a list of one or more non-limiting examples, instances, or illustrations.

[0115] As used herein, the terms "coupled," "coupled to," and / or "coupled with" mean a structural and / or electrical connection, whether attached, attached, connected, joined, fastened, linked, and / or otherwise secured. As used herein, the term "attach" means attached, attached, connected, joined, fastened, linked, and / or otherwise secured. As used herein, the term "connect" means attached, attached, connected, joined, fastened, linked, and / or otherwise secured.

[0116] As used herein, the terms “circuitry” and “circuitry” refer to physical electronic components (i.e., hardware) and any software and / or firmware (“code”) that can comprise, be executed by, and / or be otherwise associated with the hardware. As used herein, for example, a particular processor and memory can comprise a first “circuit” when executing a first one or more lines of code, and can comprise a second “circuit” when executing a second one or more lines of code. As used herein, whenever circuitry includes the hardware and code (if either is necessary) necessary to perform a function, the circuitry is “operable” and / or “configured” to perform that function, regardless of whether performance of that function is disabled or enabled (e.g., by a user-configurable setting, factory trim, etc.).

[0117] As used herein, control circuitry can include digital and / or analog circuitry, discrete and / or integrated circuitry, microprocessors, DSPs, etc., software, hardware, and / or firmware located on one or more boards that form part or all of the controller and / or are used to control the welding process and / or devices such as the power supply and wire feeder.

[0118] As used herein, the term "processor" refers to processing devices, apparatus, programs, circuits, components, systems, and subsystems, whether implemented in hardware, tangibly embodied software, or both, and whether programmable or not. As used herein, the term "processor" includes, but is not limited to, one or more computing devices, hardwired circuits, signal modifying devices and systems, system controlling devices and machines, central processing units, programmable devices and systems, field programmable gate arrays, application specific integrated circuits, systems on a chip, systems comprising discrete elements and / or circuits, state machines, virtual machines, data processors, processing facilities, and any combination of the above. A processor may be, for example, any type of general-purpose microprocessor or microcontroller, a digital signal processing (DSP) processor, an application specific integrated circuit (ASIC), a graphics processing unit (GPU), a reduced instruction set computer (RISC) processor with an advanced RISC machine (ARM) core, etc. A processor may be coupled to and / or integrated into a memory device.

[0119] As used herein, the terms "memory" and / or "memory device" refer to computer hardware or circuitry that stores information for use by a processor and / or other digital device. The memory and / or memory device can be any suitable type of computer memory or any other type of electronic storage medium, such as read-only memory (ROM), random access memory (RAM), cache memory, compact disc read-only memory (CDROM), electro-optical memory, magneto-optical memory, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), computer-readable medium, etc. Memory may include, for example, non-transitory memory, non-transitory processor-readable medium, non-transitory computer-readable medium, non-volatile memory, dynamic RAM (DRAM), volatile memory, ferroelectric RAM (FRAM®), first-in-first-out (FIFO) memory, last-in-first-out (LIFO) memory, stacked memory, non-volatile RAM (NVRAM), static RAM (SRAM), cache, buffer, semiconductor memory, magnetic memory, optical memory, flash memory, flash card, CompactFlash® card, memory card, secure digital memory card, micro card, mini card, expansion card, smart card, memory stick, multimedia card, picture card, flash storage, subscriber identity module (SIM) card, hard drive (HDD), solid state drive (SSD), etc. Memory may be configured to store code, instructions, applications, software, firmware, and / or data and may be external, internal, or both to the processor.

[0120] As used herein, the term "canvas" refers to a graphical workspace or interface within which a user can graphically manipulate the contents of the workspace or interface, for example, by manipulating and / or interacting with fields, parameters, connections, and / or configurations of processing block instances.

[0121] Disabling circuitry, actuators, and / or other hardware can be accomplished via hardware, software (including firmware), or a combination of hardware and software, and can include physical disconnection, de-energization, and / or software controls that restrict the execution of commands that activate circuitry, actuators, and / or other hardware. Similarly, enabling circuitry, actuators, and / or other hardware can be accomplished via hardware, software (including firmware), or a combination of hardware and software using the same mechanisms used to disable them. The inventions disclosed herein include the following: [Aspect 1] 1. An assisted defect recognition (ADR) control system, comprising: The display and a processor; A computer-readable storage medium containing computer-readable instructions that, when executed, cause the processor to: providing a design interface via the display, the design interface including a canvas and a plurality of image processing blocks, each of the image processing blocks representing an image processing function, wherein an image processing block of the image processing blocks can be arranged on the canvas to form an instance of the image processing block; constructing an image processing workflow based on instances of the image processing blocks on the canvas and connections between the instances of the image processing blocks on the canvas; analyzing an input image via the image processing workflow; outputting the results of the analysis; a computer-readable storage medium for causing the An ADR control system comprising: [Aspect 2] The computer-readable instructions, when executed, cause the processor to: enabling a user to connect inputs and outputs of the instance of the image processing block on the canvas of the design interface; configuring the image processing workflow based on the connections of the inputs and outputs of the instances of the image processing blocks on the canvas; 2. The ADR control system of embodiment 1, further comprising: [Aspect 3] The computer-readable instructions, when executed, cause the processor to: allowing a user to specify values ​​or ranges of parameters to be used in at least one of said instances of said image processing block; configuring the image processing workflow based on the values ​​or ranges of the parameters; 2. The ADR control system of embodiment 1, further comprising: [Aspect 4] 4. The ADR control system of claim 3, wherein the computer-readable instructions, when executed, further cause the processor to determine the value or range of the parameter based on training the image processing workflow using a plurality of training images. [Aspect 5] 2. The ADR control system of claim 1, wherein the result is an image, a portion of an image, a number, or a Boolean value. [Aspect 6] The ADR control system of aspect 1, wherein the computer-readable instructions, when executed, further cause the processor to preview intermediate results of the analysis in response to selection of the instance of the image processing block on the canvas. [Aspect 7] The ADR control system of aspect 1, wherein the computer-readable instructions, when executed, further cause the processor to enable a user to group multiple image processing blocks together, save the group as a composite image processing block, and add the composite image processing block to the canvas in response to selecting the composite image processing block to add to the canvas. [Aspect 8] The computer-readable instructions, when executed, cause the processor to: accessing an image produced by an X-ray scanner or a three-dimensional (3D) volume constructed from images produced by the X-ray scanner, the image or 3D volume representing a component or assembly scanned by the X-ray scanner; using said image or a slice of said 3D volume as said input image; 2. The ADR control system of embodiment 1, further comprising: [Aspect 9] The ADR control system of aspect 1, wherein the image processing block includes an image filter function, a region selection function, an edge detection function, an object selection function, a brightness adjustment function, an image enlargement function, an image information function, an image difference function, an image annotation function, an image merging function, an image slicing function, a line profiling function, a signal-to-noise ratio function, a contrast-to-noise ratio function, or a thresholding function. [Aspect 10] The ADR control system of aspect 1, wherein the result includes a first result, the image processing workflow includes a first image processing workflow, and the computer-readable instructions, when executed, further cause the processor to calibrate one or more parameters of the first image processing workflow based on a second result of the second image processing workflow. [Aspect 11] 1. A method for facilitating the design of a custom ADR workflow, comprising: providing a design interface via a display, the design interface including a canvas and a plurality of image processing blocks, each of the image processing blocks representing an image processing function, wherein an image processing block of the image processing blocks can be arranged on the canvas to form an instance of the image processing block; configuring, via processing circuitry, an image processing workflow based on instances of the image processing blocks on the canvas and connections between the instances of the image processing blocks on the canvas; analyzing an input image via the image processing workflow; outputting the results of the analysis; A method comprising: [Aspect 12] enabling a user to connect inputs and outputs of the instance of the image processing block on the canvas of the design interface; configuring the image processing workflow based on the connections of the inputs and outputs of the instances of the image processing blocks on the canvas; 12. The method of embodiment 11, further comprising: [Aspect 13] allowing a user to specify values ​​or ranges of parameters to be used in at least one of said instances of said image processing block; configuring the image processing workflow based on the values ​​or ranges of the parameters; 12. The method of embodiment 11, further comprising: [Aspect 14] 14. The method of embodiment 13, further comprising determining the value or range of the parameter based on training the image processing workflow using a plurality of training images. [Aspect 15] 12. The method of claim 11, wherein the result is an image, a portion of an image, a number, or a Boolean value. [Aspect 16] 12. The method of claim 11, further comprising previewing intermediate results of the analysis in response to selecting the instance of the image processing block on the canvas. [Aspect 17] The method of claim 11, further comprising enabling a user to group multiple image processing blocks together, save the group as a composite image processing block, and add the composite image processing block to the canvas in response to selecting the composite image processing block to add to the canvas. [Aspect 18] accessing an image produced by an X-ray scanner or a three-dimensional (3D) volume constructed from images produced by the X-ray scanner, the image or 3D volume representing a component or assembly scanned by the X-ray scanner; using said image or a slice of said 3D volume as said input image; 12. The method of embodiment 11, further comprising: [Aspect 19] 12. The method of claim 11, wherein the image processing block includes an image filter function, a region selection function, an edge detection function, an object selection function, a brightness adjustment function, an image enlargement function, an image information function, an image difference function, an image annotation function, an image merging function, an image slicing function, a line profiling function, a signal-to-noise ratio function, a contrast-to-noise ratio function, or a thresholding function. [Aspect 20] The method of embodiment 11, wherein the result includes a first result, the image processing workflow includes a first image processing workflow, and the method further includes calibrating one or more parameters of the first image processing workflow based on a second result of a second image processing workflow.

Claims

1. 1. An Assisted Defect Recognition (ADR) control system, comprising: The display and a processor; 1. A computer-readable storage medium for storing a plurality of input images at an image storage location, the image storage location comprising a storage location of an image repository, the plurality of input images comprising a first input image and a second input image, the first input image or the second input image comprising an image of an industrial part, the computer-readable storage medium further comprising computer-readable instructions that, when executed, cause the processor to: providing a design interface via the display, the design interface including a canvas, an input image block, and a plurality of image processing blocks, the input image block representing an input image function, each of the image processing blocks representing an image processing function, the input image blocks being capable of being arranged on the canvas to form input image block instances that reference the first input image, the second input image, or the image memory location, and image processing blocks of the image processing blocks being capable of being arranged on the canvas to form instances of the image processing blocks; presenting a first preview of the first input image on the display (i) as part of the input image block instance or (ii) in response to selection of the input image block instance; presenting an input image block instance boundary of the input image block instance and a user interface element within the input image block instance boundary on the display; allowing a user to select said user interface element; presenting a second preview of the second input image on the display in response to the user interface element being selected; constructing an image processing workflow based on an instance of the image processing block on the canvas, an instance of the input image block on the canvas, and a connection between the input image block on the canvas and the instance of the image processing block; performing a quality assurance analysis of the industrial part included in the first input image or the second input image via the image processing workflow; outputting the results of the analysis; a computer-readable storage medium for causing the An ADR control system comprising:

2. The computer-readable instructions, when executed, cause the processor to: enabling a user to connect inputs and outputs of the instance of the image processing block on the canvas of the design interface; allowing a user to specify values ​​or ranges of parameters to be used in at least one of said instances of said image processing block; configuring the image processing workflow based on the input and output connections and the values ​​or ranges of the parameters of the instances of the image processing blocks on the canvas; The ADR control system of claim 1 , further comprising:

3. 3. The ADR control system of claim 2, wherein the computer-readable instructions, when executed, further cause the processor to determine the value or range of the parameter based on training the image processing workflow using a plurality of training images.

4. The ADR control system of claim 1 , wherein the result is a Boolean value.

5. The computer-readable instructions, when executed, cause the processor to: responsive to the user interface element being selected and a new image being stored in the image repository, performing a new analysis of the new image through the image processing workflow; outputting new results of the new analysis; and The ADR control system of claim 1 , further comprising:

6. The ADR control system of claim 5, wherein the new image is an image generated by an X-ray scanner or a three-dimensional (3D) volume constructed from images generated by the X-ray scanner, and the image or the 3D volume represents a component or assembly scanned by the X-ray scanner.

7. 2. The ADR control system of claim 1, wherein the image processing block includes a region selection function, an edge detection function, an object selection function, a brightness adjustment function, an image enlargement function, an image information function, an image difference function, an image annotation function, an image merging function, an image slicing function, a line profiling function, a signal-to-noise ratio function, a contrast-to-noise ratio function, or a thresholding function.

8. The ADR control system of claim 1, wherein the first input image or the second input image is a two-dimensional (2D) image of the industrial part generated by an X-ray scanner or a three-dimensional (3D) volume of the industrial part constructed from images of the industrial part generated by the X-ray scanner, and the 2D image or the 3D volume represents the industrial part.

9. 1. A method for facilitating design of a custom assisted defect recognition (ADR) workflow, comprising: storing a plurality of input images in an image storage location, the image storage location comprising an image repository storage location, the plurality of input images comprising a first input image and a second input image, the first input image or the second input image comprising an image of an industrial part; providing a design interface via a display, the design interface including a canvas, an input image block, and a plurality of image processing blocks, the input image block representing an input image function, each of the image processing blocks representing an image processing function, the input image blocks being capable of being arranged on the canvas to form input image block instances that reference the first input image, the second input image, or the image memory location, and image processing blocks of the image processing blocks being capable of being arranged on the canvas to form instances of the image processing blocks; presenting a first preview of the first input image on the display (i) as part of the input image block instance or (ii) in response to selection of the input image block instance; presenting an input image block instance boundary of the input image block instance and a user interface element within the input image block instance boundary on the display; allowing a user to select said user interface element; presenting a second preview of the second input image on the display in response to the user interface element being selected; constructing an image processing workflow based on an instance of the image processing block on the canvas, an instance of the input image block on the canvas, and a connection between the input image block on the canvas and the instance of the image processing block; performing a quality assurance analysis of the industrial part included in the first input image or the second input image via the image processing workflow; outputting the results of the analysis; A method comprising:

10. The method of claim 1, further comprising: enabling a user to connect inputs and outputs of the instance of the image processing block on the canvas of the design interface; allowing a user to specify values ​​or ranges of parameters to be used in at least one of said instances of said image processing block; configuring the image processing workflow based on the input and output connections and the values ​​or ranges of the parameters of the instances of the image processing blocks on the canvas; The method of claim 9 further comprising:

11. The method of claim 10 , further comprising determining the value or range of the parameter based on training the image processing workflow using a plurality of training images.

12. The method of claim 9 , wherein the result is a Boolean value.

13. In response to the user interface element being selected and a new image being stored in the image repository, performing a new analysis of the new image via the image processing workflow. outputting new results of the new analysis; and The method of claim 10 further comprising:

14. The method of claim 13, wherein the new image is an image generated by an X-ray scanner or a three-dimensional (3D) volume constructed from images generated by the X-ray scanner, and the image or the 3D volume represents a component or assembly scanned by the X-ray scanner.

15. 10. The method of claim 9, wherein the image processing block comprises a region selection function, an edge detection function, an object selection function, a brightness adjustment function, an image enlargement function, an image information function, an image difference function, an image annotation function, an image merging function, an image slicing function, a line profiling function, a signal-to-noise ratio function, a contrast-to-noise ratio function, or a thresholding function.

16. The method of claim 9, wherein the first input image or the second input image is a two-dimensional (2D) image of the industrial part generated by an X-ray scanner or a three-dimensional (3D) volume of the industrial part constructed from images of the industrial part generated by the X-ray scanner, and the 2D image or the 3D volume represents the industrial part.

Citation Information

Patent Citations

  • Image processing apparatus

    JP2018136913A

  • Apparatuses, systems, and methods for providing a visual program for machine vision systems

    US20180052815A1

  • Programming device and program

    WO2020110933A1