跳转到内容

pcfilter

<type> pcfilter(int handle, string channel_name, ...)

使用简单的重建过滤器对pcopen排队的点进行过滤。

该函数大致等同于:

float pcfilter(int handle; string channel)
{
float sum, w, d;
float value, result = 0;
while (pciterate(handle))
{
pcimport(handle, "point.distance", d);
pcimport(handle, channel, value);
w = 1 - smooth(0, radius, d);
sum += w;
result += w * value;
}
result /= sum;
return result;
}

pcfilter 函数获取点云打开的点并生成一个过滤后的值。以下公式展示了如何对各个点进行加权计算。

w_i = 1-smooth(0, maxd*1.1, d_i);

maxd 是最远点的距离,w_i 是给定距离(d_i)处点的权重。使用该公式时,距离中心较近的点会被赋予更高的权重,而不是简单的平均值。