WO2001067389A1 - Method and system for developing image processing applications - Google Patents
Method and system for developing image processing applications Download PDFInfo
- Publication number
- WO2001067389A1 WO2001067389A1 PCT/EP2001/002507 EP0102507W WO0167389A1 WO 2001067389 A1 WO2001067389 A1 WO 2001067389A1 EP 0102507 W EP0102507 W EP 0102507W WO 0167389 A1 WO0167389 A1 WO 0167389A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- components
- component
- data
- user
- application
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Definitions
- the present invention relates to a method and a system for developing image processing applications and a computer readable program product for performing such a method.
- Known systems use components (e.g., ActiveX), which solve specific sub problems (e.g., image grabbing, or blob analysis), and combine the components to build the application (design mode). Furthermore, adapting the components and their graphical user interface (design mode) is common to known systems. The state of the components, i.e., the things that have been changed in the design mode.
- components e.g., ActiveX
- design mode graphical user interface
- design mode the components are selected, the program is written, and the state of the features is modified.
- the user mode corresponds to the final application (executable).
- the state of the design mode and the state of the user mode can be saved.
- this is done with two independent and incompatible mechanisms. This means, for example, that changes made in the user mode cannot be accessed in design mode.
- the state of the design mode cannot be changed once the application is generated because it is compiled into the application.
- design mode only one component can be executed.
- predefined data structures are used in known systems.
- the invention is based on components which can be selected by the user. Components are objects in the terminology of object oriented programming. The selection of components is done according to the requirements of the application, i.e., the user selects those subtasks that fulfill the requirements. Triggered by this selection, according to the invention, the components automatically generate the application. The user only needs to configure the look and feel of the graphical user interface and to specify the image processing parameters. By this, programming is completely eliminated from application development. Furthermore, the time needed to develop an application is greatly reduced.
- a connector means is provided for automatically converting selected components with each other.
- said selected components are - in a preceding step - also automatically connected to said connector means. It is to be noted that the preferred embodiments of claims 15, 16, and 18 to 20 are not limited to the embodiment of claim 2.
- a connector means for automatic connection of the components.
- a component is added to or removed from the application it calls the connector means.
- it will be registered, which makes it known and accessible for the application, i.e., it becomes part of the application. By removing it from the application, it will be unregistered and can no longer be used.
- the adding of a component can be done by the user, for example, by double clicking the icon of the component, and therefore placing it on a "form". It can also be invoked internally by other components by calling a generation operation. Removing a component can similarly be done by the user by deleting the component from the form, or by other components by calling a delete operation of the component.
- the generation of the connections is realized by a special set of methods and data structures.
- this set of data together with the corresponding methods is called connector.
- the connector can, for example, be implemented as a class that generates one instance when it is used. Each component has access to the connector. This can be implemented by linking (in the sense of compiler terminology) the connector to each component.
- the connector When the connector is activated for the first time - during a particular session - it initializes its data structures, and loads additional information for the connection process, if available. Further activations of the connector, during a particular session, will not re-initialize it, but extend or modify its status.
- the connector holds references to all registered components. Besides this, it holds all connections between the components and all the information (for execution, communication, the load/save mechanism, etc.) derived from this.
- the connector divides the registered components into two groups: Those that can be connected correctly to other components, and those that cannot be connected.
- the case that a component cannot be connected arises, for example, if the user selects only part of the components that are required for a meaningful application.
- One example for this is if the user selects an image processing component but no component that provides the image data. Because there are no restrictions to the order of selecting components this case will frequently happen when setting up a new application.
- the connector After the design or user mode ends, the connector will be unloaded. Before the connector is unloaded, it can save information about the current components and their connections. This information can be used when the application is invoked the next time, either in design or user mode.
- Connecting a component comprises, but is not limited to, that a component can have (i) a reference, pointer, or a similar mechanism to its predecessors, i.e., the components which provides input data, (ii) a reference, pointer, or a similar mechanism to its successors, i.e., the components which accept the output data for further processing, (iii) a reference, pointer, or a similar mechanism to a viewer, that can display its results, (iv) a reference, pointer, or a similar mechanism to a component, that controls components, (v) a reference, pointer, or a similar mechanism to the scheduler, that accesses all components.
- a component after a component is added to the application, and the connections are established, it can immediately be executed, even if the system is in design mode. This is possible, because each component can call any other component via the connector or directly. By this, the whole application can be executed, even if there are no callbacks supported by the programming environments, and only the interface of one component needs to be active at a time (like, e.g., in Microsoft Visual Basic).
- the connector can inform the user about the consistency of the application so far. Examples for this are, for example, that components could not be connected or that important components are missing.
- the problem of connecting the components can be solved by using different methods, some of which are based on optimization, informed search, and heuristic search.
- the algorithm used in the preferred embodiment of the invention is a stepwise elimination of ambiguities until definite connections can be assigned.
- the algorithm is based on, but not limited to, the proposed categories of components.
- the algorithm described in the following assumes, that no previous information about the specific application is available, i.e., the user generates a new application.
- a component selected by a user is the first to be registered or if there are no components that form part of the application so far, the component is tested if it is a data source (input component) or not. In the case of an input component, it is used as the initial part of the application, having no connections so far. Otherwise, the component is put into the list of not connected components. However, if there are already components in the application, the following method is executed. As a first step, each input and output parameter of the selected component, which has to be connected to the other components, is checked with all available parameters of the components of the application, according to a set of evaluation rules. If a connection fulfills the rules, it will be added to a candidate connection list.
- the candidate connection list the parameters of already connected components are included.
- the new component can, for example, be inserted into a sequence of already connected components.
- An example for this is a blob analysis, calculating numerical data, that is connected to an output component that writes this data to the serial interface. If a data visualization component is added to the application, it can be placed in between the blob analysis and the output component.
- input and output parameters can be used more than once.
- a frame grabber for example, can pass the image to multiple components for image processing. Besides this, many components can be connected to a viewer, for example, to display data.
- the first rule to select connections uses the category of the components. Based on general rules that describe which categories can be connected, the initial candidate connection list is determined. Rules used in this context would be, for example, that a viewer is connected to an input component, or an image inspection component is connected to a viewer. These global rules are available for the connector only and are typically not provided by the components. They represent general knowledge about components and applications. The rules can be loaded when the connector is invoked, can change during run time, and can be adapted, for example, depending on the field of application (e.g., industry or medicine), or the user.
- the field of application e.g., industry or medicine
- connection candidates that do not fulfill given type rules are removed from the list. Examples for these rules are, that a weaker type can be connected to a stronger type (e.g., an integer can be passed to a floating point value), or that equal types can be connected.
- consistency of connections with the application are examined. This includes consistency of execution, data, and information flow. This is a global graph analysis which checks for cycles, which can lead to infinite loops or blocking. For this, each connection is treated as a directed arc and the components as the nodes of the corresponding graph.
- a special case are components which implement a specific graphical user interface of another component. These identify themselves unambiguously by their use (i.e., the component they belong to) and their identification.
- the rules can be used in combination or separately. Examples for these are: (i) locality: The distance of the positions, where the user placed the component on the desktop. Those, which are closer, have a higher probability to become connected; (ii) the order of selection: Those components, which are selected one after the other have a higher probability to be become connected; (iii) application area: The probability of being connected is based on the application area; (iv) user: The system asks the user which connection is preferred; (v) user profile: The system uses information about the decisions the user made in former sessions (learning).
- the component is added to the list of non-connected components.
- a component can also be removed from an application. This can, for example, be done by the user by deleting the component. In this case all connections to and from this component are removed. After this, the remaining components might have to be reconfigured. In the case, that the removed component provided input for other components, these are reconnected, if possible.
- the information about the connections can be stored by the connector.
- This information can preferably be reloaded when the application is reactivated, either in design or user mode. By this, ambiguities can be minimized, even if the application is modified. From this, also general rules for the configuration can automatically be learned by the system. This can be accomplished using the learning methods known from artificial intelligence.
- the components are to be combined by adding programming statements to the application. These programming statements must include information as to how to pass data from one component to the other, and as to how to specify the order in which the components are executed; to make use of data, e.g., regions of interest, the user must add data components to the application and connect these to the other components by programming source code.
- the present invention provides an architecture of object oriented components which fulfill the following requirements.
- Each component comprises a description that specifies its behavior. This description is available in a form in which it can be processed by the component in all its modes of operation. It can consist of - but is not limited to - information about: number of input and output parameters; types of input and output parameters; category; name; description; assertions; and restrictions.
- the selection of a component by the user invokes an automatic configuration process.
- This process can be controlled by a single component which has information about all other components or by any component based on the information provided by the component to be added to the application.
- the automatic configuration consists of the following steps: (i) Connection of the components: Each component is connected to other components that either provide input data or require output data of the component. This connection can either be direct (component to component) or indirect (through a sequence of components).
- the execution method comprises sub-methods which are used depending on the operation mode of the application, the interactions of the user, and the input of data.
- Sub-methods are, for example, be invoked by the availability of input data (e.g., acquisition trigger signals, image grabbing, or other input channels). In this case, all components that require this input data and their dependent components (i.e., components that require results of the component) will be executed.
- sub-methods are be invoked by the user interaction with the input data (e.g., the image). In this case, all components that can react on this kind of user interaction will be executed with the data which was manipulated together with the information of the interaction (e.g., mouse coordinates).
- a further example is the changes to the parameters of a component by the user. In this case the component - together with all its dependent components - is executed again.
- the execution method preferably changes automatically depending on the operation mode. For example, in a configuration mode the calibration components will be executed and in an application mode components which adapt parameters according to changes of the input data will be executed. Furthermore, components can be executed in parallel.
- the configuration process described above has the following properties. It can be executed repeatedly (reconfiguration), e.g., by introducing additional components to the application or by changing the status of the application. A change of the status can be invoked from the outside (by the user or by input of data) or internally by the system. Furthermore, both configuration and reconfiguration can be performed during design time and during program execution.
- the execution method is automatically determined. This saves time and guarantees that no programming errors are introduced. Besides this, different execution methods can be used without extra programming effort.
- the multiple execution methods make the use of the application very intuitive, because the application automatically supports a standard execution method but can switch automatically to methods that handle user interactions.
- the system can inform the user whether a meaningful set of components has been selected, i.e., whether they can be connected to an application, or whether important components are missing.
- the components of the invention automatically generate and manage the data that is processed. This saves time, guarantees that all needed data is available, and that no programming errors are introduced. In addition, it is very easy to change the number of used data (like regions of interest) because no reprogramming is required.
- Components can act as graphical user interfaces for other components. This enables an easy generation of those parts of the graphical user interface that are required.
- a component can have multiple graphical user interfaces. This enables the user to develop an application, where the graphical user interface can be adapted optimally to the needs of the user, and as an extension to this, the application can dynamically change the graphical user interface to adapt itself to the requirements of its use.
- the user mode is subdivided into sub-modes. This allows to change the behavior of the application easily, by switching to the appropriate sub mode.
- Typical modes can, e.g., be supervisor mode (e.g., full access to all features of the application), configuration mode (e.g., access to all features which are needed to adapt the application to a new object that has to be measured), or application mode (executing the application with minimal interactions and feed back). This makes the application much more adequate for the requirements of the industry.
- Each component contains a description that is sufficient to make full use of all features of the component. This is the basis for their use without the need of programming.
- Each component automatically has access to all other components of the application. This allows, for example, to easily control the behavior of the application.
- the invention uses data elements that combine the raw data with a description. This allows a much more flexible use of the data. For example, data passing to other components which need this data can be realized without having methods implemented for this specific data type.
- Standard systems based on object components distinguish between two operation modes: Design mode and user (execution) mode.
- Design mode the components are selected, programmed, and configured by the user.
- a (single) selected component can also be executed in design mode. Only in user mode, the complete application is executed.
- the present invention provides the following preferred improvements:
- the standard user mode is subdivided into multiple sub-modes. Depending on the sub-mode, the application changes its behavior and/or graphical user interface. Examples for user modes would be a configuration mode where parameters can be adapted, and application mode where only restricted changes of the application are allowed. These sub-modes can also be used, e.g., to automatically invoke calibration components in the configuration mode or adapt the user interface depending on the user level.
- the standard mechanism of component-based application development is to save the properties that are specified in the design mode and integrate them into the application code, where they no longer can be adapted and saved in the same way. If a system wants to save and reload values in the user mode, this must be implemented using a mechanism different from the one used in the design mode.
- save and load mechanism does not distinguish between the design and the user mode.
- the standard mechanism of handling data structures like images or regions of interest is to treat them as a component. This means that the user must apply programming to connect these data structures with the other components. In addition, the user either must know in advance how many data elements will be required during execution or the programming will become even more complex. With the method of this invention, the components automatically generate and manage these data structures. The user does not need to worry about their number, their generation, or destruction. If needed, the data can also be saved and loaded automatically by the mechanism described above.
- the standard mechanisms to pass data between components have the following restrictions:
- the data is passed unidirectional, i.e., a component provides data that is used by another component, but results are not passed back.
- the second point concerns data descriptions and data handling. So far, data structures with predefined contents are used. This allows only a restricted flexibility when handling these data structures.
- data can be passed in both directions, i.e., a caller provides input data for a component.
- a component can pass data on to a successor or send data back to the caller.
- a component can also send data to another component that is not directly connected to it.
- the present invention uses data elements which combine the raw data (like the image matrix) with an abstract data description.
- Examples for typical data are images, affine transformations, points, calibration data, strings, coordinates, features, measurements, or polygons.
- Data is always attributed with a description. The description is designed in a standardized way so that each component can interpret it. Methods to implement these descriptions can be found in the literature. The description is used to enable components to access the data they require. Besides this, data can be manipulated by components based only on this description. The data passed between components can be an (ordered) set of data elements.
- a component like a scheduler can, for example, check the type of the data that is available and pass it on to components that can process this data type (the information can be accessed through the description of the components).
- the data description can also be used during the configuration process (see connector) to check which parameters of components are compatible with respect to the data types.
- the standard mechanism in component-based application development is that a component has a given graphical user interface which can be configured in design mode.
- a component preferably has multiple user interfaces. These are selected depending on, e.g., the needs of the user. This offers two possibilities for the user. In the most simple case, an interface is selected that best fits the needs of a specific group of users. An image processing expert wants, for example, full access over all parameters. For more complex applications, multiple graphical user interfaces must be integrated into one program. An experienced user will need access to the image processing parameters during system setup. When the application is running in the "every day mode", only one button for start and stop and a red or green "light" for the system status might be needed. The application can, for example, be generated by activating the different sub-modes in the design mode. Depending on the mode, the graphical user interface will be configured. In the user mode, only the sub-mode has to be activated to switch between the different user interfaces.
- the present invention will be explained in further detail below while referring to the drawings, wherein:
- Fig. 1 shows a block diagram of an embodiment of the invention
- Fig. 2 shows an example after the activation of the components (lower left side);
- Fig. 3 shows the example of Fig. 2 after the selection of a viewer
- Fig. 4 shows the example of Fig. 3 after the selection of frame grabber component
- Fig. 5 shows the example of Fig. 4 with the viewer with the online image
- Fig. 6 shows the result of placing the zooming component onto the form of the example shown in Fig. 5;
- Fig. 7 shows the application in user mode;
- Fig. 8 shows the result of selecting the bar code reader; and
- Fig. 9 shows the application in user mode.
- the embodiment of Fig. 1 consists of a unit to input the image by means of the frame grabber 12 and the grab image component 1.
- This image is connected to the viewer 2 which displays the image, and overlays regions of interest and results of the image processing components. Besides this, it manages the data, and passes it on to the other components.
- a calibration component 3 Directly connected to the viewer 2 are a calibration component 3, a change detection component 4, and a zooming component 5.
- the image processing part consists of two sequences. The first one consists of only one component, i.e., a measure component 6. The other one is a blob finder 7, connected to a feature extraction component 8, which is connected to a feature display component 9. The results of both image processing parts are output by the output component 10.
- a connector 11 performs the connection control between the various activated components.
- the connector 11 is provided for automatically establishing connections between the components selected by the user. Displaying data and user interaction
- the system according to the present invention has at least one special component (i.e., the viewer) that has three major tasks.
- the first task is to display input data like images, and to display the results of other components. These results are typically derived from the input data. Whenever a new image is grabbed, it will be displayed in the viewer 2. Then the image is passed to the image processing components. Data they extract in the image (like edges, lines, coordinates, distances, or polygons) is passed back to the viewer 2, which overlays this data on the image, with the visualization depending on the type of the data.
- the advantage of this feature is that only one display is required for images and results, which saves space on the screen. Besides this, the graphical user interface becomes more intuitive and the information can be perceived faster, because corresponding data is presented together.
- the second task of the viewer 2 is to control other components. Based on the descriptions of the other components used in the application, the viewer 2 can act as a global control unit. It accesses information like the component names, supported type of region of interest, or data types that can be processed. Based on this information, it can automatically generate a graphical user interface. To control general properties of other components, the user only needs to interact with this graphical user interface. Based on these interactions, the viewer 2 sends messages to the corresponding component.
- the third task of the viewer is to provide other components with additional data like regions of interest: Based on the type information, the viewer knows about the kind of input data that other components can process. This is used to generate regions of interest that fit to a component. These regions of interest can be manipulated in the graphics window of the viewer by overlaying them on the image data and modify or generate them using, e.g., mouse interactions. When a component is executed the corresponding regions of interest are combined with the image and passed as input.
- a category is a set of components that have a similar behavior.
- a category is used, e.g., to generate the execution method for the application, or to connect components.
- Viewer Displays input data and overlays it with regions of interest and results of other components.
- Meta components Display the overall structure of the application, display the control flow statically, and, during execution, display used resources and execution time.
- Input Input of image data and data from other sources like serial interface or digital I/O.
- Calibration Calibration of the vision system and the input devices, like geometric calibration or radiometric calibration.
- Change detection Changes in the input data (like illumination or positions of reference objects) are detected and the change information is passed on to other components.
- a component can simply be a graphical user interface that is used in combination with another component which does the data processing. Such a component allows the (partial) control of the functionality of the component.
- a component preferably has multiple user interface components which can be selected, e.g., depending on the user, or the user mode.
- Image processing The components have iconic data as input (e.g., images, regions, or polygons) and output iconic and/or numerical data.
- the execution of the application has three methods - but is not restricted to three - which are triggered by the interactions of the user or input from other devices; (i) driven by input data (e.g., external trigger, image grabbing, or other input channels): In this case, all components that require this data will be executed. This is done to execute all components according to an automatically generated schedule.
- This sequence of executions can either be passive (triggered from the input) or active (requesting data, e.g., from the frame grabber); (ii) user interaction with the input data (e.g., the image): In this case, all components, that can react on this kind of user interaction will be executed with the data, that was manipulated together with the information of the interaction.
- the user moves the mouse in the graphics window of the viewer, that displays an image.
- This interaction results in the execution of all components, that can process images in combination with a point (e.g., a component for zooming); and (iii) the user changes the status (parameters) of a component: In this case the component - together with all its dependent components - is executed again. If the user changes, e.g., a threshold of the blob analysis, the scheduler will execute the blob analysis, that then generates a new segmentation which can be overlaid on the corresponding image in the viewer.
- the scheduler is that part of the invention which specifies the order of the execution, manages the data, passes the data between the components, and executes the components. There are three major ways to implement the scheduler:
- the scheduler is a component which is connected to all other components.
- this component implements the features of the scheduler.
- the scheduler is a software module like the connector. This module is connected to the components when they connect to the connector. Based on these connections, the scheduler can realize the features of the scheduler. With this implementation, the user does not have to add a scheduler component to the application, which makes the use of the system easier. In this case, the scheduler would be linked (in terms of compiler technology) to the connector.
- the scheduler is described among the components.
- the functionality specific for a component is part of the component. This can be implemented by offering a library which is used when a component is implemented. This approach is slightly faster than the other two because less communication is required. It is the implementation used in a preferred embodiment of the invention.
- the standard execution method corresponds to the first of the above described method. It is based on a set of rules that are applied to all components in a given order. The user does not have to worry about this configuration process.
- Main loop The scheduler executes the components in a given order. It starts with the components that input data (e.g., grab an image). Whenever these components provide new data, all directly and indirectly dependent components are executed. Once through the sequence, the process starts from beginning. This restart can be invoked either by an external event, like a trigger signal or by actively requesting the data. In both cases, the system has to wait until the data is available to restart the standard execution sequence. Whenever there are interactions caused, for example, by the user, the system can switch to one of the two other execution methods described above. This switch can happen, when the system reaches the end of an execution sequence. This ensure that only consistent results are calculated.
- Input of data The first action is to grab the image or access other external data. This input can be invoked actively, or by an external signal. In Fig. 1 , component 1 is executed.
- the image will be displayed. Optionally, it can be overlaid with regions of interests or the other (input) data.
- component 2 viewer
- Primary vision loop Depending on the execution sub-mode, specific preprocessing components are executed.
- Vision loop The scheduler combines the data from the primary components (e.g., calibration data 3 or change detection 4) with the image. Then a loop for all connected vision components is started. This means that each directly connected vision component is provided with information and then started. As a consequence, all successors of the component will also be executed. For each directly connected vision component the scheduler has a list of regions of interest. This list is also added to the image data.
- the primary components e.g., calibration data 3 or change detection 4
- Successor In the case that a component has a successor, it will pass its input data, combined with its results, on to the successor, and executes it. If necessary, the component can modify the input data before it is passed on to the successor. This process is repeated until all successors are executed.
- Vision results Whenever a component calculates results, they can be passed back to the viewer, where they can be overlaid with the image and other data displayed so far. This way of displaying results works independently of the component being directly connected or not.
- Non-iconic results Data like areas, distances, or text is also passed back to the scheduler. Here, it can be collected until all results are available.
- Control messages It might be necessary that a component controls hardware, e.g., a frame grabber. In this case, the component can send a message that generates the desired action back to the scheduler.
- Fig. 1 two sequences are available.
- the first sequence consists only of the measure component 6. This is executed first.
- the results of the measurement are passed back to the viewer 2.
- the second sequence consists of components 7, 8, and 9. They are executed in this order.
- the results are passed back to the viewer 2 by the last component 9, i.e., feature display of the sequence.
- Output After all vision components are executed the result data is available at the viewer 2. Therefore, it is passed on to all connected output components. In Fig. 1 , one output component 10 is connected.
- the user can influence the execution method.
- the user interacts with the data visible in the viewer: In case the user points or clicks on input data like an image, the viewer collects these events as long as the execution is in the standard execution method.
- the scheduler finishes the standard execution sequence, the interactions are examined, and, e.g., duplicates eliminated. Then, all components that can process this kind of data are executed with the data currently available, combined with the mouse positions and button press data. After that, the scheduler can proceed with the standard execution method.
- Fig. 1 one component that can process mouse interaction is connected, namely zooming component 5. It will be executed in this case.
- the user interacts with any component, for example, by changing image processing parameters. Whenever this happens, the component informs the scheduler that the component has to be re-executed. The scheduler holds a list of the components that have sent this request. When the standard execution sequence is finished, this list is processed. This means that all sub-sequences that contain a component of the list are re-executed. As an example, the user interacts with the blob finder 7 in Fig. 1. This results in a re-execution of the components 7, 8, and 9.
- the execution methods described above are only preferably used. They are not necessary, for example, for applications that are time critical. Furthermore, it is possible to process the components with new data, for example, from the frame grabber, instead of using the old data.
- a root class which implements basic data structures and methods that are common to all components, is used. This class is used as an interface for all components. This guarantees that all components have the same basic functionality.
- the root class can implement all the functionality that are common to the components of the invention.
- one class for each category that is derived from the root class is implemented. These classes implement data structures and methods that are specific for the categories. These classes are used as an interface for the components belonging to a specific category.
- each component is derived from the class of one category. This guarantees that a component implements all features that components have in common and besides this have the specific features of the category.
- the following example describes the development of a typical application that grabs the images from the camera, displays these images in a viewer, checks for bar codes in the image, reads the codes, and passes the results to a serial interface.
- an online zooming is added to inspect the images.
- the user double-clicks the icon of the viewer. This generates an instance of this component which is automatically placed into the form of the application that is being developed (see Fig. 3).
- the size, the position, and other properties of the viewer can be changed by the user. This can be done by manipulating the viewer with the mouse (e.g., position and size) or by changing the properties directly (e.g., by using the property page at the lower right side of the window).
- the initialization routine of the component is executed and after this the component is drawn on the form.
- the component calls the registration routine of the connector 11. It passes a reference to itself as a parameter to the connector.
- the connector 11 Because the connector 11 is called for the first time, it initializes its data structures. Using the reference to the component, the connector can access the description of the component. It first checks whether the component is an input component. Because the viewer 2 is not an input component, it will be put into the list of not connected components. The list of connected components remains empty. Therefore, the single viewer component does not implement an application.
- the user selects the frame grabber component 12 by double clicking its icon.
- the component is placed on the form.
- the user adapts the size, the position and other properties interactively. The result of these actions can be seen in Fig. 4.
- the frame grabber component 1 When the frame grabber component 1 is placed on the form it calls the connector 11 (like the viewer 2). By passing a reference to itself to the connector, the automatic connection process is invoked. The connector first checks for the category of the component. Because this category is "input", the frame grabber 1 becomes the first component of the application. So far the component has no connections. As the second step, the connector re-examines the components in the list of not connected components. Here, only one component is available: the viewer. Now all rules for connecting parameters are tested. In this case the frame grabber is connected to the viewer because:
- the frame grabber 12 is connected to the viewer 2 and also the viewer 2 is connected to the frame grabber 12 This means that both components get a reference to the other component. Using this reference, they can exchange data and call routines of each other.
- the user adds an online zooming component 5.
- the actions are the same as those of the previous two components.
- the zooming component is then connected to the viewer because the category of the zooming component is "inspection", inspection components can be connected to view components, the input data type of the zooming component is "image”, and the viewer provides the output data type "image”.
- the zooming component displays the part of the image in which the mouse is located.
- two actions are important for the online zooming: Whenever an image is passed to the viewer (from the frame grabber), it will automatically be passed on to the zooming component. Furthermore, if the user interacts with the mouse in the display of the viewer, the zooming component will be called with the image and the mouse coordinates.
- Fig. 6 shows the result of placing the zooming component onto the form. Besides this, the effect of moving the mouse in the viewer is visible.
- Fig. 7 shows the application in user mode.
- the user presses the run button of the Visual Basic environment to execute the application in user mode. This starts the program as a stand-alone application.
- the user can interact with it in the normal way (editing frame grabber parameters, displaying the image in the online zooming component). Finally, the user stops the application and returns to the design mode. Changes applied to the application in the user are again available in the design mode.
- Fig. 7 shows the application in user mode.
- Fig. 8 shows the result of selecting the bar code reader.
- the bar code reader is a vision component
- a graphical component is added to the application to create and edit regions of interest.
- the region of interest component is connected to the viewer, because:
- the viewer After the component is connected, the viewer provides information about all components that depend on the viewer to the new component. From this information, the following is selected:
- the dialog is configured accordingly.
- the user presses the run button.
- the region of interest for the barcode reader is specified.
- the application is automatically executed and the bar code reader is executed with the specified region of interest.
- the component will be re-executed with the new parameters.
- the frame grabber provides new images, the viewer displays the image and executes the zooming and the bar code component.
- the types of regions of interest that are supported by the component can be selected. By choosing one of these, the user can interactively generate a region of interest in the viewer. This region of interest is stored with the viewer, together with the information about the component it belongs to. Whenever the component is executed, in the given example the bar code reader, the region of interest will be combined with the image automatically when the image is passed to the component.
- Fig. 9 shows the application in user mode.
- the region of interest component (left center) the component "1 D Barcode" and a rectangular region of interest type is selected.
- the generated region of interest is visible as, e.g., a red rectangle in the viewer.
- the bar code component (upper left) the result of the decoding is displayed.
- the region corresponding to the code is displayed as, e.g., a blue border in the viewer. This is accomplished by passing the segmentation result back to the viewer and overlaying it to the image. Saving the application
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Stored Programmes (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001565130A JP2003526168A (en) | 2000-03-08 | 2001-03-06 | Method and system for developing an image processing application |
EP01909821A EP1269413A1 (en) | 2000-03-08 | 2001-03-06 | Method and system for developing image processing applications |
AU37432/01A AU3743201A (en) | 2000-03-08 | 2001-03-06 | Method and system for developing image processing applications |
US10/220,940 US7450119B2 (en) | 2000-03-08 | 2001-03-06 | Method and system for developing image processing applications |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP00104933.7 | 2000-03-08 | ||
EP00104933A EP1132863A1 (en) | 2000-03-08 | 2000-03-08 | Method and system for developing image processing applications |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2001067389A1 true WO2001067389A1 (en) | 2001-09-13 |
Family
ID=8168058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2001/002507 WO2001067389A1 (en) | 2000-03-08 | 2001-03-06 | Method and system for developing image processing applications |
Country Status (5)
Country | Link |
---|---|
US (1) | US7450119B2 (en) |
EP (2) | EP1132863A1 (en) |
JP (2) | JP2003526168A (en) |
AU (1) | AU3743201A (en) |
WO (1) | WO2001067389A1 (en) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7020868B2 (en) * | 2000-11-22 | 2006-03-28 | General Electric Company | Graphic application development system for a medical imaging system |
US7557964B2 (en) | 2002-03-29 | 2009-07-07 | Infoprint Solutions Company, Llc | Methods, systems, and media to calibrate a reprographic system |
US8411151B2 (en) | 2002-03-29 | 2013-04-02 | IQinVision, Inc. | System for, and method of, processing an image |
JP4086529B2 (en) | 2002-04-08 | 2008-05-14 | 松下電器産業株式会社 | Image processing apparatus and image processing method |
US20050162651A1 (en) * | 2004-01-22 | 2005-07-28 | Seagate Technology Llc | Automatic optical inspection of components using a shadow projection threshold for a data storage device |
JP2005227897A (en) * | 2004-02-10 | 2005-08-25 | Fuji Photo Film Co Ltd | Method, device, and program for image display |
JP2011142378A (en) * | 2010-01-05 | 2011-07-21 | Seiko Epson Corp | Control of apparatus incorporating computer |
JP5181008B2 (en) * | 2010-10-01 | 2013-04-10 | 富士フイルム株式会社 | Automatic processing list creation apparatus, method and program |
US9635069B2 (en) * | 2014-08-06 | 2017-04-25 | Verizon Patent And Licensing Inc. | User feedback systems and methods |
US11173510B2 (en) * | 2019-03-22 | 2021-11-16 | Twenty Twenty Therapeutics Llc | Imaging device for identifying a liquid within a dispenser |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742504A (en) * | 1995-11-06 | 1998-04-21 | Medar, Inc. | Method and system for quickly developing application software for use in a machine vision system |
US5950182A (en) * | 1995-05-25 | 1999-09-07 | Pavilion Technologies, Inc. | Method and apparatus for automatically constructing a data flow architecture |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62100874A (en) * | 1985-10-28 | 1987-05-11 | Hitachi Electronics Eng Co Ltd | Development system for picture recognizing program |
US5940296A (en) * | 1995-11-06 | 1999-08-17 | Medar Inc. | Method and system for interactively developing a graphical control-flow structure and associated application software for use in a machine vision system |
US6496190B1 (en) * | 1997-07-02 | 2002-12-17 | Mental Images Gmbh & Co Kg. | System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system |
US6226783B1 (en) * | 1998-03-16 | 2001-05-01 | Acuity Imaging, Llc | Object oriented method of structuring a software step program |
US6061602A (en) * | 1998-06-23 | 2000-05-09 | Creative Lifestyles, Inc. | Method and apparatus for developing application software for home automation system |
US6256625B1 (en) * | 1998-09-15 | 2001-07-03 | National Instruments Corporation | Video acquisition system including objects with dynamic communication capabilities |
US6389587B1 (en) * | 1999-02-04 | 2002-05-14 | Sun Microsystems, Inc. | User interface for developing and executing data flow programs and methods, apparatus, and articles of manufacture for optimizing the execution of data flow programs |
US6611735B1 (en) * | 1999-11-17 | 2003-08-26 | Ethyl Corporation | Method of predicting and optimizing production |
US6931602B1 (en) * | 2000-12-22 | 2005-08-16 | Cognex Corporation | Approach facilitating the selection of various machine vision functionality from among different platforms |
US7051317B2 (en) * | 2001-06-29 | 2006-05-23 | National Instruments Corporation | System and method for specifying a computer-implemented process using different programming methodologies |
-
2000
- 2000-03-08 EP EP00104933A patent/EP1132863A1/en not_active Withdrawn
-
2001
- 2001-03-06 JP JP2001565130A patent/JP2003526168A/en active Pending
- 2001-03-06 WO PCT/EP2001/002507 patent/WO2001067389A1/en active Application Filing
- 2001-03-06 US US10/220,940 patent/US7450119B2/en not_active Expired - Fee Related
- 2001-03-06 EP EP01909821A patent/EP1269413A1/en not_active Ceased
- 2001-03-06 AU AU37432/01A patent/AU3743201A/en not_active Abandoned
-
2011
- 2011-05-02 JP JP2011102778A patent/JP2011165208A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5950182A (en) * | 1995-05-25 | 1999-09-07 | Pavilion Technologies, Inc. | Method and apparatus for automatically constructing a data flow architecture |
US5742504A (en) * | 1995-11-06 | 1998-04-21 | Medar, Inc. | Method and system for quickly developing application software for use in a machine vision system |
Non-Patent Citations (4)
Title |
---|
CLOUARD R ET AL: "BORG: A KNOWLEDGE-BASED SYSTEM FOR AUTOMATIC GENERATION OF IMAGE PROCESSING PROGRAMS", IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE,US,IEEE INC. NEW YORK, vol. 21, no. 2, February 1999 (1999-02-01), pages 128 - 144, XP000821916, ISSN: 0162-8828 * |
ECKSTEIN W ET AL: "Architecture for computer vision application development within the HORUS system", JOURNAL OF ELECTRONIC IMAGING, APRIL 1997, SPIE-INT. SOC. OPT. ENG, USA, vol. 6, no. 2, pages 244 - 261, XP000885335, ISSN: 1017-9909 * |
KÖNIG A ET AL: "A GENERIC DYNAMIC INSPECTION SYSTEM FOR VISUAL OBJECT INSPECTION AND INDUSTRIAL QUALITY CONTROL", PROCEEDINGS OF THE INTERNATIONAL JOINT CONFERENCE ON NEURAL NETWORKS. (IJCNN),US,NEW YORK, IEEE, vol. -, 25 October 1993 (1993-10-25), pages 1243 - 1246, XP000499888, ISBN: 0-7803-1422-0 * |
TORIU T ET AL: "AN EXPERT SYSTEM FOR IMAGE PROCESSING", FUJITSU-SCIENTIFIC AND TECHNICAL JOURNAL,JP,FUJITSU LIMITED. KAWASAKI, vol. 23, no. 2, 21 June 1987 (1987-06-21), pages 111 - 118, XP000022980, ISSN: 0016-2523 * |
Also Published As
Publication number | Publication date |
---|---|
EP1269413A1 (en) | 2003-01-02 |
JP2003526168A (en) | 2003-09-02 |
EP1132863A1 (en) | 2001-09-12 |
AU3743201A (en) | 2001-09-17 |
US7450119B2 (en) | 2008-11-11 |
JP2011165208A (en) | 2011-08-25 |
US20030039392A1 (en) | 2003-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011165208A (en) | Method and system for developing image processing application | |
US6298474B1 (en) | Method and system for interactively developing a graphical control-flow structure and associated application software for use in a machine vision system and computer-readable storage medium having a program for executing the method | |
US6668370B1 (en) | Synchronous execution of object-oriented scripts and procedural code from within an interactive test facility | |
US5961610A (en) | Systems, methods and apparatus for generating and controlling display of medical images | |
US8370811B2 (en) | Modularizing and aspectizing graphical user interface directed test scripts | |
CA2118201C (en) | Photon windowing kernel | |
US5157779A (en) | User extensible testing system | |
CA2211373C (en) | Learn mode script generation in a medical imaging system | |
US7237199B1 (en) | Architecture for an application framework | |
CA2211369C (en) | Cell overlap detection and correction in a medical imaging system | |
US6741672B2 (en) | K-space based graphic application development system for a medical imaging system | |
US20040264782A1 (en) | System and method for object-oriented graphically integrated command shell | |
US5815712A (en) | System for controlling functions of a target application using controllable objects | |
JP2024506044A (en) | Visual software development system, method, apparatus and computer storage medium | |
Sosič | A procedural interface for program directing | |
Posch et al. | Design and implementation of the Alida framework to ease the development of image analysis algorithms | |
JPH086813A (en) | Trace control system | |
US20130318455A1 (en) | Customizable software platform for x-ray imaging equipment | |
Pustka | Visualizing distributed systems of dynamically cooperating services | |
Koike et al. | Enhancing iconic program reusability with object sharing | |
Fahy et al. | A consistent DIN/PACS workstation interface based on the MUVIP virtual image processing architecture | |
CN117198248A (en) | Destination view display method and system and vehicle-mounted terminal | |
Martin | Visual composition of components | |
Koshy | Towards a graphical deadlock analysis tool | |
Cahill et al. | GUI Development |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 10220940 Country of ref document: US |
|
ENP | Entry into the national phase |
Ref country code: JP Ref document number: 2001 565130 Kind code of ref document: A Format of ref document f/p: F |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2001909821 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 2001909821 Country of ref document: EP |