public double Area(int x1, int y1, int x2, int y2) { if (x2 < x1 || y2 < y1) { // TODO: throw? return(0.0); } double area = m_image.Get(x2, y2); if (x1 > 0) { area -= m_image.Get(x1 - 1, y2); if (y1 > 0) { area += m_image.Get(x1 - 1, y1 - 1); } } if (y1 > 0) { area -= m_image.Get(x2, y1 - 1); } //std::cout << "Area("<<x1<<","<<y1<<","<<x2<<","<<y2<<") = "<<area<<"\n"; return(area); }
public void Test1() { Image image = new Image(12, 0); ImageBuilder builder = new ImageBuilder(image); ChromaResampler resampler = new ChromaResampler(2, builder); double[] d1 = { 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double[] d2 = { 1.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double[] d3 = { 2.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; resampler.Consume(d1); resampler.Consume(d2); resampler.Consume(d3); Assert.AreEqual(1, image.Rows); Assert.AreEqual(0.5, image.Get(0, 0)); Assert.AreEqual(5.5, image.Get(0, 1)); }
public void TestDiff() { double[] coefficients = { 1.0, -1.0 }; Image image = new Image(12); ImageBuilder builder = new ImageBuilder(image); ChromaFilter filter = new ChromaFilter(coefficients, builder); double[] d1 = { 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double[] d2 = { 1.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double[] d3 = { 2.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; filter.Consume(d1); filter.Consume(d2); filter.Consume(d3); Assert.AreEqual(2, image.Rows); Assert.AreEqual(-1.0, image.Get(0, 0)); Assert.AreEqual(-1.0, image.Get(1, 0)); Assert.AreEqual(-1.0, image.Get(0, 1)); Assert.AreEqual(-1.0, image.Get(1, 1)); }
public void TestBlur3() { double[] coefficients = { 0.5, 0.7, 0.5 }; Image image = new Image(12, 0); ImageBuilder builder = new ImageBuilder(image); ChromaFilter filter = new ChromaFilter(coefficients, builder); double[] d1 = { 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double[] d2 = { 1.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double[] d3 = { 2.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double[] d4 = { 3.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; filter.Consume(d1); filter.Consume(d2); filter.Consume(d3); filter.Consume(d4); Assert.AreEqual(2, image.Rows); Assert.AreEqual(1.7, image.Get(0, 0), TestsHelper.EPS); Assert.AreEqual(3.399999999999999, image.Get(1, 0), TestsHelper.EPS); Assert.AreEqual(10.199999999999999, image.Get(0, 1), TestsHelper.EPS); Assert.AreEqual(11.899999999999999, image.Get(1, 1), TestsHelper.EPS); }