Change detection dataset (http://www.changedetection.net/) is a set of benchmarks for testing and ranking existing and new algorithms for change and motion detection.
In OpenCV library my implementation of BackgroundSubtractorMOG2 includes the basic per pixel calculation. It is not the best but it might help to understand the principle where the assumption is that the pixel remains the same color but only changes brightness when in shadow.
The only difference is that number of components is also adapted per pixel. In this way it can get faster. If the prunning parameter is set to zero than it becomes the same.
And the implementation in the OpenCV includes the shadow detection on top of that.
In http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=5946556&tag=1
The authors propose an adaptive Local-Patch Gaussian Mixture Model (LPGMM) as the dynamic background model for detecting moving objects from video with dynamic background. Furthermore, SVM classification is employed to discriminate between foreground objects and shadow regions. I think this could be a good method for your goal because it detects the the shadows in a dynamic background context.
In this paper they have used simple background subtraction method.http://sibgrapi.sid.inpe.br/col/sid.inpe.br/banon/2005/07.15.19.32/doc/jacquesjj_shadow.pdf