У меня есть черно-белое изображение кривых, и я хочу извлечь минимальные точки, представляющие каждую кривую. точки соединены прямыми линиями. это пример того, что я хочу:
Это полезно, если бы я мог знать приоритет точек, особенно в связанных разделах. Я использую c ++ и opencv.
Какие алгоритмы я должен использовать для этой проблемы?
OpenCV предоставляет красивую и простую функцию для этого cv::approxPolyDP
,
void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)
Простой пример:
std::vector<cv::Point> curve;
//fill curve
std::vector<cv::Point> approximated_polyline;
cv::approxPolyDP(Mat(curve), approximated_polyline, 3, false);
Алгоритмы обнаружения ключевых точек должны быть полезны. Эта страница предоставляет краткую историю и открывает широкий спектр литературы для чтения и эксперимента. Возможно, стоит обратиться этот опрос на локальных инвариантных детекторах признаков.