I. Introduction
In the last decades, satellite images have become one of the most powerful tools for monitoring earth ecosystem. Their utilization were found in various fields such as land cover observation, hazard monitoring, crop forecasting, urbanization and military operation. However, an appearance of clouds on satellite images can severely degrade the quality, and limit the use of satellite images. Thus, a cloud removal is a significant task that must be addressed in order to recover a large number of unused satellite images suffered by cloud contamination. However, cloud removal is a challenging task since the land cover materials underneath the clouds are often unknown or changed over time. Furthermore, even the images that acquired from the same sensors, the reflectance of the surface can be different due to details changing on the surface such as seasonal plantation, urban expansion and human activities which can be very difficult to predict.