For land and sea surface monitoring applications that rely on optical Earth Observation satellite images, it is required that cloud and cloud shadow areas in the images are detected and removed. As a consequence, the frequency of obtaining new images can be increased and short-term changes can be studied more effectively. In this paper, an algorithm is designed that is able to automatically detect clouds and shadows in medium-resolution optical multi-spectral images. The developed system is a frame-based image processing technique utilizing multiple spectral bands for feeding a cloud and shadow detector, where possible cloud contamination is recursively removed from the input images. The cloud detector utilizes Brightness Temperature Differences in the spectral regions of Far IR (FIR) and Thermal IR (TIR). After careful considerations, the reflective band FIR was adopted for usage in this Difference Image. The shadow detector uses Background Subtraction, which iteratively constructs its Reference Image automatically. This iterative nature is exploited to utilize time-sequential characteristics among the input images. After experiments, 94.6% of the clouds are detected, with a precision of 86.5%, as determined using per-pixel ground-truth data. For shadows, these statistics are 77.1% and 75.8%, respectively and may be further improved in future work. Selected mid-resolution Landsat images have been used for the validation. Index Terms — Cloud Detection, Shadow Detection, Multi-Spectral Satellite Images, Time-Sequential Characteristics, Ground-Truth Based Validation