我正在编写一个android应用程序,它扫描图像并从所述图像创建一种直方图,然后允许用户拖动预定义数量的点的基线。我已经完成了这些部分,但现在我需要能够估计扫描图像中的1000个左右的点和用户定义的基线之间的积分,该基线由设定的间隔内的任意数量的点组成(可能由决定max/min和拐点的算法决定)。每个点阵列定义一条线。
有没有现成的库可以获取Point[]数组并找到两行之间的估计面积?或者我需要自己编写一个自定义算法来处理这个问题?我查看了apache的常用数学,但它似乎需要传入一个数学函数才能找到一个整数。
编辑:
第一行是一个大约1000个点的数组(取决于图像分辨率) {(0,5),(1,10),(2,11),(3,9),....(1000,12)}
第二行可能是5个点(用户决定):{(0,5),(250,9),(500,7),(750,8),(1000,5)}
实际的y值将会大得多,但这是一般的想法。
发布于 2011-07-27 22:46:16
我不确定我是否完全理解了您的需求,但如果您想要查找由您的图像和用户绘制基线的点所定义的面的面积,您可以使用this very simple equation for the area of a non-intersecting polygon
发布于 2011-07-27 22:38:31
我不太明白你想要什么。
,但是我想到了两件事:
如果要计算直方图的积分,可以使用Rieman integral从n个点(xi,yi=f(xi))获得该值。
公式如下:

它们是Rienmann积分的其他表示,如梯形而不是直方图,等等。
例如,如果为ti=(xi+xi+1)/2,则会得到梯形
其他可能性:
您可以使用polynome to interpolate来计算1000个值。
你会得到一个函数f,f(xi)=yi,表示你所有的(xi,yi)点。
然后计算多项式函数的积分(很容易,因为你可以找到一个显式的原语)
示例:
如果P是多项式
I积分
P是P的本原
I=p(xmax)-p(xmin)
备注:
如果你有两条线,只需将一个积分减去另一个。
希望我理解了这个问题,这对我很有帮助
https://stackoverflow.com/questions/6845991
复制相似问题