It creates a new bitmap to draw on-to, and I think you missed it bmp[bitmap].Threshold(bmp[*result*], alpha, beta, method, c);

as in it's drawing the thresholding onto a new bitmap, in this case the result