poly2d.hpp
Go to the documentation of this file.
00001 
00060 #ifndef __IMPL_POLY2D_HPP__
00061 #define __IMPL_POLY2D_HPP__
00062 
00063 #include <cob_3d_segmentation/polygon_extraction/poly2d.h>
00064 
00065 namespace cob_3d_segmentation
00066 {
00067   namespace Contour2D
00068   {
00069     int SplineMap[9]={
00070       4, 5,  6,
00071       3, -1, 7,
00072       2, 1,  0
00073 
00074       /*2, 1,  0,
00075         3, -1, 7,
00076         4, 5,  6*/
00077     };
00078 
00079     spline2D g_Splines[9][256];
00080 
00081     bool generateSpline2D()
00082     {
00083       int mapX[]={2,1,0, 0,0, 1, 2,2};
00084       int mapY[]={2,2,2, 1, 0,0,0, 1};
00085       //int mapY[]={0,0,0, 1, 2,2,2, 1};
00086 
00087       for(int i=0; i<256; i++) {
00088         bool b[8];
00089         for(int j=0; j<8; j++)
00090           b[j]=i&(1<<j);
00091         spline2D s={};
00092         if(!i) {
00093           g_Splines[8][i]=s;
00094           continue;
00095         }
00096         int a=-1;
00097         for(int j=3; j>=0; j--) {
00098           if(b[7-j]) {
00099             a=7-j;
00100             break;}
00101         }
00102         for(int j=0; a==-1&&j<4; j++) {
00103           if(b[j]) {
00104             a=j;
00105             break;}
00106         }
00107         for(int j=3; j>=0; j--) {
00108           if(b[(a+4+j+8)%8]) {
00109             s.v=0;
00110             s.x=mapX[(a+4+j+8)%8]-1;
00111             s.y=mapY[(a+4+j+8)%8]-1;
00112             s.bf=(a+j+8)%8;
00113             a=-1;
00114             break;
00115           }
00116         }
00117         for(int j=0; a!=-1&&j<4; j++) {
00118           if(b[(a+4-j+8)%8]) {
00119             s.v=0;
00120             s.x=mapX[(a+4-j+8)%8]-1;
00121             s.y=mapY[(a+4-j+8)%8]-1;
00122             s.bf=(a-j+8)%8;
00123             break;
00124           }
00125         }
00126         g_Splines[8][i]=s;
00127       }
00128 
00129       for(int a=0; a<8; a++) {
00130 
00131         for(int i=0; i<256; i++) {
00132           bool b[8];
00133           for(int j=0; j<8; j++)
00134             b[j]=i&(1<<j);
00135           spline2D s={};
00136           if(!i) {
00137             g_Splines[a][i]=s;
00138             continue;
00139           }
00140           bool found=false;
00141           for(int j=3; j>=0; j--) {
00142             if(b[(a+4+j+8)%8]) {
00143               s.v=-j;
00144               s.x=mapX[(a+4+j+8)%8]-1;
00145               s.y=mapY[(a+4+j+8)%8]-1;
00146               s.bf=(a+j+8)%8;
00147               found=true;
00148               break;
00149             }
00150           }
00151           for(int j=0; !found&&j<4; j++) {
00152             if(b[(a+4-j+8)%8]) {
00153               s.v=j;
00154               s.x=mapX[(a+4-j+8)%8]-1;
00155               s.y=mapY[(a+4-j+8)%8]-1;
00156               s.bf=(a-j+8)%8;
00157               break;
00158             }
00159           }
00160           g_Splines[a][i]=s;
00161         }
00162       }
00163 
00164       return true;
00165     }
00166 
00167     static bool bInit = generateSpline2D();
00168 
00169   }
00170 }
00171 
00172 #endif


cob_3d_segmentation
Author(s): Georg Arbeiter
autogenerated on Wed Aug 26 2015 11:03:03