As a first approach you can identify clouds, e.g. the Landsat TM/ETM+ Automatic Cloud Cover Assessment (ACCA). An implementation you find here: http://grass.osgeo.org/grass70/manuals/i.landsat.acca.html i.landsat.acca
As was told, you can try FMASK (not the best option, but). YOu can download it here
https://code.google.com/p/fmask/
Info about it here http://www.sciencedirect.com/science/article/pii/S0034425711003853
If you aren't interested in aditional postprocessing the data, you just can download Landsat surface reflectance product from http://earthexplorer.usgs.gov/ (registration needed, but it's free). Almost all the Landsat data (Landsat 4/5, 7 ETM+ slc -on/-off, Landsat 8 OLI/TIRS) can be requested and downloaded as sr product in *.hdf format. it includes *TIFF bands with clouds, cloud shadows and some buffer called adjusted clouds. More about this you can find here http://landsat.usgs.gov/CDR_LSR.php
I do agree with @Alber_Sanchez, he is right about the method he recommends. I've used it sometime and it has worked for me.
I could recommend you some example where I worked with MSG SEVIRI (Meteosat Second Generation Spinning Enhanced Visible and InfraRed Imager) data and processed it with Bilko (UNESCO-ESA open source software, available at http://www.learn-eo.org/software.php).
In order to understand how clouds are detected and interpreted in satellite imagery, have a look at Alonso et al. (2013) "Prediction of cloudiness in short time periods using techniques of remote sensing and image processing" (see attached), as well as J. Schmid's "The SEVIRI instrument".
First, need to calculate bright temperature , build mask according to temperature of the cloud area and then mask out using the cloud area, Also can read my paper.
Has anyone once used envi(v5.3.1) the calculate cloud mask using fmask algorithm to recognize the cloud area of landsat8? I have done some tests, but the output mask was very strange. It makes the whole image range into one cloud mask. It really confused me, because even if I have set the cloud threshold 90%,the output mask still covers the whole image.
You can use QGIS SCP plugin from Congedo, Luca for this task:
"Before the land cover change assessment, we need to remove cloud cover pixels in the image acquired on 2017-02-10. Of course we could perform the same process for all the other images."
See more details at this link: https://semiautomaticclassificationmanual.readthedocs.io/en/latest/tutorial_2.html#id20
we can't remove the clouds from satellite images, so its better to skip the image and choose another one. neither radiometric correction and nor atmospheric correction could remove the clouds. I had the same problem but simply I skipped and choose another image.