Skip to content

gen_image_surface_second_orderGenImageSurfaceSecondOrderGenImageSurfaceSecondOrdergen_image_surface_second_ordergen_image_surface_second_order🔗

Short description🔗

gen_image_surface_second_orderGenImageSurfaceSecondOrderGenImageSurfaceSecondOrdergen_image_surface_second_ordergen_image_surface_second_order — Create a curved gray surface with second order polynomial.

Signature🔗

gen_image_surface_second_order( out image ImageSurface, string Type, number Alpha, number Beta, number Gamma, number Delta, number Epsilon, number Zeta, number Row, number Column, extent.x Width, extent.y Height )void GenImageSurfaceSecondOrder( HObject* ImageSurface, const HTuple& Type, const HTuple& Alpha, const HTuple& Beta, const HTuple& Gamma, const HTuple& Delta, const HTuple& Epsilon, const HTuple& Zeta, const HTuple& Row, const HTuple& Column, const HTuple& Width, const HTuple& Height )static void HOperatorSet.GenImageSurfaceSecondOrder( out HObject imageSurface, HTuple type, HTuple alpha, HTuple beta, HTuple gamma, HTuple delta, HTuple epsilon, HTuple zeta, HTuple row, HTuple column, HTuple width, HTuple height )def gen_image_surface_second_order( type: str, alpha: float, beta: float, gamma: float, delta: float, epsilon: float, zeta: float, row: float, column: float, width: int, height: int ) -> HObject

Herror gen_image_surface_second_order( Hobject* ImageSurface, const char* Type, double Alpha, double Beta, double Gamma, double Delta, double Epsilon, double Zeta, double Row, double Column, const Hlong Width, const Hlong Height )

Herror T_gen_image_surface_second_order( Hobject* ImageSurface, const Htuple Type, const Htuple Alpha, const Htuple Beta, const Htuple Gamma, const Htuple Delta, const Htuple Epsilon, const Htuple Zeta, const Htuple Row, const Htuple Column, const Htuple Width, const Htuple Height )

void HImage::GenImageSurfaceSecondOrder( const HString& Type, double Alpha, double Beta, double Gamma, double Delta, double Epsilon, double Zeta, double Row, double Column, Hlong Width, Hlong Height )

void HImage::GenImageSurfaceSecondOrder( const char* Type, double Alpha, double Beta, double Gamma, double Delta, double Epsilon, double Zeta, double Row, double Column, Hlong Width, Hlong Height )

void HImage::GenImageSurfaceSecondOrder( const wchar_t* Type, double Alpha, double Beta, double Gamma, double Delta, double Epsilon, double Zeta, double Row, double Column, Hlong Width, Hlong Height ) (Windows only)

void HImage.GenImageSurfaceSecondOrder( string type, double alpha, double beta, double gamma, double delta, double epsilon, double zeta, double row, double column, int width, int height )

Description🔗

The operator gen_image_surface_second_orderGenImageSurfaceSecondOrder creates a curved gray value surface according to the following equation:

\[\begin{eqnarray*} \textrm{ImageSurface}(r,c) & = & \textrm{Alpha}(r - \textrm{Row})^2\\ & + & \textrm{Beta}(c - \textrm{Column})^2\\ & + & \textrm{Gamma}(r - \textrm{Row})*(c - \textrm{Column})\\ & + & \textrm{Delta}(r - \textrm{Row})\\ & + & \textrm{Epsilon}(c - \textrm{Column})\\ & + & \textrm{Zeta} \end{eqnarray*}\]

The size of the image is determined by Widthwidthwidth and Heightheightheight. The parameters Rowrowrow and Columncolumncolumn define the reference point of the created gray surface. If fit_surface_second_orderFitSurfaceSecondOrder was used to determine the parameters of the gray surface, this reference point should correspond to the center of gravity that is used in the surface equation (see fit_surface_second_orderFitSurfaceSecondOrder). Its coordinates can be computed as follows:

 
intersection(ROI, Image, RegionIntersection)Intersection(ROI, Image, RegionIntersection)Intersection(ROI, Image, RegionIntersection)intersection(ROI, Image, RegionIntersection)intersection(ROI, Image, RegionIntersection)
fit_surface_second_order(RegionIntersection, Image, Algorithm, Iterations, ClippingFactor, Alpha, Beta, Gamma, Delta, Epsilon, Zeta)
area_center(RegionIntersection, Area, Row, Column)AreaCenter(RegionIntersection, Area, Row, Column)AreaCenter(RegionIntersection, Area, Row, Column)area_center(RegionIntersection, Area, Row, Column)area_center(RegionIntersection, Area, Row, Column)
gen_image_surface_second_order(ImageSurface, Type, Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Row, Column, Width, Height)GenImageSurfaceSecondOrder(ImageSurface, Type, Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Row, Column, Width, Height)GenImageSurfaceSecondOrder(ImageSurface, Type, Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Row, Column, Width, Height)gen_image_surface_second_order(ImageSurface, Type, Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Row, Column, Width, Height)gen_image_surface_second_order(ImageSurface, Type, Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Row, Column, Width, Height)

