寻找使用离散值计算高斯曲线最大值的C / C ++库
我有一些离散值和假设,这些值位于高斯曲线上。 应该使用仅使用3个离散值的最大计算算法。 你知道实现这个计算的C / C ++中的库或代码吗?
谢谢!
PS:原始任务是自动对焦实施。 我移动(显微镜)相机并在不同位置捕捉图片。 具有最不同颜色的位置应该具有最佳焦点。
编辑这是很久以前:-(我只是想删除这个问题,但让它尊重这个好答案。
你有三个点应该是高斯曲线; 这意味着他们躺在function上:
如果你取这个函数的对数,你会得到:
这只是一个简单的二阶多项式,即一个垂直轴为simautry的抛物线:
同
因此,如果你知道抛物线的三个系数,你可以导出高斯曲线的参数; 顺便说一句,高斯函数的唯一一个你感兴趣的参数是b ,因为它告诉你分布的中心在哪里,即它的最大值。 立即发现这一点
剩下要做的就是拟合抛物线(用“原始”x和你的值的对数)。 现在,如果你有更多的点,那么将涉及多项式拟合,但是,由于你只有三个点,情况非常简单:只有一个抛物线通过三个点。
您现在只需为每个点编写抛物线方程并求解系统:
(与 ,其中z s是在相应的x)处读取的实际值
这可以通过手工解决(有一些时间),一些CAS或…… 查看StackOverflow :); 因此解决方案是:
因此,使用这些最后的方程式(记住: y s是“真实”值的对数 )和其他关系,您可以轻松编写一个简单的代数公式来获得高斯曲线的参数b,即其最大值。
(我可能在计算中做了一些混乱,在使用结果之前仔细检查它们,无论如何程序应该是正确的)
(感谢http://www.codecogs.com/latex/eqneditor.php获取LaTeX方程式)