Skip to content

iammuhammad41/image-denoising-autoencoders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 

Repository files navigation

Medical Image Denoising Using Convolutional Autoencoders

This project implements the denoising autoencoder described in the paper β€œMedical Image Denoising Using Convolutional Denoising Autoencoders” and compares its performance against median filtering on a dental X‑ray dataset.

πŸ“ Project Structure

medical-image-denoising/
β”œβ”€β”€ notebooks/
β”‚   └── denoising_autoencoder.ipynb   # Kaggle/Colab notebook implementing the method
β”œβ”€β”€ data/
β”‚   └── Dataset/                      # Grayscale dental X‑ray images (.jpg)
β”œβ”€β”€ results/
β”‚   β”œβ”€β”€ figures/                      # Sample denoising visualizations
β”‚   └── metrics.txt                   # PSNR comparison results
└── README.md                         # This file

βš™οΈ Requirements

  • Python 3.7+
  • TensorFlow / Keras
  • numpy, pandas
  • matplotlib, OpenCV

Install via pip:

pip install tensorflow numpy pandas matplotlib opencv-python

πŸ“‚ Data

The dataset consists of 120 grayscale dental X‑ray images located in data/Dataset/. Example files:

/kaggle/input/medical-image-dataset/Dataset/1.jpg
/kaggle/input/medical-image-dataset/Dataset/2.jpg
…

Images are resized to 64β€―Γ—β€―64 pixels and normalized to [0,1].

🧠 Model Architecture

A convolutional denoising autoencoder with symmetric encoder–decoder layers:

  • Encoder: two Conv2D+ReLU blocks with 64 filters, followed by MaxPooling
  • Decoder: two Conv2D+ReLU blocks with UpSampling, ending in a single-channel sigmoid output
  • Loss: binary crossentropy

Model summary:

Input: (64,64,1)
Conv1 β†’ pool1 β†’ Conv2 β†’ pool2 β†’ Conv3 β†’ upsample1 β†’ Conv4 β†’ upsample2 β†’ Conv5
Output: (64,64,1)

πŸš€ Training

  1. Noise injection: Gaussian noise (Οƒ=1) scaled by 0.07 is added to clean images.
  2. Train/test split: first 100 images for training, last 20 for validation.
  3. Hyperparameters: 40 epochs, batch size 10, Adam optimizer.
  4. Early stopping: patience=10 on validation loss.

Notebook cell example:

model.fit(x_noisy, x_noisy,
          epochs=40,
          batch_size=10,
          validation_data=(x_test_noisy, x_test_noisy),
          callbacks=[EarlyStopping(...)] )

πŸ“Š Evaluation

  • Visual comparison: plots of original, noisy, denoised (autoencoder), and median‑filtered images.

  • Quantitative metric: Peak Signal‑to‑Noise Ratio (PSNR). Example:

    • Autoencoder: 69.89β€―dB
    • Median filter: 58.46β€―dB

Compute PSNR:

def PSNR(orig, denoised):
    mse = np.mean((orig - denoised)**2)
    return 20 * log10(255.0 / sqrt(mse))

▢️ Usage

  1. Open denoising_autoencoder.ipynb in Kaggle or Colab.
  2. Ensure the dataset is available under data/Dataset/.
  3. Run all cells to preprocess, train, and evaluate.
  4. View sample outputs in the results/figures/ folder.

πŸ“– References

  • The original paper: Medical Image Denoising Using Convolutional Denoising Autoencoders.
  • Median filtering baseline: OpenCV cv2.medianBlur with kernel size 5.

About

Medical image denoising using convolutional autoencoders

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors