Image restoration is a critical procedure for underwater images, which suffer from serious color deviation and edge blurring. Restoration can be divided into two stages: de-scattering and edge enhancement. First, we introduce a multi-scale iterative framework for underwater image de-scattering, where a convolutional neural network is used to estimate the transmission map and is followed by an adaptive bilateral filter to refine the estimated results. Since there is no available dataset to train the network, a dataset which includes 2000 underwater images is collected to obtain the synthetic data. Second, a strategy based on white balance is proposed to remove color casts of underwater images. Finally, images are converted to a special transform domain for denoising and enhancing the edge using the non-subsampled contourlet transform. Experimental results show that the proposed method significantly outperforms state-of-the-art methods both qualitatively and quantitatively.