22 int NeighborhoodWidth)
24 if (NeighborhoodWidth <= 0 || NeighborhoodWidth >= M.
Width || NeighborhoodWidth >= M.
Height)
25 throw new ArgumentOutOfRangeException(nameof(NeighborhoodWidth));
29 int From = -NeighborhoodWidth / 2;
30 int To = NeighborhoodWidth + From;
35 float[] Data = M.
Data;
36 float[] Sums = Integral.
Data;
38 int x1, y1, x2, y2, dx, dy;
40 for (y = 0; y < h; y++, Index += Skip)
52 for (x = 0; x < w; x++)
65 Avg = (Sums[x2 + y2 * w] - Sums[x1 + y2 * w] - Sums[x2 + y1 * w] + Sums[x1 + y1 * w]) / (dx * dy);
67 Data[Index++] = v <= Avg -
Threshold ? 0f : 1f;
83 int NeighborhoodWidth)
85 if (NeighborhoodWidth <= 0 || NeighborhoodWidth >= M.
Width || NeighborhoodWidth >= M.
Height)
86 throw new ArgumentOutOfRangeException(nameof(NeighborhoodWidth));
90 int From = -NeighborhoodWidth / 2;
91 int To = NeighborhoodWidth + From;
97 long[] Sums = Integral.
Data;
99 int x1, y1, x2, y2, dx, dy, dxdy;
101 for (y = 0; y < h; y++, Index += Skip)
113 for (x = 0; x < w; x++)
127 Avg = (int)((Sums[x2 + y2 * w] - Sums[x1 + y2 * w] - Sums[x2 + y1 * w] + Sums[x1 + y1 * w] + (dxdy >> 1)) / dxdy);
129 Data[Index++] = v <= Avg -
Threshold ? 0 : 0x01000000;
Implements a Matrix, basic component for computations in Image Processing and Computer Vision.
int Height
Height of matrix (number of rows)
T[] Data
Underlying data on which the matrix is defined.
int Width
Width of matrix (number of columns)
int Skip
Number of elements to skip from the right edge in the underlying data to the left edge of the new row...
int Start
Start offset of matrix in underlying data.