Пример #1
0
void BCIDataSet::buildInstance(int epoch, int t0)
{
  if(cache.hasInstance(epoch, t0))
  {
    tempInstance = cache.getInstance(epoch, t0);
  }
  else
  {
    Eigen::MatrixXd original = extractInstance(epoch, t0);
    if(decimated)
    {
      Decimator decimator(downSamplingFactor);
      Eigen::MatrixXd decimatedSignal = decimator.decimate(original);
      if(comp)
      {
        Eigen::VectorXd uncompressed = toVector(decimatedSignal);
        tempInstance = compressor.compress(uncompressed);
      }
      else
        tempInstance = toVector(decimatedSignal);
    }
    else
    {
      if(comp)
      {
        Eigen::VectorXd uncompressed = toVector(original);
        tempInstance = compressor.compress(uncompressed);
      }
      else
        tempInstance = toVector(original);
    }
    if(cache.hasSpace())
      cache.cacheInstance(epoch, t0, tempInstance);
  }
}
Пример #2
0
void MeshDecimator::decimateQuadric(Data::OMMesh& mesh) 
{
   DecimatorT decimator(mesh);
   OpenMesh::Decimater::ModQuadricT<Data::OMMesh>::Handle handle;
   decimator.add(handle);
   decimator.module(handle).set_binary(false);
   decimator.module(handle).set_max_err(0.0001);

   if (!decimator.initialize()) {
      m_error = "Initialization for mesh decimation failed: Quadric module";
      return;
   }

   decimator.decimate();
   mesh.garbage_collection();
}
Пример #3
0
void MeshDecimator::decimateAspectRatio(Data::OMMesh& mesh) 
{
   DecimatorT decimator(mesh);
   OpenMesh::Decimater::ModAspectRatioT<Data::OMMesh>::Handle handle;
   decimator.add(handle);
   decimator.module(handle).set_binary(false);
   decimator.module(handle).set_aspect_ratio(10.0);

   if (!decimator.initialize()) {
      m_error = "Initialization for mesh decimation failed: Aspect Ratio module";
      return;
   }

   decimator.decimate();
   mesh.garbage_collection();
}
Пример #4
0
void MeshDecimator::decimateEdgeLength(Data::OMMesh& mesh) 
{
   DecimatorT decimator(mesh);
   OpenMesh::Decimater::ModEdgeLengthT<Data::OMMesh>::Handle handle;
   decimator.add(handle);
   decimator.module(handle).set_binary(false);
   decimator.module(handle).set_edge_length(0.1);

   if (!decimator.initialize()) {
      m_error = "Initialization for mesh decimation failed: Edge Length module";
      return;
   }

   decimator.decimate();
   mesh.garbage_collection();
}
Пример #5
0
void MeshDecimator::decimateNormalDeviation(Data::OMMesh& mesh) 
{
   // Normal Deviation
   DecimatorT decimator(mesh);
   OpenMesh::Decimater::ModNormalDeviationT<Data::OMMesh>::Handle handle;
   decimator.add(handle);
   decimator.module(handle).set_binary(false);
   decimator.module(handle).set_normal_deviation(4);

   if (!decimator.initialize()) {
      m_error = "Initialization for mesh decimation failed: Normal Deviation module";
      return;
   }

   decimator.decimate();
   mesh.garbage_collection();
}
Пример #6
0
void MeshDecimator::decimateQuadricAndEdge(Data::OMMesh& mesh, double const edgeThreshold) 
{
   DecimatorT decimator(mesh);

   OpenMesh::Decimater::ModQuadricT<Data::OMMesh>::Handle handle;
   decimator.add(handle);
   decimator.module(handle).set_binary(false);
   decimator.module(handle).set_max_err(0.0001);

   OpenMesh::Decimater::ModEdgeLengthT<Data::OMMesh>::Handle ehandle;
   decimator.add(ehandle);
   decimator.module(ehandle).set_binary(true);
   decimator.module(ehandle).set_edge_length(edgeThreshold);

   if (!decimator.initialize()) {
      m_error = "Initialization for mesh decimation failed: Quadric module";
      return;
   }

   decimator.decimate();
   mesh.garbage_collection();
}