grains

grains — Grain detection and processing

Synopsis




enum        GwyMergeType;
enum        GwyWatershedStateType;
struct      GwyWatershedStatus;
void        gwy_data_field_grains_mark_curvature
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gdouble threshval,
                                             gint dir);
void        gwy_data_field_grains_mark_watershed
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gint locate_steps,
                                             gint locate_thresh,
                                             gdouble locate_dropsize,
                                             gint wshed_steps,
                                             gdouble wshed_dropsize,
                                             gboolean prefilter,
                                             gint dir);
void        gwy_data_field_grains_remove_manually
                                            (GwyDataField *grain_field,
                                             gint i);
void        gwy_data_field_grains_remove_by_size
                                            (GwyDataField *grain_field,
                                             gint size);
void        gwy_data_field_grains_remove_by_height
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gdouble threshval,
                                             gint direction);
void        gwy_data_field_grains_watershed_iteration
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             GwyWatershedStatus *status,
                                             gint locate_steps,
                                             gint locate_thresh,
                                             gdouble locate_dropsize,
                                             gint wshed_steps,
                                             gdouble wshed_dropsize,
                                             gboolean prefilter,
                                             gint dir);
void        gwy_data_field_grains_mark_local_maxima
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field);
void        gwy_data_field_grains_mark_height
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gdouble threshval,
                                             gint dir);
void        gwy_data_field_grains_mark_slope
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gdouble threshval,
                                             gint dir);
gdouble     gwy_data_field_grains_get_average
                                            (GwyDataField *grain_field);
void        gwy_data_field_grains_get_distribution
                                            (GwyDataField *grain_field,
                                             GwyDataLine *distribution);
void        gwy_data_field_grains_add       (GwyDataField *grain_field,
                                             GwyDataField *add_field);
void        gwy_data_field_grains_intersect (GwyDataField *grain_field,
                                             GwyDataField *intersect_field);

Description

Details

enum GwyMergeType

typedef enum {
    GWY_MERGE_UNION        = 0, /*union of all found grains*/
    GWY_MERGE_INTERSECTION = 1  /*intersection of grains found by different methods*/
} GwyMergeType;

Mask processing merging (namely used in grain processing).


enum GwyWatershedStateType

typedef enum {
    GWY_WSHED_INIT         = 0, /*start initializations*/
    GWY_WSHED_LOCATE       = 1, /*locate steps*/
    GWY_WSHED_MIN          = 2, /*find minima*/
    GWY_WSHED_WSHED        = 3, /*watershed steps*/
    GWY_WSHED_MARK         = 4, /*mark grain boundaries*/
    GWY_WSHED_FINISHED     = 5
} GwyWatershedStateType;


struct GwyWatershedStatus

struct GwyWatershedStatus {

    GwyWatershedStateType state;
    gint internal_i;
    GwyDataField *min;
    GwyDataField *water;
    GwyDataField *mark_dfield;
    gint fraction;
    GString *description;
};


gwy_data_field_grains_mark_curvature ()

void        gwy_data_field_grains_mark_curvature
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gdouble threshval,
                                             gint dir);

Marks data that are above/below curvature threshold depending on dir argument.

data_field : data to be used for marking
grain_field : result of marking (mask)
threshval : curvature threshold
dir : marking direction

gwy_data_field_grains_mark_watershed ()

void        gwy_data_field_grains_mark_watershed
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gint locate_steps,
                                             gint locate_thresh,
                                             gdouble locate_dropsize,
                                             gint wshed_steps,
                                             gdouble wshed_dropsize,
                                             gboolean prefilter,
                                             gint dir);

Performs watershed algorithm.

data_field : data to be used for marking
grain_field : result of marking (mask)
locate_steps : locating algorithm steps
locate_thresh : locating algorithm threshold
locate_dropsize : locating drop size
wshed_steps : watershed steps
wshed_dropsize : watershed drop size
prefilter : use prefiltering
dir : mark algorithm direction

gwy_data_field_grains_remove_manually ()

void        gwy_data_field_grains_remove_manually
                                            (GwyDataField *grain_field,
                                             gint i);

Removes one grain at given position.

grain_field : field of marked grains (mask)
i : position of requested grain removal

gwy_data_field_grains_remove_by_size ()

void        gwy_data_field_grains_remove_by_size
                                            (GwyDataField *grain_field,
                                             gint size);

Removes all grain below area size (in square pixels);

grain_field : field of marked grains (mask)
size : size to be used as threshold

gwy_data_field_grains_remove_by_height ()

void        gwy_data_field_grains_remove_by_height
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gdouble threshval,
                                             gint direction);

Thresolds grain that are higher/lower than given threshold value.

data_field : data to be used for marking
grain_field : field of marked grains (mask)
threshval : height threshold
direction : threshold grains above/below given height

gwy_data_field_grains_watershed_iteration ()

void        gwy_data_field_grains_watershed_iteration
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             GwyWatershedStatus *status,
                                             gint locate_steps,
                                             gint locate_thresh,
                                             gdouble locate_dropsize,
                                             gint wshed_steps,
                                             gdouble wshed_dropsize,
                                             gboolean prefilter,
                                             gint dir);

Performs one iteration of the watershed algorithm.

data_field : data to be used for marking
grain_field : result of marking (mask)
status : current status of the algorithm
locate_steps : locating algorithm steps
locate_thresh : locating algorithm threshold
locate_dropsize : locating drop size
wshed_steps : watershed steps
wshed_dropsize : watershed drop size
prefilter : use prefiltering
dir : mark algorithm direction

gwy_data_field_grains_mark_local_maxima ()

void        gwy_data_field_grains_mark_local_maxima
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field);

data_field :
grain_field :

gwy_data_field_grains_mark_height ()

void        gwy_data_field_grains_mark_height
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gdouble threshval,
                                             gint dir);

Marks data that are above/below height threshold depending on dir argument.

data_field : data to be used for marking
grain_field : result of marking (mask)
threshval : height threshold
dir : marking direction

gwy_data_field_grains_mark_slope ()

void        gwy_data_field_grains_mark_slope
                                            (GwyDataField *data_field,
                                             GwyDataField *grain_field,
                                             gdouble threshval,
                                             gint dir);

Marks data that are above/below slope threshold depending on dir argument.

data_field : data to be used for marking
grain_field : result of marking (mask)
threshval : slope threshold
dir : marking direction

gwy_data_field_grains_get_average ()

gdouble     gwy_data_field_grains_get_average
                                            (GwyDataField *grain_field);

grain_field :
Returns :

gwy_data_field_grains_get_distribution ()

void        gwy_data_field_grains_get_distribution
                                            (GwyDataField *grain_field,
                                             GwyDataLine *distribution);

Computes grain size distribution - plot of number of grains vs. grain area (in real units).

grain_field : field of marked grains (mask)
distribution : grain size distribution

gwy_data_field_grains_add ()

void        gwy_data_field_grains_add       (GwyDataField *grain_field,
                                             GwyDataField *add_field);

Adds add_field grains to grain_field.

grain_field : field of marked grains (mask)
add_field : field of marked grains (mask) to be added

gwy_data_field_grains_intersect ()

void        gwy_data_field_grains_intersect (GwyDataField *grain_field,
                                             GwyDataField *intersect_field);

Performs intersection betweet two grain fields, result is stored in grain_field.

grain_field : field of marked grains (mask)
intersect_field : field of marked grains (mask)