/PNLM-PCA

Primary LanguageMATLAB

These are the code files for this article. This study improves the pre-filtered rotationally invariant non-local PCA method, ensuring its efficiency while improving algorithm performance. This work has two main contributions. First, the proposed new algorithm PNLM-PCA exhibits superior denoising performance in different types of MR images over some state-of-the-art algorithms. Second, a novel structure of non-local mean(NLM) is proposed, which simultaneously improves speed and accuracy. The proposed new structure is conducive to promoting the development of NLM based denoising algorithms for natural and MR images.

DOI: 10.1016/j.compbiomed.2024.108450

The description of files in this repository

The contents contained in the MATLAB files are the following:

  • 1.t2_ai_msles2_1mm_pn0_rf0.rawb: An example data file of T2w MS lesion image from the BrainWeb dataset.

  • 2.pd_icbm_normal_1mm_pn0_rf0.rawb: An example data file of PDw normal image from the BrainWeb dataset.

  • 3.precomputation.mat: A MATLAB data file that provides pre-computed relevant data for images' Rician correction.

  • 4.optimal_parameter.m:A MATLAB script file that demonstrates the process of finding the optimal parameters of NL-PCA.

  • 5.Experiments.m: A MATLAB script file that completely presents the code used in the whole process of the experiments.

  • 6.ssim_index3d.m: A MATLAB function file that calculates the SSIM of a denoised image.

  • 7.RicianSTD.m: A MATLAB function file which is used to estimate the Rician noise in the MR image using the object-based method.

  • 8.ricernd.m: A MATLAB function file that adds Rician noise on a noise-free image.

  • 9.RI_NLM.m: A MATLAB function file that shows a possible implementation of cPRI_NL_PCA.mexw64.

  • 10.psnrallM.m: A MATLAB function which is used to find the optimal value of $\tau\beta$ and T in the NL-PCA filter.

  • 11.psnrall.m: A MATLAB function which is used to find the optimal value of (d, M, w, $\tau\beta$, T) in the NL-PCA filter.

  • 12.bm4dw.m: A MATLAB function that performs Wiener filtering in BM4D.

  • 13.bwp.m: A MATLAB function that realizes a hybrid algorithm that replaces the hard thresholding stage in BM4D with NL-PCA filtering.

  • 14.NLPCApso.m: A MATLAB function which is the adaptation of NL-PCA filter for the PSO algorithm.

  • 15.NLPCAnp.m: A MATLAB function that demonstrates the code for realizing the NL-PCA filter with exact noise level.

  • 16.NLPCA.m: A MATLAB function file that demonstrates the code for realizing the NL-PCA filter.

  • 17.kmeans.m: for image segmentation.

  • 18.farras.m: nearly symmetric filters for orthogonal 2-channel perfect reconstruction filter bank.

  • 19.epsi.m: A MATLAB function file which calculate the correction factor $\xi$

  • 20.dwt3D.m: 3-D Discrete Wavelet Transform.

  • 21.cshift3D.m: 3D Circular Shift.

  • 22.afb3D.m: 3D Analysis Filter Bank.

  • 23.OAS1_0001_MR1_mpr-1_anon.img: An example data file of T1w image from the OASIS dataset.

  • 24.OAS1_0001_MRI_mpr-1_anon.hdr: The above file cannot be read without it.

  • 25.T1w_acpc_dc_restore.nii.gz: An example data file of T1w image from the HCP dataset.

  • 26.RINLMmy.m: A MATLAB function file that demonstrates the proposed new NLM structure.

  • 27.RiC.m: A MATLAB function file that corrects the image Ricianly.

  • 28.truncateslice.m: A MATLAB function file that extracts a 2D slice from a 3D image

  • 29.cPRI_NL_PCA.mexw64: PRI-NLM filter created by Manjon et al.(2015).

  • 30.dis255.m: A MATLAB function file that lets all voxel values above 255 be displayed at maximum brightness.

  • 31.getTransfMatrix.m: A MATLAB function file for bwp.m and bm4dw.m.

  • 32.optimizationRINLMmy.m: A MATLAB script file that demonstrates the optimization process for the proposed PNLM-PCA.

  • 33.precomputation.m: A MATLAB script file that shows how the data in precomputation.mat is calculated.