Beispiel #1
0
        private int[,] GetIntegralMask(Mat mask)
        {
            var integral = new int[mask.Rows, mask.Cols];
            var mat3     = new MatOfByte(mask);
            var indexer  = mat3.GetGenericIndexer <int>();

            for (var i = 0; i < mask.Rows; i++)
            {
                for (var j = 0; j < mask.Cols; j++)
                {
                    var sum    = 0;
                    var substr = false;

                    if (i != 0)
                    {
                        if (j != 0)
                        {
                            substr = true;
                        }

                        sum += integral[i - 1, j];
                    }

                    if (j != 0)
                    {
                        sum += integral[i, j - 1];
                    }

                    if (substr)
                    {
                        sum -= integral[i - 1, j - 1];
                    }

                    sum += indexer[i, j] > 0 ? 1 : 0;

                    integral[i, j] = sum;
                }
            }

            return(integral);
        }