1 import("mrfaustlib/fft.lib");
7 strel_shift_dilation = DILATION_MIN : vectorize(1);
8 strel_shift_erosion = EROSION_MAX : vectorize(1);
10 spray_by_three(n) = _ <: par(i, n, ([i], [i+1], [i+2]));
12 tri_max = max, _ : max;
13 tri_maxs(n) = par(i, n, tri_max);
14 tri_min = min, _ : min;
15 tri_mins(n) = par(i, n, tri_min);
17 dilating(n) = strel_shift_dilation, _, strel_shift_dilation : #, _ : # : spray_by_three(n) : tri_maxs(n) : nconcat(n);
19 eroding(n) = strel_shift_erosion, _, strel_shift_erosion : #, _ : # : spray_by_three(n) : tri_mins(n) : nconcat(n);
21 //dilation(size, iter) = seq(i, iter, dilating(size));
22 //erosion(size, iter) = seq(i, iter, eroding(size));
24 dilation_square(x, y) = _ : vectorize(y) : serialize : dilating(x) : vectorize(y) : matrix_transpose(y, x) : serialize : dilating(y) : vectorize(x) : matrix_transpose(x, y) : serialize;
26 dilations(x, y, iter) = seq(i, iter, dilation_square(x,y));
28 erosion_square(x, y) = _ : vectorize(y) : serialize : eroding(x) : vectorize(y) : matrix_transpose(y, x) : serialize : eroding(y) : vectorize(x) : matrix_transpose(x, y) : serialize;
30 erosions(x, y, iter) = seq(i, iter, erosion_square(x,y));
32 open(x, y, iter) = erosions(x, y, iter) : dilations(x, y, iter);
33 close(x, y, iter) = dilations(x, y, iter) : erosions(x, y, iter);
35 //process = dilation(112, 3);
36 //process = erosion(119, 10);
37 //process = opening(119, 10);
38 process = close(119, 123, 6);