C#'ta pointerları nasıl dizi gibi kullanabilirim?

C# ile görüntü işleme projesi geliştiriyorum.Mesela resmi griye çevirmek istiyorum.Elimde resme ait bir byte dizisi var.Resmi griye çevirmek için yapmak istediğim işlem üçer üçer dizideki değerleri toplayıp üçe bölmek.Performansı artırmak için pointer kullanmak istiyorum.Denedim;ancak başarılı olamadım.C# 'ta pointer kullanımı çok fazla bilinen ve araştırılan bir konu değil.Bilen biri yardımcı olabilirse bu konuyu araştıran diğer kişiler için de faydalı olabilir.
Örnek kod:

public static byte[] GrayFilter(byte[] data)
        {
            byte[] gr = new byte[data.Length];
            for (int i = 0; i < data.Length; i += 3)
            {
                int temp = ((data[i] + data[i + 1] + data[i + 2]) / 3);
                gr[i] = (byte)temp;
                gr[i + 1] = (byte)temp;
                gr[i + 2] = (byte)temp;
            }
            return gr;
        }