Skip to content

This package contains multiple 3D OCT denoising methods, including our proposed mixed multiscale BM4D (mmBM4D), which is one of the fastest multiscale 3D OCT denoising methods.

Notifications You must be signed in to change notification settings

ashkan-abbasi66/OCT-denoising-package

Repository files navigation

3D Retinal OCT Denoising Package

This is a flexible and easy to use package for 3-D denoising of retinal optical coherence tomography (OCT) images, which is associated with the following paper:

Ashkan, Abbasi, Amirhassan Monadjemi, Leyuan Fang, Hossein Rabbani, Bhavna Josephine Antony, and Hiroshi Ishikawa, "Mixed Multiscale BM4D for Three-dimensional Optical Coherence Tomography Denoising", Computers in Biology and Medicine, 2023.

Please note that this package also contains codes, datasets, and precomputed results associated with other papers. If you use them, please appropriately cite the corresponding research paper. The toolbox was designed to be almost self-contained, and we tested it on a 64bit PC with Windows® 10 and MATLAB® 2019. For other architectures, you may need to recompile MEX files in some packages.

In short:

  • Start using this toolbox by taking a look at Run_benchmarks_dt1.m. At the begninning of this script, there are variables to select a method to run on the first dataset.

  • You can select between different variants of our proposed mixed multiscale BM4D (mmBM4D) methods by setting any of MS_BM4D_dwt3, MS_BM4D_dwt3_log, MS_BM4D_dualtree3, or MS_BM4D_dualtree3_log to 1 in Run_benchmarks_dt1.m.

  • Final denoised results for some methods are provided in Results folder

Additional information on this toolkit is provided in the following sections.

Available Methods and Datasets

Methods

  • Sparse K-SVD [1] and [2]
    • Note: In [2], dictionaries derived from wavelet transforms was proposed for initialization of the K-SVD denoising method and its sparse version. See here for their implementations.
  • V-BM4D [3] and [4]
  • WMF [5]
  • BM4D [6] and [7]
  • Tensor Dictionary Learning (Tensor DL / TDL) [8]
  • mixed multiscale BM4D (mmBM4D) [9] implemented by exploiting MATLAB®'s dwt3 and dualtree3 functions.

Tested Datasets

For downloading the datasets, refer to their original resources.

Conventions used in this package

1 - All datasets are saved into ./Datasets folder.

  • The first dataset (dt1) is stored in ./Datasets/dt1_Bioptigen_SDOCT.
  • The second dataset (dt2) is stored in ./Datasets/dt2_topcon_oct1000_seg_normal.

2 - Results are being saved into ./Results folder in which a subfolder will be created for each experiment.

3 - All of the methods are stored in ./Methods. The following functions are provided for running the methods in an easy and unified manner:

  • benchmark_X_on_dt1: Runs the denoising method X on the 1st dataset. A function handle is used (as a input argument) to specify the denoising method (X).
  • benchmark_X_on_dt2: Runs the denoising method X on the 2nd dataset.

4 - There are some utility functions for objective image quality assessment. These functions are stored in ./Metrics. After running a denoising method, you can use the following functions to evaluate the metrics for each dataset in an easy and unified manner:

  • evaluate_metrics_dt1
  • evaluate_metrics_dt2

5 - Runner function for each denoising method:

[denoised_imgs,run_time] = run_...(noisy_imgs,params)

6 - Noise estimation method used for a denoising method:

sigma_value = estimate_noise_...(noisy_imgs)

7 - Getting specific parameters of a denoising method:

params = get_params_....(noisy_imgs,sigma_value)

Examples

You can easily run each method by the provided scripts:

  • Run_benchmarks_dt1.m runs the selected methods on the first dataset

Run a denoising method on the 1st dataset

NOTE: In Run_benchmarks_dt1, we provide a simple script to run every methods on the first dataset.

Example 1:

Run the original BM4D on the 1st dataset to denoise two volumes which are specified by test_indices.

addpath(genpath('./Methods'));
addpath('./Metrics/utils');

params.test_indices = [1,3] % denoise volume #1 and #3
params.save_mat = false; % Don't save the denoised volume as a separate MAT-file

X = @run_bm4d; % handle to the runner function for the denoising method

output_folder_name = 'benchmark_bm4d_dt1'; % it will be created in `./Results`
benchmark_X_on_dt1(output_folder_name,X,params)
evaluate_metrics_dt1(output_folder_name,params);

