protected void CollectPixels() { _maskedPixels.Clear(); _inMaskPixels.Clear(); var topX = CurrentPixel.X - MaskSize / 2; var topY = CurrentPixel.Y - MaskSize / 2; for (var iRow = CurrentPixel.Y - MaskSize / 2; iRow <= CurrentPixel.Y + MaskSize / 2; iRow += 1) { for (var iCol = CurrentPixel.X - MaskSize / 2; iCol <= CurrentPixel.X + MaskSize / 2; iCol += 1) { try { var positionedPixel = new PositionedPixel(TraversingImage[iRow, iCol], iCol, iRow); var inMaskPixel = new InMaskPixel(TraversingImage[iRow, iCol], iCol - topX, iRow - topY); _maskedPixels.Add(positionedPixel); _inMaskPixels.Add(inMaskPixel); } catch { // surpressing bad pixel access } } } }
protected override ImageIterator Add(int pixelsToJump) { var newX = (CurrentPixel.X + pixelsToJump) % TraversingImage.Width; var newY = CurrentPixel.Y + (CurrentPixel.X + pixelsToJump) / TraversingImage.Width; if (newY >= TraversingImage.Height) { return(null); } CurrentPixel = new PositionedPixel(TraversingImage[newY, newX], newX, newY); return(this); }
public SequentialProcessingStepEventArgs(Image image, PositionedPixel pixel) { ProcessingImage = image; CurrentPixel = pixel; }
public ImageIterator(Image image) { TraversingImage = image; CurrentPixel = new PositionedPixel(image[0, 0], 0, 0); }