【发布时间】:2011-10-26 23:01:52
【问题描述】:
我有一些离散值和假设,这些值位于高斯曲线上。 应该有一个只使用 3 个离散值的最大计算算法。 你知道实现这个计算的 C/C++ 中的任何库或代码吗?
谢谢!
附: 最初的任务是实现自动对焦。我移动(显微镜)相机并在不同位置拍摄照片。具有最多不同颜色的位置应该具有最佳焦点。
编辑 这是很久以前的事了:-( 我只是想删除这个问题,但尊重好的答案。
【问题讨论】:
-
基本上,您需要一个高斯拟合。这可以通过残酷的fitting a parabola on the logarithm of your y来完成;在您的特定情况下,这非常容易,因为通过三个点,您可以确定一条穿过它们的抛物线。
-
谢谢。不幸的是,该链接是一个 Matlab 实现,但“高斯拟合”是谷歌的一个很好的起点。
-
我为您的具体案例写了一个广泛的答案,请查看。 :)
-
这是用于什么样的显微镜?当您说“最不同的颜色”时,您是在谈论直方图的宽度吗?还是您真的在看 RGB 相机图像?
-
@Jonas Heidelberg:显微镜由不同的部件组成(自制)——没有现成的。目前,我确实查看了图片每 100 行的每个像素(实际上只有绿色)。同时,我们发现,这种方法不够稳定,例如因为一些(不良焦点)图片会产生渐变 - 这会导致多种颜色。但是,高斯拟合将有助于任何其他启发式方法。谢谢!
标签: c++ c discrete-mathematics curve-fitting gaussian