寻找使用离散值计算高斯曲线最大值的C / C ++库

我有一些离散值和假设,这些值位于高斯曲线上。 应该使用仅使用3个离散值的最大计算算法。 你知道实现这个计算的C / C ++中的库或代码吗?

谢谢!

PS:原始任务是自动对焦实施。 我移动(显微镜)相机并在不同位置捕捉图片。 具有最不同颜色的位置应该具有最佳焦点。

编辑这是很久以前:-(我只是想删除这个问题,但让它尊重这个好答案。

你有三个点应该是高斯曲线; 这意味着他们躺在function上:

通用高斯函数

如果你取这个函数的对数,你会得到:

高斯函数的对数

这只是一个简单的二阶多项式,即一个垂直轴为simautry的抛物线:

通用二阶多项式

系数定义

因此,如果你知道抛物线的三个系数,你可以导出高斯曲线的参数; 顺便说一句,高斯函数的唯一一个你感兴趣的参数是b ,因为它告诉你分布的中心在哪里,即它的最大值。 立即发现这一点

b来自beta和alpha

剩下要做的就是拟合抛物线(用“原始”x和你的值的对数)。 现在,如果你有更多的点,那么将涉及多项式拟合,但是,由于你只有三个点,情况非常简单:只有一个抛物线通过三个点。

您现在只需为每个点编写抛物线方程并求解系统:

系统的三点

(与 y和z ,其中z s是在相应的x)处读取的实际值

这可以通过手工解决(有一些时间),一些CAS或…… 查看StackOverflow :); 因此解决方案是:

通过三点解决抛物线问题

因此,使用这些最后的方程式(记住: y s是“真实”值的对数 )和其他关系,您可以轻松编写一个简单的代数公式来获得高斯曲线的参数b,即其最大值。

最后结果

(我可能在计算中做了一些混乱,在使用结果之前仔细检查它们,无论如何程序应该是正确的)

(感谢http://www.codecogs.com/latex/eqneditor.php获取LaTeX方程式)