Detect edges using the Roberts filter.
roberts calculates the first derivative of an image and is used as an edge operator. If the following mask describes a part of the image,
A B
C D
the different filter types are defined as follows:
'roberts_max' max(| A - D |,| B - C |) 'gradient_max' max(| A + B - (C + D)|,| A + C - (B + D)|) 'gradient_sum' |A + B - (C + D)| + |A + C - (B + D)|If an overflow occurs the result is clipped. The result of the operator is stored at the pixel with the coordinates of "D".
|
Image (input_object) |
(multichannel-)image(-array) -> object : byte / int2 / uint2 |
| Input image. | |
|
ImageRoberts (output_object) |
(multichannel-)image(-array) -> object : byte / int2 / uint2 |
| Roberts-filtered result images. | |
|
FilterType (input_control) |
string -> string |
| Filter type. | |
| Default value: 'gradient_sum' | |
| List of values: 'roberts_max', 'gradient_max', 'gradient_sum' | |
read_image(Image,'fabrik') roberts(Image,Roberts,'roberts_max') threshold(Roberts,Margin,128,255).
roberts returns 2 (H_MSG_TRUE) if all parameters are correct. If the input is empty the behaviour can be set via set_system('no_object_result',<Result>). If necessary, an exception handling is raised.
roberts is reentrant and automatically parallelized (on tuple level, channel level, domain level).
edges_image, sobel_amp, frei_amp, kirsch_amp, prewitt_amp
laplace, highpass_image, bandpass_image
Foundation