Visual Vibration Tracking 0.2
Загрузка...
Поиск...
Не найдено
Функции
HelperFunctions

Функции

std::string HelperFunctions::GenerateCsvFilename (std::string additional_text="")
 Генерирует имя CSV файла для сохранения метаданных Подробнее...
 
cv::Scalar HelperFunctions::RatioToRgb (double ratio)
 Генерирует имя TXT файла для сохранени Подробнее...
 
void HelperFunctions::FindLocalMaxima (cv::Mat &input_array, cv::Mat &local_maxima, double threshold_value)
 Эта функция пригодится. Разберусь с ней чуть позже Подробнее...
 
template<typename T >
std::string HelperFunctions::ToStringWithPrecision (const T value, const int n=9)
 Выполняет округление числа с определенной точностью Подробнее...
 
template<class T >
void HelperFunctions::DeadzoneFilter (std::vector< T > &input_vector)
 Частотный фильтр для нижней части диапазона Подробнее...
 
template<class T >
std::vector< T > HelperFunctions::MakeShorterFromStart (std::vector< T > src, int n)
 Укорачивает вектор, убирая элементы слева (спереди) Подробнее...
 
template<typename T >
HelperFunctions::CalculateMeanDifferenceInVector (std::vector< T > src)
 Вычисляет среднее значение разности элементов массива в виде ((a0 - a1) + (a1 - a2)) / 3. Подробнее...
 
template<typename T >
int HelperFunctions::FindGlobalMaxIdx (std::vector< T > src)
 Возвращает индекс самого большого элемента вектора src. Подробнее...
 
template<typename T >
int HelperFunctions::FindGlobalMinIdx (std::vector< T > src)
 Возвращает индекс самого маленького элемента вектора src. Подробнее...
 
template<typename T >
HelperFunctions::CalculateMaxDifferenceInVector (std::vector< T > src)
 Вычисляет максимальное значение разности элементов массива Подробнее...
 

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

Функции

◆ CalculateMaxDifferenceInVector()

template<typename T >
T HelperFunctions::CalculateMaxDifferenceInVector ( std::vector< T >  src)

Вычисляет максимальное значение разности элементов массива

Аргументы
src- входной вектор для анализа

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

172 {
173 std::vector<T> difference_vector;
174
175 auto it = src.begin();
176 while (it != (src.end() - 1))
177 {
178 difference_vector.push_back(*(it + 1) - *it);
179 it++;
180 }
181
182 cv::Scalar cv_scalar_mean_val = cv::mean(src);
183 T mean_val = cv_scalar_mean_val[0];
184
185 return difference_vector[FindGlobalMaxIdx(difference_vector)] / mean_val;
186 }

◆ CalculateMeanDifferenceInVector()

template<typename T >
T HelperFunctions::CalculateMeanDifferenceInVector ( std::vector< T >  src)

Вычисляет среднее значение разности элементов массива в виде ((a0 - a1) + (a1 - a2)) / 3.

Аргументы
src- входной вектор для анализа

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

97 {
98 std::vector<T> difference_vector;
99
100 auto it = src.begin();
101 while (it != (src.end() - 1))
102 {
103 difference_vector.push_back(*(it + 1) - *it);
104 it++;
105 }
106
107 T mean_difference;
108
109 it = difference_vector.begin();
110 mean_difference = *it;
111 it++;
112
113 while (it != difference_vector.end())
114 {
115 mean_difference += *it;
116 it++;
117 }
118 mean_difference /= difference_vector.size();
119
120 return mean_difference;
121 }

◆ DeadzoneFilter()

template<class T >
void HelperFunctions::DeadzoneFilter ( std::vector< T > &  input_vector)

Частотный фильтр для нижней части диапазона

Аргументы
input_vectorмассив, в котором будет проведена фильтрация

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

62 {
63 float dead_zone_factor = 0.1f;
64 for (int i = 0; i < static_cast<int>(input_vector.size() * dead_zone_factor); i++)
65 {
66 input_vector.erase(std::begin(input_vector));
67 }
68 }

◆ FindGlobalMaxIdx()

template<typename T >
int HelperFunctions::FindGlobalMaxIdx ( std::vector< T >  src)

Возвращает индекс самого большого элемента вектора src.

Аргументы
src- входной вектор для анализа

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

128 {
129 auto it = src.begin();
130 int idx = 0;
131 T last_max = 0;
132 while (it != src.end())
133 {
134 if (*it > last_max)
135 {
136 idx = std::distance(src.begin(), it);
137 last_max = *it;
138 }
139 it++;
140 }
141
142 return idx;
143 }

◆ FindGlobalMinIdx()

