DGtal 1.3.0
Loading...
Searching...
No Matches
Functions
generateVoxelComplexTables.cpp File Reference
#include <iostream>
#include <vector>
#include "DGtal/helpers/StdDefs.h"
#include "DGtal/topology/VoxelComplexFunctions.h"
#include "DGtal/topology/tables/NeighborhoodTablesGenerators.h"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Author
Pablo Hernandez-Cerdan (pablo.nosp@m..her.nosp@m.nande.nosp@m.z.ce.nosp@m.rdan@.nosp@m.outl.nosp@m.ook.c.nosp@m.om) Institute of Fundamental Sciences. Massey University. Palmerston North, New Zealand
Date
2018/01/01

Creates precomputed tables for all possible configurations of the neighborhood of a voxel in 3D with a topology of 26 neighbors. The table is a map between all this configurations and the result of applying an input selected predicate function to a center voxel. The options for the functions are the Skel function from

See also
VoxelComplexFunctions.h.

The options are: skelFunction = functions::oneIsthmus<VoxelComplex>; skelFunction = functions::twoIsthmus<VoxelComplex>; skelFunction = functions::skelIsthmus<VoxelComplex>;

where the latest is equivalent to (oneIsthmus OR twoIsthmus)

Isthmuses are implemented to work with 3D cubical(voxel) complexes. Right now the tables are only generated with 26_6 topology, but other 3D topologies can be added.

This file is part of the DGtal library.

Definition in file generateVoxelComplexTables.cpp.

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 61 of file generateVoxelComplexTables.cpp.

62{
63 typedef std::bitset<67108864> ConfigMap; // 2^26
64
65 using namespace Z3i;
67
68 std::function< bool(
69 const VoxelComplex & ,
70 const typename VoxelComplex::Cell & )
71 > skelFunction;
72 string error_message(
73 "Provide one of the following arguments for select function:\n"
74 "- skelIsthmus \n"
75 "- oneIsthmus \n"
76 "- twoIsthmus \n");
77 if (argc != 2 ){
78 cout << error_message << std::endl;
79 return 1;
80 }
81 std::string input_str = std::string(argv[1]);
82 if (input_str == "skelIsthmus")
83 skelFunction = functions::skelIsthmus<VoxelComplex>;
84 else if (input_str == "oneIsthmus")
85 skelFunction = functions::oneIsthmus<VoxelComplex>;
86 else if (input_str == "twoIsthmus")
87 skelFunction = functions::twoIsthmus<VoxelComplex>;
88 else{
89 cout << error_message << endl;
90 return 1;
91 }
92
93 trace.beginBlock ( "Generate " + input_str + " table for 26_6 topology" );
94 // Too big for stack. Use heap instead.
95 auto table26_6 = make_shared<ConfigMap>();
96 functions::generateVoxelComplexTable< VoxelComplex >(
97 *table26_6,
98 skelFunction );
99
100 string filename = input_str + "_table26_6.txt";
101 trace.info() << "Save to file... " + filename << std::endl;
102 ofstream file26_6( filename );
103 file26_6 << *table26_6;
104 file26_6.close();
105
106 trace.endBlock();
107
108 return 0;
109}
void beginBlock(const std::string &keyword="")
std::ostream & info()
double endBlock()
This class represents a voxel complex living in some Khalimsky space. Voxel complexes are derived fro...
Definition: VoxelComplex.h:91
typename KSpace::Cell Cell
Definition: VoxelComplex.h:114
std::vector< bool > ConfigMap
Trace trace
Definition: Common.h:154

References DGtal::Trace::beginBlock(), DGtal::Trace::endBlock(), DGtal::Trace::info(), and DGtal::trace.