Outputs:

  1. The denoised images are saved into the output folder (./Results/benchmark_bm4d_dt1)
  2. The metric results are shown in a table (like below), and they are also stored in a separate Excel (benchmark_bm4d_dt1.xlsx) file inside the output folder.

  1. All of the command line prompts are saved into a text file (benchmark_bm4d_dt1.txt) inside the output folder.

Run a denoising method on the 2nd dataset

NOTE: Run_benchmarks_dt2 contains full commands to run methods on the first dataset.

  • Run Sparse K-SVD on the 2nd dataset to denoise frame number 10 and 60 in the 3rd volume .
addpath(genpath('./Methods'));
addpath('./Metrics/utils');

params.test_indices = [3];
params.frame_numbers = ones(length(params.test_indices),1)*[10, 60];

params.n_frames = 5; % greater than or equal to 2
params.valid_rows = 150:512 - 1; % images in this dataset are cropped before processing

params.save_mat = false;
    
output_folder_name = 'benchmark_ksvds_dt2';

X = @run_ksvds;
params.get_params = @get_params_ksvds;

params.noise_estimator = @(y) estimate_noise_dt2_max(y)*2 - 1;

output_folder_name = 'benchmark_ksvds_dt2';
benchmark_X_on_dt2(output_folder_name,X,params)
evaluate_metrics_dt2(output_folder_name,params);

References

[1] Rubinstein, Ron, Michael Zibulevsky, and Michael Elad. "Double sparsity: Learning sparse dictionaries for sparse signal approximation." IEEE Transactions on signal processing 58.3 (2009): 1553-1564.

[2] Kafieh, Raheleh, Hossein Rabbani, and Ivan Selesnick. "Three dimensional data-driven multi scale atomic representation of optical coherence tomography." IEEE transactions on medical imaging 34, no. 5 (2014): 1042-1062.

[3] Maggioni, Matteo, Giacomo Boracchi, Alessandro Foi, and Karen Egiazarian. "Video denoising using separable 4D nonlocal spatiotemporal transforms." In Image Processing: Algorithms and Systems IX, vol. 7870, pp. 9-19. SPIE, 2011.

[4] Maggioni, Matteo, Giacomo Boracchi, Alessandro Foi, and Karen Egiazarian. "Video denoising, deblocking, and enhancement through separable 4-D nonlocal spatiotemporal transforms." IEEE Transactions on image processing 21, no. 9 (2012): 3952-3966.

[5] Mayer, Markus A., Anja Borsdorf, Martin Wagner, Joachim Hornegger, Christian Y. Mardin, and Ralf P. Tornow. "Wavelet denoising of multiframe optical coherence tomography data." Biomedical optics express 3, no. 3 (2012): 572-589.

[6] Maggioni, Matteo, and Alessandro Foi. "Nonlocal transform-domain denoising of volumetric data with groupwise adaptive variance estimation." In Computational Imaging X, vol. 8296, pp. 133-140. SPIE, 2012.

[7] Maggioni, Matteo, Vladimir Katkovnik, Karen Egiazarian, and Alessandro Foi. "Nonlocal transform-domain filter for volumetric data denoising and reconstruction." IEEE transactions on image processing 22, no. 1 (2012): 119-133.

[8] Peng, Yi, Deyu Meng, Zongben Xu, Chenqiang Gao, Yi Yang, and Biao Zhang. "Decomposable nonlocal tensor dictionary learning for multispectral image denoising." In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 2949-2956. 2014.

[9] Ashkan, Abbasi, Amirhassan Monadjemi, Leyuan Fang, Hossein Rabbani, Bhavna Josephine Antony, and Hiroshi Ishikawa. "Mixed Multiscale BM4D for Three-dimensional Optical Coherence Tomography Denoising.", submitted manuscript. (under review)

[10] Fang, Leyuan, Shutao Li, Ryan P. McNabb, Qing Nie, Anthony N. Kuo, Cynthia A. Toth, Joseph A. Izatt, and Sina Farsiu. "Fast acquisition and reconstruction of optical coherence tomography images via sparse representation." IEEE transactions on medical imaging 32, no. 11 (2013): 2034-2049.

[11] Kafieh, Raheleh, Hossein Rabbani, Michael D. Abramoff, and Milan Sonka. "Intra-retinal layer segmentation of 3D optical coherence tomography using coarse grained diffusion map." Medical image analysis 17, no. 8 (2013): 907-928.

About

This package contains multiple 3D OCT denoising methods, including our proposed mixed multiscale BM4D (mmBM4D), which is one of the fastest multiscale 3D OCT denoising methods.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published