sobel_dir — Detect edges (amplitude and direction) using the Sobel operator.
sobel_dir calculates first derivative of an image and is used as an edge detector. The filter is based on the following filter masks:
A = 1 2 1 0 0 0 -1 -2 -1 B = 1 0 -1 2 0 -2 1 0 -1These masks are used differently, according to the selected filter type. (In the following, a and b denote the results of convolving an image with A and B for one particular pixel.)
sobel_dir(I,Amp,Dir,FilterType,S) for Size > 3 is conceptually equivalent to scale_image(I,F,2,0) gauss_image(F,G,S-2) sobel_dir(G,Amp,Dir,FilterType,3) or to scale_image(I,F,2,0) binomial_filter(F,G,S-2,S-2) sobel_dir(G,Amp,Dir,FilterType,3).The edge directions are returned in EdgeDirection, and are stored in 2-degree steps, i.e., an edge direction of x degrees in mathematically positive sense and with respect to the horizontal axis is stored as x / 2 in the edge direction image. Furthermore, the direction of the change of intensity is taken into account. Let denote the image gradient. Then the following edge directions are returned as r/2:
sobel_amp can be executed on OpenCL devices. Note that when using gaussian filtering for Size > 3, the results can vary from the CPU implementation.
Edge amplitude (gradient magnitude) image.
Edge direction image.
Default value: 'sum_abs'
List of values: 'sum_abs', 'sum_abs_binomial', 'sum_sqrt', 'sum_sqrt_binomial'
List of values (for compute devices): 'sum_abs', 'sum_sqrt', 'sum_abs_binomial', 'sum_sqrt_binomial'
Size of filter mask.
Default value: 3
List of values: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39
read_image(Image,'fabrik') sobel_dir(Image,Amp,Dir,'sum_abs',3) threshold(Amp,Edg,128,255)
sobel_dir 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 is raised.
binomial_filter, gauss_filter, mean_image, anisotropic_diffusion, sigma_image
nonmax_suppression_dir, hysteresis_threshold, threshold
edges_image, frei_dir, kirsch_dir, prewitt_dir, robinson_dir
roberts, laplace, highpass_image, bandpass_image