下面是我用c#写的平均值滤波法方法: public unsafe void ArithmeticFilterAverage(System.Drawing.Imaging.BitmapData bd)
        {
            byte r, g, b;
            for (int i = 0; i < bd.Height; i++)
            {
                for (int j = 0; j < bd.Width; j++)
                {
                    if (i == 0 || j == 0 || i == bd.Height - 1 || j == bd.Width - 1)
                    {
                        continue;
                    }
                    else
                    {
                       byte* p1 = _P - 3*bd.Width - 3;
                       byte* p2 = _P - 3 * bd.Width;
                       byte* p3 = _P - 3 * bd.Width + 3;
                       byte* p4 = _P - 3;
                       byte* p5 = _P + 3;
                       byte* p6 = _P + 3 * bd.Width - 3;
                       byte* p7 = _P + 3 * bd.Width;
                       byte* p8 = _P + 3 * bd.Width + 3;                       
                       r = (byte)((p1[0] + p2[0] + p3[0] + p4[0] + p5[0] + p6[0] + p7[0] + p8[0] + _P[0]) / 9);
                       g = (byte)((p1[1] + p2[1] + p3[1] + p4[1] + p5[1] + p6[1] + p7[1] + p8[1] + _P[1]) / 9);
                       b = (byte)((p1[2] + p2[2] + p3[2] + p4[2] + p5[2] + p6[2] + p7[2] + p8[2] + _P[2]) / 9);
                      _P[0] = r;
                      _P[1] = g;
                      _P[2] = b;
                    }                   
                    _P = _P + 3;
                }
            }
        }
在执行 r = (byte)((p1[0] + p2[0] + p3[0] + p4[0] + p5[0] + p6[0] + p7[0] + p8[0] + _P[0]) / 9); 这一行时出现如下错误:  尝试读取或写入受保护的内存。这通常指示其他内存已损坏。