/* Call im_contrast_surface_raw via arg vector. */ static int contrast_surface_raw_vec( im_object *argv ) { int half_win_size = *((int *) argv[2]); int spacing = *((int *) argv[3]); return( im_contrast_surface_raw( argv[0], argv[1], half_win_size, spacing ) ); }
/** * im_contrast_surface: * @in: input image * @out: output image * @half_win_size: window radius * @spacing: subsample output by this * * Generate an image where the value of each pixel represents the * contrast within a window of half_win_size from the corresponsing * point in the input image. Sub-sample by a factor of spacing. * * See also: im_spcor(), im_gradcor(). * * Returns: 0 on success, -1 on error. */ int im_contrast_surface (IMAGE * in, IMAGE * out, int half_win_size, int spacing) { IMAGE *t1 = im_open_local (out, "im_contrast_surface intermediate", "p"); if (!t1 || im_embed (in, t1, 1, half_win_size, half_win_size, in->Xsize + DOUBLE (half_win_size), in->Ysize + DOUBLE (half_win_size)) || im_contrast_surface_raw (t1, out, half_win_size, spacing)) return -1; out->Xoffset = 0; out->Yoffset = 0; return 0; }