I would suggest to first create a mask of shadow, now there is a lot of different methods like morphological operations have been used to generate the Shadow mask and even in some cases these operations can remove shadows as well, it solely depends on the type of images used.
Check the morphological operation function in MATLAB
If you are dealing with video, then one of the simple but very efficient method of shadow removing is to Create a Background subtractor, these uses Morphological operations, Gaussian and median blur and thresholding. Make sure that the Background images contains shadow, thus it can be removed.
If you are only dealing with images, mask can still be generated by adaptive thresholding then removing shadows is relatively difficult, but it can still be achieved using gradient-integration approach, which now-a-days used for several image processing problems. Basic idea is to compute the spatial derivative for all color channels, use the shadow boundaries from the mask to generate a weight mask, now multiplies this weight mask with the gradient image this reduce the shadow edges, integrate the gradient images to get the shadow removed image.
In fact, you can also try these approaches using different color model HSV can be a good for a try.
further more there are some paper you may refer to as well
I hope it helps.