Skip to content

gen_measure_rectangle2GenMeasureRectangle2GenMeasureRectangle2gen_measure_rectangle2T_gen_measure_rectangle2🔗

Short description🔗

gen_measure_rectangle2GenMeasureRectangle2GenMeasureRectangle2gen_measure_rectangle2T_gen_measure_rectangle2 — Prepare the extraction of straight edges perpendicular to a rectangle.

Signature🔗

gen_measure_rectangle2( rectangle2.center.y Row, rectangle2.center.x Column, rectangle2.angle.rad Phi, rectangle2.hwidth Length1, rectangle2.hheight Length2, extent.x Width, extent.y Height, string Interpolation, out measure MeasureHandle )void GenMeasureRectangle2( const HTuple& Row, const HTuple& Column, const HTuple& Phi, const HTuple& Length1, const HTuple& Length2, const HTuple& Width, const HTuple& Height, const HTuple& Interpolation, HTuple* MeasureHandle )static void HOperatorSet.GenMeasureRectangle2( HTuple row, HTuple column, HTuple phi, HTuple length1, HTuple length2, HTuple width, HTuple height, HTuple interpolation, out HTuple measureHandle )def gen_measure_rectangle2( row: Union[int, float], column: Union[int, float], phi: Union[int, float], length_1: Union[int, float], length_2: Union[int, float], width: int, height: int, interpolation: str ) -> HHandle

Herror T_gen_measure_rectangle2( const Htuple Row, const Htuple Column, const Htuple Phi, const Htuple Length1, const Htuple Length2, const Htuple Width, const Htuple Height, const Htuple Interpolation, Htuple* MeasureHandle )

void HMeasure::HMeasure( const HTuple& Row, const HTuple& Column, const HTuple& Phi, const HTuple& Length1, const HTuple& Length2, Hlong Width, Hlong Height, const HString& Interpolation )

void HMeasure::HMeasure( double Row, double Column, double Phi, double Length1, double Length2, Hlong Width, Hlong Height, const HString& Interpolation )

void HMeasure::HMeasure( double Row, double Column, double Phi, double Length1, double Length2, Hlong Width, Hlong Height, const char* Interpolation )

void HMeasure::HMeasure( double Row, double Column, double Phi, double Length1, double Length2, Hlong Width, Hlong Height, const wchar_t* Interpolation ) (Windows only)

public HMeasure( HTuple row, HTuple column, HTuple phi, HTuple length1, HTuple length2, int width, int height, string interpolation )

public HMeasure( double row, double column, double phi, double length1, double length2, int width, int height, string interpolation )

void HMeasure::GenMeasureRectangle2( const HTuple& Row, const HTuple& Column, const HTuple& Phi, const HTuple& Length1, const HTuple& Length2, Hlong Width, Hlong Height, const HString& Interpolation )

void HMeasure::GenMeasureRectangle2( double Row, double Column, double Phi, double Length1, double Length2, Hlong Width, Hlong Height, const HString& Interpolation )

void HMeasure::GenMeasureRectangle2( double Row, double Column, double Phi, double Length1, double Length2, Hlong Width, Hlong Height, const char* Interpolation )

void HMeasure::GenMeasureRectangle2( double Row, double Column, double Phi, double Length1, double Length2, Hlong Width, Hlong Height, const wchar_t* Interpolation ) (Windows only)

void HMeasure.GenMeasureRectangle2( HTuple row, HTuple column, HTuple phi, HTuple length1, HTuple length2, int width, int height, string interpolation )

void HMeasure.GenMeasureRectangle2( double row, double column, double phi, double length1, double length2, int width, int height, string interpolation )

Description🔗

gen_measure_rectangle2GenMeasureRectangle2 prepares the extraction of straight edges which lie perpendicular to the major axis of a rectangle. The center of the rectangle is passed in the parameters Rowrowrow and Columncolumncolumn, the direction of the major axis of the rectangle in Phiphiphi, and the length of the two axes, i.e., half the diameter of the rectangle, in Length1length1length_1 and Length2length2length_2.

For an explanation of the concept of 1D measuring see the introduction of chapter 1D Measuring.

The edge extraction algorithm is described in the documentation of the operator measure_posMeasurePos. As discussed there, different types of interpolation can be used for the calculation of the one-dimensional gray value profile. For Interpolationinterpolationinterpolation = 'nearest_neighbor'"nearest_neighbor", the gray values in the measurement are obtained from the gray values of the closest pixel, i.e., by constant interpolation. For Interpolationinterpolationinterpolation = 'bilinear'"bilinear", bilinear interpolation is used, while for Interpolationinterpolationinterpolation = 'bicubic'"bicubic", bicubic interpolation is used.

To perform the actual measurement at optimal speed, all computations that can be used for multiple measurements are already performed in the operator gen_measure_rectangle2GenMeasureRectangle2. For this, an optimized data structure, a so-called measure object, is constructed and returned in MeasureHandlemeasureHandlemeasure_handle. The size of the images in which measurements will be performed must be specified in the parameters Widthwidthwidth and Heightheightheight.

