Home | Develop | Download | Contact
example_funcarraylabeling.cpp
1 
37 #include <Pds/Ra>
38 #include <Pds/Sp>
39 
40 int main(void)
41 {
42  Pds::Ra::Randomize();
43 
44  unsigned int L=512;
45  Pds::Array<unsigned char> A(L,L);
46 
47  // Cargando datos de prueba
49  Pds::Matrix(A).Scale(0,255).ExportBmpFile(Pds::Colormap::Gray,"A-binary-circle.bmp");
50 
51  // Usando Pds::Image::IdMapUsingCC4() para obter la matriz ID
52  Pds::Array<unsigned int> ID;
53 
54  Pds::Ra::Tic();
56  Pds::Ra::Toc();
57 
58  Pds::Matrix(ID).Scale(0,255).ExportBmpFile(Pds::Colormap::Steps,"A-id-circle.bmp");
59 
60  // Obtendo datos de los grupos en ID
61  std::vector<std::vector<Pds::Position>> Data;
62  Pds::Ra::Tic();
64  Pds::Ra::Toc();
65 
66  for(unsigned int i=0;i<Data.size();i++)
67  {
68  double Per=Pds::Image::PerimeterOfConvexGroup(Data[i]);
69  unsigned int Area=Data[i].size();
70 
71  std::cout<<"Perimeter["<<i<<"]:\t"<<Per<<"\t";
72  std::cout<<" Area["<<i<<"]:\t"<<Area<<"\t";
73  std::cout<<" Gamma["<<i<<"]:\t"<<(Per/2.0)/sqrt(Area*Pds::Ra::Pi)<<"\n";
74  }
75  return 0;
76 }
77 
78 /*
79 
80 */
bool LoadDataCircles(Pds::Array< unsigned char > &BW, unsigned int L=4, double Offset=1)
Generando datos de grupos de 1s formando circulos.
double PerimeterOfConvexGroup(const std::vector< Pds::Position > &Group)
Calcula el perimetro de un grupo si este es convexo. EL perimetro es calculado usando un criterio de ...
std::vector< std::vector< Pds::Position > > VectorGroupFromIdMap(const Pds::Array< unsigned int > &ID_MAP)
Retorna todos los grupos de posiciones (std::vector<Pds::Position>) agrupados en un vector (std:vecto...
Pds::Array< unsigned int > IdMapUsingCC4(const Pds::Array< unsigned char > &BW)
Connected-component labeling para 4 conectividad.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed