public static void Convolve1D(ImageMap dest, ConvLinearMask mask,
                                      ImageMap src, Direction dir)
        {
            int maxN;   // outer loop maximum index 外环最大索引
            int maxP;   // inner loop maximum index 内环最大索引

            if (dir == Direction.Vertical)
            {
                maxN = src.XDim;
                maxP = src.YDim;
            }
            else if (dir == Direction.Horizontal)
            {
                maxN = src.YDim;
                maxP = src.XDim;
            }
            else
            {
                throw (new Exception("TODO: invalid direction"));
            }

            for (int n = 0; n < maxN; ++n)     //外环
            {
                for (int p = 0; p < maxP; ++p) //内环
                {
                    double val = ConvolutionFilter.CalculateConvolutionValue1D(src, mask, n, p, maxN, maxP, dir);


                    if (dir == Direction.Vertical)
                    {
                        dest[n, p] = val;
                    }
                    else
                    {
                        dest[p, n] = val;
                    }
                }
            }
        }
Beispiel #2
0
 public ImageMap Convolve(ImageMap img)
 {
     return(ConvolutionFilter.Convolve(img, mask));
 }