The system parameter 'int_zooming'"int_zooming" (see set_systemSetSystem) affects the accuracy and speed of the calculations used to construct the measure object. If 'int_zooming'"int_zooming" is set to 'true'"true", the internal calculations are performed using fixed point arithmetic, leading to much shorter execution times. However, the geometric accuracy is slightly lower in this mode. If 'int_zooming'"int_zooming" is set to 'false'"false", the internal calculations are performed using floating point arithmetic, leading to the maximum geometric accuracy, but also to significantly increased execution times.

Attention🔗

Note that when using bilinear or bicubic interpolation, not only the measurement rectangle but additionally the margin around the rectangle must fit into the image. The width of the margin (in all four directions) must be at least one pixel for bilinear interpolation and two pixels for bicubic interpolation. For projection lines that do not fulfill this condition, no gray value is computed. Thus, no edge can be extracted at these positions.

Please also note that the center coordinates of the rectangle are rounded internally, so that the center lies on the pixel grid. This is done to ensure consistency.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.

Parameters🔗

Rowrowrow (input_control) rectangle2.center.y → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[int, float]Htuple (double / Hlong)

Row coordinate of the center of the rectangle.

Default: 300.0300.0
Suggested values: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.010.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0
Value range: 0.0 ≤ Row ≤ 511.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0

Columncolumncolumn (input_control) rectangle2.center.x → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[int, float]Htuple (double / Hlong)

Column coordinate of the center of the rectangle.

Default: 200.0200.0
Suggested values: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.010.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0
Value range: 0.0 ≤ Column ≤ 511.0 (lin)
Minimum increment: 1.0
Recommended increment: 10.0

Phiphiphi (input_control) rectangle2.angle.rad → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[int, float]Htuple (double / Hlong)

Angle of longitudinal axis of the rectangle to horizontal (radians).

Default: 0.00.0
Suggested values: -1.178097, -0.785398, -0.392699, 0.0, 0.392699, 0.785398, 1.178097-1.178097, -0.785398, -0.392699, 0.0, 0.392699, 0.785398, 1.178097
Value range: Phi (lin)
Minimum increment: 0.001
Recommended increment: 0.1

Length1length1length_1 (input_control) rectangle2.hwidth → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[int, float]Htuple (double / Hlong)

Half width of the rectangle.

Default: 100.0100.0
Suggested values: 3.0, 5.0, 10.0, 15.0, 20.0, 50.0, 100.0, 200.0, 300.0, 500.03.0, 5.0, 10.0, 15.0, 20.0, 50.0, 100.0, 200.0, 300.0, 500.0
Value range: 1.0 ≤ Length1 (lin)
Minimum increment: 1.0
Recommended increment: 10.0

Length2length2length_2 (input_control) rectangle2.hheight → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[int, float]Htuple (double / Hlong)

Half height of the rectangle.

Default: 20.020.0
Suggested values: 1.0, 2.0, 3.0, 5.0, 10.0, 15.0, 20.0, 50.0, 100.0, 200.01.0, 2.0, 3.0, 5.0, 10.0, 15.0, 20.0, 50.0, 100.0, 200.0
Value range: 0.0 ≤ Length2 (lin)
Minimum increment: 1.0
Recommended increment: 10.0

Widthwidthwidth (input_control) extent.x → (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Width of the image to be processed subsequently.

Default: 512512
Suggested values: 128, 160, 192, 256, 320, 384, 512, 640, 768128, 160, 192, 256, 320, 384, 512, 640, 768
Value range: 0 ≤ Width (lin)
Minimum increment: 1
Recommended increment: 16

Heightheightheight (input_control) extent.y → (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Height of the image to be processed subsequently.

Default: 512512
Suggested values: 120, 128, 144, 240, 256, 288, 480, 512, 576120, 128, 144, 240, 256, 288, 480, 512, 576
Value range: 0 ≤ Height (lin)
Minimum increment: 1
Recommended increment: 16

Interpolationinterpolationinterpolation (input_control) string → (string)HTuple (HString)HTuple (string)strHtuple (char*)

Type of interpolation to be used.

Default: 'nearest_neighbor'"nearest_neighbor"
List of values: 'bicubic', 'bilinear', 'nearest_neighbor'"bicubic", "bilinear", "nearest_neighbor"

MeasureHandlemeasureHandlemeasure_handle (output_control) measure → (handle)HTuple (HHandle)HMeasure, HTuple (IntPtr)HHandleHtuple (handle)

Measure object handle.

Result🔗

If the parameter values are correct the operator gen_measure_rectangle2GenMeasureRectangle2 returns the value 2 (H_MSG_TRUE). Otherwise an exception is raised.

Combinations with other operators🔗

Combinations

Possible predecessors

draw_rectangle2DrawRectangle2

Possible successors

measure_posMeasurePos, measure_pairsMeasurePairs, fuzzy_measure_posFuzzyMeasurePos, fuzzy_measure_pairsFuzzyMeasurePairs, fuzzy_measure_pairingFuzzyMeasurePairing, measure_threshMeasureThresh

Alternatives

edges_sub_pixEdgesSubPix

See also

gen_measure_arcGenMeasureArc

Module🔗

1D Metrology