The gray values are of the type Typetypetype (see gen_image_constGenImageConst for a detailed description of the pixel types). Gray values outside the valid area are clipped.

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.

Parameters🔗

ImageSurfaceimageSurfaceimage_surface (output_object) image → object (byte / uint2 / real)HObject (byte / uint2 / real)HImage (byte / uint2 / real)HObject (byte / uint2 / real)Hobject * (byte / uint2 / real)

Created image with new image matrix.

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

Pixel type.

Default: 'byte'"byte"
List of values: 'byte', 'real', 'uint2'"byte", "real", "uint2"

Alphaalphaalpha (input_control) number → (real)HTuple (double)HTuple (double)floatHtuple (double)

Second order coefficient in vertical direction.

Default: 1.01.0
Suggested values: -2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0-2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0
Minimum increment: 0.000001
Recommended increment: -0.005

Betabetabeta (input_control) number → (real)HTuple (double)HTuple (double)floatHtuple (double)

Second order coefficient in horizontal direction.

Default: 1.01.0
Suggested values: -2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0-2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0
Minimum increment: 0.000001
Recommended increment: -0.005

Gammagammagamma (input_control) number → (real)HTuple (double)HTuple (double)floatHtuple (double)

Mixed second order coefficient.

Default: 1.01.0
Suggested values: -2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0-2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0
Minimum increment: 0.000001
Recommended increment: -0.005

Deltadeltadelta (input_control) number → (real)HTuple (double)HTuple (double)floatHtuple (double)

First order coefficient in vertical direction.

Default: 1.01.0
Suggested values: -2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0-2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0
Minimum increment: 0.000001
Recommended increment: -0.005

Epsilonepsilonepsilon (input_control) number → (real)HTuple (double)HTuple (double)floatHtuple (double)

First order coefficient in horizontal direction.

Default: 1.01.0
Suggested values: -2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0-2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0
Minimum increment: 0.000001
Recommended increment: -0.005

Zetazetazeta (input_control) number → (real)HTuple (double)HTuple (double)floatHtuple (double)

Zero order coefficient.

Default: 1.01.0
Suggested values: -2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0-2.0, -1.0, -0.5, -0.0, 0.5, 1.0, 2.0
Minimum increment: 0.000001
Recommended increment: -0.005

Rowrowrow (input_control) number → (real)HTuple (double)HTuple (double)floatHtuple (double)

Row coordinate of the reference point of the surface.

Default: 256.0256.0
Suggested values: 0.0, 128.0, 256.0, 512.00.0, 128.0, 256.0, 512.0
Minimum increment: 0.000001
Recommended increment: -0.005

Columncolumncolumn (input_control) number → (real)HTuple (double)HTuple (double)floatHtuple (double)

Column coordinate of the reference point of the surface.

Default: 256.0256.0
Suggested values: 0.0, 128.0, 256.0, 512.00.0, 128.0, 256.0, 512.0
Minimum increment: 0.000001
Recommended increment: -0.005

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

Width of image.

Default: 512512
Suggested values: 128, 256, 512, 1024128, 256, 512, 1024
Value range: 1 ≤ Width (lin)
Minimum increment: 1
Recommended increment: 10

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

Height of image.

Default: 512512
Suggested values: 128, 256, 512, 1024128, 256, 512, 1024
Value range: 1 ≤ Height (lin)
Minimum increment: 1
Recommended increment: 10

Example🔗

(HDevelop)

* Adjust an inhomogeneous illumination
* using gen_image_surface_second_order
read_image (Image, 'cap_illumination/cap_illumination_01')
get_image_size (Image, Width, Height)
gen_circle (Circle, 495, 630, 350.5)
difference (Image, Circle, RegionDifference)
fit_surface_second_order (RegionDifference, Image, 'regression', 5, 2, \
                          Alpha, Beta, Gamma, Delta, Epsilon, Zeta)
area_center (RegionDifference, Area, Row, Column)
gen_image_surface_second_order (ImageSurface, 'byte', Alpha, Beta, \
                                Gamma, Delta, Epsilon, Zeta, Row, Column, \
                                Width, Height)
sub_image (Image, ImageSurface, ImageSub, 1, 128)

Result🔗

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

Combinations with other operators🔗

Combinations

Possible predecessors

fit_surface_second_orderFitSurfaceSecondOrder

Possible successors

sub_imageSubImage

See also

gen_image_gray_rampGenImageGrayRamp, gen_image_surface_first_orderGenImageSurfaceFirstOrder, gen_image_constGenImageConst

Module🔗

Foundation