Home

HDevelop User`s Manual

image

Contents

1. 100 Graphical User Interface lo1x File Edit Execute Visualization Procedures Operators Suggestions Assistants Window Help AAE PON SEBRBB VCP le pales a ow 360 si Operator Window jox B127 Bre y 100 y 139 Enter Operator or Procedure z 20 see m aa variable View m idx Program Listino ioxi Iconic Variables da gt manc gag a len Ml gt Control Variables all auto J user a 4l gt ll oo 4 Figure 5 26 Tiled window layout of HDevelop 5 2 9 5 Organize Windows 88 Synopsis Clean up window area of main window When selecting this item the main window is split into four areas by default all graphics windows are cascaded to fit the upper left quarter the operator window fits the upper right quarter the variable window fits the lower left quarter and the program window fits the lower right quarter The positioning can be adjusted in the preferences see page 65 All other windows that are currently open are cascaded at the center of the main window In this arrangement the four most important windows are placed in a non overlapping fashion to provide maximum accessibility It is therefore the default layout of HDevelop If the full text editor is enabled and the operator window is closed the program window will be stretched to occupy the configured position of the operator window as well The tiled layout is displayed in figure 5 26 5 2 9 6 Cascade Windows i Syno
2. The points mentioned above might cause these two problems e Ifthe second parameter of dev_error_var cannot be derived from the program because no con stant false or true are used but expressions the value will be interpreted as true that means start to use the variable To avoid confusion use only the constants false or true as values for the second parameter e The usage of a variable starts after the first call of dev_error_var ErrVariable true In C this means that all successive lines i e lines below until the first dev_error_var ErrVariable false will have the assignment to ErrVariable This might lead to a different behavior compared with HDevelop if dev_error_var is called inside a loop because here the operators inside the loop before dev_error_var might also use ErrVariable after the second execution of the loop body Therefore Try not to use dev_error_var inside a loop Use it right at the beginning of the program 8 2 Code Generation for C HALCON NET This section describes how to create a HALCON application in C starting from a program developed in HDevelop HALCON can be used together with C based on the NET interface of HALCON A detailed description of this interface can be found in the Programmer s Guide part III on page 83 8 2 1 Basic Steps 8 2 1 1 Export The first step is to export the program using the menu File gt Export Here select the language Cit HALCON NET an
3. abs acos and asin assign atan atan2 band 5 bnot bor break bxor S by catch ceil chr 2 chrt comment continue cos cosh cumul deg deviation else elseif endfor endif endtry endwhile environment exit exp fabs false find floor fmod for gen_tuple_const H_MSG_FAIL H_MSG_FALSE H_MSG_TRUE H_MSG_VOID if ifelse insert int inverse is_number ldexp log log10 1sh max max2 mean median min min2 not number or ord ords pow rad rand real regexp_match regexp_replace regexp_select regexp_test remove repeat return round rsh select_rank sgn sin sinh sort sort_index split sqrt stop strchr strlen strrchr strrstr strstr subset sum tan tanh throw to true try uniq until while xor Table 7 18 Reserved words else endif elseif This operator is similar to the else part of the previous control flow structure However it allows to test for an additional condition The block between elseif and endif is executed if lt condition1 gt is false and lt condition2 gt is true elseif may be followed by an arbitrary number of additional elseif instructions The last elseif may be followed by a single else instruction if lt condition1 gt 236 HDevelop Language elseif lt condition2 gt endif This is syntactically equivalent and thus a shortcut for the following code block if lt condition1 gt sise if lt condition2 gt endif endif while endwhile This is a looping control flow structure As long as the condition is true the body
4. expected Right square bracket expected Unmatched right parenthesis found Unmatched right curly brace found Unmatched right square bracket found Second bar expected Function name expected before parentheses Unterminated string detected Invalid character in an expression identifier detected Parameter expression expected Syntax error in operator expression Identifier operator or variable name expected Syntax error in parameter list Parenthesis expected No parenthesis expected List of parameters in parenthesis expected Wrong number of parameters Unexpected characters at end of line Assign operator expected Expression after assign operator expected Expression in brackets for the insert index expected In for statement after keyword by expression for parameter Step expected In for statement after keyword to expression for parameter End expected In for statement after assign operation expression for parameter Start expected In for statement after for to keyword by expected In for statement after for keyword to expected In for statement assign operation for initializing the index variable expected After for keyword assignment of Index parameter expected In for statement error after by keyword in expression of parameter Step In for statement error a
5. 282 Index Basics 117 beginner 162 Bit Depth 160 boolean 277 boolean operations 229 break 92 236 238 break point 17 74 clear 77 clear all 77 set 77 Browse Examples 19 Browse Examples 47 button 277 C F 265 compile and link UNIX 266 compile and link Windows 266 export of HDevelop programs 9 265 C 9 compile and link UNIX 250 compile and link Windows 250 export of HDevelop programs 249 C 9 export of HDevelop programs 253 255 Calibrate 183 calibration 171 Calibration Assistant 157 calibration plate 167 calibration plate extraction parameters 176 calibration task 166 Call Stack 77 camera parameters 167 Camera Type 160 Cascade Windows 100 catch 71 92 239 catch 239 categories example programs 47 Category 162 channel gray value 89 143 channel number 144 channel selection gray histogram 148 Chapters 117 check box Always Find 201 check box Pregenerate Shape Model 198 check box Shape models may cross the image border 205 Cleanup 53 131 Clear All Breakpoints 77 Clear Breakpoint 77 Clear Graphics Window 79 Clear Variable 131 click 11 clipboard 56 57 Close Assistant 182 190 Close Dialog 158 Close Graphics Window 80 Code Generation 183 208 Image Acquisition Assistant 162 Code generation 249 code generation file 24 image acquisition interface 28 code generation preview 183 209 code lines delete 183 209 code lines i
6. 0 62 Graphical User Interface 5 2 2 11 Preferences Synopsis Set global preferences of HDevelop HDevelop maintains a set of preferences that are persistent between sessions You can customize the ap pearance of HDevelop s user interface syntax highlighting fonts and language as well as its behavior configure the settings of external procedures and change the default visualization settings of the graphics windows Changes to the settings in this dialog are saved automatically without any user intervention The location of the generated file depends on the operating system Windows APPDATA MVTec HDevelop ini UNIX HOME hdevelop MVTec HDevelop ini The dialog provides its own menu with the following entries Import Using this menu entry you can import a selection of preferences which were previously saved using the menu entry Export see below The dialog is displayed in figure 5 11 In the import dialog you can select a file with saved HDevelop preferences default file extension hdp The check boxes allow to import groups of settings selectively They correspond to the categories of the dialog The runtime settings are not persistent and can neither be exported nor imported Export The export dialog is identical to the import dialog Using the check boxes you can specify which settings will be saved to the selected file Reset Selecting this menu entry resets all preferences except the window geome
7. HALCONROOT examples c HDevelopTemplateCOM This project contains a form with a display window HWindowXCtr1 and a button labeled Run Add the file generated by HDevelop to the project in the Solution Explorer Add Existing Item Now the project is ready for execution Run the project and then press the button Run on the form which will call the exported code 8 3 2 Program Structure If the program has been exported using the option Use Export Template the file created by HDevelop contains a subroutine with the corresponding name for every HDevelop procedure except the main pro cedure which is contained in the subroutine action Otherwise the file is exported as a standalone application Iconic input and output parameters of a procedure are passed as HUntypedObjectX and out HUntypedObjectX respectively while control input and output parameters are passed as object and out object respectively The subroutine RunHalcon contains a call to the subroutine action and has a parameter Window which is of type HWindowX This is the link to the window on the form to which all output operations are passed In addition another subroutine is created with the name InitHalcon This subroutine applies the same initializations that HDevelop performs Most of the variables iconic as well as control are declared locally inside the corresponding subroutines Iconic variables belong to the class HUntypedObjectX and control variables belong to obje
8. Interface Library hAcquEye dll 3 2 dies Image Refresh acquire new image at parameter change Extras PM Peraneters I vetiky bean z l sortbyname selection of parameters optional digital_output po P and sorting edge enhancement dse Zl reset parameter sero enen CTA TE pz SA external_trigger False x set parameter automatically flip_horizontal fase El p flip_vertical false y 5 aoe ma a F r gain_boost dasse y ix gain_master fc E AT Pl gamma roo SS AH IT 1 104 9ms Figure 3 8 Device specific parameters example g 2 a 5 y lt o a 28 Acquiring Images with HDevelop Generate Code On the tab card Code Generation the settings made in the other tab cards are turned into executable code The basic structure of the code and the corresponding variable names can be specified Control Flow Initialization Only Generate only code to initialize the image acquisition interface with the param eters specified in the other tab cards and to close it down properly Additional code for image acquisition and processing can be added later Acquire Single Image Also generate code to acquire an image Acquire Images in Loop Also add a loop around the image acquisition code Further image pro cessing can be added inside this loop The image acquisition interface is addressed by a so called handle The variable name of this handle can be specified in the t
9. With the parameter Last Pyramid Level you can select the lowest pyramid level to which the found matches are tracked For example when selecting the value 2 the matching starts at the highest pyramid level and tracks the matches to the second lowest pyramid level the lowest pyramid level is denoted by a value of 1 This mechanism can be used to speed up the matching It should be noted however that in general the accuracy of the extracted position orientation and scale is lower in this mode than in the normal mode in which the matches are tracked to the lowest pyramid level Hence if a high accuracy is desired the parameter Subpixel page 204 should be set to at least least_squares Note that 1f the lowest pyramid level to use is chosen too large it may happen that the desired accuracy cannot be achieved or that wrong instances of the model are found because the model is not specific enough on the higher pyramid levels to facilitate a reliable selection of the correct instance of the model In this case the lowest pyramid level to use must be set to a smaller value The Search Parameter Shape models may cross the image border With the parameter Shape models my cross the image border you can specify whether shape models that cross the image border i e that lie partially outside the test images should be searched If you switch off the check box Shape models may cross the image border the shape model will only
10. 215 fol General Features of Tuple Operations lt o o pse 20 058 eee sio 215 732 PSSM ordre 217 tao Basie Tuple CIPera TIOS 2 6 64 2 54 24458 25 482 804 ehhh e SA 219 Tos WupleWregman summer AAA 220 Tas Basie Artunelic Operations 0 san AR E Ee ees 222 TOM BCOBersto S 226 dosis AR ESR AA 223 Tad EME OpPeranene 2 beh beh D eee hs BSS ee See She lt 4 223 7 38 Comparison Operations gt s s ss sesed ee reap a eG 228 232 Boolean Operations 4 6 54 sesed oe a eee hes 229 7 3 10 Inponometrie Puncuons s ooo aras ea Be EGG ee 230 2 311 Exponential Punctions o e ssc 448 4 bob A ea ae ee 230 7 3 12 Mumencal Functions cocer a e e a y Boe A EA oe 231 7 13 Miscellaneous Pumctions ocio 232 Tal perio Precedence cis walk ADS Eee ES a E 233 TO RESCUE Words os cono che SRR EERE ES RR SERRE Ow REE ERG 233 Control Plow Operators cos 5b bt RA be ew Peete eee bd Saw eA 233 Te Eno adm ooe 00 ee ok AY REE Oh BE ER RE RES 239 7 8 1 Tracking the Return Value of Operator Calls 240 78 2 Exception Handling sk eG ak RR ER SS ee 240 7 9 Summary of HDevelop operations eee ee eee 242 7410 Develop Error Codes p kk ae Re ER RSS a eS 245 Code Export 249 Sl Code Generation tort es koe eee OR ES RE aR Ge Re eS 249 Sel Dame septs 6 oraraa e ESSE SHAE BALERS SE eS 250 12 OpUMNSANON skye eG Re A EE aR 251 Sko Mad ChE kode Hae BH ed poe ADaeGaedie ede dys 251 8 1 4 Limitations and Troubleshooting
11. All images from files will be displayed with their path on the Calibration tab whereas images ac quired using the Acquisition Assistent will be displayed with their consecutive numbers Furthermore the image status gives information about the quality of each image Details concerning quality can be found under Quality Issues If you use the Image Acquisition Assistant and want to see a live image you can also activate Live Image on the Calibration tab and click the Snap button whenever you want to keep an image for calibration If you Load images from a file into the Calibration Assistant and then decide to acquire new images with the Image Acquisition Assistant you will be warned that the images from the file will be removed from the window With the Remove and Remove A11 buttons on the left you can remove either one or all images of the list The Save and Save A11 buttons will save one or all images of the list Click Update to control the time when camera parameters segmentation parameters or quality adjustments shall be transferred for the existing images Activate Auto Update to automatically update to the latest adjustments Quality Issues are updated with a little delay af ter adapting Calibration Plate Extraction Parameters page 176 Deactivating Auto Update enables you to change several parameters at once and speeds up the processing bigger data sets O Select a Reference Image With the pose of the calibration plate in the referenc
12. Figure 5 52 Keywords and associated HALCON operators Bookmarks This tab card lists all user defined bookmarks You can add the currently displayed document to the list by clicking the button Add To remove a bookmark from the list select it and click the button Delete Help Window Tool Bar Icons Go back in the browse history E Go forward in the browse history Go to the starting page of the HALCON Reference Manual 2 Increase the font size of the help window Decrease the font size of the help window YY Add the currently displayed document to the tab card Bookmarks Open the operating system dependent printer selection dialog to print the currently displayed page 5 9 Zoom Window 143 i If the currently displayed document is the reference page of a HALCON operator select this operator in the operator window Syntax The online pages of the HALCON Reference Manual are available for the language interfaces HDevelop C C NET and COM The displayed variant can be selected through this list box Find Enter a word or substring to find it in the currently displayed document The first match is high lighted as you type If no match is found the text field blinks shortly You can use the cursor keys down and up to highlight the next match or the previous match respectively Alternatively you can use the following two buttons Next Highlight the next match Prev Highlight the previous match Special
13. Graphical User Interface the newly created procedure body initially contains only the return operator By default a local procedure is created If you want to create an external procedure instead you have to disable the check box Local and optionally specify chapter and subchapter Additionally you can select the path the procedure is stored in which by default is the first path specified in the preferences see section External Procedures gt Directories on page 66 The section Protected External Pro cedures on page 123 shows how to protect an external procedure by a password so that only authorized persons can view and modify it When creating a new procedure from selected program lines HDevelop automatically determines suit able interface parameters for the procedure from the usage of the variables in the selected code The combo box Selection Scheme determines the suggestion of the procedure parameters The meaning of this selection is as follows Only In Ifthe first use of a variable inside the selected lines is as an input variable it will be suggested as an input parameter of the procedure Only Out If the last use of a variable inside the selected lines is as an output variable it will be sug gested as an output parameter of the procedure A11 In All input variables inside the selected lines are suggested as input parameters in the procedure All Out All output variables inside the selected lines are sugge
14. Note that if you have chosen a very large angle extent and scale range you may find it useful to switch off the complete pregeneration page 198 of the model Depending on the specified parameters the most efficient matching method is used This method deter mines how the shape model is created in the generated code e Unscaled matching This method is used if all four scale factors are equal to 1 0 e Scale invariant matching This method is used if all four scale factors are equal but not 1 0 or locked e Anisotropic scale invariant matching This method is used if none of the above applies Specifying Advanced Model Parameters In most applications specifying the Standard Model Parameters page 192 will already suffice The menu item Create Model gt Advanced Model Parameters provides additional parameters that let you handle special cases like changing the contrast polarity or enable you to further optimize the model The following parameters can be specified in this dialog e the Angle Step at which the model is created e the scale steps at which the model is created e whether to use the polarity of the contrast Metric in the model e whether to optimize the model page 198 by using a reduced number of points e whether to pregenerate the model completely page 198 and e the Minimum Contrast page 198 points must have in a search image to be compared with the model The Model Parameter Angle Ste
15. P El WindowHendle WindowID window integer ok repae Cancel try parameters open online help submit edited program line Figure 5 29 Editing a program line in the dialog based editor e The program line is highlighted in a slanted font This serves as a reminder that you are altering an existing program line instead of adding a new one e The operator or procedure call of the program line is displayed in the operator window and can be edited there e The window title of the operator window clearly indicates that you are editing an existing program line It also displays the procedure name and the line number e Clicking OK or Replace in the operator window will replace the original program line This is even the case if the corresponding program line is no longer in view e g if a different procedure is selected in the program window If the program line is deleted before the changes are committed in the operator window the edited line will be inserted as a new program line at the IC If you are in doubt about the current status check the window title of the operator window g cs ral o E 2 D 0 Figure 5 29 illustrates the editing process Copy Paste Delete Besides editing the parameters of a single operator or procedure call single and multiple lines can be deleted cut or pasted in one step using simple mouse functions To use this feature you select one or
16. e If the parameter is read only its value is displayed but cannot be modified e For action parameters the corresponding action can be triggered by clicking the Apply button The third column is reserved for numeric parameters It contains a slider to quickly alter the parameter value within the defined range Please note that low level error messages are suppressed while dragging the slider If the minimum value is below 10000 or the maximum value is above 10000 or no range is defined at all no slider is displayed The fourth column contains a reset button for editable parameters Click 1t to reset altered parameters to their default value 6 1 4 Tab Code Generation Synopsis Preview generate HDevelop program lines The settings made in the tab cards Source Connection and Parameters can be distilled to program lines that perform the desired image acquisition in your current program The fields in this tab card specify the code generation details You can preview the code lines in the panel Code Preview This panel can be toggled between hidden and displayed state by clicking the button next to the panel label Acquisition The settings of this section are available 1f images are acquired from an image acquisition interface Control Flow The initialization code for the selected image acquisition interface is always generated setting Initialize Only It opens a connection to the specified image acquisition device and sets 6 1
17. normal operators the input is made in the operator window by specifying both parameters Input and Result i e right and left side of the assignment An instruction in C e g xX y 2z is declared inside the operator window as assign y z x and displayed in the program window by xX y z The operator insert implements the assignment of a single value tuple of length 1 at a specified index position of a tuple Thus an array assignment here in C syntax ali v is entered as insert a v i a in the operator window and is displayed as afi v cs ral o E 2 a a 5 0 94 Graphical User Interface in the HDevelop program window Program termination The operators stop and exit are used to terminate the program More precisely stop interrupts an execution and exit terminates HDevelop Having interrupted the execution you may continue the pro gram by pressing Step Over or Run This is useful e g in demo programs to install defined positions for program interruption Under UNIX you can use exit in combination with a startup file and the command line switch run Thus HDevelop will not only load and run your application automatically but also terminate when reaching exit Comments The operator comment allows to add a line of text to the program This text has no effect on the execution of the program A comment may contain any sequence of characters 5 2 6 2 Develop Syno
18. HALCON the Power of Machine Vision HDevelop User s Guide 9 01 EC Mi MVTec Software GmbH Building Vision for Business HDevelop the interactive development environment of HALCON Version 9 0 4 All rights reserved No part of this publication may be reproduced stored in a retrieval system or transmitted in any form or by any means electronic mechanical photocopying recording or otherwise without prior written permission of the publisher Edition 1 July 1997 Edition 2 November 1997 Edition 3 March 1998 HALCON 5 1 Edition 4 April 1999 HALCON 5 2 Edition 5 October 2000 HALCON 6 0 Edition 6 June 2002 HALCON 6 1 Edition 6a December 2002 HALCON 6 1 1 Edition 7 December 2003 HALCON 7 0 Edition 7a July 2004 HALCON 7 0 1 Edition 8 July 2005 HALCON 7 1 Edition 8a April 2006 HALCON 7 1 1 Edition 8b December 2006 HALCON 7 1 2 Edition 9 June 2007 HALCON 8 0 Edition 9a October 2007 HALCON 8 0 1 Edition 9b April 2008 HALCON 8 0 2 Edition 10 December 2008 HALCON 9 0 Edition 10a June 2009 HALCON 9 0 1 Edition 10b March 2010 HALCON 9 0 2 EC Copyright 1997 2011 Protected by the following patents US 7 062 093 US 7 239 929 US 7 751 625 US 7 953 290 US 7 953 291 Further patents pending by MVTec Software GmbH Miinchen Germany MVTec Software GmbH Microsoft Windows Windows NT Windows 2000 Windows XP Windows Server 2003 Windows Vista Windows Server 2008 Windows 7 M
19. Image Acquisition Image Acquisition 01 File Acquisition Code Generation Help Bar 2 Source Connection Parameters Code Generation Interface Library hAcgGigEvision dl Rev 4 4 gti 1 0 4 1 Device picsight1 Port fo y Camera File default Es 57 Trigger E I Resolution X Default Y Default y Color Space default Field progressive Bit Depth 1 bad IN isi S O OO O C Display Image Normal y T Show frames per second during live acquisition Figure 3 7 Connection parameters example If the acquisition interface File is selected two buttons become available to select an image file or an image directory respectively The File interface also supports AVI files or sequence files seq The latter are special to HALCON they contain a list of image file names that will be loaded in succession Specify the desired connection parameters and click Connect to establish or update the connection to the actual device The connection status can also be toggled in the tool bar see figure 3 4 on page 24 3 3 2 Acquiring Images Through Image Acquisition Interfaces 27 You can grab single images with the button Snap or switch to continuous grabbing mode using the button Live Live mode can be stopped by clicking the same button again which is now labeled Stop Clicking the button Detect attempts to re detect valid parameters for the curr
20. of the loop is executed In order to enter the loop the condition has to be true in the first place The loop can be restarted and terminated immediately with the operator continue and break respectively see below To enter both while and endwhile at once select the operator while in the operator window and make sure the check box next to the operator is ticked while lt condition gt endwhile repeat until This loop is similar to the while loop with the exception that the condition is tested fOr at the end of the loop Thus the body of a repeat until loop is executed at least once Also in contrast to the while loop the loop is repeated if the condition is false i e until it is finally true To enter both repeat and until at once select the operator until in the operator window and make sure the check box next to the operator is ticked repeat until lt condition gt endfor The for loop is controlled by a start and an end value and an increment value step that determines the number of loop steps These values may also be expressions which are evaluated immediately before the loop is entered The expressions may be of type integer or of type real If all input values are of type integer the loop variable will also be of type integer In all other cases the loop variable will be of type real Please note that the for loop is displayed differently in the program window than entered in the operator window
21. 159 375 107 Region 10 area 1 center 184 111 Region 11 area 23 center 192 478 1 Region 12 area 1 center 208 672 Region 13 area 2806 center 270 67 Region 14 area 1 center 234 277 Region 15 area 3364 center 372 11 Region 16 area 1 center 279 489 Region 17 area 2 center 304 5 152 Region 18 area 4 center 308 5 153 Reninn 19 farea 2411 renter 304 152 4 2 cma Figure 4 7 Interactive inspection of an iconic variable containing regions whenever an image is added that uses the full domain To clear the stack and thus the graphics window manually click the clear icon see figure 3 2 on page 23 4 7 Inspecting Variables When you move the mouse cursor over the variable ConnectedRegions you see that it contains 98 regions Right click on the icon ConnectedRegions and select Clear Display to display only the con nected regions in the graphics window Right click again and select Display Content gt Select This menu entry opens a variable inspection window which lists the contents of the variable ConnectedRegions The selected region of this inspection window is displayed in the graphics win dow using the current visualization settings Set Draw to margin and Shape to ellipse and select some regions from the list An example is illustrated in figure 4 7 For now close the variable inspection window The large number of regions is due to the coarse setting of the bounds
22. 2 Hysteresis threshold Tf there is no single contrast value that selects all significant object pixels without including clutter try using different values for Contrast Low and Contrast High Then pixels are selected in two steps First pixels that have a contrast higher than Contrast High are selected then pixels that have a contrast higher than Contrast Low and that are connected to a high contrast pixel either directly or via another pixel with contrast above the lower threshold are added We recommend to proceed as follows Increase both values using the slider of Contrast Low until no clutter pixels are selected anymore Then decrease Contrast Low to add more object pixels If significant object parts remain unselected decrease Contrast High Note that these parameters are used only to select model points in the model image In the test images the object may have a lower contrast You can also let the Matching Assistant select suitable values automatically based on the model image An additional method for removing clutter is to specify a minimum size for the model components If you cannot find suitable parameter values that exclude the clutter we recommend to create a new model ROI via the menu item Create Model gt Create ROI page 190 194 HDevelop Assistants Letting the Matching Assistant Select a Suitable Value for Contrast When you click the button Auto Select that is placed rig
23. 6 ee ee ee 251 8 2 Code Generation for C HALCON NET 0 0 0 2 020002 eens 253 S 2 1 Baste Sieps gcc hs ee Be a ha ke E e E 253 8 22 Program SUCIOS occiso A 254 8 2 3 Limitations and Troubleshooting s s ce ee sis 255 8 3 Code Generation for C HALCON COM 0 0020 ee eee 255 Sl BARES 4245628286865 225 5bN he eee eee ebb es 256 32 Program SO CUTE i oon yo GE eR A eee OER EE 256 8 3 3 Limitations and Troubleshooting lt s es es cees reens edera 257 8 4 Code Generation for Visual Basic NET HALCON NET 258 Sal Basic Sieps ese be a A ae ew eae ee 258 342 Program SUECO om a a Ge ea ee Re eg 259 8 4 3 Limitations and Troubleshooting o e 259 8 5 Code Generation for Visual Basic NET HALCON COM 260 Sad Bait AS e e oeae AN 260 Sa PORTA SUEUR eei et og Re Ode ee Se ote A 4 261 8 5 3 Limitations and Troubleshooting o 262 8 6 Code Generation for Visual Basic 6 HALCON COM 263 0 0 Basic SIPS scope a go 263 862 Proprant Sucre cocos coa EN EY Dae ee ee 263 8 6 3 Limitations and Troubleshooting 265 S7 odeUenemtion fof E ocios o e A E 265 Stil Basic Steps sc be ia BS la oe ee we a we Be 265 3 General Aspects of Code Generation ss se e sposo RG pe eR eR eS 267 0 1 User Defined Code Blocks oia 26 2444 oY Pa he See Bee SESS 267 O32 ASSIEMMNERE od ee e
24. 94 dev_clear_obj 95 dev_clear_window 79 94 dev_close_inspect_ctrl 95 dev_close_window 80 94 270 dev_display 80 95 137 270 dev_display 270 dev_error_var 96 213 dev_error_var 252 dev_get_exception_data 241 dev_inspect_ctrl 95 134 dev_map_par 95 dev_map_prog 96 99 dev_map_var 95 96 99 dev_open_window 79 94 97 99 270 dev_open_window 270 dev_set_check 73 96 213 240 281 dev_set_check 252 dev_set_color 81 94 96 271 dev_set_colored 81 94 dev_set_draw 81 95 96 dev_set_line_width 81 95 271 dev_set_lut 82 95 dev_set_paint 82 87 95 dev_set_part 88 95 137 270 dev_set_part 270 dev_set_preferences 73 dev_set_shape 82 95 dev_set_window 79 94 270 dev_set_window_extents 80 94 dev_unmap_par 95 dev_unmap_prog 96 dev_unmap_var 95 96 dev_update_pc 73 96 dev_update_time 73 96 dev_update_var 73 96 dev_update_window 73 95 96 Develop 94 Device 160 Dialog based Editor 64 284 Index dialog based editor 106 Directory 115 Disabled 161 Disconnect 160 disp_circle 137 disp_image 137 disp_line 137 disp_region 137 Display 80 Display Grid 138 Display Image 161 Display Image Pyramid 191 Display Model 191 display parameters 176 Display Selected Test Image 201 drag and drop 12 21 Draw 81 149 dump_window 79 89 Duplicate 90 dyn_threshold 98 Edit menu 56 Edit program line 106 Edit Interface 90 Edit menu Activate 57 Cop
25. AcqHandle exposure 99 9248 grab_image_start AcqHandle 1 while true grab_image_async Image AcqHandle 1 Do something endwhile close_framegrabber AcqHandle 3 3 3 Modifying the Generated Code After the generated code has been inserted into the program window HDevelop internally keeps the code linked to the corresponding assistant This link is kept until the assistant is quit using the menu entry File gt Exit Assistant If you close the assistant using the menu entry File gt Close Dialog or using the close icon of the window the assistant can be restored from the top of the menu Assistants c 2 E a 5 y lt o D amp You can change the settings inside the assistant and update the generated code accordingly The code preview will show you exactly how the generated code lines will be updated Furthermore you can delete the generated code lines or release them When code lines are released the internal links between the assistant and those lines is cut off Afterwards the same assistant can generate additional code at a different place in the current program 30 Acquiring Images with HDevelop Programming HDevelop 31 Chapter 4 Programming HDevelop This chapter explains how to use HDevelop to develop your own machine vision applications It is meant to be actively followed in a running instance of HDevelop In the following it is assumed that the preferences of HDevelop are set to t
26. CON windows This HALCON window stack is accessible via class methods and functions in the HALCON interfaces and code exported from HDevelop uses this functionality when opening closing setting or accessing the active window The HALCON window stack mechanism is threadsafe Thus in a multithreaded application every thread has its own window stack In order to avoid memory leaks or similar problems the application must take care to close all HALCON windows opened by a thread before terminating the thread because this is not done automatically by HALCON For the NET and COM code exports it is optional whether to export HDevelop programs as code using the HDevelop export example templates or as code using the previously described HALCON window stack functionality when doing graphics windows output Additionally in the latter case the exported code contains a main function and thus is usable as a standalone application The HDevelop Export dialog allows to select the corresponding option The graphics windows of HDevelop and the basic windows of the HALCON libraries e HALCON C class HWindow e HALCON NET class HWindowControl e HALCON COM class HiindowXCtrl and e HALCON C addressed via handles 270 Code Export have different functionality Multiple windows If you use the operator dev_open_window to open multiple graphics windows in HDevelop these calls will be converted into corresponding calls of open_window only if the e
27. Delete all characters from current position to end of line lt Ctrl gt u UNIX Delete entire input line GUI Navigation lt Ctrl gt lt Tab gt Focus next window and bring it to the front lt Shift gt lt Tab gt Focus the previous window and bring it to the front lt Tab gt Select the following GUI element lt Shift gt lt Tab gt Select the previous GUI element lt Space gt Activate the focused button highlighted with a dashed border lt Up gt Scroll up one line lt Down gt Scroll down one line lt Pg Up gt Scroll up one page lt Pg Down gt Scroll down one page lt Home gt Scroll to the beginning lt End gt Scroll to the end Table 9 1 Keycodes for special editing functions 9 4 Emergency Backup In case HDevelop ever crashes during a program execution an emergency backup is started which saves the recent program status to your hard disk from where you can retrieve it after restarting HDevelop to continue your application 9 4 Emergency Backup 275 HDevelop Error xj Iconic variable is not instantiated 2060 while calling threshold in procedure main line 2 Iconic variable Image is not instantiated Figure 9 1 Example for an error window The exact location of the data depends on the operating system you are using For Linux UNIX you can retrieve your data from tmp hdevelop_ login and for Windows the corresponding path is C X Documents and Settings login Local Settings Temp hdev
28. Develop operator e g dev_open_window instead of open_window within HDevelop 5 2 6 4 Procedures Synopsis Select procedures This menu lists all internal and external procedures in submenus grouped by chapter and section If no sectioning information is associated with a procedure it appears directly in the submenu Selecting a procedure inserts it into the operator window for editing g cs ral o E 2 D 0 98 Graphical User Interface 5 2 7 Menu Suggestions Synopsis Let HDevelop suggest operators based on the current operator This menu shows you another possibility how to select HALCON operators But here they are proposed to you in a different manner It is assumed that you have already selected an operator in a previous step Depending on this operator five different suggestions are offered Suggestions are separated into groups as described below 5 2 7 1 Predecessors Many operators require a reasonable or necessary predecessor operator For example before comput ing junction points in a skeleton junctions_skeleton you have to compute this skeleton itself skeleton To obtain a threshold image you usually use a lowpass filter before executing a dynamic threshold dyn_threshold Using the watershed algorithms watersheds it is reasonable to apply a smoothing filter on an image first because this reduces runtime considerably 5 2 7 2 Successors In many cases the task results in
29. Runtime Settings gt Runtime Settings on page 72 5 2 1 2 Open Program Synopsis Load an existing HDevelop program Checks for Unsaved changes page 156 Shortcut lt Ctr1 0 gt A file selection dialog page 155 pops up to select an HDevelop program Please note that only native HDevelop programs can be loaded Thus text C C Visual Basic Visual Basic NET and C versions of a file are rejected After you have loaded a program the corresponding file name is added to the top of the menu Recent Programs This allows you to quickly switch between recently loaded programs 5 2 1 Menu File 5 2 1 3 Browse Examples Synopsis Load HDevelop example program by selecting it from a categorized list Checks for Unsaved changes page 156 Shortcut lt Ctr1 E gt Selecting this menu item opens a dialog that allows you to load HDevelop example programs grouped by categories The dialog is displayed in figure 5 2 Browsing the Categories The tree on the left contains a structured list of categories Clicking the icon in front of a category toggles the display of its children Alternatively double clicking any category label shows and hides the subcategories while also selecting the node of the tree There can be multiple levels of categories If you select a category all its matching example programs are listed in the area on the right You can select multiple categories by holding down the lt Ctr1 gt key while
30. Runtime Settings gt Runtime Settings on page 72 In any case the values of all variables are shown in the variable window after the execution s termination While the program is running the menu items Run Step Over Step Into and Step Out and the corresponding tool bar buttons are grayed out i e you cannot execute them You have the following possibilities to stop your HDevelop program The program runs until the last operator or procedure call in the current program i e the main procedure body has been called The PC is positioned behind this operator This is the usual way a program terminates The menu Menu Execute gt Stop or the corresponding tool bar button is pressed A break point is reached see section Program Window on page 105 In this case the last operator or procedure call that will be executed is the one before the break point The entry Menu File gt Quit has been executed see Quit on page 55 5 2 3 Menu Execute 75 e A runtime error has occurred An input variable without a value or values outside a valid range might be typical reasons In this case the PC remains in the line of the erroneous operator or procedure call e A stop instruction is executed The PC remains on the line containing the stop instruction Note that stop instructions inside protected external procedures see Protected External Procedures on page 123 are obeyed However the code of the protected
31. also accessible via the menu item Use Model gt Test Images gt Show Test Image Settings the object is searched for automatically whenever you select a new test image Please note that if the matching process is started for the first time or after you changed a model param eter the internally stored model is created which takes some time If the model creation takes a long time i e if you have chosen a very large angle and scale range you may find it useful to switch off the complete pregeneration page 198 of the model Selecting and Displaying a Test Image You can select a test image by clicking with the left mouse button onto its number index or path in the text box of the dialog Test Images of the tab Model Use The selected image is automatically displayed in the graphics window of HDevelop 202 HDevelop Assistants If the checkbox labelled Always Find is checked the matching process is started automatically on the selected test image its result is displayed in the graphics window If you want to redisplay the selected test image in a later step e g after you displayed the model image page 191 again you can also display it via the menu item Use Model gt Test Images gt Display Selected Test Image without newly selecting it Specifying the Number of Objects Visible in a Test Image In the dialog Test Images page 200 in the tab Model Use you can specify how many objects are vis
32. define NO_EXPORT_APP_MAIN only the main procedure is excluded from compilation This can be useful if you want to integrate exported HDevelop code into your application through specific procedure interfaces In that case there is typically no need to export the main procedure which was probably used only for testing the functionality implemented in the corresponding real procedures Besides the program code the file contains all necessary include instructions All local variables iconic as well as control are declared in the corresponding procedures Iconic variables belong to the class Hobject and all other variables belong to HTuple 8 1 1 2 Compiling and Linking in Windows Environments The next step is to compile and link this new program In the Windows environment Visual C is used for the compiling and linking Example projects can be found in the directory Z HALCONROOT examples cpp If you want to use HALCON XL you have to include the libraries halconx1 1ib d11 and halconcppx1 1ib d11 instead of halcon 1ib d11 and halconcpp 1ib d11 in your project see the Programmer s Guide chapter 7 on page 71 for more details 8 1 1 3 Compiling and Linking in UNIX Environments To compile and link the new program called e g test cpp under UNIX you can use the example makefile which can be found in the directory HALCONROOT examples cpp by calling make PROG test Alternatively you can set the variable PROG in make
33. dev_close_inspect_ctrl This is the opposite operator to dev_inspect_ctrl and closes the in spect window This operator is not supported for exported code dev_map_par dev_unmap_par These operators open and close the parameter dialog which can also be opened using the menu Menu Visualization gt Set Parameters This operator is not supported for exported code dev_map_var dev_unmap_var These operators iconify the variable window dev_unmap_var and retransform the iconified window to the normal visualization size respectively dev_map_var This means that the variable window always remains visible on the display in one of the two ways of visualization These operators can be executed with the help of the window manager These operators are not supported for exported code g cs ral o E 2 D 0 96 Graphical User Interface dev_map_prog dev_unmap_prog Analogously to dev_map_var and dev_unmap_var these opera tors iconify or deiconify the program window These operators are not supported for exported code dev_update_window dev_update_var dev_update_time dev_update_pc Using these opera tors you may configure the output at runtime It corresponds to the settings in menu Menu Edit gt Preferences gt Runtime Settings gt Runtime Settings page 72 These operators are not supported for exported code dev_set_check This operator is equivalent to set_check of the HALCON library It is used t
34. furthermore the image should not contain clutter When you select the menu item File gt Open Model Image or press the corresponding button either in the tool bar or in the dialog Model Image in the tab Model Creation a standard file selection box appears The Matching Assistant can read the image file types TIFF BMP GIF JPEG PPM PGM PNG and PBM The selected image is displayed automatically Typically the next step is to create a region of interest around the object As an alternative to loading a model image and creating the model page 186 interactively the menu item File gt Load Model can be used to load a model that you have saved with the Matching Assistant or HALCON Note that the matching works on a single channel For color RGB images the red channel will be used A color transformation can be performed with the operator trans_from_rgb Loading a Shape Model As an alternative to opening a model image page 185 and creating page 186 the model page 185 interactively the menu item File gt Load Model or the corresponding button Load in the tab Model Use can be used to load a model that you have saved with the Matching Assistant or HALCON Note that when you load the model from a file all the menu items buttons and dialogs that enable you to change the model parameters or display the model image will not be selectable because a loaded model cannot be changed and contains no information about the imag
35. the file is exported as a standalone application Iconic input and output parameters of a procedure are passed as ByVal HUntypedObjectX and ByRef HUntypedObjectX respectively while control input and output parameters are passed as ByVal Object and ByRef Object respectively The subroutine RunHalcon contains a call to the subroutine action and has a parameter Window which is of type HWindowX This is the link to the window on the form to which all output operations are passed In addition another subroutine is created with the name InitHalcon This subroutine applies the same initializations that HDevelop performs Most of the variables iconic as well as control are declared locally inside the corresponding subroutines Iconic variables belong to the class HUntypedObjectX and control variables belong to Object Depending on the program additional subroutines and variables are declared 8 5 2 1 Arrays If a single value is inserted into an Object array a special subroutine is called to ensure that the array is valid If the array is too small or of the wrong type it is recreated in the appropriate way 8 5 2 2 Expressions All parameter expressions inside HDevelop are translated into expressions based on the HALCON tuple operators Therefore an expression might look somewhat complex In many cases these expressions can be changed to simple Visual Basic NET expressions For example TupleSub becomes a simple subtraction To ensure t
36. tion consists of a fine grained specification of the parameters and a short description The specification fields depend on the parameter type iconic or control parameter and on the selected semantics In the following the most common fields of both iconic and control parameters are listed Please refer to the Extension Package Programmer s Manual Chapter 2 3 for additional information about the documentation fields especially the semantic types 5 4 3 Creating and Editing Procedures 119 Iconic Parameter Documentation Field Meaning Semantics Pixel Types Multi Channel Multi Value Description Specifies the data class of the parameter Only available for Semantics image Lists the accepted pixel types The buttons Select A11 and None toggle the selection of all parameters Only available if Semantics image False Only the first channel of the image is processed True Only a multi channel image is accepted Optional Images with an arbitrary number of channels are accepted False Only a single object no object tuple is accepted True Only object tuples are accepted Optional A single object as well as an object tuple is accepted Short description of the iconic parameter i Edit Procedure Interfaces dev_open_window_fit_ image Interface General Documentation Parameter Documentation Language English en_US bol Image Row Column widthtimit Heightimit
37. tuple_strlen strlen s returns the number of characters in s See also tuple_str_bit_select s i selects a single character specified by index position from s The index ranges from zero to the length of the string minus 1 The result of the operator is a string of length one s i1 i2 returns all characters from the first specified index position i1 up to the second specified position 12 in s as a string The index ranges from zero to the length of the string minus 1 7 5 7 String Operations 227 split See also tuple_split split s1 s2 divides the string s1 into single substrings The string is split at those positions where it contains a character from s2 As an example the result of o te e te l split usr image usr proj image consists of the two strings usr image usr proj image Regular Expressions HDevelop provides string functions that use Perl compatible regular expressions Detailed infor mation about them can be found in the Reference Manual at the descriptions of the corresponding operators which have the same name but start with tuple_ In particular at the description of tuple_regexp_match you find further information about the used syntax a list of possible options and a link to suitable literature about regular expressions regexp_match See also tuple_regexp_match regexp_match s1 s2 searches for elements of the tuple s1 that match the regular exp
38. 13 Dialogs 5 13 1 File Selection Dialog The file selection dialogs opened by actions such as Open Program Save or Read Image are native windows of the operating system and thus their appearance and internal functionality is beyond HDevelop s control Their basic functionality is to browse the file system and to select one or multiple files or in some cases directories Usually they have two buttons The one labeled Open or OK confirms the selection and thus performs the initial action e g loading a file while the other labeled Cancel aborts the initial action As an example the dialog Menu File gt Open Program is explained Choose a HDevelop program to open Ax Look in o hdevelop ef eS EJ Fe Applications xo J Classification Mexplore_halcon dev My Recent Control Documents Develop E File Filter Desktop Graphics Image Cr Manuals a Matching Bellini Morphology Regions k Segmentation gt System Tools Files of type HDevelop Programs dev y Cancel Z Figure 5 57 Example of a file selection dialog under Windows In the top most text field you may specify a directory which contains your HDevelop programs A combo box at the right hand side helps you browsing your directories To move one directory level up you press the button on the right hand side of this text field The next button creates a new folder to store HDevelop programs By pressing the last button you can activate or
39. 196 size and Scale Step page 197 size Increase the values and check whether the matching still succeeds in all images Please note that the accuracy may suffer if you increase the step size Use Model gt Advanced Model Use Parameters page 204 e Subpixel page 204 If your application doesn t require sub pixel accuracy you can speed up the matching by selecting the value none Last Pyramid Level page 205 188 HDevelop Assistants Increase the value and check whether the matching still succeeds in all images Note that as a result of this modification wrong instances of the model may be found Furthermore the accuracy of the calculated position orientation and scale may decrease 6 3 3 Matching Assistant Reference The Matching Assistant consists of the following elements Pull down menus e File e Create Model page 190 e Use Model page 199 e Inspect page 206 e Code Generation page 208 e Help page 209 Tool bar with a selection of important buttons e Load Assistant Settings page 190 e Save Current Assistant Settings page 190 e Insert Code page 209 e Open Model Image e Display Model page 191 e Optimize Recognition Speed page 206 e Determine Recognition Rate page 207 Tabs with the dialogs for most of the tasks that can be done with the Matching Assistant e Model Creation page 190 e Model Use page 199 e Inspect page 206 e Code Generation page 208 Furthermore it provides
40. 2 Menu Bar The menu bar of the main window provides access to the complete functionality of HDevelop Here you may choose HALCON or HDevelop operators or procedures or manipulate the graphical output Every menu item opens a pull down menu henceforth abbreviated as menu with optional submenus You open a menu by clicking a menu item or via the keyboard by pressing the lt A1t gt key in combination with the underlined letter of the menu item In the following sections the menu entries are described in the order in which they appear 5 2 1 Menu File This menu provides functions to load images and existing programs and to save recently created or modified programs and procedures respectively Furthermore you may export HDevelop programs to C C Visual Basic Visual Basic NET or C and also print them 5 2 1 1 New Program Synopsis Initialize a new HDevelop program Checks for Unsaved changes page 156 Shortcut lt Ctr1 N gt This menu item deletes the current program including all local procedures The contents of variables are deleted before removing them In addition all graphics windows except one are closed The last graphics window is cleared The display parameters for the remaining graphics window are reset to the default values stored in the preferences see section Visualization Settings gt Pen LUT Paint on page 72 The runtime settings of the preferences are reset to their default values see section
41. 2 Menu Edit In this menu you find all necessary functions to modify the current HDevelop procedure body displayed in the program window Furthermore a comprehensive find and replace functionality is offered You can also access the preferences of HDevelop from this menu 5 2 2 1 Undo Synopsis Undo your previous editing activities Shortcut lt Ctr1 Z gt You may undo your previous editing activities via this menu item For example by selecting it three times you cancel the last three editing actions The menu entry always states the last editing action that will be undone e g Undo Insert Program line at 23 read_image The undo functionality purely applies to editing activities No file operations will be undone Thus if you create an external procedure from some selected lines and undo the operation the external procedure will not be removed from the file system The undo item does not work for the password assignment for external procedures see section Protected External Procedures on page 123 To undo the password assignment you either have to remove the password as long as you can edit the procedure or you quit HDevelop without saving the corresponding procedure 5 2 2 2 Redo Synopsis Revoke undo activities Shortcut lt Ctr1 Y gt This is a quick way to restore the state before the last undo operation The menu action explicitly states the last Undo action that will be revoked 5 2 2 3 Cut Synopsis Cut
42. 5 Menu Bar 163 all changed parameters You can also generate code to acquire a single image setting Acquire Single Image or to acquire images in a loop setting Acquire Images in Loop Acquisition Mode You can switch between synchronous and asynchronous acquisition The latter runs in the background and is recommended for continuous acquisition Variable Names This section defines the variable names that are used in the generated code Connection Handle Variable storing the acquisition handle The image acquisition interface is ac cessed by this name Set to AcqHandle in the example below Image Object Variable used for the acquired images Set to Image in the example below The following variables have to be specified if Source is set to Image File s and multiple files are specified Loop Counter Variable storing the loop index Image Files Variable for storing the image names as a tuple Generate the Code Insert Code The actual code is inserted at the IC Example Code Code generated by Image Acquisition 01 open_framegrabber GigEVision 1 1 0 0 0 O progressive 8 gray 1 false default 003053095003_Basler_scA160014gc 0 1 AcqHandle grab_image_start AcqHandle 1 while true grab_image_async Image AcqHandle 1 Do something endwhile close_framegrabber AcqHandle 6 1 5 Menu Bar Menus File Code Generation Help For the description of the correspondin
43. Assistant from finding the object Therefore we recommend to check whether the matching still succeeds in all test images page 185 after each modification How the different parameters influence the recognition speed is described below Please note that when ever you modify a model parameter the internally stored model must be created anew you must start this creation and the search explicitly using the button Find Model or the button Detect A11 in the tab Model Use After each modification determine the resulting recognition speed using the dialog Optimize Recognition Speed page 206 The following modifications can speed up the matching processes Create Model gt Standard Model Parameters page 192 e Number of Pyramid Levels page 194 Increase the value and check whether the matching still succeeds in all images e Allowed ranges of rotation page 195 and scale page 195 Set the parameters Start Angle page 195 Angle Extent page 195 Min Row Scale page 195 Max Row Scale page 195 Min Column Scale page 195 and Max Column Scale page 195 according to the ranges probably needed for your images Create Model gt Advanced Model Parameters page 196 e Minimum Contrast page 198 Increase the value and check whether the matching still succeeds in all images e Optimization page 198 Point Reduction Select a higher reduction rate and check whether the matching still succeeds in all images e Angle Step page
44. Basic 263 export to Visual Basic NET 258 260 HDevelop dev_ operators 94 example programs 47 language 211 runtime error 74 warning 156 HDevelop Language 102 HDevelop Reference 102 HDevelop ini 62 Help 102 112 About 103 HALCON News WWW 102 HALCON Reference 102 HDevelop Language 102 HDevelop Reference 102 Help 102 menu 102 Search Documentation 102 history of files 46 IC 105 iconic data 277 iconic object 277 if 75 92 109 234 238 if 234 LE ifelse 92 234 ifelse 234 image 277 image acquisition assistant 23 Image Acquisition Assistant 157 158 Code Generation 162 Connection 159 frames per second 161 Parameters 161 Source 159 Image Acquisition Interface 159 image coordinates status bar 44 Image File s 159 Image Files 163 Image Object 163 image properties status bar 44 image pyramid display 191 Image Size 80 image source 171 Import 62 Indent Size 64 Insert Code 163 insert 92 93 217 218 220 221 insert 251 Insert All As Local 91 Insert Al1 48 Insert Code 158 183 209 insert cursor 17 Insert Mainbody 49 Insert Procedures 48 Insert Program 48 Insert Used As Local 91 Inspect 206 Interface 115 Interface Library 161 junctions_skeleton 98 Keep dialog open 48 52 keyboard 12 keyboard menu access 46 Keycodes 273 Keywords 98 Language 65 113 Last Pyramid Level 205 LC_COLLATE 65 Library 117 line
45. Display of Model and Image Pyramid By default the pyramid levels of the displayed model page 191 and model image are locked When pressing the unlock button right to the sliders which are used for specifying the pyramid levels you can select different pyramid levels for the model image and the model When pressing the button again both levels are locked again Detailed information about the model image pyramid can be found here page 194 Specifying Standard Model Parameters Via the menu item Create Model gt Standard Model Parameters the tab Model Creation is opened and you can specify basic parameters for the model which describe the appearance of the object to recognize e g the contrast of significant points or the allowed range of rotation By default these parameters are set to values which work well for most tasks by modifying them you can optimize the model for your application and speed up the search process The following parameters can be specified in this dialog e the Contrast which points must have in order to be included in the model e the Minimum Component Size page 194 of model components e the number of Pyramid Levels page 194 on which the model is created e the Start Angle page 195 of the allowed range of rotation e the allowed range of rotation Angle Extent page 195 and 6 3 3 Matching Assistant Reference 193 e the scale range page 195 In most applications specifyi
46. HALCON Refer M pee read_image Operator Classification Control 5 Name read_seque read_image Read an image with different file formats write_image Misc Region Text Synopsis Tuple Y P read_image Image FileName Description The operator read image reads the indicated image files from the background storage and generates the image One or more file names can be passed in FileName If more than one file name is passed an image object tuple with the corresponding number of image objects is HAH 4 4 E E Figure 4 4 The online help window showing the documentation of the operator read_image 4 5 Add Additional Program Lines Select the clips by thresholding Now we want to separate the clips from the background i e select them They clearly stand out from the background thus a selection based on the gray value is appropriate This operation is known as thresholding Enter threshold into the operator window This is both the full name of an operator and part of other operator names Thus you get a list of matching operators with threshold pre selected when you press lt Return gt Press lt Return gt once more to confirm the selected operator and show its parameters In figure 4 5 you can see that the input parameter Image is set to Clip automatically Fo
47. HALCON operators HALCON operators work on tuples of iconic objects which are represented by their surrogates in the HALCON data management The results of those operators are again tuples of iconic objects or control data elements For a detailed description of the HALCON operators refer to the HALCON reference manual and the remarks in section 7 5 3 on page 219 7 5 Expressions for Input Control Parameters In HDevelop the use of expressions like arithmetic operations or string operations is limited to control input parameters all other kinds of parameters must be assigned by variables 7 5 1 General Features of Tuple Operations This section intends to give you a short overview over the features of tuples and their operations A more detailed description of each operator mentioned here is given in the following sections Please note that in all following tables variables and constants have been substituted by letters which indicate allowed data types These letters provide information about possible limitations of the areas of definition The letters and their meaning are listed in table 7 3 Operations on these symbols can only be applied to parameters of the indicated type or to expressions that return a result of the indicated type The symbol names i a 1 and s can denote atomic tuples tuples of length 1 as well as tuples with arbitrary length Operations are normally described assuming atomic tuples If the tuple contains more than
48. Image Channels if Channels 3 continue endif extensive processing of color image follows endwhile break The opeator break enables you to exit for while and repeat loops The program is then continued at the next line after the end of the loop A typical use of the operator break is to terminate a for loop as soon as a certain condition becomes true e g as in the following example Number Regions AllRegionsValid 1 check whether all regions have an area lt 30 for i 1 to Number by 1 ObjectSelected Regions i area_center ObjectSelected Area Row Column if Area gt 30 AllRegionsValid 0 break endif endfor In the following example the operator break is used to terminate an infinite while loop as soon as one clicks into the graphics window while 1 grab_image Image FGHandle dev_error_var Error 1 dev_set_check give_error get_mposition WindowHandle R C Button 7 8 Error Handling 239 dev_error_var Error 0 dev_set_check give_error if Error H_MSG_TRUE and Button 0 break endif endwhile stop The operator stop stops the program after the operator is executed The program can be continued by pressing the Step Over or Run button exit The exit operator terminates the HDevelop session return The operator return returns from the current procedure call to the calling procedure If return is called in the main procedure the PC jumps to the end of
49. Images You can single step through the selected images by clicking the Snap button see figure 3 4 Each time you click the button the next image is displayed in the active graphics window You can also loop through the images by clicking the button Live This is especially useful for animations Both functions are also available from the menu Acquisition Snap ae images a R Connect Live continuous display Figure 3 4 Browsing the selected images Generate Code Switch to the tab card Code Generation and specify a variable name in the text field Image Object You can later access the image in the program by this name If multiple images or a directory were selected in the tab card Source the image acquisition assistant will read the images in a loop In this case the following additional variable names need to be specified Loop Counter The name of the loop index variable While looping over the images in the program this variable will contain the object number of the current image Image Files The name of the variable that will contain the names of the selected images Click Code Preview to inspect the code that would be generated from the currently specified parame ters Click Insert Code to generate the code and insert it at the position of the IC in the current program The following piece of code is an example generated from three selected images It is a self contained HDevelop program that runs without alter
50. Listing on page 64 The two different editing modes are explained in the following sections g cs ral o E 2 a a 5 0 106 Graphical User Interface edit interface advanced autocompletion current procedure execute on lt Return gt editing mode browse history Program Listing clip dev Orientation of clips gt dev update window off t read image Clip clip get_image pointerl Clip _ _ Width Height dev_close window dev_open window 0 0 Width 2 Height 2 black Wind dev display Clip set display font WindowID 10 mono true false fdisp continue message WindowID black true stop bin threshold Clip Dark connection Dark Single select_shape Single Selected area and 5000 dev_set_draw Ace I 2 dev ser colored 12 oft b Figure 5 28 Program window 5 4 1 1 Dialog based Editor In this mode the program window is used to visualize program lines but not to modify them You cannot change the program body by modifying the text directly Editing the program in HDevelop is done in the operator window see section Operator Window on page 125 The main reason for this principle is the clear separation of the parameters and the advantage that it facilitates providing sophisticated help Thus many input errors can be avoided Every line starts with an operator or procedure name which is indented if necessary to hig
51. Main Window 45 The status bar has its own context menu You can toggle whether execution messages are displayed in the status bar by clicking the entry Show Processing Time in the context menu of the status bar To open the context menu right click in the message area of the status bar A history of the latest execution messages is displayed as a tool tip when placing the mouse pointer over the message area of the status bar The history can be copied to the clipboard by selecting the entry Copy History to Clipboard in the context menu of the status bar Window Modes There are two different window modes in HDevelop which can be toggled in the menu Window MDI multiple document interface In this mode the main window contains all other windows and dialogs with the exception of the online help window and modal dialogs which block other win dows temporarily You are free to move the windows according to your needs and preferences inside the main window You may iconify and or deiconify them HDevelop provides basic win dow management functions in this mode SDI single document interface In this mode the main window contains only the menu bar the tool bar the status bar and the program window All other windows are independent You may find this mode beneficial if you want to take advantage of special window manager capabilities under UNIX la o ES E 2 D 5 0 46 Graphical User Interface 5
52. Procedures 48 Insert Program 48 New Program 46 Open Program 46 Print 54 Properties 54 Quit 55 Read Image 52 Recent Programs 48 Save 49 Save A11 50 Save Procedure As 50 Save Program As 49 file_exists 96 Find Again 61 Find Model 201 Find Replace 58 Font 64 for 41 42 75 92 106 108 236 238 for loop 236 for 268 277 frames per second Image Acquisition Assistant 161 Full Text Editor 64 full text editor 108 gauss_image 98 gen_empty_obj 133 220 gen_lowpass 98 gen_tuple_const 221 General Documentation 117 Generic 160 get_error_text 240 get_framegrabber_param 71 126 get_image_pointer1 270 get_mposition 96 get_system 269 Give Error 73 graphics window 136 graphics window 17 269 277 clear 79 close 80 colors 81 image size 80 line width 81 open 79 regions 81 82 select iconic variable 80 window size 80 Gray Histogram 89 gray value histogram 89 145 inspection 89 143 status bar 44 Greediness 204 GUI 3 guru 162 H_MSG_FAIL 252 H_MSG_FALSE 252 H_MSG_TRUE 252 H_MSG_VOID 252 HALCON example programs 47 modules 54 HALCON News WWW 102 HALCON Reference 102 HALCON XL 250 266 HALCONIMAGES 52 159 HALCONROOT 52 159 HDevelop procedures 10 external 11 hierarchy 11 local 11 main 10 250 254 256 259 261 263 266 Index program export to C 9 265 export to C 249 export to C 253 255 export to Visual
53. Procedures eg General Options 28 Runtime Settings Figure 5 17 Visualization Settings gt Visualization Parameters Runtime Settings gt Runtime The settings in this category affect the runtime behavior of HDevelop Please note that the runtime set tings are not persistent between sessions The runtime settings are reset to their default values when a new HDevelop program is started with Menu File gt New Program The dialog is displayed in fig ure 5 18 Pen Lut Paint Draw le fill C margin Shape original M gt Line width 1 4 roan e 85 HO Me Preview light gray cyan magenta yellow medium slate blue coral slate hiie Reset to factory settings Settings AE External Procedures ag General Options 29 Visualization Settings Runtime Settings VI Runtime Settings Give Error Show Processing Time Update Program Counter Update Variables Update Graphics Window Enable the Context Menu in the Graphics Window Figure 5 18 Runtime Settings Adopt active settings 5 2 2 Menu Edit 73 Give Show Error See also dev_set_check This check box specifies the behavior of HDevelop if an error occurs If it is checked HDevelop stops the program execution and displays an error message Otherwise the error is ignored Processing Time See also dev_update_time This check box indicates whether the
54. This section of the documentation is intended for code examples This could be a working program or some code fragments that illustrate the usage of the procedure Suggestions The first field on this tab card allows to associate keywords with the procedure Enter a comma separated list of keywords into this field The tab card Keywords of the online help may be used as a reference for keyword suggestions Furthermore you can specify suggested successors predecessors and alternatives to the current pro cedure Enter comma separated lists of operator or procedure names into the fields See Menu Suggestions for the meaning of these fields Advanced The text boxes in this tab card are for advanced usage only It is recommended to search the online reference manual for usage examples Attention Notes about special observances when using the procedure Complexity Notes about intricate details about the procedure usage Warning Usually used to indicate obsolete or deprecated procedures that are kept for backward com patibility The warning text should indicate the recommended alternative If the procedure is selected in the operator window the warning text will be displayed as a re minder References Bibliographic references with recommended reading about certain aspects of the proce dure Parameter Documentation This section of the dialog provides tab cards for all parameters of the current procedure The documenta
55. a natural sequence of operators Thus as a rule you use a thresholding after executing an edge filter or you execute a region processing e g morphological operators after a segmentation To facilitate a reasonable processing all the possible operators are offered in this menu item 5 2 7 3 Alternatives Since HALCON includes a large library this menu item suggests alternative operators Thus you may for example replace mean_image with operators such as gauss_image sigma_image or smooth_image 5 2 7 4 See also Contrary to Alternatives operators are offered here which have some connection to the current oper ator Thus the median filter median_image is not a direct alternative to the mean filter mean_image Similarly the regiongrowing operator regiongrowing is no alternative for a thresholding In any case they offer a different approach to solve a task References might consist of pure informative nature too the operator gen_lowpass which is used to create a lowpass filter in the frequency domain is a reasonable reference to a Gaussian filter 5 2 7 5 Keywords This menu item gives access to HALCON operators through keywords which are associated with each operator The tab card Keywords of the online help window is opened It is described in section Keywords on page 141 5 2 8 Menu Assistants 99 5 2 8 Menu Assistants This menu assembles assistants for specific machine vision tasks The genera
56. a category to select it and display its example programs You can select multiple categories at once by holding the lt Ctr1 gt key while clicking on the categories Filter the example programs To reduce the amount of listed example programs enter a word or substring into the Filter text field Subsequently only example programs matching this substring in the file name or short description will be displayed We pretend that you are looking for a measuring example from the semiconductor industry e Click on HJ next to Industry e Click on the subtopic Semiconductors The examples belonging to the semiconductor industry are listed on the right Enter the word measure into the Filter text field Note how the list is updated as you type Now you have a short list of example programs to select from You may need to resize the example browser to fully read the short descriptions of the listed programs e Select measure_ic_leads dev by clicking on it e Click Open The selected example program is then loaded Alternatively you can load an example program by double clicking on it The example browser is closed unless Keep dialog open is checked The program lines of the loaded example program are now displayed in the program window The PC is set to the first executable line of the program leading comments are ignored The variable window is also updated It lists the variables that are used in the main procedure which
57. a status bar at the bottom in which messages are displayed The status bar also displays the matching results i e the number of found instances the needed time and for each found instance the position orientation scale and score Please note that the status bar does not provide a scrolling mechanism if the displayed message is to long move the mouse over it so that a tool tip displaying the full message pops up Alternatively if the message is only slighly larger than the status bar you can also drag the left or right border of the Matching Assistant window to enlarge it Images and models are displayed in the graphics window of HDevelop 6 3 3 Matching Assistant Reference 189 6 3 3 1 The Menu File Via the menu File you can e open the model image e load an already existing shape model e save a shape model e load formerly used and saved settings of the Matching Assistant e save the current settings of the Matching Assistant for later use e close the Matching Assistant dialog while retaining the current settings as long as the HDevelop session is active and e exit the Matching Assistant dialog discarding the settings Opening the Model Image The so called model image page 185 is used to create the model page 185 of the object you want to find later This image should be a characteristic image of the object i e the object should appear in its default position and orientation and not be occluded
58. above the plane in which you have performed the calibration the less precise the result will be Note that poor image quality leads to poor calibration results and subsequently causes bad or wrong measuring values However acceptable results are usually achieved even with quality warnings in the 6 2 2 How to Calibrate with the Calibration Assistant 173 Possible Error Source Solution Did any camera settings like aperture focus Take new calibration images and do not change or pose of the camera change during the cali any settings during calibration and later during bration process the application If you decide to change any thing you have to start a new calibration Did you acquire the calibration images the way Check if you have acquired 10 to 20 images they are required 1f the calibration plate has been positioned ev erywhere in the field of view and if it has been tilted in every direction If you are un sure about how to take good calibration im ages read the instruction page 169 Are you using an extreme wide angle lens The distortions that appear close to the im age borders cause a higher Mean Error or can even be responsible for the failure of the cali bration You must use another lens in this case Is the size of your camera chip compatible with Using a lens that is not compatible with your the lens camera chip size this information should be included in the instructions of the lens will de crease t
59. an integer or boolean Variable names must not be empty Variable names must not start with a number Invalid variable name Invalid name for a control variable the name is already used for an iconic variable Invalid name for an iconic variable the name is already used for a control variable For loop variable must be a number Step parameter of for loop must be a number End parameter of for loop must be a number Variable names must not be a reserved expression Access to an erroneous expression Wrong index in expression list Empty expression Empty expression argument Syntax error in expression o te iv te lt l 246 HDevelop Language 21105 21106 21107 21108 21109 21110 21111 21112 21113 21114 21115 21116 21117 21118 21119 21120 21121 21122 21123 21124 21125 21200 21201 21202 21203 21204 21205 21206 21207 21208 21209 21210 21211 21212 21213 21214 21215 21216 21217 21218 21219 21220 21221 21222 21223 21224 21225 Wrong number of function arguments in expression Expression expected Unary expression expected Expression list expected Function arguments in parentheses expected One function argument in parentheses expected Two function arguments in parentheses expected Three function arguments in parentheses expected Four function arguments in parentheses expected Five function arguments in parentheses expected Right parenthesis expected Right curly brace
60. case of control statements e g if endif or for endfor the PC is set on the end marker e g endif or endfor after the execution of the last operator or procedure call inside the statement s body After endfor and endwhile the PC is always set on the beginning of the loop If a condition like if or while evaluates to FALSE the PC is set behind the end marker Suggestions in the menu Menu Suggestions are determined for the recently executed operator Finally HDevelop is available for further transactions Any user input which has been made during execution is handled now g cs ral o E 2 D 0 76 Graphical User Interface 5 2 3 4 Step Forward Synopsis Execute the next line in the current program Shortcut lt Shift F6 gt This entry always steps forward in the current program The difference to Step Over is apparent in loops Only the first run of the loop is single stepped When the closing statement of the loop is reached the remaining runs of the loop are executed without interruption and the line following the loop is executed stepwise again 5 2 3 5 Step Into Synopsis Step into HDevelop procedure Shortcut lt F7 gt This entry allows you to step into procedure calls Executing Step Into with the PC on a procedure call line causes the corresponding procedure and procedure call to become the current procedure and proce dure call respectively The PC is set on the first
61. change the size of the graphics window interactively by gripping the window border with the mouse Then you can resize the window by dragging the mouse pointer After this size modification the window content is redisplayed Now you see the same part of the window with changed zoom 3D Plot Mode Clicking J activates an interactive 3D plot mode It displays meaningful information for height field images i e images that encode height information as gray values The greater the gray value the higher the corresponding image point Figure 5 49 shows a height field image and the corresponding 3D plot The 3D plot mode uses OpenGL and benefits from hardware acceleration Using the mouse you can alter the view of the 3D image select mode must be active for this to work click Alin the tool bar e Drag the image to rotate the view g cs ral o E 2 D 0 138 Graphical User Interface Pen Lut Paint zoom default how Mode shaded y column contourline Plot Quality best X 3d_plot Jines 3d_plot_hidden_lines ee i 3d_plat_point 3600 Image o xl W 3w 3600 Image Dl xi BIPA rt y Blox y kw BiAQQr r ia l IV Display Grid I Update Reset Use settings For new windows a b c Figure 5 49 a Default image display b 3D plot mode c Display settings e Hold lt Shift gt and drag the image up and down to zoom out and in respec
62. continuation 108 Line Width 81 149 Live 161 Load Assistant Settings 158 182 190 Load Model 189 Load Test Images 200 local procedure 49 look up table 82 loop Index body 277 Loop Counter 163 LUT 36 Lut 82 main window 43 window title 43 Make All External 91 Manage Passwords 68 Matching Assistant 157 Max Column Scale 195 Max Row Scale 195 Maximum Number of Matches 204 Maximum Overlap 204 MDI 101 MDI 45 mean_image 98 median_image 98 menu Acquisition Image Acquisition Assis tant 163 Assistants 99 Edit 56 Execute 74 File 46 Help 102 Operators 92 Procedures 90 Suggestions 98 Visualization 79 Window 99 menu bar 46 messages status bar 44 Metric 197 Min Column Scale 195 Min Row Scale 195 Minimum Component Size 194 Minimum Contrast 198 Minimum Score 203 Miscellaneous 273 model creation 186 190 model image display 191 model image open 189 model parameters advanced 196 model parameters standard 192 model use parameters advanced 204 model use parameters standard 203 modified external procedure 49 program 43 mouse click 11 Move Down 116 Move Up 116 multiple document interface 45 native encoding 52 70 New Program 46 New Zoom Window 89 Normal 161 number of visible objects 202 Open 48 Open Graphics Window 99 Open Graphics Window 79 Open in new HDevelop 48 Open Model Image 189 Open Operator Window 99 Open P
63. cs ral o E 2 a a 5 0 66 Graphical User Interface External Procedures gt Directories Use this tab card to manage the list of directories that contain external procedures The directories are scanned for external procedures in their listing order For each directory the total number of procedures is displayed The number of loaded procedures is usually equal to the total number However external procedures are not loaded if a directory contains procedures with the same name as a preceding directory The tab card is displayed in figure 5 13 Please note that HALCON comes supplied with a set of standard procedures These are general purpose procedures used by many of the supplied example programs The path to these external procedures is set to HALCONROOT Aprocedures under Windows and HALCONROOT procedures under UNIX and cannot be altered or deleted in this dialog It is however possible to override the supplied external procedures by placing external procedures with the same name in one of the user defined directories The documentation of the supplied procedures is available in the online help of HDevelop under Proce dure Reference Manual Preferences File af User Interface Directories External Procedures Manage Passwords Procedure Use Unresolved Procedure Calls Testers procedures PTE EE eae ag General Options Visualization Settings Add 3 Runtime Settings The foll
64. decide to do this just click the Import Parameters button Once you have finished this last part of the Setup tab proceed to the Calibration page 169 tab Choose your Camera Model First choose the Camera Model you are using e either Area Scan Division e Area Scan Polynomial e orLine Scan Even though the camera model Area Scan Division typically returns good results for your appli cation you can improve the accuracy and lower the error rate by using the Area Scan Polynomial camera model We therefore recommend for you to use the Area Scan Polynomial model if the Mean Error on the Results page 177 tab under Calibration Status page 177 is too high If you decide for the Area Scan Polynomial model it is especially important that you thoroughly cover the field of view with calibration plate images and do not leave out the edges Note that a higher Mean Error might be caused by inappropriate calibration images Set Parameters for Full Calibration If you choose a full calibration for an area scan camera you must specify approximate values for Cell Width Sx Cell Height Sy and Focal Length Please have a look at the data sheet of your camera for suitable values Information about the Focal Length can be found on the lens itself 168 HDevelop Assistants If your lens is telecentric choose Telecentric and the Focal Length will be grayed out If you have a line scan camera you must additionally spec
65. display Normally the coordinate system of the graphics window corresponds to the most recently displayed im age which is automatically zoomed so that every pixel of the image is visible The coordinate system can be changed interactively using the tool bar of the graphics window or the menu Menu Visualization gt Set Parameters gt Zoom see section Menu Visualization on page 79 or with the operator 5 7 Graphics Window 137 Graphics Window 3600 Image Figure 5 48 Coordinate display in the graphics window dev_set_part see section Develop on page 94 Every time an image with another size is displayed the coordinate system will be adapted automatically Each window has a history that contains all e objects and e display parameters that have been displayed or changed since the most recent clearing or display of an image This history is used for redrawing the contents of the window The history is limited to a maximum number of 30 redraw actions where one redraw action contains all objects of one displayed variable Other output like text or general graphics like disp_line or disp_circle or iconic data that is dis played using HALCON operators like disp_image or disp_region are not part of the history and are not redrawn Only the object classes image region and XLD that are displayed with the HDevelop operator dev_display or by double clicking on an icon are part of the history You may
66. expressions in C or in Pascal You will find a detailed description in section Expressions for Input Control Parameters on page 215 Control output parameters These parameters are handled in the same way as iconic output parame ters Their defaults are named as their parameter names Other possibilities to obtain a control 128 Graphical User Interface output variable name are either using the combo box or specifying variable names manually You cannot use any expressions for these parameters After discussing what can be input for different parameters it is explained how this is done Nevertheless you have to keep in mind that you need to modify a parameter only if it contains no values or if you are not satisfied with the suggested default values Text input Give the input focus to a parameter field by clicking into it Now you may input num bers strings expressions or variables There are some editing functions to help you doing input lt Backspace gt deletes the character to the left and lt Delete gt deletes the one to the right You may also select a sequence of characters in the text field using the mouse or holding lt Shift gt and using the cursor keys If there is a succeeding input the marked region is going to be deleted first and afterwards the characters are going to be written in the text field See page 273 for a summary of the keyboard mappings Combo box selection Using this input method you can obtai
67. image acquisition assis tants they are labeled Image Acquisition 01 and Image Acquisition 02 respectively When you open a new assistant a menu entry is added to the top of the menu Assistants from which the 158 HDevelop Assistants corresponding assistant can be restored if it has been closed The current setup is lost and the menu entry disappears if the associated assistant is exited explicitly see below If you want to keep the setup for later sessions you can always save it to a file Different assistants have different menus usually corresponding to the available tab cards These menus provide functionality specific to the assistant s task There are also some menu entries that are available in every assistant They are described in the following FilebLoad Assistant Settings Using this entry a previous configuration can be loaded from a file which has been generated using the menu entry Save Current Assistant Settings File gt Save Current Assistant Settings You can save the configuration of an assistant to a file for later use The default extension for these configuration files is das File gt Close Dialog The assistant is closed but the current configuration is preserved This menu entry performs the same function as the assistant s close button You can restore a closed assistant by clicking the numbered entry in the menu Assistants which is generated when a new assistant is opened File
68. in the operator window by double clicking them in the program window This editing mode is described in the section Dialog based Editor on page 106 e Full Text Editor Selects the full text editor In this mode text can be freely edited in the program window Double clicking in the program window still sends the corresponding program line to the operator window unless the operator window has been closed This way the full text editor can be used in conjunction with the classical dialog based editing mode This editing mode is described in the section Full Text Editor on page 108 If the full text editor is selected the following option tweaks its operation e Advanced Autocompletion Enables advanced autocompletion in the full text editor This feature is described in the section Full Text Editor on page 108 These options can also be set in the program window see section Program Window Tool Bar on page 105 User Interface gt Fonts In this tab card the font settings of HDevelop may be modified General The font used throughout the user interface menu entries labels etc Help Window The body font used in the help window menu Help page 102 gt Help Program Listing The font used in the program window This is the same font setting as on the tab card Program Listing see above Advanced Autocompletion The font used in the advanced autocompletion overlays Values and Parameters The font us
69. in all loaded test images You can interrupt this process by clicking the button labelled Stop please note however that this event is processed only after the current search has finished The Matching Assistant then displays at Recognition Rate the recognition rate calculated for different criteria and at Statistics the mean minimum and maximum score page 185 as well as the mean minimum and maximum matching time You can choose between three recognition modes e In each test image at least one object is expected The recognition rate is calculated as the per centage of test images which fulfill this condition e In each test image as many objects are expected as specified in the parameter Maximum Number of Matches page 204 in the dialog accessed via Use Model gt Standard Model Use Parameters page 203 The recognition rate is calculated as the relation of found objects to the sum of expected objects over all images in percent Please keep in mind that if an image contains more objects than specified in the parameter Maximum Number of Matches only the best Maximum Number of Matches instances are found There fore if there are e g two test images containing 1 and 3 objects respectively and you select Maximum Number of Matches 2 the recognition rate will be 75 i e 3 out of 4 expected objects e In each test image as many objects are expected as specified manually page 202 in the dialog accessed via Use Model g
70. instruction stop has been encountered as in this example or 4 an error has occurred During execution the graphics window is used for visualization Changes to the variables are reflected in the variable window When the program execution stops the status bar displays the number of executed lines and the processing time To continue with the program execution click Execute gt Run again until the end of the program is reached e Click Reset Program Execution to reset the program to its initial state see figure 2 5 e Using the button Step Over you can execute the program line by line and inspect the immediate effect of each instruction Run Step Over Stop Reset Program Execution l MAA SAEZ Figure 2 5 The basic execution buttons Acquiring Images with HDevelop 21 Chapter 3 Acquiring Images with HDevelop Image acquisition is crucial for machine vision applications It will usually be an early if not the first step in your programming projects This chapter explores the different ways of image acquisition in HDevelop 3 1 Reading Images From Files Especially in the prototyping phase you often have a set of sample image files to work from HDevelop or rather the underlying HALCON library supports a wealth of image formats that can be loaded directly see read_image in the Reference Manual Drag and Drop The easiest way to read an image is to simply drag it from a file browser to the HDevelop window
71. is an ordered multivalue set In case of control data a tuple can consist of a large number of items with different data types The term tuple is also used in conjunction with ficonic objects if it is to be emphasized that several ficonic objects will be used Type ficonic variables can be assigned with data items of type fimage Tregion and XLD The types of fcontrol data items can be one of finteger freal boolean or string Variable window In HDevelop the variable window manages the control and ficonic data XLD is the short term for eXtended Line Description Itis used as a superclass for contours polygons and lines Command Line Switches 279 Appendix B Command Line Switches HDevelop accepts the following command line switches hdevelop called as hdevelop options HDevelop options lt program gt dev open the program for editing run lt program gt dev load the program and start execution lt image_file gt load an image file with read_image help show this help info in a message box version show version information in a message box help show this help information on the console version show version information on the console convert lt program gt dev lt program gt cpp c cs vb bas cs vb txt dev COM external_proc_path lt external procedure path gt external_procs_only_interfaces reset_free_text no_use_hdevelop_template convert an HDevelop program into a sour
72. its center The buttons Zoom Out and Zoom In activate a zooming with factor 0 5 or 2 respectively To get the image s full view back on your graphics window you simply click the button Reset The button Aspect adjusts the parameters so that the aspect ratio of the image is maintained 5 2 4 Menu Visualization 89 5 2 4 19 Zoom Window Synopsis Open zoom window for image details and pixel inspection The zoom window is described in section Zoom Window on page 143 5 2 4 20 New Zoom Window Synopsis Open additional zoom window See section Zoom Window on page 143 5 2 4 21 Gray Histogram Synopsis Display gray value histogram of active graphics window Selecting this entry opens a sophisticated tool for the inspection of gray value histograms which can also be used to select thresholds interactively and to set the range of displayed gray values dynamically It is described in section Gray Histogram Window on page 145 5 2 4 22 Feature Histogram Synopsis Interactive inspection of feature histograms This menu item opens a sophisticated tool for the inspection of feature histograms It is described in section Feature Histogram Window on page 151 5 2 4 23 Feature Inspection Synopsis Inspection of shape and gray value features of individual regions This window provides a tool for the convenient inspection of shape and gray value features of individual regions It is described in section Featu
73. its title bar This number may be used in operators that require a window handle e g dev_set_window or dump_window The handling of graphics windows is described in more detail in the section Graphics Window on page 136 5 2 4 2 Clear Graphics Window Synopsis Clear active graphics window See also dev_clear_window The history previously displayed objects of the window is also cleared 80 Graphical User Interface ind a 5 2 4 3 Close Graphics Window Synopsis Close active graphics window See also dev_close_window 5 2 4 4 Display Synopsis Select iconic variable to be displayed in active graphics window See also dev_display This submenu lists all instantiated iconic variables for quick selection The submenu is split in three parts from top to bottom images regions and XLDs 5 2 4 5 Window Size Synopsis Set window size of active graphics window See also dev_set_window_extents This submenu offers a list of fixed percentages to resize the graphics window with respect to the size of the most recently displayed image The entries Double and Half change the size of the graphics window to half and double its current window size respectively independent of the size of the displayed image The entry Aspect Ratio 1 11 scales down the current window size so that the aspect ratio of the displayed image is maintained 5 2 4 6 Image Size Synopsis Zoom image size of active graphics window T
74. lines After releasing the code lines all connections between the Calibration Assistant and the program window of HDevelop are lost That is changes e g the deletion of code lines can then only be applied directly in the program window and not from within the Calibration Assistant anymore Delete the Generated Code Lines Via the menu item Code Generation gt Delete Generated Code Lines you can delete the code lines that you have previously generated and inserted into the program window of HDevelop from within the Calibration Assistant Note that this works only as long as you have not yet released the code lines Preview of the Generated Code Lines Via the menu item Code Generation gt Show Code Preview you can open the dialog for the Code Preview in the tab Code Generation 184 HDevelop Assistants 6 2 5 4 The Menu Help Via the menu Help you can access the online documentation 6 2 5 5 The Tab Setup The Setup tab consists of the following subdivisions e Calibration Task page 166 e Calibration Plate page 167 e Camera Parameters page 167 6 2 5 6 The Tab Calibration The Calibration tab includes e Image Source page 171 e Calibration page 171 e Quality Issues page 172 e Display Parameters page 176 e Calibration Plate Extraction Parameters page 176 6 2 5 7 The Tab Calibration Results The Calibration Results tab includes the following subdivisions e Calibration St
75. local procedure overrides the external procedure Insert Procedures Synopsis Insert local procedures of the selected program into the current program Via this menu item you can add local procedures from an HDevelop program to the current program All local procedures except the main procedure are loaded from the selected file If the current program already contains a local procedure with the same name the newly added procedure will be renamed by appending the suffix _COPY_1 to its name If the current program already contains an external procedure with the same name the newly added local procedure overrides the external procedure 5 2 1 Menu File 49 Insert Mainbody Synopsis Insert only the main procedure of the selected program into the current program Insert the main body of the selected program at the IC No local procedures are imported If the current program does not provide the procedures used in the imported program the corresponding program lines are marked as invalid code and will not be executed Invalid code is turned into valid code by providing the missing procedures 5 2 1 6 Save Synopsis Save changes of the current HDevelop program or the currently selected external procedure Shortcut lt Ctr1 S gt The actual functionality of this menu entry depends on the selected procedure in the program window e Main or local procedure selected in program window Save changes of th
76. lt Ctr1 P gt The print dialog is displayed in figure 5 7 Print Range 5 2 1 Menu File 55 LC oxi Name printilarge Printer Selection And Properties Print Range Program Current Procedure Selection External Procedures Procedure Options IV Print Procedures Used Local Procedures All Local Procedures IV Used External Procedures Only Procedure Interface Figure 5 7 Print Program Complete program including all procedures Current Procedure Current procedure and its used procedures Selection Highlighted program lines and their used procedures External Procedures All external procedures Procedure Options Print Procedures Define whether procedures are printed or not e Used Local Procedures print only used local procedures e All Local Procedures print all local procedures e Used External Procedures also print used external procedures Only Procedure Interface If this box is checked the procedure body is not printed Instead only the interface of the procedure is printed The bodies of external procedures that are locked by a password see section Protected External Proce dures on page 123 are not printed 5 2 1 15 Quit Synopsis Quit HDevelop Checks for Unsaved changes page 156 Shortcut lt Ctr1 Q gt See also exit This menu item terminates HDevelop g cs ral o E 2 D 0 56 Graphical User Interface 5 2
77. menu item Use Model gt Test Images gt Delete Test Image or click the but ton Delete inside the dialog Test Images of the tab Model Use the currently selected test image is deleted from the list of test images You can select a test image by clicking onto its index number or path in the text field left to the buttons You can also delete all test images at once Deleting All Test Images When you select the menu item Use Model gt Test Images gt Delete All Test Images or click the button Delete A11 in the dialog Test Images of the tab Model Use all test images are deleted from the list of test images You can also delete a selected test image Test Images With the menu item Use Model gt Test Images you can e load test images e delete a selected test image or delete all test images e display an already selected test image and e open the dialog Test Images inside the tab Model Use 6 3 3 Matching Assistant Reference 201 The dialog Test Images inside the tab Model Use you need to additionally e select a test image for display or deletion e specify the number of visible objects for each image and e search for the model in the complete sequence of test images in the currently selected test image or automatically after each selection Searching for the Object in a Test Image When you click the button Find Model in the dialog Test Images of the tab Model Use the object is searc
78. more lines in the program window using the mouse e You select one line by clicking on it Previously selected lines will then become deselected e To select more than one line press the lt Ctr1 gt key while clicking on the each additional line 108 Graphical User Interface e The lt Shift gt key is used to select a sequence of lines using one mouse click All lines between the most recent selection and the new one will become select After the selection of lines the edit function can be activated by either using the menu Menu Edit or the tool bar see section Tool Bar on page 104 or via the context menu of the program window see page 111 5 4 1 2 Full Text Editor The full text editor enables free text editing You can click in the program window to place the cursor and type ahead You can select portions of the text with the mouse and have the selection replaced with what you type afterwards This makes small changes to parameter values much faster than using the dialog based editor Special input formats The following assignments are equivalent Both variants can be used in the full text editor but the first variant is more readable FileName clip assign clip FileName Individual tuple elements can be set in the following way Both variants are equivalent but the first variant is more readable Line 12 text insert Line text 1 Line Note that for loops always have to be entered in t
79. name of a variable but it might also be an arbitrary expression like sqrt A Besides control structures like loops and the semantics of parameter passing are described Note that the HALCON operators themselves are not described in this chapter For this purpose refer to the HALCON reference manual All program examples used in this chapter can also be found in the directory HALCONROOT examples hdevelop Manuals HDevelop 7 1 Basic Types of Parameters HALCON distinguishes two kinds of data control data numbers or strings and iconic data images regions etc By further distinguishing input from output parameters we get four different kinds of parameters These four kinds always appear in the same order in the HDevelop parameter list In the reference manual operator signatures are visualized in the following way operator iconic input iconic output control input control output As you see iconic input objects are always passed first followed by the iconic output objects The iconic data is followed by the control data and again the input parameters succeed the output parameters Any of the four types of parameters may be empty For example the signature of read_image reads read_image Image FileName The operator read_image has one output parameter for iconic objects Image and one input control parameter FileName The parameter types are reflected when entering operators in the operator window The actual o
80. of the following parts e radio buttons for selecting whether the shape model is created at run time from the model image page 185 or if an already existing shape model is to be loaded For the first case you can additionally select whether to use the model image and the ROI page 185 that were specified inside the Matching Assistant or whether a new ROI has to be drawn at run time e acheck box to select whether to display the detected model instances in a loop and e the button Insert Code to insert the code generated by the Matching Assistant into the program window of HDevelop 6 3 3 Matching Assistant Reference 209 Specifying the Variables for the Code Generation Via the menu item Code Generation gt Show Variables for Code Generation you can open the dialog for determining the variables used for the code generation inside the tab Code Generation The dialog consists of several text fields for the individual variables needed for the code lines The Matching Assistant automatically generates reasonable variable names but you can change the individual names via the text fields Insert the Generated Code Lines Via the menu item Code Generation gt Insert Code also accessible as tool bar button or as button inside the tab Code Generation you can insert the code that is generated according to the current settings of the Matching Assistant into the program window Release the Generated Code
81. of the threshold operator In the following we will use one of HDevelop s visual tools to find more appropriate settings interactively 4 8 Improving the Threshold Using the Gray Histogram Click Visualization gt Gray Histogram to open a tool for the inspection of gray value histograms One of its uses is to determine threshold bounds visually Because the graphics window currently dis plays only regions the gray histogram is initially empty Double click the Clip icon in the variable window to re display the original image and watch its gray histogram appear to f E E o o fo a 38 Programming HDevelop Gray Histo EY Threshold 1 lo 56 Insert Code none I Connection IV Update x Histogram Options A Output visualize threshold operation Color colored 3 y Draw ei Z output Destination Line Width 1 24 originating window Statistics Figure 4 8 Determining threshold bounds interactively using the gray histogram Select Threshold in the column Operation of the gray histogram window and click the icon next to Threshold to visualize the operation Now you can try different threshold bounds by altering the values in Min and Max or by dragging the lines in the histogram area see figure 4 8 Any changes to these values are immediately visualized in the active graphics window The values 0 and 56 seem suitable for the lower and upper bounds respectively 4 9 Edit Lin
82. one element most operators work as follows e If one of the tuples is of length one all elements of the other tuples are combined with that single value for the chosen operation o te o te l 216 HDevelop Language Symbol Types i integer arithmetic that is integer or real boolean s string v all types atomic ct all types tuple Table 7 3 Symbols for the operation description Input Result 5 5 25 5 5 25 1 2 3 2 2 4 6 1 2 3 2 1 10 12 1 14 2 16 3 1 2 3 1 2 3 1 4 9 1 2 3 1 2 runtime error Text1 Text2 TextiText2 17 3 2173 Text 3 1 2 Text 6 2 3 1 2 Text 3 1 2 Text runtime error 25 1 Text 3 1 2 Text 3 12 Text Table 7 4 Examples for arithmetic operations with tuples and strings e If both tuples have a length greater than one both tuples must have the same length otherwise a runtime error occurs In this case the selected operation is applied to all elements with the same index The length of the resulting tuples is identical to the length of the input tuples e If one of the tuples is of length 0 a runtime error occurs In table 7 4 you can find some examples for arithmetic operations with tuples Pay special attention to the order in which the string concatenations are performed The basic arithmetic operations in HDevelop are P
83. position depends on the editing mode In the dialog based editor valid code lines from the paste buffer are inserted at the IC In the full text editor the text from the paste buffer is inserted at the text cursor position The following functionality is only available in the dialog based editor If the paste buffer contains local procedures that do not exist they are added to the current program If the paste buffer contains calls to external procedures the paths to those procedures are copied too However before an external procedure path is added during a paste action you are asked whether or not you want to add that particular path to the external procedure paths The mechanism of copying and pasting procedure calls together with the corresponding procedures is an easy way to transfer procedures between different HDevelop programs It also works between multiple instances of HDevelop The contents of the internal buffer are kept allowing this command to be repeated 5 2 2 6 Delete Synopsis Delete the highlighted program lines from the program window Shortcut lt Del gt This menu item deletes all highlighted program lines without storing them in an internal buffer The only way to get the deleted lines back into your program body is to use the menu item Undo 5 2 2 7 Activate Synopsis Uncomment the highlighted program lines Shortcut lt F3 gt All of the highlighted program lines that were previously commented using the De
84. procedure will only be visible if the correct password is entered in the program window The procedure and procedure call in which program execution was stopped automatically become the current procedure and procedure call 5 2 3 2 Run to Insert Cursor Synopsis Run from PC to IC Shortcut lt Shift F5 gt The menu entry starts executing the program at the line next to the PC The execution continues until the line before the IC is executed Any break points or stop instructions in between cause the program execution to be stopped 5 2 3 3 Step Over Synopsis Execute the next operator in the current program Shortcut lt F6 gt This entry enables you to run a program even if it is not complete step by step HDevelop executes the operator or procedure call directly to the right of the PC After the operator or procedure call has terminated all computed values are assigned to their respective variables that are named in the output parameter positions Their graphical or textual representation in the variable window is also updated If iconic data has been computed you will see its presentation in the active graphics window In the status bar the runtime of the operator or procedure call is indicated unless the time measurement has been deactivated The PC is then moved to the next operator or procedure call to execute If the operators or procedure calls are specified in a sequential order this is the textual successor In
85. protected procedures This is displayed in figure 5 6 Properties Properties General Used Modules General Used Modules File Name engraved dev I Check only used procedures Path 33 examples hdevelop Applications OCR Foundation we P Calibration Created Fri Mar 9 17 23 57 2007 Last Modified Fri Mar 9 17 23 57 2007 e Writable yes 2D Metrology E 3D Metrolo Size 4689 Bytes ay Lines of Code 57 BarCode Q Used Local Procedures a DataCode Q Unused Local Procedures o OCRIOCY w Matchin Used External Procedures 0 3 Used Protected Procedures 0 Copy to Clipboard Figure 5 6 Properties General left Used Modules right The tab card Used Modules lists the HALCON modules used by the current program Modules marked with a lit bulb are used This window allows you to get an estimate of how many modules your appli cation will need in a runtime license Please refer to the Installation Guide for more information about modules and runtime licenses See figure 5 6 for the corresponding dialog of an OCR example Check only used procedures If checked only used procedures are considered for the evaluation of the used modules Otherwise all procedures are considered Copy to Clipboard Copy the names of the used modules to the system clipboard This way the list can be easily pasted into other applications 5 2 1 14 Print Synopsis Print the current program or selected procedures Shortcut
86. radiometric calibration 5 8 Help Window 141 ES terco Heir HALCON Reference Manual verson 30 TE Contents Operators Sea 4 S A Y 5 syntax Hdevelop y Find About HALCON Reference Manuals HH Programmer s Manuals User Manuals HALCON Reference Manual Operators HALCON Reference Manual Version 9 0 MVTec Software GmbH http www mvtec com Table of Contents eClassification Gaussian Mixture Models oHyperboxes ONeural Nets oSupport Vector Machines e Control e Develop eFile 9 images oMisc Region oText oTuple OXLD Figure 5 51 Help Window Boolean searches with and or and not can also be specified To find all documents that say anything about filters except Gaussian filters enter g cs ral o E 2 D 0 filter not gauss Keywords This tab card gives access to HALCON operators and relevant sections of the documentation through keywords just like an index in a book The list of keywords can be filtered by entering any word into the text field Filter If you enter multiple words only keywords matching all the words are displayed When you select keywords from the list the related operator names and links to the corresponding parts of the documentation are displayed below the keywords You can click on an operator name to read its documentation in the online help If you click on a documentation link the corresponding PDF is opene
87. recom mended to do a Find A11 beforehand to estimate the extent of this operation Replacing Operator Calls You can replace one operator or procedure call with another Because different operators very likely have different parameters the source parameters have to be mapped to the target parameters beforehand See figure 5 10 for an example Click Operators to specify the search context Enter the source operator or procedure name and the target operator or procedure name When both names are specified the parameters of the target opera tor procedure are listed at the bottom of the dialog For every target parameter you have to select or enter a corresponding source parameter 5 2 2 Menu Edit 61 Find Replace Find Replace Variables Operators Texts Search for threshold y Find Find All Replace Fast_threshold Replace All Find Parameter Scope C All Program Current Procedure Options Case Sensitive V Whole Words Il Backward Parameter Replacement Scheme threshold Fast_threshold ls Image y E Image E Region B Region les MinGray y E Mincray E MaxGray D MaxGray y m Minsize Figure 5 10 Replacing operator calls 5 2 2 10 Find Again Synopsis Find the next match of the last entered search string Ga Shortcut lt Ctr1 G gt This menu item repeats the search specified via the menu item Find Replace cs ral o E 2 D
88. required runtime of the last operator or procedure call should be displayed after the execution has stopped It is a measurement of the needed time for the current Operator or procedure call without output and other management tasks of HDevelop Along with the required runtime the name of the operator or procedure is displayed in the status bar at the bottom of the main window Please note that the displayed runtime can vary considerably This is caused by the inaccuracy of the operating system s time measurement procedure This option can also be toggled from the context menu of the status bar see page 44 Update Program Counter See also dev_update_pc This option concerns the display of the current position while running the program The PC always indicates the line of the currently executing operator or procedure call or the line before the next operator or procedure call to execute Using the PC in this way is time consuming Therefore you may suppress this option after your test phase or while running a program with a lot of small operators inside a loop Update Variables See also dev_update_var This check box concerns the execution of a program Every variable iconic and control is updated by default in the variable window This is very useful in the test phase primarily to examine the values of control data since iconic data is also displayed in the graphics window If you want to save time while executing a program with m
89. six digits are output if the precision is explicitly 0 no radix appears e E The floating point number argument is printed in the style 1d ddde dd where there is one digit before the radix character and the number of digits after it is equal to the precision When the precision is missing six digits are produced if the precision is 0 no radix character appears The E conversion character produces a number with E introducing the exponent instead of e The exponent always contains at least two digits However if the value to be printed requires an exponent greater than two digits additional exponent digits are printed as necessary g G The floating point number argument is printed in style f or e or in style E in the case of a G conversion character with the precision specifying the number of significant digits The style used depends on the value converted style e is used only if the exponent resulting from the conversion is less than 4 or greater than or equal to the precision Trailing zeros are removed from the result A radix character appears only if it is followed by a digit o te iv te lt l 226 HDevelop Language s The argument is taken to be a string and characters from the string are printed until the end of the string or the number of characters indicated by the precision specification of the argument is reached If the precision is omitted from the argument it is interpreted as infinite and a
90. the corresponding drawing mode and click into the image Then move the mouse over the object while keeping the left mouse button pressed the selected shape appears After releasing the mouse button you can move the ROI by dragging its center marked with a cross with the left mouse button Furthermore you can edit the shape by dragging its boundaries You finish the creation by clicking once with the right mouse button or by clicking the Stop button in the tool bar of the main window By selecting the menu item Create Model gt Create ROI gt Arbitrary Region or the corresponding button in the tab Model Creation you can create polygons and free form shapes To create a polygon click with the left mouse button to mark each corner point a click with the right mouse button closes the polygon and finishes the creation To create a free form ROI draw it directly while keeping the left mouse button pressed a click with the right mouse button closes the shape and finishes the creation Note that in both cases you cannot edit the ROI after its creation In order to create an optimal model please assure that the region of interest contains only characteristic parts of the object and no clutter After creating an ROI you can specify standard model parameters Typically you now select what contrast page 193 the points must have in order to be included in the model Displaying the Model Image Pressing the button Display Model in the to
91. the highlighted program lines in the program window to an internal buffer Shortcut lt Ctr1 X gt The highlighted program lines are removed from the selected procedure and placed in an internal buffer for later use Additionally for every procedure call the corresponding procedure and all procedures that can be reached from it are copied to the buffer This is necessary in order to obtain a consistent program when pasting procedure call lines to a program in which the corresponding procedures might not exist The highlighted program lines are also copied to the system clipboard 5 2 2 Menu Edit 57 5 2 2 4 Copy Synopsis Copy the highlighted program lines from the program window to an internal buffer Shortcut lt Ctr1 C gt The highlighted program lines are copied to an internal buffer without affecting the program Addition ally for every procedure call the corresponding procedure and all procedures that can be reached from it are copied to the buffer This is necessary in order to obtain a consistent program when pasting procedure call lines to a program in which the corresponding procedures might not exist The highlighted program lines are also copied to the system clipboard 5 2 2 5 Paste Synopsis Insert text into the currently selected procedure at the IC Shortcut lt Ctr1 V gt You can insert code lines from previous Cut or Copy operations or text placed in the system clipboard into the current procedure The insert
92. the same name as the output parameter is already instantiated a number is added to the name to make it unique Because the parameter names characterize the computed result very well you may adopt these default names in many cases Besides this you are free to choose arbitrary names either by yourself or by opening the list see above If you use a variable that already has a value this value is overwritten with the new results It is possible to specify a variable both in an input and output position Control input parameters These parameters normally possess a default value As an alternative you may use the text field s button to open a combo box and to select a suggested value In addition this combo box contains a list of variables that contain values of the required type A restriction of proposed variables is especially used for parameters that contain data like file image acquisition or OCR handles Input control parameters may contain constants variables and expressions Common types are integer numbers integer floating point numbers real boolean values true and false and character strings string g cs ral o E 2 D 0 You can also specify multiple values of these types at once by using tuples This is an array of values separated by commas and enclosed in square brackets Furthermore you may build up expressions with these values You may use expressions in HDevelop similar to the use of
93. the semantics if appropriate You can select which statistical data is displayed by right clicking on the statistics table and selecting the corresponding entries You can also select multiple control variables at once in the variable window by holding down the lt Ctr1 gt key To inspect these variables in a single inspection window right click on the selected variables and select Inspect An example inspection window is displayed in figure 5 44 Control variables that reference a matrix are displayed in a tabular format as displayed in figure 5 45 Copying Values to the Clipboard Within the variable window the context menu offers an entry for copying the values of the selected variable to the system clipboard If the variable window has the keyboard focus lt Ctr1 C gt can be used as an alternative Tuples with zero or more than one values are returned in tuple notation If several variables are selected the tuples of the different variables are separated by a new line Variable Inspect ColumnEdgeFirst H ol xj ColumnEdgeFirst a 0 94 1577 105 357 116 023 126 739 137 489 148 515 159 023 169 873 1A1 nn ZI 94 1577 el 2 s 7 A 876 281 35979 5 sm eal 486 21 230 384 double 74 Max point x Figure 5 44 Control variable inspection 5 6 2 Control Variables 135 Figure 5 45 Inspection of a matrix control variable Inspecting Image Acquisition Device Handles For
94. title see section Proce dure Interface Dialog on page 113 Procedures without a chapter title are listed directly in the menu Edit Procedure If you click on a procedure name it will become the current procedure in the program window You can also select procedures in the combo box of the program window page 105 5 2 6 Menu Operators Synopsis Select HALCON operators and procedures This menu item comprises all HALCON and HDevelop operators including the HDevelop control con structs Furthermore procedures can be selected from a submenu at the bottom of this menu The following descriptions provide an overview of the operators specific to HDevelop programs For detailed information about all operators it is highly recommended to read the corresponding sections of the reference manual To get there quickly select an operator from the menu and click the button Help in the operator window 5 2 6 1 Control Synopsis Select control flow operators Here you may select control structures for the program This involves the execution of a program segment henceforth named body depending on a test if ifelse and elseif and the repetition of a program segment for while and repeat with controlled loop execution break continue Exception handling is implemented with try catch and endtry along with throw for user defined exceptions Furthermore you may stop the program s execution at any position stop or terminate HDevelo
95. to inspect their values If you decide not to enter the line into the program body some unused variables may thus be created You can easily remove them by selecting Menu File gt Cleanup Cancel Clicking Cancel clears the contents of the operator window Thus there are neither changes in the program nor in any variables Help Clicking Help invokes the online help for the selected operator or procedure For this the system activates the online help window see Help Window 5 6 Variable Window There are two kinds of variables in HALCON corresponding to the two parameter types of HALCON iconic objects images regions and XLDs and control data numbers strings The corresponding vari ables are called iconic and control variables These variables may possess a value or may be undefined An undefined variable is created for example when loading a program or after inserting an operator with a new variable that is not executed immediately into a program You may access these undefined variables only by writing to them If you try to read such a variable a runtime error occurs If a vari able obtains a value the variable type is specified more precisely A control variable that contains for example an integer is of type integer This type might change to real or a tuple of integer after specifying new values for this variable But it always remains a control variable Similarly this is the case for iconic variables which may contain regio
96. type real The functions are applied to all tuple values and the resulting tuple has the same length as the input tuple For atan2 the two input tuples have to be of equal length table 7 13 shows the provided trigonometric functions For the trigonometric functions the angle is specified in radians Operation Meaning HALCON Operator sin a sine of a tuple_sin cos a cosine of a tuple_cos tan a tangent of a tuple_tan asin a arc sine of a in the interval 7 2 7 2 a 1 1 tuple_asin acos a arc cosine a in the interval 7 2 7 2 a 1 1 tuple_acos atan a arc tangent a in the interval 7 2 7 2 a oo 00 tuple_atan atan2 a1 a2 arc tangent a1 a2 in the interval 7 7 tuple_atan2 sinh a hyperbolic sine of a tuple_sinh cosh a hyperbolic cosine of a tuple_cosh tanh a hyperbolic tangent of a tuple_tanh Table 7 13 Trigonometric functions 7 5 11 Exponential Functions All these functions work on tuples of numbers as arguments The input can either be of type integer or real However the resulting type will be of type real The functions are applied to all tuple values and the resulting tuple has the same length as the input tuple For pow and 1dexp the two input tuples have to be of equal length See table 7 14 for the provided exponential functions Operation Meaning HALCON operator exp a exponential function e tuple_exp log a natural logarithm In a a gt 0 tuple_log log10 a deca
97. u 1 a sl File name earth png X Files of type Images tif tiff gif bmp ipg ipeg ip2 py Cancel die7 png Width 150 Height 150 Color type byte Channel number 3 Insert Cursor C Program Counter Figure 3 1 After dragging an image file onto the HDevelop window Images from Selected Directories Apart from dragging and dropping images there is an equivalent method from within HDevelop Select File gt Read Image to get a list of image directories to choose images from Again this will open a native file selection dialog Browse to and select the desired image from there and click OK to open up the dialog Read Image described above 3 2 Viewing Images When images are read as described above they are automatically displayed in the active graphics win dow This is the default behavior in HDevelop but the automatic display of images can be suppressed if desired e g to speed up computationally intensive programs Initially the loaded image fills the graphics window entirely The window itself is not resized so the aspect ratio of the image might be skewed Using the tool box of the graphics window you can easily zoom the image or change the window size with regard to the image We recommend to adapt the window size to the size of the image because otherwise the display is slowed down The image size the window size and the displayed part of the image are set with the tool
98. used in input control parameters of operator calls To iterate over the elements in Phi we use a for loop which counts from zero the index of the first element of a tuple to the number of elements minus one The for loop is entered just like a common HALCON operator Enter for into the operator window and specify the parameters as in figure 4 11 The notation Phi 1 is part of the HDevelop language This operation calculates the number of elements in Phi minus one When inserted in the program window the operator for is displayed in a different format to make it more readable Note that the closing endfor is entered automatically if the corresponding check box is ticked Also note that the IC is placed between the added lines so that the body of the loop can be entered Operator Window Insert for lolx Enter Operator or Procedure for y Y Insert endfor automatically da gt gt main EAA Al Pactos read image Clip clip E threshold Clip Region 0 56 E swt PE connection Region ConnectedRegions e select_shape ConnectedRegions SelectedRegions area End Phi 1 y integer orientation region SelectedRegions Phi area_center SelectedRegions Area Row Column Step 1 integer for Index 0 to Phij 1 by 1 Slendfor El Index Index y integer Figure 4 11 Entering a loop in HDevelop to f E E o o fo a 42 Programming HDevelop Add the fol
99. window you can visualize the selected regions i e the regions whose area falls between the values Min and Max which are represented by the green and red vertical lines respectively Click the icon next to the selected feature area to enable the visualization Specify the parameters in the Output section of the feature histogram window as shown in figure 4 9 on page 39 Drag the green and red line to see how this affects the selected regions In the histogram we can see that in order to cover all the clips we can safely select regions whose area is between say 4100 and the maximum value in the histogram When you are satisfied with the selection click the button Insert Code The following line with similar numeric values will be added to your program at the position of the IC select_shape ConnectedRegions SelectedRegions area and 4100 5964 Run the program and inspect the output variable SelectedRegions The regions corresponding to the clips are now determined correctly To obtain the orientation and the center of gravity of the clips add the following operator calls to the program orientation_region SelectedRegions Phi area_center SelectedRegions Area Row Column The operator orientation_region returns a tuple of values For each region in SelectedRegions a corresponding orientation value in Phi is returned The operator area_center in the same way returns the area row and column of each input region as tuples
100. 10 2 HALCON Reference Synopsis Display the HALCON Reference Manual in the online help window 5 2 10 3 HDevelop Reference Synopsis Display the HDevelop Reference chapter in the online help window 5 2 10 4 HDevelop Language Synopsis Display the HDevelop Language chapter in the online help window 5 2 10 5 Search Documentation Synopsis Open the online help window and show the search tab to enter search queries The online help provides an integrated search engine You can enter search queries there and search the HALCON documentation suite The search syntax is described in section Help Window on page 140 5 2 10 6 HALCON News WWW Synopsis Visit the HALCON home page This menu item lets you check for the latest news about HALCON on MVTec s WWW server e g whether new extension packages image acquisition interfaces or HALCON versions are available 5 2 10 Menu Help 103 5 2 10 7 About Synopsis Display HDevelop version and licensing host IDs This menu item delivers information about the current HALCON and HDevelop version Furthermore it lists host IDs detected by the license manager see the Installation Guide for more information GUI Reference 104 Graphical User Interface 5 3 Tool Bar You use most icons in this tool bar to accelerate accessing important HDevelop features These are features which you are performing many times while working with HDevelop Hence there are buttons t
101. 2 3 1 Run Synopsis Execute the current program from the PC Shortcut lt F5 gt The program line marked by the PC is the first line that is executed All following program lines are going to be performed until the end of the current program After the execution is finished the main procedure becomes the current procedure Note that a break point stop instruction or runtime error may interrupt the execution of your program If the HDevelop program waits for the user to draw something in the graphics window a notification message is printed in the status bar The program halts until the user finishes the draw operation and confirms this by clicking the right mouse button During the execution of operator or procedure calls the following special behavior occurs You may initiate limited activities For example if you double click variables in the variable window page 129 they will be visualized you may modify parameters for the graphics windows as described in the Menu Visualization you may even modify the current procedure body Note that all user interaction except Stop is disabled during program execution in case the latter was not started in the main procedure HDevelop may be slow to react to your actions while the program is running This is caused by the fact that HALCON reacts to user input only between calls to operators A variable window update during runtime will only be performed if it has not been suppressed see section
102. 227 242 tuple_regexp_replace 227 242 tuple_regexp_select 228 242 tuple_regexp_test 228 242 tuple_remove 219 242 tuple_round 231 243 tuple_rsh 223 242 tuple_select 219 242 tuple_select_range 219 242 tuple_select_rank 231 243 tuple_sgn 231 243 tuple_sin 230 243 tuple_sinh 230 243 tuple_sort 233 243 tuple_sort_index 233 243 tuple_split 227 242 tuple_sqrt 231 243 tuple_str_bit_select 226 242 tuple_strchr 226 242 tuple_string 223 242 tuple_strlen 226 242 tuple_strrchr 226 242 tuple_strrstr 226 242 tuple_strstr 226 242 tuple_sub 222 242 tuple_sum 231 243 tuple_tan 230 243 tuple_tanh 230 243 tuple_unig 219 242 tuple_xor 229 242 Type 115 type 278 boolean 277 integer 277 real 277 278 string 277 278 Undo 56 Unicode 52 UNIX 250 266 unnamed 43 unsaved changes 43 until 106 236 until 236 292 Index Update 146 Update Graphics Window 73 Update Image 161 Update Program Counter 73 Update Variables 73 131 Update Window 83 Use Model 199 User 130 UTF 8 encoding 52 70 variable _ 214 variable window 17 variable window 129 278 layout 130 resize 130 tabs A11 Auto User 130 variables 214 view image pyramid 191 view model image 191 view test image 201 Visibility 162 visible objects 202 Visual Basic 9 export of HDevelop programs 263 Visual Basic NET 9 export of HDevelop programs 258 260 Visualization
103. 4 21065 21066 21067 21068 21069 21070 21071 21072 21073 21074 21075 21076 21100 21101 21102 21103 21104 HDevelop Error Codes HALCON operator error User defined exception throw User defined error during execution User defined operator does not implement execution interface HALCON license error HALCON startup error HALCON operator error Format error file is not a valid HDevelop program or procedure File is no HDevelop program or has the wrong version External procedure could not be decompressed External procedure could not be compressed and encrypted for saving The program was modified inconsistently outside HDevelop The program was modified outside HDevelop inconsistent procedure lines The program was modified outside HDevelop unmatched control statements renaming of procedure failed Unable to open file Unable to read from file Unable to write to file Unable to rename file Unable to open file invalid file name Old program version Not supported for hdevelop_demo Wrong program crypt code Not allowed in hdevelop_demo Inserting procedures is not supported in hdevelop_demo Iconic variable is not instantiated Control variable is not instantiated no value Wrong number of control values Wrong value type of control parameter Wrong value of control parameter Control parameter does not contain a variable Wrong number of control values in condition variable Wrong type Condition variable must be
104. 8 6 3 1 Variable Names In contrast to C C or HDevelop Visual Basic has many reserved words Thus the export adds the prefix ho_ to all iconic and hv_ to all control variables respectively in order to avoid collisions with these reserved words 8 6 3 2 Exception Handling In HDevelop every exception normally causes the program to stop and report an error message in a dialog window This might not be useful in Visual Basic The standard way to handle this in Visual Basic is by using the On Error Goto command This allows to access the reason for the exception and to continue accordingly Thus for HDevelop programs containing error handling dev_error_var the corresponding code is automatically included Please note that a call of dev_ set_check give_error has no influence on the operator call The exception will always be raised This is also true for messages like H_MSG_FAIL which are not handled as exceptions in C for example When handling exceptions you also have to be aware that the COM interface always resets the output parameters at the beginning of the operator execution Thus when the exception occurs output variables are set to Nothing Therefore you cannot use the values of variables used as output parameters of the operator causing the exception 8 7 Code Generation for C This section describes how to create a HALCON application in C starting from a program developed in HDevelop 8 7 1 Basic Steps 8 7 1 1 P
105. 800 be eek ee eee eae ees 79 229 Menu Procedures ee AA A ER 90 Iae MEn OPEIS oa narse o Aag A A ee s 92 327 Memi SEE SECOS ers 6 a ee a a 98 328 Menu Assistam S 2 24464 2744 8 eS bs Bek ee eRe e 99 LEY Wien NIDOS gf eho be we A ee a SiS kd i 99 Sel Memm Help ecos oe baw a eb eal Sea ee Gwe ad Goal a oh eee 102 Ja TOUL Ba a a Be RR a BE Baa Si Ae owe aca Ba ARS 104 34 Proeram Window gt s e oso a e BR wa ee ee 105 34 1 Editing Programs e secot aoe eosa A Rh Oe a we a eB i 105 5 4 2 Program Counter Insert Cursor and Break Points 111 54 3 Creating and Editing Procedures lt s o 4 6 24 4 raras EN ee Ee ey 112 Ya Operor Window isos pee de bb ia eee ew A 125 55 1 Operator Name Meld odo 24542 B45 24545 d Sesh ewe de SAG 125 Haz Parameter Display once sh eS SS EAS See A 125 Dae Conto BOUCHE 6 6 oe e eee ere ee Ee eae ee G 128 20 VAHAablE WIIOS oi aa SB Re Ge Ge RE Ba PERS 129 30 1 konie Variables cios oi eA ew a ee ee ea 131 202 Couitol VErables 0 ios se Gee ad a Sw mB ce Gk 133 37 Graphics Window 2s 24 4c bee eee A e ee ee E 136 36 Help Window o hs BERG BAS eee a E ee aS 140 29 Zoom WOW i 6s ye ke Gd he we Oe ee ee ee be hoe eS 143 5 10 Gray Histogram Window s e seori 2654 8 4446 44845 06 284 4 e6 854 S45 145 STO Interactive Visual Op rations cocos ee ee ee eS 148 3511 Feature Histogram WOW ocios a eb e Bice Saeed ba we Stee we ee 151 5 12 Feature Inspection Window comodines sr Glee Be eS 153 S
106. Again run the program and inspect the calculated control variables You can inspect multiple control variables in one inspection window This is especially useful if the control variables all relate to each other as in this example In the variable window select all control variables hold down the lt Ctr1 gt key and right click Inspect see figure 4 10 Variable Inspect Area Row Column Phi 0 691604 2 4989 0 671646 AN REAL Control Variables P WA P WA E 0 691604 0 36226 1 98853 2 4989 0 671646 0 4767 399 981 339 445 1 86347 487 503 4916 450 672 667 683 1 47322 0 117317 0 148027 Clear Variable 126 4 Add to User Tab Sort by Name Sort by Occurrence 0 295232 5011 664 751 427 176 1 71117 5265 660 569 590 18 2 55278 y real real lv Update Variables Cleanup All Figure 4 10 Inspecting control variables 4 13 Looping Over the Results 41 4 13 Looping Over the Results Being an integrated development environment HDevelop provides features found in other programming languages as well Variable assignment expressions and control flow Variable assignment and control flow are implemented in terms of specific HDevelop operators These operators can be selected from the menu Operators gt Control Expressions are implemented in terms of a specific HDevelop language which can be
107. D 0 e A last exception is an empty region This is one region that does not contain any pixels points 1 e the area number of points is 0 You must not confuse this case with the empty tuple because there the area is not defined The empty region is symbolized by an empty set icon 5 6 2 Control Variables To the right of the variable name you find its values in the default representation you have to keep in mind that a floating point number without significant fractional part is represented as an integer e g 1 0 is represented as 1 If you specify more than one value for one variable tuple they are separated by commas and enclosed by brackets If the number of values exceeds an upper limit the output is clipped This is indicated by three dots at the end of the tuple For undefined variables their name and a are 134 Graphical User Interface shown in the variable field An empty tuple is represented by Both exceptions use the same symbols as the corresponding cases for the iconic variables Inspecting and Editing Variables See also dev_inspect_ctrl Double clicking a control variable opens a window that displays all its values in a tabular format This is helpful if you have tuple variables with a large number of values that you want to inspect Below the list some statistical data may be displayed minimum value maximum value sum of values mean value deviation types number of values and
108. Delete g Move Up EJ Activate ll TE Move Down Ek Deactivate Auto Indent Create Nev SetProgram Counter gt Set Insert Cursor V Update Program Counter WindowHandle SetBreakpoint LA Cancel Apply Help ozs Clear Breakpoint 18 Clear all Breakpoints E Print A A ES Ree ImageFile clip p _init_image Image ImageFile Pointer Type Width Height WindowHandle 3 threshold Image Region 0 50 4 connection Region ConnectedRegions 5 select_shape ConnectedRegions SelectedRegions area and 150 99999 LK os Ree ljread_ image Image ImageFile 2 get_image pointer1 Image Pointer Type Width Height dev_close window dev_open window 0 0 Width Height black WindowHandle H p init_image Image ImageFile Pointer Type Width Height WindowHandle Sjdev_ display Image Q re c o Q LY oa return 0 Figure 5 35 Creating a procedure from selected lines 5 4 3 2 Creating Procedures New procedures are created by clicking the entry Menu Procedures gt Create New Procedure The program lines marked in the program window are copied and inserted in the program body of the new procedure This is illustrated in figure 5 35 If the last selected program line is not a return operator a return call is added at the end of the procedure body If no lines are selected in the program window 122
109. Develop program 6 2 4 5 Code Preview Here you can e g edit or replace individual operators of the code lines proposed by the Calibration Assistant For details see also Code Generation page 183 in the menu 6 2 5 Calibration Assistant Reference The Calibration Assistant consists of the following elements Pull down menus e File e Calibration page 183 e Code Generation page 183 e Help page 184 Tool bar with a selection of important buttons e Load Assistant Settings e Save Current Assistant Settings e Insert Code page 183 e Calibrate page 169 e Help page 184 Tabs with the dialogs for most of the tasks that can be done with the Calibration Assistant 182 HDevelop Assistants e Setup page 184 e Calibration page 184 e Results page 184 e Code Generation page 178 Furthermore it provides a status bar at the bottom in which messages are displayed The status bar also displays the calibration results page 177 i e if the calibration was successful Please note that the status bar does not provide a scrolling mechanism if the displayed message is too long move the mouse over it so that a tool tip displaying the full message pops up Alternatively if the message is only slightly larger than the status bar you can also drag the left or right border of the Calibration Assistant window to enlarge it Images are displayed in the graphics window of HDevelop 6 2 5 1 The Menu File
110. HALCON program the behavior of an exported pro gram will differ in some points from its HDevelop counterpart A prominent example is that in HDe velop all results are automatically displayed while in the exported programs you have to insert the corresponding display operators explicitly Section 8 8 on page 267 describes these differences in more detail 8 1 Code Generation for C This section describes how to create a HALCON application in C starting from a program developed in HDevelop 250 Code Export 8 1 1 Basic Steps 8 1 1 1 Program Export The first step is to export the program using the menu File gt Export Here select the language C HALCON C and save it to a file A file will be created that contains the HDevelop program as C source code For every HDevelop procedure except the main procedure the exported file contains a C procedure with the corresponding name Iconic input and output parameters of a procedure are declared as Hobject and Hobject respectively while control input and output parameters are declared as HTuple and HTuplex respectively All procedures are declared at the beginning of the file The program body of the HDevelop main procedure is contained in a procedure action which is called in the function main action and main can be excluded from compilation by inserting the instruction define NO_EXPORT_MAIN at the appropriate position in the application Using the instruction
111. Keyboard Shortcuts in the Help Window lt Alt gt lt Left gt go back in the browse history lt A1t gt lt Right gt go forward in the browse history lt A1t gt lt Home gt go to starting the page of the HALCON Refer ence Manual lt A1t gt lt Return gt enter operator into operator window lt Ctrl gt lt p gt print current page lt Ctrl gt lt gt increase font size lt Ctrl gt lt gt decrease font size lt Ctr1 gt lt d gt add current page to the bookmarks lt Tab gt highlight next link lt Shift gt lt Tab gt highlight previous link lt Enter gt jump to highlighted link 5 9 Zoom Window Synopsis Zoom window for image details and pixel inspection See also Menu Visualization gt Zoom Window The zoom window enables the interactive inspection of image details You can open up any number of zoom windows with different zoom levels see Menu Visualization gt New Zoom Window The window also displays the gray values of each image channel at the mouse cursor position Apart from this the pixel type the number of channels and the current position of the mouse cursor are displayed The percental scale can be selected from the combo box It is related to the original size of the image There are multiple methods to navigate the zoom window Check Follow Mouse and move the mouse pointer over the image to select the zoomed area Click once to keep the currently displayed area in the zoom window when the mouse
112. Lines Via the menu item Code Generation gt Release Generated Code Lines you can release the gen erated and inserted code lines After releasing the code lines all connections between the Matching Assistant and the program window of HDevelop are lost That is changes e g the deletion of code lines can then only be applied directly in the program window and not from within the Matching Assis tant anymore Delete the Generated Code Lines Via the menu item Code Generation gt Delete Generated Code Lines you can delete the code lines that you have previously generated and inserted into the program window of HDevelop from within the Matching Assistant Note that this works only as long as you have not yet released the code lines Preview of the Generated Code Lines Via the menu item Code Generation gt Show Code Preview you can open the dialog for the Code Preview in the tab Code Generation Here you have the possibility to e g edit or replace individual operators of the code lines proposed by the Matching Assistant 6 3 3 6 The Menu Help Via the menu Help you can access the online documentation 210 HDevelop Assistants HDevelop Language 211 Chapter 7 HDevelop Language This chapter introduces the syntax and the semantics of the HDevelop language In other words it illustrates what you can enter into a parameter slot of an operator or procedure call In the simplest case this is the
113. N error mechanism is turned off is enclosed in a Try block followed by a Catch block The latter handles the exception and assigns the corresponding HALCON error number to the error variable activated by dev_error_var or to a local error variable otherwise Please note that a call of dev_ set_check give_error has no influence on the operator call The exception will always be raised This is also true for messages like H_MSG_FAIL which are not handled as exceptions in C for example 8 4 3 3 Memory Management The NET Framework s runtime environment CLR Common Language Runtime has a mechanism called garbage collector which is used by the CLR to remove no longer needed NET objects from memory As mentioned earlier in the exported Visual Basic NET code every iconic object is represented by a NET HObject object From the garbage collector s point of view a NET HObject object is rather small Thus it might not be collected from memory although the underlying iconic object e g an image might in fact occupy a large portion of memory In order to avoid memory leaks caused by this effect in the exported code every iconic object is deleted explicitly before it is assigned a new value 8 5 Code Generation for Visual Basic NET HALCON COM This section describes how to create a HALCON application in Visual Basic NET starting from a program developed in HDevelop HALCON can be used together with Visual Basic NET based on the COM
114. O gt Value LO gt real gt Cs boolean T Figure 7 1 The syntax of tuple constants integer gt types The standard representation of a tuple is a listing of its elements included into brackets This is illustrated in figure 7 1 specifies the empty tuple A tuple with just one element is to be considered as a special case because it can either be specified in the tuple notation or as an atomic value 55 defines the same constant as 55 Examples for tuples are 4711 0 815 Text 16 100 0 100 0 200 0 200 0 FileName Extension 4711 0 815 Hugo 7 3 Variables Names of variables are built up as usual by composing letters digits and the underscore _ The max imum length of a variable name is limited to 256 characters The kind of a variable iconic or control variable depends on its position in the parameter list in which the variable identifier is used for the first time see also section 7 1 on page 211 The kind of the variable is determined during the input of the operator parameters whenever a new identifier appears a new variable with the same identifier is cre ated Control and iconic variables must have different names The value of a variable iconic or control is undefined until the first assignment defines it the variable has not been instantiated yet A read access to an undefined variable leads to a runtime erro
115. P Dialogs so ecco emeti oes eA Pe eae eee be edo Be 155 3 13 1 File Selection Dialog cocos cura da Be we a oe Be d 155 3132 Unsaved Changs e coe eee RAR eR RHA wee ee ES 156 HDevelop Assistants 157 6 1 Image Acquisition Assistant 2 462448 65 ee ee dw eee Ee eS 158 GLL TOPPO E s AS ae NN 159 012 Tab Connection 5c 464 ee REE oee a e a a 159 GLF Tab Parameters opa a a a ea gee aoe oe a eh 161 6 1 4 Tab Code Generation a a a 162 ELS Mu BAG ale be ae e ai we a a e aa aat ee Sl hw eh i 163 62 CAMION Assistant o e esep e ee ee EE RY Ge oe EA a 164 6 2 1 Introducing the Calibration Assistant of HDevelop 164 6 2 2 How to Calibrate with the Calibration Assistant 166 62 5 R sultsof the Calibration p s e po oia a i aa ew ee E 177 0 2 E E ea E eS 178 6 2 5 Calibration Assistant Reference lt s r erras ea n ee E e e es 181 6 3 Matching Assistant lt o o o eoe ee RRR DAE EER RA Ee ee ey 185 6 3 1 Introducing the Matching Assistant of HDevelop 185 6 3 2 How to Use the Matching Assistant of HDevelop 185 6 3 3 Matching Assistant Reference e 5 oe eR ee RR Oe ee GS 188 HDevelop Language 211 7 4 Basie Typecast Parameters ocean OA ee Ge ES Bale aed 211 7 2 Control Types and Constants ek a ee eG 212 Ta VACIADIES soca a A a eee eee ee a Aes 214 7 4 Operations on Iconic Objects 2 ee 215 7 5 Expressions for Input Control Parameters
116. Parameters It opens the settings window displayed in figure 4 6 After trying some settings click the button Reset to restore the default visualization settings Visualization Parameters lO x Pen LUT Paint Zoom poes C fil margin Shape ellipse y Line Width 1 Preview Color O ss C6 CN magenta yellow medium slate blue coral slate blue spring green orange red orange dark olive green pink cadet blue gold forest green See eee Nes IV Update Reset Use settings for new windows Figure 4 6 Changing the display parameters You cannot change the display properties of regions or XLDs other than the topmost What you can do is rebuild the image stack in the graphics window manually by double clicking iconic variables in the variable window and changing the properties each time another layer is added The stack is cleared 4 7 Inspecting Variables 37 Ye ConnectedRegions l o x Region 1 area 100 center 14 7 1 08 4 Region 2 area 801 center 215 739 C Region 3 area 2554 center 122 93 Region 4 area Graphics Window 3600 Selected Iconic Object a Ol xj SiaTMa y Erft 100 y 3028 center 169 357 Region 5 area 2 center 107 5 357 5 Region 6 area 2980 center 193 913 Region 7 area 2 center 137 406 5 Region 8 area 1 center 138 404 Region 9 area 8 center
117. The standard model parameters for the scale range page 195 specify how much the object is allowed to be scaled in row and column direction To speed up the matching process the Matching Assistant pre computes instances of the model at intermediate scales in this range at steps specified in the parameters Row Scale Step and Column Scale Step Note that each time you create a model RO page 185 or change the parameter Contrast page 193 the Matching Assistant automatically selects a suitable value to obtain the highest possible accuracy You can select a higher value manually This may be useful to speed up the search process in special cases please note however that a large value may decrease the accuracy of the estimated orientation and even prevent the Matching Assistant from finding the object You can restore the automatically selected value by clicking the button Auto Select If you already loaded test images page 200 you can quickly test the effect of the selected parameter value via the menu item Inspect gt Determine Recognition Rate page 207 Letting the Matching Assistant Select a Suitable Value for Row Scale Step and Column Scale Step When you click the button Auto Select that is placed right beside the sliders for the parameters Row Column Step Size the Matching Assistant selects suitable values for both scale step sizes based on the model image The Model Parameter Metric The parameter Metric let
118. Via the menu File you can e load formerly used and saved settings of the Calibration Assistant e save the current settings of the Calibration Assistant for later use e close the Calibration Assistant dialog while retaining the current settings as long as the HDevelop session is active and e exit the Calibration Assistant dialog discarding the settings Loading Assistant Settings If you have saved the settings of a former Calibration Assistant session you can load them again by the menu item File gt Load Assistant Settings or via the corresponding button of the tool bar Save Current Assistant Settings You can save the current settings of a Calibration Assistant session using the menu item File gt Save Current Assistant Settings or the corresponding button in the tool bar Then you can load them again in a later session Close the Calibration Assistant Dialog When closing the Calibration Assistant dialog with the menu item File gt Close Dialog the current settings are stored for the duration of the current HDevelop session That is as long as you do not exit HDevelop you can again open the Calibration Assistant with the same settings In contrast to this when you exit the Calibration Assistant the settings are lost also for the current HDevelop session Exit the Calibration Assistant 6 2 5 Calibration Assistant Reference 183 When you exit the Calibration Assist
119. What you enter in the operator window as for start end step index is displayed in the program window as 7 7 Control Flow Operators 237 for lt index gt lt start gt to lt end gt by lt step gt endfor To enter both for and endfor at once select the operator for in the operator window and make sure the check box next to the operator is ticked The start value is assigned to the index variable The loop is executed as long as the following conditions are true 1 The step value is positive and the loop index is smaller than or equal to the end value 2 The step value is negative and the loop index is greater than or equal to the end value After a loop cycle the loop index is incremented by the step value and the conditions are evaluated again Thus after executing the following lines for i 1 to 5 by 1 Tosa endfor i is set to 6 and j is set to 5 while in for i 5 to 1 by 1 J e i endfor i is set to O and j is set to 1 The loop can be restarted and terminated immediately with the operator continue and break respectively see below Please note that the expressions for start and termination value are evaluated only once when en tering the loop A modification of a variable that appears within these expressions has no influence on the termination of the loop The same applies to the modifications of the loop index It also has no influence on the termination The loop value is assigned to the cor
120. WindowHandle EY E Image Semantics Pixel Types Multi Channel Multi Value Description iconic input image z M byte FM inti M int2 M uint2 Select All I int IV inte IV real F cyclic None IV direction IV complex IV vector field Optional Images with an arbitrary number of channels are accepted bd False Only a single object no object tuple is accepted pd Image to the size of which the new window is adapted g cs ral o E 2 a a 5 0 Figure 5 33 Editing the iconic parameter documentation of a procedure Graphical User Interface Control Parameter Documentation Field Meaning Semantics Specifies the data class of the parameter For some semantic types additional subtypes may be selected Type List Specifies the accepted data types Default Type Mixed Types Default Value Values Value Min Value Max Multi Value Description Specifies the default data type False All values of a tuple have the same type True Values of different types can be mixed in one tuple The entered value is suggested as the default value by HDevelop Comma separated list of suggested values Check Exclusively to restrict the selection to the specified values Minimum value for numeric control data Check Enabled to enforce this setting Maximum value for numeric control data Check Enabled to enforce this setting False The parameter accepts only a single value True T
121. a certain size area are selected Then the selection is refined by adding further restrictions In this example the final selection should only include round objects i e regions with a high roundness feature The following code would be generated if you clicked the button Insert Code in this example select_shape Connection SelectedRegions area roundness and 2900 0 72 3900 0 79462 Most parts of the tool are built up similarly to the gray value histogram which is described in detail in section Gray Histogram Window on page 145 Menu Visualization gt Gray Histogram It is highly recommended to read that description beforehand in the following we concentrate on points specific to the feature histogram An important point regards the source of the regions or XLDs The feature histogram is calculated for the regions or XLDs that were displayed most recently in the graphics window Thus if you display an image and there are no regions or XLDs the histogram remains empty As soon as you display regions or XLDs on top of an image the histogram is calculated If you display regions or XLDs without an image you can still calculate feature histograms but only for shape features Please keep in mind that only the most recently displayed regions or XLDs are the source of the histogram not all objects currently displayed in the graphics window The histogram itself is displayed with the horizontal axis corresp
122. a given program The Calibration Assistant can calibrate vision systems based on standard lenses as well as on telecentric lenses With the HALCON Calibration Assistant you can e perform a calibration page 166 e view the calibration results page 177 e generate code page 178 for the calibration or for using the calibration results and insert it into a program for further use in a subsequent application A reference to the elements of the Calibration Assistant can be found in the Calibration Assistant Refer ence page 181 For further information about camera calibration please refer to the corresponding chapter in the solution guide on 3D Vision ATTENTION Remember that it is essential to keep your camera setup aperture focus pose fixed once you have chosen it This applies to the calibration process itself as well as to the sub sequent application Any changes will result in the failure of the calibration or even worse in wrong output values In this guide the following special terms are used Calibration By calibrating page 169 a vision system you extract information about it e g its focal length or its position and orientation relative to the world However even with such information you cannot fully reconstruct the 3D world from a single image For example you can determine the 3D size of an object only if you know its distance from the vision system when using a standard lens Calibration is a prepa
123. a variable of class HTuple directs the output to this window Finally the class HOperatorSet is used as a container for all HALCON operators There is no need for other classes as long as the program has the same functionality as in HDevelop When editing a generated program you are free to use any of the classes of HALCON NET to extend the functionality 8 4 3 Limitations and Troubleshooting Besides the restrictions mentioned in this section and in section 8 8 on page 267 please also check the description of the HDevelop operators in section 5 2 6 2 on page 94 8 4 3 1 Variable Names In contrast to C C or HDevelop Visual Basic NET has many reserved words Thus the export adds the prefix ho_ to all iconic and hv_ to all control variables respectively in order to avoid collisions with these reserved words See also section 8 8 3 on page 268 about case sensitivity 260 Code Export 8 4 3 2 Exception Handling In HDevelop every exception normally causes the program to stop and report an error message in a dialog window This might not be useful in Visual Basic NET The standard way to handle this in Visual Basic NET is by using the Try Catch mechanism This allows to access the reason for the exception and to continue accordingly Thus for HDevelop programs containing error handling dev_ set_check give_error the corresponding code is automatically included Every op erator call for which it is assumed that the HALCO
124. activate command are converted back to executable code Comment lines created with the operator comment are unaffected by this command g cs ral o E 2 a a 5 0 58 Graphical User Interface 5 2 2 8 Deactivate Synopsis Comment out the highlighted program lines Shortcut lt F4 gt The highlighted program lines are converted into comments This is a quick way to suppress the execu tion of portions of the program for testing purposes Comment lines created with the operator comment are unaffected by this command During testing it is often useful to prevent some lines of the program from being executed This can be achieved by selecting the appropriate lines in the program window and then selecting Deactivate An asterisk is placed at the beginning of the selected lines i e the lines appear as comments in the program window and have no influence on the program during runtime The deactivated lines are still part of the program i e they are stored like all other lines and their variables are still needed like all other variables To reverse this action select Activate Note that you can insert a real comment into your program by using the operator comment 5 2 2 9 Find Replace Synopsis Find and replace text in the current program Shortcut lt Ctr1 F gt This dialog provides comprehensive facilities for searching the program code You can perform a full text search or search for variable na
125. ading of the program Or you can convert HDevelop programs to other programming languages without opening the graphical user interface at all A full list of the supported command line switches is available with the following command hdevelop help See appendix B on page 279 for a listing of the available switches 2 1 Running HDevelop 17 User Interface When HDevelop is started for the first time it looks similar to figure 2 1 The main window offers a menu and a tool bar for quick access to frequently used functions The status bar at the bottom of the window displays messages and image properties In addition the following windows are available by default 1 Graphics window This window displays iconic data images regions and XLDs It provides its own tool bar to quickly zoom and pan the displayed image and a context menu to adapt the visualization settings The context menu is available by right clicking inside the window It contains the most frequently used entries from the menu Visualization You can open multiple graphics windows The one marked with a lit bulb in the upper right corner is the active graphics window i e it is the target for subsequent display operations The graphics window works like an image stack Images can be overlayed with regions or XLDs or with images that have a reduced domain 2 Operator window You can select HALCON operators and HDevelop procedures in this window The parameters of
126. ages like H_MSG_FAIL which are not handled as exceptions in C for example 258 Code Export When handling exceptions you also have to be aware that the COM interface always resets the output parameters at the beginning of the operator execution Thus when the exception occurs output variables are set to Nothing Therefore you cannot use the values of variables used as output parameters of the operator causing the exception 8 3 3 3 Memory Management The NET Framework s runtime environment CLR Common Language Runtime has a mechanism called garbage collector which is used by the CLR to remove no longer needed NET objects from memory As mentioned earlier in the exported C code every iconic object is represented by a NET HUntypedObjectX object which contains a reference to a COM HUntypedObjectX object From the garbage collector s point of view a NET HUntypedObjectX object is rather small Thus it might not be collected from memory although the underlying iconic object e g an image might in fact occupy a large portion of memory In order to avoid memory leaks caused by this effect in the exported code every iconic object is deleted explicitly before it is assigned a new value 8 4 Code Generation for Visual Basic NET HALCON NET This section describes how to create a HALCON application in Visual Basic NET starting from a program developed in HDevelop HALCON can be used together with Visual Basic NET based on
127. all 5 4 3 Creating and Editing Procedures 123 x Please enter your password to lock the procedure Password Confirm Figure 5 36 Entering a password to protect an external procedure 5 4 3 3 Protected External Procedures External procedures can be protected by a password The bodies of protected external procedures can only be accessed if the correct password is supplied Protected procedure can be used by all users but viewed and modified only by authorized persons who know the password The edit status of a procedure can be changed via the procedure interface dialog page 113 To manage the edit status of multiple external procedures at once click Menu Procedures gt External Procedure Settings and select the tab card Manage Passwords page 68 By default new procedures are local procedures which cannot be protected To make them external the check box Local has to be disabled Now the button Password becomes available Protecting a Procedure If you want to protect a procedure with a password do the following e Select the corresponding procedure in the program window e Click to edit the interface of the selected procedure e Make sure Local is unchecked Only external procedures can be protected e Click the button Password to assign a password to the procedure Then a separate window appears and the new password must be entered twice See figure 5 36 for an example If both times the same password is
128. all is not adapted to the changes but is disabled for the current program 5 5 Operator Window This window is used to edit and display an operator or procedure call with all its parameters Here you will obtain information about the number of the parameters of the operator or procedure the parameter types and parameter values You can modify the parameter values according to your image processing tasks For this you may use the values proposed by HDevelop or specify your own values The operator window consists of the following three parts e At the top you find the operator name field with which you can select operators or procedures e The large area below the operator name field is called the parameter display it is used to edit the parameters of an operator or procedure e The row of buttons at the bottom allows to control the parameter display 5 5 1 Operator Name Field The operator name field allows to select operators or procedures by entering part of their name After pressing lt Return gt or pressing the button of the combo box the system is looking for all operators or procedures that contain the entered name The order of the listed result is as follows Operators and procedures whose names begin with the given substring are listed first followed by all operators and procedures that contain the substring elsewhere Both parts of the list are sorted in alphabetical order If there is an unambiguous search result the param
129. also check the description of the HDevelop operators in section 5 2 6 2 on page 94 8 5 3 1 Variable Names In contrast to C C or HDevelop Visual Basic NET has many reserved words Thus the export adds the prefix ho_ to all iconic and hv_ to all control variables respectively in order to avoid collisions with these reserved words 8 5 3 2 Exception Handling In HDevelop every exception normally causes the program to stop and report an error message in a dialog window This might not be useful in Visual Basic NET The standard way to handle this in Visual Basic NET is by using the Try Catch mechanism This allows to access the reason for the exception and to continue accordingly Thus for HDevelop programs containing error handling dev_ set_check give_error the corresponding code is automatically included Every op erator call for which it is assumed that the HALCON error mechanism is turned off is enclosed in a Try block followed by a Catch block The latter handles the exception and assigns the corresponding HALCON error number to the error variable activated by dev_error_var or to a local error variable otherwise Please note that a call of dev_ set_check give_error has no influence on the operator call The exception will always be raised This is also true for messages like H_MSG_FAIL which are not handled as exceptions in C for example When handling exceptions you also have to be aware that the COM interface
130. alue of Val is set to 1 In general every integer value other than 0 means true Please note that some HALCON operators take logical values for input e g set_system In this case the HALCON operators expect string constants like true or false rather than the boolean values true or false In addition to these general types there are special constants and the type tuple which are specific to HALCON or HDevelop respectively constants There are constants for the return value result state of an operator The constants can be used together with the operator dev_error_var and dev_set_check These constants represent the normal return value of an operator so called messages For errors no constants are available there are more than 400 error numbers internally see the Extension Package Programmer s Manual In table 7 2 all return messages can be found tuple The control types are only used within the generic HDevelop type tuple A tuple of length 1 is interpreted as an atomic value A tuple may consist of several numerical data items with different Constant Meaning Value H_MSG_TRUE No error for tests true 2 H_MSG_FALSE For tests false H_MSG_VOID No result could be computed H_MSG_FAIL Operator did not succeed nn HE WwW Table 7 2 Return values for operators o te o te l 214 HDevelop Language Tuple constant Value m l Value string 7 gt
131. always resets the output parameters at the beginning of the operator execution Thus when the exception occurs output variables are set to Nothing Therefore you cannot use the values of variables used as output parameters of the operator causing the exception 8 6 Code Generation for Visual Basic 6 HALCON COM 263 8 5 3 3 Memory Management The NET Framework s runtime environment CLR Common Language Runtime has a mechanism called garbage collector which is used by the CLR to remove no longer needed NET objects from memory As mentioned earlier in the exported Visual Basic NET code every iconic object is represented by a NET HUntyped0bjectX object which contains a reference to a COM HUntypedObjectX object From the garbage collector s point of view a NET HUntypedObjectX object is rather small Thus it might not be collected from memory although the underlying iconic object e g an image might in fact occupy a large portion of memory In order to avoid memory leaks caused by this effect in the exported code every iconic object is deleted explicitly before it is assigned a new value 8 6 Code Generation for Visual Basic 6 HALCON COM This section describes how to create a HALCON application in Visual Basic 6 starting from a program developed in HDevelop HALCON can be used together with Visual Basic 6 based on the COM interface of HALCON A detailed description of this interface can be found in the Programmer s Guide pa
132. an image acquisition device handle a dialog representing basic image acquisition device parameters is opened Here you find the size name device port and other features of the image acquisition device The toggle button Online allows to grab images continuously and to display them in the active graphics window Multiple online inspections from different image acquisition devices at the same time are also supported by opening additional graphics windows before clicking the corresponding button Online If an error occurs during grabbing it is displayed in the status bar of the dialog The dialog is displayed in figure 5 46 i Acquisition Inspect AcqHandle AN ml x Iconic Variables Name uEye Rev 3 2 Width 1280 Height 1024 ColorSpace gray BitsPerChannel 8 Port 0 spect impen Device A Clear le Update Variables Wett false CameraType UI154x M Online E grab images Figure 5 46 Inspecting an image acquisition device handle variable View main cs ral o E 2 D 0 136 Graphical User Interface 5 7 Graphics Window This window displays iconic data It has the following properties e The user may open several graphics windows e The active graphics window is shown by the lit bulb in the window s tool bar e Pressing the clear button clears the graphics window content and the history of the window e You close a graphics window using the cl
133. anage iconic objects or control values 1 2 HDevelop Procedures HDevelop offers a mechanism for the creation and execution of procedures Procedures are meant to increase the readability and modularity of HDevelop programs by encapsulating functionality of multiple operator calls in one or more procedure calls It also makes it easier to reuse program code in other HDevelop programs by storing repeatedly used functionality in external procedures An HDevelop procedure consists of an interface and a program body Procedure interfaces resemble the interfaces of HALCON operators i e they contain parameter lists for iconic and control input and output parameters The procedure body contains a list of operator and procedure calls Furthermore HDevelop provides extensive support to supplement procedures with structured documentation The documentation is automatically integrated into the online help system Every HDevelop program is made up of one or more procedures It always contains the main procedure which has a special status inside the program because it is always the top most procedure in the calling hierarchy and cannot be deleted from the program 1 3 HDevelop XL 11 HDevelop offers all necessary mechanisms for creating loading deleting copying modifying saving and exporting procedures Once a procedure is created it can basically be used like an operator Calls to the procedure can be added to any program body and be exec
134. and drop it there When the file is dropped HDevelop opens the dialog Read Image see figure 3 1 This dialog displays the full path of the image and automatically proposes a variable name derived from the file name This name can be edited or another iconic variable name from the current program may be selected from the drop down list Furthermore a preview of the image and basic image properties are displayed in the dialog width height color type and number of channels If you picked the wrong image you can select another one from the same directory by pressing the button next to the file name This will open a file browser native to the operating system i e on Windows you may be able to switch to thumbnail view in this dialog When another image is selected the dialog is updated accordingly When you click the button OK the instruction read_image is added to the current program With the setting of Insert Position you determine where the instruction will be put At the IC or the PC If you changed your mind about reading the selected image at all click Cancel c 2 a 5 y lt o a 22 Acquiring Images with HDevelop Look in images Y ene Er File Name C Program Files MYTec HALCON images earth pnal ni s Variable Name Earth X Image Info G die3 png die4 png My Recent Documents Desktop a double_circle pna earth png ed_g png E meaner gt m Insert Position ii
135. ant with the menu item File gt Exit Assistant the assistant s dialog is closed and the current settings are lost unless you have stored them via the menu item File gt Save Current Assistant Settings page 190 If you want to close the dialog but keep its settings for the current HDevelop session you should use the menu item Close Dialog instead 6 2 5 2 The Menu Calibration Via the menu Calibrate you can run a calibration as described in the section Calibrating page 172 6 2 5 3 The Menu and Tab Code Generation Via the menu Code Generation you can e insert code to the program window of HDevelop according to the current settings of the Calibration Assistant e release the generated code lines in the program window e delete the generated code lines from the program window as long as you did not release them and e open the dialog for the code preview inside the tab Code Generation Insert the Generated Code Lines Via the menu item Code Generation gt Insert Code also accessible as tool bar button or as button inside the tab Code Generation you can insert the code that is generated according to the current settings of the Calibration Assistant into the program window Inserting code via menu or tool bar will generate code for calibration and samples Release the Generated Code Lines Via the menu item Code Generation gt Release Generated Code Lines you can release the gen erated and inserted code
136. any operator calls you may suppress this output Independent of the selected mode the display of all variables will be updated after the program has stopped Update Graphics Window See also dev_update_window This item concerns the output of iconic data in the graphics window after the execution of a HAL CON operator With the default settings all iconic data computed in the run mode is displayed in the current graphics window You may want to suppress this automatic output e g because it slows down the performance or because the program handles the visualization itself If the output 1s suppressed you have the same behavior as exported C C Visual Basic Visual Basic NET or C code where automatic output of data is not supported Enable the Context Menu in the Graphics Window See also dev_set_preferences If this option is activated the context menu is available when clicking in a graphics window with the right mouse button This behavior may be undesirable if a program provides user interaction with the mouse g cs ral o E 2 D 0 74 Graphical User Interface 5 2 3 Menu Execute In this menu item you find all necessary functions to execute an HDevelop program In HDevelop program execution is always continued at the top most procedure call which in most cases corresponds to the current procedure call The procedure body displayed in the program window belongs to the current procedure 5
137. ape Model specifies whether the internal representation of the shape model is pregenerated completely whenever the model is created If you select a complete pregeneration by checking the check box Pregenerate Shape Model the model generation may require a substantial amount of time and memory In contrast if you switch off the complete pregeneration the model creation will be very fast and the model will consume less memory The advantage of selecting a complete pregeneration is that the model can typically be found slightly faster than if the complete pregeneration is switched off Typically you may find it useful to switch off the complete pregeneration if your model uses a large angle and scale range The Model Parameter Minimum Contrast In order to select significant object points for the model page 185 you specified which Contrast page 193 the points must show in the model image page 185 With the parameter Minimum Contrast you can specify a separate minimum contrast for the matching page 185 process itself i e when searching 6 3 3 Matching Assistant Reference 199 for the object in the test images page 185 The main use of this parameter is to exclude noise 1 e gray value fluctuations from the matching process Note that a low value for Minimum Contrast slows down the matching process because more points in the test image must be compared with the model Therefore we recommend to choose a value which
138. appropriate value Errors In the case of hard errors i e no message as described above the program stops with an error message To prevent this behavior the HDevelop operators dev_error_var and dev_set_check can be used to control the exception handling in the application This works similarly in HDevelop and C One difference is caused by the dynamic evaluation of dev_error_var in HDevelop This means that each time the operator is executed e g in a loop the use of the error variable might change In contrast to this in C special code is added to store the return values of operators This code will therefore be static and cannot change during program execution To understand how the code generation works let us have a look at a short example Here at first the HDevelop program dev_set_check give_error dev_error_var error true threshold image region 100 255 dev_error_var error false if error H_MSG_TRUE write_string Windowld error number error exit endif dev_set_check give_error 8 2 Code Generation for C HALCON NET 253 This program will be translated into HTuple error set_check give_error error threshold image amp region 100 255 if error 2 al write_string WindowId HTuple error number HTuple error exit 1 set_check give_error As can be seen the operator dev_error_var is eliminated and replaced by the use of the error variable later on
139. are displayed independently If union is selected the results are combined to a single region If intersection is selected only the common pixels from all results are visualized Connected Regions Clicking Connection displays the connected regions of the selected gray values in the style specified with Color Draw and Line Width This display mode is similar to a plain threshold operation Additionally it performs a connection operation The separate regions can only be distinguished if Color is set to colored 3 colored 6 or colored 12 Click the button Insert Code to generate HDevelop code that performs the currently visualized thresh old operation s in your program The code is inserted at the IC 5 10 1 2 Scale Operation The scale operation maps the gray values between the green line and the red line to the full range usually 0 255 See also scale_image The gray values of the image are scaled such that the gray value O of the scaled image corresponds to the selected minimum gray value and the gray value 255 to the selected maximum gray value Again the combo box Output Destination determines the graphics window in which the result is displayed g cs ral o E 2 a a 5 0 150 Graphical User Interface This mode is useful to interactively set a window of gray values that should be displayed with a large dynamic range You can define as many scale operations as you like but only one of the
140. are failures If there are unsaved changes in the current program HDevelop will display a warning dialog You are advised to save the changes before you proceed You can also ignore the warning and proceed or abort the operation After the interfaces have been probed you can select the desired image acquisition interface from the list Selecting the entry Help from the menu of the image acquisition assistant will open the online help for the selected image acquisition interface 26 Acquiring Images with HDevelop Source Connection Parameters Code Generation Image Eile s PF Recursive pp Select File s Select Directory Image Acquisition Interface GigEVision X detect image acquisition interfaces and select from the list Figure 3 6 Source selection example Connect to the Device Once an image acquisition interface is selected its connection parameters are detected and updated in the tab card Connection see figure 3 7 Here you can specify the device that is connected to the selected image acquisition interface If for example the interface of a frame grabber board with multiple cameras has been selected as the source the actual device can be selected here The parameters of this tab card are described in general in the reference section of the operator open_framegrabber please refer to the HTML page of the selected interface for detailed information menu Help
141. as a standalone application Iconic input and output parameters of a procedure are passed as ByVal HObject and ByRef HObject respectively while control input and output parameters are passed as ByVal HTuple and ByRef HTuple respectively The subroutine RunHalcon contains a call to the subroutine action and has a parameter Window which is of type HTuple This is the link to the window on the form to which all output operations are passed In addition another subroutine is created with the name InitHalcon This subroutine applies the same initializations that HDevelop performs Most of the variables iconic as well as control are declared locally inside the corresponding subroutines Iconic variables belong to the class HObject and control variables belong to HTuple Depending on the program additional subroutines and variables are declared 8 4 2 1 Stop The HDevelop operator stop is translated into a subroutine in Visual Basic NET that creates a message box This message box causes the program to halt until the button is pressed 8 4 2 2 Exit The HDevelop operator exit is translated into the Visual Basic NET routine End Because this routine has no parameter the parameters of exit are suppressed 8 4 2 3 Used Classes There are only four classes types that are used HTuple for control parameters and HObject for iconic data In addition there is the class HWindowControl It is used inside the project for the output window and
142. ated a model ROI page 185 by default all points showing the required Contrast page 193 and belonging to components larger than the Minimum Size page 194 are selected for the model page 185 and marked in the image For particularly large models i e a large number of model points it might be useful to reduce the number of points using the parameter Optimization in order to speed up the matching page 185 process and to reduce memory requirements You can select a low medium or high point reduction please note that regardless of your selection all points passing the contrast criterion are displayed i e you cannot check which points are part of the model You can also let the Matching Assistant select a suitable value automatically based on the model image Another possibility to reduce the memory requirements of the model is to switch off the complete pre generation of the model If you already loaded test images page 200 you can quickly test the effect of the selected parameter value via the menu item Inspect gt Determine Recognition Rate page 207 Letting the Matching Assistant Select a Suitable Value for Optimization When you click the button Auto Select that is placed right beside the slider for the parameter Optimization the Matching Assistant optimizes i e reduces the number of model points based on the model image The Model Parameter Pregenerate Shape Model The parameter Pregenerate Sh
143. ation 3 3 2 Acquiring Images Through Image Acquisition Interfaces 25 Source Connection Parameters Code Generation Acquisition Control Flow Acquire Images in Loop Insert Code Acquisition Mode Asynchranous Acquisition V Auto Disconnect Variable Names Connection Handle JacqHandle Loop Counter Index Image Object Image Image Files Imageriles A Code Preview Code generated by Image Acquisition 01 ImageFiles s ImaqeFiles 0 C Program Files MYTec HALCON images c Figure 3 5 Specifying variable names and previewing the code 2 Y 2 Code generated by Image Acquisition 01 F ImageFiles 2 ImageFiles 0 C Program Files MVTec HALCON images fin1 png ImageFiles 1 C Program Files MVTec HALCON images fin2 png ImageFiles 2 C Program Files MVTec HALCON images fin3 png for Index 0 to ImageFiles 1 by 1 read_image Image ImageFiles Index Do something endfor 3 3 2 Acquiring Images Through Image Acquisition Interfaces Select Image Acquisition Interface in the Source tab The drop down list below the radio button becomes active Initially it lists all image acquisition interfaces supported by HALCON You can tidy this list by clicking the button Detect HDevelop will then probe all the image acquisition interfaces and remove those that do not respond Probing the interfaces might cause the system to hang due to erroneously installed drivers or hardw
144. atus page 177 e Camera Parameters page 178 e Camera Pose page 178 e Display Results page 178 6 3 Matching Assistant 185 6 3 Matching Assistant 6 3 1 Introducing the Matching Assistant of HDevelop The Matching Assistant of HDevelop is a front end to HALCON s powerful shape based matching which lets you locate objects with sub pixel accuracy at a high speed even when they appear rotated partly occluded or under changing illumination Using the Matching Assistant you can e configure and test the matching process with a few mouse clicks and e optimize the parameters interactively to get the maximum matching speed and recognition rate All you need is a single model image and a set of test images The Matching Assistant further assists you by automatically calculating suitable parameter values based on your selections How to use the Matching Assistant is described here A reference to the elements of the Matching Assistant can be found here page 188 In this online help the following special terms are used Matching Matching is the process of locating an object described by a model in an image The results of the matching process are the position and orientation of the object and the matching score Model In order to locate an object you must provide the Matching Assistant with an example image of the object From this the Matching Assistant creates the so called model an internal representa tion of the objec
145. ave operations will use that name instead of the old The file name of the program you save is added to the menu Recent Programs g cs ral o E 2 D 0 50 Graphical User Interface 5 2 1 8 Save Procedure As Synopsis Save current procedure as an external procedure or as a stand alone HDevelop program Using this menu entry you can save the currently selected procedure as an external procedure or an HDevelop program A file selection dialog page 155 is opened where you can select the file type e HDevelop procedures dvp The procedure is saved as an external procedure If the target directory is not already configured in the external procedure directories see Menu Edit gt Preferences Directories page 66 HDevelop will suggest adding the directory to the list An example dialog is displayed in figure 5 3 If you click No HDevelop will not be able to access the saved procedure unless the directory is later added to the external procedure locations manually This is one method to make an internal procedure external If you do not change the name of the procedure the internal procedure will conceal the external procedure Directory not in List xj 2 The directory H project procedures w7 selected for saving the procedure is not in the list of external procedure directories without adding the directory to that list the saved procedure cannot be used and will immediatly be removed F
146. bar icons of the graphics window see figure 3 2 An iconic view of the loaded image is also displayed in the variable window When the image is cleared in the graphics window it can always be restored by double clicking this icon 3 3 Image Acquisition Assistant 23 clear select magnify image size ES as Za AAA wrt iow oT p pan image zoom window size in out Figure 3 2 Tools in the graphics window 3 3 Image Acquisition Assistant The image acquisition assistant is a powerful tool to acquire images from files including AVI files directories or image acquisition devices supported by HALCON through image acquisition interfaces To use this assistant select Assistants gt Open New Image Acquisition The window is displayed in figure 3 3 It features several tab cards that can be stepped through one after another Ultimately the assistant generates HDevelop code that can be inserted into the current program Select the entry Help in the menu of the image acquisition assistant to open its online help Image Acquisition Image Acquisition 01 Es File Acquisition Code Generation Help 2 oH S Fak Source Connection Parameters Code Generation Image File s TF Recursive Select File s Select Directory Image Acquisition Interface File y Detect Figure 3 3 Image acquisition assistant The tab card Source determines the acquisition method and
147. be searched within those parts of the test images in which the shape model completely lies within the image If you switch on the check box Shape models may cross the image border the shape model will be searched for in all positions in which the model additionally lies partially outside the test images i e in which the shape model extends beyond the image border Here points lying outside the image are regarded as being occluded i e they lower the score This should be taken into account while selecting the Minimum Score page 203 Please note that the runtime of the search will increase in this mode 206 HDevelop Assistants Optimizing the Recognition Speed When you select the menu item Use Model gt Optimize Recognition Speed or click either the corre sponding button in the tool bar or the button Run Optimization in the dialog Optimize Recognition Speed of the tab Model Use the Matching Assistant automatically determines values for the parameters Minimum Score page 203 and Greediness page 204 to optimize the recognition speed The speed is calculated as the average recognition speed over all test images You can interrupt this process by clicking the button labelled Stop please note however that this event is processed only after the current search has finished The two parameters are optimized as follows At the beginning the greediness is set to 0 and the mini mum score to 1 Then the minimum score is dec
148. be solved quite easily often just by taking better calibration images page 169 178 HDevelop Assistants 6 2 3 2 Camera Parameters The internal camera parameters include Cell Width Sx and Cell Height Sy in micrometer Focal Length in mm Center Column Cx and Center Row Cy Image Width and Image Height in pixels They also include Kappa in 1 m or instead of Kappa the distortion parameters Radial 2nd Order K1 in 1 m Radial 4th Order K2 in 1 mf Radial 6th Order in m Tangential 2nd Order P1 and Tangential 2nd Order P2 in 1 m for the polynomial area scan camera model If you have a line scan camera additionally to the values of the area scan camera division model values for the motion parameters Motion x Vx Motion y Vy and Motion z Vz in micrometer pixel will be returned 6 2 3 3 Camera Pose The 3D pose of the world coordinate system relative to the camera is described by the external camera parameters X Y and Z in mm and Rotation X Rotation Y and Rotation Zin degrees 6 2 3 4 Display Results Via radio buttons you can choose Original Reference Image to see the previously chosen refer ence image and Simulated Reference Image to display a synthetic reference image which has been calculated using the internally known measures of the calibration plate and the pose of the plate in the reference image You can also decide whether or not you want to Display Coordinate Axes of the coordinate sy
149. below the histogram Click the button to add a new operation to the table Click the button to remove an operation from the table The column Operation specifies the operation that is applied to a selected range of gray values threshold or scale see below To visualize a specific operation click the corresponding icon next to the operation When a multi channel image e g a RGB color image is sent to the tool by default the histogram of the first channel is displayed The column Channel lets you select the channel from which to compute the histogram The columns Min and Max correspond to the position of the green and the red line respectively Each operation may specify its own range of gray values add operation remove operation visualize operation 5 10 1 Interactive Visual Operations 149 5 10 1 1 Threshold Operation The image from which the histogram was computed is segmented with a threshold operation with the selected minimum and maximum gray value With the three combo boxes Color Draw and Line Width in the Output section of the window you can specify how the segmentation results are displayed see also Colored Draw and Line Width If you want to select threshold parameters for a single image display the image in the active graphics window and open the histogram tool For optimum visualization of the segmentation results it is best to set the visualization color to a color different from black or whi
150. ber of pyramid levels automatically thus relieving you of the task of examining the model image pyramid 6 3 3 Matching Assistant Reference 195 Please note that in rare cases the automatic selection will yield a too low value and thereby slow down the search process or a too high value resulting in failures to recognize the object In such a case we recommend to inspect the model image pyramid page 191 and select a suitable value manually The Model Parameter Start Angle With the parameter Start Angle you can specify the starting angle of the allowed range of rotation unit With another parameter you can specify the extent of the allowed range Note that the range of rotation is defined relative to the model image i e a starting angle of 0 corresponds to the orientation the object has in the model image Therefore to allow rotations up to 5 e g you should set the starting angle to 5 and the angle extent to 10 The Model Parameter Angle Extent With the parameter Angle Extent you can specify how much the object is allowed to rotate unit With another parameter you can specify the starting angle of this allowed range Note that the range of rotation is defined relative to the model image i e a starting angle of 0 corresponds to the orientation the object has in the model image Therefore to allow rotations up to 5 e g you should set the starting angle to 5 and the angle
151. bout the kind of the error is determined during the execution Figure 9 1 shows an example of an error window 274 Tips amp Tricks Text editing lt Home gt Move cursor to the beginning of the line lt End gt Move cursor to the end of the line lt Left gt Move cursor left one character lt Right gt Move cursor right one character lt Ctrl gt lt Left gt Move cursor left one word lt Ctrl gt lt Right gt Move cursor right one word lt Delete gt Delete single character to the right of the cursor position lt Backspace gt Delete single character to the left of the cursor position lt Ctrl gt lt Backspace gt Delete word to the left of the cursor lt Ctrl gt lt Delete gt Delete word to the right of the cursor lt Shift gt lt Left gt Select character to the left of the cursor or extend the selection by one character lt Shift gt lt Right gt Select character to the right of the cursor or extend the selection by one character lt Ctrl gt lt Shift gt lt Left gt Select word to the left of the cursor or extend the selection by one word lt Ctrl gt lt Shift gt lt Right gt Select word to the right of the cursor or extend the selection by one word lt Ctrl gt a Select all lt Ctrl gt d UNIX Analogous to Delete lt Ctrl gt e UNIX Move cursor to last character in line lt Ctrl gt k UNIX
152. c tuple operation may be selecting one or more values combining tuples concatenation or getting the number of elements see table 7 5 for operations on tuples containing control data The concatenation accepts one or more variables or constants as input They are all listed between the brackets separated by commas The result again is a tuple Please note the following t t t t returns the number of elements of a tuple The indices of elements range from zero to the number of elements minus one i e t 1 Therefore the selection index has to be within this range Tuple V1 V2 V3 V4 for i 0 to Tuplel 1 by 1 fwrite_string FileHandle Tuple i n endfor In the following examples the variable Var contains 2 2 3 a a 2 3 b b Please note that the index of objects e g select_obj ranges from 1 to the number of elements 220 HDevelop Language control iconic d gen_empty_obj O t1 t2 concat_obj p1 p2 q Itl count_obj p num t i select_obj p q i 1 t i1 i2 copy_obj p q 11 1 i2 i1 1 Table 7 6 Equivalent tuple operations for control and iconic data 3 Var 8 9 3 2 2 3 a a 2 3 b b 8 9 Var 9 Var 4 gt a Var 4 6 a 2 3 subset Var 3 6 7 a 3 b remove Var 3 6 7 2 2 3 a 2 b find Var 2 3 1 5 uniq Var 2 3 a 2 3 b Further examples can be found in
153. ce file of the specified type reset_preferences reset all persistent settings from previous sessions preferences lt file gt start HDevelop with the preferences from a file o E a 3 c G E fo oO Qt options style lt style gt sets the application GUI style Possible values are Windows Motif CDE Plastique Cleanlooks X11 options display lt display gt sets the X display default is DISPLAY geometry lt geometry gt sets the client geometry of the first window that is shown fn font lt font gt defines the application font The font 280 Command Line Switches should be specified using an X logical font description bg background lt color gt sets the default background color and an application palette light and dark shades are calculated fg foreground lt color gt btn button lt color gt name lt name gt title lt title gt visual TrueColor ncols lt count gt cmap sets the default foreground color sets the default button color sets the application name sets the application title forces the application to use a TrueColor visual on an 8 bit display limits the number of colors allocated in the color cube on an 8 bit display if the application is using the QApplication ManyColor color specification If count is 216 then a 6x6x6 color cube is used i e 6 levels of red 6 of green and 6 of blue for other values a cube approximatel
154. cel this task by pressing the corresponding button By using one of the two buttons Open or Cancel the dialog window disappears 5 13 2 Unsaved Changes File operations that will delete the current program such as loading a new program trigger a security check This security check prevents you from deleting the current program accidentally if the program has not been saved A dialog box appears and asks whether you want to save the HDevelop program before its dismissal Sr x p The current program has been modified 2 Do you want to save the changes Save As Discard Cancel Figure 5 58 Confirmation dialog Save Save the current program under its current name and proceed If no name has been specified yet a file dialog pops up to enter the name Save As Save the current program under a different name and proceed Discard Discard unsaved changes and proceed Cancel Abort the current action HDevelop Assistants 157 Chapter 6 HDevelop Assistants HDevelop contains assistants for specific machine vision tasks Each assistant provides a user interface tailored to the requirements of its task Using this interface you can interactively set up and configure the assistant to solve a specific machine vision problem Once the configuration is working satisfactorily the assistant can be instructed to generate HDevelop code into the current program You can also save an assistant s configuration for later use The
155. checked The default color is red 5 2 4 9 Draw Synopsis Draw type of regions See also dev_set_draw g cs ral o E 2 D 0 Here you can select a visualization mode to display regions It can either be filled menu entry i11 or outlined menu entry margin If set to margin the line thickness of the displayed regions is specified using the menu item Line Width 5 2 4 10 Line Width Synopsis Line width used for the display of lines in active graphics window See also dev_set_line_width Here you determine the line width for painting XLDs borders of regions or other types of lines You can select between a wide range of widths using the submenu 82 Graphical User Interface 5 2 4 11 Shape Synopsis Specify representation shape for regions See also dev_set_shape Here you specify the representation shape for regions You can display not only the region s original shape but also its enclosing rectangle or its enclosing circle 2 4 12 Lut Synopsis Specify look up table for gray value mapping See also dev_set_lut This menu item activates different look up tables which can be used to display gray value images and color images in different intensities and colors In the case of a true color display the image has to be redisplayed due to the missing support of a look up table in the graphics hardware For color images only the gray look up tables can be used which chan
156. clicking additional categories An HDevelop example program may appear multiple times under different topics and categories Filtering the Matched Example Programs Both the file name and the short description of the matched example programs are displayed You can reduce the number of listed programs by entering a search string into the Filter text box As you type the list is updated to contain only example programs matching the string in either the file name or the short description field The filtering is case insensitive T Category a Filter measure Paea Example Short Description Pharmaceutical Example Short Description Photogrammetry and remote sensing fuzzy_measure Measure pins of an IC using Precision engineering and optics Fuzzy measuring Printing sean Locate IC on a board and matching_image_ le Rubber synthetic material Foil measure pin distances Semiconductors measure_ic_lead Measure leads of an IC Surveillance and security Transport measure_pin dey Measure pins of an IC Wood and timber Locate IC on a board and Method pm_measure_bo Operator New in version Tl Keep dialog open Open measure pin distances HHA Open in new HDevelop Figure 5 2 Browse Examples o Z o o 2 oa 0 48 Graphical User Interface Loading an Example Program Double click an example program in the list or select it and click the bu
157. clip into the text field FileName You can press lt Tab gt to go to the next input field Pressing lt Shift gt lt Tab gt takes you back to the previous field This way you can enter all parameters without using the mouse Click OK or press lt Return gt to submit the operator to the current program This will do the following 4 4 Getting Help 33 Operator Window Insert read_image Enter Operator or Procedure read_image Y Parameters E iconic output gt imag Image y image semantic type E data type control input E Filename fabrik y El filename read string file selection dialog Enter Apply Cancel Help Figure 4 3 Specifying parameters e An operator call is added as the first line of the current program e The IC is advanced so that additional lines will be added after the inserted line e The program line is executed and the PC is advanced To be more precise All the lines from the PC to the IC are executed which makes a difference when adding program lines in larger programs e The character is added to the window title to indicate unsaved changes in the current program e The image is displayed in the graphics window e The status bar is updated i e the execution time of the operator read_image is displayed and the format of the loaded image is reported e The output variable Clip is created and displayed in the variable window e The operator wind
158. ct Depending on the program additional subroutines and variables are declared 8 3 2 1 Arrays If a single value is inserted into an object array a special subroutine is called to ensure that the array is valid If the array is too small or of the wrong type it is recreated in the appropriate way 8 3 3 Limitations and Troubleshooting 257 8 3 2 2 Expressions All parameter expressions inside HDevelop are translated into expressions based on the HALCON tuple operators Therefore an expression might look somewhat complex In many cases these expressions can be changed to simple C expressions For example TupleSub becomes a simple subtraction To ensure that the exported program has the same effect in C this exchange is not applied automatically because the semantics are not always identical 8 3 2 3 Used Classes There are only six classes types that are used object for control parameters and HUntypedObjectX for iconic data In addition there is the container class HTupleX which comprises all operators of HALCON processing tuples in this case the data type object Then there are the classes HWindowXCtr1 and its low level content HWindowX HWindowXCtrl is used inside the project for the output window and a variable of class HWindowX directs the output to this window Finally the class HOperatorSetX is used as a container for all HALCON operators There is no need for other classes as long as the program has the same functional
159. ct feature value regions with feature values falling within discrete intervals are summed Graphically speaking the horizontal axis is subdivided into bins with a width equal to the value selected with the slider Quantization add feature remove feature visualize feature As with the gray histogram operations each selected feature has to be enabled to visualize the selection in the graphics window 5 12 Feature Inspection Window Synopsis Inspection of shape and gray value features of individual regions See also Menu Visualization gt Feature Inspection This window provides a tool for the convenient inspection of shape and gray value features of individual regions and XLDs It can for instance be used to determine thresholds for operators that select regions based on these features e g select_shape or select_gray The strategy to determine the data from which to compute the features is very similar to that of the gray histogram inspection window see section Gray Histogram Window on page 145 You can display an image or region by double clicking on it in the variable window or you can select a region or an image which is already displayed by single clicking it If you display or click into an image the gray value features of the entire image will be calculated If you click into a region that is not underlaid with an image only the shape features of this region will be displayed If you click into a region tha
160. cted test image e delete all test images at once e display the selected test image page 201 e access the test image settings in the tab Model Use e open the dialog for the standard page 203 and advanced search parameters page 204 e open the dialog for the optimization of the recognition speed page 206 and e directly start to optimize the recognition speed page 206 200 HDevelop Assistants In the tab Model Use you can additionally e select a test image e specify the number of visible objects page 202 in the image and e start the matching for a selected test image or e for the whole sequence of test images Loading Test Images The so called test images page 185 should be representative images from your matching application i e the object should appear in all allowed variations of its position orientation occlusion and illumi nation When you select the menu item Use Model gt Test Images gt Load Test Images or click the cor responding button Load in the tab Model Use a standard file selection box appears in which you can select one or more images to load The Matching Assistant can read the image file types TIFF BMP GIF JPEG PPM PGM PNG and PBM Please note that the test images must have the same size as the model image A dialog appears in the tab Model Use which enables you to test the matching on the loaded images Deleting a Test Image When you select the
161. cursor moves out of the image window Or uncheck Follow Mouse and click or drag inside the image to select the zoomed g cs ral o E 2 D 0 144 Graphical User Interface area The red square in the center of the zoom window indicates the position of the mouse cursor The corresponding coordinates are also displayed at the bottom of the window You can select a particular pixel by single clicking on it with the left mouse button The zooming tool stores this position internally and will redisplay the thus selected part of the image object when you leave the graphics window This enables you to have a meaningful display in the zooming tool whenever you want to do actions outside of the graphics window For finer control of the zoomed area click inside the zoom window to give it the focus and use the cursor keys to move pixel wise Press and hold the Alt key and use the cursor keys to move ten pixels at a time Click inside the zoom window to move relative to the center position For example clicking ten pixels above the center will move the view up ten pixels The lower part of the window contains a gauge to display the gray value of the center pixel graphically The range goes from 0 left to 255 right Normally the gray value of the first channel is displayed with a black bar For images with multiple channels the gauge is split accordingly to show individual bars for each channel Thus for color images
162. d In contrast when an action is called via the context menu and no line is selected in the program the action is performed for the line onto which you clicked with the right mouse button Note that any actions that modify the position of the PC will cause the call stack to pop all procedure calls until the current procedure call remains on top This is relevant in case the current procedure call is 112 Graphical User Interface not the top most procedure call and is necessary to secure the consistency of the call stack Modification of the PC can happen as well directly as described above or indirectly by e g inserting a program line above the PC in the current procedure body The following entries of the context menu are not available elsewhere Run Until Here Execute the lines from the PC to the line under the mouse cursor Help If the line under the mouse cursor contains an operator call the corresponding page is opened in the online help window This is a shortcut to double clicking the program line and clicking Help in the operator window Show Procedure If the line under the mouse cursor contains a procedure call the corresponding pro cedure becomes the current procedure i e it is displayed for editing Show Caller This menu item lists all the places in the current program where the currently displayed procedure is called Clicking on an entry takes you to the corresponding program line Auto Indent If the full text ed
163. d in the registered PDF viewer Please note that the link text also includes the page number so you can find the desired information very quickly 142 Graphical User Interface Y HDevelop Help create_scaled_shape_model HALCON Reference Manual Version 9 0 EPA syntax HDevelop y Find Next Prev HALCON Reference Manual Matching Shape Based Operators create matching model shape based destroy matching model shape basec determine training parameters for mat find matching model shape based create_scaled_shape_model Operator matching model origin shape based matching model parameters shape bz read matching model shape based reuse matching model shape based Name set matching model metric shape bas create scaled shape model Prepare a shape model for scale invariant train matching mod matching write matching model shape Synopsis create _scaled shape model Template NumLevels AngleStart AngleExtent AngleStep ScaleMin ScaleMax ScaleStep Optimization Metric Contrast MinContrast ModelID Description The operator create_scaled shape model prepares a template which is passed in the image Template as a shape model used for scale invariant matching The RO of the model is passed as the domain of Template The model is generated using multiple image pyramid levels and is stored in memory If a complete pregeneration of the model is selected see below the model is generated at
164. d by Usage counter and the names of the callers of this procedure Modifications The number of modifications to the external procedure after it has been loaded af User Interface Directories External Procedures Manage Passwords Procedure Use Unresolved Procedure Calls as External Procedures List of all external procedures and its loading state Dan E rrocn renane gt sae Sere hi gt Visualization Settings 0001 dev_display_shape_matching_results loaded C Program Files MVTec HALCON procedures general dev_display Runtime Settings le 0002 dev_open_window_fit_image loaded C Program Files MVTec HALCON procedures general dev_open_v 0003 dev_open_window_fit_size loaded C Program Files MVTec HALCON procedures general dev_open_v 0004 dev_resize_window_fit_image loaded C Program Files MVTec HALCON procedures general dev_resize_ 0005 dev_resize_window_fit_size loaded C Program Files MVTec HALCON procedures general dev_resize_ Ja g cs ral o E 2 D 0 Figure 5 14 External Procedures gt External Procedures 68 Graphical User Interface External Procedures gt Manage Passwords Using this tab card you can conveniently manage the editing status and passwords of all external proce dures The external procedures are divided into three categories from left to right External procedures without a password unprotected external procedures
165. d by the operator connection are now dis played in alternating colors to f E E o o fo a 36 Programming HDevelop 4 6 Understanding the Image Display After having executed the three lines of our program the graphics window actually displays three layers of iconic variables the image Clip the region Region and the tuple of regions ConnectedRegions from bottom to top Place the mouse pointer over the icons in the variable window to obtain basic information about the variables The display properties of images and the topmost region can be adjusted from the context menu of the graphics window For images the look up table henceforth called LUT and the display mode referred to as paint can be set The LUT specifies gray value mappings Experiment with different settings Right click in the graphics window and select some values from the menus Lut and Paint Make sure the menu entry Update Window is checked Notice how the display of the image changes while the regions remain unchanged The menu entries Colored Color Draw Line Width and Shape change the display properties of the topmost region Set Draw to margin Color to cyan and Shape to ellipse The display of ConnectedRegions which is the topmost layer changes accordingly The region Region is still dis played in filled red A more convenient way to set many display properties at once is available through the menu entry Set
166. d procedure again Using the rightmost tool bar button of the program window the interface of the current procedure and its documentation can be edited i e the number of parameters as well as their names and types can be modified See section Creating and Editing Procedures on page 112 for a detailed description The remaining tool bar buttons affect the editing behavior Program Window Tool Bar Move backwards in the history of displayed procedures E Move forward in the history of displayed procedures x Toggle editing mode off dialog based editor on full text editor oy Toggle behavior of lt Return gt key on current program line is entered and executed off current line is entered g Toggle advanced autocompletion on off full text editor only Edit interface and documentation of current procedure 5 4 1 Editing Programs HDevelop provides two complementary editing modes First there is the classical dialog based editing mode In this mode program lines are edited in the operator window It is the default method used in HDevelop Furthermore there is a full text editing mode with advanced autocompletion When it is enabled the program code can be modified directly in the program window The editing mode can be switched in the toolbar of the program window see Program Window Tool Bar You can also set the editing mode in the preferences see the option Editor Settings in the User Interface gt Program
167. d save it to file The result is a new file with the given name and the extension cc cs 254 Code Export 8 2 1 2 The C Template If the file has been exported using the option Use Export Template it is intended to be used together with the predefined C project that can be found in the directory HALCONROOT examples c HDevelopTemplate This project contains a form with a display window HWindowControl and a button labeled Run Add the file generated by HDevelop to the project in the Solution Explorer Add Existing Item Now the project is ready for execution Run the project and then press the button Run on the form which will call the exported code Additional information about using the template can be found in the Programmer s Guide section 11 4 1 on page 114 8 2 2 Program Structure If the program has been exported using the option Use Export Template the file created by HDe velop contains a subroutine with the corresponding name for every HDevelop procedure except the main procedure which is contained in the subroutine action Otherwise the file is exported as a standalone application Iconic input and output parameters of a procedure are passed as HObject and out HObject respectively while control input and output parameters are passed as HTuple and out HTuple respectively The subroutine RunHalcon contains a call to the subroutine action and has a parameter Window which is of type HTuple Thi
168. deactivate the option to see more details about your HDevelop programs i e the program size the program type the date when the most recent user update occurred and file attributes The middle text area displays all available HDevelop files to choose from By clicking the left mouse button on a file name you select it Double clicking a file name opens the file immediately and displays it in the program window page 105 Furthermore you may specify the file name in the text field below the file list The combo box for file type has no effect because only HDevelop programs with the extension dev can be loaded To open cs ral o E 2 D 0 156 Graphical User Interface your specified file you press the button Open This action deletes an already loaded HDevelop program and all created variables The same actions as with File gt New Program are performed Now you can see the main procedure body of your new program in the program window The file name is displayed in the title bar of the main window All its uninstantiated variables are shown in the variable window To indicate that they do not have any computed values the system labels the iconic and control variables with a question mark The program counter is placed on top of the program body and you are ready to execute the program The visualization and options will be reset after loading same as Menu File gt New Progran see page 46 You can can
169. dialog This also works for multi channel images See figure 5 43 for an example 5 6 2 Control Variables 133 main E O1 x Iconic Variables Display Display Channel Clear Display RGB Clear Variable Ci vari Add Variable ontrol Vari ariable Image 1 type byte channels 3 size 512 512 Remove from User Tab channel 1 channel 2 channel 3 Sort by Name ay Sort by Occurrence ces w 3600 Selected Ica P f Bs Blana pi Update Variables Cleanup low 3600 Selected Ico Ju xi low 3600 Selected Teo P fs channel 1 channel 2 channel 3 Figure 5 43 Interactive channel selection from an RGB image Normally regions images and XLDs are represented in variable icons Besides this there are three exceptions which are shown by special icons e Undefined variables are displayed as a question mark 7 icon You may write to but not read them because they do not have any value e Brackets are used if a variable is instantiated but does not contain an iconic object empty tuple This may be the case using operators like select_shape with wrong specified thresholds or using the operator gen_empty_obj Such a value might be reasonable if you want to collect iconic objects in a variable gradually in a loop using concat_obj Here an empty tuple is used as starting value for the loop g cs ral o E 2
170. dic logarithm log p a a gt 0 tuple_log10 pow al a2 aie ldexp a1 a2 al 2 tuple_pow tuple_ldexp Table 7 14 Exponential functions 7 5 12 Numerical Functions 231 Operation Meaning HALCON operator min t minimum value of the tuple tuple_min 5 min2 t1 t2 element wise minimum of two tuples tuple_min2 S max t maximum value of the tuple tuple_max 2 max2 t1 t2 element wise maximum of two tuples tuple_max2 sum t sum of all tuple elements or string concatenation tuple_sum mean a mean value tuple_mean deviation a standard deviation tuple_deviation cumul a cumulative sums of a tuple tuple_cumul median a median of a tuple tuple_median select_rank a i element at rank i of a tuple tuple_select_rank sqrt a square root y a tuple_sqrt deg a convert radians to degrees tuple_deg rad a convert degrees to radians tuple_rad real a convert integer to real tuple_real int a truncate real to integer tuple_int round a convert real to integer tuple_round abs a absolute value of a integer or real tuple_abs fabs a absolute value of a always real tuple_fabs ceil a smallest integer value not smaller than a tuple_ceil floor a largest integer value not greater than a tuple_floor fmod a1 a2 fractional part of a1 a2 with the same sign as al tuple_fmod sgn a element wise sign of a tuple tuple_sgn Table 7 15 Numerical functions 7 5 12 Numerical Functions The numerical functions show
171. e Hugo hugo false 2 1 gt true 2 1 0 gt true 5 4 1 5 4 gt true 2 1 2 0 gt true true false gt true Hugo hugo lt true Table 7 11 Examples for the comparison of tuples Operation Meaning HALCON operator 11 and 12 logical and tuple_and 11 xor 12 logical xor tuple_xor 11 or 12 logical or tuple_or not 1 negation tuple_not Table 7 12 Boolean operations The four comparison operations compute the lexicographic order of tuples On equal index positions the types must be identical however values of type integer real and boolean are adapted auto matically The lexicographic order applies to strings and the boolean false is considered to be smaller than the boolean true false lt true In the program compare dev you can find examples for the comparison operations 7 5 9 Boolean Operations The boolean operations and xor or and not are defined only for tuples of length 1 11 and 12 is set to true 1 if both operands are true 1 whereas 11 xor 12 returns true 1 if exactly one of both operands is true 11 or 12 returns true 1 if at least one of the operands is true 1 not 1 returns true 1 if the input is false 0 and false 0 if the input is true 1 230 HDevelop Language 7 5 10 Trigonometric Functions All these functions work on tuples of numbers as arguments The input can either be of type integer or real However the resulting type will be of
172. e Second parameter is an empty tuple Second parameter has more than one single value Second parameter is not a single value Second parameter has the wrong number of elements Second parameter contains undefined value s Second parameter contains wrong value s Second parameter contains value s with the wrong type User defined exception o te iv te lt l 248 HDevelop Language Code Export 249 Chapter 8 Code Export The idea of code export or code generation is as follows After developing a program according to the given requirements it has to be translated into its final environment For this the program is transferred into another programming language that can be compiled HDevelop allows to export a developed HDevelop program to the programming languages C Visual Basic Visual Basic NET C and C by writing the corresponding code to a file The following sections describe the general steps of program development using this feature for the languages e C section 8 1 e C HALCON NET section 8 2 on page 253 e C HALCON COM section 8 3 on page 255 e Visual Basic NET HALCON NET section 8 4 on page 258 e Visual Basic NET HALCON COM section 8 5 on page 260 e Visual Basic 6 HALCON COM section 8 6 on page 263 e C section 8 7 on page 265 including some language specific details of the code generation and optimization aspects Because HDevelop does more than just execute a
173. e original y tat Line Width fi ss 8 E Be h Preview red green blue dim gray gray light gray cyan magenta yellow medium slate blue coral slate blue enrina nraan IV Update Reset Use settings for new windows Figure 5 21 Visualization Parameters with multiple graphics windows e Update This check box corresponds to the setting of Menu Visualization gt Apply Immediately If it is checked every change of a parameter will immediately lead to a redisplay of the image regions or XLD in the graphics window Otherwise the parameters become active for the next display of an object double click on an icon or execution of an operator e Reset Reset to the visualization settings defined in the Preferences page 62 e Use settings for new windows Make the current settings also the default settings for new graphics windows 5 2 4 Menu Visualization 85 Pen settings Here the display modes for regions and XLDs are specified You can select the color single or multiple the drawing mode filled or outlined the line width and the shape of the regions You can select up to 12 colors by clicking the appropriate check box They are used to emphasize the connectivity of different regions in the graphics window If you choose a single color presentation you may specify this color by selecting it in the list box With the parameter Shape default is original you may spec
174. e Statistics That is the range of input values is divided in quantization steps to obtain a meaningful histogram and ME as a consequence the histogram s peak value may actually represent a whole range of input values The dynamic parts of the histogram area are the two colored lines which can be manipulated The vertical green and red lines denote the minimum and maximum selected gray value of the histogram respectively The gray values on which the two vertical lines lie are displayed next to the lines in the same color Histogram Options Quantization Smoothing 1 Y Vertical fo 40253 adaptive y Horizontal 9 255 adaptive y e Quantization Display the histogram quantized The bucket size can be specified with the slider or entered into the spinner box 5 10 Gray Histogram Window 147 Smoothing Display the histogram smoothed The smoothing factor can be specified with the slider or entered into the spinner box Horizontal Vertical The visible part of the histogram can be specified parametrically by entering the minimum and maximum values into the spinner boxes These values are adapted when the visible area is set with the buttons next to the histogram Whenever new image data is evaluated in the gray histogram window the adaptation of these values depends on the selected adaptation mode which can be set independently for horizontal and vertical ranges adaptive In this mode the upper and l
175. e current HDevelop program If no file name has been specified yet a file selection dialog page 155 will be opened Local procedures are saved within the HDevelop program The file name of the program you save is added to the menu Recent Programs Please note that modified external procedures are not saved automatically To save them as well select the menu entry Menu File gt Save A11 or select the corresponding external procedure in the program window and click Menu File gt Save again see below e External procedure selected in program window Save changes to the currently selected external procedure back to the originating file The operation is done quietly A modified external procedure is marked with an asterisk in the program window If you try to save a file that has been modified outside of your running instance of HDevelop possibly by another user a warning message is displayed asking whether you want to overwrite the file If you are uncertain about the external changes to the file it is recommended to click No and save your program under a different name using Save Program As 5 2 1 7 Save Program As Synopsis Save changes of the current HDevelop program to a new file Shortcut lt Ctrl Shift S gt A file selection dialog page 155 is opened You can specify a new file name and save the current program under that name The new file name becomes the default name of the current program so that subsequent S
176. e found on one and the same object decrease the Maximum Overlap in the dialog Advanced Model Use Parameters e If an almost symmetric object is found at the wrong orientation try reducing the param eters specifying the allowed range of rotation page 195 in the dialog Standard Model Parameters page 192 in the tab Model Creation Specifying Standard Model Use Parameters Via the menu item Use Model gt Standard Model Use Parameters you can specify e the Minimum Score the object must have and e the number of instances of the object that are searched for in an image Maximum Number of Matches Additionally advanced search parameters can be specified via the menu item Use Model gt Advanced Model Use Parameters The Search Parameter Minimum Score When comparing a region in a test image with the model page 185 the Matching Assistant calculates a measure of similarity the so called score page 185 which ranges between 0 no similarity and 1 perfect similarity With the parameter Minimum Score you can specify a minimum score that a match must reach Graphically speaking the parameter specifies how much of the object 1 e of the model points must be visible A part of the object may be invisible not only because it is occluded but also if its contrast is lower than the selected minimum contrast value page 198 or has the wrong polarity page 197 A further cause of invisibility could be a too lar
177. e from which it was created Thus e g the menu items Create Model gt Create ROI Create Model gt Standard Model Parameters page 192 and Create Model gt Advanced Model Parameters page 196 and the Display button of the dialog accessed by Create Model gt Display Image Pyramid page 191 which is used to inspect the model are enabled 190 HDevelop Assistants Saving a Shape Model The menu item File gt Save Model enables you to save the created model page 186 in a file for later use For example the model page 185 can be loaded into the Matching Assistant again in a later session with File gt Load Model page 189 Loading Assistant Settings If you have saved the settings of a former Matching Assistant session you can load them again by the menu item File gt Load Assistant Settings or via the corresponding button of the tool bar Save Current Assistant Settings You can save the current settings of a Matching Assistant session using the menu item File gt Save Current Assistant Settings or the corresponding button in the tool bar Then you can load them again in a later session Close the Matching Assistant Dialog When closing the Matching Assistant dialog with the menu item File gt Close Dialog the current settings are stored for the duration of the current HDevelop session That is aslong as you do not exit HDevelop you can again open the Matching Ass
178. e image you specify the world coordinate system and the measurement plane for subsequent 3D measurements see figure 6 2 Thus in one calibration image typically the first one you should place the calibration plate such that it lies on top of the measurement plane If this is not possible place the calibration plate in a position parallel to the measurement plane and move the coordinate system by adapting the parameter Thickness The star on the left side of the Calibration window indicates the reference image It is by default set on the first image You can however by clicking the Set Reference button pick another image as reference 172 HDevelop Assistants Figure 6 2 Calibration plate image with coordinate system Calibrating Click the button Calibrate to finally perform the calibration task You should however check first whether you have 10 to 20 images that are of sufficient quality You can check the quality under Quality Issues Ifnecessary you can also change Calibration Plate Extraction Parameters page 176 before actually calibrating In case your calibration fails and displays the error Camera calibration did not converge check possible error sources in the Checklist for Calibration Er rors page 173 Handling Quality Issues Under Quality Issues you find an evaluation of each image which includes descriptions of the de fective image features and a quality percentage that tells you ho
179. e indent size Advanced Autocompletion The full text editor provides advanced autocompletion to support you in entering programs quickly and correctly without restricting your typing in any way Autocompletion is enabled by default It can be toggled on or off from the tool bar of the program window see Program Window Tool Bar on page 105 When you start typing a new line HDevelop will suggest a list of matching operator names read read_cam_par read_char read_class_box read class_gmm read_class_mlp read class svym Note that the line is highlighted as invalid red in the default color scheme because it is still incomplete The list is updated immediately as you continue typing read_i read image Press lt Tab gt to complete to the longest common string In this example only one operator name remains in the list Thus it is fully completed including the opening parenthesis of the operator call read_image __ read _ image image Image filename read FileName fabrik Image Image Once the cursor moves inside the parentheses the suggestion list changes from operator mode to param eter mode Furthermore the signature of the selected operator is displayed and the parameter corre sponding to the cursor position is highlighted in bold g cs ral o E 2 D E 6 110 Graphical User Interface The first entry in this list is a suggestion that completes
180. e the loop version to assign the values to each position assign tuple for 1 100 1 i assign tuple i i tuple endfor which is displayed as tuple for i 1 to 100 by 1 tuple tuple ix i endfor In this example we construct a tuple with the square values from 1 to 100 7 5 5 Basic Arithmetic Operations See table 7 7 for an overview of the available basic arithmetic operations All operations are left associative except the right associative unary minus operator The evaluation usually is done from left to right However parentheses can change the order of evaluation and some operators have a higher precedence than others see section 7 5 14 The arithmetic operations in HDevelop match the usual definitions Expressions can have any number of parentheses The division operator a1 a2 can be applied to integer as well as to real The result is of type real if at least one of the operands is of type real If both operands are of type integer the division is an integer division The remaining arithmetic operators multiplication addition subtraction and 7 5 6 Bit Operations 223 Operation Meaning HALCON operator 1sh i1 i2 left shift tuple_1sh rsh i1 i2 right shift tuple_rsh il band i2 bitwise and tuple_band il bxor i2 bitwise xor tuple_bxor il bor i2 bitwise or tuple_bor bnot i bitwise complement tuple_bnot Table 7 8 Bit operations negation can be applied to either inte
181. eas is not presented in the program text as an operator call but in the more intuitive form as Areas Radius 1 Area As an example assign 1 2 3 Area assign 9 Areas insert Areas Area 1 Areas sets Areas to 1 9 3 To construct a tuple with insert normally an empty tuple is used as initial value and the elements are inserted in a loop o te e te l 218 HDevelop Language Tuple for i 0 to 5 by 1 Tuple i sqrt real i endfor As you can see from the examples the indices of a tuple start at 0 An insertion into a tuple can generally be performed in one of the following ways 1 Incase of appending the value at the back or at the front the tuple concatenation operation comma can be used Here the operator assign is used with the following parameters assign Tuple NewVal Tuple which is displayed as Tuple Tuple NewVal 2 If the index position is somewhere in between the operator insert has to be used It takes the following arguments as input first the tuple in which the new value should be inserted then the new value and after that the index position as the third input parameter The result the fourth parameter is almost identical with the input tuple except of the new value at the defined index position see the example above In the following example regions are dilated with a circle mask and afterwards the areas are stored into the tuple A
182. ectory calib Calibration Plate Extraction Parameters These parameters page 176 influence the extraction of the calibration plate You may change them in order to improve the extraction of the plate if necessary We recommend however that you try to improve your image quality first Camera Parameters Internal Camera Parameters page 167 describe the camera itself e g its Focal Length Cell Width and Cell Height These parameters are part of the calibration results initial values for some of them are also needed for the setup of the calibration Camera Pose The position and orientation of the world coordinate system relative to the camera are called the external Camera Parameters page 167 They are part of the calibration results Display Parameters On the Calibration page 169 tab you can choose the display parameters like colors as you prefer them See also Display Parameters page 176 Full Calibration In a Full Calibration the complete camera system is calibrated The only infor mation needed are approximate values for Camera Type Cell Width Cell Height and Focal Length as well as the question whether you are using a Telecentric camera in which case the Focal Length is not required Image Rectification Based on the calibration results you can remove image distortions This is called image rectification Example code is available from the Code Generation tab page 178 Pose Estimation Once the interior parameters are ca
183. ects from memory As mentioned earlier in the exported C code every iconic object is represented by a NET HObject object From the garbage collector s point of view a NET HObject object is rather small Thus it might not be collected from memory although the underlying iconic object e g an image might in fact occupy a large portion of memory In order to avoid memory leaks caused by this effect in the exported code every iconic object is deleted explicitly before it is assigned a new value 8 3 Code Generation for C HALCON COM This section describes how to create a HALCON application in C starting from a program developed in HDevelop HALCON can be used together with C based on the COM interface of HALCON A detailed description of this interface can be found in the Programmer s Guide part IV on page 121 Note that this export is only provided for backwards compatibility We recommend to use the export based on HALCON NET see section 8 2 on page 253 256 Code Export 8 3 1 Basic Steps 8 3 1 1 Export The first step is to export the program using the menu File gt Export Here select the language C HALCON COM and save it to file The result is a new file with the given name and the extension cs 8 3 1 2 The C Template If the file has been exported using the option Use Export Template it is intended to be used together with the predefined C project that can be found in the directory
184. ed Directories below the separator line are user defined directories Each time an image is loaded from a directory which is not already listed that directory name is appended to the menu This is convenient when several images from a non standard directory must be read When clicking on an entry in this menu a file selection dialog page 155 of the given directory is opened Depending on the operating system you may be able to switch to a thumbnail view in this dialog See figure 5 5 for an example 5 2 1 Menu File 53 Choose a file E aux Look in 2 images e ef Fa eT az File Name C Program Files MYTec HALCONfimages earth pnal B Variable Name Earth X r Image Info Width 150 Height 150 Color type byte Channel number 3 die3 png die4 png die png ed_g png double_circle png Insert Position Insert Cursor Program Counter File name Files of type Figure 5 5 Read Image After selecting a file name the dialog Read Image is opened It displays a thumbnail of the selected image and some image properties This is also displayed in figure 5 5 HDevelop suggests a variable name derived from the selected file name You may adopt or edit this name If you want to use a name of an already created iconic variable a combo box offers you all known iconic variable names Simply click the arrow on the right side of the combo box to select a
185. ed Tuple elements that do not match the regular expression are discarded For example assign regexp_select List jpg Selection sets Selection to all the strings from List that look like file names of JPEG images Please note that the backslash character has to be escaped to be preserved regexp_test See also tuple_regexp_test regexp_test s1 s2 returns the number of elements of the tuple s1 that match the regular expression s2 Additionally a short hand notation of the operator is available which is convenient in conditional expressions si s2 7 5 8 Comparison Operations In HDevelop the comparison operations are defined not only on atomic values but also on tuples with an arbitrary number of elements They always return values of type boolean Table 7 10 shows all comparison operations t1 t2andt1 t2are defined on all types Two tuples are equal true if they have the same length and all the data items on each index position are equal If the operands have different types integer and real the integer values are first transformed into real numbers Values of type string cannot be mixed up with numbers i e string values are considered to be not equal to values of other types 7 5 9 Boolean Operations 229 Ist Operand 2nd Operand Operation Result 1 1 0 true gt Ml true S d 3 E false S ml 1 727 1 2 false 1 2 3 1 2 false 4711 Hugo 4711 Hugo tru
186. ed for displaying values in the variable window and asso ciated inspection windows as well as parameters in the operator window Printing The font used when printing program listings 5 2 2 Menu Edit aT ae Program Listing Fonts Language Layout AE External Procedures Ger Optic 88 General Options Courier 10 Indent Size 3 SY Visualization Settings Colors 28 Runtime Settings HALCON operators Internal Operations Internal Procedures External Procedures Full Text Editor Dialog based Editor Advanced Autocompletion IV Figure 5 12 User Interface gt Program Listing User Interface gt Language In this tab card you can change the language of the user interface Please note that HDevelop needs to be restarted if a different language is selected By default HDevelop uses the language that is specified in the operating system locale specifically the environment variable LC_COLLATE Once the language is changed in this dialog the operating system locale is disregarded User Interface gt Layout Show full path in main window title This check box determines whether the full path of the current program or only the file name is displayed in the title bar of the HDevelop window Default for Organize Windows These combo boxes define the tiled layout of the four main win dows of HDevelop when using the menu entry Menu Window gt Organize Windows page 100 g
187. ed in the graphics window This mode can also be enabled from the tool bar of the graphics window See page 136 default row 128 scale 20 column 128 scale 20 contourline step 15 3d_plot_lines 3d_plot_hidden_lines 3d_plot_point 3d_plot Figure 5 23 Comparison of the different paint settings g cs ral o E 2 D 0 88 Graphical User Interface Zoom settings See also dev_set_part As opposed to the mouse based zoom functionality that is available in the tool bar of the graphics win dow the tab card Zoom is parameterized You can specify the bounding box of the visible area of an image or set the center position PS Visualization Parameters Pen LUT Paint Zoom Row Column Set part Upper Left Corner 0 Jo Lower Right Corner s11 511 2 Set center Center Point 255 1255 Reset Zoom Out Zoom In Aspect IV Update Reset Use settings for new windows Figure 5 24 Visualization Parameters Zoom settings This tab card specifies which part of an image region XLD or other graphic item is going to be dis played The four text fields of Set part specify the coordinate system Upper Left Corner defines the pixel which will be displayed at the upper left corner of the window Lower Right Corner defines the pixel which will be displayed at the lower right side of the window Below the coordinates of the rectangle you can specify
188. een the control flow operators This is fine for entering new code blocks If you want to add control flow operators to existing code you can also add the operators individually Keep in mind however that a single control flow operator is treated as invalid code until its counterpart is entered as well In the following lt condition gt is an expression that evaluates to an integer or boolean value A condition is false if the expression evaluates to O zero Otherwise it is true HDevelop provides the following operators to control the program flow if endif This control flow structure executes a block of code conditionally The operator if takes a condition as its input parameter If the condition is true the body is executed Otherwise the execution is continued at the operator call that follows the operator endif To enter both if and endif at once select the operator if in the operator window and make sure the check box next to the operator is ticked if lt condition gt endif ifelse if else endif Another simple control flow structure is the condition with alternative If the condition is true the block between if and else is executed If the condition is false the part between else and endif is executed To enter all three operators at once select the operator ifelse in the operator window and make sure the check box next to the operator is ticked if lt condition gt 7 7 Control Flow Operators 235
189. eft adjustment flag has been given to the field width precision The precision specifies the minimum number of digits to appear for integer conversions the field is padded with leading zeros the number of digits to appear after the radix character for the e and f conversions the maximum number of significant digits for the g conversion or the maximum number of characters to be printed from a string conversion The precision takes the form of a period followed by a decimal digit string A null digit string is treated as a zero conversion A conversion character indicates the type of conversion to be applied d o x X The integer argument is printed in signed decimal d unsigned octal o or unsigned hexadecimal notation x and X The x conversion uses the numbers and lower case let ters 0123456789abcdef and the X conversion uses the numbers and upper case letters 0123456789ABCDEF The precision component of the argument specifies the minimum num ber of digits to appear If the value being converted can be represented in fewer digits than the specified minimum it is expanded with leading zeroes The default precision is 1 The result of converting a zero value with a precision of 0 is no characters f The floating point number argument is printed in decimal notation in the style ddd ddd where the number of digits after the radix character is equal to the precision specifica tion If the precision is omitted from the argument
190. eld specifies the name of the procedure If the dialog is opened in order to create a new procedure it contains a text field for the procedure name to be entered If you edit an existing procedure the name of the procedure is displayed in the combo box Procedure Name on top of the dialog You can edit the interface of another procedure by selecting it from the combo box Type This check box determines whether the procedure is a local or external procedure Local proce dures are saved within the HDevelop program while external procedures are saved as stand alone files External procedures can be reused in other HDevelop programs Password External procedures can be protected by a password Initially external procedures are not protected i e they can be viewed and modified by all users How to protect passwords is discussed in section Protected External Procedures on page 123 Local procedures cannot be protected Adapt program If you are editing an existing procedure interface this check box becomes available If it is checked all calls to the procedure in the current program are checked for consistency and updated if necessary Note that if new parameters are added to an existing procedure interface the corresponding procedure calls are modified by adding new variables as input parameters which most likely will not be initialized at the time of the procedure call Directory external procedures only For external procedures a storage
191. elop In both cases substitute lo gin with your login name 276 Tips amp Tricks Glossary 277 Appendix A Glossary Boolean is the type name for the truth values true and false as well as for the related boolean expres sions Body A body is part of a conditional instruction if or a loop while or for and consists of a sequence of operator calls If you consider the for loop for instance all operator calls that are located between for and endfor form the body Button A button is part of a graphical user interface With the mouse the user can press a button to cause an action to be performed Control data Control data can be either numbers finteger and freal character strings string and truth values boolean This data can be used as atomic values i e single values or as Ttuples i e arrays of values Empty region An empty fregion contains no points at all i e its area is zero Graphics window A graphics window is used in THDevelop for displaying e g images Tregions and XLD HDevelop is an interactive program for the creation of HALCON applications Iconic data are image data i e image arrays and data which are described by coordinates and are derived from image arrays e g Tregions images and TXLD Image An image consists of one or more multi channel image image arrays and a region as the definition domain All image arrays have the same dimension but they can be of differen
192. ence between these approaches is the realm of application The first method handles errors inside the procedure in which they occur The latter method allows errors to work their way up in the call stack until they are finally dealt with o te o te l 240 HDevelop Language 7 8 1 Tracking the Return Value of Operator Calls The operator dev_set_check specifies if error message boxes are displayed at all To turn message boxes off use dev_set_check give_error HDevelop will then ignore any errors in the program Consequently the programmer has to take care of the error handling Every operator call provides a return value or error code which signals success or failure of its execution This error code can be accessed through a designated error variable dev_error_var ErrorCode 1 This operator call instantiates the variable ErrorCode It stores the error code of the last executed operator Using this error code the program can depend its further flow on the success of an operation if ErrorCode H_MSG_TRUE react to error endif continue with program The error message related to a given error code can be obtained with the operator get_error_text This is useful when reporting errors back to the user of the program Due to the lack of global variables in HDevelop errors have to be responded to in the same procedure where they occur If the error is to be handled in a calling procedure an ap
193. ently selected image ac quisition interface Usually this is done automatically when the interface is selected from the list on the tab card Source The button Reset A11 sets all connection parameters back to their default values Set Device Parameters The tab card Parameters contains a list of parameters specific to the selected device It becomes available once the connection to the device has been activated See figure 3 8 for an example parameter list Please refer to the HTML page of the selected interface for detailed information You can click the help button of the assistant to get to the corresponding page automatically Depending on the parameter type different selection methods are enabled As an example parameters with a defined range of values can be specified by dragging a slider or entering the value parametrically If a value is changed a reset button to the right is activated Some parameters provide a check box which attempts to set the parameter automatically if clicked If Update Image is checked parameter changes are immediately reflected in the graphics window by acquiring a new image The button Refresh updates the list of parameters which is useful if parameters have side effects You can reset all parameters to their default values at once by clicking Reset A11 uisition Image Acquisition 01 E Ol xi File Acquisiti Code Generation Help Das ox Source Connection Parameters Code Generation
194. enu item Use Model gt Standard Model Use Parameters page 203 which opens the corresponding dialog in the tab Model Use Espe cially the number of object instances page 204 to search for in an image should be specified If the number of object instances varies from test image to test image you can specify the number of visible objects page 202 for each image separately in this case the search parameter mentioned above should be set to 0 or to the maximum number of visible objects e Assure that all objects are found page 202 in all test images Now you can optimize the speed of the matching process by tuning the parameters 6 3 2 How to Use the Matching Assistant of HDevelop 187 6 3 2 3 Optimizing the Parameters After you configured the matching page 185 process such that the search is successful in all test images you can start to optimize the parameters to speed up the matching as far as possible To support this process the Matching Assistant allows to optimize the search parameters Minimum Score page 203 and Greediness page 204 automatically via the menu item Use Model gt Optimize Recognition Speed page 206 which can be accessed also via the tab Model Use If the reached recognition speed is not sufficient you can try to modify parameters manually However please be aware that such a modification may result in a lower accuracy of the calculated position orienta tion or scale or even prevent the Matching
195. er 160 trigonometric functions 230 true 277 try 71 92 239 try 239 tuple 278 concatenation 218 219 tuple_abs 231 243 tuple_acos 230 243 tuple_add 222 242 tuple_and 229 242 tuple_asin 230 243 tuple_atan 230 243 tuple_atan2 230 243 tuple_band 223 242 tuple_bnot 223 242 tuple_bor 223 242 tuple_bxor 223 242 tuple_ceil 231 243 tuple_chr 233 243 tuple_chrt 233 244 tuple_concat 219 242 tuple_cos 230 243 tuple_cosh 230 243 tuple_cumul 231 243 tuple_deg 231 243 tuple_deviation 231 243 tuple_div 222 242 tuple_environment 233 243 tuple_equal 228 242 tuple_exp 230 243 tuple_fabs 231 243 tuple_find 219 242 tuple_floor 231 243 tuple_fmod 231 243 tuple_gen_const 242 tuple_greater 228 242 tuple_greater_equal 228 242 tuple_int 231 243 tuple_inverse 233 243 tuple_is_number 233 243 tuple_ldexp 230 243 tuple_length 219 242 tuple_less 228 242 tuple_less_equal 228 242 tuple_log 230 243 tuple_log10 230 243 tuple_1sh 223 242 tuple_max 231 243 tuple_max2 231 243 tuple_mean 231 243 tuple_median 231 243 tuple_min 231 243 tuple_min2 231 243 tuple_mod 222 242 tuple_mult 222 242 tuple_neg 222 242 tuple_not 229 243 tuple_not_equal 228 242 tuple_number 233 243 tuple_or 229 243 tuple_ord 233 243 tuple_ords 233 244 tuple_pow 230 243 tuple_rad 231 243 tuple_rand 233 244 tuple_real 231 243 tuple_regexp_match
196. erance 12 p_do_inspect_bottle_mouth jis p_do_locate_car_door 14 p_do_reconstruct_connection_rod_uncalib lis p_do_textline_orientation i6 p_do_novelty_detection_gmm p_do_find_ncc_model_defocused Figure 5 16 External Procedures gt Procedure Use External Procedures gt Procedure Use This tab card lists the usage of procedures grouped by their calling procedures You can select a proce dure and the type of used procedures either local or external For the main procedure you can also list the unused procedures The tab card is displayed in figure 5 16 External Procedures gt Unresolved Procedure Calls This tab card helps you to find unresolved procedures in your current program If the current program or the loaded procedures contain unresolved procedure calls they are listed here along with the calling procedure name g cs ral o E 2 a a 5 0 70 Graphical User Interface General Options gt General Options Select the behavior of pressing the Return key in the operator window or full text editor This option can also be set in the program window see section Program Window Tool Bar on page 105 e OK Enter and execute Enter the operator in the program window and execute it the default behavior e Enter Enter the operator without executing it Save program and external procedures automatically before execution If thi
197. erts an integer to a real For real as input it returns the input int converts a real to an integer and truncates it round converts a real to an integer and rounds the value For integer it returns the input The function abs always returns the absolute value that is of the same type as the input value The following example file name euclid_distance dev shows the use of some numerical functions vi 18 8 132 4 33 19 3 V2 233 23 32 786 234 4224 63 33 Diff Vi V2 Distance sqrt sum Diff Diff Dotvalue sum V1 V2 First the Euclidian distance of the two vectors V1 and V2 is computed by using the formula d J Vli V2 The difference and the multiplication square are successively applied to each element of both vectors Afterwards sum computes the sum of the squares Then the square root of the sum is calculated After that the dot product of V1 and V2 is determined by the formula V1 V2 XC Vl V2 i 7 5 13 Miscellaneous Functions sort sorts the tuple values in ascending order that means that the first value of the resulting tuple is the smallest one But again strings must not be mixed up with numbers sort_index sorts the tuple values in ascending order but in contrast to sort it returns the index positions 0 of the sorted values The function inverse reverses the order of the tuple values Both sort and inverse are identical if the input is empty if the tuple is of length 1
198. es As previously noted the default editing mode in HDevelop is dialog based All parameter modifications in the program are done through the operator window To edit a line double click it in the program window Then the parameters are displayed in the operator window for editing If you click OK or Enter the original line in the program is updated There is also a full text editor which is explained in section 5 4 1 2 on page 108 Double click the second line of the program to adjust the threshold operation Replace the value 30 with 56 and click Enter The program line is updated in the program window 4 10 Re Execute the Program The last editing step was just a tiny modification of the program Often after editing many lines in your program with perhaps many changes to the variables you want to reset your program to its initial state and run it again to see the changes 4 11 Save the Program 39 Click Execute gt Reset Program Execution to reset the program Now you can select Execute gt Run to run the complete program or click Execute gt Step Over repeatedly to execute the program line by line 4 11 Save the Program Perhaps now is a good time to save your program Select File gt Save and specify a target directory and a file name for your program 4 12 Selecting Regions Based on Features Inspecting the variable ConnectedRegions after the changed threshold operation yields a much better result Still a contiguou
199. essing lt Return gt will display the first of the specified images in the active graphics window The buttons Select File s andSelect Directory open a file browser to select multiple images or an image directory respectively After clicking OK in the file browser the text field is updated with the selected items and the first image is displayed in the active graphics window Use the entry Snap or Live in the menu Acquisition or the corresponding tool bar buttons to view the selected images one after another Image Acquisition Interface Activate this radio button to acquire images from an image acquisition interface The drop down list contains the list of all supported image acquisition interfaces Clicking Detect probes the image acquisition interfaces in turn and removes those interfaces from the list that do not respond It is recommended to save your program before probing the image acquisition interfaces 6 1 2 Tab Connection Synopsis Setup connection parameters for the image acquisition interface selected in the tab Source This tab card is only available if the image source is set to an image acquisition interface The connection parameters are described below See the description of the operator open_framegrabber for additional information about the fields 160 HDevelop Assistants Configuration Device Select the ID of a board camera or logical device if multiple devices are available for the selected
200. eters you can specify e the Greediness of the search algorithm e how much the objects may overlap Maximum Overlap e the accuracy Subpixel of the calculated position orientation and scale e the lowest pyramid level Last Pyramid Level to which the found matches are tracked and e whether objects that lie partially outside the image Shape model may cross the image border should be searched The Search Parameter Greediness The parameter Greediness influences the search algorithm used by the Matching Assistant It ranges between 0 and 1 If you select a low value the search is thorough but relatively slow The higher the value the faster the search algorithm becomes but at the cost of thoroughness i e an object might not be found even though it is visible in the image This parameter can be optimized easily Starting from the value 0 increase the value until the matching fails in a test image and then use the last value for which the object is found in fact this method is used by the Matching Assistant itself when you start the optimization via the menu item Use Model gt Optimize Recognition Speed page 206 The Search Parameter Maximum Overlap The parameter Maximum Overlap specifies how much two matches may overlap in the image its value ranges between 0 and 1 Especially in the case of an almost symmetric object the allowed overlap should be reduced to prevent multiple matches on the same objec
201. eters are displayed immediately in the operator win dow If there are several matching results a combo box opens and displays all operators or procedures containing the specified substring By clicking the left mouse button you select one operator and the combo box disappears Now the operator s parameters are shown in the operator window The short description of the selected operator is displayed in the status bar The operator name is dis played in the window title of the operator window 5 5 2 Parameter Display The parameter display is the main part of the operator window If you have selected an operator or pro cedure call HDevelop displays its interface i e the name value and semantic type of each parameter e In the first column of the parameter display the parameter types are indicated by icons Note that icons are not repeated if a parameter is of the same type as its predecessor Hover the mouse cursor over the icons to get a tool tip with the short description of the parameter e Inthe second column of the operator window you find the parameter names g la o ae E 2 D 5 0 126 Graphical User Interface ct_characters Enter Operator or Procedure select_characters y select_characters Operator s Parameters select_contours_xld Pu select_gray select_grayvalues_from_channels les Region select_lines select_lines_longest E rra re select_matching_
202. exception handling is applied in the following way try start block of watched program lines catch Exception get error code ErrorCode Exception 0 react to error endtry program continues normally HDevelop Language 7 9 Summary of HDevelop operations Functionality HDevelop Operation HALCON operator concatenation t1 t2 tuple_concat number of elements It tuple_length select tuple element t i tuple_select select tuple slice t i1 12 tuple_select_range select elements remove tuple elements subset t i remove t i tuple_select tuple_remove lookup tuple values find t1 t2 tuple_find unify tuple elements uniq t tuple_uniq tuple creation gen_tuple_const i1 i2 tuple_gen_const division al a2 tuple_div multiplication al a2 tuple_mult modulo al a2 tuple_mod addition al a2 tuple_add subtraction al a2 tuple_sub negation a tuple_neg left shift lsh i1 i2 tuple_1sh right shift rsh i1 i2 tuple_rsh bitwise and il band i2 tuple_band bitwise xor ii bxor i2 tuple_bxor bitwise or il bor i2 tuple_bor bitwise complement bnot i tuple_bnot string conversion v s tuple_string string concatenation vi v2 tuple_concat search character strchr s1 s2 tuple_strchr search character reverse strrchr s1 s2 tuple_strrchr search string strstr s1 s2 tuple_strstr search string reverse strrstr s1 s2 tuple_strrstr length of string strlen s tuple_strlen select character s i tuple_str_bit_selec
203. executable program line in the new current procedure Step Into has the same effect as Step Over if the program line to be executed is not a procedure call 5 2 3 6 Step Out Synopsis Step out of HDevelop procedure Shortcut lt F8 gt This entry steps out of the current procedure call Program execution is continued until the first exe cutable program line after the previous procedure call in the calling procedure is reached The previous calling procedure becomes the current procedure If the current procedure is the main procedure the behavior is the same as Run 5 2 3 7 Stop Synopsis Stop program execution Shortcut lt F9 gt HDevelop continues processing until the current operator has completed its computations This may take a long time if the operator is taking a lot of time to execute There is no way of interrupting a HALCON operator The procedure and procedure call in which the program execution was stopped becomes the current procedure and procedure call respectively After interrupting a program you may continue it by selecting Run or Step Over or Step Into if the next program line is a procedure call You may also edit the program before continuing it e g by parameter modification by exchanging operators with alternatives or by inserting additional operators 5 2 3 Menu Execute 77 5 2 3 8 Call Stack Synopsis Visualize the calling hierarchy Selecting this item depicts a dialog that contains a
204. ext field Connection Handle The variable name of the acquired image s can be setin Image Object Click Code Preview to inspect the code Click Insert Code to generate the code in the program window at the IC Image Acquisition Image Acquisition 01 File Acquisition Code Generation Help Poe Fax Source Connection Parameters Code Generation Acquisition A Control Flow Jacquire Images in Loop y Insert Code Acquisition Mode Asynchronous Acquisition y IV Auto Disconnect Variable Names Connection Handle JacqHandle Loop Counter index Image Object Image Image Files JimageFiles A Code Preview Insert Operator Replace Operator Code generate main Code generated by Image Acquisition 01 open_framegrab main open_framegrabber uEye 1 1 0 0 O O interlaced 8 default set_framegrabbe main set_framegrabber_param AcqHandle exposure 99 9248 grab_image_star main grab_image_start AcqHandle 1 while true main while true grab_image_asy main grab_image_async Image AcqHandle 1 ES 144 6 ms Ui Figure 3 9 Code generation 3 3 3 Modifying the Generated Code 29 Here is a code example Code generated by Image Acquisition 01 open_framegrabber uEye 1 1 0 0 0 0 interlaced 8 default 1 false UI154x M 1 0 1 AcqHandle set_framegrabber_param
205. extent to 10 We recommend to limit the allowed range of rotation as much as possible in order to speed up the search process and to minimize the required memory If the loaded test images page 200 show the object in its extreme orientations you can let the Matching Assistant determine the range of rotation i e the Pose Bounds page 207 by pressing the Run button of the tab Inspect and viewing the result in the Statistics output of the same tab Furthermore you must limit the allowed range if the object is almost symmetrical Otherwise the search process will find multiple almost equally good matches on the same object at different angles which match at which angle is returned as the best can therefore jump from image to image The suitable range of rotation depends on the symmetry For a cross shaped or square object the allowed extent must be less than 90 for a rectangular object less than 180 and for a circular object 0 Note that if you have chosen a very large angle and scale range you may find it useful to switch off the complete pregeneration page 198 of the model The Model Parameters for the Scale Range The allowed range of scale is defined separately in row and column direction Thus it is described by the parameters e Minimum Row Scale e Maximum Row Scale e Minimum Column Scale e Maximum Column Scale In the model image the scales all have the value 1 0 196 HDevelop Assistants
206. ey and clicking in the left column of the program window as described in section Program Counter Insert Cursor and Break Points on page 111 5 2 3 11 Clear All Breakpoints Synopsis Clear all break points in the current program g cs ral o E 2 a a 5 0 78 Graphical User Interface 5 2 3 12 Reset Program Execution Synopsis Reset program to its initial state Shortcut lt F2 gt The main procedure becomes the current procedure and the call stack is cleared of all procedure calls except the main procedure call The latter is reset i e all variables have undefined values and the PC is set to the first executable line of the main procedure The break points however are not cleared All graphics windows except one are closed and the remaining graphics window is cleared This menu item is useful for testing and debugging programs 5 2 3 13 Reset Procedure Execution Synopsis Reset procedure execution Shortcut lt Shift F2 gt The variables of the current procedure are reset i e all variables have undefined values and the PC is set to the first executable line of the current procedure This menu item is useful for debugging procedures without affecting the calling procedures 5 2 3 14 Abort Procedure Execution Synopsis Abort execution of current procedure Shortcut lt Shift F8 gt All variables of the current procedure are reset The PC is set back to the line in the calli
207. file to test and then just type make You can link the program to the HALCON XL libraries by calling make PROG test XL 1 or just type make XL 1 if you set the variable PROG as described above For more details see the Programmer s Guide chapter 7 on page 71 8 1 2 Optimization 251 8 1 2 Optimization Optimization might be necessary for variables of class HTuple This kind of optimization can either be done in HDevelop or in the generated C code In most cases optimization is not necessary if you program according to the following rules 1 Using the tuple concatenation it is more efficient to extend a tuple at the right side like T T New because this can be transformed to T Append New in C and requires no creation of a new tuple whereas T New T which is translated into T New Append T would need the creation of a new tuple 2 Another good way to modify a tuple is the operator insert see section 7 5 2 on page 217 In this case HDevelop code like T i New can directly be translated into the efficient and similar looking code T i New 8 1 3 Used Classes There are only two classes that are used HTuple for control parameters and Hobject for iconic data There is no need for other classes as long as the program has the same functionality as in HDevelop When editing a generated program you are free to use any of the classes of HALCON C to extend the functionali
208. following assistants are available Image Acquisition Using this assistant you can generate code to acquire images from different sources files directories image acquisition interfaces The assistant is described in section Image Acquisition Assistant on page 158 A tutorial about using this assistant is available in section 3 3 on page 23 Calibration Using this assistant you can calibrate your camera and therefore gain information about parameters of the camera system and distortions in the image Calibrating your system constitutes a preparation for your subsequent application as it provides the basis for you to measure with high precision in the world coordinate system The assistant is described in section Calibration Assistant on page 164 Matching Using this assistant you can generate code to perform shape based matching in your HDevelop program You can load a reference image to train a model Using a selection of test images containing the model you can tweak a set of parameters to find the model in all varia tions permitted by the application Furthermore the parameters can be optimized to increase the processing speed The assistant is described in section Matching Assistant on page 185 Common Features of all HDevelop Assistants Some features are common to all HDevelop assistants First of all you can open multiple assistants Assistants of the same type are numbered consecutively e g if you open two
209. for iconic data above or left and the other for control data below or right la o ES E 2 D 5 0 130 Graphical User Interface Iconic Yariables O00 EYES CET 0000 LELES LELE Image Region Control variables WindowHandle width 640 Height 480 i 8 3600 130 074 85 1812 1 91471 2 10746 2 07412 1 Figure 5 41 Variable window with instantiated iconic and control variables All computed variables are displayed showing their iconic or control values unless the automatic update has been switched off see section Runtime Settings gt Runtime Settings on page 72 In case of a tuple result which is too long the tuple presentation is shortened indicated by three dots In this case the full content of a variable can be displayed in an inspection window by double clicking the value list See also the following sections Switching Between Horizontal and Vertical Layout You can toggle the orientation of the two parts of the variable window To do this double click the dividing line between both parts You can also drag that line to resize the parts Managing Variables In large programs the variable window can become quite cluttered which makes watching selected variables difficult Therefore you can customize the selection of displayed variables At the bottom of the variable window three tabs are available e All All var
210. for which the password has already been entered in this session unlocked and external procedures that are locked with a password For an explanation of the different states see section Protected External Procedures on page 123 Using the arrow buttons between the columns or the left and right cursor key you can move the selected external procedures to a different status If you move procedures from the first to the second column a password dialog is displayed which is described in section Protecting a Procedure on page 123 The same password is applied to all selected procedures If you move procedures from the second to the third column the bodies of the corresponding external procedures will be locked They can only be accessed if the correct password is supplied This can either be done from this dialog by simply moving the corresponding procedures back to the middle column and entering the password Or you can unlock procedures individually from the program window as described in section Creating and Editing Procedures on page 112 If you select multiple procedures in the third column and move them to the left a password dialog appears to unlock the procedures Only those procedures are moved and thus unlocked that match the supplied password This way you can conveniently edit a group of external procedures that share the same password The button Change Password is available if one or more procedures are selected in
211. fter to keyword in expression of parameter End or the following by keyword In for statement error after assignment operation in expression of parameter Start or the following In for statement invalid variable name in parameter Index or error in the following assignment operation for statement not complete In for statement space after for expected In for statement space after to expected In for statement space after by expected 7 10 HDevelop Error Codes 247 21226 22000 22010 22011 22012 22100 22101 22102 22103 22104 22105 22106 22200 22201 22202 22203 22204 22205 22206 22300 22301 22302 22303 22304 22305 22306 30000 Unknown operator or procedure Internal operation in expression failed Parameters are tuples with different size Division by zero String exceeds maximum length Parameter is an empty tuple Parameter has more than one single value Parameter is not a single value Parameter has the wrong number of elements Parameter contains undefined value s Parameter contains wrong value s Parameter contains value s with the wrong type First parameter is an empty tuple First parameter has more than one single value First parameter is not a single value First parameter has the wrong number of elements First parameter contains undefined value s First parameter contains wrong value s First parameter contains value s with the wrong typ
212. g Images From Piles oea ck ee ee ee es ee 32 Viewing MALES bo ee os ee a A 32 image Acquisition Assistant s se sees AG OA RE Ae RA BRR ES 3 3 1 Acquiring Images From Files or Directories css s o eee eee 3 3 2 Acquiring Images Through Image Acquisition Interfaces 333 Madityme the Generated Cade os Pe bk Reh ee ee Eee es 4 Programming HDevelop LL Slate NOW POSTA ok ck ace RES EAA PEELS BR RS EA E 42 BOTA Operator ca eek eA Ae hae aa 4 3 Specily Parameters so coso Rhee ee eR REE Re ee eG as Cree Help AAN 43 Add Additional Program Lines occiso Be eee ESS lt 4 4 6 Understanding the Image Display o o e e 47 Inspecting Variables cc ae tb ea A See 4 8 Improving the Threshold Using the Gray Histogram 0 GO NECESA AR A A Bed 4 10 Re Execute the Program oo coso e e A Ge he ALL Save the Progam ora di A ae 4 12 Selecting Regions Based on Features o e reaa nen 4 13 Looping Over the Results ooo co ocres ee es AAA SUMA oia Se aS RR ERS Ba a SA wl ea A 5 Graphical User Interface Suk INTA WOW cos SR eee eo ee ee A as 2 eA o a 10 10 11 11 15 15 18 21 21 22 23 23 25 29 12 Mut Eak seek ee a we ek OS oe Bh ee eo Se Be ee a 46 Deol MEIRELLES ee ek a ee ae a ER me Mp el Ge ee 46 DEL MEMES o eck GOR bP Re RE OAS HORE ES ADE a 56 229 Meni brectte 2n04 604506 be ad ae eae Paw a ale de e G 74 S24 Menn Visnalizati n o o era 2 058
213. g ee eee de bb eee bee ae ee ee ew 267 dos Wareble Names 2 0 44605 2024 2244 26444 28454 eee as BES 268 Boek OT GODS 6 oe ee RR Oe ORY pe oe RR BO 268 8 8 5 Protected External Procedures oo e ce Ce we ee ee e a 269 3 6 System Patameters so pues a ee a a 269 8 8 7 Graphics WindOWS lt go ssa e 56645 544 5 beh we ee ee 269 9 Tips amp Tricks 273 Ol Egyeodes ce be i eH ead Ss Baw ae ds oe eS Bae eye G 273 Oo AMAS sa Ge es Be ee Aa em oe a Rom e 273 93 Waring and Error Windows c cere 20 8660 heen bee ee bbe eae ews 273 Om Emergency Dake 5 000 a e RR AR SE RL 274 A Glossary 277 B Command Line Switches 279 Index 281 Introducing HDevelop 9 c 2 O El 3 e La E Chapter 1 Introducing HDevelop HDevelop is a tool box for building machine vision applications It facilitates rapid prototyping by offering a highly interactive programming environment for developing and testing machine vision appli cations Based on the HALCON library it is a sophisticated machine vision package suitable for product development research and education There are four basic ways to develop image analysis applications using HDevelop e Rapid prototyping in the interactive environment HDevelop You can use HDevelop to find the optimal operators or parameters to solve your image analysis task and then build the application using various programming languages e g C C C Visual Basic NET or Delphi e Development of an ap
214. g menu entries see Common Features of all HDevelop Assistants Menu Acquisition Connect Connect disconnect the selected image acquisition device See Tab Connection Snap Acquire a single image See Tab Connection Live Acquire images in live mode See Tab Connection 164 HDevelop Assistants 6 2 Calibration Assistant 6 2 1 Introducing the Calibration Assistant of HDevelop Most applications that need a previous calibration of the camera system belong to the area of 3D machine vision These applications require a 3D model of the camera system Calibration is necessary in order to gain information about distortions perspective and lens distortions in an image and about parameters of the camera system Calibrating your camera system with the HALCON Calibration Assistant enables you to measure in the world coordinate system with a high accuracy This task can be performed by taking images of a known object a calibration plate The Calibration Assistant of HDevelop is a front end to HALCON s operator camera_calibration Using the Calibration Assistant you can e either perform a complete calibration or e take advantage of the user defined mode and only calibrate chosen parameters if the rest is already known e g if you are using a special setting All you need is a set of ideally 10 to 20 calibration images The Calibration Assistant then returns the calibration results and enables you to generate code and insert it into
215. ge angle step size page 196 The larger the value is chosen the faster the search is because candidate matches can be discarded earlier Therefore this parameter can be optimized easily Starting from the maximum value reduce the value until the object is found in all test images page 185 in fact this method is used by the Matching Assistant itself when you start the optimization via the menu item Inspect gt Optimize Recognition Speed page 206 Choosing small values may cause the program to search for quite a while In such a case we recommend to enter a larger value in the text box instead of using the slider 204 HDevelop Assistants Please note that by default the objects must lie completely within the test images in order to be found This behavior can be changed via the parameter Shape models may cross the image border page 205 in the dialog accessed via the menu item Use Model gt Advanced Model Use Parameters The Search Parameter Maximum Number of Matches The parameter Maximum Number of Matches specifies how many instances of the object are searched for in the image Note that the parameter sets a maximum value i e if more object instances are present in the image only the best instances of the specified number are displayed If you specify the value 0 all found instances are displayed Specifying Advanced Model Use Parameters Via the menu item Use Model gt Advanced Model Use Param
216. ge each channel separately with the same table 5 2 4 13 Paint Synopsis Specify image visualization See also dev_set_paint This menu item defines the mode to display gray value images For more information see the menu item Set Parameters below 5 2 4 14 Position Precision Synopsis Select the precision of subpixel mouse positions By default mouse positions are displayed as integers precision 0 where the upper left image pixel is displayed as 0 O Increasing the precision results in mouse positions being reported as subpixel precise positions Please note that when subpixel mouse positions are enabled the position 0 0 0 0 refers to the center of the upper left pixel i e the upper left edge of the image is displayed as 0 5 0 5 5 2 4 Menu Visualization 83 5 2 4 15 Apply Immediately Synopsis Update behavior of visualization changes in active graphics window If this menu entry is checked any changes to the visualization settings are applied immediately to the active graphics window Otherwise the changes are deferred until the next object is displayed in the active graphics window 5 2 4 16 Update Window Synopsis Specify the output behavior of the active graphics window If this menu entry is checked every object image region or XLD is displayed in the active graphics window during program execution Otherwise the active graphics window is not updated 5 2 4 17 Reset Parameters Synopsis Rese
217. ger or real numbers If at least one operand is of type real the result will be a real number as well Examples Expression Result 4 3 1 4 3 0 1 3333333 4 3 2 0 2 0 Simple examples can be found in the program arithmetic dev 7 5 6 Bit Operations This section describes the operators for bit processing of numbers The operands have to be integers The result of lsh i1 i2 is a bitwise left shift of i1 that is applied i2 times If there is no overflow this is equivalent to a multiplication by 2 The result of rsh i1 i2 is a bitwise right shift of 11 that is applied 12 times For non negative i1 this is equivalent to a division by 2 For negative i1 the result depends on the used hardware For 1sh and rsh the result is undefined if the second operand has a negative value or the value is larger than 32 More examples can be found in the program bit dev 7 5 7 String Operations There are several string operations available to modify select and combine strings Furthermore some operations allow to convert numbers real and integer to strings string conversion See also tuple_string converts numbers to strings or modifies strings The operation has two operands The first one left of the is the number that has to be converted The second one right of the specifies the conversion It is comparable to the format string of the printf function in the C programming language This format string consists of t
218. grams that cover image processing problems that you may wish to solve with HALCON These programs may serve as a foundation for your own development projects 2 2 Running Example Programs anoles ox Category Filter measure Paper products Ex Pharmaceutical Example Short Description Description Photogrammetry and remote sensing Fuzzy measure Measure pins of an IC using Precision engineering and optics fuzzy measuring Printing Locate IC on a board and Rubber synthetic material Foil measure pin distances Semiconductors measure_ic_lead Measure leads of an IC Surveillance and security Transport measure_pin dev Measure pins of an IC Wood and timber Locate IC on a board and A pm_measure_bo E Method measure pin distances E Operator E New in version I Keep dialog open Open matching_image_ Open in new HDevelop Figure 2 3 Browse Examples dialog Browse and Load Example Programs e Click File gt Browse Examples This will open the example program browser see figure 2 3 Similar to a file browser it shows a tree of categories on the left and a list of example programs from the selected categories on the right Categories that contain hidden subtopics are marked with a Double click on a category label to open the subtopics or click H Double click again to close the subtopics or click H Browse the categories Click on
219. gt lt Left Right Up Down gt pan image 10 pixels Graphics Window Tool Bar Icons Clear the graphics window and its history 5 7 Graphics Window 139 Figure 5 50 Magnifying glass A Switch to select mode In this mode you can select regions or XLDs that are displayed in the graphics window A selected item is highlighted with a dashed border If multiple layers of region XLD data are displayed in the graphics window the first click selects the uppermost region XLD under the mouse cursor Each subsequent click at the same position selects the region XLD below the currently selected item The variable name of the selected item is displayed in the title bar of the graphics window for reference You can use the select mode to inspect gray value histograms and features of individual regions or XLDs In the example image illustrated in figure 5 47 on page 136 the displayed image of a tooth rim is overlaid with region data A single region is selected ombined move zoom tool Drag the displayed image with the left mouse button to alter the dis Y Combined 1 Drag the displayed image with the left b Iter the di played portion Use the mouse wheel to zoom in and out a Magnifying glass Click into the graphics window to magnify the area at the mouse cursor See figure 5 50 for an illustration of this tool EL Zoom in Click the small arrow next to the icon to switch to zoom out amp Zoom out Click the small arrow next to
220. h column indicates the parameter s default semantic type and optionally its data type in parentheses Hover the mouse cursor over the second to fourth column to get a short description for the corresponding parameter as a tool tip Please refer to the following rules on how parameters obtain their values and how you may specify them Iconic input parameters Possible inputs for these parameters are iconic variables of the corresponding type If there is no need to execute the operator or procedure call immediately you may specify new variable names i e names that do not already exist in the variable window but will be instantiated later by adding further operators or procedure calls to the program body In any case 5 5 2 Parameter Display 127 Operator Window Insert select_shape Enter Operator or Procedure select_shape y Parameters les Regions Mii El selectedRegions SelectedRegions _Regions to be examined to be examined v region amp Features area string Operation and string Min 150 real Max 99939 real Enter Apply Cancel Help Figure 5 40 Specifying parameters for the operator select_shape you have to specify iconic parameters exclusively with variable names It is not possible to use expressions Iconic output parameters These parameters contain default variables which have the same names as the parameters themselves If a variable with
221. hapter explains how to start HDevelop It provides a quick overview of the graphical user interface and shows you how to run the supplied example programs e Acquiring Images with HDevelop This chapter explains the fundamental part of machine vision applications how to acquire images e Programming HDevelop This chapter explains how to develop applications in HDevelop e Graphical User Interface This chapter explains the graphical user interface of HDevelop and how to interact with it e HDevelop Assistants This chapter describes how to use the machine vision assistants of HDevelop e HDevelop Language This chapter explains the syntax and semantics of the language used in HDevelop expressions e Code Export This chapter explains the export of a HDevelop program to C C Visual Basic Visual Basic NET or CH consult your operating system s documentation for general information e Tips amp Tricks This chapter describes keycodes warning and error windows and provides miscellaneous infor mation Contents 1 Introducing HDevelop LI Facts about HDevelop o oo sados a a aaa A 1 2 HDevelop Procedures o oc ccosa ee eR Ba ee a ee eS 13 HDevelop XL o co opno cru Bee ee EB ee de Ge E 14 Terminology amp Usage oos eccess en ESR ew eee ee ee eS 2 Getting Started 2 1 Running HDevelop 2 20 54 2 624405 Pe eee ee eee EHS BA EM 22 Ruins Example Progmims ema AR A ew ee 3 Acquiring Images with HDevelop 3 1 Readin
222. hat the exported program has the same effect in Visual Basic NET this exchange is not applied automatically because the semantics are not always identical 8 5 2 3 Stop The HDevelop operator stop is translated into a subroutine in Visual Basic NET that creates a message box This message box causes the program to halt until the button is pressed 262 Code Export 8 5 2 4 Exit The HDevelop operator exit is translated into the Visual Basic NET routine End Because this routine has no parameter the parameters of exit are suppressed 8 5 2 5 Used Classes There are only six classes types that are used Object for control parameters and HUntypedObjectX for iconic data In addition there is the container class HTupleX which comprises all operators of HALCON processing tuples in this case the data type Object Then there are the classes HWindowXCtr1 and its low level content HWindowX HWindowXCtr1 is used inside the project for the output window and a variable of class HWindowX directs the output to this window Finally the class HOperatorSetX is used as a container for all HALCON operators There is no need for other classes as long as the program has the same functionality as in HDevelop When editing a generated program you are free to use any of the classes of HALCON COM to extend the functionality 8 5 3 Limitations and Troubleshooting Besides the restrictions mentioned in this section and in section 8 8 on page 267 please
223. he default values This is always the case after a fresh installation of HALCON If you are uncertain about the current settings you can always start HDevelop with the default settings by invoking it from the command line in the following way see also chapter 2 on page 15 hdevelop reset_preferences This chapter deals with a simple example Given is the image displayed in figure 4 1 The objective is to count the clips and determine their orientation ENS STAY YS Ss Figure 4 1 Paper clips 4 1 Start a New Program Start HDevelop or if itis still running click File gt New Program to start anew program HDevelop will notify you if there are unsaved changes in the current program If it does click Discard to throw away the changes and start anew In case you rearranged the windows click Window gt Organize Windows to restore the default layout displayed in figure 2 1 on page 16 to f E E o o fo a 32 Programming HDevelop The first thing to do is read the image and store it in an iconic variable From the last chapter we know that we can simply drag an image to the HDevelop window We also know that this inserts the operator read_image into the program Therefore we can just as well insert the operator directly 4 2 Enter an Operator Click into the text box of the operator window type read_image and press lt Return gt You can also type any partial operator name and press lt Return gt HDevelop
224. he entry Fit Window scales the image to completely fill the graphics window A list of fixed percentages scales the image with respect to its natural size Double and Half double and half the current image size respectively Aspect Ratio 1 11 scales down the image size so that its aspect ratio is maintained 5 2 4 Menu Visualization 81 5 2 4 7 Colored Synopsis Disambiguate the display of regions and XLDs by using multiple colors See also dev_set_colored This is an easy way to display multiple regions or XLDs Each region is displayed in a different color where the number of different colors is specified in the submenu You can choose between 3 6 and 12 colors If all regions are still displayed with one color you have to use the operator connection beforehand You can check this also with the operator count_obj The default setting is to use 12 colors 5 2 4 8 Color Synopsis Display regions XLDs and text in a specific color See also dev_set_color This item allows you to choose a color for displaying segmentation results regions and XLDs text created with write_string and general line drawings e g 3D plots contour lines and bar charts The number of colors that are available in the submenu depends on the graphics display i e the number of bits used for displaying After selecting a color the previously displayed region or XLD object will be redisplayed with this color if the menu entry Apply Immediately is
225. he following format for Index 1 to 10 by 1 endfor Line continuation Unlike the dialog based editor operator calls may span several lines for readability This is indicated by entering the continuation character i e a backslash character as the last character of the line For example you can enter disp_arrow WindowID RowLli Column i Row il Length sin Philil Column i Length cos Phil i l A 4 5 4 1 Editing Programs 109 instead of disp_arrow WindowID Row i Column i Row i Length sin Phi i Column i If you switch back to the dialog based editor continued lines will be displayed as single lines again Visually the breaks seem to have disappeared Actually the formatting of the full text editor is preserved Thus if you switch back to the full text editor mode the formatting is restored in the program window Auto Indenting The indent of new lines is adjusted automatically Usually the indent of the previous line is maintained If a line is continued inside the parentheses of an operator call the new line is indented up to the opening parenthesis If the previous line opens a control structure e g if or while the indent is increased by the indent size The indent size is specified in the preferences see Program Listing page 64 It defaults to four spaces If a control structure is closed e g by entering endif or endwhile the indent of the current line is decreased by th
226. he following four parts o te o te l 224 HDevelop Language lt flags gt lt width gt lt precision gt lt conversion gt or as a regular expression 0 9 0 9 doxXfeEgGsb which roughly translates to zero or more of the characters in the first bracket pair followed by zero or more digits optionally followed by a dot which may be followed by digits followed by a conversion character from the last bracket pair Some conversion examples might show it best Input Output 23 10 2f 23 00 23 10 2f 123 00 y 4 7 4 0000000 1234 56789 10 3f 1234 568 255 x et 255 X FF Oxff 5d 100255 cotal 10s total total 10s total total 10 3 tot flags Zero or more flags in any order which modify the meaning of the conversion specification Flags may consist of the following characters v s vi v2 strchr s1 s2 strstr s1 s2 strrchr s1 s2 strrstr s1 s2 strlen s s i s il i2 split s1 52 regexp_match s1 s2 regexp_replace s1 s2 s3 regexp_select s1 s2 regexp_test s1 s2 convert v using specification s concatenate vi and v2 search character s2 in s1 search substring s2 in s1 search character s2 in s1 reverse search substring s2 in s1 reverse length of string select character at position i 0 lt i lt strlen s select substring from position i1 to
227. he parameter always expects a tuple of values Optional Single values as well as tuple values are accepted Short description of the control parameter Image EJ E Row Semantics Type List Default Type integer v Mixed Types False All values of a tuple have the same type h Default Value Values Value Min Value Max Multi Value control input integer y y IV integer T real string 0 0 10 50 100 150 200 500 0 0 Enabled False The parameter accepts only a single value X Row coordinate of the upper left corner of the new window Parameter Documentation Edit Procedure Interfaces dev_open_window_fit_image General Documentation Row Column WidthLimit HeightLimit windowHandle Language English en_US TF Exclusively Enabled Figure 5 34 Editing the control parameter documentation of a procedure 5 4 3 Creating and Editing Procedures 121 TIT ox main PANZA sox General Parameter Engish fen us y Interface p tati D tati Language English en_US y Procedure Name p_init_image Create Procedure Type IV Local Password IV Replace selected program lines displ 7 tnreshold Image Regi aer Parameters Selection Scheme Only In All Out connection Region e fe E Reset 9 select_shape Connecte gh Cut B a g emove a el Image Drove it
228. he quality of your image Table 6 1 Checklist for Calibration Errors range of 40 to 70 If necessary check the following tables for suggestions about improving your image quality When trying to improve your image quality do not forget to check other error sources ATTENTION Remember that once you change your camera setup aperture focus pose either during the calibration process or during the subsequent application you have to restart your cali bration with the new setup Any changes will result in the failure of the calibration or even worse in wrong output values Note Due to special settings or unchangable specifications of your work environment it may be possible that you cannot fully avoid any quality reductions If you follow these instructions you should however be able to reach a feasible quality level to work with 174 HDevelop Assistants Quality Issue Explanation Possible Solution Plate is overexposed Illumination is inhomogeneous Contrast is low Plate in image is too small Marks on plate are out of focus Quality assessment failed The image is too bright it reaches the highest gray value 255 in some parts This leads to a shifting of edges and there fore calculates a wrong center position The image is illuminated inho mogeneously i e the bright ness of the calibration plate changes within one image This condition makes it diffi cult to locate the calibratio
229. he same dialog By default the model and the image are displayed on the same pyramid level you can unlock and again lock the levels using the lock unlock button right to the sliders Note that the highest available pyramid level is determined automatically by the Matching Assistant based on the size of the model ROI page 185 depending on the selected Contrast and Minimum Component Size page 194 higher pyramid levels may not contain any model points Detailed information about the model image pyramid can be found here page 194 Displaying the Model Image on the Different Pyramid Levels You can select the desired pyramid level of the model image using the slider or text box for Image inside the dialog Display Image Pyramid of the tab Model Creation Onto this image the model on the pyramid level selected with the slider or text box for Model page 191 within the same dialog is overlaid By default the model and the image are displayed on the same pyramid level you can unlock and again lock the levels using the lock unlock button right to the sliders Note that the highest available pyramid level is determined automatically by the Matching Assistant based on the size of the model ROI page 185 depending on the selected Contrast and Minimum Component Size page 194 higher pyramid levels may not contain any model points Detailed information about the model image pyramid can be found here page 194 Locking the
230. he test image in order to be found This be havior can be changed in the dialog Advanced Model Use Parameters page 204 in the tab Model Use via the parameter Shape models may cross the image border page 205 e Is the Matching Assistant too greedy By default the Matching Assistant uses a fast search heuristic which might overlook an object Therefore try reducing the corresponding parameter Greediness page 204 in the dialog Advanced Model Use Parameters page 204 manually or automatically via the menu item Inspect gt Optimize Recognition Speed page 206 e Is the object partly occluded If the object is to be recognized in this state nevertheless try reducing the parameter Minimum Score in the dialog Standard Model Use Parameters in the tab Model Use manually or automatically via the menu item Inspect gt Optimize Recognition Speed page 206 6 3 3 Matching Assistant Reference 203 e Has the object a low contrast If the object is to be recognized in this state nevertheless try reducing the parameter Minimum Contrast page 198 in the dialog Standard Model Parameters page 192 in the tab Model Creation e Do multiple objects overlap If the objects are to be recognized in this state nevertheless try decreasing the Maximum Overlap in the dialog Advanced Model Use Parameters in the tab Model Use e Ifthe object is found but not at the expected position or orientation check the following e If multiple matches ar
231. hed for in the currently selected test image the result is displayed in the graphics window Please note that if the button is clicked for the first time or after you changed a model parameter the internally stored model is actually created which takes some time If the model creation takes a long time i e if you have chosen a very large angle page 195 and scale range page 195 you may find it useful to switch off the complete pregeneration page 198 of the model You can also search for the object in the whole sequence of test images at once Searching for the Object in All Test Images When you click the button Detect A11 inside the dialog Test Images of the tab Model Use the object is searched for in the complete sequence of test images that were loaded page 200 before The results are displayed successively in the graphics window Please note that if the button is clicked for the first time or after you changed a model parameter the internally stored model is actually created which takes some time If the model creation takes a long time i e if you have chosen a very large angle page 195 and scale range page 195 you may find it useful to switch off the complete pregeneration page 198 of the model You can also search for the object in a single test image Automatically Searching for the Object in the Test Images If you check the box Always Find in the dialog Test Images of the tab Model Use
232. hlight the nesting level created by control structures After the operator or procedure name the parameters are displayed in parentheses Parameters are sepa rated by commas To edit a line of a program you double click it with the left mouse button In case of conditions and loops the operator line with the parameters has to be selected For example you have to double click for in a for endfor loop but until in a repeat until loop You may edit only one operator or procedure call at a time After double clicking a program line note the following 5 4 1 Editing Programs 107 double click JO x Operator Window Edit dev_open_window in procedure main at line 7 da main X a B DEJ ER Enter Operator or Procedure dev_open_window y clip dev Orientation of clip A Parameters dev update window off E y 3 za Y read image Clip clip i Row rectangle origin y integer get_image pointer1 Clip _ _ Width Height Column o y rectangle origin x in dev_close window dev open window 0 0 Width 2 Height 2 black Wind Width Width 2 t x integer A A a ae piace ANE edit parameters renet dev display Clip stop Height Height 2 y integer bin threshold Clip Dark pane E Er connection Dark Single select shape Single Selected w 11 ed 12 Selected area and 5000 10
233. ht beside the sliders for the parameters Contrast Low High the Matching Assistant selects suitable values for the contrast by trying to ob tain many long and straight contour segments Note that you may need to set the value manually if certain model components should be included or suppressed because of application specific reasons or if the object contains several different contrasts The Model Parameter Minimum Component Size The parameter Min Component Size specifies the minimum size i e number of pixels which contour parts must have to be included in the model page 185 This parameter is useful to exclude clutter You can also let the Matching Assistant select a suitable value automatically based on the model image page 185 Note that the selected value is divided by two for each successive pyramid level Letting the Matching Assistant Select a Suitable Value for Minimum Component Size When you click the button Auto Select that is placed right beside the slider for the parameter Minimum Component Size the Matching Assistant selects a suitable value for the minimum component size based on the model image The Model Parameter Pyramid Levels To speed up the matching process a so called image pyramid is created both for the model image and for the search images The pyramid consists of the original full sized image and a set of downsampled images For example if the original image first p
234. iables of the current procedure are displayed at once e Auto The variables of the current and the previous operator call are displayed This is useful when single stepping through the program because only the variables relevant to the current context are displayed e User A user defined selection of variables is displayed Variables may be added and removed using the context menu of the variable window see below If the tab User is active variables may be added from a list in the context menu In the other two tabs variables are added by selecting them first and clicking Add to User Tab in the context menu 5 6 1 Iconic Variables 131 Context Menu In both parts of the variable window distinct context menus are available by right clicking in the window The entries that are common in both parts are described here e Clear Variable The selected variables are cleared and appear as undefined e Add to User Tab The selected variables are added to the tab User e Sort by Name The variables are sorted in alphabetical order e Sort by Occurrence The variables appear in the same order as they are defined in the program e Update Variables Toggle whether variables will be updated during program execution This is the same setting as in the runtime preferences see page 72 e Cleanup Delete all unused variables see page 53 Only applicable when the tab User is selected e Add Variable This submenu contains a list of all va
235. ible in the current test image using the corresponding text box that appears when clicking onto the currently displayed number of visible objects in the text field of the currently selected test image The default value is 1 If you select the corresponding recognition mode in the dialog accessed via Use Model gt Go To Optimize Recognition Speed page 206 the specified numbers of visible objects are used when determining the recognition rate i e the recognition rate is 100 when the sum of all objects found in the test images is equal to the sum of the specified numbers Assuring the Matching Success After loading page 200 the test images you can quickly test whether all objects are found successfully via the dialog Inspect gt Determine Recognition Rate page 207 If the matching succeeds in all test images 1 e if a recognition rate of 100 is reached you can start to optimize the speed page 187 of the matching process If the matching fails in one or more test images proceed as follows e Open the dialog Test Images page 200 in the tab Model Use e Check the box Always Find page 201 e Step through the test images page 201 to determine the images where the matching fails e If an object is not found check whether one of the following situations causes your problem e Is the object crossing the image border i e does it lie partially outside the test image By default the objects must lie completely within t
236. icrosoft NET Visual C Visual Basic and ActiveX are either trademarks or registered trademarks of Microsoft Corporation Silicon Graphics SGI IRIX and OpenGL are either trademarks or registered trademarks of Silicon Graphics Inc All other nationally and internationally recognized trademarks and tradenames are hereby recognized More information about HALCON can be found at http www halcon com About This Manual This manual is a guide to HDevelop the interactive development environment for the HALCON machine vision library It provides all the necessary information to understand HDevelop s philosophy and to use HDevelop This manual is intended for users who want to use HDevelop as a convenient gateway to the HALCON library or who want to deploy and test machine vision applications with it However it is not an intro duction to the HALCON machine vision library A working knowledge of the concepts of HALCON is assumed Please refer to the Quick Guide to become acquainted with HALCON This manual does not assume that you are an expert in image processing Regardless of your skills it is quite easy to work with HDevelop Nevertheless it is helpful to have an idea about the functionality of graphical user interfaces GUI and about some basic image processing aspects The manual is divided into the following chapters e Introducing HDevelop This chapter explains the basic concepts of HDevelop e Getting Started This c
237. ics Window on page 136 it is going to be suppressed Displaying Information about Iconic Variables You can get information about an instantiated variable by placing the mouse pointer over the correspond ing icon in the variable window See also figure 5 42 for an illustration The information depends on the contents of the corresponding variable e Images The image type and size and the number of channels is displayed If the iconic variable contains multiple images the properties of the first image are reported e Regions The area and the center of the region is displayed If the iconic variable contains multiple regions the properties of the first region are reported e XLDs The number of contour points and the length is displayed If the iconic variable contains multiple XLDs the properties of the first XLD are reported Context Menu Clicking on an icon with the right mouse button opens a context menu with several options You can display the corresponding iconic variable in the active graphics window with or without clearing the window first and you can clear the iconic variable If an iconic variable contains multiple items you can also select a specific item from a submenu Up to 15 items are listed in this menu If an iconic variable contains more than 15 items the remaining items can be accessed by clicking Select If you click Select in this submenu you can quickly browse the items of the iconic variable from a
238. ield of view with multiple images i e position the calibration plate in all areas of the field of view upper left corner upper right corner lower left corner lower right corner and image middle Do not forget to also take images right in the corners and along the margins of the field of view Use various orientations of the calibration plate Use at least four images with different tilt in every direction as shown in Figure 6 1 we recommend to tilt the plate in every quadrant of the image twice and vary the tilting direction In total you should acquire at least 10 better 15 to 20 images 6 2 2 How to Calibrate with the Calibration Assistant 171 Choosing an Image Source The images for the calibration can either be loaded from a file or acquired directly using the Image Acquisition Assistant When loading images from a file just click the radio button Image Files To acquire new images click the radio button Image Acquisition Assistant page 158 The assis tant will then appear in a new window and support you with acquiring new calibration images Note that the calibration works on a single channel For color RGB images the red channel will be used A color transformation can be performed with the operator trans_from_rgb Calibration The three basic steps of each calibration are e acquiring calibration images e selecting a reference image and e calibrating Calibration Images
239. ify approximate values for the motion param eters Motion x Vx Motion y Vy andMotion z Vz 6 2 2 How to Calibrate with the Calibration Assistant 169 Set Parameters for User Defined Calibration In the user defined mode for the area scan camera division you can also choose Center Column Cx Center Row Cy and Kappa The area scan camera polynomial model al lows you to also choose the lens distortion parameters for radial distortion Radial 2nd Order K1 Radial 4th Order K2 Radial 6th Order K3 and the two parameters for tangential distortion Tangential 2nd Order P1 and Tangential 2nd Order P2 If you want to change the parameters Cell Width and Cell Hight independently from each other click the chain button 6 2 2 2 Acquiring Calibration Images The main part of the calibration process consists of acquiring images of the calibration plate in different positions and orientations relative to the vision system Please note that the more you vary the position and orientation the better the calibration results will be Therefore place the plate so that it appears in different corners at different distances to the camera and in different planes i e tilt it for some images Note that it is necessary to not only place the calibration plate in the center of the field of view but also move it to the corners and margins Good calibration images will improve your calibration results significantly Detailed instructions o
240. ify the presentation shape for regions You can display not only the region s original shape but also its enclosing rectangle or its enclosing circle etc The line width of the presented regions XLDs or lines is specified with help of the menu item Line Width For regions the draw mode can be specified Either it might be filled item fi11 or outlined item margin These settings are also completely available from the corresponding menu entries in the menu Visualization A description of the functionality is provided there The preview shows the current settings which is helpful if the active graphics window does not contain any regions or XLDs e Draw see also page 81 e Colored see also page 81 e Color see also page 81 e Shape see also page 82 e Line Width see also page 81 g cs ral o E 2 D 0 86 Graphical User Interface LUT settings channel separately with the same table Using LUT you are able to load different look up tables for visualization With the help of a false color presentation you often get a better impression of the gray values of an image In the case of a true color display the image has to be redisplayed due to the missing support of a look up table in the graphics hardware For color images only the gray look up tables can be used which change each See the description of the menu entry Lut on page 82 PS visua
241. iliar with a web browser will be able to navigate through the hypertext The size of the two parts of the help window can be altered by dragging the dividing line With the help window you can easily browse the HALCON Reference Manual the Procedure Reference Manual the HDevelop Reference Manual and the Programmer s Manuals Furthermore the complete offline documentation of HALCON which is available in PDF format can be accessed from this window The help window also includes a full text search engine to rummage both online and offline documenta tion Contents This tab card presents the chapters and sections of the online documentation as a hierarchical tree Click on a node of the tree to display the associated document Operators This tab card lists all operators in alphabetical order Click on an operator name to display the corre sponding page from the Reference Manual Enter any name into the text field Filter to show only operators matching that name Search Enter a search query into the text field and click Search to start a full text search Both online docu mentation HTML and offline documentation PDF are searched The search result is displayed below the query The rank in percent indicates how well each found document satisfies the query The query may consist of one or multiple words HDevelop will find all documents that contain any of the specified words To search for a phrase enclose it in double quotes
242. image acquisition interface Upon building the list of devices the assistant queries the status of each device Depending on the image acquisition interface devices may be reported as misconfigured If you select such a device the assistant may suggest a Generic parameter that potentially resolves the misconfiguration If you confirm this suggestion the parameter will be entered into the Generic slot see below If a device is labeled with a question mark icon it is either read only busy or unknown Port Select the ID of the input port Camera Type Select a camera configuration or signal type Select Select a camera configuration file in XML format from a file browser Trigger Tick the check box if the image acquisition is controlled by an external trigger Resolution X Y Specify the factor for image width height Color Space Specify the configuration for color acquisition Field Specify the frame selection for interlaced cameras Bit Depth Specify the number of bits used for one image channel Generic Some image acquisition interfaces support device specific parameters to preset selected values before the camera is initialized The parameters the interface claims to support are suggested as a drop down list To set a generic parameter select it from the list and edit the assigned value i e the value after the Multiple generic parameters may be set by separating the entries with a comma If the selected image acquisitio
243. in HDevelop 2 1 Running HDevelop In the following it is assumed that HALCON has already been installed as described in the Installation Guide Windows Under Windows HDevelop is usually started from the Windows Start menu Start gt Programs gt MVTec HALCON gt HDevelop You can also start HDevelop from the Windows Command Prompt or from the Start gt Run menu making it easy to pass optional command line switches hdevelop UNIX Under UNIX HDevelop is started from the shell hdevelop amp 16 Getting Started window title menu bar tool bar 1012 File Edit Execute Visualization Procedures Operators Suggestions Assistants Window Help HASUASS SEBBB OP BEA gt lelen PDH Bhi B SN 101 x Operator Window JO xi g A BAAT Ft v fia 100 y Ja 8 Enter Operator or Procedure fi y graphics window 2 operator window O Enter Apply Cancel Help Tronic Variables a gt main ESA Control Variables 4 variable window 3 program window All auto J User 4 gt status bar Figure 2 1 User interface Command Line Switches Under both Windows and UNIX HDevelop supports several command line switches to modify its startup behavior You can add the name of an HDevelop program on the command line to load it directly This is identical to an invocation of HDevelop without any parameters and a subsequent lo
244. in RGB space three channels with red green and blue values three colored bars are used If the gray value is below 1 the gauge is light gray background If the value is above 255 the gauge is dark gray or colored for RGB images Above the gauge the gray values are displayed as numbers Up to five channels are displayed If more than five channels are present the remaining channel values are truncated Next to the gauge the coordinates of the mouse position are displayed Below these the image size pixel type and the number of channels are shown ET The button next to the scale combo box enlarges the zoom window so that partially visible pixels at the border become fully visible byte 1 channel s Column 321 Figure 5 53 Zoom 5 10 Gray Histogram Window 145 5 10 Gray Histogram Window Synopsis Display gray value histogram of active graphics window See also Menu Visualization p Gray Histogram The gray histogram window is a sophisticated tool for the inspection of gray value histograms which can also be used to select thresholds interactively and to set the range of displayed gray values dynamically When opening the tool the histogram of the image shown in the currently active graphics window is displayed When the tool is already open the following means of sending new image data to the tool are available e Make another graphics window active or display another image in the active graphic
245. ing code using the option Use HALCON Windows close the default graphics window using dev_close_window and open a new one using dev_open_window before the first call of dev_display in order to assure a correct export Displaying images In HDevelop images are automatically scaled to fit the current window size This is not the case in exported programs For example if you load and display two images of different size the second one will appear clipped if it is larger than the first image or filled up with black areas if it is smaller For a correct display you must use the operator dev_set_part before displaying an image with dev_display as follows dev_set_part 0 0 ImageHeight 1 ImageWidth 1 dev_display Image In this example Image is the image variable ImageHeight and ImageWidth denote its size You can query the size of an image with the operator get_image_pointer1 Please consult the HALCON Reference Manuals for more details Note that the operator dev_set_part and its HALCON library equivalent set_part is more commonly used for displaying and thereby zooming parts of images By calling it with the full size of an image as shown above you assure that the image exactly fits the window Changing display parameters If you change the way how results are displayed color line width etc in HDevelop interac 8 8 7 Graphics Windows 271 tively via the menu Visualization these changes will not be incorporated in the exp
246. interface of HALCON A detailed description of this interface can be found in the Programmer s Guide part IV on page 121 Note that this export is only provided for backwards compatibility We recommend to use the export based on HALCON NET see section 8 4 on page 258 8 5 1 Basic Steps 8 5 1 1 Export The first step is to export the program using the menu File gt Export Here select the language Visual Basic NET HALCON COM and save it to file The result is a new file with the given name and the extension vb 8 5 2 Program Structure 261 8 5 1 2 The Visual Basic NET Template If the file has been exported using the option Use Export Template it is intended to be used together with the predefined Visual Basic NET project that can be found in the directory HALCONROOT examples vb net HDevelopTemplateCOM This project contains a form with a display window HWindowXCtr1 and a button labeled Run Add the file generated by HDevelop to the project in the Solution Explorer Add Existing Item Now the project is ready for execution Run the project and then press the button Run on the form which will call the exported code 8 5 2 Program Structure If the program has been exported using the option Use Export Template the file created by HDevelop contains a subroutine with the corresponding name for every HDevelop procedure except the main pro cedure which is contained in the subroutine action Otherwise
247. ions in the operator window and the full text editor with ad vanced autocompletion enabled include only variable names that match the semantic type of the corresponding parameter If Ignore semantic type is checked these suggestions are extended so that they also include suggestions of variables with a different semantic type Show memory usage If this option is activated the internal temporary memory usage of the last operator or procedure call is displayed in the status bar Suppress warnings for HALCON operators that are replaced by dev operators Some operators are deprecated in HDevelop and issue a warning message when selected in the operator window Activating this option suppresses the warning message Disable parameter detection for acquisition operators In the operator window the parameter suggestions for the operators open_framegrabber set_framegrabber_param and get_framegrabber_param depend on the selected image ac quisition interface This behavior can be disabled by ticking the check box See also Parameter Display on page 125 g cs ral o E 2 D 0 72 Graphical User Interface The tab cards in this category define the default visualization settings for graphics windows when HDe velop is started See the description of Set Parameters on page 84 The dialog is displayed in figure 5 17 Visualization Settings gt Pen LUT Paint User Interface AE External
248. is higher than the noise in the test images You can also let the Matching Assistant select a suitable value automatically based on the model image Note that although this parameter is only used during the search it is already included when creating the model in order to speed up the matching process If you already loaded test images you can quickly test the effect of the selected parameter value via the menu item Inspect gt Determine Recognition Rate page 207 Letting the Matching Assistant Select a Suitable Value for Minimum Contrast When you click the button Auto Select that is placed right beside the slider for the parameter Minimum Contrast page 198 the Matching Assistant selects a suitable value for the minimum contrast by eval uating the gray value fluctuations i e the noise in the model image Note that an automatic determination only makes sense if the image noise during the recognition is similar to the noise in the model image For this reason it is typically not useful when using a synthetic model image without noise Reset All Parameters The button Reset inside the tab Model Creation resets all model and search parameters to their default settings and deletes the model image page 185 the model ROI page 185 and the test images page 185 6 3 3 3 The Menu Use Model and the Tab Model Use Via the menu Use Model as well as the tab Model Use you can e load test images e delete a sele
249. is initially the current procedure The variables are currently uninstantiated i e their current value is undefined This is indicated by the question mark Both windows are displayed in figure 2 4 20 Getting Started iconic variables control variables PC program counter current procedure Program Listing o x j gt main RSE Fra Variable View main Lead Measurement Example for the application of the 4 including a lot of visualization operators First the length of the leads is measured then the First read in the image and initialize the program read image Image ic pin get_image pointerl Image Pointer Type Width Height dev_close_ window dev_open window _fit_image Image 0 0 509 509 Windo set_display font WindowHandle 14 Courier New tru dev_display Image dev_set_draw margin dev_set_line width 3 Define and disnlav the recranmmiar ROTs within mi aad Figure 2 4 The variable and program window after loading the example program Run Example Program e Click Execute gt Run or click the corresponding button from the tool bar see figure 2 5 The program line next to the PC is executed the PC is moved to the following line and so forth until the execution stops There are four reasons for the program execution to stop 1 the last program line has been executed 2 a breakpoint has been reached 3 the HDevelop
250. istant with the same settings In contrast to this when you exit the Matching Assistant the settings are lost also for the current HDevelop session Exit the Matching Assistant When you exit the Matching Assistant with the menu item File gt Exit Assistant the assistant s dialog is closed and the current settings are lost unless you have not stored them via the menu item File gt Save Current Assistant Settings If you want to close the dialog but keep its settings for the current HDevelop session you should use the menu item Close Dialog instead 6 3 3 2 The Menu Create Model and the Tab Model Creation Via the menu Create Model as well as the tab Model Creation you can e create a model ROI e display the image pyramid and e specify standard page 192 and advanced model parameters page 196 In the tab Model Creation you can additionally reset page 199 the model Creating a Region of Interest Around the Object Via the menu items in Create Model gt Create ROI or the corresponding buttons in the tab Model Creation you can mark the region that serves as the model by drawing it on the displayed model image 6 3 3 Matching Assistant Reference 191 The Matching Assistant provides different ROI page 185 shapes axis parallel and arbitrarily oriented rectangles circles and ellipses as well as free form shapes including polygons You draw rectangular circular and elliptic ROIs as follows Select
251. itor is enabled the indenting level of all selected program lines is in dented in the same way as in the dialog based editor i e nested program blocks are indented by the amount of spaces set in the preferences 5 4 3 Creating and Editing Procedures HDevelop always displays one procedure the current procedure at a time The combo box on top of the program window displays the name of the current procedure You can select another procedure from this box The first element of the list is the main procedure followed by the local procedures of the current program followed by the available external procedures The procedure groups are sorted alphabetically When selected from the list a procedure becomes the current procedure and the corresponding procedure call becomes the current procedure call If the selected procedure has multiple calls on the stack the last of the procedure calls is displayed If the procedure is locked a password button is displayed instead of the procedure body See figure 5 30 for an illustration In order to access the code the correct password has to be entered see also section Protected External Procedures on page 123 This procedure is locked E Password For displaying and editing this procedure you must enter the password Figure 5 30 Display of a locked procedure in the program window 5 4 3 Creating and Editing Procedures 113 Create Procedure 10 x General P Engish en L In
252. ity as in HDevelop When editing a generated program you are free to use any of the classes of HALCON COM to extend the functionality 8 3 3 Limitations and Troubleshooting Besides the restrictions mentioned in this section and in section 8 8 on page 267 please also check the description of the HDevelop operators in section 5 2 6 2 on page 94 8 3 3 1 Variable Names The export adds the prefix ho_ to all local iconic and hv_ to all local control variables respectively in order to avoid collisions with reserved words 8 3 3 2 Exception Handling In HDevelop every exception normally causes the program to stop and report an error message in a dialog window This might not be useful in C The standard way to handle this in C is by using the try catch mechanism This allows to access the reason for the exception and to continue accordingly Thus for HDevelop programs containing error handling dev_ set_check give_error the corresponding code is automatically included Every operator call for which it is assumed that the HALCON error mechanism is turned off is enclosed in a try block followed by a catch block The latter handles the exception and assigns the corresponding HALCON error number to the error variable activated by dev_error_var or to a local error variable otherwise Please note that a call of dev_ set_check give_error has no influence on the operator call The exception will always be raised This is also true for mess
253. l concept of the assistants is described in the chapter HDevelop Assistants on page 157 The following assistants are available e Image Acquisition Assistant e Calibration Assistant e Matching Assistant 5 2 9 Menu Window This menu offers support to manage the sub windows of the main window i e the program operator variable graphics window s and possibly other dialogs At the bottom of the menu all open windows are listed Clicking an entry here brings the corresponding window to the front 5 2 9 1 Open Graphics Window Synopsis Open an additional graphics window See also dev_open_window and section Open Graphics Window on page 79 If no graphics window is open double clicking an iconic variable will also open a new graphics window 5 2 9 2 Open Program Listing Synopsis Open the program window See also dev_map_prog This menu item is grayed out if the program window is already open 5 2 9 3 Open Variable Window Synopsis Open the variable window See also dev_map_var This menu item is grayed out if the variable window is already open 5 2 9 4 Open Operator Window Synopsis Open the operator window This menu item is grayed out if the operator window is already open If the full text editor is not enabled you can also open the operator window by double clicking a line in the program window g cs ral o E 2 a a 5 0
254. l procedures The formerly local procedures are now stored as external procedures in a selectable directory of the list of external procedure directories see section External Procedures gt Directories on page 66 If no directories are configured you can select a target directory from a dialog HDevelop will add the selected target directory to the list if you tell it to Otherwise the operation will be canceled For changing the edit status of an external procedure see section Protected External Procedures on page 123 g cs ral o E 2 D 0 92 Graphical User Interface 5 2 5 9 External Procedure Settings Synopsis Configure settings for external procedures When you select this menu item the window Preferences gt External Procedures gt Directories appears With it you can define one or more directories where external procedures are stored and searched for Inside the defined directories also the contained subdirectories are scanned Therefore it is recommended to select directories with a restricted depth in order to speed up the search process If you change the list of directories the list of all available external procedures is updated See also section External Procedures gt Directories on page 66 5 2 5 10 Edit Procedure Synopsis Select a procedure for editing in the program window This submenu lists all procedures in submenus grouped by chapter and section
255. lease note that is a dimorphic operation If both operands are numeric it adds numbers If at least one of the operands is a string it concatenates both operands as strings 7 5 2 Assignment 217 7 5 2 Assignment In HDevelop an assignment is treated like an operator To use an assignment you have to select the operator assign Input Result This operator has the following semantics It evaluates Input right side of assignment and stores it in Result left side of assignment However in the program text the assignment is represented by the usual syntax of the assignment operator Result Input The following example outlines the difference between an assignment in C syntax and its transformed version in HDevelop The assignment in C syntax u sin x cos y is defined in HDevelop using the assignment operator as assign sin x cos y u which is displayed in the program window as u sin x cos y If the result of the expression does not need to be stored into a variable the expression can directly be used as input value for any operator Therefore an assignment is necessary only if the value has to be used several times or if the variable has to be initialized e g for a loop A second assignment operator is available insert Input Value Index Result It is used to assign tuple elements If the first input parameter and the first output parameter are identical the call insert Areas Area Radius 1 Ar
256. librated it is possible to estimate the camera pose from a single image Example code is available from the Code Generation tab page 178 Reference Image This image locates the world coordinate system which then has its origin in the middle of the calibration plate in the reference image By default the first calibration image is used as the reference image However you can choose any other image of the calibration sequence Standard Lenses A standard lens is similar to the one in the human eye It performs a perspective projection hence objects become smaller in the image the further they are away Telecentric Lenses Telecentric lenses perform a parallel projection Therfore objects have the same size in the image independent of their distance to a camera This means that they can lie in different planes only the orientation of the planes relative to the camera must be identical 166 HDevelop Assistants User Defined Calibration The setup step Calibration Task provides a User Defined Calibration which enables you to perform calibrations with special setups or re use parameters from previous calibrations World Coordinates Measurements and XLD contours can after finishing the calibration be trans formed into 3D world coordinates meaning the coordinates of the world e g in millimeters as opposed to those of an image in pixels Example code is available from the Code Generation tab under Sample Usage page 179 Qua
257. libration Status e Camera Parameters and e the Camera Pose The results displayed in Camera Parameters and Camera Pose can also be saved to a file by clicking the Save buttons on the right Display Results enables you to choose which results should be displayed Once you are finished with the results go on to the Code Generation page 183 tab 6 2 3 1 Calibration Status This box displays the Status of the calibration i e whether the calibration was successful and the Mean Error in pixels If you either delete calibration images page 171 or change Calibration Plate Extraction Parameters page 176 or Camera Parameters page 167 after having calibrated the former calibra tion data is not valid any more Therefore the Status will display that no calibration data is available To continue working with your changed camera parameters calibration parameters or images just click Calibrate page 172 again on the Calibration tab Mean Error Mean Error designates the average error in pixels during the calibration process Once the system has been calibrated the ideal centers of the calibration marks are calculated and compared to the real mark centers Mean Error is the deviation value between the ideal and the real mark centers A value of 0 1 and lower can be regarded as a good result Possible calibration errors are described in the tables about quality issues under Quality Issues page 172 most of them can usually
258. libration plate 6 2 2 How to Calibrate with the Calibration Assistant 175 Quality Issue Explanation Possible Solution Mark extraction failed for some images Quality issues detected for some images Number of images is too low Field of view is not cov ered by plate images Tilt angles are not cov ered by sequence Not all image sizes are identical It was impossible to extract the calibration plate marks in some images which makes it also im possible to calibrate in this state The quality of some images is be low the warn level The number of images is lower than recommended Some part of the field of view is not covered by any image of the calibration plate i e there are ar eas with no marks The calibration plate has not been tilted enough The image list contains images of different sizes Delete the images for which mark extraction has failed and use new images instead or adapt the ex teraction parameters Make sure that you follow the steps for good calibration images page 169 and check for possible error sources page 173 Check the quality issues of the sin gle images by clicking on their names in the list Handle qual ity issues as described in the table above Check if you have taken enough images Less than 10 images will lead to a low percentage in the quality ranking whereas 20 images equal 100 percent Press the Show button which appears in a colu
259. lines select_obj E select_region_point select_region_spatial l DotPrint fATSE StrokeWidth medium string Charwidth 25 integer CharHeight 25 y integer A el Enter Apply Cancel Help Figure 5 39 Selecting an operator after typing select_ e The third column consists of the text fields which contain variable names in case of iconic and control output parameters and expressions in case of control input parameters If you want to change the suggestions offered by the system variable names or default values you may do so either manually or by pressing the arrow button connected with the respective text field This opens a list containing a selection of already defined variables and other reasonable values from the operator knowledge base By clicking the appropriate item you set the text field and the list disappears For the operators open_framegrabber set_framegrabber_param and get_framegrabber_param the value list of certain parameters is dynamic It depends on the selected image acquisition interface An even more reasonable parameter suggestion is given if the corresponding handle is opened If this dynamic behavior is undesired it can be disabled in the preferences see General Options gt Experienced User settings on page 71 This column may also contain action buttons for special semantic types e g a button to browse the file system for the parameters that expect a file name e The fourt
260. list of the names of all procedures that are currently called on HDevelop s internal call stack The top most procedure call belongs to the most recently called procedure the bottom most procedure call always belongs to the main procedure Clicking on a procedure call in the dialog makes the selected procedure call the current procedure call and thus the procedure belonging to the selected procedure call the current procedure When you click on a procedure call that belongs to a protected external procedure for protected external procedures see Protected External Procedures on page 123 you can only see the procedure body if you enter the correct password in the program window MM callstack p_show_status_window main Figure 5 19 Call Stack 5 2 3 9 Set Breakpoint Synopsis Add break point s at selected line s This menu item sets a break point on the lines that are currently selected in the program In most cases however it is more convenient to set individual break points by holding the lt Ctr1 gt key and clicking in the left column of the program window as described in Program Counter Insert Cursor and Break Points on page 111 5 2 3 10 Clear Breakpoint Synopsis Clear break point s at selected line s These menu item clears break points on the lines that are currently selected in the program In most cases however it is more convenient to clear individual break points by holding the lt Ctr1 gt k
261. lity Issues A high quality of the calibration images is essential not only for the calibration itself but for the quality of the calibration results Examples for bad image quality are overexposure of the calibration plate bad mark contrast or very small mark size These quality issues are listed under Quality Issues page 172 on the Calibration tab Sorting out images with too many defects improves the calibration results 6 2 2 How to Calibrate with the Calibration Assistant By using the Calibration Assistant you can set up and optimize your calibration application in three steps e Choose the right calibration mode e load the calibration images page 169 e and respond to image quality feedback page 172 6 2 2 1 Choosing the correct Calibration Mode and Basic Parameters For the calibration setup in the Setup tab the basic information has to be filled in Which information is necessary for your application will depend on the answer to the question whether you want to perform a full calibration whether you have a special setup or you have calibrated before and therefore want to take advantage of the user defined calibration Furthermore information about the calibration plate and the camera is required In short the setup information includes e the Calibration Task e the Calibration Plate e andthe known Camera Parameters Choosing the task for your application If you want to calibrate all parameters e g if yo
262. lization Param cubic_root inv_cubic_root three six twelve twenty_Four color1 color2 color3 color4 rainbow cvclic araw IV Update Reset Use settings For new windows Figure 5 22 Visualization Parameters LUT settings 5 2 4 Menu Visualization 87 Paint settings Here you can select between several graphical image presentations In the default mode the image is displayed unmodified In the other modes the gray values of the image are taken as height information The greater the gray value the higher the resulting image point See figure 5 23 for an illustration of the different modes Further information can be found at the description of the operators dev_set_paint and set_paint If you have chosen a presentation mode the window displays all possible parameters you may modify default Display the image unmodified row column Display the height information of a single horizontal vertical image line The gray values are scaled by the specified factor The corresponding row column can be selected by clicking into the graphics window or by entering the exact value contourline Display height lines The gray value difference of the lines is defined by the parameter Step 3d_plot_lines _hidden_lines _point Display as a 3D plot using lines computed hidden lines or points 3d_plot Display a 3D plot using OpenGL which can interactively be modifi
263. ll characters up to the end of the string are printed In no case does a nonexistent or insufficient field width cause truncation of a field if the result of a conversion is wider than the field width the field is simply expanded to contain the conversion result Examples for the string conversion can be found in the program string dev string concatenation The string concatenation can be applied in combination with strings or all numerical types if neces sary the operands are first transformed into strings according to their standard representation At least one of the operands has to be already a string so that the operator can act as a string concatenator In the following example a file name e g Name5 tiff is generated For this purpose two string constants Name and tiff and an integer value the loop index i are concatenated for i 1 to 5 by 1 read_image Image Name i tiff endfor str r chr See also tuple_strchr tuple_strrchr str r chr si s2 returns the index of the first last occurrence of one of the character in s2 in string s1 or 1 if none of the characters occur in the string s1 may be a single string or a tuple of strings str r str See also tuple_strstr tuple_strrstr str r str si s2 returns the index of the first last occurrence of string s2 in string s1 or 1 if s2 does not occur in the string s1 may be a single string or a tuple of strings strlen See also
264. llowed orientations and scales of the object you can use the calculated ranges to optimize the parameters Angle Extent page 195 Start Angle page 195 and the parameters for the scale range page 195 in the dialog accessed via the menu item Create Model gt Standard Model Parameters page 192 we recommend to use slightly larger values to get accurate results at the boundaries of the ranges In a corresponding HALCON program you can use the calculated range of positions as a region of interest and thus further speed up the matching process 6 3 3 5 The Menu and Tab Code Generation Via the menu Code Generation you can e open the dialog Options inside the tab Code Generation where options for the code generation can be set e open the dialog Variable Names inside the tab Code Generation where the names for the used variables can be specified e insert code to the program window of HDevelop according to the current settings of the Matching Assistant e release the generated code lines in the program window e delete the generated code lines from the program window as long as you did not released them and e open the dialog for the code preview inside the tab Code Generation Specifying the Options for the Code Generation Via the menu item Code Generation gt Show Code Generation Options you can open the dialog for determining the options for the code generation inside the tab Code Generation The dialog con sists
265. lly because the semantics are not always identical 8 6 2 3 Stop The HDevelop operator stop is translated into a subroutine in Visual Basic that creates a message box This message box causes the program to halt until the button is pressed 8 6 2 4 Exit The HDevelop operator exit is translated into the Visual Basic routine End Because this routine has no parameter the parameters of exit are suppressed 8 6 2 5 Used Classes There are only six classes types that are used Variant for control parameters and HUntypedObjectX for iconic data In addition there is the container class HTupleX which comprises all operators of HAL CON processing tuples in this case the data type Variant Then there are the classes HWindowXCtr1 and its low level content HWindowX HWindowXCtrl is used inside the project for the output window 8 6 3 Limitations and Troubleshooting 265 and a variable of class HWindowX directs the output to this window Finally the class HOperatorSetX is used as a container for all HALCON operators There is no need for other classes as long as the program has the same functionality as in HDevelop When editing a generated program you are free to use any of the classes of HALCON COM to extend the functionality 8 6 3 Limitations and Troubleshooting Besides the restrictions mentioned in this section and in section 8 8 on page 267 please also check the description of the HDevelop operators in section 5 2 6 2 on page 94
266. lowing lines to the program They are automatically indented in the program window to highlight the nesting inside the for loop set_tposition 3600 Row Index Column Index write_string 3600 deg Phi Index degrees The instruction set_tposition places the text cursor in the active graphics window at the center of the region corresponding to the loop index variable Index The value 3600 is the so called window handle of the target graphics window This number is displayed in the title of the graphics window and can be different in your environment The notation Row Index is another operation of the HDevelop language It provides access to a single value of a tuple The instruction write_string outputs a given string at the current text cursor position in the graph ics window The function deg is part of the HDevelop language It converts its argument from radi ans to degrees In this example the operation performs a string concatenation because the argument degrees is a string value Before the two operands of are concatenated an automatic type con version double to string of the numeric argument takes place The details of the HDevelop language are explained in chapter 7 on page 211 4 14 Summary This is basically the way to create programs in HDevelop Select an operator specify its parameters try different settings using the button Apply add a new program line using Enter or OK and edit it later by double clicki
267. m line A break point shows the program line on which the program is stopped You may position or activate these three labels by clicking in the left column of the program window That column itself is divided into three areas Depending on the horizontal position of the mouse cursor all three label types are available The actual type is indicated through a change of the mouse cursor At the leftmost position break points can be placed In the middle position the PC can be placed And finally in the rightmost position the IC can be placed HDevelop assists you by displaying the icon that would be inserted If this seems confusing you can force a specific label by holding down the following keys regardless of the horizontal position e Hold lt Shift gt to place the IC e Hold lt Ctr1 gt to place or delete a BP la o ES E 2 D 5 0 e Hold lt Shift gt lt Ctrl1 gt to place the PC Context Menu By clicking into the program window with the right mouse button you can open a context menu which contains shortcuts to some of the actions of the menus Menu Edit e g copy and paste lines and Menu Execute e g activate and deactivate lines or set and clear break points Please note that these actions behave slightly differently than their counterparts in the main menus When called via the main menus the actions are performed only on the selected part of the program if nothing is selected no action is performe
268. m may be visualized in the graphics window at the same time Click the button Insert Code to generate HDevelop code that performs the currently visualized scale operation in your program The code is inserted at the IC 5 11 Feature Histogram Window 151 5 11 Feature Histogram Window Synopsis Interactive inspection of feature histograms See also Menu Visualization gt Feature Histogram This window provides a sophisticated tool for the inspection of feature histograms In contrast to the gray value histogram described in the previous section this tool does not inspect individual pixels but regions or XLDs for these iconic objects it displays the distribution of values of a selected feature e g the area of an XLD or the mean gray value of the pixels within a region The feature histogram can also be used to select suitable thresholds for the operators select_shape and select_shape_xld interactively Similar to the gray histogram tool the interactive selection can be translated into generated HDevelop program code Upon opening the tool displays the histogram of the area default feature selection of the regions or XLDs that were displayed most recently in the currently active graphics window You can select various features in the combo box Feature Further information about region features can be found in section Feature Inspection Window on page 153 See figure 5 55 for an illustration First all objects regions of
269. maemo 6200 4000 6200 s T buliness fe o m a 500 column width height row column Oooo phi roundness num_sides connect _num holes_num _ max_diameter O orientation shape moments JODOR eH eee ee 0003 09 TEE E 5 o 100 Figure 5 56 Inspection of selected features e XLD features This group contains features that describe the selected XLD e g its dimensions or shape properties You can select the features to be inspected by ticking the corresponding check boxes in the tree The selected features are displayed on the right side of the window For each feature the calculated value of the selected region or XLD is displayed or the value for the entire image The current value is also visualized as a gauge in a value range that can be set to the desired values Simply select Show Minimum Maximum which is available in the context menu of the right side of the window See figure 5 56 for an illustration of a clip inspection The range for the area feature has been set to 4000 6200 Individual clips can be inspected by selecting them in the graphics window Moving the mouse pointer over a feature value displays a tool tip It shows the name and short description of the HALCON operator used for the calculation of that value Using the context menu you can insert the corresponding operator into the operator window 5 13 Dialogs 155 5
270. mation e g context sensitive in formation about a specific user action or the runtime of operator or procedure calls unless time measure ment has been deactivated in the preferences see section Runtime Settings gt Runtime Settings on page 72 The status bar is divided into the following five areas from left to right see figure 5 1 1 Status icon Shows the current run status of the program 2 Messages and runtime information For example if you select an operator from the menu the corresponding short description is displayed here The runtime information depends on the run mode When single stepping through the program the runtime of the last operator or procedure call is displayed In continuous run mode a runtime summary of the executed program lines is displayed when the program stops A history of the most recent messages is also kept see below 3 Information about the image in the active graphics window The display format is index variable name number of objects height x width x channels x type 4 Gray value of the image in the active graphics window at the mouse cursor position For multi channel images the gray values of all channels are displayed separated by commas 5 Image coordinates in the graphics window row column ie image 38 6 ms 10 Clip at 1 830x822x1 xbyte Mas tt 0 0 run status messages runtime information image details gray value coordinates Figure 5 1 The status bar 5 1
271. ment You may look for a detailed description of each operator in the HALCON reference manual Operators in the menus Control and Develop are special operators of HDevelop Thus you will not find them in the reference manuals for HALCON C HALCON C or HALCON COM The menu has a cascade structure according to the chapter structure of the HALCON reference manual As this menu is built up dynamically when HDevelop starts it might take some time until it is available During the build up time the menu is grayed out Selecting a chapter of the menu opens a pulldown menu with the corresponding sections or operators respectively This operator hierarchy is especially useful for novices because it offers all operators sorted by thematic aspects This might be interesting for an experienced user too if he wants to compare e g different smoothing filters because they reside in the same subchapter To get additional information a short description of an operator while activating its name in the menu is displayed in the status bar Note that some operators are visible in the menus but should not be used e g open_window in Menu Operators gt Graphics gt Window or reset_obj_db in Menu Operators gt System gt Database If you select one of these operators a warning text is displayed in the operator window This warning will usually refer to a legal substitute In the case of most of these operators you should use the corresponding
272. menu 79 Visualization menu Apply Immediately 83 Clear Graphics Window 79 Close Graphics Window 80 Color 81 Colored 81 Display 80 Draw 81 Feature Histogram 89 151 Feature Inspection 89 153 Gray Histogram 89 145 Image Size 80 Line Width 81 Lut 82 New Zoom Window 89 Open Graphics Window 79 Paint 82 Position Precision 82 Reset Parameters 83 Save Window 89 Set Parameters 84 Shape 82 Update Window 83 Window Size 80 Zoom Window 89 143 Volatile 161 Warning 118 warning 156 watersheds 98 while 75 92 109 236 238 while loop 236 while 269 277 Window Cascade Windows 100 menu 99 Open Graphics Window 99 Open Operator Window 99 Open Program Listing 99 Open Variable Window 99 Organize Windows 100 Window Size 80 window title 43 Windows 250 266 write_string 42 81 X 160 XLD 278 colors 81 line width 81 Y 160 Zoom 143 Zoom Window 89
273. mes as well as operator or procedure calls In addition you can replace variable names and substitute operator or procedure calls The dialog is displayed in figure 5 8 Find Replace Find Replace Variables Operators Texts Search For y Find All Replace y Replace Replace All Find Parameter Scope All Program Current Procedure Options Case Sensitive J Whole Words T Backward Figure 5 8 Find Replace 5 2 2 Menu Edit 59 The search context can be set to one of the following entities Variables Find program lines with variable names that match the search text Operators Find program lines with operator or procedure calls that match the search text Texts Full text search Find program lines that match the search text anywhere If the full text editor is disabled no replacing is allowed in this mode to ensure the consistency of the program code The search scope can be specified as follows A11 Search the main procedure all local and all external procedures Program Search the main procedure and all used procedures Current Procedure Search the current procedure only Please note that locked procedures are not searched see section Protected External Procedures on page 123 The following parameters specify how the search is performed Case Sensitive By default the case of the search text is ignored thus searching for image will find Image or IMAGE as well Check
274. mine whether the difference between the start and end position as displayed in the row column section of the Status Bar is more than 10 pixels Use an illumination where the background is dark and the calibration plate is bright The white background of the calibration plate should have a gray value of at least 100 You can check the gray value of an area by moving the mouse pointer on the particular area in the graphics window The gray value is then displayed in the HDevelop Status Bar The contrast between the foreground and the background of the calibration plate i e its bright and dark parts respectively should be better than 100 gray values Use an illumination where the calibration plate is represented with homogeneous gray values The images must not be overexposed which means that they should not have a peak at 255 in the histogram You can use the Live mode and run the tests which can be found under Quality Issues to check that no part of the calibration plate is totally white Another option is checking the gray values in the status bar as described above If your image is too bright close the lens aperture a bit more or use an illumination that is less bright If your image is too dark use a brighter illumination or open the lens aperture a bit more until you achieve a satisfying image from which the marks can be segmented easily Then push the Snap button to keep your image In this way cover the whole f
275. mited to the currently displayed image type Gray Histogram Tool Bar 4 Display linear histogram the default E Display logarithmic histogram Initially the histogram is displayed at full vertical range i e up to the peak value The displayed part can be manipulated with the following buttons L Zoom histogram display to a selected area Click this button and drag an area inside the histogram to view that area ba Spread the histogram horizontally so that only the area between the lines is displayed g cs ral o E 2 D 0 148 Graphical User Interface t Display the full histogram l Reset the display of the histogram vertically dar Reset the display of the histogram horizontally LS Force minimum histogram width Do not adjust the width of the histogram when resizing the window 5 10 1 Interactive Visual Operations The selected range of gray values can be used for two major purposes Thresholding segmentation and scaling the gray values EZEIN Jas EESE o Graphics Windows 9500 Gray lolx AREE y Bry Eso y rel Bl AGA A Er y Ear y be Bl49Q4 By Boxy E SD S gt gt threshold threshold connection scale The gray values between the green line and the red line can be visualized either in the originating or the active graphics window as specified in Output Destination in the Output area of the window The type of visualization is specified in the table
276. mn named Details to see all areas in red that are not covered by calibration plate images compare figure 6 3 Before continuing add the missing image s to your sequence You can avoid this problem by following the steps for good calibration images page 169 Add more images of your calibra tion plate tilted in different direc tions We recommend to tilt the plate in every quadrant of the im age twice and vary the tilting di rection You have changed your setup while taking calibration images Therefore you should delete those images taken before the change in order to get useful results back 176 HDevelop Assistants a Quality Issues Scope Description Quality Details 1 Sequence Number of images is too low 0 2 Sequence Field of view is not covered by plate images 4 3 Sequence Tilt angles are not covered by sequence 0 l c not covered covered Figure 6 3 Not enough calibration images have been taken a and b calibration sequence consisting of two calibration plate images c A Show button appears due to the fact that the coverage is not sufficient d An image shows which parts of the field of view are not covered by calibration plate images 6 2 2 3 Display Parameters The drop down menus under Display Parameters enable you to choose the the colors and drawing parameters for the calibration images display that you prefer You can either leave the default values or choose y
277. n plate and consequently leads to a lower accuracy The difference between the gray values of the calibration plate and the calibration marks is not big enough The plate size is too small in re lation to the image size The marks are not completely focussed some of them appear blurry This leads to a lower ro bustness The image test failed even though the plate could be found in the image Close the lens aperture or the shutter a bit more or turn down the brightness of your illumina tion until an adequate quality is reached Inhomogeneity in an image is often the result of using lat eral illumination If that is the case Can you change the set ting and instead use illumina tion from above Another pos sibility would be to use diffuse illumination Reasons can be either overex posure or underexposure To improve your results change your aperture or the brightness of your illumination The object should cover ap proximately one fourth of the image s total area Mount the camera closer to the object use a longer focal length or use a larger calibration plate The depth of field has to in clude the whole object To fix this error change either your focal length or the distance of the object to the camera Al ternatively you can also make the aperture smaller and use brighter illumination Check if any part of the image is occluded and if the occlusion interrupts the black margin of the ca
278. n HALCON windows see open_window in the HALCON reference manual but in fact they have an enhanced functionality e g history of displayed objects interactive modification of size and control buttons This is also true for operators that modify visualiza tion parameters dev_set_color dev_set_draw etc For example the new visualization parameter is registered in the parameter window when the operator has been executed You can easily check this by opening the dialog Menu Visualization gt Set Parameters gt Pen and apply the operator dev_set_color Here you will see the change of the visualization parameters in the dialog box You have to be aware of this difference if you export dev_ to C C Visual Basic Visual Basic NET and C code In contrast to the parameter dialog for changing display parameters like color the corresponding opera tors like dev_set_color do not change the contents of the graphics window i e they don t cause a redisplay They are used to prepare the parameters for the next display action 5 2 6 3 Classification File Filter Synopsis Select HALCON operators In the these menu entries you can find all HALCON operators arranged in chapters and sections This set of image analysis operators forms the most important part of HALCON the HALCON library HAL 5 2 6 Menu Operators 97 CON operators implement the different image analysis tasks such as preprocessing filtering or measure
279. n how to take calibration images can be found in the section Acquiring Images for a Successful Calibration Obligatory steps for calibration are e acquiring calibration plate images e choosing your image source page 171 e and calibrating page 171 Optional parameters which may be changed are e parameters concerning Quality Issues page 172 e Display Parameters page 176 and e Calibration Plate Extraction Parameters page 176 ATTENTION Remember that it is essential to keep your camera setup aperture focus pose fixed once you have chosen it This applies to the calibration process itself as well as to the sub sequent application Any changes will result in the failure of the calibration or even worse in wrong output values Once the calibration images are available you can push the Calibrate button and move on to the Results page 177 tab Acquiring Images for a Successful Calibration Note that the calibration assistant currently only supports 8 bit byte images Steps that will improve your calibration results 170 HDevelop Assistants 10 Figure 6 1 Example for suitable calibration images Use a calibration plate that is big enough to fill a large part of the image at least one fourth of the image s total area The minimum diameter of the circular marks should be 10 pixels To check this move the mouse pointer over a calibration mark and exa
280. n in table 7 15 work on different data types The functions min and max select the minimum and the maximum values of the tuple values All of these values either have to be of type string or integer real It is not allowed to mix strings with numerical values The resulting value will be of type real if at least one of the elements is of type real If all elements are of type integer the resulting value will also be of type integer The same applies to the function sum that determines the sum of all values If the input arguments are strings string concatenation will be used instead of addition The functions mean deviation sqrt deg rad fabs ceil floor and fmod work with integer and real the result is always of type real The function mean calculates the mean value and deviation the standard deviation of numbers sqrt calculates the square root of a number 232 HDevelop Language cumul returns the different cumulative sums of the corresponding elements of the input tuple and median calculates the median of a tuple For both functions the resulting value will be of type real if at least one of the elements is of type real If all elements are of type integer the resulting value will also be of type integer select_rank returns the element at rank i and works for tuples containing int or real values The index i is of type int deg and rad convert numbers from radians to degrees and from degrees to radians respectively real conv
281. n interface does not support generic parameters this field is grayed out See the documentation of the individual image acquisition interfaces for more information about the supported generic parameters Action Buttons Once the connection parameters are set up the action buttons are used to connect to and acquire images from the specified device Messages about connection errors are displayed in the status line of the image acquisition assistant window Connect Connect to the specified image acquisition device If the connection fails carefully check the configuration in the above fields Not all combinations of settings are allowed for all devices It is recommended to enable low level error messages see General Options gt Experienced User to find out what is going wrong Please note that an established connection is closed auto matically if the connection parameters are modified When the connection is established this button can be used to disconnect the device 6 1 3 Tab Parameters 161 Snap Acquire a single image from the device first connecting to the device if needed The image is displayed in the active graphics window unless Display Image is set to Disabled Live Start stop live image acquisition mode The images are displayed in the active graphics window unless Display Image is set to Disabled The live mode is stopped automatically if an error occurs Detect Clicking this button will attempt to redetect valid pa
282. n rapid settings of variables and constants To do so you have to click the button on the text field s right side A combo box is opened in which you may select an item Thus you are able to choose a certain variable or value without risking erroneous typing Previous entries are deleted Afterwards the combo box is closed If there are no variables or appropriate values the combo box remains closed 5 5 3 Control Buttons Below the parameter display you find five buttons that comprise the following functions Ok By clicking Ok you execute the operator or procedure call with the specified parameters When doing so the execution mode depends on the position of the PC If the PC is placed above the insertion position the system executes the program from the PC until the insertion position first Then the operator or procedure call that has been edited in the operator window is executed The reason for this is that the parameter values that are used as input values for the currently edited operator or procedure call have to be calculated If the PC is placed at or after the insertion position only the currently edited operator or procedure call is executed The operator or procedure call is entered into the program window before it is executed After the execution the PC is positioned on the next executable program line after the edited operator or procedure call The computed output parameter values are displayed in the variable window Ic
283. nd e In each test image as many objects are expected as specified manually page 202 in the dialog Test Images page 200 of the tab Model Use The recognition rate is calculated as the relation of found objects to the sum of expected objects over all images i e it is 100 if in each image exactly as many objects are found as specified Note that if you select Maximum Number of Matches 0 and by mistake specify a lower num ber of visible objects than actually present in a test image a recognition rate gt 100 results which completely confuses the optimization algorithm You may handle this case by selecting the condi tion gt 100 for the recognition rate 6 3 3 4 The Menu and Tab Inspect Via the menu Inspect you can determine the recognition rate and the pose bounds of the object for the used set of test images Besides the automatical determination of the recognition rate the tab Inspect is opened Alternatively you can directly open the tab and select the button Run Inside the tab you can 6 3 3 Matching Assistant Reference 207 also specify the maximum number page 204 of object instances the Matching Assistant should search for Determining the Recognition Rate With the menu item Inspect gt Determine Recognition Rate or when you click either the corre sponding button in the tool bar or the button Run in the tab Inspect the Matching Assistant determines the recognition rate by searching the object
284. neration In the following general differences in the behavior of a HDevelop program and its exported versions are described 8 8 1 User Defined Code Blocks HDevelop comments containing the symbol as the first character are exported as plain text statements For example the line Call MsgBox Press button to continue vbYes Program stop 1000 in HDevelop will result in Call MsgBox Press button to continue vbYes Program stop 1000 in Visual Basic 6 This feature can be used to integrate Visual Basic Visual Basic NET CH C or C code into a HDevelop program Furthermore some additional special comments are recognized to specify the destination of the plain text statements For example the line define NO_EXPORT_APP_MAIN puts the given text at the very beginning of the exported program Comments in this format are collected from the main procedure first followed by comments in other procedures The recognized special comments are summarized in table 8 1 8 8 2 Assignment In HDevelop each time a new value is assigned to a variable its old contents are removed automatically independent of the type of the variable In the exported code this is also the case for iconic objects Prefix Where the text following the prefix goes in the exported program The place of insertion HO Beginning of the program End of the program Before the current procedure After the current procedu
285. nes one level lt Shift gt lt Tab gt selected text outdent corresponding code lines one level lt Shift gt lt Return gt reverse action of lt Return gt key see Program Window Tool Bar lt Ctrl1 gt lt Return gt execute current line same as clicking Apply in operator window see section Control But tons on page 128 lt Ctr1 gt lt F gt open find replace dialog with selected text section Find Replace on page 58 5 4 2 Program Counter Insert Cursor and Break Points 111 Advanced autocompletion lt Escape gt hide suggestion list lt Ctrl gt lt Space gt re display suggestion list based on cursor posi tion or selection lt Up gt highlight previous entry in suggestion list lt Down gt highlight next entry in suggestion list lt Tab gt operator suggestions complete to highlighted suggestion or to longest common string from suggestion list parameter suggestions complete to high lighted suggestion or first suggestion if no sug gestion is highlighted 5 4 2 Program Counter Insert Cursor and Break Points The column to the left of the displayed program body contains the PC represented as a green arrow pointing to a program line the IC a black triangle between two program lines and optionally one or more break points BP a red STOP sign The program counter resides in the line of the next operator or procedure call to execute The IC indicates the position to insert a new progra
286. ng it in the program window Use the interactive tools provided by HDevelop to assist you e g to find appropriate values for the operators Graphical User Interface 43 Chapter 5 Graphical User Interface This chapter is the reference to the graphical user interface of HDevelop 5 1 Main Window The main window handles HDevelop programs It comprises the following components Window Title The main window of HDevelop is identified by the title HDevelop followed by the name of the current program or unnamed if no file name has been specified yet Unsaved changes in the current program are indicated with a trailing asterisk in the window title Menu Bar The menu bar at the top provides access to the functionality of HDevelop The menus and their entries are described in the section Menu Bar on page 46 g cs ral o E 2 D 0 Tool Bar The tool bar icons provide convenient shortcuts for frequently used functions It is described in the section Tool Bar on page 104 44 Graphical User Interface Window Area The main part of the window is reserved for the windows and dialogs of HDevelop The most important windows are the following Program window see page 105 Operator window see page 125 Variable window see page 129 Graphics window see page 136 Online help window see page 140 Status Bar The status bar at the bottom of the main window displays status infor
287. ng procedure from which the current procedure was called The calling procedure becomes the current procedure 5 2 4 Menu Visualization 79 5 2 4 Menu Visualization Via this menu you can open or close graphics windows and clear their displays Furthermore you may specify their output behavior during runtime Most functions are also available from the context menu of the graphics windows 5 2 4 1 Open Graphics Window Synopsis Open a new graphics window See also dev_open_window When selecting this menu entry a dialog window pops up Here you may specify some graphics window attributes The dialog is displayed in figure 5 20 The position size and background color of the new graphics window can be specified For example 1t is more convenient to have a white background while building graphics for slides or reports see the HALCON operator dump_window If the window height and width are set to 1 the window size is set by HDevelop It is taken from the persistent preferences of HDevelop usually the size of the last graphics window in the previous HDevelop session A position value of 1 specifies that the window position is determined by the window manager in SDI mode Width 1 Jo Column 0 1 3 Height Background TEAM Figure 5 20 Specifying the parameters of the new graphics window g cs ral o E 2 D 0 The window handle of the new graphics window is displayed in
288. ng the standard parameters will already suffice Therefore you can directly test the model page 186 now Additionally advanced model parameters can be specified via the menu item Create Model gt Advanced Model Parameters page 196 The Model Parameter Contrast Low High The two parameters Contrast Low and Contrast High determine which pixels in the selected ROI page 185 are included in the model page 185 typically the points corresponding to the contours of the object should be selected When you select a value either by using the sliders or by entering a value in the text fields next to them the included pixels are marked in the displayed image In order to obtain a suitable model we recommend to choose the contrast in such a way that the significant pixels of the object are included i e those pixels that characterize it and allow to discriminate it clearly from other objects or from the background Please assure that no clutter is included i e pixels that do not belong to the object You can use the parameters in two ways 1 Simple threshold Set both parameters to the same value Then all pixels with a contrast higher than this value are included in the model You can modify both parameters at the same time as follows To increase the value use the slider of Contrast Low then the value Contrast High will follow automatically Vice versa to decrease the value use the slider of Contrast High
289. ns images or XLDs You may assign new values to an iconic variable as often as you want to but you cannot change its type so that it becomes a control variable In addition to classifying HDevelop variables by whether they are iconic or control variables they can also be distinguished by whether they are interface parameters of the current procedure or local variables Generally both kinds of variables are treated equally New variables are created in the operator dialog area during specification of operator or procedure call parameters Here every sequence of characters without single quotation marks is interpreted as a variable name If this name did not exist before the variable is created in the operator dialog area by pressing Ok or Enter The variable type is specified through the type of the parameter where it was used for the first time Variables that correspond to an iconic object parameter create an iconic variable variables for a control parameter create a control variable Every time an operator or procedure call is executed the results are stored in variables connected to its output parameters This is achieved by first deleting the contents of the variable and then assigning the new value to it The variable window is similar to a watch window used in window oriented debuggers Inside this window you are able to keep track of variable values Corresponding to the two variable types there are two areas in the variable window One
290. nsert 183 209 code lines release 183 209 code options 208 Code Preview 162 code variables 209 Color 81 149 color graphics window 81 Color Space 160 Colored 81 Colors 64 column 44 Column Scale Step 197 COM 255 260 263 comment 57 58 92 94 comment 58 94 267 267 267 267 267 comparison operations 228 Complexity 118 concat_obj 133 220 Connect 160 Index Connection 149 Image Acquisition Assistant 159 connection 35 81 149 Connection Handle 163 continuation line 108 continue 92 236 238 Contrast 193 Control 92 control data 277 Control Flow 162 control flow break 238 continue 238 elseif 235 exit 239 for endfor 236 if else if endif 234 operators 233 repeat until 236 return 239 stop 239 throw 239 try catch while endwhile 236 coordinates status bar 44 Copy 57 variable values 134 copy 107 Copy History to Clipboard 45 copy_obj 220 count_obj 81 220 Create Model 190 create model 186 Create New Procedure 90 Create ROI 190 Cut 56 endif 234 endtry 239 Deactivate 58 Delete 57 delete 107 Delete All Test Images 200 Delete All Unused Local 91 Delete Current 91 Delete Generated Code Lines 158 183 209 Delete Test Image 200 Delphi Borland 9 Detailed Description 118 Detect 159 161 Detect A11 201 determine pose bounds 207 Determine Recognition Rate 207 dev_ operators
291. nterchangeably for program editing 4 Variable window Program variables can be watched in this window It displays all variables of the current procedure and their current values Iconic variables are displayed as thumbnails whereas control variables are displayed as text The layout of this window can be switched between horizontal and vertical splitting by double clicking the separator You can double click iconic variables to display them in the active graphics window Double clicking control variables opens an inspection window with a nicely formatted list of the current values and statistical data There are many other windows which will be covered later in this manual Unless the context menu has been disabled in the preferences to prevent any interference with interactive drawing functions See section 5 2 2 11 on page 62 18 Getting Started 2 2 Running Example Programs HALCON comes with a large number of HDevelop example programs from a variety of application areas These range from simple programs that demonstrate a single aspect of HALCON or HDevelop to complete machine vision solutions As an introduction to HDevelop we recommend to try some of these programs to quickly get accustomed to the way HDevelop works One of the examples demonstrates many different capabilities of HALCON in one program It is the only HDevelop example program that can be started from the Start menu under Windows The UNIX path to
292. ntioned points we recommend to program according to the following rules 8 8 5 Protected External Procedures 269 1 Don t modify the loop variable or the step value inside the loop If you need this behavior use the while loop 2 Don t use the loop variable after the loop 8 8 5 Protected External Procedures As described for the different programming languages HDevelop procedures are exported automatically to procedures or subroutines of the selected programming language This does not hold for the protected external procedures described in section 5 4 3 3 on page 123 These procedures are protected by a password so that they cannot be viewed and modified by unauthorized users Thus as long as they are locked by the password they can not be exported to any programming language 8 8 6 System Parameters You should know that HDevelop performs some changes of system parameters of HALCON by calling the operator set_system see the reference manual This might cause the exported program not to produce identical output If such a problem arises you may query the system parameters by means of get_system in HDevelop after or while running the original HDevelop version of the program Depending to the problem you can now modify relevant parameters by explicitly calling the operator set_system in the exported program 8 8 7 Graphics Windows HALCON provides a functionality that emulates the behavior of HDevelop graphics windows for HAL
293. o handle runtime errors caused by HALCON operators that are executed inside HDevelop The parameter value give_error which is the default leads to a stop of the program together with an error dialog if a value not equal to H_MSG_TRUE is returned Using the value give_error errors or other messages are ignored and the program can continue This mode is useful in connection with operators like get_mposition file_exists read_image Or test_region_point which can return H_MSG_FATL dev_error_var This operator specifies a variable that contains the return value error code of an operator after execution This value can be used to continue depending on the given value dev_error_var is normally used in connection with dev_set_check Note that as the proce dure concept in HDevelop only allows for local variables the variable set by dev_error_var will only be valid in calls to the relevant procedure Furthermore every corresponding procedure call will have an own instance of the variable 1 e the variable might have different values in different procedure calls For an example how to use dev_error_var in connection with dev_set_check see HALCONROOT examples hdevelop Graphics Mouse get_mposition dev Please note that operations concerning graphics windows and their corresponding operators have addi tional functionality in comparison to HALCON operators with corresponding names without dev_ graphics windows in HDevelop are based o
294. o handle your HDevelop programs and to edit them The most important buttons are used to start and to stop a program or parts of a program Cayo Tiad va uuUugs PEU 4 YY FEaSmMYUG m ql ony New program lt Ctr1 N gt see page 46 Open program lt Ctr1 0 gt see page 46 Browse the supplied example program database lt Ctr1 E gt see page 47 Save program or selected external procedure lt Ctr1 S gt see page 49 Save all modifications in the program and external procedures lt Ctr1 A1t S gt see page 50 Export the program to another programming language see page 51 Print parts of the current program lt Ctr1 P gt see page 54 Cut highlighted program lines to internal buffer and system clipboard lt Ctr1 X gt see page 56 Copy highlighted program lines to internal buffer and system clipboard lt Ctr1 C gt see page 57 Delete highlighted program lines lt Del gt see page 57 Paste program lines from internal buffer lt Ctr1 V gt see page 57 Undo last editing action lt Ctr1 Z gt see page 56 Redo last editing action lt Ctr1 Y gt see page 56 Activate highlighted program lines lt F3 gt see page 57 Deactivate highlighted program lines lt F4 gt see page 58 Find replace text in the current program lt Ctr1 F gt see page 58 Run program from PC lt F5 gt see page 74 Step over next program line lt F6 gt see page 75 Step in
295. ol bar of the Matching Assistant you can display the model image if available if you loaded a shape model page 189 from file the model image is not available You can alternatively display the model image via the button Display in the dialog Display Image Pyramid of the tab Model Creation accessed also via the menu item Create Model gt Display Image Pyramid If you already created a model ROI page 185 the model itself is displayed as well When increasing the values for Image and Model using the sliders or the text boxes you can display the pyramid levels see the corresponding section about pyramid images Displaying the Image Pyramid Using the dialog Display Image Pyramid accessed via the menu item Create Model gt Display Image Pyramid or directly inside the tab Model Creation you can display the model image page 185 see how to display the model image and inspect the pyramid of models and the corresponding images by e selecting which model level is displayed e selecting which image level is displayed and e locking or unlocking model and image level Displaying the Model on the Different Pyramid Levels You can select the desired pyramid level of the model by using the slider or text box for Model inside the dialog Display Image Pyramid of the tab Model Creation The model is overlaid onto the pyramid 192 HDevelop Assistants image selected with the slider or text box Image within t
296. on 8 1 on page 249 e CHA HALCON COM cs gt see also section 8 3 on page 255 e Cf HALCON NET cs gt see also section 8 2 on page 253 e Visual Basic 6 0 HALCON COM bas gt see also section 8 6 on page 263 e Visual Basic NET HALCON COM vb gt see also section 8 5 on page 260 e Visual Basic NET HALCON NET vb gt see also section 8 4 on page 258 The file name extension corresponding to the selected export format is appended to the specified file name CET S Export File and Format con examples hdevelop Applications FA chm_dip_switch cs zz C HALCON NET Export Range Program CurrentProcedure External Procedures g cs ral o E 2 D 0 External Procedure Options Y Export Procedure Body Window Export Use HALCON Windows Use Export Template Encoding Native UTF 8 o Figure 5 4 Export Graphical User Interface Print Range The export range specifies which parts of the current program are exported The follow ing options are available e Program The entire program is exported main procedure and all local procedures All used external procedures are exported depending on the setting of the external procedure options see below e Current Procedure The current procedure and all used local procedures are exported All used external procedures are exported depending on the setting of the external procedure options see belo
297. onding to the feature values and the vertical axis corresponding to the frequency of the values i e to the number of regions or XLDs with a certain feature value When comparing feature histograms to gray value histograms you will note a typical difference Because in most cases the overall number of regions or XLDs is much smaller than the overall number of pixels feature histograms often consist of individual lines most of them having the height 1 Of course this effect depends on the selected feature For features with floating point values e g the orientation the probability that two regions or XLDs have the same feature value is very small in contrast to features with integer values e g the number of holes g cs ral o E 2 D 0 152 Graphical User Interface Jos Eo 2 3900 0 79462 Feature Histogram Image Connection 900 eT ON 12 ta de Output Destination originating window Output Destination originating window 0 x select objects of similar size AND restrict the selection to round objects Figure 5 55 Combining different features selections 5 12 Feature Inspection Window 153 You can influence the calculation of the histogram with the slider Quantization The selected value is used to discretize the horizontal axis Instead of determining the frequency of an exa
298. one like this assign tuple for 1 100 1 i assign tuple 4711 tuple endfor which is displayed as tuple for i 1 to 100 by 1 tuple tuple 4711 endfor Because this is not very convenient a special function called gen_tuple_const is available to construct a tuple of a given length where each element has the same value Using this function the program from above is reduced to assign gen_tuple_const 100 4711 tuple which is displayed as tuple gen_tuple_const 100 4711 If we want to construct a tuple with the same length as a given tuple there are two ways to get an easy solution The first one is based on gen_tuple_const assign gen_tuple_const tuple_oldl 4711 tuple_new which is displayed as tuple_new gen_tuple_const tuple_oldl 4711 The second one is a bit tricky and uses arithmetic functions assign tuple_old 0 4711 tuple_new which is displayed as tuple_new tuple_old 0 4711 o te o te l 222 HDevelop Language Operation Meaning HALCON operator al a2 division tuple_div al a2 multiplication tuple_mult al a2 modulus tuple_mod al a2 addition tuple_add al a2 subtraction tuple_sub a negation tuple_neg Table 7 7 Basic arithmetic operations Here we get first a tuple of the same length with every element set to zero Then we add the constant to each element In the case of tuples with different values we have to us
299. onic variables are shown in the current graphics window if you haven t suppressed this option compare section Runtime Settings gt Runtime Settings on page 72 Afterwards the operator window is cleared If you did not specify all parameters or if you used wrong values an error dialog is raised and execution is canceled In this case the operator window remains open to allow appropriate changes Enter Replace By clicking the button Enter the currently edited operator or procedure call is trans ferred into the program window without being executed When editing existing program lines through double clicking in the program window see page 106 the button label changes to Replace When clicked the original program line is replaced 5 6 Variable Window 129 Apply If you click Apply the operator is executed with the specified parameters but not entered into or changed in the program This enables you to determine the optimum parameters rapidly since the operator dialog remains open and hence you can change parameters quickly Note that this functionality is not available for procedure calls and thus the button is grayed out in this case Unlike the button Ox only the single line you edit or enter is executed no matter where the PC 1s located Thus you have to ensure that all the input variables contain meaningful values By pressing Apply the corresponding output variables are changed or created if necessary to allow you
300. ontains four separate areas that offer the necessary functional ity for manipulating parameters These areas correspond to above parameter classes and are independent of each other Every area is marked with an icon that describes the parameter class see figure 5 31 on page 113 It contains a button for inserting new parameters which are always appended at the end of the parameter list The latter is displayed by an array of text fields containing the parameter names g cs ral o E 2 D 0 116 Graphical User Interface Reset If you are creating a new procedure clicking this button removes all entered parameters If you are editing an existing procedure the original interface is restored 1 e any changes to the parameters are undone Remove Using this button you can remove single parameters from the list Before clicking this button focus the corresponding parameter by clicking its text field Move Up Move Down Using these buttons you can alter the order of the parameters Select a parameter by clicking its text field and use the buttons to change its position 5 4 3 Creating and Editing Procedures 117 General Documentation Edit Procedure Interf dev_open_window_fit_image General Parameter Engish enus y Interface P REAA Language English en_US X Basics Example Suggestions Advanced Library MYTec Standard Procedures X Chapters Develop X X Sh
301. or if the tuple contains only one value in all positions e g 1 1 1 is_number returns true for variables of the type integer or real and for variables of the type string that represent a number The function number converts a string representing a number to an integer or a real depending on the type of the number Note that strings starting with Ox are interpreted as hexadecimal numbers and 7 5 14 Operation Precedence 233 Operation Meaning HALCON operator sort t sort_index t inverse t is_number v number v environment s sorting in increasing order return index instead of values reverse the order of the values test if value is a number convert string to a number value of an environment variable tuple_sort tuple_sort_index tuple_inverse tuple_is_number tuple_number tuple_environment ord a ASCII number of a character tuple_ord chr a convert an ASCII number to a character tuple_chr ords s ASCII number of a tuple of strings tuple_ords chrt i convert a tuple of integers into a string tuple_chrt rand a create random numbers tuple_rand Table 7 16 Miscellaneous functions strings starting with O zero as octal numbers for example the string 20 is converted to the integer 20 020 to 16 and 0x20 to 32 If called with a string that does not represent a number or with a variable of the type integer or real number returns a copy of the input environmen
302. ort Description Open a new graphics window that preserves the aspect ratio of the given image Detailed Description This procedure opens a new graphics window with a given minimum and maximum extent such that it preserves the aspect ratio of the given image The position of the new graphics window is given by the parameters Row and Column which define the position of the upper left corner of the graphics window The size of the new graphics window is determined such that the limits given in WidthLimit and HeightLimit are Fulfilled and that the aspect ratio of the given image is preserved To restrict only the maximum size of the new graphics window only one value must be passed in WidthLimit and HeightLimit respectively To restrict both the minimum and the maximum size WidthLimit and HeightLimit must contain a tuple with two elements each The first element defines the minimum size and the second element defines the maximum size of the new graphics window Tf it is not possible to set the window size such that all limits minimum and maximum width and height as well as the aspect ratio of the given image are fulfilled the limit for the minimum window size is neglected y a ara Figure 5 32 Editing the general documentation of a procedure Basics Procedures can be grouped by Library and Chapters chapter and section Library This is the top level element of the content hierarchy in the procedure online hel
303. orted pro gram We recommend to insert the corresponding Develop operators e g dev_set_color or dev_set_line_width in the HDevelop program explicitly This will result in the appropriate call set_color set_line_width etc in the exported code 272 Code Export Tips amp Tricks 273 Chapter 9 Tips amp Tricks This chapter contains helpful information for working with HDevelop 9 1 Keycodes In order to speed up the entering of values in the input fields of HDevelop e g operator parameters several keycodes are defined which have special functions These keyboard mappings are shown in table 9 1 9 2 Online Help Online documentation is available in PDF and partly in HTML format HDevelop provides an integrated online help window You can conveniently browse the HTML based documentation in this window view the HTML files in your web browser In HDevelop you may call the online help window via the menu Help gt Help or by pressing lt F1 gt The functionality is described in section 5 8 on page 140 Besides HTML the documentation is available in PDF format as well If you click on a PDF document in the online help window the registered application for viewing PDF files starts up automatically 9 3 Warning and Error Windows Warning and error windows are popups that make the user aware of user errors Usually they interrupt the faulty actions with a description of the error For this purpose information a
304. ose button of the window frame Figure 5 47 shows an example graphics window which is displaying a gray value image of a tooth rim overlaid with region data One of the displayed regions is selected illustrated by the dashed border The variable name and index of the selected region is displayed in the title bar 5i Graphics Window 3600 ConnectedRegions 15 Figure 5 47 Graphics Window Every HDevelop graphics window has its own visualization parameters Thus modifying the parameters see section Menu Visualization on page 79 applies to the currently active graphics window only i e the parameter settings of all other open graphics windows remain unchanged Additionally the new parameter settings are used as the default settings in all graphics windows yet to be opened The origin of the graphics window is the upper left corner with the coordinates 0 0 The x values column increase from left to right the y values row increase from top to bottom When the mouse cursor is placed inside a graphics window the coordinates row column and the gray value at that position are displayed in the status bar see page 44 Sometimes it is desired to display this information close to the mouse cursor This can be achieved by holding down the lt Ctr1 gt key note this does not work when the zoom in and out tool is selected since pressing lt Ctr1 gt inverts the corresponding zoom action Figure 5 48 shows the coordinate gray value
305. our own values for Plate Region Mark Centers or the Coordinate System The Draw option lets you choose whether you want to see margins or filled regions 6 2 2 4 Calibration Plate Extraction Parameters You should always aim for high quality images If for some reason you should however have trouble with your image quality and see no other option of improving it you can still adapt some parameters under Calibration Plate Extraction Parameters There are three groups of parameters which may be changed e Locating the Calibration Plate including Filter Size Mark Threshold and Minimum Mark Diameters e Extracting the Mark Regions including Initial Threshold Threshold Decrement and Minimum Threshold and 6 2 3 Results of the Calibration 177 e Extracting the Mark Contours including Smoothing Alpha Minimum Contour Length and Maximum Diameters For more information about the first group of parameters please refer to the reference manual en try of the HALCON operator find_caltab Groups two and three equate to HALCON operator find_marks_and_pose 6 2 3 Results of the Calibration Two types of parameters of your vision system are calculated as results internal parameters e g the precise focal length the size of the camera chip or the distortion caused by an imperfect lens and external parameters i e the position and orientation of the vision system Consequently the calibration returns the following results e Ca
306. ouse button is used under UNIX to paste text from the clipboard into text fields mouse wheel Most recent three button mice combine the middle mouse button with a scrolling wheel HDevelop supports the mouse wheel in many places The mouse wheel operates the GUI ele ment under the mouse cursor Using the mouse wheel you can for instance quickly scroll large program listings select values from lists or perform continuous zooming of displayed images In general windows that provide a scroll bar can be quickly scrolled with the mouse wheel Further more the values of spinner boxes text fields that expect numerical data can be decremented and incremented with the mouse wheel Keyboard Usage HDevelop is very keyboard friendly Most functions of the graphical user interface that can be operated using the mouse can be accessed from the keyboard as well Many of the most important functions are available through keyboard shortcuts which are worthwhile memorizing When programming with HDevelop keeping both hands on the keyboard can increase the productivity Therefore many naviga tional tasks like selecting parameter fields or selecting values from lists can be easily done using just the keyboard The most common keyboard functions are listed in the appendix Windows and Window Managers In the default window mode of HDevelop windows can be freely moved inside the main window by dragging the title bar They can be resized by dragging the windo
307. ow is cleared and ready for the insertion of the next operator 4 4 Getting Help You may be wondering where the clip image was loaded from since we did not specify any path or even a file extension This is a detail that is related to the way the HALCON operator read_image works HDevelop does not know anything about it It just executes the operator with the parameters you supply Nonetheless it is easy to access the documentation of the operators from within HDevelop Double click the first program line in the program window The operator is displayed in the operator window for editing Now click Help to open the HDevelop online help window It will automatically jump to the documentation of the displayed operator see figure 4 4 The reference manual is completely cross linked The navigation at the left part of the window provides quick access to the documentation The tab card Contents presents the hierarchical structure of the reference manual plus access to other HALCON manuals The tab card Operators lists all operators for direct access Enter any desired substring into Filter to quickly find an operator In the remainder of this chapter try to use the online help as much as possible to get information about the used operators The online help window is described in section 5 8 on page 140 to f E E o o fo a Programming HDevelop Y Develop Help read_image HALCON Reference Manual Version 9 0 About
308. ower boundary of the displayed gray values will always be adapted when a new image is displayed The maximum and minimum value for the threshold bars green and red are also fixed to the maximum gray value of the type of image currently displayed Note that if you are using 8 bit and 16 bit images in a mixed mode the histogram will constantly be reset Thus it is not possible to display a 16 bit image set thresholds then display an 8 bit image and keep the threshold values of the 16 bit image increasing In this mode only the upper boundary of the displayed gray values will be adapted and it will only increase but never decrease This for instance is useful when first inspecting 8 bit images but then switching to 16 bit images In this situation the histogram will simply display the 16 bit gray value range after displaying the first 16 bit image In this mode the minimum and maximum value of the threshold bars are not limited to the currently displayed image type The reason is simple This mode allows to inspect images of a different data type with the same threshold values If the values were always limited the histogram would forget the values like in the adaptive mode fixed In this mode the boundaries are not adapted automatically but can be changed manually This mode is also suitable for scenarios with images of mixed data types Like in the mode increasing the minimum and maximum value of the threshold bars are not li
309. owing standard procedure path cannot be removed C Program Files MVTec HALCON procedures 17 Figure 5 13 External Procedures gt Directories Add Select an additional directory from the file selection dialog page 155 This directory will be added to the list All subdirectories of the selected directory will be scanned as well Delete Delete the selected directory from the list Programs using any external procedure from that directory will no longer run Rescan Rescan all listed directories to reflect any changes in the file system 5 2 2 Menu Edit 67 External Procedures gt External Procedures This tab card lists all external procedures in the order they are loaded from the configured directories page 66 For each procedure the following information is displayed Field Meaning Number of the external procedure Procedure Name Name of the external procedure State Loaded The external procedure has been loaded successfully It can be used in any HDevelop program Unloaded An error occurred while trying to load the external procedure e g the file permissions are wrong or the external procedure file is cor rupted Hidden An external procedure with the same name has already been loaded from a different directory Search Directory Directory name from the tab card Directories where this procedure is found Relative Path Path name of the external procedure relative to the search directory Use
310. p The standard model parameters Start Angle page 195 and Angle Extent page 195 specify how much the object is allowed to rotate To speed up the matching process the Matching Assistant pre computes instances of the model at intermediate angles in this range at steps specified in the parameter Angle Step Note that each time you create a model ROT page 185 or change the parameter Contrast page 193 the Matching Assistant automatically selects a suitable value to obtain the highest possible accuracy You can select a higher value manually This may be useful to speed up the search process in special cases please note however that a large value may decrease the accuracy of the estimated orientation and even prevent the Matching Assistant from finding the object You can restore the automatically selected value by clicking the button Auto Select 6 3 3 Matching Assistant Reference 197 If you already loaded test images page 200 you can quickly test the effect of the selected parameter value via the menu item Inspect gt Determine Recognition Rate page 207 Letting the Matching Assistant Select a Suitable Value for Angle Step When you click the button Auto Select that is placed right beside the slider for the parameter Angle Step the Matching Assistant selects a suitable value for the angle step size to obtain the highest possible accuracy The Model Parameters Row Scale Step and Column Scale Step
311. p It could be used to apply a vendor specific tag to a group of procedures The external procedures supplied with HALCON use the library tag MVTec Standard Procedures g cs ral o E 2 a a 5 0 Chapters The text fields next to Chapters can be used to specify chapter and section so that your procedures can be grouped thematically in the list at the bottom of the menus Menu Procedures and Menu Operators Note that the logical structure created by the chapter and section information does not correspond to the automatically created directory structure At least for the external procedures you can create the corresponding directory structure afterwards outside of HDevelop The recognition of the procedures in HDevelop is still ensured as all subdirectories of the external procedure paths are scanned as well When editing already existing external procedures the changed procedures are stored in the paths they were originally found in 118 Graphical User Interface Short Description Enter a short description Usually this should be a single sentence that describes the purpose of the procedure It appears in the overview sections of the online help of the proce dures Additionally the short description is displayed in HDevelop s status bar when the procedure is selected from the menu Detailed Description Enter a detailed description of the procedure Paragraphs are introduced with a blank line Example
312. p exit The operators assign and insert do not influence the execution but serve to specify values for control data assignment The operator comment is used to add a comment that means any sequence of characters to the program The operator return terminates the current procedure call and 5 2 6 Menu Operators 93 returns to the calling procedure see section Creating and Editing Procedures on page 112 for more information about HDevelop procedures Selecting a menu item displays the corresponding control construct in the operator window where you can set the necessary parameters After specifying all parameters you may transfer the construct into your program A direct execution for loops and conditions is not possible in contrast to other HDevelop and HALCON operators because you have to specify the loop s and condition s body first to obtain useful semantics If necessary you may execute the program after the input with Step Over or Run The IC is positioned after the construct head to ensure the input of the construct s body occurs in the correct place This body is indented to make the nesting level of the control constructs visible and thus to help you in understanding the program structure The semantics for loops and conditions are shown in section Control Flow Operators on page 233 Assignment The operator assign serves as an assignment operator for control variables numbers and strings Anal ogously to
313. p Assistants e Create the model e Test the model and e Optimize the matching speed We recommend to reset all parameters via the button Reset page 199 inside the tab Model Creation page 190 before starting with a new matching application 6 3 2 1 Creating the Model A model page 185 is created in three steps e Open the so called model image page 185 via the menu item File gt Open Model Image page 189 the corresponding button in the tool bar or the text field and button of Model Image inside the tab Model Creation e Create an ROI page 185 around the object either via the menu items at Create Model gt Create ROI page 190 or via the corresponding buttons inside the tab Model Creation e Specify the parameter Contrast page 193 inside the tab Model Creation accessible also via Create Model gt Standard Model Parameters page 192 so that the model consists of enough points to be recognizable Alternatively you can load a model page 189 that you have saved page 190 with the Matching Assis tant or HALCON Now you can test the model on fest images page 185 6 3 2 2 Testing the Model After you created the model page 185 you test it in the following steps e Load one or more fest images page 185 via the menu item Use Model gt Test Images gt Load Test Images page 200 or via the button Load inside the dialog Test Images in the tab Model Use e Specify standard search parameters via the m
314. p gt Exit Assistant The assistant is quit The resources used by the assistant are released The link to the generated code is lost i e it is not possible to restore the assistant unless the setup has been saved to a file The menu entry in the menu Assistants is also removed Code Generation Insert Code Insert HDevelop code based on the current settings of the assistant The code is inserted at the IC As long as the associated assistant is not quit you can change the settings and update the code accordingly Code Generation gt Release Generated Code Lines The link to the generated code is cut off The code remains in the program but can no longer be updated or removed from the formerly associated assistant Nevertheless you can generate new code with the current settings of the assistant Code Generation Delete Generated Code Lines The generated code is deleted from the pro gram Please note that any manual changes to the generated lines are deleted as well Code Generation gt Show Code Preview Generate a preview of the code based on the current setup of the assistant If the program already contains generated code which is linked to the current assistant the changed code lines can be compared side by side in the preview 6 1 Image Acquisition Assistant The image acquisition assistant is an easy to use front end to the various image acquisition methods supported by HALCON Firstly it lets you read images from the file system
315. path must be specified When storing the external procedure for the first time this path is preset to the first path in the list of ex ternal procedure locations as specified in the dialog Menu Procedures gt External Procedure Settings see page 92 You can select any of the configured external procedure paths from the combo box If you are editing an existing external procedure the corresponding path is dis played but cannot be altered Thus once created external procedures can only be relocated in the file system You can also specify a new target directory by clicking the browse button next to the combo box If the selected directory is not in the list of external procedure locations HDevelop will suggest to add it to the list when the changes to the dialog are committed If the addition is canceled the new procedure will not be available unless you add the corresponding directory manually If the specified directory is a subdirectory of one of the preconfigured locations it will not be added to the list This is because subdirectories are automatically searched in HDevelop Parameters The next part of the dialog is used for the procedure interface parameters As mentioned earlier HDe velop procedure interfaces have the same structure as HALCON operator interfaces that is they may contain parameters of the four categories iconic input iconic output control input and control output in this order The procedure interface dialog c
316. perator call displayed in the HDevelop program window is o te o te l 212 HDevelop Language read_image Image Name The parameters are separated by commas Input control parameters can either be variables constants or expressions An expression is evaluated before it is passed to a parameter that receives the result of the evaluation Iconic parameters must be variables Control output parameters must be variables too as they store the results of an operator evaluation 7 2 Control Types and Constants All non iconic data is represented by so called control data numbers or strings in HDevelop The name is derived from their respective functions within HALCON operators where they control the behaviour the effect of image processing e g thresholds for a segmentation operator Control parameters in HDevelop may contain arithmetic or logical operations A control data item can be of one of the follow ing types integer real string and boolean integer and real The types integer and real are used under the same syntactical rules as in C Integer numbers can be input in the standard decimal notation in hexadecimal by prefixing the number with Ox and in octal by prefixing the number with 0 For example 4711 123 Oxfeb12 073421 73 815 0 32214 56 17 32e 122 32E19 Data items of type integer or real are converted to their machine internal representations real becomes the C type double 8 by
317. phics window If the width or height of the specified rectangle has a negative value e g Row1 gt Row2 the result is equivalent to the menu Menu Visualization gt Reset Parameters the zoom mode is switched off i e the most recently displayed image fills the whole graphics window This feature of dev_set_part is not supported for exported C C Visual Basic Visual Basic NET and C code dev_display Iconic variables are displayed in the active graphics window by this operator It is rea sonable to do this when the automatic output is suppressed see dev_update_window below and Menu Edit gt Preferences gt Runtime Settings gt Runtime Settings page 72 dev_clear_obj This operator deletes the iconic object stored in the HDevelop variable that is passed as the input parameter In the variable window the object is displayed as undefined with a as its icon dev_inspect_ctrl This operator opens an inspection window displaying the values of the variable passed to the operator To inspect multiple variables at once you can pass a tuple of variable names In most cases a list dialog is opened which shows all values of the variable see also section Inspecting and Editing Variables on page 134 In the case of an image acquisition device handle a description of this image acquisition device is opened In addition this dialog allows online grabbing of images see page 133 This operator is not supported for exported code
318. plication that runs within HDevelop Using HDevelop you can also develop a complete image analysis application and run it within the HDevelop environment The example programs supplied with HDevelop can be used as building blocks for your own applications e Execution of HDevelop programs or procedures using HDevEngine You can directly execute HDevelop programs or procedures from an application written in C or any language that can integrate NET or COM objects using HDevEngine This is described in detail in the Programmer s Guide part VI on page 169 e Export of an application as C C Visual Basic Visual Basic NET or C source code Finally you can export an application developed in HDevelop as C C Visual Basic Visual Basic NET or C source code This program can then be compiled and linked with the HALCON library so that it runs as a stand alone console application Of course you can also extend the generated code or integrate it into existing software Let s start with some facts describing the main characteristics of HDevelop 10 Introducing HDevelop 1 1 Facts about HDevelop HDevelop actively supports your application development in many ways With the graphical user interface of HDevelop operators and iconic objects can be directly se lected analyzed and changed within a single environment HDevelop suggests operators for specific tasks In addition a thematically structured operator list hel
319. position i2 split s1 in substrings at s2 extract substrings of s1 matching the regular expression s2 replace substrings of s1 matching the regular expression s2 with s3 select tuple elements from s1 matching the regular expression s2 return how many tuple elements in s1 match the regular expression s2 Table 7 9 String operations 7 5 7 String Operations 225 The result of the conversion is left justified within the field The result of a signed conversion always begins with a sign or lt space gt Ifthe first character of a signed conversion is not a sign a space character is prefixed to the result This means that if the space flag and flag both appear the space flag is ignored tt The value is to be converted to an alternate form For d and s see below conversions this flag has no effect For o conversion see below it increases the precision to force the first digit of the result to be a zero For x or X conversion see below a non zero result has 0x or OX prefixed to it For e E f g and G conversions the result always contains a radix character even if no digits follow the radix character For g and G conversions trailing zeros are not removed from the result contrary to usual behavior width An optional string of decimal digits to specify a minimum field width For an output field if the converted value has fewer characters than the field width it is padded on the left or right if the l
320. programs If you export such a program to a case insensitive target language e g Visual Basic NET the development environment will complain about multiple declarations Either plan ahead and avoid these variable names or use the Find Replace dialog to substitute conflicting variable names before exporting your program 8 8 4 for Loops HDevelop and the programming languages have different semantics for loops which may cause confu sion Because the problems are so rare and the generated code would become very difficult to understand otherwise the code generation ignores the different semantics These differences are 1 In the programming languages you can modify the loop variable e g by setting it to the end value of the condition to terminate the loop This can t be done in HDevelop because here the current value is stored inside the f or operator and is automatically updated when it is executed again 2 In the programming languages you can modify the step range if you use a variable for the increment This is also not possible with HDevelop because the increment is stored inside the for operator when the loop is entered 3 The last difference concerns the value of the loop variable after exiting the loop In the program ming languages it has the value with which the condition becomes false for the first time In HDevelop it contains the end value which was calculated when the loop was entered Looking at the me
321. propriate output control variable has to be added to the interface of each participating procedure 7 8 2 Exception Handling HDevelop supports dynamic exception handling which is comparable to the exception handling in C and C A block of program lines is watched for run time errors If an error occurs an exception is raised and an associated exception handler is called An exception handler is just another block of program lines which is invisible to the program flow unless an error occurs The exception handler may directly act on the error or it may pass the associated information i e the exception on to a parent exception handler This is also known as rethrowing an exception In contrast to the tracking method described in the previous section the exception handling requires HDevelop to be set up to stop on errors This is the default behavior It can also be turned on explicitly dev_set_check give_error 7 8 2 Exception Handling 241 Furthermore HDevelop can be configured to let the user choose whether or not an exception is thrown or to throw exceptions automatically This behavior is set in the preferences tab General Options gt Experienced User An HDevelop exception is a tuple containing data related to a specific error It always contains the error code as the first item The operator dev_get_exception_data provides access to the elements of an exception tuple o te o te l HDevelop
322. protected external or even a local procedure Click the button Password to change the edit status The following options are available Lock You can lock the protected procedure so its body cannot be accessed in the current session without supplying the password again Remove Selecting this option removes the password When the procedure is saved it is no longer pro tected For turning a protected external procedure into a local procedure without a password it is sufficient to activate the check box Local in the procedure interface dialog page 113 New password The password window appears and you assign the new password by the same process you used for the old one Cancel The operation is canceled without altering the status Warning When working with protected procedures be aware that the password cannot be reconstructed so be very careful not to forget it and not to repeat a typing error when assigning it Further in some situations protected external procedures behave differently from common external or local procedures In particu lar as they cannot be viewed and modified by unauthorized users they also cannot be copied printed or exported to any programming language however they can be duplicated using the menu entry Menu 5 5 Operator Window 125 Procedures gt Duplicate Additionally if a protected external procedure contains a call to an other procedure for which the interface was changed the procedure c
323. ps you to find an appropriate operator quickly An integrated online help contains information about each HALCON operator such as a detailed description of the functionality typical successor and predecessor operators complexity of the operator error handling and examples of application In addition the online help provides a search facility that allows to search the complete documentation of HALCON HDevelop comprises a program interpreter with edit and debug functions It supports standard programming features such as procedures loops or conditional statements Parameters can be changed even while the program is running HDevelop immediately displays the results of operations You can try different operators and or parameters and immediately see the effect on the screen Moreover you can preview the results of an operator without changing the program Several graphical tools allow to examine iconic and control data online For example you can extract shape and gray value features by simply clicking onto the objects in the graphics window or inspect the histogram of an image interactively and apply real time segmentation to select parameters Built in graphical assistants provide interactive interfaces to more complex machine vision tasks The assistants can also generate HDevelop code in the current program Variables with an automatic garbage collection are used to m
324. psis Arrange windows in a cascade 5 2 9 Menu Window 101 HDevelop unnamed loj x File Edit Execute Visualization Procedures Operators Suggestions Assistants Window AAG SSRBX BE gt D biele n gt e gt lolx MEE AI B x Enter Operator or Procedure J Y Parameters Figure 5 27 Cascaded window layout of HDevelop By selecting this item HDevelop arranges the currently open windows in a cascade The cascaded window layout is displayed in figure 5 27 5 2 9 7 SDI MDI Synopsis Switch between multiple document interface the default and single document interface The different modes are explained in section Main Window on page 43 g cs ral o E 2 D 0 102 Graphical User Interface ony 5 2 10 Menu Help Here you may query information about HALCON itself and all HALCON and HDevelop operators 5 2 10 1 Help Synopsis Open the online help window Shortcut lt F1 gt The help window provides access to the documentation of HDevelop and HALCON In particular the complete HALCON Reference Manual is available with extensive documentation of each operator An other possibility of requesting information about the current operator is pressing the button Help inside the operator window see section Operator Window on page 125 The help window is described in section Help Window on page 140 5 2
325. psis Select operators specific to HDevelop This menu contains several operators that help to adapt the user interface These operators offer the same functionality that you have using mouse interaction otherwise They are used to configure the environment from within a program Using these operators the program performs actions similar to the setting of a color in the parameter window opening a window in the menu bar or iconifying the program window with the help of the window manager All operators in this menu start with the prefix dev_ It has been introduced to have a distinction to the underlying basic HALCON operators e g dev_set_color and set_color The effects of each operator are described as follows dev_open_window dev_close_window dev_clear_window The operators dev_open_window and dev_close_window are used to open and to close a graphics window respectively During opening the parameterization allows you to specify the window s size and position The oper ator dev_clear_window clears the active window s content and its history This corresponds to the usage of the button Clear in the graphics window Please note that dev_open_window and dev_close_window are not exported to Visual Basic Visual Basic NET and C because here one HWindowXCtr1 is used dev_set_window_extents With this operator you can set the size and position of the active HDevelop graphics window dev_set_window This operator activates the graphics
326. r Variable lt x gt not instantiated HDevelop provides a pre defined variable named _ single underscore You can use this variable for output control parameters whose value you are not interested in Please note that it is not allowed to use this variable for HDevelop specific operators chapters Control and Develop in the HALCON 7 4 Operations on Iconic Objects 215 reference manual It is not recommended to use the variable _ in programs that will later be exported to a foreign programming language Instantiated variables contain tuples of values Depending on the kind of the variable the data items are either iconic objects or control data The length of the tuple is determined dynamically by the performed operation A variable can get new values any number of times but once a value has been assigned the variable will always keep being instantiated unless you select the menu item Menu Execute gt Reset Program Execution The content of the variable is deleted before the variable is assigned new values The concept of different kinds of variables allows a first coarse typification of variables control or iconic data whereas the actual type of the data e g real integer string etc is undefined until the variable gets assigned with a concrete value Therefore it is possible that the type of a new data item differs from that of the old 7 4 Operations on Iconic Objects Iconic objects are exclusively processed by
327. r input variables with no default value reasonable suggestions are inferred automatically by collecting previous output variables of the same type Therefore the name of the most recent matching output parameter will be suggested most recent being the closest predecessor of the current program line In this example only Clip is available Set MinGray and MaxGray to 0 and 30 respectively This will select the dark pixels in the image Click Apply This button executes the operator without adding it to the program Additionally it keeps the current parameters open for editing This way you can easily try different settings and immediately see the result The selected pixels the so called region are stored in the output variable Region which 4 5 Add Additional Program Lines 35 Operator Enter Operator or Procedure threshold y Parameters y Image Lir y image E Region Region y region y MinGray 128 y number real MaxGray 2 55 y number real Enter Apply Cancel Help Figure 4 5 Parameter suggestions is displayed in the variable window The region is an image mask White pixels are selected while black pixels are not The region is also displayed as an overlay in the graphics window The selected pixels are displayed in red unless you changed the default settings The selected threshold values are not perfect but we will correct this later For now click Enter to add the opera
328. rabber_param 71 126 set_line_width 271 set_paint 87 95 138 set_part 270 set_system 213 set_tposition 42 set_system 269 Shape 82 shape model load 189 shape model save 190 Shape models may cross the image border 205 Short Description 117 shortcuts 12 Show Caller 112 Show Code Preview 158 183 209 Show frames per second during live acquisition 161 Show Procedure 112 Show Processing Time 45 73 sigma_image 98 single document interface 45 skeleton 98 smooth_image 98 Snap 160 Sort by Name 131 162 Sort by Occurrence 131 Source Image Acquisition Assistant 159 split 227 standard model parameters 192 standard search parameters 203 Start Angle 195 status bar 44 Step 138 Step Forward 76 Step Into 76 Step Out 76 Step Over 75 Stop 76 161 stop 20 74 75 92 94 239 stop HDevelop program 74 program 74 strchr 226 string 278 concatenation 216 226 operations 223 special characters 212 strlen 226 strrchr 226 strrstr 226 strstr 226 Subpixel 204 Successors 98 Suggestions 118 Alternatives 98 Keywords 98 Predecessors 98 See also 98 Successors 98 suppress error messages 71 syntax 211 terminology 11 test image sequence delete 200 test image delete 200 test image display 201 test image select 201 Test Images 200 test images load 200 test model 186 199 test_region_point 96 threshold 34 35 37 149 throw 92 239 throw 239 Trigg
329. rameters for the current device Reset All Reset all connection parameters to their default values Image Display The following display options are available Display Image It is recommended to set the display mode to Normal unless you wish to make speed measurements Other modes are Volatile volatile grabbing and Disabled grabbing images without displaying them Show frames per second during live acquisition Usually the number of grabbed images and the acquisition time of the last image are displayed in the lower right corner of the window Ticking this check box causes the frame rate frames per second to be displayed in live mode 6 1 3 Tab Parameters Synopsis Set parameters for the selected image acquisition device This tab card is available if the image source is set to an image acquisition interface and a connection to an image acquisition device has already been established Press lt F1 gt for more information about the displayed parameters Interface Library The image acquisition interface library DLL or shared object used by the cur rent connection is displayed in this field Update Image If this check box is ticked a new image is acquired immediately after each parameter change Disable the check box if you want to change multiple parameters at once Refresh Refreshes the list of supported parameters and their value ranges This is useful for parameters with side affects Reset All Resets all parameters to
330. ration for all subsequent image processing applications The 6 2 1 Introducing the Calibration Assistant of HDevelop 165 Calibration Assistant needs to grab a set of images of a special calibration object placed in front of your vision system You can choose between a Full Calibration and a User Defined Calibration where known parameters are not calibrated again Calibration Plate This page 167 is an object whose shape is known precisely Calibration plates are available in different sizes Transparent calibration plates are available for applications requiring backlight illumination Which calibration plate is suited best depends on your machine vision task As a rule of thumb if you grab an image of the plane of measurement it should fill a fourth of the image For example if an image of the plane of measurement corresponds to an area of 80mm x 60mm you should choose the 30mm calibration plate The bigger calibration plates 100mm and 200mm made from aluminum come together with a file containing their exact measurements caltab_100mm descr and caltab_200mm descr Please copy this file to the subdirectory calib of the HALCON base directory you chose during installation This is not necessary for smaller ceramics calibration plates as they can be manufactured very precisely and can therefore use standard description files If you use your own calibration plate you have to create the description file yourself and copy it into the subdir
331. re Table 8 1 Special comments in HDevelop 268 Code Export HALCON C Hobject HALCON NET HObject HALCON COM HUntypedObjectX and for the class HTuple HALCON C HALCON NET the type Variant Visual Basic 6 and the class object HALCON COM for NET languages as they all have a destructor that removes the stored data Because C does not provide destructors the generated C code calls the operators clear_obj and destroy_tuple to remove the content of iconic output parameters Hobject and control output pa rameters Htuple before each operator call Memory issues regarding iconic objects in HALCON NET are described in section 8 4 3 3 Visual Basic NET and section 8 2 3 3 C Memory issues regarding iconic objects in HALCON COM are described in section 8 5 3 3 Visual Basic NET and section 8 3 3 3 C However problems arise if a tuple variant contains a handle for example for a file a window or for OCR In this case the memory of the handle is automatically removed but not the data to which it points In the exported programs this data therefore has to be removed explicitly by calling the corresponding operators close_ like close_ocr or close_ocv Please insert the close_ operators for all handles in use e before a new value is assigned to a handle and e at the end of the program 8 8 3 Variable Names Variable names in HDevelop are case sensitive i e x and X are distinct variable names in HDevelop
332. re Inspection Window on page 153 5 2 4 24 Save Window Synopsis Save the contents of the active graphics window to an image file See also dump_window The graphics window is saved as is including displayed regions and XLDs A file dialog pops up Select the destination directory enter a file name and select the output format TIFF BMP JPEG PNG or PostScript Afterwards click Save to actually save the image file or Cancel to abort g cs ral o E 2 D 0 90 Graphical User Interface 5 2 5 Menu Procedures The menu Procedures contains all functionality that is needed to create modify copy or delete HDe velop procedures To save procedures refer to the Menu File menu page 46 5 2 5 1 Create New Procedure Synopsis Create a new internal or external procedure Selecting this item opens the procedure interface dialog page 113 window The procedure interface dialog and the mechanism of creating procedures are described in section Creating and Editing Proce dures on page 112 5 2 5 2 Duplicate Synopsis Copy a procedure under a different name Selecting this menu item opens a dialog with which it is possible to copy existing procedures The dialog is displayed in figure 5 25 The combo box Source contains all local procedures in the current program and all external procedures In the Target text field the name of the copied procedure can be entered Clicking the OK bu
333. re chosen and a line is drawn between the two points for visualization Then image coordinates are converted into world coordinates using HALCON operator image_points_to_world_plane The Z coordinates will be 0 by definition because the measurement plane is the plane with the world coordinate Z 0 on reference plane The distance in world coordinates is determined using distance_pp To adapt this code to your application you typically exchange the mark centers for real points of interest Transform XLD Contours into World Coordinates In the example code the XLD contours are transformed into world coordinates and this 3D distance is calculated The points are visualized by a line First an XLD in image coordinates which relates to some interesting features in the image is obtained Here we simply generate a contour connecting the mark center points of the plate by using the HALCON operator gen_contour_polygon_x1d Then a conver tion into world coordinates is performed with HALCON operator countour_to_world_plane_xld Using the operator get_contour_x1d mark center points are extracted in world coordinates To adapt this code to your application you typically exchange the mark centers for real points of interest and adapt or remove the visualization For further information about pose estimation please refer to the section Pose Estimation of known 3D Objects With a Single Camera in the Solution Guide ITI C E
334. reas In this case the operator insert is used read_image Mreut mreut threshold Mreut Region 190 255 Areas for Radius 1 to 50 by 1 dilation_circle Region RegionDilation Radius area_center RegionDilation Area Row Column Areas Radius 1 Area endfor Please note that first the variable Areas has to be initialized in order to avoid a runtime error In the example Areas is initialized with the empty tuple Instead of insert the operator assign with tuple concatenation Areas Areas Area could be used because the element is appended at the back of the tuple More examples can be found in the program assign dev 7 5 3 Basic Tuple Operations 219 Operation Meaning HALCON operator t t1 t2 concatenate tuples tuple_concat 5 i tl get number of elements of tuple tuple_length S t 2 S v tli select element i of tuple t 0 tuple_select lt i lt t t i1 i2 select from element i1 to ele tuple_select_range ment 12 of tuple t t subset t i select elements specified in i tuple_select from t t remove t i remove elements specified ini tuple_remove from t i find t1 t2 get indices of all occurrences tuple_find of t2 within t1 or 1 if no match t uniq t discard all but one of succes tuple_uniq sive identical elements from t Table 7 5 Basic operations on tuples control data and the corresponding HALCON operators 7 5 3 Basic Tuple Operations A basi
335. reased until the matching succeeds in all test images 1 e until the recognition rate is 100 Now the greediness is increased as long as the matching suc ceeds This process is repeated until the optimum parameters are found You can lower the threshold of acceptance for the recognition rate manually using the corresponding slider or text box at the bottom of the dialog The Matching Assistant then displays the optimal minimum score and greediness and the reached recog nition time It automatically enters the parameter values in the dialogs Use Model gt Standard Model Use Parameters page 203 and Use Model gt Advanced Model Use Parameters page 204 re spectively If a test image can contain more than one object the term recognition rate is ambiguous Therefore you can choose between three recognition modes e In each test image at least one object is expected The recognition rate is calculated as the per centage of test images which fulfill this condition i e it is 100 if in all test images at least one object is found e In each test image as many objects are expected as specified in the parameter Maximum Number of Matches page 204 in the dialog accessed via Use Model gt Standard Model Use Parameters page 203 The recognition rate is calculated as the relation of found objects to the sum of expected objects over all images i e it is 100 if in all test images at least Maximum Number of Matches objects are fou
336. rect value each time the for operator is executed If the for loop is left too early e g if you press Stop and set the PC and the loop is entered again the expressions will be evaluated as if the loop were entered for the first time In the following example the sine from 0 up to 67 is computed and printed into the graphical window file name sine dev old_x 0 old_y 0 dev_set_color red dev_set_part 0 O 511 511 for x 1 to 511 by 1 y sin x 511 0 2 3 1416 3 255 disp_line WindowID old_y 256 old_x y 256 x old_x x old_y y endfor o te o te l 238 HDevelop Language In this example the assumption is made that the window is of size 512x512 The drawing is always done from the most recently evaluated point to the current point continue The operator continue forces the next loop cycle of a for while or repeat loop The loop condition is tested and the loop is executed depending on the result of the test In the following example a selection of RGB color images is processed Images with channel numbers other than three are skipped through the use of the operator continue An alternative is to invert the condition and put the processing instructions between if and endif But the form with continue tends to be much more readable when very complex processing with lots of lines of code is involved i Images while i Image Images i count_channels
337. ression s2 It returns a tuple with the same size as the input tuple exceptions exist when working with capturing groups see the description of tuple_regexp_match in the Reference Manual for details The resulting tuple contains the matching results for each tuple element of the input tuple For a successful match the matching substring is returned Otherwise an empty string is returned regexp_replace See also tuple_regexp_replace regexp_replace s1 s2 s3 replaces substrings in s1 that match the regular expression s2 with the string given in s3 By default only the first matching substring of each element in s1 is replaced To replace all occurrences the option replace_all has to be set in s2 see tuple_regexp_replace For example assign regexp_replace List jpg png List substitutes file names that look like JPEG images with PNG images 228 HDevelop Language Operation Meaning HALCON operator ti lt t2 less than tuple_less t1 gt t2 greater than tuple_greater t1 lt t2 lessor equal tuple_less_equal ti gt t2 greater ofequal tuple_greater_equal ti t2 equal tuple_equal ti t2 not equal tuple_not_equal Table 7 10 Comparison operations regexp_select See also tuple_regexp_select regexp_select s1 s2 returns only the elements of the tuple s1 that match the regular expression s2 In contrast to regexp_match the original tuple elements instead of the matching substrings are return
338. riables that are currently not displayed in the tab User Clicking a variable name adds the variable to the tab e Remove from User Tab The selected variables are removed from the tab User 5 6 1 Iconic Variables The iconic variables are represented by icons which contain an image a region or an XLD depending on the current value The icons are created depending on the type of data according to the following rules e For images the icon contains a zoomed version of them filling the icon completely Due to the zooming onto the square shape of the icon the aspect ratio of the small image might be wrong If there is more than one image in the variable only the first image is used for the icon Similarly for multi channel images only the first channel is displayed An exception is made for images with 3 channels These are displayed as color icons RGB The domain of the image is not reflected in the displayed icon Information about the domain can be obtained from the tool tip which appears when the mouse cursor points to the icon See figure 5 42 for an illustration e Regions are displayed by first calculating the smallest surrounding rectangle and then zooming it so that it fills the icon using a border of one pixel In contrast to images the aspect ratio is always correct This can lead to black bars at the borders The color used to draw the region is always white without further modifications except zooming e XLD data is displa
339. rogram Export The first step is to export the program using the menu File gt Export Here select the language C HALCON C and save it to file A file will be created that contains the HDevelop program as C 266 Code Export source code For every HDevelop procedure except the main procedure the exported file contains a C procedure with the corresponding name Iconic input and output parameters of a procedure are de clared as Hobject and Hobject respectively while control input and output parameters are declared as Htuple and Htuplex respectively All procedures are declared at the beginning of the file The program body of the HDevelop main procedure is contained in a procedure action which is called in function main action and main can be excluded from compilation by inserting the instruc tion define NO_EXPORT_MAIN at the appropriate position in the application Using the instruction define NO_EXPORT_APP_MAIN only the main procedure is excluded from compilation This can be useful if you want to integrate exported HDevelop code into your application through specific proce dure interfaces In that case there is typically no need to export the main procedure which was probably used only for testing the functionality implemented in the corresponding real procedures Besides the program code the file contains all necessary include instructions All local variables iconic as well as control are declared in
340. rogram Listing 99 Open Program 46 open test images 200 Open Variable Window 99 open_framegrabber 26 71 126 159 open_window 96 97 270 operating systems UNIX 250 266 Windows 250 266 operation precedence 233 operator data base 277 window 125 operator window 17 operator window 278 Operators Control 92 Develop 94 menu 92 submenus 96 Optimization 251 Optimization 198 optimize parameters 187 Optimize Recognition Speed 206 Organize Windows 100 288 Index orientation_region 40 Output Destination 148 Paint 82 parameter expressions 215 parameter Angle Extent 195 parameter Angle Step 196 parameter Column Scale Step 197 parameter Contrast 193 Parameter Documentation 118 parameter Greediness 204 parameter Last Pyramid Level 205 parameter Max Column Scale 195 parameter Max Row Scale 195 parameter Maximum Number of Matches 204 parameter Maximum Overlap 204 parameter Metric 197 parameter Min Column Scale 195 parameter Min Row Scale 195 parameter Minimum Component Size 194 parameter Minimum Contrast 198 parameter Minimum Score 203 parameter Optimization 198 parameter optimization 187 parameter Pyramid Levels 194 parameter Row Scale Step 197 parameter Start Angle 195 parameter Subpixel 204 Parameters 115 Image Acquisition Assistant 161 parameters reset 199 Paste 57 paste 107 PC 105 pixel type 144 pixel info 89 143 Plot Quality 138 Por
341. rom the list of external procedures Do you want to add the directory to the list of external procedure paths Yes No Cancel Figure 5 3 Adding a new directory to the list of external procedure directories e HDevelop local procedure dev If this file type is selected an empty main procedure is added to the target file and the procedure is added to the program as a local procedure This menu item is disabled if the main procedure is selected in the program window 5 2 1 9 Save All Synopsis Save the current program and all modified external procedures Shortcut lt Ctr1 Alt S gt If no name has been specified for the current program yet the behavior is similar to that of Save Program As In addition all modified external procedures marked with an asterisk in the pro gram window s combo box are saved 5 2 1 Menu File 51 5 2 1 10 Export Synopsis Export program code to a programming language or as a text file See also hdevelop convert command line switch Using this dialog you can select an export format and write parts of the current program to a file in that format The dialog is displayed in figure 5 4 The button next to the export file name opens a file selection dialog page 155 to select a file name and an export format The following formats are supported file extensions in parentheses e Text file txt e C c bsee also section 8 7 on page 265 e C cpp gt see also secti
342. rt IV on page 121 8 6 1 Basic Steps 8 6 1 1 Export The first step is to export the program using the menu File gt Export Here select the language Visual Basic 6 0 HALCON COM and save it to file The result is a new file with the given name and the extension bas 8 6 1 2 The Visual Basic 6 Template Tf the file has been exported using the option Use Export Template it is intended to be used together with the predefined Visual Basic 6 project that can be found in the directory HALCONROOT examples vb HDevelopTemplate This project contains a form with a display window HWindowXCtr1 and a button labeled Run The file generated by HDevelop has to be added to this project This is done by using the menu Project gt Add Module gt Existing and selecting the file Now the project is ready for execution Run the project and then press the button Run on the form which will call the exported code 8 6 2 Program Structure If the program has been exported using the option Use Export Template the file created by HDevelop contains a subroutine with the corresponding name for every HDevelop procedure except the main pro cedure which is contained in the subroutine action Otherwise the file is exported as a standalone 264 Code Export application Iconic input and output parameters of a procedure are passed as ByVal HUntypedObjectX and ByRef HUntypedObjectX respectively while control input and output parameter
343. s are passed as ByVal Variant and ByRef Variant respectively The subroutine RunHalcon contains a call to the subroutine action and has a parameter Window which is of type HWindowX This is the link to the window on the form to which all output operations are passed In addition another subroutine is created with the name InitHalcon This subroutine applies the same initializations that HDevelop performs Most of the variables iconic as well as control are declared locally inside the corresponding subroutines Iconic variables belong to the class HUntypedObjectX and control variables belong to Variant The subroutine RunHalcon has a parameter Window which is of type HWindowX This is the link to the window in the panel to which all output operations are passed Depending on the program additional subroutines and variables are declared 8 6 2 1 Arrays If a single value is inserted into a Variant array a special subroutine is called to ensure that the index is valid If the array is too small it is resized 8 6 2 2 Expressions All parameter expressions inside HDevelop are translated into expressions based on the HALCON tuple operators Therefore an expression might look somewhat complex In many cases these expressions can be changed to simple Visual Basic expressions For example TupleSub becomes a simple subtraction To ensure that the exported program has the same effect in Visual Basic this exchange is not applied automatica
344. s area at the left edge of the image is returned To obtain only the regions that coincide with the clips we need to further reduce the found regions based on a common criterion Analogous to the gray histogram tool which helps to select regions based on common gray values HDevelop provides a feature histogram tool which helps to select regions based on common properties or features Click Visualization gt Feature Histogram to open the tool The column Feature allows to select the feature that the region selection will be based on The default feature is area which is adequate in ES 1 Feature Histogram Clip ConnectedRegions 5 ol xj y 596 4100 2610 5964 E ares D o Insert Code AND X none y Y Update Histogram Options A Output Color E oreen gt Draw iil Output Destination Line Width 1 4 originating window x Statistics get rid of this region visualize feature selection Figure 4 9 Selecting regions with a similar area in the feature histogram to f E E o o fo a 40 Programming HDevelop this case The actual clips are all the same size thus the area of the regions is a common feature In the feature histogram the horizontal axis corresponds to the values of the selected feature The vertical axis corresponds to the frequency of certain feature values Similar to the gray histogram
345. s is the link to the window on the form to which all output operations are passed In addition another subroutine is created with the name InitHalcon This subroutine applies the same initializations that HDevelop performs Most of the variables iconic as well as control are declared locally inside the corresponding subroutines Iconic variables belong to the class HObject and control variables belong to HTuple Depending on the program additional subroutines and variables are declared 8 2 2 1 Stop The HDevelop operator stop is translated into a subroutine in C that creates a message box This message box causes the program to halt until the button is pressed 8 2 2 2 Used Classes There are only four classes types that are used HTuple for control parameters and HObject for iconic data In addition there is the class HWindowControl It is used inside the project for the output window and a variable of class HTuple directs the output to this window Finally the class HOperatorSet is used as a container for all HALCON operators There is no need for other classes as long as the program has the same functionality as in HDevelop When editing a generated program you are free to use any of the classes of HALCON NET to extend the functionality 8 2 3 Limitations and Troubleshooting 255 8 2 3 Limitations and Troubleshooting Besides the restrictions mentioned in this section and in section 8 8 on page 267 please also check the de
346. s option is enabled and you click any of the execution buttons like Run or Step Over and there are unsaved changes in the current program the program will be saved before being executed Use this option with care You usually do not want to select this option if you are experimenting with a program e g when trying out different parameter settings Number of recent program files The number of recent program files that are displayed in the menu Menu File gt Recent Programs can be adjusted by altering this value Show recent program files If you select the option Only available the list of recent programs contains only programs that are currently available This option is useful if the list is likely to contain files from network drives that might be disconnected at times Encoding for saving HDevelop programs and procedures HDevelop can save programs and procedures in two different encodings Upon loading HDevelop detects the used encoding automatically It is recommended to use UTF 8 encoding Unicode if the program contains international characters that exceed the ASCII standard However in order to load programs in older versions of HDevelop you have to set the encoding to Native Precision for displaying real values This option sets the number of significant digits that are displayed in the variable window page 129 and variable inspection windows see Inspecting and Editing Variables on page 134 Display string value
347. s window PS Gray Histogram image TS Fe 40253 J 255 o j 1 i i j t 1 L I le 255 Operation Channel Min Max EX Threshold o 255 Insert Code Jrone 7 I Connection V Update Histogram Options Color colored 3 X Draw es alos Line Width 1 originating window _A Statistics Gray Values Number Percent Peak 200 40253 5 89995 Range 10 207 682260 100 Selection Wi 2S 682260 100 Outside o 0 Figure 5 54 Gray Histogram o Z o o 2 a 0 146 Graphical User Interface Whenever you do so the histogram of this image is computed and drawn and the tool records the graphics window from which the image was sent the originating window e Whenever image data is displayed overlaid with region data in a graphics window the graphics window does not need to be active for this you can click into any of the segmented regions and the histogram of the image within that region will be computed and shown If you click into a part of the image that is not contained in any of the overlaid regions the histogram of the entire image will be displayed e The same mechanism is used for regions that have gray value information e g image objects created by reduce_domain or add_channels Here the histogram of the image object you click into will be displayed Freeze Gray Histogram Sometimes it is desirable to suppress the upda
348. s with special characters quoted Special characters like n for a newline character in string values are usually interpreted in the variable window and the variable inspect window If this option is ticked special characters are displayed verbatim i e as they are entered See table 7 1 on page 213 for a list of special charac ters Precision for displaying mouse position values If set to a value greater than 0 subpixel mouse positions are enabled See Position Precision page 82 for more information 5 2 2 Menu Edit 71 General Options gt Experienced User Show HALCON Low Level Error Messages Low level errors are normally invisible for the user because they are transformed into more com prehensive error messages or simply ignored Activating this item generates a message box each time a low level error occurs Suppress error messages throw directly an HDevelop exception HDevelop normally displays a dialog when a run time error occurs unless this has been changed in the tab Runtime Settings gt Runtime Settings If an error occurs in a watched block of program lines surrounded by try catch the user may choose to cancel the program execution or to throw an exception i e continue the execution at the corresponding catch endtry block Activate this option if you always want exceptions to be thrown without any user intervention Ignore semantic type By default the parameter suggest
349. s you choose whether the polarity of the contrast is to be observed when comparing a test image with the model By default the polarity is used use_polarity i e the points in the test image must show the same direction of the contrast as the corresponding points in the model You can choose to ignore the polarity globally ignore_global_polarity at the cost of a slightly lower recognition speed In this mode an object is recognized also if the direction of its contrast reverses e g 1f your object can appear both as a dark shape on a light background and vice versa A third mode lets you ignore the polarity locally Cignore_local_polarity i e objects are also recog nized if the direction of the contrast changes only in some parts This mode can be useful e g if the object consists of a part with a medium gray value within which either darker or brighter sub objects lie Please note however that the recognition speed decreases dramatically in this mode especially if you allowed a large range of rotation page 195 198 HDevelop Assistants Finally you can choose to ignore the color polarity ignore_color_polarity to apply shape based match ing to multi channel images If you already loaded test images page 200 you can quickly test the effect of the selected parameter value via the menu item Inspect gt Determine Recognition Rate page 207 The Model Parameter Optimization After you cre
350. scription of the HDevelop operators in section 5 2 6 2 on page 94 8 2 3 1 Variable Names The export adds the prefix ho_ to all local iconic and hv_ to all local control variables respectively in order to avoid collisions with reserved words 8 2 3 2 Exception Handling In HDevelop every exception normally causes the program to stop and report an error message in a dialog window This might not be useful in C The standard way to handle this in C is by using the try catch mechanism This allows to access the reason for the exception and to continue accordingly Thus for HDevelop programs containing error handling dev_ set_check give_error the corresponding code is automatically included Every operator call for which it is assumed that the HALCON error mechanism is turned off is enclosed in a try block followed by a catch block The latter handles the exception and assigns the corresponding HALCON error number to the error variable activated by dev_error_var or to a local error variable otherwise Please note that a call of dev_ set_check give_error has no influence on the operator call The exception will always be raised This is also true for messages like H_MSG_FAIL which are not handled as exceptions in C for example 8 2 3 3 Memory Management The NET Framework s runtime environment CLR Common Language Runtime has a mechanism called garbage collector which is used by the CLR to remove no longer needed NET obj
351. selected files or whole directories More importantly it supports acquiring images from image acquisition devices that are sup ported by HALCON s image acquisition interfaces When an image acquisition interface is selected the corresponding device parameters e g the image format can be set After establishing a connection to the selected image acquisition interface images can be grabbed and displayed in the active graphics window Using live images the parameters supported by the selected interface can be explored interactively 6 1 1 Tab Source 159 When a suitable setup is achieved the settings of the assistant can be saved for later reuse The assistant can also be instructed to generate HDevelop code that will connect to the selected image acquisition interface set the specified parameters and grab images 6 1 1 Tab Source Synopsis Select from where to acquire images Image File s Activate this radio button to load images from files You can enter the names of image files in the text field Multiple file names are separated by a semicolon If an image with no path name or a relative path name is given the image files are searched in the directories specified by the environment variables HALCONROOT and HALCONIMAGES You can also enter the full path of an image directory to specify all images of the given directory If the check box Recursive is ticked the images of all subdirectories are specified as well Pr
352. sition Assistant page 158 enable Initialize Acquisition Once you are finished check the position of the insert cursor and click Insert Code page 183 to insert the code into your HDevelop program 6 2 4 2 The Browse button The Browse button on the Code Generation tab is similar to the Save button on the Results tab It can be used in order to create file names into which the calibration results can then be written when choosing the option Calibration Results File 6 2 4 3 Sample Usage Sample Usage shows you what is possible with your calibration data and provides code which you can adapt to your own purposes Choose the action you are interested in and the example code will be inserted into your program You have the choice between e Transform Measurements into World Coordinates e Transform XLD Contours into World Coordinates e Estimate Pose from Single Image and e Rectify Image Once you are finished check the position of the insert cursor and click Insert Code page 183 to insert the code into your HDevelop program 180 HDevelop Assistants Transform Measurements into World Coordinates In the example code the image coordinates of the first two mark center points are transformed into world coordinates and this 3D distance is calculated First the image coordinates of some points of interest lying in the reference plane are obtained Here simply the first two mark center points of the plate a
353. st 228 region 278 colors 81 empty 277 line width 81 shape 82 regiongrowing 98 regions visualization 81 regular expressions 227 Release Generated Code Lines 158 183 209 Remove 116 Remove from User Tab 131 repeat 92 236 238 repeat 236 replace Find Replace 58 reserved words 233 Reset 62 116 199 reset graphics window 83 Reset All 161 Reset Parameters 83 Reset Procedure Execution 78 Reset Program Execution 78 reset_obj_db 97 Resolution 160 Restrictions 251 255 257 259 262 265 return 92 121 122 239 ROI creation 190 row 44 Row Scale Step 197 Run 74 Run to Insert Cursor 75 Run Until Here 112 runtime status bar 44 Runtime error 252 Save 49 save local procedure 49 Save A11 50 Save Current Assistant Settings 182 190 Save Model 190 Save Procedure As 50 Save Program As 49 Save Window 89 scale range 195 scale step size 197 scale_image 149 SDI 101 SDI 45 Search Documentation 102 search object 201 search parameters advanced 204 search parameters standard 203 See also 98 Select Directory 159 Select File s 159 Select Graphics Window 84 select test image 201 Select 160 select_gray 153 select_obj 219 220 select_shape 133 151 153 select_shape_xld 151 semantics 211 sequence file 26 Set Breakpoint 77 Set Parameters 84 set_check 96 set_color 94 271 158 290 Index set_frameg
354. sted as output parameters of the proce dure The classification of variables in the selected program lines is performed separately for iconic and control variables If a variable is an input as well as an output variable it is assigned to the first category i e the corre sponding procedure parameter becomes an input parameter If according to the above rules a variable name would be suggested as an input as well as an output parameter it becomes an input parameter of the procedure In addition an output parameter with the variable name extended by Out is created As an illustration the following program lines are selected for a new procedure threshold Image Region 128 255 connection Region ConnectedRegions Then based on the selection scheme A11 In A11 Out the procedure body will read copy_obj Region RegionOut 1 1 threshold Image Region0ut 128 255 connection Region0ut ConnectedRegions If the option Replace selected program lines is checked the selected program lines are replaced by an appropriate call of the new procedure Otherwise the lines are kept and no procedure call is added In any case the selected program lines are copied to the body of the new procedure as stated above The newly defined procedure is now available for selection in the operator window The variables that were used to determine the procedure interface parameters are now being offered as input parameters for the procedure c
355. stem of the calibration plate 6 2 4 Generating Code This tab helps you to generate and insert code for calibrating and for using the calibration results in your HDevelop program The tab is subdivided into four parts e Calibration e Sample Usage e Variable Names page 180 e Code Preview page 181 Once you are finished with configuring the options check the position of the insert cursor and click Insert Code page 183 under Calibration or Sample Usage to insert the code into your HDevelop program Note that if you have already inserted code into your program and you click insert code again the previous code will be replaced regardless of the cursor position 6 2 4 Generating Code 179 6 2 4 1 Calibration Choose your Export Mode either e Calibration Procedure which exports the generated code e Calibration Data Tuple which exports the resulting calibration parameters CameraParameters and CameraPose as tuples e orCalibration Results File which writes the calibration results into the specified files and generates code lines for reading those files For the last one you can click the folder icons to browse for a stored file Subsequently select Parameter File and Pose File In order to save the calibration results to files it is necessary that e a successful calibration took place before and e a file name exists for both files To generate code for initializing the image acquisition when using the Image Acqui
356. stimate Pose from Single Image First the position of mark centers on the calibration plate is determined With known camera parameters one image is enough to determine the new pose using the HALCON operator camera_calibration This sample code always determines the pose of the calibration plate There is no further adaption possible Rectify Image First the desired width of the visible area in world coordinates in mm is chosen and converted to m Then set_origin_pose adjusts the origin so the plate is roughly centered The HALCON operator gen_image_to_world_plane_map generates the rectification map Finally images can be rectified using the rectification map by map_image To adapt this code to your application you typically change the scale and origin of the new image coordinate system 6 2 4 4 Variable Names For each calibration default variable names are chosen You can however use your own variable names and change variable names for 6 2 5 Calibration Assistant Reference 181 e Connection Handle e Image Object e Camera Parameters e Start Parameters e Loop Counter e Image Files e Camera Pose e Window Note These are variables which you might set before the generated code or use after the generated code Intermediate variables have fixed names starting with TmpCtr1 or Tmp0bj Once you are finished check the position of the insert cursor and click Insert Code page 183 to insert the code into your H
357. t The Search Parameter Subpixel The parameter Subpixel allows to select the accuracy with which the position orientation and scale are calculated If you select the value none the position is determined only with pixel accuracy and 6 3 3 Matching Assistant Reference 205 the accuracy of the orientation and scale is equal to the angle step size page 196 and scale step size page 197 respectively If you select the value interpolation the Matching Assistant examines the matching scores at the neigh boring positions angles and scales around the best match and determines the maximum by interpolation Using this method the position is therefore estimated with sub pixel accuracy The accuracy of the es timated orientation and scale depends on the size of the object The larger the size the more accurately the orientation and scale can be determined For example if the maximum distance between the center and the boundary is 100 pixel the orientation is determined with an accuracy of about 0 1 Because the interpolation is very fast you can select interpolation in most applications When you choose the values least_squares least_squares_high or least_squares_very_high a least squares approximation is used instead of an interpolation resulting in an even higher accuracy However this method requires additional computation time The Search Parameter Last Pyramid Level
358. t 160 pose bounds determine 207 Position Precision 82 Predecessors 98 preferences export 62 HDevelop ini persistence 62 import 62 Preferences 62 Pregenerate Shape Model 198 Print 54 print HDevelop procedure 54 HDevelop program 54 procedure 54 program 54 Procedure Name 115 Procedures 97 menu 90 procedures documentation 10 procedures HDevelop 10 export C 266 C 250 CH 254 256 Visual Basic 263 Visual Basic NET 259 261 external 11 hierarchy 11 local 11 main 10 250 254 256 259 261 263 266 Procedures menu Create New Procedure 90 Delete All Unused Local 91 Delete Current 91 Duplicate 90 Edit Interface 90 Edit Procedure 92 External Procedure Settings 92 Insert All As Local 91 Insert Used As Local 91 Make All External 91 program counter 17 program window 17 105 278 edit line 106 Properties 54 pull down menu 46 Pyramid Levels 194 pyramid levels lock model and model image 192 pyramid levels model 191 Index 289 pyramid levels model image 192 pyramid display 191 quality issues 172 Quit 55 Read Image 52 read_image 21 32 34 52 53 96 211 Recent Programs 46 48 recognition rate determine 207 recognition speed optimize 206 Recursive 159 Redo 56 reduce_domain 146 153 reference to assistant elements 181 188 References 118 Refresh 161 regexp_match 227 regexp_replace 227 regexp_select 228 regexp_te
359. t Standard Model Use Parameters page 203 The recognition rate is calculated as the relation of found objects to the sum of expected objects over all images in percent Before using this mode please check the value specified for the parameter Maximum Number of Matches page 204 If it is not set to 0 it should not be smaller than the maximum number of objects visible in a test image otherwise the recognition rate will be below 100 Note that if you select Maximum Number of Matches 0 and by mistake specify a lower num ber of visible objects than actually present in a test image a recognition rate gt 100 results To further extend this line of thought If for some reason in another test image an object is not found the two errors cancel each other out i e the recognition rate is 100 Therefore we recommend to check whether the correct objects are found via the dialog Test Images page 200 in the tab Model Use Determining the Pose Bounds When you click the button Run in the tab Inspect besides the recognition rate the Matching Assistant determines so called pose bounds i e the range of positions orientations and scales in which the object 208 HDevelop Assistants appears in the test images You can interrupt this process by clicking the button labelled Stop please note however that this event is processed only after the current search has finished If the test images cover the whole ranges of a
360. t select substring s it i2 tuple_str_bit_select split string regular expression match regular expression replace regular expression select regular expression test split s1 s2 regexp_match s1 s2 regexp_replace s1 s2 83 regexp_select s1 s82 regexp_test s1 s2 tuple_split tuple_regexp_match tuple_regexp_replace tuple_regexp_select tuple_regexp_test less than ti lt t2 tuple_less greater than ti gt t2 tuple_greater less or equal t1 lt t2 tuple_less_equal greater or equal ti gt t2 tuple_greater_equal equal ti t2 tuple_equal not equal ti t2 tuple_not_equal logical and 11 and 12 tuple_and logical xor 11 xor 12 tuple_xor 7 9 Summary of HDevelop operations 243 logical or 11 or 12 tuple_or negation not 1 tuple_not sine sin a tuple_sin cosine cos a tuple_cos tangent tan a tuple_tan arc sine asin a tuple_asin arc cosine acos a tuple_acos arc tangent atan a tuple_atan arc tangent2 atan2 al a2 tuple_atan2 hyperbolic sine sinh a tuple_sinh hyperbolic cosine cosh a tuple_cosh hyperbolic tangent tanh a tuple_tanh exponential function exp a tuple_exp natural logarithm log a tuple_log decadic logarithm log10 a tuple_log10 power function pow al a2 tuple_pow Idexp function ldexp al a2 tuple_ldexp minimum min t tuple_min element wise minimum min2 t1 t2 tuple_min2 maximum max t tuple_max element wise maximum max2 t1 t2 tuple_max2 sum function sum t tuple_sum mean val
361. t containing only the information characterizing the object This representation is then used when searching for the object in the test images Model Image This is the image containing your example of the object to be searched for This image should be a characteristic image of the object i e the object should appear in its default position and orientation and not be occluded furthermore the image should not contain clutter You can open this image via the menu item File gt Open Model Image page 189 Model Region of Interest ROI This is the region in the model image which contains the object to be found You can mark this region via the menu item Create Model gt Create ROI page 190 Test Image You can test the performance of the matching process by providing test images via the menu item Use Model gt Test Images gt Load Test Images page 200 These images should be representative images from your matching application i e the object should appear in all allowed variations of its position orientation occlusion and illumination Score When comparing a region in a test image with the model the Matching Assistant calculates a measure of similarity the so called score which ranges between 0 no similarity and 1 perfect similarity 6 3 2 How to Use the Matching Assistant of HDevelop By using the Matching Assistant you can set up and optimize your matching application quickly and easily in three steps 186 HDevelo
362. t is underlaid with an image or into a region that has gray value information e g from reduce_domain or add_channels both the shape and gray value features of that region will be displayed Finally if you have overlaid an image with a region but click into a part of the image that is outside the region only the gray value features of the entire image will be calculated Use the select tool of the graphics window to select a region or XLD The selected region or XLD is highlighted in the graphics window The corresponding variable name and index are displayed in the title of the feature inspection window The gray value features of a multi channel image are calculated from all channels independently The tree on the left side of the feature inspection window groups the features into several categories At the top most level the following groups of features are distinguished e Region features This group contains features that describe the selected region e g area center and orientation e Gray value features The feature values of this group are calculated from the gray values of the image under the selected region e g minimum and maximum gray value mean gray value anisotropy and entropy g cs ral o E 2 D 0 154 Graphical User Interface select selected region mectedRegions 2 w feature value of selected region visualization specified range FEE ve pepeyl ina
363. t of the terminology explained here will have become second nature to most users and may most likely be skimmed over Mouse Usage click A single click with the left mouse button e g to mark and select items or to activate buttons To select multiple items hold down the lt Ctr1 gt key and click the desired items To select many items from a list click the first item hold down the lt Shift gt key and click the last item All intermediate items are then also selected double click Two quick successive clicks with the left mouse button e g to open dialogs of selected items Double clicks are mostly shortcuts for single clicks followed by an additional action right click A single click with the right mouse button to access additional functionality of the user interface e g context sensitive menus Clicking the right mouse button also ends interactive drawing functions in HDevelop drag Keeping the left mouse button pressed while moving the mouse and finally releasing the mouse button Typically used to move items resize windows select multiple items at once e g program lines or to draw shapes c 2 O 3 3 o ba E Introducing HDevelop drag and drop HDevelop supports drag and drop of image files and HDevelop programs from other applications You can e g drag an HDevelop program icon from a file browser and drop it on the HDevelop window to load it middle mouse button With three button mice the middle m
364. t pixel types The size of the region is smaller or equal than the size of the image arrays The fregion determines all image points that should be processed Iconic object Generic implementation of ficonic data in HALCON integer is the type name for integer numbers Operator data base The operator data base contains information about the HALCON operators It is loaded at runtime from the binary files in HALCONROOT help gt i o 0 0 2 0 278 Glossary Program window In HDevelop the program window contains the program It is used to edit copy delete and paste lines and to run or debug the program Operator window In the operator window of HDevelop the parameters of the selected operators can be entered or modified Real is the type name for floating point numbers They are implemented using the C type double 8 bytes Region A region is a set of image points without gray values A region can be imagined as a binary image mask Regions are implemented using runlength encoding The region size is not limited to the image size see also set_system clip_region true false in the HALCON reference manual String is the type name for character strings A string starts and ends with a single quote in between any character can be used except single quote The empty string consists of two consecutive single quotes The maximum length of a character string is limited to 1024 characters Tuple A tuple
365. t returns the value of an environment variable Input is the name of the environment variable as a string ord gives the ASCII number of a character as an integer chr converts an ASCII number to a character ords converts a tuple of strings into a tuple of ASCID integers chrt converts a tuple of integers into a string 7 5 14 Operation Precedence See table 7 17 for the precedence of the operations for control data Some operations like functions t etc are left out because they mark their arguments clearly 7 6 Reserved Words The identifiers listed in table 7 18 on page 235 are reserved words and their usage is strictly limited to their predefined meaning They cannot be used as variable names 7 7 Control Flow Operators The operators introduced in this section execute a block of operators conditionally or repeatedly Usually these operators come in pairs One operator marks the start of the block while the other marks the end o te o te l 234 HDevelop Language band bxor bor and xor or ae P SS h unary minus not Table 7 17 Operation precedence increasing from top to bottom The code lines inbetween are referred to as the body of a control flow structure When you enter a control flow operator to start a block HDevelop also adds the corresponding closing operator by default to keep the program code balanced In addition the IC is placed betw
366. t the visualization parameters of the active graphics window to the default settings Here the display parameters of the active graphics window are set to their initial state as defined in the preferences see page 62 The only exception is the size of the window To clear the history of previously displayed objects use Clear Graphics Window To set the size use Window Size g cs ral o E 2 a a 5 0 84 Graphical User Interface 5 2 4 18 Set Parameters Synopsis Set visualization parameters of the active graphics window with interactive preview This menu entry opens the window Visualization Parameters which allows convenient access to the visualization settings of the active graphics window Most of the settings are also available as indi vidual menu entries in the menu Visualization but some more advanced settings are only provided in this window Furthermore an interactive preview is provided which visualizes the current settings e Select Graphics Window only with multiple graphics windows Keep in mind that each graphics window keeps its own private set of visualization settings When multiple graphics windows are opened in the current session you can switch between the settings of the different graphics windows by selecting the corresponding window handle lization Parameters io x Select Graphics Window lt 31 1 Pen Lut Paint zoom Draw Fill C margin Shap
367. te Now set Operation to Threshold and interactively drag the two vertical bars until you achieve the desired segmentation result The pa rameters of the threshold operation can now be read off the two vertical lines If you want to select threshold parameters for an image that is derived from another image but want to display the segmentation on the original image e g if you want to select thresholds for a gradient image two different possibilities exist First you can display the derived image open the histogram tool deselect Update display the original image and then select the appropriate thresholds This way only one window is needed for the visualization For the second possibility you can display the derived image in one window activate another window or open a new window display the original image there activate the first window again open the histogram tool activate the second window again set Output Destination to active window and select your thresholds Although in this case it is not necessary to deselect Update it is advantageous to do so because this prevents the histogram from being updated if you click into a graphics window accidentally Multiple Threshold Operations You can combine as many threshold operations as you like If multiple operations are visualized at the same time the display depends on the combo box below the table of op erations If none is selected the results of the different threshold operations
368. terface Do ton los _ Language English en_L Procedure Name Type IV Local Parameters E Reset A input amp El 2 iconic fer aa 1 El control input B El output E add new parameter Figure 5 31 Creating a new procedure 5 4 3 1 Procedure Interface Dialog The interface of the current procedure can be viewed and modified in a separate window the procedure interface dialog To open this dialog click the button at the top of the program window This button performs the same action as the menu item Menu Procedures gt Edit Interface The procedure interface dialog enables you to create new and edit existing procedures Using the up per buttons of this dialog you can select the data associated with the current procedure The button Interface provides access to the procedure name its type and its parameters The remaining buttons provide access to the general documentation of the current procedure General Documentation and the documentation of its parameters Parameter Documentation The documentation of the procedure may be entered in multiple languages The language used for displaying the procedure documentation in the online help depends on the language set in the preferences of HDevelop To edit the procedure documentation in a specific language select the corresponding entry from the drop down list Language You can step through the individual tab cards of the dialog using
369. tes and integer becomes the C type long 4 or 8 bytes string A string is a sequence of characters that is enclosed in single quotes The maximum string length is limited to 1024 characters Special characters like the line feed are represented in the C like notation as you can see in table 7 1 see the reference of the C language for comparison You can enter arbitrary characters using the format xnn where nn is a two digit hexadecimal number or using the format Onnn where nnn is a three digit octal number Less digits may be used if the string is unambiguous For example a line feed may be specified as xa unless the string continues with another hexadecimal digit 0 F For example The string Sobel s edge filter has to be specified as Sobel s edge filter A Windows directory path can be entered as C Programs MVTec Halcon images boolean The constants true and false belong to the type boolean The value true is internally represented by the number 1 and the value false by 0 This means that in the expression Val 7 2 Control Types and Constants 213 Meaning Abbreviation Notation line feed NL LF n horizontal tabulator HT t vertical tabulator VT v backspace BS b carriage return CR r form feed FF f bell BEL a backslash single quote 2 A arbitrary character hexadecimal xnn arbitrary character octal Onnn Table 7 1 Surrogates for special characters true the effective v
370. the NET interface of HALCON A detailed description of this interface can be found in the Programmer s Guide part III on page 83 8 4 1 Basic Steps 8 4 1 1 Export The first step is to export the program using the menu File gt Export Here select the language Visual Basic NET HALCON NET and save it to file The result is a new file with the given name and the extension vb 8 4 1 2 The Visual Basic NET Template If the file has been exported using the option Use Export Template it is intended to be used together with the predefined Visual Basic NET project that can be found in the directory ZHALCONROOT examples vb net HDevelopTemplate This project contains a form with a display window HWindowControl and a button labeled Run Add the file generated by HDevelop to the project in the Solution Explorer Add Existing Item Now the project is ready for execution Run the project and then press the button Run on the form which will call the exported code Additional information about using the template can be found in the Programmer s Guide section 11 4 1 on page 114 8 4 2 Program Structure 259 8 4 2 Program Structure If the program has been exported using the option Use Export Template the file created by HDevelop contains a subroutine with the corresponding name for every HDevelop procedure except the main pro cedure which is contained in the subroutine action Otherwise the file is exported
371. the arrow buttons at the bottom of the dialog OK Activating the button OK at the bottom of the dialog either creates a new procedure or commits the changes made in the procedure interface depending on whether the interface dialog was invoked in order to create a new procedure or to modify an existing procedure In the latter case not only g cs ral o E 2 a a 5 0 114 Graphical User Interface the interface itself might be changed but also the procedure s program body and variable lists as new variables might have been added or existing variables might have been removed or renamed If you change the interface of an external procedure be aware of the fact that other programs containing it do not update the procedure calls When loading these programs the procedure calls are disabled If the changes were applied to a procedure that is called from inside a protected external procedure that procedure call is not even updated in the current program Cancel This button dismisses the dialog Any changes to the interface or the documentation of the edited procedure are lost with the exception of the editing status see section Protected External Procedures on page 123 Apply Applies the changes in the dialog just like pressing OK without closing it Help Displays the online help of the current procedure 5 4 3 Creating and Editing Procedures 115 Interface Procedure Name This text fi
372. the corresponding procedures Iconic variables belong to the class Hobject and all other variables belong to Htuple Please note that in the current version the generated C code is not optimized for readability It is output such that it always produces identical results as the HDevelop code 8 7 1 2 Compiling and Linking in Windows Environments The next step is to compile and link this new program In the Windows environment Visual C is used for the compiling and linking Example projects can be found in the directory Z HALCONROOT examples c If you want to use HALCON you have to include the libraries halconx1 1ib d11 and halconcxl 1lib d11 instead of halcon 1ib d11 and halconc 1ib d11 in your project see the Programmer s Guide chapter 18 on page 159 for more details 8 7 1 3 Compiling and Linking in UNIX Environments To compile and link the new program called e g test c under UNIX you can use the example makefile which can be found in the directory HALCONROOT examples c by calling make TEST_PROG test Alternatively you can set the variable TEST_PROG in makefile to test and then just type make You can link the program to the HALCON XL libraries by calling make TEST_PROG test XL 1 or just type make XL 1 if you set the variable TEST_PROG as described above For more details see the Programmer s Guide chapter 18 on page 159 8 8 General Aspects of Code Generation 267 8 8 General Aspects of Code Ge
373. the full operator call up to the closing parentheses Again typing ahead updates the list of suggestions accordingly The remaining entries are suggestions for the first parameter of the operator call At this point press lt Tab gt to select the first suggestion read_image Image fabrik or press lt Up gt or lt Down gt to step through the list entries read_image read image image Image filename read FileName fabrik Image Image and press lt Tab gt or lt Return gt to select the highlighted entry Then enter a comma or press lt Tab gt again to get suggestions for the second parameter read_image Image al read image image Image filenrame read FileName fabrik ES Browse fabrik monkey imreut Note the browse button in the suggestion list It opens up a file selection dialog page 155 to specify the file name parameter In this example we want to load the image clip so none of the suggestions fits Just type the file name in single quotes clip and press lt Tab gt to complete the parameter list The closing parenthesis is inserted automatically read_image Image elip Special Keyboard Shortcuts in the Full Text Editor General lt F1 gt open the reference documentation of the oper ator or procedure call of the current line lt Tab gt cursor at the beginning of line adjust indenta tion of current line selected text indent corresponding code li
374. the icon to switch to zoom in Set image size Clicking this icon sets the image size to the shown value The value can be selected from the menu attached to the small arrow See section Image Size on page 80 for additional information Set window size Clicking this icon sets the window size to the shown value The value can be selected from the menu attached to the small arrow See section Window Size on page 80 for additional information la Toggle 3D plot mode g cs ral o E 2 a a 5 0 140 Graphical User Interface 5 Ag Active graphics window e Non active graphics window Click the icon to activate the corresponding graphics window Only one graphics window may be active any given time If you want to specify display parameters for a window you may select the menu item Visualization in the menu bar Here you can set the appropriate parameters by clicking the desired item see section Menu Visualization on page 79 The parameters you have set this way are used for the active window The effects of the new parameters will be applied directly to the last object of the window history and alter its parameters only 5 8 Help Window The help window provides access to the integrated online help of HDevelop The window is split in two areas On the left navigational panels are available as tab cards They are described below On the right the online help itself is displayed Anyone fam
375. the image source In the default setting images are acquired from files This is described in the following section Alternatively images are acquired from an image acquisition device e g a camera This is described in section 3 3 2 on page 25 3 3 1 Acquiring Images From Files or Directories You can specify a selection of image files or a directory to load images from Make sure the radio button Image File s is selected in the tab card Source You can directly enter image names or the name of a directory into the text field Multiple image names are separated by a semicolon Usually it is more convenient to use one of the following buttons c 2 a 5 y lt o a 24 Acquiring Images with HDevelop Select File s HDevelop opens a file selection dialog in the current working directory displaying the image files sup ported by HALCON Multiple image files can be selected by holding down the lt Ctr1 gt key while click ing additional image files Click Open to confirm the selection The first selected image is displayed in the active graphics window Select Directory HDevelop opens a directory browser It is not possible to select multiple directories Confirm your selection by clicking Open or OK The first image from the selected directory is displayed in the active graphics window If the check box Recursive is ticked all subdirectories of the specified directory are scanned for images as well View
376. the middle column It assigns a new password to the selected procedures regardless if the previous passwords were different Please note that password changes or moving procedures from or to the first column require the corre sponding procedures to be saved See Save page 49 and Save A11 page 50 loxi AT User Interface AE External Procedures amp General Options 89 Visualization Settings S Runtime Settings Procedures Manage Passwords Procedure Use Unresolved Procedure Calls 4 Unprotected Procedures Unlocked Protected Procedures Locked Protected Procedures compose_test_index compare_control decompose_test_index compare_iconic determine_xld_type compare_images get_image_files compare_objs set_testsystem gt p compare_regions compare_tuples compare_xlds Change Password Figure 5 15 External Procedures gt Manage Passwords 5 2 2 Menu Edit 69 AZ User Interface Directories External Procedures Manage Passwords Procedure Use Unresolved Procedure Calls E External Procedures Show the names of procedures that are used or not used by the loaded program or a selected procedure amp General Options main y used unused I local IV external QD Visualization Settings 3 Runtime Settings p_do_3d_matching_clamps ls p_do_locate_engine_parts lo p_do_detect_road_signs jio p_do_check_blister_mixed u p_do_ecc200_finder_pattern_tol
377. the program i e the program is finished try catch endtry This control flow structure enables dynamic exception handling in HDevelop The program block between the operators try and catch is watched for exceptions i e runtime errors If an exception occurs diagnostic data about what caused the exception is stored in an exception tuple The exception tuple is passed to the catch operator and program execution continues from there The program block between the operators catch and endtry is intended to analyze the exception data and react to it accordingly If no exception occurs this program block is never executed See section Error Handling on page 239 and the reference manual e g the operator try for detailed information throw The operator throw allows to generate user defined exceptions 7 8 Error Handling This section describes how errors are handled in HDevelop programs When an error occurs the default behavior of HDevelop is to stop the program execution and display an error message box While this is certainly beneficial at the time the program is developed it is usually not desired when the program is actually deployed A finished program should react to errors itself This is of particular importance if the program interacts with the user There are basically two approaches to error handling in HDevelop e tracking the return value error code of operator calls e using exception handling A major differ
378. the program tuple dev The HALCON operators that correspond to the basic tuple operations are listed in table 7 5 on page 219 Note that these direct operations cannot be used for iconic tuples i e iconic objects cannot be selected from a tuple using and their number cannot be directly determined using For this purpose however HALCON operators are offered that carry out the equivalent tasks In table 7 6 you can see tuple operations that work on control data and which are applied via assign or insert and their counterparts that work on iconic data and which are independent operators In the table the symbol t represents a control tuple and the symbols p and q represent iconic tuples 7 5 4 Tuple Creation The simplest way to create a tuple as mentioned in section 7 2 on page 212 is the use of constants together with the operator assign or in case of iconic data one of its equivalents shown in table 7 6 assign empty_tuple assign 4711 one_integer assign 4711 0 815 two_numbers This code is displayed as empty_tuple one_integer 4711 two_numbers 4711 0 815 7 5 4 Tuple Creation 221 This is useful for constant tuples with a fixed small length More general tuples can be created by successive application of the concatenation or the operator insert together with variables expressions or constants If we want to generate a tuple of length 100 where each element has the value 4711 it might be d
379. the search result or the corresponding menu entries or tool bar icons Cut page 56 Copy page 57 Delete page 57 Activate page 57 and Deactivate page 58 60 Graphical User Interface e Find Replace Find Replace Variables Operators Texts Search for threshold y Find Find All Replace y Replace Replace All Find Parameter Scope Al Program Current Procedure Options Case Sensitive J Whole Words I Backward Find Results p_do_ocr_color 25 threshold Green ForegroundRaw 0 220 p_do_ocr_color 34 bin_threshold ImageMean Cluster1 p_do_circles 12 fast_threshold Image Region 0 120 7 p_do_measure_rim 10 threshold Rim Dark O 128 p_do_clips 15 bin_threshold Clip Dark _do_pcb 19 dyn_threshold ImageOpening ImageClosing p_do_resistors 31 threshold DepthMean Resistor 158 255 n da vacictave 26 khrachald ManthMasn Gelder 176 152 zi Figure 5 9 Finding all occurrences of the search text Replacing Variable Names Click Variables to specify the search context Enter the search text and the replace text You can replace parts of variable names by keeping Whole Words unchecked Click Find until the desired line is found Afterwards click Replace to replace all occurrences of the search text in the matched line The next matching line is highlighted automatically Click Replace A11 to replace all occurrences of the search text in the specified scope It is
380. the selected operator can be specified and the operator can be executed entered in the current program or both You can also get online help for the selected operator from this window 3 Program window This window displays the current program It provides syntax highlighting with user definable colors The left column displays the program line numbers The small black triangle is the insert cursor which is where new program lines will be added In the following it is referred to as IC The green arrow is the program counter which marks the next line to be executed In the following the program counter is referred to as PC You can also add or remove break points in the current program in this column These will halt the program execution at user defined places so that intermediate results may be examined The program source can be edited directly in this window provided that the full text editor is en abled see section 5 4 on page 105 When adding new lines or modifying existing lines advanced autocompletion features speed up typing and help keeping the program consistent Program lines can also be modified by double clicking them and editing them in the operator window This is the classical way to edit HDevelop programs It is a more form based approach to program editing Furthermore different parameters can be easily tested in the operator window without changing the program Both the full text editor and the operator window can be used i
381. their default values Individual parameters can be reset by clicking the corresponding button displayed to the right of each parameter 162 HDevelop Assistants Parameter Grouping The available parameters are grouped by user parameters read only parameters action parameters and write only parameters The latter cannot be changed in the assistant and are listed only for reference The parameters of some of the interfaces are additionally grouped by category and visibility If grouping information is available the amount of displayed parameters can be reduced by choosing a subject matter from the down down list Category You can further filter the parameters by selecting a skill level from the down down list Visibility beginner expert or guru By default the parameters are sorted thematically You can also sort the parameters by name check box Sort by Name Setting Parameters The parameters are displayed in a tabular format Hover the mouse pointer over a table row to get the short description of the corresponding parameter as a tool tip The tool tip also includes the value range for numeric parameters min max The first column shows the parameter name The second column depends on the parameter type e If the parameter is editable its value can be entered into a text field This field may contain value suggestions as a drop down list Numeric values can be incremented decremented using the arrows next to the text field
382. this box to make the search case sensitive Whole Words By default program lines are matched even if the search text is only part of a word thus an operator search for threshold also matches operator calls to bin_threshold Check this box to find only exact matches Backward Check this box to reverse the search direction Finding Single Occurrences of the Search Text Enter the search text and click Find If there is no match the text field will blink shortly Otherwise the first matching program line in the current procedure is highlighted Each subsequent click of Find highlights the next matching program line If the last matching line of the current scope has been reached the text field blinks shortly The next click on Find starts over at the beginning g cs ral o E 2 D 0 Finding All Occurrences of the Search Text Enter the search text and click Find A11 All matched lines are listed at the bottom of the dialog along with the corresponding procedure name and line number Click on a search result to jump to the corresponding procedure and highlight the matching program line This function is recommended before doing a global replace to preview which program lines will be affected An example is displayed in figure 5 9 You can even select multiple lines from the search result by holding the lt Ctrl gt key The following actions may be performed for all selected lines either from the context menu of
383. this program is HALCONROOT examples hdevelop explore_halcon dev Running this program is highly recommended to get a good overview of the many application areas of HALCON HDevelop W stable 9 0 examples hdevelop explore_halcon dey 5 jol xj File Edit Execute Visualization Procedures Operators Suggestions Assistants Window Help DSI SESRVP DEO gt lesion PDE lala e C o x Graphics Window 3600 Status i l bE glada Bre Explore the Power of HALCON 99 c antz AALA 1 Match es found in 0 343 s roun x E 100 M o 3D Matching ia i P based on a CAD Model a Cancel set_color magenta play match_pose ShapeModel3DID Posel Wind peNo lt 9 isp_pause_sign WindowHandle 2 _seconds 2 76 endfor Als Free the 3D shape model if it is not longer needed 79 clear_shape_model_3d ShapeModel3DID 30 31 wait_seconds 4 82 dev_close_window dev undate one i np i Executed 454731 program lines in 301 443 s last wait_seconds 0 StatusBackground 1 361 x266 x3 xbyte IM 285 224 159 k 185 234 Figure 2 2 Explore the power of HALCON The example programs have been categorized by application area industry method and operator usage A special category New in version groups examples by their appearance in specific HALCON releases Browsing these categories you can quickly find example pro
384. ting of the histogram when new image data is available e g if you want to select thresholds for a gradient image but want to visualize the original image along with the segmentation see below In that case you can freeze the histogram by unchecking Update The currently displayed histogram is preserved until Update is checked again in which case the histogram will be re calculated from the active graphics window Gray Histogram Display The main part of the tool is the area in which the histogram of the image is displayed in blue This area contains static parts and parts that can be interactively manipulated The first static part is the horizontal coordinate axis which displays the gray values in the image For byte images this range is always 0 255 For all other image types e g real images the horizontal axis runs from the minimum to the maximum gray value of the image and the labeling of the axis is changed accordingly To the left of the display the vertical axis representing the frequency of the gray values is drawn The final static parts of the display are three gray arrows The two upward pointing arrows denote the maximum and minimum gray value of the image The downward pointing arrow denotes the peak of the histogram i e the gray value that occurs most frequently This data is displayed in textual form within the Statistics area of the display For int4 int8 or real images the peak value is displayed as a value range in th
385. tively Alternatively use the mouse wheel e Hold lt Ctr1 gt and drag the image to translate the view There are four different rendering methods texture shaded hidden_lines and contour_lines which can be selected from the drop down menu in the tool bar See set_paint for detailed information about the different methods The display quality may be fine tuned in the visualization parameters of the graphics window Right click into the graphics window select Set Parameters and open the tab card Paint Mode e Mode sets the rendering mode just like the drop down menu in the graphics window e Plot Quality allows to set the rendering quality in four steps On systems without proper display hardware acceleration a lower quality should be selected to speed up the display e Step sets the level of detail In general the lower the step value the higher the level of detail However if the rendering mode is set to contour_lines increasing the step value increases the level of detail e IfDisplay Grid is enabled the floor of the 3D plot is painted as a grid See also section Paint settings on page 87 for the other paint modes that may be selected in this window Special Keyboard Shortcuts in the Graphics Window lt Left Right Up Down gt move mouse cursor pixel lt Alt gt lt Left Right Up Down gt move mouse cursor 10 pixels lt Ctrl gt lt Left Right Up Down gt pan image pixel lt Ctrl1 gt lt A1t
386. to procedure call lt F7 gt see page 76 Step out of procedure lt F8 gt see page 76 Stop program execution lt F9 gt see page 76 Reset program execution lt F2 gt see page 78 Reset current procedure execution lt Shift F2 gt see page 78 Abort current procedure execution lt Shift F8 gt see page 78 Display visualization settings see page 84 Open zoom window see page 89 Open gray histogram window see page 89 Open feature histogram window see page 89 Open feature inspection window see page 89 Open help window lt F1 gt see page 102 5 4 Program Window 105 5 4 Program Window The program window see figure 5 28 is divided into three areas e The main part of the program window contains the program code of the current HDevelop proce dure See section 5 4 1 e The column at the left side displays line numbers It also contains the PC the IC and optionally one or more break points See section Program Counter Insert Cursor and Break Points on page 111 e At the top the displayed procedure can be selected from the drop down list The arrow buttons provide convenient access to previously displayed procedures If the current procedure is the main procedure and you select another procedure from the drop down list the left arrow button takes you back to the main procedure When you get there the right arrow button moves forward and displays the previously selecte
387. tor to the program window Contrary to clicking OK this does not execute the operator Note that the variable Region keeps its value but is no longer displayed in the graphics window Also the PC is not advanced indicating that the second line of the program is yet to be executed Adding program lines with Enter is especially useful if some of the input parameters use variable names that will be added to the program at a later time Successor Click on the just inserted program line to select it You can let HDevelop suggest operators based on the selected line Open the menu Suggestions gt Successors This menu is filled dynamically to show typical successors of the currently selected operator We want to split the selected pixels into contiguous regions Move the mouse pointer over the menu entries The status bar displays a short description of the highlighted operator Looking through the menu entries the operator connection looks promising so we click on it Any operator selected through this menu is transferred to the operator window Again the variable names suggested by HDevelop look reasonable so press lt Return gt This is equiva lent to clicking the OK button though this can be changed in the preferences of HDevelop This time two program lines are executed The threshold operation and the connection operation As noted above Clicking OK executes from the PC to the IC In the graphics window the contiguous regions calculate
388. try and layout to the default settings If you want to reset the window geometry as well you can start HDevelop with the following command line switch x File Name fl eel I User Interface JV External Procedures IV General Options JV visualization Settings Tl Tool Properties IV Layout cont Figure 5 11 Import 5 2 2 Menu Edit 63 hdevelop reset_preferences The preferences dialog contains a list of categories on the left and several related tab cards on the right The size and orientation of these elements are controlled by a splitter The available categories of pref erences are described in the following sections GUI Reference 64 Graphical User Interface User Interface gt Program Listing Font Specifies the font that is used in the program window Indent Size Specifies the number of spaces an indenting level in the program window accounts for In HDevelop the bodies of loops and conditionals are indented automatically Colors Specifies the colors used for syntax highlighting in the program window You can choose one of the predefined color schemes or set up your own by clicking on the colored buttons Changing any color automatically switches to the color scheme User defined Editor Settings HDevelop supports two methods for editing programs e Dialog based Editor Specifies the classical dialog based editing mode In this mode program lines are edited
389. tton Open Clicking Open in new HDevelop opens the program in a new instance of HDevelop which is useful if there are unsaved changes in the current program Either way you can keep the dialog open by checking the corresponding box beforehand This can be useful if you wish to scan through several example programs quickly 5 2 1 4 Recent Programs Synopsis Load recently used HDevelop programs Checks for Unsaved changes page 156 This submenu contains a list of the most recently used HDevelop programs Simply click on a program name to load it This menu may be customized in the preferences see General Options gt General Options 5 2 1 5 Insert Program Synopsis Insert parts of another HDevelop program into the current program Selecting an entry in this submenu opens a file selection dialog page 155 for the selection of an HDe velop program Insert All Synopsis Insert a complete HDevelop program into the current program The main procedure of the selected program is inserted at the IC All local procedures of the selected program are copied to the current program under their original name If a local procedure of that name already exists the suffix _COPY_1 or _COPY_2 _COPY_3 for subsequent imports is added to the imported local procedure All invocations of the renamed procedure are updated automatically If the current program already contains an external procedure with the same name the imported
390. tton creates a copy of the source procedure Cancel dismisses the dialog The copy retains the status local or external of the source procedure The copy of an external procedure is placed in the same directory as the source procedure duplicate Procedure 2 x Source Pg Target Figure 5 25 Duplicate Procedure Duplicating external procedures that are protected with a password see Protected External Procedures on page 123 is also possible The associated password is also used for the duplicated procedure 5 2 5 3 Edit Interface Synopsis Edit procedure interface This menu item opens the procedure interface window and displays the interface of the current procedure or the first procedure from the list if main is the current procedure The menu item has the same effect as the button Ein the program window page 105 The interface of external procedures that are protected with a password can only be edited after the corresponding password has been entered see section Protected External Procedures on page 123 5 2 5 Menu Procedures 91 5 2 5 4 Delete Current Synopsis Delete the current procedure If the current procedure is a local procedure it is deleted from the program and the main procedure becomes the current procedure All calls to the local procedure in the current program are marked as invalid code This item is disabled if the current procedure is the main procedure or if it is an e
391. ty 8 1 4 Limitations and Troubleshooting Besides the restrictions mentioned in this section and in section 8 8 on page 267 please also check the description of the HDevelop operators in section 5 2 6 2 on page 94 252 Code Export 8 1 4 1 Exception Handling In HDevelop every exception normally causes the program to stop and report an error message in a dialog window This might not be useful in C In addition there are different default behaviors concerning the result state of operators Messages In HALCON C only severe errors cause an exception handling which terminates the program and prints an error message This might cause problems with minor errors so called messages in HALCON These messages are handled as return values of the operators and can have the following values which are also available in HDevelop as constants H_MSG_TRUE H_MSG_FALSE H_MSG_FAIL H_MSG_VOID One of these messages is always returned indicating the status of the operator Normally the result is H_MSG_TRUE Some operators return H_MSG_FAIL like read_image or read_region to indicate that they could not open a file or there was no permission to read it In this case the programmer has to check the return value and apply some adequate action If the message H_MSG_FALSE is ignored errors like Halcon Error 4056 Image data management object ID is NULL will happen in successive operators because the predecessor operator did not calculate an
392. u are calibrating for the first time with your setup click the radio button Full Calibration Pose and all Camera Parameters If you are using a special setting or you have already calibrated your system before and want to re use your resulting parameters choose User defined Select Individual Parameters for Calibration 6 2 2 How to Calibrate with the Calibration Assistant 167 After having decided on your calibration task proceed with the details about your Calibration Plate Calibration Plate Parameters First choose the description file for your calibration plate and the calibration plate Thickness in mm The description file consists of the size of the plate and you have to choose a filename ending with _old if you are using an old plate without a black triangle in one of the edges you can update your plate by drawing the triangle in one of the edges With the parameter Thickness you can modify the position of the world coordinate system and the measurement plane which is located beneath the calibration plate surface by the value of Thickness in the Reference Image page 171 Then proceed to set the Camera Parameters Set Camera Parameters For setting up the camera parameters e first choose the Camera Model e then set the parameters for a full calibration or e set the parameters for a user defined calibration page 169 It is also possible to import parameters from a file If you should
393. ue mean a tuple_mean standard deviation deviation a tuple_deviation cumulative sum cumul a tuple_cumul median median a tuple_median element rank select_rank a i tuple_select_rank square root sqrt a tuple_sqrt radians to degrees deg a tuple_deg degrees to radians rad a tuple_rad integer to real real a tuple_real real to integer int a tuple_int real to integer round a tuple_round absolute value abs a tuple_abs floating absolute value fabs a tuple_fabs ceiling function ceil a tuple_ceil floor function floor a tuple_floor fractional part fmod ai a2 tuple_fmod element wise sign sgn a tuple_sgn sort elements sort t tuple_sort sort elements returns index reverse element order test for numeric value string to number environment variable character to ASCII number ASCII number to character sort_index t inverse t is_number v number v environment s ord a chr a tuple_sort_index tuple_inverse tuple_is_number tuple_number tuple_environment tuple_ord tuple_chr o te o te l 244 HDevelop Language tuple of strings to ASCII numbers ords s tuple_ords tuple of integers to string chrt i tuple_chrt random number rand a tuple_rand 7 10 HDevelop Error Codes 245 7 10 21000 21001 21002 21003 21010 21011 21012 21020 21021 21022 21023 21030 21031 21032 21033 21040 21041 21042 21043 21044 21050 21051 21052 21060 21061 21062 21063 2106
394. used clicking OK assigns the password Otherwise an error message is raised and you have to repeat the password assignment When a protected procedure is finally saved it is stored in a binary format When you start HDevelop the next time the protected procedure is locked i e when trying to edit the procedure e g by selecting it from the combo box in the program window a corresponding message is displayed in the program window See figure 5 37 for an example Additionally a password button is displayed in the program window Upon entering the correct password the procedure is temporarily unlocked and stays unlocked as long as you do not close HDevelop Changing the Edit Status of a Protected Procedure To change the status of a protected procedure you must first unlock it temporarily by entering the pass word Then you can use the procedure interface dialog page 113 to change the password or remove the g cs ral o E 2 D 0 124 Graphical User Interface rami ox da 2 EX disp_3d_coord_system WindowHandle CamParam Pose Co y E PES This procedure is locked For displaying and editing this procedure you must enter the password Figure 5 37 A locked external procedure LT x Choose new protection state for the procedure Remove New Password Cancel Figure 5 38 Changing the edit status of a protected procedure password to turn the protected external procedure into an un
395. uted with the appropriate calling parameters Generally the concept of using procedures inside HDevelop is an extension to the concept of calling HALCON operators since procedure and operator interfaces have the same parameter categories and the same rules apply for passing calling parameters Local and external procedures are differentiated in HDevelop Local procedures are stored inside the HDevelop program while external procedures are stored separately and therefore can be shared between different HDevelop programs and what is most advantageous the modification of an external procedure immediately affects all HDevelop programs using it In order to manage a large collection of procedures the procedures can be ordered in a hierarchical way i e procedures can be ordered by chapters and sections just like operators Furthermore external procedures can be protected by passwords so that they can be applied but not viewed or modified by unauthorized users 1 3 HDevelop XL In addition to the standard HDevelop there is also a variant called HDevelop XL which is based on HALCON XL The user interface is identical but underneath HALCON XL is optimized for large im ages In the remainder of this document when we refer to HDevelop you can substitute HDevelop XL if that is the variant you will be using 1 4 Terminology amp Usage HDevelop adheres to well established conventions and usage patterns regarding its graphical user inter face Mos
396. variable name Note that the reuse of a variable deletes the old content and replaces it with the new image Click OK to load the image into HDevelop The operator read_image is inserted at the specified insert position IC or PC The specified iconic variable is updated in the variable window and the image is displayed in the active graphics window Clicking Cancel aborts the operation 5 2 1 12 Cleanup Synopsis Clean up allocated resources that are no longer being used See also variable window gt context menu page 131 This menu item deletes all unused variables iconic and control data from the current procedure These are variables in the variable window that are no longer used in any operator or procedure call in the current procedure body This can happen after the deletion of program lines or after editing variable names because the corresponding variables are not deleted automatically You may use this menu item during a longer editing session to reorganize your variable window page 129 g cs ral o E 2 D 0 54 Graphical User Interface 5 2 1 13 Properties Synopsis Display various properties of the current program The tab card General displays file properties of the current program such as file name path creation and modification date and write permission It also shows the file size the number of lines of code used and unused local procedures used external procedures and used
397. w e External Procedures All external procedures are exported depending on the setting of the external procedure options see below The short description and chapter information of procedures are exported as comments Arbitrary code can be embedded with special comment lines see section 8 8 on page 267 Procedure Options Defines the export behavior for external procedures e Export Procedure Body Determines whether only the procedure declaration or both the declaration and the procedure body is exported Window Export Specifies the export behavior of HALCON windows e Use HALCON Windows Export as a stand alone project e Use Export Template HALCON NET and HALCON COM only Export as a project using the supplied project template Encoding Specifies the encoding of exported programs The following options are available e Native Export in the encoding defined by the operating system e UTF 8 Force export in UTF 8 encoding Unicode Keep dialog open Checking this box keeps the dialog open for subsequent exports 5 2 1 11 Read Image Synopsis Read an image from a selected directory See also read_image This submenu contains several directories from which images can be loaded The directory denoted by a single dot is the current working directory of HDevelop i e the directory HDevelop was started from Below that entry the directories specified by the environment variables HALCONROOT and HALCONIMAGES are display
398. w border Windows can be focused by clicking inside the window area This also raises the corresponding window to the front Windows that are completely covered by other windows can be brought to the front by selecting them from the Window menu The window title provides some buttons with additional functionality Clicking the icon in the left edge of the window title opens a menu from which all window management functions move resize mini mize can be selected The buttons on the right edge of the window allow to 1 minimize restore 2 maximize restore and 3 close the corresponding window from left to right maximize 101x menu minimize close Figure 1 1 Window title There is an alternative window mode called SDI see also section 5 1 on page 45 which delegates the functionality of the window title to the window manager 1 4 Terminology amp Usage 13 Abbreviations BP break point IC insert cursor GUI graphical user interface MDI multi document interface PC program counter SDI single document interface XLD extended line description see also chapter A on page 277 c 2 O El 3 o ba E 14 Introducing HDevelop Getting Started 15 Chapter 2 Getting Started D o 2 y s n D o o In this chapter the following topics are covered e running HDevelop e specifying command line switches e short introduction to the windows of HDevelop e running example programs
399. w severe the problem is A result of 0 indicates a very defective image feature whereas 100 equals ideal quality This can help you to improve your calibration result by deleting images which are not good enough and might lead to a higher error rate during the calibration process If you need a certain quality level you can set a Warn Level and the defects will be listed under Quality Issues The quality issues are detected by image tests and sequence tests If you want the program to run faster or if you do not need quality feedback you can change Image Tests and Sequence Tests either to Quick which performs less tests or None which does not perform any tests at all If the defects are too severe e g if the calibration marks or the even the calibration plate are not found the Calibration button will be grayed out making it impossible to calibrate unless all images of such poor quality are deleted from the list The test results referring to the calibration plate s tilting may be ignored if later measurements are always conducted in exactly the same plane In this case however the values for the Focal Length and Z are not correct each for itself but only in their combination The reason for this is that neither of these values can be determined for itself which leads to the result that if you get for example a Focal Length that is double the value that it should be Z will be half as high and vice versa Besides the further you place an object
400. will then open a list of operators matching that partial name This way you can easily select operators without having to type or even know the exact name Selection is done with the mouse or using the arrow keys to highlight the desired operator and pressing lt Return gt If you selected the wrong operator by accident you can reopen the list by clicking on the drop down arrow next to the operator name When entering a partial name operators commencing with that name appear at the top of the list Yindow Insert read_cam_par E Jo xi Enter Operator or Procedure read_cam_par bd read_data_code_2d_model read_fft_optimization_data Parameters E read_funct_1d read_gray_se E CamParFile EEE read image read_kalman fal CamParam CamPar read_ncc_model read_object_model_3d_dxf read_ocr read_ocr_class_mlp Enter Apply Cancel Help Figure 4 2 Matching operators after typing read_ and pressing lt Return gt 4 3 Specify Parameters After selecting an operator its parameters are displayed in the operator window They are grouped by iconic and control parameters The icons next to the parameter names denote the parameter type Input vs output see figure 4 3 The semantic type is displayed to the right of the parameters Parameters are specified in the text fields The first parameter gets the input focus Enter Clip into the text field Image The image will be stored in this variable Next enter
401. window containing the given ID This ID is an output parameter of dev_open_window After the execution the output is redirected to this win dow This operator is not needed for exported code in C or C because here every window operation uses the ID as a parameter The operator has no effect for exported code in Visual Basic Visual Basic NET and C dev_set_color dev_set_colored dev_set_color has the same effects as the menu item Menu Visualization gt Color page 81 dev_set_colored is equal to the menu item Menu Visualization gt Colored page 81 5 2 6 Menu Operators 95 dev_set_draw This operator has the same effects as the menu item Menu Visualization gt Draw page 81 dev_set_line_width For an explanation see the menu item Menu Visualization gt Line Width page 81 dev_set_lut For an explanation see the menu item Menu Visualization gt Lut page 82 dev_set_paint For an explanation see the menu item Menu Visualization gt Paint page 82 If you want to specify all possible parameters of a given paint mode you have to specify them as a tuple analogously to the HALCON operator set_paint dev_set_shape For an explanation see the menu item Menu Visualization gt Shape page 82 dev_set_part This operator adjusts the coordinate system for image region XLD and other graphic output This is done by specifying the upper left and the lower right corner coordinates This specified part is shown in the entire gra
402. xport option Use HALCON Windows is selected In the export of Visual Basic Visual Basic NET and C programs using the option Use Export Template all window operations are suppressed because the exported code is intended to work together with the corresponding template If you want to use more than one window in programs exported in this mode you have to modify the code and project manually Note that the export of programs containing multiple windows using the option Use HALCON Windows might be incorrect if the active graphics window was changed using the mouse during program execution It is recommended to use the operator dev_set_window explicitly to achieve the same functionality Window size In exported Visual Basic Visual Basic NET and C programs the size of the window on the form is predefined 512 x 512 thus it will normally not fit your image size Therefore you must adapt the size interactively or by using the properties of the window Displaying results Normally the result of every operator is displayed in the graphics window of HDevelop This is not the case when using an exported program It behaves like the HDevelop program running with the option update window off We recommend to insert the operator dev_display in the HDevelop program at each point where you want to display data This will not change the behavior of the HDevelop program but result in the appropriate call in the exported code When generat
403. xternal procedure 5 2 5 5 Delete All Unused Local Synopsis Delete all local procedures that are not used in the current program All local procedures that cannot be reached by any procedure call from the main procedure are deleted from the program If the current procedure is among the deleted procedures the main procedure becomes the current procedure 5 2 5 6 Insert Used As Local Synopsis Insert all used external procedures into the current program as local procedures The external procedures used in the current program are copied as local procedures The external proce dure files are left untouched 5 2 5 7 Insert All As Local Synopsis Insert all external procedures into the current program as local procedures All external procedures are copied to the current program as local procedures regardless if they are used or not The external procedure files are left untouched With this menu item you can change all of your procedures to become local If your program contains protected external procedures HDevelop issues a warning and inserts only the procedures that are not locked Individual procedures can be made local or external via the check box Local in the procedures interface see section Procedure Interface Dialog on page 113 For changing the edit status of an external procedure see section Protected External Procedures on page 123 5 2 5 8 Make All External Synopsis Convert all local procedures into externa
404. y 57 Cut 56 Deactivate 58 Delete 57 Find Again 61 Find Replace 58 Paste 57 Preferences 62 Redo 56 Undo 56 Edit Procedure 92 editor dialog based 106 full text 108 Editor Mode 64 else 234 235 else 234 elseif 92 235 Emergency backup 274 Enable the Context Menu in the Graphics Window 73 encoding 52 native 52 70 UTF 8 52 70 endfor 41 75 236 237 endfor 236 endif 75 109 234 235 238 endif 234 endtry 71 92 239 endtry 239 endwhile 75 109 236 endwhile 236 error handling 239 Error message 273 escape strings 212 Example 118 example programs 47 exception handling 240 throw directly 71 Exception handling 252 255 257 260 262 265 Execute menu 74 Execute menu Abort Procedure Execution 78 Call Stack 77 Clear All Breakpoints 77 Clear Breakpoint 77 Reset Procedure Execution 78 Reset Program Execution 78 215 Run 74 Run to Insert Cursor 75 Set Breakpoint 77 Step Forward 76 Step Into 76 Step Out 76 Step Over 75 Stop 76 exit 55 92 94 239 Exit Assistant 158 182 190 expert 162 exponential functions 230 Export 51 62 Index 285 UTF 8 encoding 52 External Procedure Settings 92 external procedure modified 49 false 277 Feature Histogram 89 Feature Inspection 89 Field 160 File 182 189 menu 46 file history 46 File menu Browse Examples 47 Cleanup 53 Export 51 Insert All 48 Insert Mainbody 49 Insert
405. y proportional to a 2x3x1 cube is used causes the application to install a private color map on an 8 bit display Index 281 Index asterisk external procedure 49 in window title 33 43 NET 253 258 avi 26 seq 26 Password 115 tt 267 267 267 267 267 223 IC 17 dev_set_check 240 PC 17 Source image 23 _COPY_1 48 Live 26 Detect 27 Reset All 27 Snap 26 File 26 Abort Procedure Execution 78 About 103 Acquisition menu Image Acquisition Assistant 163 Snap 159 Acquisition menu Live 159 Acquisition Mode 163 Activate 57 Adapt program 115 Add to User Tab 131 Add Variable 131 add_channels 146 153 Advanced 118 Advanced Autocompletion 64 advanced autocompletion 109 advanced model parameters 196 advanced search parameters 204 A11 130 Alternatives 98 Always Find 201 Angle Extent 195 Angle Step 196 Apply Immediately 83 area_center 40 assign 92 93 217 218 220 assistant calibration 157 Close Dialog 158 Delete Generated Code Lines 158 Exit Assistant 158 image acquisition 23 157 Insert Code 158 Load Assistant Settings 158 matching 157 Release Generated Code Lines 158 Save Current Assistant Settings 158 Show Code Preview 158 assistant settings load 182 190 assistant settings save 182 190 Assistants menu 99 assure success 202 Attention 118 Auto Disconnect 163 Auto 130 Auto Indent 112 autocompletion 109 AVI 26
406. yed using the coordinate system of the largest image used so far The color used for XLD objects is white on black background Because of the different ways of displaying objects you have to be aware that the coordinates cannot be compared The variable name is positioned below each icon They are displayed in the variable window in the order of occurrence or name from left to right If there is not enough space a scrollbar is created which you can use to scroll the icons g cs ral o E 2 D 0 132 Graphical User Interface Variable ew main Iconic Yariables Image Region ImageReduce ImageReduced image Control Variables type byte channels 1 size 704 460 with ROI of area 118631 center 197 644 323 781 Figure 5 42 Displaying information about an iconic variable with a reduced domain Displaying Iconic Variables Double clicking an icon with the left mouse button displays the data in the active graphics window If you use images of different sizes in a program the system uses the following output strategy for an automatic adaption of the zooming Every window keeps track of the size of the most recently displayed image If you display an image with a different size the system modifies the graphics window coordinate system in a way that the image is visible completely in the graphics window If a partial zooming has been activated before see section Graph
407. yramid level has the size 600x400 the second level image has the size 300x200 the third level 150x100 and so on The object is then searched first on the highest pyramid level i e in the smallest image The results of this fast search are then used to limit the search in the next pyramid image whose results are used on the next lower level until the lowest level is reached Using this iterative method the search is both fast and accurate You can inspect the model image pyramid together with the corresponding models via the menu item Create Model gt Display Image Pyramid page 191 which opens the corresponding dialog of the tab Model Creation We recommend to choose the highest pyramid level at which the model contains at least ten pixels and still resembles the original shape You can enter the value directly in the text field or by using the slider next to it Alternatively you can let the Matching Assistant select a suitable value automatically Note that the Matching Assistant can check whether the model contains enough points on the selected number of pyramid levels only when actually creating the model In case the model does not contain enough model points a corresponding error dialog appears Letting the Matching Assistant Select a Suitable Value for Pyramid Levels When you click the button Auto Select that is placed right beside the slider for the parameter Pyramid Levels the Matching Assistant selects a suitable num

Download Pdf Manuals

image

Related Search

Related Contents

FR-Notice AXTLI    Electrolux JUNO JCN 24181 User's Manual    Tiffen Pro-Mist and Warm Pro-Mist Filter User's Manual  

Copyright © All rights reserved.
Failed to retrieve file