ddt 1.1.0
Loading...
Searching...
No Matches
imageBuffer.hpp
Go to the documentation of this file.
1
20#ifndef IMAGEBUFFER_HPP
21#define IMAGEBUFFER_HPP
22
23#include <cpl.h>
24#include <sys/stat.h>
25
26#include <algorithm>
27#include <cctype>
28#undef I
29#undef arg
30
33#include "ddt/dataFile.hpp"
37#include "ddt/ddtLogger.hpp"
38#include "ddt/imageColor.hpp"
39#include "ddt/imageCoords.hpp"
40#include "ddt/imageError.hpp"
41#include "ddt/imageIO.hpp"
42#include "ddt/imageProc.hpp"
43#include "ddt/imageStats.hpp"
45
46namespace ddt {
47
55 public:
60
64 virtual ~ImageBuffer();
65
70 void set_logger(ddt::DdtLogger* const in_logger);
71
81 bool LoadFile(const std::string& file_name, const int position = 0);
82
91 bool LoadFilePlane(const std::string& file_name, const int position = 0,
92 const int plane = 0);
93
100 bool LoadImageExtensionsAsOne(const std::string& file_name);
101
107 bool LoadCPLImage(cpl_image* const image);
108
115 bool LoadActualConfigurationMap(const std::string configuration_map_name);
116
121 bool LoadConfigurationMaps(const std::string configuration_map_source);
122
127 bool LoadInformationMaps(const std::string information_map_source);
128
133
137 std::shared_ptr<DdtEncDec> get_MetadataSample();
138
142 cpl_image* get_Image();
143
147 std::string LastTimestampFromBuffer() const;
148
152 cpl_table* get_BinaryTable();
153
160 FitsExtension* get_FitsExtensionInfo(const int extension_number);
161
167
171 int get_ImageWidth() const;
172
176 int get_ImageHeight() const;
177
181 int get_NumberPlanes() const;
182
187 int get_CurrentPlane() const;
188
193 void set_CurrentPlane(const int plane);
194
199
203 int get_NumberAxis() const;
204
209 cpl_wcs* get_Wcs();
210
215 cpl_propertylist* get_PropertyList();
216
222 cpl_apertures* get_CircularObjects(const double sigma);
223
232 double get_PixelValue(const int x_image, const int y_image,
233 int* const is_rejected);
234
240 bool get_AttachedToStream() const;
241
247 bool get_LastSegment() const;
248
254 bool get_FirstSegmentReceived() const;
255
265 bool get_ConfigurationMap_Value(const double x, const double y,
266 double* const value) const;
267
275 std::list<std::string> get_TextInformation(const double x,
276 const double y) const;
277
282 std::vector<int> get_invalid_image_hdus() const;
283
288 void AttachDataStream(const std::string data_stream_id);
289
294 void DetachDataStream(const std::string data_stream_id);
295
301
306 void set_RetrieveStatsFlag(bool value);
307
312
313 void FreeResources();
314
315 // Add meta data items related to the WCS (World Coordinate System)
316 // information to the actual property list
317 static void AddWCSItemsToPropList(cpl_propertylist* const prop_list,
318 const std::shared_ptr<DdtEncDec> enc_dec);
319
320 // Determine the number of bits per pixel from the data type
321 static int32_t BitsPerPixelFromDataType(const uint32_t data_type);
322
323 protected:
328
329 private:
333 void Initialize();
334
339 bool LoadFileData();
340
345 bool LoadFileDataVector();
346
353 bool LoadFileDataImage(const int plane_number);
354
359 bool LoadImageExtensionsAsOne();
360
365 bool LoadWCS();
366
371 bool LoadPropertyList();
372
373 bool LoadWCSFromMetadata(const std::shared_ptr<DdtEncDecImage2D> enc_dec_2d);
374
375 bool LoadWCSFromMetadata(const std::shared_ptr<DdtEncDecImage3D> enc_dec_3d);
376
377 bool LoadWCSFromMetadata(const std::shared_ptr<DdtEncDecBinaryxD> enc_dec_xd);
378
379 bool AssignPropListAndWcs(cpl_propertylist* const prop_list);
380
384 boost::signals2::connection connect(const SignalT::slot_type& event_listener);
385
389 void DataAvailable();
390
398 void CheckByteOrder(const int topic_id, ddt::DataSample* const data_sample,
399 const std::vector<uint8_t> tmp_data);
400
413 void ChangeByteOrder(ddt::DataSample* const data_sample,
414 const int bytes_per_pixel,
415 const uint32_t data_type) const;
416
422 void HandleMultiLayer(ddt::DataSample* const data_sample);
423
429 void HandleMultiDim(ddt::DataSample* const data_sample);
430
436 void HandleBiDim(ddt::DataSample* const data_sample);
437
447 void HandleSingleDim(ddt::DataSample* const data_sample,
448 const std::string config_map_name,
449 const std::string dimension, const uint32_t data_type);
450
455 void DeleteCplImage(cpl_image** const image, const bool only_unwrap) const;
456
464 void ApplyConfigMap(ddt::DataSample* const data_sample,
465 const cpl_image* const config_map,
466 const uint32_t data_type, const int data_dim);
467
474 std::list<std::string> get_TextInformationForValue(const double value) const;
475
483 void CreateAndInitNewImage(const uint32_t complete_pixels_x,
484 const uint32_t complete_pixels_y,
485 const uint32_t data_type);
486
496 cpl_image* CreateNewImageFromDataSample(ddt::DataSample* const data_sample,
497 const int bytes_per_pixel,
498 const int number_pixels_x,
499 const int number_pixels_y,
500 const uint32_t data_type,
501 bool* const only_unwrap);
502
508 cpl_image* CreateNewImageFromLastImage(const int number_pixels_x,
509 const int number_pixels_y);
510
518 void CopySegmentToImage(const cpl_image* const tmp_image,
519 const uint32_t first_pixel_x,
520 const uint32_t first_pixel_y);
521
531 void FreeAndCreateNew(const uint32_t complete_pixels_x,
532 const uint32_t complete_pixels_y,
533 const uint32_t data_type, const uint32_t image_id,
534 const bool complete_flag);
535
536 void LogMetaDataBase(const std::shared_ptr<DdtEncDec> enc_dec);
537
541 void LogMetaDataImage2D(const std::shared_ptr<DdtEncDecImage2D> enc_dec_2d);
542
546 void LogMetaDataImage3D(const std::shared_ptr<DdtEncDecImage3D> enc_dec_3d);
547
551 void LogMetaDataBinaryxD(const std::shared_ptr<DdtEncDecBinaryxD> enc_dec_xd);
552
556 ddt::DataAcquisition* data_acquisition;
557
561 ddt::DataFile* data_file;
562
567 ddt::ConfigurationMaps* configuration_maps;
568
572 ddt::InformationMaps* information_maps;
573
577 boost::signals2::connection connection;
578
583 SignalT image_data_available;
584
588 cpl_image* internal_image[2];
589 int current_index;
590 int next_index;
591
595 cpl_vector* internal_vector;
596
600 cpl_table* internal_binary_table;
601
605 int actual_plane[2];
606
610 cpl_wcs* wcs[2];
611
615 int number_axis[2];
616
620 int number_planes[2];
621
625 int current_plane;
626
630 int number_extensions[2];
631
635 int image_width[2];
636
640 int image_height[2];
641
642 bool unwrap_only[2];
643
647 std::list<std::string> config_maps;
648
652 cpl_image* actual_configuration_map;
653
657 std::string actual_configuration;
658
662 boost::property_tree::ptree* actual_information_map;
663
667 std::string actual_configuration_map_source;
668
672 std::string actual_information_map_source;
673
677 int actual_image_id;
678
682 std::string last_timestamp;
683
688 bool last_segment;
689
698 bool first_segment_received;
699
700 /*
701 * Flag indicating if a new image cycle has started
702 */
703 bool new_image_cycle;
704
709 bool copy_last_segment;
710
714 uint32_t last_first_pixel_x;
715
719 uint32_t last_first_pixel_y;
720
724 cpl_propertylist* property_list[2];
725
729 std::shared_ptr<DdtEncDec> encdec_image_data;
730
734 std::mutex mtx;
735 std::mutex mtx2;
736};
737
738} // namespace ddt
739
740#endif /* IMAGEBUFFER_HPP */
741
Definition: configurationMaps.hpp:39
Definition: dataAcquisition.hpp:52
Definition: dataFile.hpp:78
Definition: ddtLogger.hpp:51
Definition: imageBuffer.hpp:54
void * get_ImageData()
static int32_t BitsPerPixelFromDataType(const uint32_t data_type)
Definition: imageBuffer.cpp:1618
cpl_apertures * get_CircularObjects(const double sigma)
Definition: imageBuffer.cpp:1227
cpl_propertylist * get_PropertyList()
Definition: imageBuffer.cpp:1222
int get_ImageWidth() const
Definition: imageBuffer.cpp:1810
void AttachDataStream(const std::string data_stream_id)
Definition: imageBuffer.cpp:1696
bool LoadFile(const std::string &file_name, const int position=0)
Definition: imageBuffer.cpp:1016
bool LoadInformationMaps(const std::string information_map_source)
Definition: imageBuffer.cpp:992
ddt::DdtLogger * logger
Definition: imageBuffer.hpp:327
void set_logger(ddt::DdtLogger *const in_logger)
Definition: imageBuffer.cpp:152
double get_PixelValue(const int x_image, const int y_image, int *const is_rejected)
Definition: imageBuffer.cpp:1242
void set_CurrentPlane(const int plane)
Definition: imageBuffer.cpp:1824
bool LoadConfigurationMaps(const std::string configuration_map_source)
Definition: imageBuffer.cpp:977
FitsExtension * get_FitsExtensionInfo(const int extension_number)
Definition: imageBuffer.cpp:1157
int get_NumberExtensions()
Definition: imageBuffer.cpp:1827
SignalT * ImageDataAvailableSignal()
Definition: imageBuffer.cpp:1691
int get_CurrentPlane() const
Definition: imageBuffer.cpp:1821
ddt::DdtStatistics * get_DataStatistics()
Definition: imageBuffer.cpp:1735
bool LoadImageExtensionsAsOne(const std::string &file_name)
Definition: imageBuffer.cpp:1097
bool get_LastSegment() const
Definition: imageBuffer.cpp:1835
std::shared_ptr< DdtEncDec > get_MetadataSample()
Definition: imageBuffer.cpp:1801
void FreeResources()
Definition: imageBuffer.cpp:922
bool LoadFilePlane(const std::string &file_name, const int position=0, const int plane=0)
Definition: imageBuffer.cpp:1008
ImageBuffer()
Definition: imageBuffer.cpp:79
bool get_ConfigurationMap_Value(const double x, const double y, double *const value) const
Definition: imageBuffer.cpp:1258
bool LoadCPLImage(cpl_image *const image)
Definition: imageBuffer.cpp:1166
cpl_wcs * get_Wcs()
Definition: imageBuffer.cpp:1219
int get_NumberAxis() const
Definition: imageBuffer.cpp:1832
static void AddWCSItemsToPropList(cpl_propertylist *const prop_list, const std::shared_ptr< DdtEncDec > enc_dec)
Definition: imageBuffer.cpp:1588
std::string LastTimestampFromBuffer() const
Definition: imageBuffer.cpp:488
int get_NumberPlanes() const
Definition: imageBuffer.cpp:1816
virtual ~ImageBuffer()
Definition: imageBuffer.cpp:81
bool LoadActualConfigurationMap(const std::string configuration_map_name)
Definition: imageBuffer.cpp:953
std::vector< int > get_invalid_image_hdus() const
Definition: imageBuffer.cpp:1339
cpl_image * get_Image()
Definition: imageBuffer.cpp:1804
FitsExtension get_PrimaryHDUInfo() const
Definition: imageBuffer.cpp:1161
cpl_table * get_BinaryTable()
Definition: imageBuffer.cpp:1807
bool get_AttachedToStream() const
Definition: imageBuffer.cpp:1730
std::list< std::string > get_TextInformation(const double x, const double y) const
Definition: imageBuffer.cpp:1277
int get_ImageHeight() const
Definition: imageBuffer.cpp:1813
void DetachDataStream(const std::string data_stream_id)
Definition: imageBuffer.cpp:1725
bool get_FirstSegmentReceived() const
Definition: imageBuffer.cpp:1838
void set_RetrieveStatsFlag(bool value)
Definition: imageBuffer.cpp:1739
Definition: informationMaps.hpp:38
Configuration Maps class, offers an interface to configuration map access classes....
Data acquisition class, offers access to data stream acquisition functions. This file is part of the ...
Data file class, offers access to FITS file functions. This file is part of the DDT Image Handling Li...
DDT EncDecMultiDim. Class to encode / decode multi-dimensional array data samples....
DDT EncDecImage2D. Class to encode / decode 2-dimensional data samples containing image data....
DDT EncDecMultiLayer. Class to encode / decode multi-layer image data samples. Class to encode / deco...
Class to wrap the usage of log4cplus as logging utility. This file provides a wrapper class for the u...
boost::signals2::signal< void()> SignalT
Definition: ddtMemoryAccessor.hpp:82
Image Color class, offers access to color map related functions. This file is part of the DDT Image H...
Image Handling class, offers access to coordinate conversion functions. This file is part of the DDT ...
Image error handling function declaration. This file is part of the DDT Image Handling Library and pr...
Image IO function declaration. This file is part of the DDT Image Handling Library and provides funct...
Image processing function declaration. This file is part of the DDT Image Handling Library and provid...
Image analysis and statistic function declaration. This file is part of the DDT Image Handling Librar...
Information Maps class, offers an interface to information map access classes. This file is part of t...
Definition: ddtClient.hpp:39
Definition: ddtMemoryAccessor.hpp:184
Definition: ddtStatistics.hpp:27
Definition: dataFile.hpp:39