custom grayscale conversion

I'm trying to improve my edge detection and found out, what is logical: some edges are detected better in the red channel, others in the green etc.
I would like to use only one Canny-call and not three on each channel. When I use BGR2GRAY the mixture of the channels is not optimal for my camera live image.

Is it possible to change the weight of each channel during the conversion?
Or is there any known custom algorithm for this?