Visual Vibration Tracking 0.2
Загрузка...
Поиск...
Не найдено
Открытые члены | Закрытые типы | Закрытые члены | Закрытые данные | Полный список членов класса
Класс ColoredPointHandler

Дочерний (от VibratingPoint) класс. Предназначен для помещения множества цветных точек на кадр и отслеживания вибрации каждой из них Подробнее...

#include <colored_point_handler.h>

Граф наследования:ColoredPointHandler:
Inheritance graph
[см. легенду]
Граф связей класса ColoredPointHandler:
Collaboration graph
[см. легенду]

Открытые члены

 ColoredPointHandler (Point2f init_coordinates, double sampling_rate, int point_id, float radius_resize_factor, std::string output_csv_filename)
 Конструктор этого класса Подробнее...
 
 ~ColoredPointHandler ()
 Деструктор этого класса Подробнее...
 
void Draw (Mat &frame) override
 Отрисовывает точку и данные, связанные с ней Подробнее...
 
void SetColoringMode (int coloring_mode)
 Устанавливает нужный режим отрисовки цветом Подробнее...
 
- Открытые члены унаследованные от Histogram
 Histogram (int width, int height, int x_limit, int id, std::vector< double > &x_values, std::vector< float > &y_values)
 Конструктор этого класса Подробнее...
 
 ~Histogram ()
 Деструктор этого класса Подробнее...
 
void DetectEvent (int event, int x, int y, int flags)
 callback функция для определения события (используется для хэндлинга клика мышью) Подробнее...
 
void ShowHistogram ()
 Выводит гистограмму в окно гистограммы Подробнее...
 
void SetXValues (std::vector< double > x_values)
 Устанавливает X-ы Подробнее...
 
void SetYValues (std::vector< float > y_values)
 Устанавливает Y-ы Подробнее...
 
void SetHistogramFlag (bool flag)
 Устанавливает статус флага отрисовки гистограммы Подробнее...
 
void SetHistogramWindowProperty (int prop_id, int prop_value)
 Обновляет статус окна гистограммы (например, для вывода на передний план) Подробнее...
 
- Открытые члены унаследованные от VibratingPoint
void ExecuteFFT ()
 Выполняет БПФ для нахождения частоты вибрации. Подробнее...
 
void AddNewPointPosition (Point2f position)
 Добавляет новую пространственную координату в конец контейнера VibratingPoint::point_coordinates_;. Подробнее...
 
void AddNewPointTime (double time)
 Добавляет новую временную координату (время кадра, на котором новая позиция точки была трекнута) в конец контейнера VibratingPoint::point_time_coordinates_;. Подробнее...
 
bool IsInteracted (Point2i coordinates)
 Проверяет точку на наличие взаимодействия с ней (если курсор попал в область взаимодействия точки VibratingPoint::interaction_box_) Подробнее...
 
void SetSensivity (double sensivity)
 Устанавливает чувствительность, влияющую на confidence. Подробнее...
 
void CalculateAmplitude ()
 Проводит необходимые для вычисления амплитуды вычисления Подробнее...
 
virtual void Draw (Mat &frame)=0
 Отрисовывает точку на кадре Подробнее...
 
Point2f GetLastFoundCoordinates ()
 Возвращает последний элемент вектора координат Подробнее...
 
std::vector< double > GetCurrentVibrationFrequency ()
 Возвращает вектор текущих частот точки Подробнее...
 
double GetCurrentMainFrequency ()
 Возвращает текущую "основную" частоту Подробнее...
 
Point3f GetRelativeAmplitude ()
 Возвращает последнюю найденную относительную амплитуду Подробнее...
 
Point3f GetCurrentAmplitude ()
 Возвращает последнюю найденную относительную амплитуду Подробнее...
 
double GetCurrentConfidenceLevel ()
 Возвращает последний найденный уровень достоверности Подробнее...
 
- Открытые члены унаследованные от OutputToCsv
 OutputToCsv (std::string output_file_name, std::vector< Point2f > &point_coordinates, std::vector< double > &point_time_coordinates, int point_id)
 Конструктор этого класса Подробнее...
 
void Write ()
 Добавляет данные для записи Подробнее...
 

Закрытые типы

enum  coloring_mode { DEFAULT , COLORING_BASED_ON_FREQUENCY , COLORING_BASED_ON_AMPLITUDE }
 Перечисление, используемое для более удобного отображения текущего режима подсветки точки Подробнее...
 

Закрытые члены

void DrawHistogram () override
 Отрисовывает гистограмму Подробнее...
 
void DrawPoint (Mat &frame)
 Отрисовывает точку на кадре Подробнее...
 
void DrawInteractionRectangle (Mat &frame)
 Отрисовывает прямоугольник взаимодействия Подробнее...
 
void UpdatePointColor () override
 Обновляет текущий цвет точки Подробнее...
 

Закрытые данные

int coloring_mode_
 
float radius_resize_factor_
 Коэффициент рескейла для радиуса точки Подробнее...
 
int point_id_
 ID точки (нет блин почки) Подробнее...
 
Scalar point_color_
 Цвет точки Подробнее...
 

Дополнительные унаследованные члены

- Открытые статические члены унаследованные от Histogram
static void OnMouse (int event, int x, int y, int flags, void *userdata)
 callback функция для определения события (используется для хэндлинга клика мышью) Подробнее...
 
- Статические открытые данные унаследованные от VibratingPoint
static std::pair< double, double > extremum_amplitude_
 Максимум и минимум амплитуды среди всех VibratingPoint объектов-наследников Подробнее...
 
virtual void DrawHistogram ()=0
 Отрисовывает гистограмму спектра частот колебаний точки (полученную после БПФ в методе ExecuteFFT()) Подробнее...
 
virtual void UpdatePointColor ()=0
 Обновляем текущий цвет точки Подробнее...
 
- Защищенные данные унаследованные от Histogram
bool is_histogram_plotted_
 Флаг для отрисовки гистограммы Подробнее...
 
- Защищенные данные унаследованные от VibratingPoint
Rect interaction_box_
 Прямоугольник (область) взаимодействия с точкой Подробнее...
 
int interaction_offset_
 Половина длины прямоугольника взаимодействия Подробнее...
 
bool interacted_
 Флаг взаимодействия с точкой Подробнее...
 
Point3f relative_amplitude_
 Относительные амплитуды вибрации по x, y. Выражается отношением амплитуды Подробнее...
 
Point3f current_amplitude_
 Фактические амплитуды вибрации по x, y. Выражаюытся в пикселях Подробнее...
 
std::vector< Point2f > point_coordinates_
 Контейнер для координат точки Подробнее...
 
std::vector< double > x_coordinates_
 Контейнер для координат точки по оси X. Подробнее...
 
std::vector< double > y_coordinates_
 Контейнер для координат точки по оси Y. Подробнее...
 
std::vector< cv::Point2f > vec_meaned_coordinates_of_point_
 Контейнер для координат точки относительно нулевого уровня Подробнее...
 
std::vector< double > frequencies_
 Контейнер для частот точки Подробнее...
 
double main_frequency_
 Главная частота (основная) Подробнее...
 
std::vector< double > point_time_coordinates_
 Контейнер для временных координат точки Подробнее...
 
double sampling_rate_
 Частота сэмплирования (фактически - FPS исходного видео) Подробнее...
 
int current_point_radius_
 Радиус точки, который нужен для её отрисовки Подробнее...
 
int default_point_radius_
 Дефолтный радиус точки Подробнее...
 
std::vector< double > x_
 Контейнер для хранения координат гистограммы по оси X (фактически - найденный спектр частот вибрации точки после выполнения БПФ) Подробнее...
 
std::vector< float > y_
 Контейнер для хранения координат гистограммы по оси Y (фактически - найденные магнитуды точки после выполнения БПФ) Подробнее...
 
double sensivity_
 Чувствительность определения вибрации Подробнее...
 
double confidence_level_
 Рейтинг достоверности вибрации Подробнее...
 

Подробное описание

Дочерний (от VibratingPoint) класс. Предназначен для помещения множества цветных точек на кадр и отслеживания вибрации каждой из них

Объект класса - "цветная" точка на видео, положение которой отслеживается с течением времени для вычисления частоты вибрации этой точки

Точку можно отрисовать методом Draw() на кадре

Также при взаимодействии с точкой (VibratingPoint::IsInteracted()) будет выводиться гистограмма частот в отдельное окно (DrawHistogram())

См. определение в файле colored_point_handler.h строка 26

Перечисления

◆ coloring_mode

Перечисление, используемое для более удобного отображения текущего режима подсветки точки

См. определение в файле colored_point_handler.h строка 31

32 {
33 DEFAULT,
34 COLORING_BASED_ON_FREQUENCY,
35 COLORING_BASED_ON_AMPLITUDE,
36 };

Конструктор(ы)

◆ ColoredPointHandler()

