Supervised Image Super Resolution and Denoising for X-Rays


For this project I worked with Andrew Chen on developing a machine learning algorithm that would simultaneously increase the resolution of an X-Ray, while also removing any noise. For this approach we had two main methods.

The first was a ResNet style Encoder-Decoder network for the X-Ray. This architecture was mainly for denoising. The idea was that the true image and the noise image share some latent space, and so if we could encode into the latent space and then decode the original image we would be able to get a noise free image. For dealing with the super resolution we utilized sub pixel convolution in the final layer of the network. These results gave very good results but for the metric being used our second method worked better.

The second method used was K-nearest neighbor. We first started off with mapping the nearest xray from the training images to the test images based off of the euclidean distance from the input images. This suprisingly gave us around our best result for the previous method, using RSME as our loss function. Next we broke the implementation up into patches and compared each patch. Starting off with 8 patches and then moving up to 256 patches. Using 256 patches we were able to get a much lower loss. We also notices that 256 patches seemed to be the sweet spot because increasing anymore gave us a determental effect. This gave a good result with the loss metric but visually the images looked very choppy.

In the futurue a combination of the two methods could potentially be used to improve the results even more or maybe encorporate some gradient blending with the nearest neighbors. The code and some more documentation can be found here.

Tags:

Updated: