Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
biasgetpmddata.cpp
1 /*
2  * getPmdData.cpp
3  *
4  * Created on: Jan 22, 2010
5  * Author: africk
6  */
7 
8 #include <Base/Image/ImageIO.hh>
9 #include <Utils/Param.hh>
10 #include <VideoSource/VideoSource_PMD.hh>
11 
12 using namespace std;
13 using namespace BIAS;
14 
15 /**
16  @file
17  @ingroup g_tools
18  @brief program for calculating pmd data from source images
19  with pmd source descriptor as meta data, see biasgetpmddata.cpp
20  @author africk
21  */
22 int main(int argc, char** argv) {
23  Param *p = new Param();
24 
25  p->AddParamString("pmdImagesList",
26  "list of pmd images with discriptor data saved as meta data", "");
27  p->AddParamBool("flipHorizontal",
28  "true flip horizontal, false not", false);
29  p->AddParamBool("flipVertical",
30  "true flip vertical, false not", false);
31 
32  p->ParseCommandLine(argc, argv);
33 
34  string imageListName = *(p->GetParamString("pmdImagesList"));
35  bool flipHorizontal = *(p->GetParamBool("flipHorizontal"));
36  bool flipVertical = *(p->GetParamBool("flipVertical"));
37 
38  vector<string> imageNames;
39  if (Param::ParseListFile(imageListName, imageNames) != 0) {
40  BIASERR("error: loading " << imageListName << endl);
41  return -1;
42  } else {
43  cout << "loaded : " << imageListName << endl;
44  }
45 
46  VideoSource_PMD vsPMD;
47  vsPMD.OpenProcessingPlugin();
48  Camera<char> camera;
49  Camera<float> newCamera;
50 // Camera<float> tmpCamera;
51 // tmpCamera.Init(204,204,1);
52  for (unsigned int i = 0; i < imageNames.size(); i++) {
53  if (ImageIO::Load(imageNames[i], camera) != 0) {
54  BIASERR("error loading "<< imageNames[i]);
55  } else {
56  camera.ParseMetaData();
57  }
58 
59  string imageName = imageNames[i];
60 
61  MetaData* metaData = camera.GetMetaData();
62 
63  if (metaData != NULL) {
64  AppData appData;
65  int res = metaData->Find(AppData::MD_PMD_DataDesc, appData);
66  if (res >= 0) {
67  vsPMD.CalcIntensitiesFromSourceData(camera, newCamera);
68  if (flipHorizontal) {
69  newCamera.FlipHorizontal();
70  }
71  if (flipVertical) {
72  newCamera.Flip();
73  }
74  newCamera.SetMetaData(*metaData);
75  ImageIO::Save("int_" + imageName, newCamera);
76  vsPMD.CalcDistancesFromSourceData(camera, newCamera);
77  if (flipHorizontal) {
78  newCamera.FlipHorizontal();
79  }
80  if (flipVertical) {
81  newCamera.Flip();
82  }
83  newCamera.ScaleShift(1000.0,0);
84  newCamera.SetMetaData(*metaData);
85  ImageIO::Save("depth_" + imageName, newCamera);
86  vsPMD.CalcAmplitudesFromSourceData(camera, newCamera);
87  if (flipHorizontal) {
88  newCamera.FlipHorizontal();
89  }
90  if (flipVertical) {
91  newCamera.Flip();
92  }
93  newCamera.SetMetaData(*metaData);
94  ImageIO::Save("amp_" + imageName, newCamera);
95  cout << imageName << " done ..." << endl;
96  } else {
97  BIASERR("No MD_PMD_DataDesc meta data found for " << imageName);
98  }
99  } else {
100  BIASERR(" no meta data exists for " << imageName);
101  }
102 
103  }
104 
105  vsPMD.CloseProcessingPlugin();
106 
107  return 0;
108 
109 }
extends the Image by MetaData support (e.g.
Definition: Camera.hh:74
MetaData * GetMetaData()
Definition: ImageBase.hh:456
bool * AddParamBool(const std::string &name, const std::string &help, bool deflt=false, char cmdshort=0, int Group=GRP_NOSHOW)
Definition: Param.cpp:305
int ScaleShift(double Scale, double Shift)
scales and shifts image (all channels simultanously)
Definition: Image.cpp:1064
int ParseCommandLine(int &argc, char *argv[])
scan command line arguments for valid parameters
Definition: Param.cpp:1028
bool * GetParamBool(const std::string &name) const
Definition: Param.cpp:633
Support for CamCube usb cam.
std::string * GetParamString(const std::string &name) const
Definition: Param.cpp:649
int Find(const enum AppData::TAppData tag, AppData &data) const
searches for tag in binary coded AppDatas.
Definition: MetaData.cpp:363
int CalcIntensitiesFromSourceData(BIAS::Image< char > &sourceData, BIAS::Image< float > &intImage)
int OpenProcessingPlugin(std::string plugin=BIAS_PMD_PMDTec_PROCPLUGIN)
Open the processing plugin.
This class Param provides generic support for parameters.
Definition: Param.hh:231
this class collects all additional data chunks of type AppData to be written into/read from an image ...
Definition: MetaData.hh:121
int CalcDistancesFromSourceData(BIAS::Image< char > &sourceData, BIAS::Image< float > &depthImage)
int Flip()
flips the image vertically (row order is inverted) In place function return 0 in case of success...
Definition: ImageBase.cpp:834
void SetMetaData(const MetaData &m)
Definition: ImageBase.hh:470
int CalcAmplitudesFromSourceData(BIAS::Image< char > &sourceData, BIAS::Image< float > &ampImage)
std::string * AddParamString(const std::string &name, const std::string &help, std::string deflt="", char cmdshort=0, int Group=GRP_NOSHOW)
Definition: Param.cpp:327
int FlipHorizontal()
flips the image horizontal (column order is inverted) In place function return 0 in case of success...
Definition: ImageBase.cpp:878
int ParseMetaData(bool bUse2x64bitTS=true)
After ImageIO::Load() operated on AppData_, this method fills P_, Timestamp, DC_*, ...
Definition: Camera.cpp:154
this is a chunk of metadata, also see MetaData
Definition: MetaData.hh:49
int CloseProcessingPlugin()
Close the processing plugin.