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); } }
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(); }
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(); }
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(); }
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(); }
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(); }