我有一个非常简单的公式,可以将距离增加到从中心(斑点)测量的像素。每个距离乘以一个特定值(像素的亮度)。
for each pixel:
distance += sqrt(dx*dx+dy*dy) * brightness
sumBr += brightness
finally:
distance /= sumBr
dx和dy可以是非整数,因为它们是从亮度计算的中心的增量(每个像素x *亮度和y *亮度除以亮度之和)。
这使我能够准确读取(斑点的)平均距离。
这一切都运行正常,但有时Math.sqrt()函数占用了大量的处理时间,我认为这可能是不必要的。
这个问题可能很简单,但我还没有成功解决它。
已添加:一次尝试
float sumX = 0f;
float sumY = 0f;
float sumBr = 0f;
for pixels:
sumX += Math.abs(dx) * brightness
sumY += Math.abs(dy) * brightness
sumBr += brightness;
finally:
sumX /= sumBr;
sumY /= sumBr;
float distance = Math.sqrt(sumX * sumX + sumY * sumY);
这次尝试给我的偏差约为10%。使用sqrt in loop:0.342,0.101且不含:0.319,0.093。我想知道哪个更准确,因为最后一个看起来不太可能有精确丢失的麻烦。我想我必须写一个测试才能找到答案,但不幸的是,我现在还没时间去研究它。
编辑:经过一番思考后,上述情况永远不会奏效。