0

在我的应用程序中,我正在获取包含屏幕上某些光源的投影的图像(由高速摄像机捕获)。

1-我的第一个任务是绘制光强度的 PDF 或强度分布图,它应该呈钟形或高斯分布,因为在中心,光强度将最大,而在末端它会减弱。像这样(例如,不是我的确切情况): 在此处输入图像描述

在最坏的情况下,我将同时点亮一系列光源。在这种情况下,理论上我应该得到重叠的钟形曲线或高斯曲线,有些像这样:在此处输入图像描述

给定光投影图像(如图中的那个),我如何绘制这样的曲线?

2-绘制高斯曲线后,接下来的工作就是分析相同的内容,例如找出曲线的宽度和高度。我该怎么做?

我想要这个应用程序的可执行文件,所以我的客户不接受 MATLAB 或类似工具提供的解决方案。我也希望解决方案能够实时或接近实时地工作。

我想 OpenCV 可以在这里使用。但在我开始之前,我想知道这个论坛上图像处理大师的意见。特别是对于上面的步骤-1,我需要一些输入。

这里有任何指示吗?

Rgrds,

赫什舍姆

注意:图片取自http://pentileblog.com

4

2 回答 2

0

要将 1D 高斯从 2D 中提取出来,您可以根据您的实际需要做几件事。- 你可以总结图像的每一列;- 您可以找到强度的局部最大值并仅复制该行图像的强度分布;- 您可以对图像进行阈值处理(以防您的最大值将饱和并因此处于平稳状态),确定剩余斑点的重心,并复制该行的强度分布;- 如果应用程序需要它(例如,如果斑点未水平对齐),您可以阈值、查找轮廓、确定多个局部最大值并获取多个强度配置文件。

要获得高度和宽度,这很容易,只需找到最大值以及曲线下降到最大值一半的左右点即可。标准差是两点之间的距离除以 2.35(维基百科链接)。

于 2012-04-11T11:47:02.437 回答
0

好吧,我解决了它:

算法如下:

1-使用 cvSampleLine 读取图像的特定行

2- 使用 cvMinMaxLoc 知道一行中的最大像素值

3-注意这些线中的哪一条具有最高的像素值。让我们说行号。150

4- 绘制第 150 行的像素值。

我使用 MATLAB 来验证我的结果和图表,OpenCV 结果完全一样。谢谢你们的建议。

于 2012-04-12T11:48:41.937 回答