set_paint — Define the gray value output mode.
set_paint defines the output mode for gray value display (single- or multichannel) in the window. The mode is used by disp_obj, disp_image, and disp_color.
This page describes the different modes that can be used for gray value output. It should be noted that the mode 'default' is the most suitable in almost all cases.
The hardware characteristics determine how gray values can be displayed. On a screen with one to seven bit planes, only binary data can be displayed. On screens with at least eight bit planes, it is possible to display multiple gray values. For binary displays, HALCON includes algorithms using a dithering matrix (fast, but low resolution), minimal error (good, but slow) and thresholding. Using the thresholding algorithm, the threshold can be passed as a second parameter (a tuple with the string 'threshold' and the actual threshold, e.g.: ['theshold', 100]).
Displays with eight bit planes use approximately 200 gray values for output. Of course it is still possible to use a binary display on those displays.
A different way to display gray values is the histogram (mode: 'histogram'). This mode has two additional parameter values: Row (second value) and column (third value). They denote row and column of the histogram center for positioning on the screen. The scale factor (fourth value) determines the histogram size: a scale factor of 1 distinguishes 256 gray values, 2 distinguishes 128 gray values, 3 distinguishes 64 gray values, and so on. The four values are passed as a tuple, e.g. ['histogram',256,256,1]. If only the first value is passed ('histogram'), the other values are set to defaults or the last values, respectively. For histogram computation see gray_histo. Histogram output honors the same parameters as operators like disp_region etc. (e.g. set_color, set_draw, etc.)
Yet another mode is the display of relative frequencies of the number of connected components (”component_histogram”). For information on computing the component histogram see shape_histo_all. Positioning and resolution are exactly as in the mode 'histogram'.
In mode 'mean', all object regions are displayed in their mean gray value.
The modes 'row' and 'column' allow the display of lines or columns, respecively. The position (row and column index) is passed with the second parameter value. The third parameter value is the scale factor in percent (100 means 1 pixel per gray value, 50 means one pixel per two gray values).
Gray images can also be interpreted as 3D data, depending on the gray value. To view these 3D plots, select the modes 'contourline', '3d_plot_lines' or '3d_plot_hidden_lines'. If your graphics card supports OpenGL, you can also choose '3d_plot' for a high quality plot that is well suited for interactive display (see update_window_pose on how to make the display interactive).
Three-channel images are interpreted as RGB images. They can be displayed in three different modes. Two of them can be optimized by Floyd-Steinberg dithering.
Vector field images can be viewed as 'vector_field'.
All available painting modes can be queried with query_paint.
Parameters for modes that need more than one parameter can be passed the following ways:
Only the name of the mode is passed: The defaults or the most recently used values are used, respectively.
All values are passed: All output characteristics can be set.
Only the first n values are passed: Only the passed values are changed.
Some of the values are replaced by an asterisk ('*'): The value of the replaced parameters is not changed.
If the current mode is 'default', HALCON chooses a suitable algorithm for the output of 2- and 3-channel images. No set_paint call is necessary in this case.
Apart from set_paint there are other operators that affect the output of gray values. The most important of them are set_part, set_part_style,set_lut and set_lut_style. Some output modes display gray values using region output (e.g. 'histogram','contourline','3d_plot_lines', etc.). In these modes, parameters set with set_color, set_rgb,set_hsi, set_pixel, set_shape, set_line_width and set_insert influence gray value output. This can lead to unexpected results when using set_shape('convex') and set_paint(WindowHandle,'histogram'). Here, the convex hull of the histogram is displayed.
optimal display on given hardware
gray value output
mean gray value
binary image, dithering matrix 4x4
binary image, dithering matrix 4x4
binary image, dithering matrix 4x4
binary image, dithering matrix 8x8
binary image, optimal gray value simulation
binary image, threshold: 128 (default)
binary image, any threshold: (here: 200)
gray value output as histogram. position default: max. size, in the window center
gray value output as histogram, any parameter values. positioning: window center (here (256,256)) size: (here 2, half the max. size)
output as histogram of the connected components. Positioning: default
output as histogram of the connected components. Positioning: (here (256, 256)) Scaling: (here 1, max. size)
output of the gray value profile along the given line. line: image center (default) Scaling: 50%
output of the gray value profile of line 100 with a scaling of 0.2 (20%).
output of the gray value profile along the given column. column: image center (default) Scaling: 50%
output of the gray value profile of column 100 with a scaling of 0.2 (20%).
Gray value output as height lines: the gray value difference per line is defined with the parameter 'Step' (default: 30, i.e. max. 8 lines for 256 gray values). The line can be displayed in a given color (see set_color) or in the gray value they represent. This behavior is defined with the parameter 'Colored' (0 = color, 1 = gray values). Default is color.
gray value output as height lines with a step of 15 and gray output.
gray values are interpreted as 3D data: the greater the value, the 'higher' the assumed mountain. Lines with step 2 (second parameter value) are drawn along the x- and y-axes. The third parameter (Colored) determines if the output should be in color (default) or gray values. To define the projection of the 3D data, use the parameters EyeHeight and EyeDistance. The projection parameters take values from 0 to 255. ScaleGray defines a factor by which the gray values are multiplied for 'height' interpretation (given in percent. 100% = factor 1). For extreme values of EyeHeight and EyeDistance the image can be shifted out of place. Use RowPos and ColumnPos to move the whole output. Values from -127 to 127 are possible.
line step: 5 pixel Colored: yes (1) EyeHeight: 110 EyeDistance: 160 ScaleGray: 1.5 (150) RowPos: 70 pixel down ColumnPos: 10 pixel right
like '3d_plot_lines', but computes hidden lines.
Gray values are interpreted as a 3D height field and displayed using OpenGL. The first parameter specifies the way in which the height field is displayed. The following modes are available:
The height field is displayed as a closed surface and colored using texture mapping. The texture is passed as the second channel (for a gray-valued texture) or as the second to fourth channel (for a colored texture) of the image to display.
The height field is displayed as a closed surface and colored using the current LUT.
The height field is displayed as a hidden line plot and colored using the current LUT.
Similiar to 'contourline' height lines are extracted and displayed at their actual height. Again the lines are colored using the current LUT.
The second parameter contains the step width, i.e. at what intervals samples in row and column direction are taken from the image. The smaller this parameter is chosen, the coarser the resulting height field. However, computation time increases while this parameter decreases. In the case of 'contour_lines' this parameter corresponds to the number of intervals the height range is divided into.
The third to sixth parameter are the four values of a unit quaternion, describing the orientation of the height field (see axis_angle_to_quat for more information on quaternions).
The seventh parameter is the zooming factor. Smaller values implicate higher zooming.
The last three parameters are the row, column, and height position of the actual center of view. This values must be scaled to the interval [-0.5, 0.5].
You can set the third or the seventh parameter in the tuple to 'auto'. Then, the zooming factor and the center of view are determined automatically such that the plot of the height field fills the window as good as possible. It is important that the part of the window is set correctly (using set_part) before set_paint is called. By setting the third value in the tuple to 'auto', the previous orientation (or the default one) is kept, by setting the seventh parameter to 'auto', the provided orientation is used. It is not possible to set any parameters after 'auto' in the tuple. Furthermore 'auto' will only work correctly if 'scale_plot' is set to 'true' using set_window_param. (Example: ['3d_plot','shaded',4,'auto'])
Depending on the speed of your graphics card, the display of the height field is performed at interactive rates. See the operator update_window_pose for an intuitive way of modifying the parameters of the 3D plot (e.g., with the mouse).
The colors of the axis are influenced by the colors set using set_rgb, set_color, and set_colored. The first three colors set this way are used as colors for row, column, and height axis (in this order).
Additional parameters concerning the 3D plot can be set using the operator set_window_param.
If you intend to use '3d_plot' on a Unix-like system, make sure you have sufficient permissions on your graphics device.
output the first channel.
output as RGB image with 'median_cut'.
color addition algorithm for RGB images: (three components necessary for disp_image). Images are displayed via a fixed color lookup table. Fast, but non-optimal color resolution. Only recommended on bright screens.
grid-scan algorithm for RGB images (three components necessary for disp_image). An optimized color lookup table is generated for each image. Slower than 'television'. Disadvantages: Hard color boundaries (no dithering). Different color lookup table for every image.
grid-scan with Floyd-Steinberg dithering for smooth color boundaries.
median-cut algorithm for RGB images (three components necessary for disp_image). Similar to grid-scan. Disadvantages: Hard color boundaries (no dithering). Different color lookup table for every image.
median-cut algorithm with Floyd-Steinberg dithering for smooth color boundaries.
Vector field images:
output a vector field. It is possible to display vector fields containing relative coordinates or vector fields containing absolute coordinates. This behavior is controlled via the optional parameter Mode. Possible values for Mode are 'auto' (the visualization depends on the semantic type of the vector field), 'absolute', or 'relative'. The default value is 'auto'. In the 'vector_field' mode, a circle with diameter CircleSize is drawn for each vector at the position of the pixel. Furthermore, a line segment is drawn with the current vector. The step size for drawing the vectors, i.e., the distance between the drawn vectors, can be set with the parameter Step. Short vectors can be suppressed with the parameter MinLength. The fourth parameter value scales the vector length. It should be noted that by setting 'vector_field' only the internal parameters Mode, Step, MinLength, ScaleLength, and CircleSize are changed. The current display mode is not changed. Vector field images are always displayed as vector field, no matter which mode is selected with set_paint.
Output of every 16th vector, that is longer than 2 pixel. Each vector is multiplied by 3 for output.
Display of color images ('television', 'grid_scan', etc.) changes the color lookup tables.
If a wrong color mode is set, the error message may appear not until the disp_image call.
Gray value output may be influenced by region output parameters. This can yield unexpected results.
Output mode. Additional parameters possible.
Default value: 'default'
List of values: '3d_plot', '3d_plot_hidden_lines', '3d_plot_lines', '3d_plot_point', 'column', 'contourline', 'default', 'histogram', 'row', 'vector_field'
read_image(Image,'fabrik') open_window(0,0,-1,-1,'root','visible','',WindowHandle) query_paint(WindowHandle,Modi) fwrite_string(FileHandle,['available gray value modes: ',Modi]) fnew_line(FileHandle) disp_image(Image,WindowHandle) get_mbutton(WindowHandle,_,_,_) set_color(WindowHandle,'red') set_draw(WindowHandle,'margin') set_paint(WindowHandle,'histogram') disp_image(Image,WindowHandle) set_color(WindowHandle,'blue') set_paint(WindowHandle,['histogram',100,100,3]) disp_image(Image,WindowHandle) set_color(WindowHandle,'yellow') set_paint(WindowHandle,['row',100]) disp_image(Image,WindowHandle) get_mbutton(WindowHandle,_,_,_) clear_window(WindowHandle) set_paint(WindowHandle,['contourline',10,1]) disp_image(Image,WindowHandle) set_lut(WindowHandle,'color') get_mbutton(WindowHandle,_,_,_) clear_window(WindowHandle) set_part(WindowHandle,100,100,300,300) set_paint(WindowHandle,'3d_plot') disp_image(Image,WindowHandle)
set_paint returns 2 (H_MSG_TRUE) if the parameter is correct and the window is valid. Otherwise an exception is raised.
get_paint, query_paint, disp_image, set_shape, set_rgb, set_color, set_gray, set_window_param, update_window_pose