如何计算像素线中最亮点的质心?

时间:2010-02-17 13:52:12

标签: computer-vision pixels

我希望能够计算一行像素中的“平均最亮点”。这是一个原始的3D扫描仪。

用于测试我简单地逐步通过像素,如果当前像素比之前的像素更亮,则该线的最亮点将被设置为当前像素。这当然会在整个图像中产生非常抖动的结果。

我希望获得'平均亮度中心',如果这是有道理的。

alt text

必须是一个常见的东西,我只是缺乏谷歌搜索的正确单词。

3 个答案:

答案 0 :(得分:3)

计算偏移的强度加权平均值。

考虑你的例子的强度(猜测)和抵消:

0  0  0  0  1  3  2  3  1  0  0  0  0  0
1  2  3  4  5  6  7  8  9 10 11 12 13 14

这会给你(5+3*6+2*7+3*8+9)/(1+3+2+3+1) = 7

答案 1 :(得分:1)

您正在寻找带有过滤器的1D Convolution,您可以使用该过滤器“卷积”图像。例如,您可以使用中值过滤器(借用维基百科的示例)

x = [2 80 6 3]
y[1] = Median[2 2 80] = 2
y[2] = Median[2 80 6] = Median[2 6 80] = 6
y[3] = Median[80 6 3] = Median[3 6 80] = 6
y[4] = Median[6 3 3] = Median[3 3 6] = 3
so
y = [2 6 6 3]

所以在这里,窗口大小是3,因为你一次看3个像素并用中位数替换这个窗口周围的像素。一个3的窗口意味着,我们看看之前的第一个像素和我们当前正在评估的像素之后的第一个像素,5表示之前和之后的2个像素,等等。

对于mean filter,除了用所有值的平均值替换窗口周围的像素外,你做同样的事情,即

x = [2 80 6 3]
y[1] = Mean[2 2 80] = 28
y[2] = Mean[2 80 6] = 29.33
y[3] = Mean[80 6 3] = 29.667
y[4] = Mean[6 3 3] = 4
so
y = [28 29.33 29.667 4]

因此,对于您的问题y[3]是“最明亮的点”。

请注意y[1](前面没有像素)和y[4](后面没有像素)处理边框的方式 - 此示例“复制”边框附近的像素。因此,我们通常使用复制或常量边框“填充”图像,对图像进行卷积,然后删除这些边框。

这是一个标准操作,您可以在许多计算软件包中找到它。

答案 2 :(得分:0)

你的问题就像找到最长的序列问题一样。一旦你能够确定一个序列(起点和长度),剩下的就是找到中位数,这是中心元素。 为了找到序列,必须存在明亮和暗的定义,或者相对 - >先前值或先前值的两个值。绝对:固定的门槛。