 |
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_BIO_NUCLEUSIMAGE_H
10 #define D_BIO_NUCLEUSIMAGE_H
25 #include <QFileDialog>
27 #include <QFileInfoList>
30 #include <QInputDialog>
40 #include <opencv2/core/core.hpp>
41 #include <opencv2/highgui/highgui.hpp>
42 #include <opencv2/imgproc/imgproc.hpp>
55 D_Bio_NucleusImage(
Mat *pMA_NucleiBinary, vector<Mat> *pvMA_FociBinary, vector<Mat> *pvMA_Values,
Point P_Offset_coordinates =
Point(0, 0),
Point P_Offset_mosaicgrid =
Point(0, 0),
size_t time = 0,
int neighborhood = 4,
bool blockSave_StichBorder_BottomRight =
false,
size_t block_x_right = INFINITY,
size_t block_y_bottom = INFINITY);
56 D_Bio_NucleusImage(
D_VisDat_Obj *pVD_NucleiBinary, vector<D_VisDat_Obj> *pvVD_FociBinary, vector<D_VisDat_Obj> *pvVD_Values,
Point P_Offset_coordinates =
Point(0, 0),
Point P_Offset_mosaicgrid =
Point(0, 0),
size_t time = 0,
int neighborhood = 4,
bool blockSave_StichBorder_BottomRight =
false,
size_t block_x_right = INFINITY,
size_t block_y_bottom = INFINITY);
57 D_Bio_NucleusImage(vector<D_VisDat_Obj> *pvVD_Images,
size_t index_NucleiBinary, vector<size_t> vIndices_FociBinary, vector<size_t> vIndices_Values,
Point P_Offset_coordinates =
Point(0, 0),
Point P_Offset_mosaicgrid =
Point(0, 0),
size_t time = 0,
int neighborhood = 4,
bool blockSave_StichBorder_BottomRight =
false,
size_t block_x_right = INFINITY,
size_t block_y_bottom = INFINITY);
59 int calc_NucleiDecomposition(
D_VisDat_Obj *pVD_NucleiBinary, vector<D_VisDat_Obj> *pvVD_FociBinary, vector<D_VisDat_Obj> *pvVD_Values,
Point P_Offset_coordinates =
Point(0, 0),
Point P_Offset_mosaicgrid =
Point(0, 0),
size_t time = 0,
int neighborhood = 4,
bool blockSave_StichBorder_BottomRight =
false,
size_t block_x_right = INFINITY,
size_t block_y_bottom = INFINITY);
60 int calc_NucleiDecomposition(vector<D_VisDat_Obj> *pvVD_Images,
size_t index_NucleiBinary, vector<size_t> vIndices_FociBinary, vector<size_t> vIndices_Values,
Point P_Offset_coordinates =
Point(0, 0),
Point P_Offset_mosaicgrid =
Point(0, 0),
size_t time = 0,
int neighborhood = 4,
bool blockSave_StichBorder_BottomRight =
false,
size_t block_x_right = INFINITY,
size_t block_y_bottom = INFINITY);
61 int calc_NucleiDecomposition(
Mat *pMA_NucleiBinary, vector<Mat> *pvMA_FociBinary, vector<Mat> *pvMA_Values,
Point P_Offset_coordinates =
Point(0, 0),
Point P_Offset_mosaicgrid =
Point(0, 0),
size_t time = 0,
int neighborhood = 4,
bool blockSave_StichBorder_BottomRight =
false,
size_t block_x_right = INFINITY,
size_t block_y_bottom = INFINITY);
63 int load(QString path,
bool foci_are_part_of_nuc_files);
64 int load_foci(QFileInfoList FIL_foci);
65 int save(QString path,
bool save_foci_in_nuclei,
bool save_foci_separate,
bool save_name_mosaic_not_coordiante);
66 int save_PathExactDir(QString path,
bool save_foci_in_nuclei,
bool save_foci_separate,
size_t x,
size_t y,
size_t t);
71 int get_Contours_append(vector<vector<Point>> *pvScaledContours,
double scale);
72 vector<Point2f> get_Centroids(
double scale,
Point2f scaled_offset);
73 int get_Centroids_append(vector<Point2f> *pvScaledCentroids,
double scale);
74 QStringList get_FociCounts();
75 int get_FociCount_append(QStringList *pQSL_FociCounts);
76 int get_ShapeInfo_append(QStringList *pQSL_ShapeInfo);
77 int get_ChannelStat_append(QStringList *pQSL_Stat,
size_t stat_index_bio_enum);
79 vector<D_Contour> get_nuclei_contour_objects();
80 void get_nuclei_contour_objects_append(vector<D_Contour> *pvContours);
84 size_t get_foci_count(
size_t foci_channel) {
return foci_channel < get_foci_channel_count() ? vvFoci[foci_channel].size() : 0;}
86 vector<vector<Point>> get_nuclei_contours(
double scale = 1,
Point scaled_offset =
Point(0, 0));
87 vector<Point2f> get_nuclei_centers(
double scale = 1,
Point scaled_offset =
Point(0, 0));
88 vector<Point2f> get_foci_centers(
size_t channel,
double scale = 1,
Point scaled_offset =
Point(0, 0));
89 vector<double> get_foci_radii(
size_t channel,
double scale = 1);
90 vector<double> get_foci_diameters(
size_t channel,
double scale = 1);
99 void add_foci (
size_t channel, vector<D_Bio_Focus> vFoc);
101 void add_nuclei (vector<D_Bio_NucleusBlob> vNuc);
103 bool remove_focus (
Point P,
size_t channel,
double margin = 0);
104 void remove_foci (vector<Point> vP,
size_t channel,
double margin = 0);
105 bool remove_nucleus (
Point P,
double margin = 0);
106 void remove_nuclei (vector<Point> vP,
double margin = 0);
107 void remove_nuclei_foci_all ();
108 void remove_foci_all ();
109 void remove_nuclei_all ();
110 void remove_nuclei_dulicates (vector<D_Bio_NucleusImage> vNucImgOther,
double min_rel_intersection_for_remove = 0.5);
114 bool load_focus(
D_Bio_Focus *FocusLoad, QTextStream *pTS_FociChannel);
119 vector<D_Bio_NucleusBlob> vNuclei;
120 vector<vector<D_Bio_Focus>> vvFoci;
123 #endif // D_BIO_NUCLEUSIMAGE_H
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
const QStringList QSL_Errors
Definition: d_enum.h:183
@ ER_okay
Definition: d_enum.h:133
const QStringList QSL_FileSubsections
Definition: d_bio_enum.h:34
size_t get_foci_count(size_t foci_channel)
Definition: d_bio_nucleusimage.h:84
vector< Point2f > get_nuclei_centers(double scale=1, Point scaled_offset=Point(0, 0))
Definition: d_bio_nucleusimage.cpp:888
double signal_stat(size_t channel, size_t stat_local_id)
Definition: d_bio_focus.cpp:219
@ FILE_SUBSECTION_MEAN
Definition: d_bio_enum.h:55
@ VAL_STAT_STD
Definition: d_bio_enum.h:79
void remove_nuclei_all()
Definition: d_bio_nucleusimage.cpp:1059
vector< double > get_foci_radii(size_t channel, double scale=1)
Definition: d_bio_nucleusimage.cpp:925
void remove_foci(vector< Point > vP, size_t channel, double margin=0)
Definition: d_bio_nucleusimage.cpp:1009
cv::Point2f Point2f
Definition: d_opencv_typedefs.h:37
vector< D_Bio_NucleusBlob > get_nuclei()
Definition: d_bio_nucleusimage.h:92
size_t size()
Definition: d_component_list.h:94
@ FILE_SUBSECTION_POSITION
Definition: d_bio_enum.h:61
double area()
Definition: d_bio_focus.h:72
@ ER_size_missmatch
Definition: d_enum.h:141
D_Bio_Focus get_focus(size_t ch, size_t foc)
Definition: d_bio_nucleusimage.h:94
void get_nuclei_contour_objects_append(vector< D_Contour > *pvContours)
Definition: d_bio_nucleusimage.cpp:859
int calc_NucleiDecomposition(D_VisDat_Obj *pVD_NucleiBinary, vector< D_VisDat_Obj > *pvVD_FociBinary, vector< D_VisDat_Obj > *pvVD_Values, Point P_Offset_coordinates=Point(0, 0), Point P_Offset_mosaicgrid=Point(0, 0), size_t time=0, int neighborhood=4, bool blockSave_StichBorder_BottomRight=false, size_t block_x_right=INFINITY, size_t block_y_bottom=INFINITY)
Definition: d_bio_nucleusimage.cpp:52
@ c_STAT_ABS_DEV_MED
Definition: d_enum.h:775
@ ER_file_not_exist
Definition: d_enum.h:161
static int Read_2D_Plane(Mat *pMA_Out, D_VisDat_Obj *pVD_In, D_VisDat_Slice_2D InPlane)
Definition: d_visdat_proc.cpp:2946
int get_Contours_append(vector< vector< Point >> *pvScaledContours, double scale)
Definition: d_bio_nucleusimage.cpp:783
vector< D_Contour > get_nuclei_contour_objects()
Definition: d_bio_nucleusimage.cpp:849
void set_FociChannels(size_t channels)
Definition: d_bio_nucleusblob.h:56
int get_Centroids_append(vector< Point2f > *pvScaledCentroids, double scale)
Definition: d_bio_nucleusimage.cpp:840
Definition: d_bio_focus.h:48
void remove_nuclei(vector< Point > vP, double margin=0)
Definition: d_bio_nucleusimage.cpp:1041
void remove_foci_all()
Definition: d_bio_nucleusimage.cpp:1053
void add_focus(size_t channel, D_Bio_Focus Foc)
Definition: d_bio_nucleusimage.cpp:953
size_t get_foci_channel_count()
Definition: d_bio_nucleusimage.h:83
@ FILE_SUBSECTION_MEDIAN_DEVIATION
Definition: d_bio_enum.h:60
@ FILE_SUBSECTION_FOCUS_END
Definition: d_bio_enum.h:53
@ FILE_SECTION_NUMBER_OF
Definition: d_bio_enum.h:30
Mat * get_pMatLabels()
Definition: d_component_list.h:67
@ FILE_SUBSECTION_SKEW
Definition: d_bio_enum.h:57
bool remove_nucleus(Point P, double margin=0)
Definition: d_bio_nucleusimage.cpp:1016
int get_FociCount_append(QStringList *pQSL_FociCounts)
Definition: d_bio_nucleusimage.cpp:801
@ FILE_SUBSECTION_KURTOSIS
Definition: d_bio_enum.h:58
@ VAL_STAT_NUMBER_OF
Definition: d_bio_enum.h:84
The D_VisDat_Obj class Represents a 6D image.
Definition: d_visdat_obj.h:51
@ FILE_SUBSECTION_SHAPE
Definition: d_bio_enum.h:62
size_t get_nuclei_count()
Definition: d_bio_nucleusimage.h:82
@ c_STAT_COUNT
Definition: d_enum.h:734
@ VAL_STAT_SKEW
Definition: d_bio_enum.h:80
QString info()
Definition: d_bio_nucleusimage.cpp:943
D_Bio_NucleusBlob get_nucleus(size_t nuc)
Definition: d_bio_nucleusimage.h:93
cv::Point Point
Definition: d_opencv_typedefs.h:35
@ ER_bitdepth_bad
Definition: d_enum.h:138
@ VAL_STAT_COUNT
Definition: d_bio_enum.h:77
int load(QString path, bool foci_are_part_of_nuc_files)
Definition: d_bio_nucleusimage.cpp:486
vector< vector< Point > > get_nuclei_contours(double scale=1, Point scaled_offset=Point(0, 0))
Definition: d_bio_nucleusimage.cpp:866
vector< double > get_foci_diameters(size_t channel, double scale=1)
Definition: d_bio_nucleusimage.cpp:938
@ FILE_SUBSECTION_VAL_COUNT
Definition: d_bio_enum.h:54
double convexity()
Definition: d_bio_focus.h:74
@ FILE_SUBSECTION_NEW_FOCI_CHANNEL
Definition: d_bio_enum.h:51
@ c_STAT_MEDIAN
Definition: d_enum.h:764
vector< Point2f > get_foci_centers(size_t channel, double scale=1, Point scaled_offset=Point(0, 0))
Definition: d_bio_nucleusimage.cpp:905
@ ER_type_bad
Definition: d_enum.h:136
Definition: d_bio_nucleusimage.h:50
Point2f centroid()
Definition: d_bio_focus.h:71
@ FILE_SUBSECTION_MEDIAN
Definition: d_bio_enum.h:59
Definition: d_bio_nucleusblob.h:46
@ ER_channel_bad
Definition: d_enum.h:144
D_Component get_Component(size_t index)
Definition: d_component_list.h:56
int save_PathExactDir(QString path, bool save_foci_in_nuclei, bool save_foci_separate, size_t x, size_t y, size_t t)
Definition: d_bio_nucleusimage.cpp:684
@ VAL_STAT_MEAN
Definition: d_bio_enum.h:78
vector< Point2f > get_Centroids(double scale, Point2f scaled_offset)
Definition: d_bio_nucleusimage.cpp:828
QStringList get_FociCounts()
Definition: d_bio_nucleusimage.cpp:791
int get_ChannelStat_append(QStringList *pQSL_Stat, size_t stat_index_bio_enum)
Definition: d_bio_nucleusimage.cpp:817
void block_save_StitchingBorder_BottomRight(size_t x, size_t y)
Definition: d_bio_nucleusblob.h:80
void add_nuclei(vector< D_Bio_NucleusBlob > vNuc)
Definition: d_bio_nucleusimage.cpp:975
@ c_STAT_KURTOSIS_SAMPLE
Definition: d_enum.h:749
@ FILE_SUBSECTION_DEFAULT
Definition: d_bio_enum.h:50
@ FILE_SUBSECTION_FOCUS_BEGIN
Definition: d_bio_enum.h:52
The D_VisDat_Slice_2D class Represents a 2D slice through a D_VisDat_Obj.
Definition: d_visdat_slice_2d.h:18
@ FILE_SUBSECTION_STD
Definition: d_bio_enum.h:56
@ ER_StreamNotOpen
Definition: d_enum.h:174
@ VAL_STAT_KURTOSIS
Definition: d_bio_enum.h:81
int set_Mat(Mat *pMA_BinaryOrLabel, int connectivity=8)
Definition: d_component_list.cpp:22
D_Bio_NucleusImage()
Definition: d_bio_nucleusimage.cpp:11
void remove_nuclei_dulicates(vector< D_Bio_NucleusImage > vNucImgOther, double min_rel_intersection_for_remove=0.5)
Definition: d_bio_nucleusimage.cpp:1064
vector< Point > get_Contour()
Definition: d_component.h:67
bool load_simple(QString nucleus_file, bool load_foci_from_file)
Definition: d_bio_nucleusblob.cpp:536
size_t channels()
Definition: d_bio_focus.cpp:211
The D_Component_List class is a list of D_Component representing the blobs in a binary image.
Definition: d_component_list.h:46
@ c_STAT_STAN_DEV_SAMPLE
Definition: d_enum.h:751
@ VAL_STAT_MEDIAN_DEVIATION
Definition: d_bio_enum.h:83
int load_foci(QFileInfoList FIL_foci)
Definition: d_bio_nucleusimage.cpp:535
void add_foci(size_t channel, vector< D_Bio_Focus > vFoc)
Definition: d_bio_nucleusimage.cpp:961
bool remove_focus(Point P, size_t channel, double margin=0)
Definition: d_bio_nucleusimage.cpp:981
@ FILE_SUBSECTION_NUMBER_OF
Definition: d_bio_enum.h:63
void set_OffsetMosaicGrid(Point OffsetMosaicGrid)
Definition: d_bio_nucleusimage.h:68
@ ER_parameter_bad
Definition: d_enum.h:142
int get_ShapeInfo_append(QStringList *pQSL_ShapeInfo)
Definition: d_bio_nucleusimage.cpp:809
@ VAL_STAT_MEDIAN
Definition: d_bio_enum.h:82
void add_nucleus(D_Bio_NucleusBlob Nuc)
Definition: d_bio_nucleusimage.cpp:970
void remove_nuclei_foci_all()
Definition: d_bio_nucleusimage.cpp:1047
int save(QString path, bool save_foci_in_nuclei, bool save_foci_separate, bool save_name_mosaic_not_coordiante)
Definition: d_bio_nucleusimage.cpp:657
@ c_STAT_SKEWNESS_SAMPLE
Definition: d_enum.h:747
const QStringList QSL_ValueStat_Subsection
Definition: d_bio_enum.h:67
void set_OffsetPixels(Point OffsetPixels)
Definition: d_bio_nucleusimage.h:69
static int Calc_Stats(vector< double > *v_stats, vector< double > v_data, bool calc_sorted)
Definition: d_stat.cpp:16
@ c_STAT_MEAN_ARITMETIC
Definition: d_enum.h:740
@ ER_index_out_of_range
Definition: d_enum.h:146
double compactness()
Definition: d_bio_focus.h:73
@ ER_empty
Definition: d_enum.h:135
void set_detected_in_channel(size_t ch_detected)
Definition: d_bio_focus.h:56