Class BM3D

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.event.WindowListener, java.lang.Runnable, java.util.EventListener

    public class BM3D
    extends AlgorithmBase
    • Field Detail

      • estimateNoiseStandardDeviation

        private boolean estimateNoiseStandardDeviation
      • sigma

        private double sigma
      • n_H

        private int n_H
      • k_H

        private int k_H
      • N_H

        private int N_H
      • p_H

        private int p_H
      • tauMatch_H

        private double tauMatch_H
      • useSD_H

        private boolean useSD_H
      • tau_2D_H

        private java.lang.String tau_2D_H
      • lambda3D_H

        private double lambda3D_H
      • n_W

        private int n_W
      • k_W

        private int k_W
      • N_W

        private int N_W
      • p_W

        private int p_W
      • tauMatch_W

        private double tauMatch_W
      • useSD_W

        private boolean useSD_W
      • tau_2D_W

        private java.lang.String tau_2D_W
    • Constructor Detail

      • BM3D

        public BM3D​(ModelImage[] destImage,
                    ModelImage srcImg,
                    boolean estimateNoiseStandardDeviation,
                    double sigma,
                    int n_H,
                    int N_H,
                    int p_H,
                    boolean useSD_H,
                    java.lang.String tau_2D_H,
                    double lambda3D_H,
                    int n_W,
                    int N_W,
                    int p_W,
                    boolean useSD_W,
                    java.lang.String tau_2D_W)
    • Method Detail

      • runAlgorithm

        public void runAlgorithm()
        Description copied from class: AlgorithmBase
        Actually runs the algorithm. Implemented by inheriting algorithms.
        Specified by:
        runAlgorithm in class AlgorithmBase
      • bm3d_2nd_step

        private double[][] bm3d_2nd_step​(double sigma,
                                         ModelImage img_noisy,
                                         ModelImage img_basic,
                                         int nWien,
                                         int kWien,
                                         int NWien,
                                         int pWien,
                                         double tauMatch,
                                         boolean useSD,
                                         java.lang.String tau_2D)
      • wiener_filtering_hadamard

        private double[][][] wiener_filtering_hadamard​(double[][][] group_3D_img,
                                                       double[][][] group_3D_est,
                                                       double sigma,
                                                       boolean doWeight,
                                                       double[] weight)
      • bm3d_1st_step

        private double[][] bm3d_1st_step​(double sigma,
                                         ModelImage img_noisy,
                                         int nHard,
                                         int kHard,
                                         int NHard,
                                         int pHard,
                                         double lambdaHard3D,
                                         double tauMatch,
                                         boolean useSD,
                                         java.lang.String tau_2D)
      • sd_weighting

        private double sd_weighting​(double[][][] group_3D)
      • ht_filtering_hadamard

        private double[][][] ht_filtering_hadamard​(double[][][] group_3D,
                                                   double sigma,
                                                   double lambdaHard3D,
                                                   boolean doWeight,
                                                   double[] weight)
      • build_3D_group

        private double[][][] build_3D_group​(java.util.Vector<java.util.Vector<double[][]>> fre_all_patches,
                                            int[][] N__ni_nj,
                                            int nSx_r)
      • log2

        private double log2​(double x)
      • image2patches

        private java.util.Vector<java.util.Vector<double[][]>> image2patches​(ModelImage im,
                                                                             int patch_h,
                                                                             int patch_w)
      • precompute_BM

        private int[][][][] precompute_BM​(ModelImage img,
                                          int kHW,
                                          int NHW,
                                          int nHW,
                                          double tauMatch,
                                          int[][] threshold_count)
      • closest_power_of_2

        private int[] closest_power_of_2​(int[] M,
                                         int max_)
      • get_add_patch_matrix

        private void get_add_patch_matrix​(int h,
                                          int w,
                                          int nHW,
                                          int kHW,
                                          double[][] row_add_mat,
                                          double[][] column_add_mat)
      • translation_2d_mat

        private double[][] translation_2d_mat​(double[][] mat,
                                              int right,
                                              int down)
      • get_kaiserWindow

        private double[][] get_kaiserWindow​(int kHW)
      • kaiser

        private double[] kaiser​(int M,
                                double beta)
      • ind_initialize

        private int[] ind_initialize​(int max_size,
                                     int N,
                                     int step)