public void EstimateTest()
{
Point[] points1 =
{
new Point(86, 3),
new Point(262, 7),
new Point(72, 12),
new Point(233, 14),
new Point(222, 16),
new Point(242, 19),
new Point(174, 21),
new Point(199, 22),
new Point(210, 23),
new Point(245, 27),
new Point(223, 28),
new Point(171, 29),
new Point(213, 32),
new Point(206, 34),
new Point(158, 36),
new Point(215, 36),
new Point(194, 40),
new Point(155, 43),
new Point(390, 145),
new Point(325, 151),
new Point(430, 165),
new Point(569, 166),
new Point(548, 171),
new Point(486, 172),
new Point(585, 174),
new Point(513, 175),
new Point(581, 178)
};
//Points 2
Point[] points2 =
{
new Point(94, 3),
new Point(129, 10),
new Point(135, 6),
new Point(100, 16),
new Point(88, 18),
new Point(109, 22),
new Point(35, 23),
new Point(63, 24),
new Point(75, 25),
new Point(112, 30),
new Point(89, 31),
new Point(32, 31),
new Point(78, 35),
new Point(70, 37),
new Point(19, 38),
new Point(80, 39),
new Point(58, 43),
new Point(15, 46),
new Point(259, 151),
new Point(194, 158),
new Point(299, 171),
new Point(433, 171),
new Point(414, 176),
new Point(354, 177),
new Point(449, 178),
new Point(380, 180),
new Point(445, 183)
};
float[,] expected =
{
{ 3.254832E-07f, 1.12779E-05f, 1.551695E-05f },
{ -9.57038E-06f, -3.555409E-07f, 0.009430919f },
{ -0.0003096815f, -0.008560383f, 0.0500053f }
};
// Set a fixed seed to transform RANSAC into a deterministic algorithm
Accord.Math.Random.Generator.Seed = 0;
RansacFundamentalEstimator ransac = new RansacFundamentalEstimator(0.001, 0.99);
float[,] actual = ransac.Estimate(points1, points2);
string str = actual.ToCSharp();
Assert.IsTrue(actual.IsEqual(expected, 1e-3f));
}
}