|
@@ -1596,7 +1596,11 @@ void SemSegContextTree3D::classify (
|
|
|
if ( val < forest[tree][node].decision )
|
|
|
{
|
|
|
int left = forest[tree][node].left;
|
|
|
- nodeIndices.set ( x, y, z, left, tree );
|
|
|
+
|
|
|
+ for ( int n = 0; n < labelIncrement; n++ )
|
|
|
+ for ( int m = 0; m < labelIncrement; m++ )
|
|
|
+ if (x+m < xsize && y+n < ysize)
|
|
|
+ nodeIndices.set ( x+m, y+n, z, left, tree );
|
|
|
#pragma omp critical
|
|
|
{
|
|
|
if ( fasthik != NULL
|
|
@@ -1609,7 +1613,10 @@ void SemSegContextTree3D::classify (
|
|
|
else
|
|
|
{
|
|
|
int right = forest[tree][node].right;
|
|
|
- nodeIndices.set ( x, y, z, right, tree );
|
|
|
+ for ( int n = 0; n < labelIncrement; n++ )
|
|
|
+ for ( int m = 0; m < labelIncrement; m++ )
|
|
|
+ if (x+m < xsize && y+n < ysize)
|
|
|
+ nodeIndices.set ( x+m, y+n, z, right, tree );
|
|
|
#pragma omp critical
|
|
|
{
|
|
|
if ( fasthik != NULL
|
|
@@ -1700,8 +1707,8 @@ void SemSegContextTree3D::classify (
|
|
|
// final labeling step
|
|
|
if ( pixelWiseLabeling )
|
|
|
{
|
|
|
- for ( int x = 0; x < xsize; x=x+labelIncrement )
|
|
|
- for ( int y = 0; y < ysize; y=y+labelIncrement )
|
|
|
+ for ( int x = 0; x < xsize; x++ )
|
|
|
+ for ( int y = 0; y < ysize; y++ )
|
|
|
for ( int z = 0; z < zsize; z++ )
|
|
|
{
|
|
|
double maxProb = - numeric_limits<double>::max();
|
|
@@ -1725,28 +1732,6 @@ void SemSegContextTree3D::classify (
|
|
|
segresult.set ( x, y, maxClass, ( uint ) z );
|
|
|
}
|
|
|
|
|
|
- if ( labelIncrement > 1 )
|
|
|
- {
|
|
|
- // fill holes in label image
|
|
|
- for ( int y = 0; y < ysize; y++ )
|
|
|
- for ( int x = labelIncrement; x < xsize-labelIncrement; x++ )
|
|
|
- for ( int z = 0; z < zsize; z++ )
|
|
|
- {
|
|
|
- unsigned short xs = x % labelIncrement;
|
|
|
- if ( xs != 0 )
|
|
|
- segresult.set ( x, y, segresult.get ( x-xs, y, (uint)z ), (uint)z );
|
|
|
- }
|
|
|
-
|
|
|
- for ( int x = 0; x < xsize; x++ )
|
|
|
- for ( int y = 0; y < ysize-labelIncrement; y++ )
|
|
|
- for ( int z = 0; z < zsize; z++ )
|
|
|
- {
|
|
|
- unsigned short ys = y % labelIncrement;
|
|
|
- if ( ys != 0 )
|
|
|
- segresult.set ( x, y , segresult.get ( x, y-ys, (uint)z), (uint)z );
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
#ifdef VISUALIZE
|
|
|
getProbabilityMap( probabilities );
|
|
|
#endif
|