Recently, I read an interesting post about colour transfer between images from http://www.pyimagesearch.com/2014/06/30/super-fast-color-transfer-images/.
After reading the original literature  by Reinhard, et al, the actual algorithm is pretty straightforward. It consists of two main parts:
- First is to convert the image colour space from RGB into CIE Lab space, which is closer to human visual system, and well suited for natural scenes
- Try to fit the colour / lab channel distribution of our target image to our source image.
And here are some of the sample output images from performing colour transfer. The source image is on the left, the middle one is the original target image, and the right one is the result of colour transfer
The code itself is also very simple to implement. You can check my github repository for the C++ / OpenCV code to perform colour transfer over here: https://github.com/subokita/Sandbox/tree/master/ColorTransfer