Sven Sickert 12 жил өмнө
parent
commit
6cc954bf23

+ 11 - 12
image/MultiChannelImage3DT.tcc

@@ -633,8 +633,8 @@ void MultiChannelImage3DT<P>::calcGLCM( std::vector<std::vector<double> > & mat,
   statistics( min, max, channel );
   
   long k = 0;
-  
-  int tmp[xsize][ysize][zsize];
+
+  mat = std::vector<std::vector<double> > ( max+1, std::vector<double> ( max+1, 0.0 ) );
   
   for (int z = 0; z < zsize; z++ )
   {
@@ -642,7 +642,6 @@ void MultiChannelImage3DT<P>::calcGLCM( std::vector<std::vector<double> > & mat,
     {
       for (int x = 0; x < xsize; x++)
       {
-        mat = std::vector<std::vector<double> > ( max+1, std::vector<double> ( max+1, 0.0 ) );
         if ( (x+dis[0]>=0) && (x+dis[0]<xsize)
           && (y+dis[1]>=0) && (y+dis[1]<ysize)
           && (z+dis[2]>=0) && (z+dis[2]<zsize) )
@@ -653,17 +652,17 @@ void MultiChannelImage3DT<P>::calcGLCM( std::vector<std::vector<double> > & mat,
           mat[dval][val]++;   // symmetry
           k += 2;
         }
-        
-        for (int i = 0; i <= max; i++)
-        {
-          for (int j = 0; j <= max; j++)
-          {
-            mat[i][j] /= k;
-          }
-        }
       }
     }
   }
+  
+  for (int i = 0; i <= max; i++)
+  {
+    for (int j = 0; j <= max; j++)
+    {
+      mat[i][j] /= k;
+    }
+  }
 
 }
 
@@ -676,7 +675,7 @@ void MultiChannelImage3DT<P>::calcVariance( uint srcchan, uint tarchan )
   assert( data[tarchan] != NULL );
   
   uint windowsize = 3;
-  uint win = (windowsize-1)/2;
+  int win = (windowsize-1)/2;
   
   for ( int z = 0; z < zsize; z++ )
   {

+ 8 - 6
semseg/SemSegContextTree.cpp

@@ -332,7 +332,7 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImage3DT<
     if ( ft > 1 )
     {
       //use larger window size for context features
-      tmpws *= 2;
+      tmpws *= 3;
     }
 
     if ( ft == 1 )
@@ -346,10 +346,12 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImage3DT<
     // random value range between (-window-size/2) and (window-size/2)
     double z_ratio = conf->gB ( "SSContextTree", "z_ratio", 1.0 );
     int tmp_z =  ( int ) floor( (tmpws * z_ratio) + 0.5 );
+    double y_ratio = conf->gB ( "SSContextTree", "y_ratio", 1.0 );
+    int tmp_y =  ( int ) floor( (tmpws * y_ratio) + 0.5 );
     x1 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmpws ) - tmpws / 2;
     x2 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmpws ) - tmpws / 2;
-    y1 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmpws ) - tmpws / 2;
-    y2 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmpws ) - tmpws / 2;
+    y1 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmp_y ) - tmp_y / 2;
+    y2 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmp_y ) - tmp_y / 2;
     z1 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmp_z ) - tmp_z / 2;
     z2 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmp_z ) - tmp_z / 2;
 
@@ -1892,11 +1894,11 @@ void SemSegContextTree::semanticseg ( NICE::MultiChannelImage3DT<double> & imgDa
         }
       }
     }
-#undef VISUALIZE
+#define VISUALIZE
 #ifdef VISUALIZE
     for ( int z = 0; z < zsize; z++ )
     {
-      for ( int j = 0 ; j < ( int ) probabilities.numChannels; j++ )
+      for ( int j = 0 ; j < ( int ) probabilities.channels(); j++ )
       {
         //cout << "class: " << j << endl;//" " << cn.text (j) << endl;
 
@@ -1923,7 +1925,7 @@ void SemSegContextTree::semanticseg ( NICE::MultiChannelImage3DT<double> & imgDa
 
         std::string s;
         std::stringstream out;
-        out << "tmpprebmap" << j << ".ppm";
+        out << "tmpprebmap" << z << "_" << j << ".ppm";
         s = out.str();
         imgrgb.write ( s );
         //showImage(imgrgb, "Ergebnis");