如何从该数组中排除和计算大于 4095 的值:编辑:所以这是我拥有的最终代码,它基本上适用于某些鼠标点,但是有一些例外情况,深度和相邻值之间的差异太大(参见http://s7.directupload.net/images/131007/uitb86ho.jpg上的绿色标记框)。屏幕截图中有一个红色框,其中包含 441 个像素,这 441 个像素的平均值为 1198 毫米,其中 x;y 15;463 上的深度仅为约 614 毫米。不知道较大的平均值来自哪里,因为它应该被 if 条件(d < 4095)排除在外。
protected void imageIR_MouseClick(object sender, System.Windows.Input.MouseEventArgs e)
{
// Get the x and y coordinates of the mouse pointer.
System.Windows.Point mousePoint = e.GetPosition(imageIR);
double xpos_IR = mousePoint.X;
double ypos_IR = mousePoint.Y;
int x = (int)xpos_IR;
int y = (int)ypos_IR;
lbCoord.Content = "x- & y- Koordinate [pixel]: " + x + " ; " + y;
int d = (ushort)pixelData[x + y * this.depthFrame.Width];
d = d >> 3;
int xpos_Content = (int)((x - 320) * 0.03501 / 2 * d/10);
int ypos_Content = (int)((240 - y) * 0.03501 / 2 * d/10);
xpos.Content = "x- Koordinate [mm]: " + xpos_Content;
ypos.Content = "y- Koordinate [mm]: " + ypos_Content;
zpos.Content = "z- Koordinate [mm]: " + (d);
// Calculate the average value of array element
int sum = 0;
int i;
i = Convert.ToInt32(gr_ordnung.Text);
i = int.Parse(gr_ordnung.Text);
int m;
int n;
int d_mw = 0;
int count = 0;
for (m = x - i; m <= x + i; m++)
{
for (n = y - i; n <= y + i; n++)
{
int d_array = (ushort)pixelData[m + n * this.depthFrame.Width];
d_array = d_array >> 3;
// With condition that if one of those values is more than 4095:
if (d_array <= 4095)
{
sum += d_array;
count++;
d_mw = sum / count;
}
tiefen_mw.Content = "Tiefen-MW [mm]: " + d_mw;
}
}
}
因此,“if”条件意味着如果我有d_array(在我的情况下为 100 个像素)从 m = xi 到 m = x+i 和 n = yi 到 n = y+i 小于 4095,那么只需执行“正常” ' 计算其中平均值是所有值的总和除以总元素的数量。
现在“else”条件意味着:如果我的d_array值大于 4095,那么它应该被声明为 0,并且不计入平均值。我是否正确编写了语法?