template<typename T >
int HelperFunctions::FindGlobalMinIdx ( std::vector< T >  src)

Возвращает индекс самого маленького элемента вектора src.

Аргументы
src- входной вектор для анализа

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

150 {
151 auto it = src.begin();
152 int idx = 0;
153 T last_max = 0;
154 while (it != src.end())
155 {
156 if (*it < last_max)
157 {
158 idx = std::distance(src.begin(), it);
159 last_max = *it;
160 }
161 it++;
162 }
163
164 return idx;
165 }

◆ FindLocalMaxima()

void HelperFunctions::FindLocalMaxima ( cv::Mat &  input_array,
cv::Mat &  local_maxima,
double  threshold_value 
)

Эта функция пригодится. Разберусь с ней чуть позже

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

53{
54 cv::Mat dilated_input_image, thresholded_input_image, thresholded_input_8bit;
55 dilate(input_array, dilated_input_image, cv::Mat());
56 compare(input_array, dilated_input_image, local_maxima, cv::CMP_EQ);
57 threshold(input_array, thresholded_input_image, threshold_value, 255, cv::THRESH_BINARY);
58 thresholded_input_image.convertTo(thresholded_input_8bit, CV_8U);
59 bitwise_and(local_maxima, thresholded_input_8bit, local_maxima);
60}

◆ GenerateCsvFilename()

std::string HelperFunctions::GenerateCsvFilename ( std::string  additional_text = "")

Генерирует имя CSV файла для сохранения метаданных

Возвращает
имя файла
См. также
OutputToCsv

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

4{
5 // Имя файла, в который будет производиться запись
6 std::string csv_file_name;
7 // Начало названия выходного файла
8 csv_file_name = "C:/Users/seeyo/source/repos/Visual-Vibration-Tracking-V2/output/metadata/output_";
9 // Добавляем дополнительный текст при желании
10 csv_file_name += additional_text;
11 // Время
12 auto time = std::time(nullptr);
13 // Записываем текущее время
14 std::stringstream date_n_time;
15 date_n_time << std::put_time(std::localtime(&time), "%F_%T");
16 // Переводим дату и время в строковый тип
17 std::string date_n_time_str = date_n_time.str();
18 // Меняем ":" на "-" для корректного имени файла
19 std::replace(date_n_time_str.begin(), date_n_time_str.end(), ':', '-');
20 // Добавляем дату и время к имени файла + расширение файла
21 csv_file_name += date_n_time_str + ".csv";
22
23 std::cout << csv_file_name << std::endl;
24
25 return csv_file_name;
26}

◆ MakeShorterFromStart()

template<class T >
std::vector< T > HelperFunctions::MakeShorterFromStart ( std::vector< T >  src,
int  n 
)

Укорачивает вектор, убирая элементы слева (спереди)

Аргументы
input_vectorвектор, который будет укорочен
nколичество элементов справа (сзади), которые не будут удалены

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

76 {
77 auto it = src.end();
78 std::vector<T> dst;
79
80 if (n < src.size())
81 return src;
82
83 while (it != (src.end() - n))
84 {
85 dst.push_back(*it);
86 it--;
87 }
88
89 return dst;
90 }

◆ RatioToRgb()

cv::Scalar HelperFunctions::RatioToRgb ( double  ratio)

Генерирует имя TXT файла для сохранени

Конвертирует отношение в диапазоне [0; 1] в RGB цвет

Аргументы
ratioотношение
Возвращает
: RGB цвет

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

29{
30 //
31 int normalized = static_cast<int>(ratio * 256 * 4);
32
33 // find the region for this position
34 int region = normalized / 256;
35
36 // find the distance to the start of the closest region
37 int x = normalized % 256;
38
39 int r = 0, g = 0, b = 0;
40
41 switch (region)
42 {
43 case 0: r = 0; g = 0; b = 255; g += x; break; // синий:сине-зеленый
44 case 1: r = 0; g = 255; b = 255; b -= x; break; // сине-зеленый:зеленый
45 case 2: r = 0; g = 255; b = 0; r += x; break; // зеленый:желтый
46 case 3: r = 255; g = 255; b = 0; g -= x; break; // желтый:красный
47 }
48
49 return cv::Scalar(b, g, r);
50}

◆ ToStringWithPrecision()

template<typename T >
std::string HelperFunctions::ToStringWithPrecision ( const T  value,
const int  n = 9 
)

Выполняет округление числа с определенной точностью

Аргументы
valueчисло, требующее округления
nномер знака (до которого будет округлено число)
Возвращает
: округленное число

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

50 {
51 std::ostringstream out;
52 out.precision(n);
53 out << std::fixed << value;
54 return out.str();
55 }