If the image looks very grey, you could also try applying the equalizeHist on YUV image - Y channel, note that this will change the colours of the image but it might make it visually/computationally better (in some sense). A code snippet to try quickly (all _ptr are pointers to IplImage):
cvCvtColor( RGB_image_ptr, YUV_image_ptr, CV_RGB2YUV );