查找两条曲线之间的区域(每条曲线由一系列点组成)

时间:2011-07-27 14:20:45

标签: java android math calculus

我正在编写一个Android应用程序,它扫描图像并从所述图像创建一种直方图,然后允许用户拖动预定义数量的点的基线。我已经完成了这些部分,但是现在我需要能够在设定的时间间隔内估算扫描图像中1000个左右的点与由任意数量的点组成的用户定义基线之间的积分(可能由一个决定最大/分钟和拐点的算法。每个点阵列都定义一条线。

是否有任何现有的库将采用Point []数组并找到两行之间的估计区域?或者我是否需要自己编写自定义算法来处理这个问题?我看了一下apache普通数学,但它似乎需要传递一个数学函数才能找到一个整数。

编辑:
第1行是一个大约1000点的数组(取决于图像分辨率) {(0,5),(1,10),(2,11),(3,9),....(1000,12)}

第2行可能是5分(用户决定): {(0,5),(250,9),(500,7),(750,8),(1000,5)}

真正的y值会大得多,但这是一般的想法。

2 个答案:

答案 0 :(得分:3)

我不确定我是否完全理解你想要的东西,但如果你想找到由你的图像产生的点定义的多边形区域以及用户绘制基线的那些区域,你可以使用{{3 }}

答案 1 :(得分:1)

不确定我明白你想要什么。

但我想到了两件事:

如果要计算直方图的积分,从n个点(xi,yi = f(xi)),您可以使用Rieman integral来获取值。

使用以下公式: enter image description here

它们是Rienmann积分的其他表示,如梯形而不是直方图等......

例如ti=(xi+xi+1)/2你会得到梯形

其他可能性:

您可以使用polynome to interpolate 1000个值。

你将得到一个函数f,f(xi)= yi代表你所有的(xi,yi)点。

然后计算多项式函数的积分(很容易,因为你可以找到一个明确的原语)

示例

如果P是多项式

我是积分

p P

的原语

I = P(XMAX)-p(XMIN)

注意:

如果你有2行,只需用另一行减去一个积分。

希望我理解这个问题并且有所帮助