Как спроецировать облако точек на плоскость земли и перенести его в 2D-изображение (OpenCV Mat) в библиотеке облаков точC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как спроецировать облако точек на плоскость земли и перенести его в 2D-изображение (OpenCV Mat) в библиотеке облаков точ

Сообщение Anonymous »

Я хочу сегментировать камни на земле и посчитать площадь камней следующим образом:

Изображение


[img]https://i .stack.imgur.com/yPECs.png[/img]


Я писал OpenCV в течение 2 лет и обнаружил, что очень сложно сегментировать камни только с использованием изображения OpenCV RGB, поэтому я использую kinect fusion, чтобы сканировать землю и получить облако точек, в котором камни находятся выше земли.

Я использую библиотеку облаков точек, чтобы сегментировать плоскость земли (зеленого цвета), например это:

Изображение


Теперь я пытаюсь спроецировать остальные точки на плоскость земли и получить 2D-изображение в формате OpenCV Mat (высота исходной точки становится значением проецируемой точки в 2D-изображение земли), которые оказываются серым матовым изображением. Но для меня это очень сложно, и не могли бы вы дать мне какой-нибудь совет?

Если мне удастся получить свой новый серый коврик, то я смогу сделать на нем сегментацию, что для меня это довольно легко.

кстати, есть ли программа просмотра облаков точек, с помощью которой я могу видеть координаты (x,y,z) точек?

Это мой основной код:

Код: Выделить всё

pcl::PointCloud
::Ptr cloud (new pcl::PointCloud);

pcl::io::loadPLYFile ("MeshedReconstruction.ply", *cloud);

pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients);
pcl::PointIndices::Ptr inliers_groud (new pcl::PointIndices);
// Create the segmentation object
pcl::SACSegmentation seg;
// Optional
seg.setOptimizeCoefficients (true);
// Mandatory
seg.setModelType (pcl::SACMODEL_PLANE);
seg.setMethodType (pcl::SAC_RANSAC);
seg.setDistanceThreshold (0.01);//1cm

seg.setInputCloud (cloud);
seg.segment (*inliers_groud, *coefficients);

if (inliers_groud->indices.size () == 0)
{
PCL_ERROR ("Could not estimate a planar model for the given dataset.");
return (-1);
}

std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/29827325/how-to-project-point-cloud-onto-the-ground-plane-and-transfer-it-into-an-2d-imag[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»