我希望能够计算一行像素中的“平均最亮点”。它适用于原始的 3D 扫描仪。
为了进行测试,我只是简单地遍历像素,如果当前像素比之前的像素亮,则该行的最亮点将设置为当前像素。这当然会在整个图像中产生非常不稳定的结果。
如果有意义的话,我想获得“亮度的平均中心”。
必须是一件常见的事情,我只是缺少谷歌搜索的正确词。
我希望能够计算一行像素中的“平均最亮点”。它适用于原始的 3D 扫描仪。
为了进行测试,我只是简单地遍历像素,如果当前像素比之前的像素亮,则该行的最亮点将设置为当前像素。这当然会在整个图像中产生非常不稳定的结果。
如果有意义的话,我想获得“亮度的平均中心”。
必须是一件常见的事情,我只是缺少谷歌搜索的正确词。
计算偏移量的强度加权平均值。
鉴于您的示例的强度(猜测)和偏移量:
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
您正在寻找一维卷积,它采用一个过滤器,您可以使用它“卷积”图像。例如,您可以使用中值过滤器(从 Wikipedia 借用示例)
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 个像素,依此类推。
对于均值滤波器,除了用所有值的平均值替换窗口周围的像素外,您执行相同的操作,即
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]
(之后没有像素)——这个例子“复制”了边界附近的像素。因此,我们通常“填充”具有复制或恒定边界的图像,对图像进行卷积,然后移除这些边界。
这是您可以在许多计算包中找到的标准操作。
你的问题就像找到最长的序列问题。一旦你能够确定一个序列(起点和长度),剩下的就是找到中值,它是中心元素。为了找到序列,必须存在明暗的定义,或者是相对的 -> 先前的值或几个先前的值。绝对:一个固定的阈值。