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; } } } }
public ImageMap Convolve(ImageMap img) { return(ConvolutionFilter.Convolve(img, mask)); }