/// <summary> /// Высчитать эйлеровоую характеристику для 2D imageSource. /// </summary> /// <param name="imageSource">Ссылка на изображение.</param> /// <returns>Эйлеровая характеристика.</returns> public static EulerMonomap2D Compute2D(IMonomap imageSource) { Dictionary <string, int> eulerValue = EulerSquares2D.ToDictionary(item => item.SquareIdent, item => 0); var fragment2DSize = 2; IMonomap stretchPad = new StretchPad(imageSource); for (int y = 0; y < stretchPad.Height - fragment2DSize + 1; y++) { for (int x = 0; x < stretchPad.Width - fragment2DSize + 1; x++) { for (int i = 0; i < EulerSquares2D.Length; i++) { var eulerSquare = EulerSquares2D[i]; if (eulerSquare.IsSquareDetected(x, y, stretchPad)) { eulerValue[eulerSquare.SquareIdent]++; break; } } } } return(new EulerMonomap2D(eulerValue)); }
public void StretchPadSizeTest() { BitmapPad pad = new BitmapPad(); pad.SetPoint(0, 0); StretchPad stretchPad = new StretchPad(pad); Assert.AreEqual(stretchPad.Height, 3); Assert.AreEqual(stretchPad.Width, 3); }
public void StretchPadContantTest() { BitmapPad pad = new BitmapPad(); pad.SetPoint(0, 0); StretchPad stretchPad = new StretchPad(pad); Assert.IsFalse(stretchPad[0, 0]); Assert.IsFalse(stretchPad[1, 0]); Assert.IsFalse(stretchPad[2, 0]); Assert.IsFalse(stretchPad[0, 1]); Assert.IsTrue(stretchPad[1, 1]); Assert.IsFalse(stretchPad[2, 1]); Assert.IsFalse(stretchPad[0, 2]); Assert.IsFalse(stretchPad[1, 2]); Assert.IsFalse(stretchPad[2, 2]); }