|
@@ -1906,6 +1906,7 @@ void SemSegContextTree::semanticseg ( CachedExample *ce, NICE::Image & segresult
|
|
|
|
|
|
MultiChannelImageT<unsigned short int> lastfeats = currentfeats;
|
|
MultiChannelImageT<unsigned short int> lastfeats = currentfeats;
|
|
|
|
|
|
|
|
+#pragma omp parallel for
|
|
for ( int tree = 0; tree < nbTrees; tree++ )
|
|
for ( int tree = 0; tree < nbTrees; tree++ )
|
|
{
|
|
{
|
|
for ( int x = 0; x < xsize; x++ )
|
|
for ( int x = 0; x < xsize; x++ )
|
|
@@ -1933,19 +1934,25 @@ void SemSegContextTree::semanticseg ( CachedExample *ce, NICE::Image & segresult
|
|
{
|
|
{
|
|
currentfeats.set ( x, y, forest[tree][t].left, tree );
|
|
currentfeats.set ( x, y, forest[tree][t].left, tree );
|
|
#ifdef TEXTONMAP
|
|
#ifdef TEXTONMAP
|
|
- SparseVectorInt v;
|
|
|
|
- v.insert ( pair<int, double> ( forest[tree][forest[tree][t].left].nodeNumber, weight ) );
|
|
|
|
- textonMap ( subx, suby ).add ( v );
|
|
|
|
|
|
+#pragma omp critical
|
|
|
|
+ {
|
|
|
|
+ SparseVectorInt v;
|
|
|
|
+ v.insert ( pair<int, double> ( forest[tree][forest[tree][t].left].nodeNumber, weight ) );
|
|
|
|
+ textonMap ( subx, suby ).add ( v );
|
|
|
|
+ }
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
currentfeats.set ( x, y, forest[tree][t].right, tree );
|
|
currentfeats.set ( x, y, forest[tree][t].right, tree );
|
|
#ifdef TEXTONMAP
|
|
#ifdef TEXTONMAP
|
|
- SparseVectorInt v;
|
|
|
|
- v.insert ( pair<int, double> ( forest[tree][forest[tree][t].right].nodeNumber, weight ) );
|
|
|
|
|
|
+#pragma omp critical
|
|
|
|
+ {
|
|
|
|
+ SparseVectorInt v;
|
|
|
|
+ v.insert ( pair<int, double> ( forest[tree][forest[tree][t].right].nodeNumber, weight ) );
|
|
|
|
|
|
- textonMap ( subx, suby ).add ( v );
|
|
|
|
|
|
+ textonMap ( subx, suby ).add ( v );
|
|
|
|
+ }
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|