 |
ImageD
v2_7_5 (24.06.22)
ImageD is an image processing software designed for rapid prototyping and implementing algorithms and solutions for science, research and teaching.
|
Go to the documentation of this file.
9 #ifndef D_VIEWER_PLOT_3D_H
10 #define D_VIEWER_PLOT_3D_H
28 #include <QMessageBox>
29 #include <QFileDialog>
32 #include <QElapsedTimer>
34 #include <QGridLayout>
36 #include <QtCore/qmath.h>
37 #include <QtCore/qrandom.h>
38 #include <QtWidgets/QComboBox>
42 #include <QtDataVisualization>
43 #include <QtDataVisualization/q3dscatter.h>
44 #include <QtDataVisualization/qabstract3dseries.h>
45 #include <QtDataVisualization/qscatterdataproxy.h>
46 #include <QtDataVisualization/qvalue3daxis.h>
47 #include <QtDataVisualization/q3dscene.h>
48 #include <QtDataVisualization/q3dcamera.h>
49 #include <QtDataVisualization/qscatter3dseries.h>
50 #include <QtDataVisualization/q3dtheme.h>
51 #include <QtDataVisualization/QSurface3DSeries>
52 #include <QtDataVisualization/Q3DSurface>
53 #include <QtDataVisualization/QSurfaceDataProxy>
54 #include <QtDataVisualization/QSurfaceDataArray>
55 #include <QtDataVisualization/QCustom3DVolume>
58 #include <opencv2/core/core.hpp>
59 #include <opencv2/highgui/highgui.hpp>
60 #include <opencv2/imgproc/imgproc.hpp>
66 using namespace QtDataVisualization;
77 int init(QGridLayout *target_layout);
80 void clear_graph_all();
81 void clear_graph_scatter();
82 void clear_graph_heightmap();
85 bool save(QString QS_Save);
88 int plot_VD_custom(
D_VisDat_Obj *pVD,
size_t mode,
size_t cond,
size_t val_handle,
size_t axis_x,
size_t axis_y,
size_t axis_z,
size_t axis_v,
size_t plane_index_xy,
size_t dim_index_surfaces,
size_t surface_mode,
size_t texture_mode,
size_t marker,
size_t shadow,
bool background,
bool grid,
bool smooth,
bool draw_surface,
bool draw_wireframe);
89 int plot_VD_Scatter(
D_VisDat_Obj *pVD,
size_t cond,
size_t val_handle,
size_t axis_x,
size_t axis_y,
size_t axis_z,
size_t axis_v,
size_t marker,
size_t shadow,
bool background,
bool grid,
bool smooth,
bool called_internally =
false);
90 int plot_VD_Heightmap(
D_VisDat_Obj *pVD,
size_t plane_index_xy,
size_t dim_index_surfaces,
size_t axis_z,
size_t axis_v,
size_t surface_mode,
size_t texture_mode,
size_t shadow,
bool background,
bool grid,
bool draw_surface,
bool draw_wireframe,
bool called_internally =
false);
92 int plot_Heatmap(vector<double> vData_X,
double min_x,
double max_x,
bool auto_range_x,
size_t classes_x, QString name_x, vector<double> vData_Y,
double min_y,
double max_y,
bool auto_range_y,
size_t classes_y, QString name_y, vector<double> vData_Z,
size_t stat_z, QString name_z,
bool draw_height,
bool draw_wireframe,
bool man_axis_style_x =
false,
bool man_axis_style_y =
false,
bool man_axis_style_z =
false,
double man_min_x = 0,
double man_max_x = 1,
double man_min_y = 0,
double man_max_y = 1,
double man_min_z = 0,
double man_max_z = 1,
bool called_internally =
false);
94 int plot_ScatterData_Color(vector<double> vX, vector<double> vY, vector<double> vZ, vector<double> vV,
size_t color_handle,
size_t marker,
size_t shadow,
bool background,
bool grid,
bool smooth, QString axis_x, QString axis_y, QString axis_z, QString axis_v,
bool called_internally =
false);
95 int plot_Tree(vector<Point3d> vNodesCoord, vector<Point3d> vEdgeCoordBegins, vector<Point3d> vEdgeCoordEnds, vector<QColor> vNodeColor, vector<QColor> vEdgeColor,
size_t shadow,
bool background,
bool grid,
bool smooth, QString axis_x, QString axis_y, QString axis_z,
size_t points_per_edge = 5,
double size_nodes = 0.1,
double size_edge = 0.05,
bool called_internally =
false);
96 int plot_Heightmap(vector<Mat> *pvMA_Height, vector<QImage> *pvQI_Texture,
size_t shadow,
bool background,
bool grid, QString axis_x =
"X", QString axis_y =
"Y", QString axis_z =
"Z",
bool draw_surface =
true,
bool draw_wireframe =
false,
bool called_internally =
false);
103 QAbstract3DSeries::Mesh marker_from_id(
int marker_id);
104 size_t series_count_from_color_handle_id(
size_t color_handle_id);
105 QColor series_color(
size_t series_count,
size_t series_index,
size_t color_handle);
107 void show_graph_type(
size_t graph_type_id);
111 int dimIndex_FromAxisIndex(
size_t axis_index);
113 int ValueAxisMat(
Mat *pMA_Out,
Mat *pMA_In,
size_t axis_index,
Vec<int, c_DIM_NUMBER_OF> slice_pos,
double default_value = 0,
bool force_double =
false);
114 int SurfaceTextureImage(QImage *pQI_Out,
Mat *pMA_In,
size_t texture_mode,
size_t axis_index_value,
Vec<int, c_DIM_NUMBER_OF> slice_pos,
double default_value = 0,
bool use_fix_crop_range =
false,
double in_min = 0,
double in_max = 1);
118 void ERR(
int err, QString func, QString detail);
121 QGridLayout *layout_in_ui;
122 QWidget *container_widget_scatter;
123 QWidget *container_widget_heightmap;
126 Q3DScatter *graph_scatter;
127 Q3DSurface *graph_heightmap;
130 bool state_ui_init =
false;
131 bool state_container_widget_exists =
false;
132 bool state_plot_active =
false;
133 bool state_plotting =
false;
136 #endif // D_VIEWER_PLOT_3D_H
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
@ ER_okay
Definition: d_enum.h:133
@ c_COL2MONO_RED
Definition: d_enum.h:654
static function< double(double x, double y)> Function_2D_to_1D(int type, double a=1, double b=0, double c=1, double d=0, double e=0, double f=0, double nan_val=0, double inf_val=0)
Definition: d_math.cpp:88
@ c_VIEWER_PLOT_3D_MODE_SCATTER
Definition: d_enum.h:402
D_Viewer_Plot_3D()
Definition: d_viewer_plot_3d.cpp:3
int plot_VD_Heightmap(D_VisDat_Obj *pVD, size_t plane_index_xy, size_t dim_index_surfaces, size_t axis_z, size_t axis_v, size_t surface_mode, size_t texture_mode, size_t shadow, bool background, bool grid, bool draw_surface, bool draw_wireframe, bool called_internally=false)
Definition: d_viewer_plot_3d.cpp:262
@ c_DIM_X
Definition: d_enum.h:235
@ c_DIM_Z
Definition: d_enum.h:237
void clear_graph_all()
Definition: d_viewer_plot_3d.cpp:55
static int PlaneDim_2nd(int plane_index)
Definition: d_visdat_proc.cpp:37
@ c_COL2MONO_GREEN
Definition: d_enum.h:653
@ c_DIM_T
Definition: d_enum.h:238
@ c_VIEWER_PLOT_3D_VALUE_HANDLING_MONO
Definition: d_enum.h:426
int plot_Tree(vector< Point3d > vNodesCoord, vector< Point3d > vEdgeCoordBegins, vector< Point3d > vEdgeCoordEnds, vector< QColor > vNodeColor, vector< QColor > vEdgeColor, size_t shadow, bool background, bool grid, bool smooth, QString axis_x, QString axis_y, QString axis_z, size_t points_per_edge=5, double size_nodes=0.1, double size_edge=0.05, bool called_internally=false)
Definition: d_viewer_plot_3d.cpp:838
@ ER_channel_missmatch
Definition: d_enum.h:145
void clear_graph_heightmap()
Definition: d_viewer_plot_3d.cpp:72
@ ER_size_missmatch
Definition: d_enum.h:141
@ c_DIM_Y
Definition: d_enum.h:236
int plot_ScatterData_Color(vector< double > vX, vector< double > vY, vector< double > vZ, vector< double > vV, size_t color_handle, size_t marker, size_t shadow, bool background, bool grid, bool smooth, QString axis_x, QString axis_y, QString axis_z, QString axis_v, bool called_internally=false)
Definition: d_viewer_plot_3d.cpp:737
@ ER_UiNotInit
Definition: d_enum.h:177
~D_Viewer_Plot_3D()
Definition: d_viewer_plot_3d.cpp:13
bool save(QString QS_Save)
Definition: d_viewer_plot_3d.cpp:83
@ c_VIEWER_PLOT_3D_AXIS_COLOR_GREEN
Definition: d_enum.h:451
const QStringList QSL_Viewer3D_Axis
Definition: d_enum.h:459
@ c_MATH_2D_TO_1D_Y
Definition: d_enum.h:1033
static int Read_2D_Plane(Mat *pMA_Out, D_VisDat_Obj *pVD_In, D_VisDat_Slice_2D InPlane)
Definition: d_visdat_proc.cpp:2946
void loop_Reset()
Definition: d_visdat_dim.h:125
void clear_graph_scatter()
Definition: d_viewer_plot_3d.cpp:61
@ c_COL2MONO_VALUE
Definition: d_enum.h:663
@ c_VIEWER_PLOT_3D_AXIS_IMG_X
Definition: d_enum.h:439
int plot_VD_Scatter(D_VisDat_Obj *pVD, size_t cond, size_t val_handle, size_t axis_x, size_t axis_y, size_t axis_z, size_t axis_v, size_t marker, size_t shadow, bool background, bool grid, bool smooth, bool called_internally=false)
Definition: d_viewer_plot_3d.cpp:158
@ c_VIEWER_PLOT_3D_SURFACE_MODE_DIMENSION
Definition: d_enum.h:524
@ c_VIEWER_PLOT_3D_MODE_HEIGHTMAP
Definition: d_enum.h:403
@ c_VIEWER_PLOT_3D_MARKER_CYLINDER
Definition: d_enum.h:538
The D_VisDat_Dim class Represents a 6D volume.
Definition: d_visdat_dim.h:49
@ ER_ThreadIssue
Definition: d_enum.h:179
@ c_DIM_S
Definition: d_enum.h:239
@ c_COL2MONO_SATURATION
Definition: d_enum.h:662
void ERR(int err, QString sender, QString func, QString detail)
D_Error_Handler::ERR pops an error message if an error occured and/or streams it to a csv file.
Definition: d_error_handler.cpp:23
@ c_VIEWER_PLOT_3D_AXIS_IMG_Y
Definition: d_enum.h:440
int channels()
Definition: d_visdat_obj.h:76
static function< double(vector< double >)> Function_SingleStat(int stat)
Definition: d_stat.cpp:683
@ c_VIEWER_PLOT_3D_TEXTURE_GRAY
Definition: d_enum.h:510
static size_t Value2PoolIndex(double val, double min, double range, size_t classes)
Definition: d_stat.cpp:4196
@ c_VIEWER_PLOT_3D_AXIS_COLOR_VALUE
Definition: d_enum.h:455
static int Convert_toQImage4Ch(QImage *pQI_Out, Mat *pMA_In_Value, Mat *pMA_In_Alpha, bool heat_color)
Definition: d_img_proc.cpp:2006
The D_VisDat_Obj class Represents a 6D image.
Definition: d_visdat_obj.h:51
@ c_VIEWER_PLOT_3D_TEXTURE_IMAGE
Definition: d_enum.h:509
cv::Point3d Point3d
Definition: d_opencv_typedefs.h:41
@ c_VIEWER_PLOT_3D_AXIS_COLOR_GRAY
Definition: d_enum.h:449
@ c_VIEWER_PLOT_3D_MARKER_POINT
Definition: d_enum.h:534
Mat * pMA_full()
Definition: d_visdat_obj.h:61
@ c_MATH_2D_TO_1D_X
Definition: d_enum.h:1032
@ ER_parameter_missmatch
Definition: d_enum.h:143
@ c_COL2MONO_HUE
Definition: d_enum.h:661
@ c_VIEWER_PLOT_3D_TEXTURE_MONO
Definition: d_enum.h:508
D_VisDat_Dim Dim()
Definition: d_visdat_obj.h:72
int plot_Heightmap(vector< Mat > *pvMA_Height, vector< QImage > *pvQI_Texture, size_t shadow, bool background, bool grid, QString axis_x="X", QString axis_y="Y", QString axis_z="Z", bool draw_surface=true, bool draw_wireframe=false, bool called_internally=false)
Definition: d_viewer_plot_3d.cpp:963
@ c_VIEWER_PLOT_3D_AXIS_COLOR_SATURATION
Definition: d_enum.h:454
@ ER_type_bad
Definition: d_enum.h:136
@ c_VIEWER_PLOT_3D_AXIS_COLOR_RED
Definition: d_enum.h:452
@ c_VIEWER_PLOT_3D_AXIS_CHANNEL_2
Definition: d_enum.h:447
The D_Error_Handler class takes error codes from D_ERROR_ENUM and shows a popup if an error occures.
Definition: d_error_handler.h:38
static int Split(Mat *pMA_Out, Mat *pMA_In, unsigned int channel)
Definition: d_img_proc.cpp:4007
@ c_VIEWER_PLOT_3D_AXIS_IMG_S
Definition: d_enum.h:443
@ c_VIEWER_PLOT_3D_VALUE_HANDLING_HUE
Definition: d_enum.h:428
@ ER_channel_bad
Definition: d_enum.h:144
@ c_PLANE_NUMBER_OF
Definition: d_enum.h:308
vector< double > at(int x, int y, int z, int t, int s, int p)
Definition: d_visdat_obj.cpp:61
@ c_VIEWER_PLOT_3D_AXIS_CHANNEL_1
Definition: d_enum.h:446
int size_Dim(int idx)
Definition: d_visdat_dim.h:65
cv::Scalar Scalar
Definition: d_opencv_typedefs.h:30
@ c_VIEWER_PLOT_3D_AXIS_NUMBER_OF
Definition: d_enum.h:457
@ c_VIEWER_PLOT_3D_MARKER_ARROW
Definition: d_enum.h:540
The D_VisDat_Slice_2D class Represents a 2D slice through a D_VisDat_Obj.
Definition: d_visdat_slice_2d.h:18
@ c_VIEWER_PLOT_3D_MARKER_CUBE
Definition: d_enum.h:537
@ c_VIEWER_PLOT_3D_AXIS_EMPTY
Definition: d_enum.h:438
@ ER_other
Definition: d_enum.h:134
@ c_DIM_P
Definition: d_enum.h:240
Definition: d_viewer_plot_3d.h:69
@ c_COL2MONO_GRAY
Definition: d_enum.h:651
@ c_VIEWER_PLOT_3D_CONDITION_ALL
Definition: d_enum.h:416
D_VisDat_Dim * pDim()
Definition: d_visdat_obj.h:73
@ c_VIEWER_PLOT_3D_VALUE_HANDLING_NUMBER_OF
Definition: d_enum.h:429
@ c_VIEWER_PLOT_3D_AXIS_IMG_P
Definition: d_enum.h:444
const QStringList QSL_StatList
Definition: d_enum.h:797
@ c_VIEWER_PLOT_3D_AXIS_CHANNEL_0
Definition: d_enum.h:445
@ ER_dim_missmatch
Definition: d_enum.h:148
bool loop_Next()
Definition: d_visdat_dim.cpp:151
static int Convert_Mat_to_QImage(QImage *pQI_Out, Mat *pMA_In, bool use_custom_range_for_spread_non_8bit=false, double in_min=0, double in_max=1)
Definition: d_img_proc.cpp:973
@ c_STAT_NUMBER_OF_STATS
Definition: d_enum.h:795
int plot_VD_custom(D_VisDat_Obj *pVD, size_t mode, size_t cond, size_t val_handle, size_t axis_x, size_t axis_y, size_t axis_z, size_t axis_v, size_t plane_index_xy, size_t dim_index_surfaces, size_t surface_mode, size_t texture_mode, size_t marker, size_t shadow, bool background, bool grid, bool smooth, bool draw_surface, bool draw_wireframe)
Definition: d_viewer_plot_3d.cpp:96
const QStringList QSL_DimIndices
Definition: d_enum.h:251
@ c_VIEWER_PLOT_3D_SURFACE_MODE_SINGLE
Definition: d_enum.h:522
@ ER_UiAllreadyInit
Definition: d_enum.h:176
cv::Vec< T, N > Vec
Definition: d_opencv_typedefs.h:44
@ ER_parameter_bad
Definition: d_enum.h:142
Vec< int, c_DIM_NUMBER_OF > loop_PosCurrent()
Definition: d_visdat_dim.h:128
@ c_COL2MONO_BLUE
Definition: d_enum.h:652
@ c_VIEWER_PLOT_3D_CONDITION_NOT_ZERO
Definition: d_enum.h:417
@ c_VIEWER_PLOT_3D_MARKER_PYRAMID
Definition: d_enum.h:536
static int Convert_Depth_NoScaling(Mat *pMA_Out, Mat *pMA_In, int depth)
Definition: d_img_proc.cpp:2777
@ c_VIEWER_PLOT_3D_AXIS_IMG_T
Definition: d_enum.h:442
@ c_VIEWER_PLOT_3D_AXIS_COLOR_HUE
Definition: d_enum.h:453
static int Convert_Color2Mono(Mat *pMA_Out, Mat *pMA_In, int col2mono_code)
Definition: d_img_proc.cpp:2662
@ c_VIEWER_PLOT_3D_AXIS_IMG_Z
Definition: d_enum.h:441
@ c_VIEWER_PLOT_3D_AXIS_CHANNEL_3
Definition: d_enum.h:448
static int PlaneDim_1st(int plane_index)
Definition: d_visdat_proc.cpp:16
@ c_VIEWER_PLOT_3D_AXIS_COLOR_BLUE
Definition: d_enum.h:450
int plot_Heatmap(vector< double > vData_X, double min_x, double max_x, bool auto_range_x, size_t classes_x, QString name_x, vector< double > vData_Y, double min_y, double max_y, bool auto_range_y, size_t classes_y, QString name_y, vector< double > vData_Z, size_t stat_z, QString name_z, bool draw_height, bool draw_wireframe, bool man_axis_style_x=false, bool man_axis_style_y=false, bool man_axis_style_z=false, double man_min_x=0, double man_max_x=1, double man_min_y=0, double man_max_y=1, double man_min_z=0, double man_max_z=1, bool called_internally=false)
Definition: d_viewer_plot_3d.cpp:526
@ c_VIEWER_PLOT_3D_TEXTURE_HUE
Definition: d_enum.h:511
int init(QGridLayout *target_layout)
Definition: d_viewer_plot_3d.cpp:18
@ ER_index_out_of_range
Definition: d_enum.h:146
@ c_VIEWER_PLOT_3D_MARKER_SPHERE
Definition: d_enum.h:539
@ c_VIEWER_PLOT_3D_MARKER_MINIMAL
Definition: d_enum.h:535
@ c_VIEWER_PLOT_3D_SURFACE_MODE_CHANNELS
Definition: d_enum.h:523
static int Generate_byValueFunction(Mat *pMA_Out, int width, int height, function< double(double x, double y)> value_function)
Definition: d_img_proc.cpp:332
@ ER_empty
Definition: d_enum.h:135
@ c_VIEWER_PLOT_3D_VALUE_HANDLING_GRAY
Definition: d_enum.h:427