![]() |
![]() |
Gwyddion Data Processing Library Reference Manual | ![]() |
|
---|---|---|---|---|
Top | Description |
#include <libprocess/gwyprocess.h> gint gwy_data_field_elliptic_area_fill (GwyDataField *data_field
,gint col
,gint row
,gint width
,gint height
,gdouble value
); gint gwy_data_field_elliptic_area_extract (GwyDataField *data_field
,gint col
,gint row
,gint width
,gint height
,gdouble *data
); void gwy_data_field_elliptic_area_unextract (GwyDataField *data_field
,gint col
,gint row
,gint width
,gint height
,const gdouble *data
); gint gwy_data_field_get_elliptic_area_size (gint width
,gint height
); gint gwy_data_field_circular_area_fill (GwyDataField *data_field
,gint col
,gint row
,gdouble radius
,gdouble value
); gint gwy_data_field_circular_area_extract (GwyDataField *data_field
,gint col
,gint row
,gdouble radius
,gdouble *data
); gint gwy_data_field_circular_area_extract_with_pos (GwyDataField *data_field
,gint col
,gint row
,gdouble radius
,gdouble *data
,gint *xpos
,gint *ypos
); void gwy_data_field_circular_area_unextract (GwyDataField *data_field
,gint col
,gint row
,gdouble radius
,const gdouble *data
); gint gwy_data_field_get_circular_area_size (gdouble radius
);
Method for extraction and putting back data from/to elliptic and circular areas can be used to implement sample-wise operations, that is operations that depend only on sample value not on its position, on these areas:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
gdouble *data; gint n, i; data = g_new(gdouble, width*height); n = gwy_data_field_elliptic_area_extract(data_field, col, row, width, height, data); for (i = 0; i < n; i++) { ... do something with data[i] ... } gwy_data_field_elliptic_area_unextract(data_field, col, row, width, height, data); |
Another possibility is to use GwyDataLine methods on the extracted data (in practice one would use the same data line repeatedly, of course):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
GwyDataLine *data_line; gdouble *data; gint n; n = gwy_data_field_get_elliptic_area_size(data_field, width, height); data_line = gwy_data_line_new(n, 1.0, FALSE); data = gwy_data_line_get_data(data_line); gwy_data_field_elliptic_area_extract(data_field, col, row, width, height, data); gwy_data_line_pixelwise_filter(data_line, ...); gwy_data_field_elliptic_area_unextract(data_field, col, row, width, height, data); g_object_unref(data_line); |
gint gwy_data_field_elliptic_area_fill (GwyDataField *data_field
,gint col
,gint row
,gint width
,gint height
,gdouble value
);
Fills an elliptic region of a data field with given value.
The elliptic region is defined by its bounding box which must be completely contained in the data field.
|
A data field. |
|
Upper-left bounding box column coordinate. |
|
Upper-left bounding box row coordinate. |
|
Bounding box width (number of columns). |
|
Bounding box height (number of rows). |
|
Value to be entered. |
Returns : |
The number of filled values. |
gint gwy_data_field_elliptic_area_extract (GwyDataField *data_field
,gint col
,gint row
,gint width
,gint height
,gdouble *data
);
Extracts values from an elliptic region of a data field.
The elliptic region is defined by its bounding box which must be completely contained in the data field.
|
A data field. |
|
Upper-left bounding box column coordinate. |
|
Upper-left bounding box row coordinate. |
|
Bounding box width (number of columns). |
|
Bounding box height (number of rows). |
|
Location to store the extracted values to. Its size has to be
sufficient to contain all the extracted values. As a conservative
estimate width *height can be used, or the
size can be calculated with gwy_data_field_get_elliptic_area_size() . |
Returns : |
The number of extracted values. |
void gwy_data_field_elliptic_area_unextract (GwyDataField *data_field
,gint col
,gint row
,gint width
,gint height
,const gdouble *data
);
Puts values back to an elliptic region of a data field.
The elliptic region is defined by its bounding box which must be completely contained in the data field.
This method does the reverse of gwy_data_field_elliptic_area_extract()
allowing to implement pixel-wise filters on elliptic areas. Values from
data
are put back to the same positions
gwy_data_field_elliptic_area_extract()
took them from.
|
A data field. |
|
Upper-left bounding box column coordinate. |
|
Upper-left bounding box row coordinate. |
|
Bounding box width (number of columns). |
|
Bounding box height (number of rows). |
|
The values to put back. It must be the same array as in previous
gwy_data_field_elliptic_area_extract() . |
gint gwy_data_field_get_elliptic_area_size (gint width
,gint height
);
Calculates an upper bound of the number of samples in an elliptic region.
|
Bounding box width. |
|
Bounding box height. |
Returns : |
The number of pixels in an elliptic region with given rectangular bounds (or its upper bound). |
gint gwy_data_field_circular_area_fill (GwyDataField *data_field
,gint col
,gint row
,gdouble radius
,gdouble value
);
Fills an elliptic region of a data field with given value.
|
A data field. |
|
Row index of circular area centre. |
|
Column index of circular area centre. |
|
Circular area radius (in pixels). Any value is allowed, although to get areas that do not deviate from true circles after pixelization too much, half-integer values are recommended, integer values are NOT recommended. |
|
Value to be entered. |
Returns : |
The number of filled values. |
gint gwy_data_field_circular_area_extract (GwyDataField *data_field
,gint col
,gint row
,gdouble radius
,gdouble *data
);
Extracts values from a circular region of a data field.
|
A data field. |
|
Row index of circular area centre. |
|
Column index of circular area centre. |
|
Circular area radius (in pixels). See
gwy_data_field_circular_area_extract_with_pos() for caveats. |
|
Location to store the extracted values to. See
gwy_data_field_circular_area_extract_with_pos() . |
Returns : |
The number of extracted values. It can be zero when the inside of the circle does not intersect with the data field. |
gint gwy_data_field_circular_area_extract_with_pos (GwyDataField *data_field
,gint col
,gint row
,gdouble radius
,gdouble *data
,gint *xpos
,gint *ypos
);
Extracts values with positions from a circular region of a data field.
The row and column indices stored to xpos
and ypos
are relative to the
area centre, i.e. to (col
, row
). The central pixel will therefore have
0 at the corresponding position in both xpos
and ypos
.
|
A data field. |
|
Row index of circular area centre. |
|
Column index of circular area centre. |
|
Circular area radius (in pixels). Any value is allowed, although to get areas that do not deviate from true circles after pixelization too much, half-integer values are recommended, integer radii are NOT recommended. |
|
Location to store the extracted values to. Its size has to be
sufficient to contain all the extracted values. As a conservative
estimate (2*floor(radius )+1)^2 can be used, or the size can be
calculated with gwy_data_field_get_circular_area_size() . |
|
Location to store relative column indices of values in data to,
the size requirements are the same as for data . |
|
Location to store relative tow indices of values in data to,
the size requirements are the same as for data . |
Returns : |
The number of extracted values. It can be zero when the inside of the circle does not intersect with the data field. |
Since 2.2
void gwy_data_field_circular_area_unextract (GwyDataField *data_field
,gint col
,gint row
,gdouble radius
,const gdouble *data
);
Puts values back to a circular region of a data field.
This method does the reverse of gwy_data_field_circular_area_extract()
allowing to implement pixel-wise filters on circular areas. Values from
data
are put back to the same positions
gwy_data_field_circular_area_extract()
took them from.
|
A data field. |
|
Row index of circular area centre. |
|
Column index of circular area centre. |
|
Circular area radius (in pixels). |
|
The values to put back. It must be the same array as in previous
gwy_data_field_circular_area_unextract() . |
gint gwy_data_field_get_circular_area_size
(gdouble radius
);
Calculates an upper bound of the number of samples in a circular region.
|
Circular area radius (in pixels). |
Returns : |
The number of pixels in a circular region with given rectangular bounds (or its upper bound). |