ColoredPointHandler::ColoredPointHandler ( Point2f  init_coordinates,
double  sampling_rate,
int  point_id,
float  radius_resize_factor,
std::string  output_csv_filename 
)

Конструктор этого класса

Аргументы
init_coordinatesсамые первые координаты точки (фактически - координаты клика мышью на окне, куда выводилось исходное видео)
sampling_rateчастота сэмплирования (фактически - FPS исходного видео)
point_idID точки
radius_resize_factorкоэффициент масштабирования радиуса отрисовываемой точки
output_csv_filenameимя (путь) csv-файла для записи метаданных
Заметки
Коэффициент масштабирования: FrameHandler::InitTextResizeFactors()

См. определение в файле colored_point_handler.cpp строка 3

3 :
4 Histogram{ 600, 300, sampling_rate / 2, point_id, x_, y_ },
5 OutputToCsv{ output_csv_filename, point_coordinates_, point_time_coordinates_, point_id },
6 point_id_{ point_id },
7 radius_resize_factor_{ radius_resize_factor },
8 coloring_mode_{ COLORING_BASED_ON_FREQUENCY }
9{
11 sampling_rate_ = sampling_rate;
12
13 // Добавляем первые координаты клика мышью
14 point_coordinates_.push_back(init_coordinates);
15 interaction_box_ = Rect(
16 Point2i(init_coordinates.x - interaction_offset_, init_coordinates.y - interaction_offset_),
17 Point2i(init_coordinates.x + interaction_offset_, init_coordinates.y + interaction_offset_)
18 );
19 interacted_ = false;
20
21 default_point_radius_ = 4 * radius_resize_factor;
23
24 frequencies_.push_back(0.0);
25 relative_amplitude_ = Point3f(0.0, 0.0, 0.0);
26
27 sensivity_ = 0.01;
29
30 point_color_ = Scalar(0, 0, 255);
31}
int point_id_
ID точки (нет блин почки)
float radius_resize_factor_
Коэффициент рескейла для радиуса точки
Scalar point_color_
Цвет точки
Класс для создания объектов-гистограмм, на которые можно выводить различную информацию
Definition: histogram.h:17
Класс для сохранения метаданных (временных и пространственных координат, ID точки)
Definition: output_to_csv.h:18
bool interacted_
Флаг взаимодействия с точкой
Rect interaction_box_
Прямоугольник (область) взаимодействия с точкой
std::vector< double > x_
Контейнер для хранения координат гистограммы по оси X (фактически - найденный спектр частот вибрации ...
double sampling_rate_
Частота сэмплирования (фактически - FPS исходного видео)
double confidence_level_
Рейтинг достоверности вибрации
int interaction_offset_
Половина длины прямоугольника взаимодействия
Point3f relative_amplitude_
Относительные амплитуды вибрации по x, y. Выражается отношением амплитуды
std::vector< float > y_
Контейнер для хранения координат гистограммы по оси Y (фактически - найденные магнитуды точки после в...
double sensivity_
Чувствительность определения вибрации
int current_point_radius_
Радиус точки, который нужен для её отрисовки
std::vector< double > point_time_coordinates_
Контейнер для временных координат точки
std::vector< double > frequencies_
Контейнер для частот точки
int default_point_radius_
Дефолтный радиус точки
std::vector< Point2f > point_coordinates_
Контейнер для координат точки

◆ ~ColoredPointHandler()

ColoredPointHandler::~ColoredPointHandler ( )

Деструктор этого класса

Вызывает метод родительского класса OutputToCsv Write() для записи метаданных

См. определение в файле colored_point_handler.cpp строка 33

34{
35 Write();
36}
void Write()
Добавляет данные для записи

Методы

◆ Draw()

void ColoredPointHandler::Draw ( Mat &  frame)
overridevirtual

Отрисовывает точку и данные, связанные с ней

Аргументы
frameизображение, на котором будет происходить отрисовка

Замещает VibratingPoint.

См. определение в файле colored_point_handler.cpp строка 38

39{
40 // отрисовываем круг вокруг точки
41 DrawPoint(frame);
42 // отрисовываем гистограмму
44}
void DrawPoint(Mat &frame)
Отрисовывает точку на кадре
void DrawHistogram() override
Отрисовывает гистограмму

◆ DrawHistogram()

void ColoredPointHandler::DrawHistogram ( )
overrideprivatevirtual

Отрисовывает гистограмму

Замещает VibratingPoint.

См. определение в файле colored_point_handler.cpp строка 51

52{
54 {
58 }
59}
void ShowHistogram()
Выводит гистограмму в окно гистограммы
Definition: histogram.cpp:54
void SetYValues(std::vector< float > y_values)
Устанавливает Y-ы
Definition: histogram.cpp:69
void SetXValues(std::vector< double > x_values)
Устанавливает X-ы
Definition: histogram.cpp:64
bool is_histogram_plotted_
Флаг для отрисовки гистограммы
Definition: histogram.h:93

◆ DrawInteractionRectangle()

void ColoredPointHandler::DrawInteractionRectangle ( Mat &  frame)
private

Отрисовывает прямоугольник взаимодействия

Аргументы
frameизображение, на котором будет происходить отрисовка

См. определение в файле colored_point_handler.cpp строка 68

69{
70 rectangle(frame, interaction_box_, Scalar(0, 0, 255), 1);
71}

◆ DrawPoint()

void ColoredPointHandler::DrawPoint ( Mat &  frame)
private

Отрисовывает точку на кадре

Аргументы
frameизображение, на котором будет происходить отрисовка

См. определение в файле colored_point_handler.cpp строка 61

62{
64 // отрисовываем круг вокруг точки
65 circle(frame, point_coordinates_.back(), current_point_radius_, point_color_, FILLED);
66}
void UpdatePointColor() override
Обновляет текущий цвет точки

◆ SetColoringMode()

void ColoredPointHandler::SetColoringMode ( int  coloring_mode)

Устанавливает нужный режим отрисовки цветом

Аргументы
coloring_modeрежим, который нужно установить
Заметки
ColoredPointHandler::coloring_mode

См. определение в файле colored_point_handler.cpp строка 46

47{
48 coloring_mode_ = coloring_mode;
49}
coloring_mode
Перечисление, используемое для более удобного отображения текущего режима подсветки точки

◆ UpdatePointColor()

void ColoredPointHandler::UpdatePointColor ( )
overrideprivatevirtual

Обновляет текущий цвет точки

Замещает VibratingPoint.

См. определение в файле colored_point_handler.cpp строка 73

74{
75 switch (coloring_mode_)
76 {
77 case DEFAULT:
78 {
80 point_color_ = Scalar(0, 0, 255);
81 break;
82 }
83 case COLORING_BASED_ON_FREQUENCY:
84 {
86 // переведём диапазон частоты [0; range_limit] в [0; 255] int color value;
87 if (!frequencies_.empty())
88 {
90 }
91 break;
92 }
93 case COLORING_BASED_ON_AMPLITUDE:
94 {
96 // переведём диапазон амплитуд [0; max_amplitude_] в [0; 255] int color value;
97 double current_amplitude_absolute = sqrt(current_amplitude_.x * current_amplitude_.x + current_amplitude_.y * current_amplitude_.y);
98 double ratio = (current_amplitude_absolute - extremum_amplitude_.second) / (extremum_amplitude_.first - extremum_amplitude_.second);
100 if (point_color_ == Scalar(0, 0, 0))
101 {
102 std::cout << "ratio: " << ratio << std::endl;
103 std::cout << "current_amplitude_.x: " << current_amplitude_.x << std::endl;
104 std::cout << "max ampl: " << extremum_amplitude_.first << std::endl;
105 std::cout << "min ampl: " << extremum_amplitude_.second << std::endl;
106 }
107 break;
108 }
109 }
110 if (interacted_)
111 {
112 point_color_ = Scalar(255, 255, 255);
114 }
115}
Point3f current_amplitude_
Фактические амплитуды вибрации по x, y. Выражаюытся в пикселях
double main_frequency_
Главная частота (основная)
static std::pair< double, double > extremum_amplitude_
Максимум и минимум амплитуды среди всех VibratingPoint объектов-наследников
cv::Scalar RatioToRgb(double ratio)
Генерирует имя TXT файла для сохранени
Definition: helper.cpp:28

Данные класса

◆ coloring_mode_

int ColoredPointHandler::coloring_mode_
private

См. определение в файле colored_point_handler.h строка 90

◆ point_color_

Scalar ColoredPointHandler::point_color_
private

Цвет точки

См. определение в файле colored_point_handler.h строка 102

◆ point_id_

int ColoredPointHandler::point_id_
private

ID точки (нет блин почки)

См. определение в файле colored_point_handler.h строка 98

◆ radius_resize_factor_

float ColoredPointHandler::radius_resize_factor_
private

Коэффициент рескейла для радиуса точки

См. определение в файле colored_point_handler.h строка 94


Объявления и описания членов классов находятся в файлах: