MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ extract_zero_crossings()

std::vector< std::vector< double > > MayaFlux::Yantra::extract_zero_crossings ( const std::vector< std::span< const double > > &  channels,
double  threshold,
double  min_distance,
uint32_t  region_size 
)

Definition at line 194 of file ExtractionHelper.cpp.

199{
200 std::vector<std::vector<double>> result;
201 result.reserve(channels.size());
202 for (const auto& ch : channels) {
203 if (ch.empty() || region_size == 0) {
204 result.emplace_back();
205 continue;
206 }
207 auto all = D::zero_crossing_positions(ch, threshold);
208 std::vector<size_t> filtered;
209 size_t last = 0;
210 for (size_t p : all) {
211 if (filtered.empty() || (p - last) >= static_cast<size_t>(min_distance)) {
212 filtered.push_back(p);
213 last = p;
214 }
215 }
216
217 result.push_back(D::slice_intervals(ch,
218 D::merge_intervals(D::regions_around_positions(filtered, region_size / 2, ch.size()))));
219 }
220 return result;
221}

References MayaFlux::Kinesis::Discrete::merge_intervals(), MayaFlux::Kinesis::Discrete::regions_around_positions(), MayaFlux::Kinesis::Discrete::slice_intervals(), and MayaFlux::Kinesis::Discrete::zero_crossing_positions().

Referenced by MayaFlux::Yantra::FeatureExtractor< InputType, OutputType >::extract_implementation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: