У меня есть входная глубина изображения камней, которые я должен сегментировать.Я нашел хороший способ обнаружить края.Я хочу применить Алгоритм Водораздела, чтобы сегментировать камни.Мне нужно применить преобразование расстояния сейчас, чтобы узнать расстояние до краев.Но результаты не такие, как ожидалось.
Я пробовал другие варианты, предоставляемые opencv, включая CV_DIST_FAIR, CV_DIST_WELSCH.
Но мне нужно что-то вроде обратного преобразования расстояния, которое показывает наибольшую интенсивность в скалах.Я могу использовать это тогда как маркеры.
// Tried to inverse the binary but that doesn't work
//cv::bitwise_not(cannyedge_detected_image, cannyedge_detected_image);
// Finding the distance to the boundaries
cv::Mat distance_transformed_image, dst_distance_transform;
cv::distanceTransform(cannyedge_detected_image, distance_transformed_image, CV_DIST_L2, 3);
cv::normalize(distance_transformed_image, distance_transformed_image, 0, 1., cv::NORM_MINMAX);
cv::resize(distance_transformed_image, dst_distance_transform, cv::Size(image.cols * 3, image.rows * 3));
cv::imshow("Distance Transform", dst_distance_transform);
cv::waitKey(200);
Результаты выглядят так: ![enter image description here](https://i.stack.imgur.com/wijju.png)