public IImageIterator <T> Offset(int steps) { ImageColumnIterator <T> result = this; result.Advance(steps); return(result); }
public int Difference(ImageColumnIterator <T> rhs) { if (this.image == rhs.image && this.column == rhs.column) { return(this.row - rhs.row); } throw new ArgumentException(); }
public int Difference(IImageIterator <T> obj) { if (obj is ImageColumnIterator <T> ) { ImageColumnIterator <T> rhs = (ImageColumnIterator <T>)obj; return(Difference(rhs)); } throw new ArgumentException(); }
public override bool Equals(object obj) { if (obj is ImageColumnIterator <T> ) { ImageColumnIterator <T> rhs = (ImageColumnIterator <T>)obj; return(Equals(rhs)); } return(false); }
/// <summary> /// Performs a one dimensional convolution in the y direction /// </summary> /// <param name="source"></param> /// <param name="target"></param> /// <param name="kernel"></param> private static void SeparableConvolveY(IImage <double> source, IImage <double> target, Kernel1D kernel) { Debug.Assert(kernel.Left <= 0); Debug.Assert(kernel.Right >= 0); int w = source.Width; int h = source.Height; Debug.Assert(h >= kernel.Right - kernel.Left + 1, "Kernel cannot be longer than line"); for (int x = 0; x < w; ++x) { ImageColumnIterator <double> cs = source.GetColumnIterator(x, 0); ImageColumnIterator <double> csEnd = source.GetColumnIterator(x, source.Height); ImageColumnIterator <double> ct = target.GetColumnIterator(x); ConvolveLine(cs, csEnd, ct, kernel); } }
public bool Equals(ImageColumnIterator <T> rhs) { return(image == rhs.image && row == rhs.row && column == rhs.column); }