Faster than what and on what platform? Any array is a chunk of memory with a series of consecutive objects. An array of bytes therefore looks like this in memory “ByteByteByte…”. When you access an array by a pointer you are accessing each byte by its position in the array. When you access an array by index myArray(someIndex) you are essentially doing the same thing. (Yes there may be some overhead.)
The huge advantage of pointers though is being able to pass a pointer to an object rather than having to make a copy of the object. NETMF like .NET treats arrays as reference types so you pass a reference not a copy by default. (So passing a pointer is not an advantage when you are already passing a reference). Pointers can let you do other tricks like access a byte wide chuck of data at a time from an array of integers for example (but that is tricky and a really good way to create problems.)
Pointers are the #1 way to make your life difficult but are useful at times. My ‘point’ though is just don’t assume you have to do something with pointers, or that by using pointers your code will be better/faster.
In the code the OP posted all the arrays in question were declared locally, so the only speed advantage would be in how NETMF might differ in dealing with a pointer as opposed to an array index. Since NETMF is interpreted I suspect there would be no difference whatsoever. Which brings me to my central theme, “Faster than what and on what platform?”
Try it both ways and see what works better/faster. My guess is that if your concerned with doing a greyscale conversion quickly RLP would be the way to go.