## correct correct — Data correction |

## Functions

void | (*GwyCoordTransform2DFunc) ()
void | gwy_data_field_correct_laplace_iteration ()
void | gwy_data_field_correct_average ()
void | gwy_data_field_mask_outliers ()
void | gwy_data_field_mask_outliers2 ()
void | gwy_data_field_distort ()
void | gwy_data_field_affine ()
GwyPlaneSymmetry | gwy_data_field_unrotate_find_corrections ()

## Includes

    #include <libprocess/gwyprocess.h>

## Description

## Functions

### GwyCoordTransform2DFunc ()

    void
    (*GwyCoordTransform2DFunc) (gdouble x,
                                gdouble y,
                                gdouble *px,
                                gdouble *py,
                                gpointer user_data);

The type of two-dimensional coordinate transform function.

#### Parameters

x | Old x coordinate. |
y | Old y coordinate. |
px | Location to store new x coordinate. |
py | Location to store new y coordinate. |
user_data | User data passed to the caller function. |

Since: 2.5

### gwy_data_field_correct_laplace_iteration ()

    void
    gwy_data_field_correct_laplace_iteration
                                   (GwyDataField *data_field,
                                    GwyDataField *mask_field,
                                    GwyDataField *buffer_field,
                                    gdouble corrfactor,
                                    gdouble *error);

Performs one interation of Laplace data correction.

Tries to remove all the points in mask off the data by using iterative method similar to solving heat flux equation.

Use this function repeatedly until reasonable `error` is reached.

#### Parameters

data_field | Data field to be corrected. |
mask_field | Mask of places to be corrected. |
buffer_field | Initialized to same size as mask and data. |
error | Maximum change within last step. |
corrfactor | Correction factor within step. |

### gwy_data_field_correct_average ()

    void
    gwy_data_field_correct_average (GwyDataField *data_field,
                                    GwyDataField *mask_field);

Fills data under mask with average value.

Simply puts average value of all the `data_field` values into points in `data_field` lying under points where `mask_field` values are nonzero.

#### Parameters

data_field | A data field. |
mask_field | Mask of places to be corrected. |

### gwy_data_field_mask_outliers ()

    void
    gwy_data_field_mask_outliers (GwyDataField *data_field,
                                  GwyDataField *mask_field,
                                  gdouble thresh);

Creates mask of data that are above or below `thresh` *sigma from average height.

Sigma denotes root-mean square deviation of heights. This criterium corresponds to the usual Gaussian distribution outliers detection if `thresh` is 3.

#### Parameters

data_field | A data field. |
mask_field | A data field to be filled with mask. |
thresh | Threshold value. |

### gwy_data_field_mask_outliers2 ()

    void
    gwy_data_field_mask_outliers2 (GwyDataField *data_field,
                                   GwyDataField *mask_field,
                                   gdouble thresh_low,
                                   gdouble thresh_high);

Creates mask of data that are above or below multiples of rms from average height.

Data that are below `mean` -`thresh_low` *`sigma` or above `mean` +`thresh_high` *`sigma` are marked as outliers, where `sigma` denotes the root-mean square deviation of heights.

#### Parameters

data_field | A data field. |
mask_field | A data field to be filled with mask. |
thresh_low | Lower threshold value. |
thresh_high | Upper threshold value. |

Since: 2.26

### gwy_data_field_distort ()

    void
    gwy_data_field_distort (GwyDataField *source,
                            GwyDataField *dest,
                            GwyCoordTransform2DFunc invtrans,
                            gpointer user_data,
                            GwyInterpolationType interp,
                            GwyExteriorType exterior,
                            gdouble fill_value);

Distorts a data field in the horizontal plane.

Note the transform function `invtrans` is the inverse transform, in other words it calculates the old coordinates from the new coordinates (the transform would not be uniquely defined the other way round).

#### Parameters

source | Source data field. |
dest | Destination data field. |
invtrans | Inverse transform function, that is the transformation from new coordinates to old coordinates. It gets (`j` +0.5, `i` +0.5), where `i` and `j` are the new row and column indices, passed as the input coordinates. The output coordinates should follow the same convention. Unless a special exterior handling is required, the transform function does not need to concern itself with coordinates being outside of the data. |
user_data | Pointer passed as `user_data` to `invtrans` . |
interp | Interpolation type to use. |
exterior | Exterior pixels handling. |
fill_value | The value to use with `GWY_EXTERIOR_FIXED_VALUE` . |

Since: 2.5

### gwy_data_field_affine ()

    void
    gwy_data_field_affine (GwyDataField *source,
                           GwyDataField *dest,
                           const gdouble *invtrans,
                           GwyInterpolationType interp,
                           GwyExteriorType exterior,
                           gdouble fill_value);

Performs an affine transformation of a data field in the horizontal plane.

Note the transform `invtrans` is the inverse transform, in other words it calculates the old coordinates from the new coordinates. This way even degenerate (non-invertible) transforms can be meaningfully used. Also note that the (column, row) coordinate system is left-handed.

#### Parameters

source | Source data field. |
dest | Destination data field. |
invtrans | Inverse transform, that is the transformation from new pixel coordinates to old pixel coordinates, represented as (`j` +0.5, `i` +0.5), where `i` and `j` are the row and column indices. It is represented as a six-element array [`axx` , `axy` , `ayx` , `ayy` , `bx` , `by` ] where `axy` is the coefficient from `x` to `y` . |
interp | Interpolation type to use. |
exterior | Exterior pixels handling. |
fill_value | The value to use with `GWY_EXTERIOR_FIXED_VALUE` . |

Since: 2.34

### gwy_data_field_unrotate_find_corrections ()

    GwyPlaneSymmetry
    gwy_data_field_unrotate_find_corrections
                                   (GwyDataLine *derdist,
                                    gdouble *correction);

Finds rotation corrections.

Rotation correction is computed for for all symmetry types. In addition an estimate is made about the prevalent one.

#### Parameters

derdist | Angular derivation distribution (normally obrained from `gwy_data_field_slope_distribution()`). |
correction | Corrections for particular symmetry types will be stored here (indexed by GwyPlaneSymmetry). `correction` [0] contains the most probable correction. All angles are in radians. |

#### Returns

The estimate type of prevalent symmetry.

## Types and Values