Class AlgorithmTextureAnalysis

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

    public class AlgorithmTextureAnalysis
    extends AlgorithmBase
    Overview This code contains the texture analysis functions for the paper `Texture Analysis and Segmentation Using Modulation Features, Generative Models, and Weighted Curve Evolution', by I. Kokkinos, G. Evangelopoulos and P. Maragos, appearing in IEEE Transactions on Pattern Analysis and Machine Intelligence, Volume 31, Issue 1, Jan. 2009 Page(s):142 - 157. This toolbox was originally developed in and written for MATLAB, with emphasis on efficient algorithm implementations for multiband image filtering, demodulation in amplitude (AM) and frequency (FM) signals via the regularized 2D discrete energy separation algorithm and probabilistic localization of texture, edge, smooth image regions. Author of the original MATLAB toolbox is Iasonas Kokkinos, currently Assistant Professor at Ecole Centrale Paris, with partial contributions from Georgios Evangelopoulos. The original MATLAB toolbox has been ported from MATLAB to Java by William Gandler. The original MATLAB toolbox can be found at http://cvsp.cs.ntua.gr/software/texture/. Permission to port the original code was generously granted by Iasonas Kokkinos. The provided functions include: multi-scale & orientation filterbanks for gabors and edges projection on the basis elements of the underlying generative models demodulation with regularized/complex esa channel selection based on the amplitude/teager/mdl criterion texture/edge/smooth classification based on mdl criterion Parameters are primarily related to the filterbank construction and the final classification stage. References: 1.) I. Kokkinos, G. Evangelopoulos and P. Maragos, Texture Analysis and Segmentation using Modulation Features, Generative Models and Weighted Curve Evolution, IEEE Transactions on Pattern Analysis & Machine Intelligence, vol. 31, no. 1, pp. 142-157, Jan. 2009. 2.) G. Evangelopoulos, I. Kokkinos and P. Maragos, Advances in Variational Image Segmentation using AM-FM Models: Regularized Demodulation and Probabilistic Cue Integration, Proc. Int' l Workshop on Variational and Level Set Methods (VLSM-05), Beijing, China, Oct. 2005, Springer LNCS, vol. 3275, pp. 121-136. 3.) I. Kokkinos, G. Evangelopoulos and P. Maragos, Advances in Texture Analysis: Energy Dominant Component and Multiple Hypothesis Testing, Proc. IEEE Int' l Conf. on Image Processing (ICIP-04), Singapore, Oct. 2004, vol. 3, pp. 1509-1512. 4.) I. Kokkinos, G. Evangelopoulos and P. Maragos, Modulation-Feature Based Textured Image Segmentation Using Curve Evolution, Proc. IEEE Int' l Conf. on Image Processing (ICIP-04), Singapore, Oct. 2004, vol. 2, pp. 1204-1207.
    • Field Detail

      • scaleImage

        private final boolean scaleImage
      • epsilon

        private final double epsilon
      • displayFilters

        private boolean displayFilters
    • Constructor Detail

      • AlgorithmTextureAnalysis

        public AlgorithmTextureAnalysis​(ModelImage[] destImage,
                                        ModelImage srcImage,
                                        boolean scaleImage)
    • Method Detail

      • T2z1_filter

        private void T2z1_filter​(double[][] A,
                                 double[][] ph,
                                 double[][] Fx,
                                 double[][] Fy,
                                 int[][] idx,
                                 double[][] en,
                                 double[][] critDCA,
                                 double[][] omegas,
                                 double[][] amplitudes,
                                 double[] filterAngle,
                                 double[] sigmaX,
                                 double[][][] td1,
                                 double[][][] td2,
                                 double[][][] td3,
                                 double[][][] fd1,
                                 double[][][] fd1Imag,
                                 double[][][] fd2,
                                 double[][][] fd2Imag,
                                 double[][][] fd3,
                                 double[][][] fd3Imag,
                                 double[][][] fd22,
                                 double[][][] fd22Imag,
                                 double[][][] fd23,
                                 double[][][] fd23Imag,
                                 double[][][] fd33,
                                 double[][][] fd33Imag,
                                 int[] ps,
                                 java.lang.String[] domain,
                                 int[] scaleswt,
                                 int ndirs,
                                 ModelImage inputImage,
                                 double[][][][][] invDes,
                                 java.lang.String DCAmethod,
                                 java.lang.String esameth,
                                 double[] sgx,
                                 double invVariance2,
                                 double factorSharpness,
                                 double factorMdl)
      • T2z1d_esa2D

        private void T2z1d_esa2D​(double[][] A,
                                 double[][] Wx,
                                 double[][] Wy,
                                 double[][] freqr,
                                 double[][] Anonorm,
                                 double[][] Eo,
                                 double[][] imInSrc,
                                 double[][] imInSrcImag,
                                 int signChange,
                                 double[] omegas,
                                 double[] amplitudes,
                                 double filterAngle,
                                 double sigmaX,
                                 double ct,
                                 int diffType)
      • enop2D

        private double[][] enop2D​(double[][] im)
      • deriv_x_right

        private double[][] deriv_x_right​(double[][] buf)
      • deriv_x_left

        private double[][] deriv_x_left​(double[][] buf)
      • deriv_y_up

        private double[][] deriv_y_up​(double[][] buf)
      • deriv_y_down

        private double[][] deriv_y_down​(double[][] buf)
      • T2z1dI_get_responses_freq_gabor

        private void T2z1dI_get_responses_freq_gabor​(double[][] Fx,
                                                     double[][] FxImag,
                                                     double[][] Fy,
                                                     double[][] FyImag,
                                                     double[][] Fxx,
                                                     double[][] FxxImag,
                                                     double[][] Fyy,
                                                     double[][] FyyImag,
                                                     double[][] Fxy,
                                                     double[][] FxyImag,
                                                     double[][] V2Fx,
                                                     double[][] V2FxImag,
                                                     double[][] V2Fy,
                                                     double[][] V2FyImag,
                                                     double[][] imIn,
                                                     double[][] imInImag,
                                                     double[] omegas,
                                                     double[] amplitudes,
                                                     double filterAngle,
                                                     double sigmaX)
      • ifft2

        private void ifft2​(double[][] buf,
                           double[][] bufI)
      • T2z0_projection_terms

        private void T2z0_projection_terms​(double[][][][][] invDes,
                                           double[][][] td1,
                                           double[][][] td2,
                                           double[][][] td3,
                                           double[][][] td22,
                                           double[][][] td23,
                                           double[][][] td33,
                                           double[][][] fd1,
                                           double[][][] fd1Imag,
                                           double[][][] fd2,
                                           double[][][] fd2Imag,
                                           double[][][] fd3,
                                           double[][][] fd3Imag,
                                           double[][][] fd22,
                                           double[][][] fd22Imag,
                                           double[][][] fd23,
                                           double[][][] fd23Imag,
                                           double[][][] fd33,
                                           double[][][] fd33Imag,
                                           int[] ps,
                                           int nscales,
                                           int ndirs,
                                           java.lang.String[] filtDomain,
                                           ModelImage inputImage)
      • test_T2z0a_invert_design

        private void test_T2z0a_invert_design()
      • T2z0a_invert_design

        private double[][][][] T2z0a_invert_design​(double[][] Sc1,
                                                   double[][] Sc2,
                                                   double[][] Sc3,
                                                   double[][] Sc22,
                                                   double[][] Sc23,
                                                   double[][] Sc33)
      • T2z1b_get_responses_time

        private void T2z1b_get_responses_time​(double[][] preComputedIc1,
                                              double[][] preComputedIc2,
                                              double[][] preComputedIc3,
                                              double[][] preComputedSc1,
                                              double[][] preComputedsm,
                                              double[][] Sc1,
                                              double[][] Sc2,
                                              double[][] Sc3,
                                              double[][] Sc22,
                                              double[][] Sc23,
                                              double[][] Sc33,
                                              double[][] td1,
                                              double[][] td2,
                                              double[][] td3,
                                              double[][] td22,
                                              double[][] td23,
                                              double[][] td33,
                                              double[][] inputIm,
                                              int findNorm)
      • filter2

        private void filter2​(double[][] A,
                             double[][] B,
                             double[][] C)
      • testconv2

        private void testconv2()
      • conv2

        private void conv2​(double[][] A,
                           double[][] B,
                           double[][] Cout)
      • conv

        private double[] conv​(double[] A,
                              double[] B,
                              double[] Cout)
      • T2z1b_get_responses_freq

        private void T2z1b_get_responses_freq​(double[][] preComputedIc1,
                                              double[][] preComputedIc2,
                                              double[][] preComputedIc3,
                                              double[][] preComputedSc1,
                                              double[][] preComputedsm,
                                              double[][] Sc1,
                                              double[][] Sc2,
                                              double[][] Sc3,
                                              double[][] Sc22,
                                              double[][] Sc23,
                                              double[][] Sc33,
                                              double[] fftSupportPatch,
                                              double[] fftSupportPatchImag,
                                              int patchSize,
                                              double[] fftImagePatch,
                                              double[] fftImagePatchImag,
                                              double[][] fd1,
                                              double[][] fd1Imag,
                                              double[][] fd2,
                                              double[][] fd2Imag,
                                              double[][] fd3,
                                              double[][] fd3Imag,
                                              double[][] fd22,
                                              double[][] fd22Imag,
                                              double[][] fd23,
                                              double[][] fd23Imag,
                                              double[][] fd33,
                                              double[][] fd33Imag,
                                              int findNorm)
      • fftshift

        private void fftshift​(double[][] mtx)
      • ifftshift

        private void ifftshift​(double[][] mtx)
      • T2z1a_make_image_structure

        private void T2z1a_make_image_structure​(double[] fftImagePatch,
                                                double[] fftImagePatchImag,
                                                double[] fftSupportPatch,
                                                double[] fftSupportPatchImag,
                                                double[][] input,
                                                int patchSize)
      • T1_responses

        private void T1_responses​(double[][] omegas,
                                  double[][] amplitudes,
                                  double[] filterAngle,
                                  double[] sigmaX,
                                  double[][][] td1,
                                  double[][][] td2,
                                  double[][][] td3,
                                  double[][][] td22,
                                  double[][][] td23,
                                  double[][][] td33,
                                  double[][][] fd1,
                                  double[][][] fd1Imag,
                                  double[][][] fd2,
                                  double[][][] fd2Imag,
                                  double[][][] fd3,
                                  double[][][] fd3Imag,
                                  double[][][] fd22,
                                  double[][][] fd22Imag,
                                  double[][][] fd23,
                                  double[][][] fd23Imag,
                                  double[][][] fd33,
                                  double[][][] fd33Imag,
                                  double[] sigmas,
                                  int[] ps,
                                  int nscales,
                                  int ndirs,
                                  double sig2omega,
                                  double radianStart,
                                  double radianEnd,
                                  int inputXDim,
                                  int inputYDim,
                                  java.lang.String filterType,
                                  java.lang.String[] domain)
      • T1z2_get_filter_struct

        private void T1z2_get_filter_struct​(double[][][] td1,
                                            double[][][] td2,
                                            double[][][] td3,
                                            double[][][] td22,
                                            double[][][] td23,
                                            double[][][] td33,
                                            double[][][] fd1,
                                            double[][][] fd1Imag,
                                            double[][][] fd2,
                                            double[][][] fd2Imag,
                                            double[][][] fd3,
                                            double[][][] fd3Imag,
                                            double[][][] fd22,
                                            double[][][] fd22Imag,
                                            double[][][] fd23,
                                            double[][][] fd23Imag,
                                            double[][][] fd33,
                                            double[][][] fd33Imag,
                                            double[] omegas,
                                            double[] amplitudes,
                                            double filterAngle,
                                            double sigmaX,
                                            java.lang.String domain,
                                            double[][] xfreq,
                                            double[][] yfreq,
                                            int index)
      • Tzz_freq_resp

        private void Tzz_freq_resp​(double[][] hout,
                                   double[][] omegax,
                                   double[][] omegay,
                                   double sigmaX,
                                   double filterAngle,
                                   double[] omegas,
                                   double[] amplitudes)
      • testfreqz2

        private void testfreqz2()
      • freqz2

        private void freqz2​(double[][] hout,
                            double[][] houtImag,
                            double[][] a,
                            int n1,
                            int n2)
      • rot180

        private void rot180​(double[][] mtx)
      • T1z2b_time_resp

        private double[][] T1z2b_time_resp​(double[] omegas,
                                           double[] amplitudes,
                                           double[] amplitudesImag,
                                           double filterAngle,
                                           double sigmaX)
      • T1z2a_convert_filter

        private void T1z2a_convert_filter​(double[] omegasOut,
                                          double[] amplitudesOut,
                                          double[] amplitudesOutImag,
                                          double[] omegas,
                                          double[] amplitudes,
                                          double filterAngle,
                                          double sigmaX,
                                          int conj)
      • filterbank_DCA_2D

        private void filterbank_DCA_2D​(double[][] omegas,
                                       double[][] amplitudes,
                                       double[] filterAngle,
                                       double[] sigmaX,
                                       int nscales,
                                       java.lang.String filterType,
                                       int ndirs,
                                       double sig2omega,
                                       double radianStart,
                                       double radianEnd)